Step 5 of #1277. It lands in the single pull request for #1277 (branch feat/1277-skills).
What
/skill add ~/some/folder copies it into ~/.codeaf/skills/<name>/
/skill add ~/some/folder --project into <project>/.codeaf/skills/<name>/
/skill add https://github.com/o/r clones, finds every SKILL.md, copies each
/skill add https://github.com/o/r/tree/main/skills/pdf one folder out of a repo
- A URL is cloned to a temporary folder with the
git on PATH, and the skills are copied out. Nothing in it is executed.
- A name already present asks before it is overwritten.
/skill remove <name> removes only from codeaf's own folders, never from another harness's. It never touches a folder in ~/.codeaf/skills that has no SKILL.md: the resident keeps bin/ and its promoted commands there.
Acceptance, end to end
Real binary in tmux, no network:
/skill add <fixture folder> puts ~/.codeaf/skills/<name>/SKILL.md on disk, and the skill appears in the picker and the Skills tab with the codeaf mark.
/skill add file:///…/bare.git (a local bare repository holding two skills) copies both.
- A
…/tree/<ref>/<path> URL copies only that folder.
/skill remove <name> for a skill that lives only in ~/.claude/skills is refused with a message naming where it lives. ~/.codeaf/skills/bin/ survives every remove.
Step 5 of #1277. It lands in the single pull request for #1277 (branch
feat/1277-skills).What
giton PATH, and the skills are copied out. Nothing in it is executed./skill remove <name>removes only from codeaf's own folders, never from another harness's. It never touches a folder in~/.codeaf/skillsthat has noSKILL.md: the resident keepsbin/and its promoted commands there.Acceptance, end to end
Real binary in tmux, no network:
/skill add <fixture folder>puts~/.codeaf/skills/<name>/SKILL.mdon disk, and the skill appears in the picker and the Skills tab with the codeaf mark./skill add file:///…/bare.git(a local bare repository holding two skills) copies both.…/tree/<ref>/<path>URL copies only that folder./skill remove <name>for a skill that lives only in~/.claude/skillsis refused with a message naming where it lives.~/.codeaf/skills/bin/survives every remove.