Skip to content

Per-tool skill dirs are gitignored and materialised at bootstrap

Status: superseded by 0004 — skills and subagents are no longer vendored in this repo; they ship as a repository plugin and link-skills.sh has been removed.

The template previously committed ~400 symlinks into .claude/skills/, .codex/skills/, and .kilo/skills/ using absolute paths, meaning every symlink broke on any machine other than the author's. Two options were considered: (a) switch to relative symlinks and keep committing them, or (b) gitignore the per-tool dirs entirely and materialise them via link-skills.sh on first clone. We chose (b) because it eliminates the category of defect structurally — no symlink is ever committed, so there is nothing to break — and drops the tracked file count by ~86%, which is a meaningful improvement for clone speed and git noise. It also sets up cleanly for the future plugin extraction (P1) where the per-tool dirs will be populated by a harness plugin installer rather than a local script.

Consequences

  • link-skills.sh must be run once per clone (documented in bootstrap and README).
  • CI runs link-skills.sh before any step that needs skills.
  • scripts/doctor.sh checks that .claude/skills/ is populated and matches skills/skills/.