Skip to content

feat(tui): show skills in slash autocomplete and group /skills dialog by source - #43537

Open
mccaffrey-jonathan wants to merge 2 commits into
anomalyco:devfrom
mccaffrey-jonathan:skills-discovery
Open

feat(tui): show skills in slash autocomplete and group /skills dialog by source#43537
mccaffrey-jonathan wants to merge 2 commits into
anomalyco:devfrom
mccaffrey-jonathan:skills-discovery

Conversation

@mccaffrey-jonathan

@mccaffrey-jonathan mccaffrey-jonathan commented Aug 19, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #7846

Type of change

  • New feature

What does this PR do?

Two remaining gaps from #7846 (the /skills dialog itself already exists):

  • Skills are registered as server commands but were skipped in the slash autocomplete, so typing /<skillName> offered no completion even though submitting it works. They now appear labeled :skill, following the existing :mcp convention. This matches the /<skillName> invocation style requested in the issue thread.
  • The /skills dialog listed every skill under a single "Skills" heading. The issue asks for the source to be shown; entries are now grouped Project / Global / Built-in, derived from each skill's location relative to the project directory.

How did you verify your code works?

  • bun test test/component/dialog-skill.test.ts — unit tests for the source classification (built-in, project, global, shared-prefix sibling edge case)
  • bun test test/cli/tui/dialog-skill.test.tsx — mounts DialogSkill against a mock SDK and asserts the rendered frame shows the three group headers in order with the right skills under each
  • bun run typecheck in packages/tui; oxlint reports no new warnings on the changed files

Screenshots / recordings

(attach frame capture: pr1-dialog-frame.txt / TUI screenshot)

Built and tested with Claude assistance; I reviewed and verified the changes.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

… by source

Skills registered as server commands were skipped in the slash
autocomplete, so /<skillName> was not discoverable. Include them with a
:skill label, matching the :mcp convention.

The /skills dialog listed every skill under one heading. Group entries
by source (Project, Global, Built-in) derived from the skill location.

Closes anomalyco#7846

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TTuWSW35XoRbPYixZr8oKQ
@github-actions github-actions Bot added the needs:compliance This means the issue will auto-close after 2 hours. label Aug 19, 2026
@mccaffrey-jonathan mccaffrey-jonathan changed the title feat(tui): show skills in slash autocomplete and group /skills dialog… feat(tui): show skills in slash autocomplete and group /skills dialog by source Aug 19, 2026
@github-actions github-actions Bot removed the needs:compliance This means the issue will auto-close after 2 hours. label Aug 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for updating your PR! It now meets our contributing guidelines. 👍

…sions

- skillSource treated a location with no common root with the project as
  "Project": path.relative returns an absolute path across Windows drives and
  UNC shares, so neither ".." check fired. Guard with path.isAbsolute.
- Classify against the worktree rather than the cwd. Project skills come from
  .opencode directories walked from the cwd up to the worktree root, so a
  session started in a subdirectory labelled its own project skills "Global".
- Skip a skill whose name collides with a builtin slash command. Selecting an
  entry inserts "/<name>" without the ":skill" label, so the collision rendered
  a second row that silently ran the builtin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]: Add /skills command to list and quick-invoke skills

1 participant