Enter the dev shell
The repo ships adevenv.nix that pins Node, npins, jq/yq, ripgrep,
shellcheck, and the markdown linter. With direnv configured, the shell
is automatic:
direnv:
Available scripts
Inside the dev shell, the following scripts are exposed:| Command | What it does |
|---|---|
install | Alias for bash scripts/install.bash |
lint | Run markdownlint-cli2 over skills/**/SKILL.md, agents/*.md, commands/*.md, then jq empty settings.json |
eval | Run the full promptfoo suite via bash scripts/eval.bash |
eval-fast | Run only the routing tests via bash scripts/eval.bash --fast |
Lint
- Malformed Markdown in personal skills, agents, and commands
- Invalid JSON in
settings.json
plugins/ are intentionally excluded from
lint’s globs because they carry upstream-authored content and should not
be reformatted casually.
Eval
evals/ and uses
promptfoo (installed via npm in the dev
shell). eval-fast skips end-to-end tests and is the right loop for
working on skill descriptions and routing triggers.
Editing skills
Edit the SKILL.md
Personal skills live under
skills/<skill-name>/SKILL.md. Plugin skills
live under plugins/<plugin>/skills/<skill-name>/SKILL.md.Re-run install
Run
install (idempotent). New skills become visible to ~/.claude on
the next session.Adding a plugin
Drop a new directory underplugins/<name>/ with at minimum:
install.bash symlinks plugins/ wholesale into ~/.claude/plugins, so
no further wiring is needed once the directory exists.