Ticket workflow skill with a required outline structure (#129) #138

Merged
liamjd merged 2 commits from 129-ticket-planning-skill into main 2026-09-29 19:18:27 +01:00
Owner

Closes #129

Adds a project skill, .claude/skills/ticket/SKILL.md, for the ticket → outline → tests → review workflow described in CLAUDE.md's "Division of labour". Run it with /ticket <N> [stage]. It also triggers when Claude is asked to draft, spec, outline or review an issue.

What the skill requires

Outline. Every section below is required; one that doesn't apply must say "None". These cover the gaps #129 found on #57:

  • Full signatures: parameter and return types, what each class extends, which methods are static, and when a return can be null.
  • Error paths: a table of return codes, plus any error text the tests match on.
  • Each method's job in one line, including existing methods the new code relies on. These must be read first, never guessed from the name.
  • A signals table: where each signal is declared, custom or built-in, which method emits it, which listens, and where they're connected.
  • The wiring pattern: builders are pure and never emit, the handler emits, and signals ignore return values.
  • The scene tree: types, scripts and %unique names, why each node sits where it does, and which names the tests depend on.
  • A checklist to go through before posting.

Ticket. Testable acceptance criteria. Decisions for Liam are asked in one round and recorded on the ticket with a date. The milestone is assigned, not just mentioned.

Tests first. The tests are checked to fail for the right reason, and the test count is compared against main. They are also checked against a throwaway implementation, which is then discarded.

Review. Covers uncommitted work too, and re-reads everything on every pass. Suspected bugs are reproduced before being reported. Findings are ranked by severity, and each fix is written as ordered steps with the conditional ones marked.

Trial run: #117

The skill was trialled end to end on #117 (PR #137) before this PR was opened. The second commit folds in what that run showed:

  • What it caught: the required sections found three problems before any code was written:
    • task_released needed the pawn id;
    • Pawns.remove() never freed a removed pawn's task;
    • a const can't be overridden in a subclass.
  • What it missed, now added:
    • error text the tests match on;
    • that a signal's declared parameter types aren't checked at emit(), which caused a real bug in #117;
    • that a drop in the test count means scripts failed to parse;
    • checking the tests against a throwaway implementation;
    • a fix written in review as a one-line summary was misread, so fixes are now ordered steps.

🤖 Generated with Claude Code

Closes #129 Adds a project skill, `.claude/skills/ticket/SKILL.md`, for the ticket → outline → tests → review workflow described in CLAUDE.md's "Division of labour". Run it with `/ticket <N> [stage]`. It also triggers when Claude is asked to draft, spec, outline or review an issue. ## What the skill requires **Outline.** Every section below is required; one that doesn't apply must say "None". These cover the gaps #129 found on #57: - **Full signatures:** parameter and return types, what each class extends, which methods are static, and when a return can be `null`. - **Error paths:** a table of return codes, plus any error text the tests match on. - **Each method's job in one line,** including existing methods the new code relies on. These must be read first, never guessed from the name. - **A signals table:** where each signal is declared, custom or built-in, which method emits it, which listens, and where they're connected. - **The wiring pattern:** builders are pure and never emit, the handler emits, and signals ignore return values. - **The scene tree:** types, scripts and `%unique` names, why each node sits where it does, and which names the tests depend on. - A checklist to go through before posting. **Ticket.** Testable acceptance criteria. Decisions for Liam are asked in one round and recorded on the ticket with a date. The milestone is assigned, not just mentioned. **Tests first.** The tests are checked to fail for the right reason, and the test count is compared against main. They are also checked against a throwaway implementation, which is then discarded. **Review.** Covers uncommitted work too, and re-reads everything on every pass. Suspected bugs are reproduced before being reported. Findings are ranked by severity, and each fix is written as ordered steps with the conditional ones marked. ## Trial run: #117 The skill was trialled end to end on #117 (PR #137) before this PR was opened. The second commit folds in what that run showed: - **What it caught:** the required sections found three problems before any code was written: - `task_released` needed the pawn id; - `Pawns.remove()` never freed a removed pawn's task; - a `const` can't be overridden in a subclass. - **What it missed, now added:** - error text the tests match on; - that a signal's declared parameter types aren't checked at `emit()`, which caused a real bug in #117; - that a drop in the test count means scripts failed to parse; - checking the tests against a throwaway implementation; - a fix written in review as a one-line summary was misread, so fixes are now ordered steps. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
/ticket <N> [stage] runs the ticket -> outline -> tests -> review
workflow from CLAUDE.md. The outline now has to give full signatures,
each method's job (including existing code it leans on), signal
ownership and direction, the builder/handler/emit wiring rules, and the
scene tree with the %unique names the tests depend on - the gaps that
caused confusion on #57.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Outline: error return values and any push_error text the tests match
  on; exact emit() calls for changed signals, since declared signal types
  are not checked at emit
- Tests: compare the test count against main, and check the spec against
  a throwaway implementation before handing over
- Review: read uncommitted work too, check the tests were not edited,
  re-read on every pass, reproduce suspected bugs, and write fixes as
  ordered steps with the conditional ones marked

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
liamjd merged commit bc1d8bb5d6 into main 2026-09-29 19:18:27 +01:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
liamjd/UntitledColonyBuilder!138
No description provided.