CLAUDE.md · git:20260902.7414564 · 2026-09-02 · sha256 bf482e2df3e5c781
CLAUDE.md git:20260902.7414564A
Immutable. This exact content is served forever at /api/v1/blob/bf482e2df3e5c781.
<!-- wtcraft:claude:start --> ## wtcraft routing For complex or parallel tasks, read `.agent-harness/planner.md`. For worktree finishing, read `.agent-harness/finisher.md`. ## repo structure (wtcraft dogfooding) `templates/` is the source of truth for files `wtcraft init` copies to user repos. The corresponding live files in this repo are wtcraft's own dogfooded versions: templates/.agent-harness/ ↔ .agent-harness/ templates/.claude/commands/ ↔ .claude/commands/ When changing harness behavior: update both the template AND the live file. `wtcraft init-ci` vendors the policy evaluator into user repos, so these must stay byte-identical: templates/.wtcraft/policy_evaluator.py ↔ scripts/policy_evaluator.py templates/.wtcraft/policy_git_adapter.py ↔ scripts/policy_git_adapter.py They are real copies, not symlinks, because npm omits symlinks from packages. `tests/e2e_init_ci.sh` fails the build if they drift — a stale vendored copy would keep security fixes out of user repositories. `templates/.github/` has no live counterpart: this repository does not operate a protected policy branch, so it does not enable its own check. ## model knowledge policy Never rely on your own training knowledge for model names or IDs — it is always outdated. For model recommendations, read `.agent-harness/role-models.yml`. If the user states a model name, that overrides everything else. ## release guardrails - Version tags must use `v<semver>` format (example: `v0.3.8`). - Version tags must be created from `main` only. - Never create or move version tags from feature/worktree branches. - `CHANGELOG.md` is the single source of release notes: add the version's section there before tagging. The publish workflow reads that section into the GitHub Release — do not hand-write release notes separately. <!-- wtcraft:claude:end -->