Apply the debug-skill pattern (commits 6410732..de42974) to the
remaining skills: the agent file is the single source for each
interface field's semantics; the SKILL.md copy is reduced to field
names plus a pointer, marking the agent's contract table
authoritative. Because SKILL.md loads into orchestrator context and
agents/*.md into the subagent's fresh system prompt with no
transclusion, duplicated field tables drift apart over time.
- brainstorm: carrier (spec_path/iteration_scope) -> grounding-check;
the absolute-path requirement now lives only in the agent.
- planner: carrier (spec_path/iteration_scope/focus_hint) ->
plan-recon, including the mandatory/optional markers and the
BLOCKED-on-missing rule SKILL.md had omitted.
- fieldtest: carrier + produced fields -> fieldtester; the skill-level
`status` roll-up (clean/friction_found/bugs_found/infra_blocked),
which is not part of the agent's run-status protocol, stays defined
in SKILL.md only.
- docwriter: carrier + produced fields -> docwriter agent.
- implement: carrier (iter_id scratch-dir/stats/not-a-branch
semantics) -> implement-orchestrator; per-task sub-status vocabulary
moved into the orchestrator-agent (it runs the loop in a fresh
context and could not read SKILL.md at runtime, yet referenced "the
sub-status table" by name); task_text_path single-sourced in
implementer with spec-reviewer cross-referencing.
audit was already the reference implementation (pointers, no restated
contracts) and is unchanged.
closes#2
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a third pass to the grounding-check agent: when the profile
declares `spec_validation.parsers`, every fenced spec block whose
fence label has an entry is run through its parser (temp file + `ext`,
`cmd` with {file}); a non-zero exit marks the block unparseable and
the aggregate status becomes BLOCK. Complementary to the existing
test-ratification search (checks the spec's own bytes, not codebase
behaviour) and independent of the orchestrator's Step-7 gate (Fix 1) —
a fresh-context second line of the same defense.
Amends the Iron Law to permit per-block parser runs (same read-only
spirit as test-list/type-check), adds an "Unparseable code blocks"
report section, a Common Rationalisation, a Red Flag, and the agent
description.
refs #1
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Seventh skill via the boss pattern. brainstorm is the
spec-generation hard-gate; grounding-check is its Step-7.5
read-only assumption-ratification reviewer.
Vocabulary substitutions:
- AILang → "this project"
- milestone → cycle
- Boss → orchestrator
- ailang-grounding-check → grounding-check
- "the AILang program" / ".ail Form-A" → "the user-facing
program in the project's canonical authoring/consumer form"
- "Brummel (orchestrator) + Claude" → "orchestrator + Claude"
AILang-specific bits dropped or generalized:
- `docs/specs/<milestone>.md` / `docs/plans/` → `paths.spec_dir`
/ `paths.plan_dir`
- AILang feature-acceptance criterion's three specific clauses
(LLM-author-reaches-for-it, measurable correctness/redundancy
improvement, no-reintroduction-of-core-constraint-bug) →
"the criterion declared in the project's CLAUDE.md", with the
three typical-shape clauses retained as illustrative
- `design/contracts/0004-feature-acceptance.md` cross-ref →
pointer to project CLAUDE.md
- "AILang's own thesis is structured concrete form over prose
description" → "concrete code first, prose second" (the
discipline survives without the project-thesis hook)
- The 2026-05-11 incident date → generic "recurring failure
mode" framing (the discipline survives without the date)
- `tea issues create --repo Brummel/AILang` → "the project's
issue-tracker create command (typically tea/gh)" with both
examples shown
- `cargo test --list -p <crate>` / `cargo check` → "the
project's test-list / type-check command" with Rust example
- `crates/*/tests/`, `crates/*/src/**/tests.rs`, `examples/`
→ derived from `paths.code_roots` and the project's examples
/ fixtures convention
- The `Spec-23 / prelude free-fn ne / typeclass elaboration`
worked example → generic "spec section that proposes
adding to a table or extending a pass without stating that
the existing entries / passes cover the new shape"
- AILang skill-system index reference (`skills/README.md`)
→ `../../README.md` (plugin's top-level)
- "Form-A / .ail / monomorphised compare__T symbol" examples
→ generic "function names, type names, schema fields, pass
names" example
Universal substance preserved verbatim:
- The hard-gate (3 lines) — NO IMPLEMENTATION UNTIL SPEC
APPROVED
- Nine-step process (explore context → clarify Q&A →
propose 2-3 approaches → apply feature-acceptance → present
in sections → write spec → self-review → grounding-check →
user-review-gate → hand off)
- "Concrete code first, prose second" discipline
(the universally-applicable form of what was the
AILang-thesis hook)
- "The criterion is unjudgeable without concrete code" rule
(universal good practice; project's CLAUDE.md picks the
specific criterion)
- Spec structure (Goal / Architecture / Concrete code shapes
/ Components / Data flow / Error handling / Testing strategy
/ Acceptance criteria)
- Step-7 self-review checklist (5 items)
- Step-7.5 grounding-check dispatch + PASS/BLOCK/INFRA_ERROR
three-way classification + failure-mode procedure + re-
dispatch on post-PASS edit rule
- All 8 Common Rationalisations rows
- All 9 Red Flags bullets
- grounding-check's six-step process incl. assumption
extraction, search design, ratification classification,
aggregate status computation
- grounding-check's Iron Law (5 lines), output format (exact
layout preserved), 6 Common Rationalisations rows, 8 Red
Flags bullets
The brainstorm is the largest skill in the migration (366 →
355 lines after substitutions). Calibrated discipline kept
intact per memory feedback_dont_strip_repeated_discipline.md:
"concrete code first" + grounding-check hard-gate + "re-
dispatch on post-PASS edit" are the load-bearing rules; all
survive verbatim except for project-specific identifiers.