Step 2 of #1277. It lands in the single pull request for #1277 (branch feat/1277-skills).
What
- Every discovered skill is a slash command by its own name. Skills become a second, dynamic source of commands beside the fixed table in
internal/tui3/commands.go. The picker under the draft ranks them among codeaf's own commands, and the dispatcher consults them after the fixed table.
/<skill-name> [words] sends the skill's body plus your words as the turn. The transcript shows the line you typed, not the body. If the skill is already in this conversation's context, only your words are sent, and the skill is named as already loaded.
- codeaf's own commands always win a name. A skill named like one of them is reached with
/skill use <name> [words], which does exactly what its own slash would have done.
- A shadowed or skipped skill is not a command.
Acceptance, end to end
Real binary in tmux, with a fixture skill pdf-processing in ~/.agents/skills and a stub model that records its requests:
- Typing
/pdf shows pdf-processing in the picker, with its description.
/pdf-processing extract the tables draws that exact line in the transcript. The model's request carries the SKILL.md body and extract the tables.
- Sending
/pdf-processing again in the same conversation sends only again.
- A fixture skill named
help is not reachable as /help (codeaf's help opens). /skill use help hi sends that skill's body.
- The manual answers "how do I use a skill?" and names
/skill. The command-table gate passes.
Step 2 of #1277. It lands in the single pull request for #1277 (branch
feat/1277-skills).What
internal/tui3/commands.go. The picker under the draft ranks them among codeaf's own commands, and the dispatcher consults them after the fixed table./<skill-name> [words]sends the skill's body plus your words as the turn. The transcript shows the line you typed, not the body. If the skill is already in this conversation's context, only your words are sent, and the skill is named as already loaded./skill use <name> [words], which does exactly what its own slash would have done.Acceptance, end to end
Real binary in tmux, with a fixture skill
pdf-processingin~/.agents/skillsand a stub model that records its requests:/pdfshowspdf-processingin the picker, with its description./pdf-processing extract the tablesdraws that exact line in the transcript. The model's request carries theSKILL.mdbody andextract the tables./pdf-processing againin the same conversation sends onlyagain.helpis not reachable as/help(codeaf's help opens)./skill use help hisends that skill's body./skill. The command-table gate passes.