Skip to content

feat(tui): fuzzy search on skill descriptions, recently used skills, skill detail view#32454

Open
Btema2 wants to merge 8 commits into
anomalyco:devfrom
Btema2:skill-picker-upgrade
Open

feat(tui): fuzzy search on skill descriptions, recently used skills, skill detail view#32454
Btema2 wants to merge 8 commits into
anomalyco:devfrom
Btema2:skill-picker-upgrade

Conversation

@Btema2

@Btema2 Btema2 commented Jun 15, 2026

Copy link
Copy Markdown

Issue for this PR

Closes #32453

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

Adds three small improvements to the slash skills menu:

  1. Fuzzy search on descriptions — the skills picker now matches against skill descriptions in addition to name, so you can find a skill by what it does.
  2. Recently used skills — skills used in the last 30 days appear at the top of both the TUI picker and the web slash popover.
  3. Skill detail view — pressing ctrl+o in the TUI skills dialog shows the full description and template content for the selected skill. Press Enter to insert it, Esc to go back to the list.

Recent skill usage is stored in ~/.local/share/opencode/recent-skills.json (uses Global.Path.state), capped at 50 entries with a 30-day TTL.

How did you verify your code works?

Ran bun dev in the repo, opened the skills dialog via /, verified:

  • Typing part of a description (not just name) filters results correctly
  • Selecting a skill adds it to the recently used section on next open
  • ctrl+o opens the detail view with description and template visible
  • Enter inserts the skill, Esc returns to the skills list
  • All 23 packages pass bun turbo typecheck

Screenshots / recordings

image image image

Checklist

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

btema2 added 7 commits June 15, 2026 17:50
…scription search

Add recently-used skills tracking across TUI, CLI, and web interfaces.
Skills are recorded on selection and persisted to disk with 30-day TTL.

- New recent-skills.ts utility with in-memory cache and fire-and-forget persistence
- TUI DialogSkill: 'Recently Used' category at top of skill list
- CLI RunSkillSelectBody: recent skills pinned at top, right arrow drill-down
  to show skill description in-place, left arrow to return
- Web SlashPopover: 'Recently Used' section above full skill list
- Fuzzy search now includes description field across TUI and web

Right arrow dispatch is confirmed safe: useKeyboard global listeners fire
before the <input> element's own keypress handler via emitWithPriority.
Reverts the detail view / drill-down panel that was added alongside the
recently-used and fuzzy-description-search features. Keyboard shortcuts
(arrow keys, tab, ctrl+e, ctrl+o) all failed to fire reliably due to
opentui's global event propagation consuming keys before panel-level
handlers ran; stale container images compounded debugging.

Keeps working features: recently-used skills section and fuzzy search on
skill descriptions.

Adds drill-down-menu-try1.md documenting the failed approaches so future
attempts don't repeat the same dead ends.
- Add DialogSkillDetail with compact header, scrollable template, Enter binding
- DialogSkillDetail pushed via dialog.push() with arrow function wrapper
- DialogSelect gains trailing/onTrailingClick on Option for › chevron
- DialogSelect exposes selectedIndex/onIndexChange props
- DialogProvider adds push()/pop() API with local clearAll/popDialog helpers
- Arrow function wrapper on dialog.push() fixes SolidJS reactivity loss
- Escape/ctrl+c delegate to popDialog() for consistent back navigation
- Use Bun.file().text() and Bun.write() over fs/promises readFile/writeFile
- Replace try/catch with .catch() chains
- Replace module-level let with const object wrapper
- Remove redundant createMemo in dialog-skill and dialog-skill-detail
- Fix double recordSkillUsage call (footer.view called it, RunSkillSelectBody already does)
@Btema2 Btema2 requested review from Brendonovich and Hona as code owners June 15, 2026 16:04
@github-actions github-actions Bot added needs:compliance This means the issue will auto-close after 2 hours. and removed needs:compliance This means the issue will auto-close after 2 hours. labels Jun 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

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

@Btema2

Btema2 commented Jun 20, 2026

Copy link
Copy Markdown
Author

Hi. Sorry for bothering, but will that PR be reviewied? Do I need to do some clrification or changes?
Thank you in advance.

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]: Improve slash skills menu — fuzzy search on descriptions, recently used skills, detail view

1 participant