skraft-configlisted
Install: claude install-skill SebastienDegodez/skraft-plugin
<!-- markdownlint-disable-file -->
# SKRAFT Config — repo-wide configurateur
`skraft-config.json` holds settings that belong to the **repository**, not to any
single work item. Today that is the **depth tier** — the strictness dial that governs
TDD variant, mutation thresholds, reviewer lens count, and the Gherkin gate across
every phase of the pipeline (see `plugins/skills/skraft-difficulty-routing/SKILL.md`
for the tier table). This skill is the configurateur: it initializes and edits that
file. Per-work-item difficulty is NOT here — it lives in `state.json` via the state CLI.
## Determinism contract (S7)
Every read and write of a governed key goes through the config CLI — never hand-edit
`skraft-config.json` for `depthTier` / `depthTierRationale`. The CLI validates values,
preserves unknown human-authored fields, backs up atomically, and returns structured
errors. Agents only need the commands below; they never parse or mutate the JSON.
Portable invocation (same env var on Claude Code and Copilot CLI; `SKRAFT_CONFIG_ROOT`
overrides the base directory, defaulting to the current working directory = repo root):
```bash
node "$CLAUDE_PLUGIN_ROOT/src/cli/config.mjs" <subcommand> [flags]
```
| Subcommand | Flags | Effect |
|---|---|---|
| `init` | — | Create `skraft-config.json` with `depthTier: comprehensive` if absent (idempotent; reports `created`). |
| `get` | `[--key K]` | Read-only. Whole config as JSON, or one scalar (`--key depthTier`). Never writes. |
| `set` | `