diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 0ae7995..65f6f87 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -289,3 +289,36 @@ version: 0.1.0 --- + +## ⚪ [tdd-criteria-skill-write] — Write `~/projects/claude-skills/skills/tdd-criteria/SKILL.md` — runtime artefact for the TDD-criteria policy. Design rationale (the «why» behind every rule + the anti-vandalism leading argument) lives in `.wiki/concepts/tdd-criteria-design.md` (already promoted via `meeting-room-promote-brainstorm` 2026-05-07). This task writes only the **runtime SKILL.md** — short triggers + procedure, no rationale duplication. + +**Frontmatter (YAML):** +- `name: tdd-criteria` +- `version: 0.1.0` +- `description: >` (multi-line) — must include trigger phrases the agent recognises: "TDD", "test-driven", "следуй TDD", "use TDD", "should I write tests", "skip tdd", "[skip-tdd: ...]", and the bare topic name `tdd-criteria`. Also state cross-agent applicability and reference the design page. + +**Body sections (use `project-discipline` and `recommend-dont-menu` as structural templates):** +1. **`# tdd-criteria`** — one-line tag-line. +2. **`## When this runs`** — trigger phrases (session-start trigger via `follow tdd-criteria` line in CLAUDE.md, plus on-demand triggers); explicit «applies before any code touches a *.ts/*.js/*.py file the agent didn't author this session». +3. **`## Default mode`** — one sentence: «TDD by default. Skip only if one of four bright-line carve-outs matches and is marked in commit subject.» +4. **`## Decision algorithm (8 questions, top-down)`** — copy the algorithm block verbatim from design doc. +5. **`## Ironclad rules (TDD obligatory)`** — 4 rules, each ≤3 lines: trigger property + what test type. No rationale (rationale = design doc). +6. **`## Permissive carve-outs (skip + marker required)`** — 4 categories, each ≤2 lines: trigger + marker. +7. **`## Anti-loophole`** — 3 bullets: skip-without-category invalid; spike-survivor rule; composite-task = decompose by artefact. +8. **`## Cross-agent applicability`** — pure policy, no Claude tool refs, Hermes-mappable as `mode: auto`. +9. **`## Out of scope`** — does not enforce via git hooks (separate optional task `tdd-criteria-precommit-hook`); does not modify project CLAUDE.md (that's `project-bootstrap`'s job); does not run tests. +10. **`## Why this exists`** — one paragraph: «Tests make behaviour an invariant; without them code is an artefact silent-deletable by agents. Full rationale at `.wiki/concepts/tdd-criteria-design.md`.» + +**Constraints:** +- No `Read/Edit/Glob/Bash` references in body — keep it agent-agnostic. +- No code blocks with shell commands — pure policy doc. +- Length target: ≤200 lines (project-discipline is ~140 — similar density). +- Frontmatter version starts at `0.1.0` (per Rule 3 of `project-discipline`: first edit of new versioned artefact = add 0.1.0, not bump). + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** Создать `~/projects/claude-skills/skills/tdd-criteria/` директорию + `SKILL.md` по структуре в description. Использовать `skills/project-discipline/SKILL.md` и `skills/recommend-dont-menu/SKILL.md` как темплейты для frontmatter и секций. После записи — перейти к `tdd-criteria-hermes-mapping`. +**Branch:** master + + +---