Release 1.1.3 — long skills keep their later steps

Fix release for 1.1.2: the 14 longest skills keep their later phases
after a compaction, a question nobody answered is never taken as an
answer, settings read the same from a subfolder, the commit check works
for a project in a subfolder of a larger repository, every skill opens
with a title, and the shipped allow rules no longer approve deleting a
branch or writing files without asking. Details in CHANGELOG.md; upgrade
steps in UPGRADING.md (v1.1.2 → v1.1.3).

Refs #83
Refs #133

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0185en4t76fPn7315q4c3nko
This commit is contained in:
Donchitos
2026-10-08 17:52:48 +11:00
co-authored by Claude Opus 5.5
parent b21fa0f7f2
commit be8993bbc5
231 changed files with 12000 additions and 10527 deletions
+2 -2
View File
@@ -75,8 +75,8 @@ A tier is the directory a spec lives in. The rubric category is the agent's
1. Read `catalog.yaml` to get the `spec:` path and `category:` — from the
`skills:` entry for a skill, the `agents:` entry for an agent
2. Read the skill at `.claude/skills/[name]/SKILL.md`, or the agent at
`.claude/agents/[name].md`
2. Read the skill at `.claude/skills/[name]/SKILL.md` and every file in its
`references/` folder, or the agent at `.claude/agents/[name].md`
3. Read the project `CLAUDE.md` and the files it imports with `@`: every
subagent receives them, so a rule stated there (for example a redirect in
`coordination-rules.md`) counts as the skill's or agent's own
+1 -1
View File
@@ -14,7 +14,7 @@ you write. Driven by `/skill-test` and `/skill-improve`.
>
> | Mode | Without this folder |
> |------|---------------------|
> | `/skill-test static` | **Works** — the 7 structural checks read `SKILL.md` only |
> | `/skill-test static` | **Works** — the 7 structural checks read only the skill's own files |
> | `/skill-test audit` | **Degrades** — reports that no catalog exists |
> | `/skill-test spec` | **Breaks** — the behavioral specs live here |
> | `/skill-test category` | **Breaks** — reads `quality-rubric.md` from here |
@@ -13,7 +13,7 @@ current state (related source files, `git log`, TODO/FIXME comments, the active
sprint plan) and produces a comparison report: Original Scope, Current Scope,
Scope Additions, Scope Removals, a Bloat Score, a Risk Assessment and
Cut / Defer / Keep / Flag recommendations. The verdict follows the net scope
change: ≤10% PASS, 10–25% CONCERNS, >25% FAIL. When the percentage would be
change: ≤10% PASS, >10–25% CONCERNS, >25% FAIL. When the percentage would be
meaningless — a baseline that enumerates no items, or a current state that
cannot be read — the verdict is NOT ASSESSED and the numeric block is replaced.
No files are written and no director gates are invoked.
@@ -188,7 +188,7 @@ None. Scope check is a read-only advisory skill; no gates are invoked.
- [ ] Locates the baseline document (`design/gdd/`, `production/sprints/`, `production/milestones/`) before any comparison, and stops if it is absent
- [ ] Reads the current state from source files, `git log`, TODO/FIXME comments and the active sprint plan
- [ ] Verdict follows the net-change table: ≤10% PASS, 10–25% CONCERNS, >25% FAIL
- [ ] Verdict follows the net-change table: ≤10% PASS, >10–25% CONCERNS, >25% FAIL
- [ ] Emits NOT ASSESSED instead of a percentage when the baseline has no items or the current state cannot be read
- [ ] Does not write any files
- [ ] No director gates are invoked
@@ -8,7 +8,7 @@ a prerequisite is missing: the engine reference docs (no engine → `/setup-engi
`design/gdd/systems-index.md` (absent at `standard`/`full` → `/map-systems`),
and `design/gdd/game-concept.md` (absent → `/brainstorm`; at `minimal` the
one-page `design/game-brief.md` stands in). It extracts a Technical Requirements
Baseline (`TR-[gdd-slug]-[NNN]`) from the requirement-bearing sections of every
Baseline (`TR-[system]-[NNN]`) from the requirement-bearing sections of every
GDD, inventories existing ADRs from their headers, and shows an Engine Knowledge
Gap Inventory with an `AskUserQuestion` before authoring.
@@ -94,7 +94,7 @@ skipped — Solo mode."
9. Phase 8 writes a summary to `production/session-state/active.md` and prints the handoff with the headings "Architecture Complete", "Run These ADRs Next", "Gate-Check Readiness"; its **Then:** line names `/architecture-review`, then `/create-control-manifest` once the review passes, and the readiness block names `/gate-check pre-production`
**Assertions:**
- [ ] The baseline uses `TR-[gdd-slug]-[NNN]` IDs and is built from the scanned GDD sections, not whole-file reads
- [ ] The baseline uses `TR-[system]-[NNN]` IDs and is built from the scanned GDD sections, not whole-file reads
- [ ] The knowledge gap inventory and its three-option `AskUserQuestion` come before Phase 1
- [ ] Each section is shown before its approval is asked
- [ ] The master document is written only after the Phase 7 `AskUserQuestion` approval
@@ -246,6 +246,29 @@ None. `/setup-engine` is a technical configuration skill. No director gates appl
---
### Case 8: A skipped question is not an answer
**Fixture:**
- Fresh project: no engine configured, no `project.yaml` engine block
- The engine question comes back skipped: the user closes it, or a headless run
returns every question as skipped
**Input:** `/setup-engine`
**Expected behavior:**
1. The skill does not choose an engine, language or version itself
2. It asks again in plain text, saying what is waiting on the answer, and waits
3. Nothing is written to `CLAUDE.md`, `project.yaml`, `technical-preferences.md`
or `VERSION.md` before the user answers
4. In a run where nobody can answer, it stops and reports what is waiting
**Assertions:**
- [ ] No engine, language or version is picked on the user's behalf
- [ ] The question is asked again in plain text
- [ ] No file is written before an answer arrives
---
## Protocol Compliance
- [ ] Presents draft configuration before asking to write