Install the Kit¶
The six skills are one workflow, not a catalogue you pick from. Each phase consumes the file the previous phase wrote, so a single skill installed alone is a phase with no input and no consumer. Install them together, into the repository that holds the project's plan.
Prerequisites¶
Each developer machine needs git, a POSIX sh, and gh 2.0 or later,
authenticated with gh auth login against the repository's forge. gh is not
optional: task branches are deleted on merge, so merged pull requests are the
only record of which tasks are done, and status.sh refuses to run without
them.
GitHub only, for now
gh talks to GitHub, so the kit works with GitHub repositories only. The
claims are plain git and would work anywhere; the status, snapshot and
publishing helpers are what ask gh. Support for other forges is planned
for a later version. See
ADR-012.
The helpers are POSIX sh and POSIX awk, so nothing else is installed: they
run on the sh of Linux, macOS and Alpine as they come, and CI runs them on
dash, BusyBox ash and macOS's own sh.
Add the skills¶
Use the skills CLI. It installs all six skills, writes each one to
.agents/skills/ and symlinks it into .claude/skills/, and records a
skills-lock.json so every developer restores the same version.
Naming a release tag, here v0.1.0, pins the install to it: the lock file
records that version, and the Changelog lists what each
release changed. Replace the tag with the release you want, or install what has
been released to main with /tree/main. Without a /tree/… suffix you get
the default branch, develop, where unreleased work lands first.
Choose no agent: the CLI puts the skills in .agents/skills/, which Copilot CLI
and Codex read, and links them into .claude/skills/ for Claude Code. On a
machine where it detects no agent installed, it also writes a copy under
agent/, which a repository does not need and you can delete.
Then commit what the CLI produced, including skills-lock.json and the
symlinks. Git stores symlinks natively, so lanes running in worktrees get the
kit without a second install. Everyone else restores the pinned versions
with:
Do not pass -a claude-code on its own
With -a claude-code alone, the CLI copies each skill into
.claude/skills/ and creates no .agents/. A later npx skills update
then moves the skills it updates to .agents/skills/ with links, and
leaves the ones it finds up to date as copies. The kit's skills find each
other as siblings, so that split install loses etabli-implement, and
lanes would run without it. where.sh reports it as
NEXT repair-install, and the launcher refuses to start; see
Repair a split install.
Make the orchestrator the default assistant¶
Then make the kit the project's default assistant, and commit AGENTS.md:
It appends a short block to AGENTS.md, creating it if needed, that sends
every request about the project to etabli-orchestrator. Claude Code and
Copilot CLI both read that file on every request, so the kit is consulted even
when a question matches no skill description. Without it, a plain "what's the
status of this project?" reached no kit skill in either harness, and Copilot
answered from git alone, recommending a task already merged. The orchestrator
runs the same step itself the first time it finds the block missing.
The script also writes a starter delivery/review-lenses.conf. It only matters
when you review pull requests; leave it as it is for now, and see
Review the Pull Requests when you want it.
Check for shadowing skills¶
Slash invocation makes skill names part of the interface, so a personal skill of the same name wins. On each developer machine:
Disable anything that collides with an etabli-* name.
Repair a split install¶
To repair a split install, remove every copy and install again:
rm -rf .claude/skills/etabli-* .agents/skills/etabli-*
npx skills add https://github.com/ancelin-code/etabli/tree/v0.1.0 --skill '*' -y
Re-running npx skills add with -a claude-code alone is not a repair: it
puts every skill back as a copy in .claude/skills/, and leaves the old
.agents/skills/ directories behind to go stale.