feat: add skill installation via hook install#14
Merged
jung-thomas merged 1 commit intomainfrom Apr 22, 2026
Merged
Conversation
Skills (e.g. the /tutorial skill) can now be distributed through content packs and installed to AI tools via `sap-devs hook install <id>`. The install-all flow (`hook install` with no args) installs both hooks and skills for the active profile. List and status commands show skills alongside hooks. New content type: skills.yaml per pack, referencing markdown skill files. Adapter config gains skill_config with a target path (e.g. ~/.claude/skills).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skills.yamlas a new content type in packs, parallel tohook.yamlandmcp.yamlsap-devs hook install tutorialcopies the/tutorialskill to~/.claude/skills/tutorial/SKILL.mdsap-devs hook install(no args) installs all hooks AND all skills for the active profilehook list,hook status, andhook uninstallextended to handle skills alongside hooksNew files
internal/content/skill.go—FlattenSkills(),FindSkillDef()helpersinternal/adapter/skill_wire.go—WriteSkillFile(),RemoveSkillFile(),SkillFileInstalled()content/packs/base/skills.yaml— tutorial skill definitioncontent/packs/base/skills/tutorial/SKILL.md— tutorial skill contentcontent/schemas/skills.schema.json— JSON Schema for validationModified files
internal/content/pack.go—SkillDefstruct,Skillsfield, loading inLoadPack()internal/content/merge.go—mergeSkills()for additive layer supportinternal/adapter/adapter.go—SkillConfigstruct and field onAdaptercontent/adapters/claude-code.yaml—skill_config: path: "~/.claude/skills"cmd/hook.go— install/uninstall/list/status extended for skillsinternal/schema/schema.go— registeredskills.yamlschemainternal/i18n/catalogs/en.json— 6 skill i18n stringsTest plan
go build ./... && go vet ./...passes cleansap-devs hook list --allshows tutorial skill in a separate skills tablesap-devs hook install tutorial --dry-runprints expected write pathsap-devs hook install tutorialcreates~/.claude/skills/tutorial/SKILL.mdsap-devs hook statusshows tutorial skill as installedsap-devs hook uninstall tutorialremoves the skill filesap-devs hook install(no args) installs hooks AND the tutorial skill/tutorialin Claude Code triggers the skill correctly