Skip to content

feat(coding-agent): add explicit skill selection workflow - #132

Merged
Pepps233 merged 11 commits into
mainfrom
feat/skills-catalog-and-selection
Aug 27, 2026
Merged

Pepps233 merged 11 commits into
mainfrom
feat/skills-catalog-and-selection

Conversation

@Pepps233

@Pepps233 Pepps233 commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add an explicit, keyboard-driven skill selection workflow backed by one stable, versioned skill catalog shared across interactive prompts, queued requests, SDK consumers, telemetry, exports, and evolution inputs.

Reasoning

Skills were previously exposed as individual /skill:name commands and materialized through multiple runtime paths without one durable identity and content-version contract. That made source scope unclear, cluttered command discovery and editor input, and allowed queued or long-lived references to drift from the content originally selected.

A unified catalog gives installed and evolved skills the same provenance and snapshot semantics. Compact editor tokens keep the interaction readable while preserving exact internal references, and explicit install-scope selection prevents interactive package installs from silently choosing global state when workspace trust and storage boundaries matter.

Changes

  • Build a unified skill catalog with stable IDs, source kind, scope, captured content, digest, version, provenance, and diagnostics for rejected entries.
  • Add a hierarchical /skills selector for installed workspace, installed global, and evolved skills with keyboard navigation, search, multi-selection, and responsive rendering.
  • Render selected skills as atomic purple skill-name tokens while preserving full versioned references for submission.
  • Snapshot and expand exact skill versions for idle, steering, and follow-up requests, including explicitly selected skills hidden from model invocation.
  • Remove individual skill slash commands from interactive, extension, and RPC command listings, along with the obsolete command setting.
  • Record selected skill ID/version pairs in telemetry and support multiple skill blocks in the TUI and HTML exports.
  • Freeze catalog entries and validated skill-content artifacts into evolution inputs with workspace and provenance metadata.
  • Add SDK helpers for constructing catalog-compatible skills and prompt for global or workspace scope during interactive package installation.
  • Update skill, package, SDK, RPC, extension, settings, usage, and keybinding documentation.

User impact

Users now open /skills, choose a source category, select one or more skills, add their task, and submit the exact captured versions while seeing only compact skill names in the editor. Unselected skills remain progressively disclosed. Individual /skill:name commands are removed, and interactive package installs require an explicit global or workspace choice without silently falling back when workspace installation is unavailable.

SDK consumers that construct Skill objects directly must migrate to createSkill() so the required catalog identity, provenance, content, digest, and version fields are populated.

Testing

  • cd packages/tui && node --test test/editor.test.ts test/editor-history-keybindings.test.ts test/editor-placeholder-cursor.test.ts test/editor-text-tokens.test.ts - 195 tests passed
  • cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run test/skill-selector.test.ts test/interactive-mode-skills.test.ts test/interactive-mode-status.test.ts test/suite/agent-session-prompt.test.ts - 61 tests passed
  • npm run check - passed
  • ./test.sh - coding-agent passed 2,221 tests; the aggregate command later stopped in unchanged packages/coding-agent-server/test/websocket-flow.test.ts because @earendil-works/diffex-client/websocket could not be resolved locally
  • GitHub build-check-test and build checks passed for head 6f0f60212a67087f317ddf0dc2663412d9be37fa
  • tmux smoke test - opened /skills, verified all three source categories, opened the workspace skill list, selected a skill, and verified only its compact name appeared in the editor

This pull request is AI-generated by Diffex.

@Pepps233 Pepps233 self-assigned this Aug 27, 2026
@Pepps233 Pepps233 added the UX label Aug 27, 2026
@Pepps233
Pepps233 merged commit 59dc0c6 into main Aug 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant