Skills catalog¶
kew ships a set of governance artifacts — Claude Code skills plus the security-guard hook — as package data. They install into your project's .claude/ with kew skills, which tracks drift so updates don't clobber your local changes.
Lifecycle¶
- Install:
kew skills install <name>or--allcopies the artifact into.claude/.kew setup --with-skillsdoes this as part of one-time setup; a plainkew setupprints the install tip instead. - Update:
kew skills updatewith no names converges everything — it refreshes every artifact that'soutdatedand installs every artifact that'snot-installed. Pass names to scope it. - Diff:
kew skills diffshows what changed, artifact by artifact, before you decide to update. locally-modifiedmeans the installed copy doesn't match the shipped content or any prior shipped version — you (or an agent) edited it by hand.install/updaterefuse to touch it (exit 1) unless you pass--force, which overwrites it with the shipped version.
See kew skills for the full command reference and the state machine (not-installed / current / outdated / locally-modified).
Guard updates preserve your config¶
The security-guard hook is the one artifact that isn't a flat file compare: its drift state is computed by re-rendering the hook template with your current kew.toml, not by diffing bytes against a fixed shipped copy. That means custom [security] patterns —
— survive kew skills update security-guard: the extras are re-applied from config on every render, not diffed away.
kew owns any file that still carries the # managed-by: kew header, hand-edits included: if you edit the hook script in place, the header stays intact, so drift detection classifies it as outdated and kew skills update silently overwrites your edits with the re-rendered version. locally-modified protection only kicks in once the header is removed or the file is replaced outright. For persistent customization, put your patterns in kew.toml's [security] block instead of editing the hook body — those survive updates because they're re-applied on every render.
Catalog¶
/plan-to-issues¶
Converts an implementation plan into sized, labeled GitHub issues for the dispatch queue.
What it does:
- Reads an implementation plan and groups tasks into issues (max 5 tasks per issue)
- Assigns complexity labels based on task count (1-2 = simple, 3-4 = medium, 5 = complex)
- Creates issues with plan file references -- the dispatch agent reads the plan at execution time
- Declares dependencies between issue groups (wave ordering)
- Never adds the ready label -- the human reviews and labels manually
- Epic mode: when the issues will be driven by kew epic run, the skill applies epic:<name> to every issue and skips blocked-label bookkeeping (the driver computes the frontier from kew:depends; a manual blocked label would hold nodes back)
Typical workflow:
Epic workflow (dependency-driven, no manual ready labels):
The skill works with any implementation plan, however it's written. If you use a brainstorming -> design spec -> implementation plan pipeline (e.g., Superpowers), run /plan-to-issues after your plan is finalized. The full pipeline looks like:
/playbook-skill¶
A meta-skill: it drafts a new playbook skill for one of your fragile subsystems, mining your own git log, CI history, and issues for incidents.
What it does:
- Mines git log, merged PRs, and issues touching the subsystem's files for fix/revert incidents
- Extracts one invariant per incident, anchored to file:line in the current tree
- Identifies the exact proving command(s) for the subsystem
- Writes .claude/skills/<subsystem>-change/SKILL.md: invariants, a checklist, and exactly one copy-pasteable acceptance command
- Enforces its own quality bar: every invariant must trace to a real incident or test, not an opinion
/verify-parity¶
Fixes the "local checks pass, CI is red" incident class by building a verify script that mirrors CI exactly, plus a regression test that fails the moment they drift.
What it does:
- Enumerates every gate step in your pull_request-triggered CI workflows (command + scope)
- Reconciles them against a local scripts/verify.sh (or creates one), in both directions
- Harvests past red-CI incidents into a Trigger -> exact command Trap Gates table for your agent-instructions file
- Writes a parity regression test that normalizes and diffs the verify script against the CI workflows, so new drift fails CI itself
kew's own scripts/verify.sh + tests/test_verify_parity.py is the worked example this skill cites.
/handoff¶
Writes a handoff doc for in-flight work that another session, machine, or person needs to pick up cold — uncommitted changes, unverified drafts, work paused mid-task.
What it does: - Captures a TL;DR + provenance line (what's been verified vs. not) up front - Records exact git state and a files-in-the-changeset table - Lists the exact, copy-pasteable verification commands in dependency order - Flags the least-tested integration seams, most-risky first - States invariants the pickup must not break, and the scope boundary for the pickup session
Writes to docs/handoff/YYYY-MM-DD-<topic>.md by convention.
security-guard (hook, not a skill)¶
The PreToolUse guard installed by kew setup (and manageable via kew skills like any other artifact). It catches destructive and exfiltration-prone shell patterns and blocks agent writes to .claude/ — defense-in-depth, not a security boundary. See Security for the full framing, the pattern table, and how it relates to sandboxed dispatch.
kew skills install security-guard # equivalent to `kew setup`'s hook generation
kew skills update security-guard # re-render from current kew.toml
Because the guard blocks agent writes to .claude/, installed skills and the hook itself are protected from being tampered with by the very agent they govern — a closed loop, not just a one-time install.