Add design/glossary.md (25 entries) and wire it in via the
paths.glossary profile slot, making it standing reading for every
skill and agent role.
Built by the glossary skill's bootstrap procedure: five read-only
glossary-extractor agents swept the prose surface (design/contracts,
design/models, design/INDEX.md, docs/PROSE_ROUNDTRIP.md, and the 60
docs/specs in three blocks), reporting recurring domain-concept terms
and their competing synonyms with frequencies. docs/plans was
excluded as a derived execution artefact that mirrors spec/contract
vocabulary rather than originating it.
Three apparently-contested clusters were resolved by record-reality
against the authoritative current docs (CLAUDE.md + design/): the
retired .ailx extension yields to .ail; Form-A wins over "Form A"
(13:2); round-trip wins over roundtrip (15:10). The one genuine
nomenclature choice -- the canonical term for the structured hashable
form -- was decided by the user: JSON-AST is canonical, .ail.json is
its on-disk file. The local conformance check caught and removed a
Form-B / JSON-AST Avoid-list collision before write.
Skills Issue #1 (compound-hallucination hardening) shipped a
new optional profile slot, `spec_validation.parsers`, that maps
markdown fence labels to validation commands. Three new gates
consume it: brainstorm Step 7 parse-every-block, planner Step 5
parse-the-bytes-you-inline, and the grounding-check code-block
parse pass. A profile written before the slot existed has all
three running as silent no-ops — exactly the failure mode the
raw-buf.2 spec slipped through.
Register three fence labels:
- `ail` → `ail check {file}` — Form-A surface modules. `check`
is strictly broader than `parse` (catches the parser-novel
head class AND the type-level rejects an MVP-only construct
triggers, e.g. polymorphic fn-type without explicit forall),
so it would have BLOCKED the storage-tag / RawBuf-shorthand /
implicit-forall chain at Step 7 of brainstorm.
- `ail-json` → `ail check {file}` — JSON AST form; `check`
auto-detects extension.
- `ll` → `llvm-as {file} -o /dev/null` — LLVM IR snippets in
codegen specs.
Verified `ail check` works on a standalone Form-A file (no
workspace setup needed; the loader injects prelude + kernel).
The skill system migrated to a standalone plugin
(http://192.168.178.103:3000/Brummel/Skills.git, local clone at
~/dev/skills/) during this branch's earlier commits. AILang now
consumes the plugin via:
- ~/.claude/skills/<name> and ~/.claude/agents/<name> symlinks
created by ~/dev/skills/install.sh (user-level, installed
once, visible from any project).
- A project profile at .claude/dev-cycle-profile.yml declaring
paths, commands, vocabulary, naming policy, issue tracker,
notification command, and pipeline customisations.
Changes:
- ADD .claude/dev-cycle-profile.yml — AILang's profile against
the plugin's schema (paths spec_dir/plan_dir/design_ledger/
design_contracts/design_models/code_roots/bench_dir/
public_interface/fieldtest_examples; counter-prefix naming
policy; cargo build/test/doc commands; bench/check.py +
compile_check.py + cross_lang.py as regression; bench/
architect_sweeps.sh as architect sweep; milestone/iteration/
contract vocabulary; design-ledger walk + git-log standing
reading; bencher gets concrete RC/bump reading paths;
Gitea issue-tracker URL + tea list_cmd; ~/.claude/notify.sh
as notification command; the full eight-skill pipeline).
- REMOVE skills/ in-tree (21 files: 7 SKILL.md + 13 agent files
+ skills/README.md). All eight skills + all twelve agents
now live in ~/dev/skills/ as generic prose that reads slots
from the profile.
- REMOVE .claude/skills/ + .claude/agents/ symlinks (15
symlinks). User-level ~/.claude/skills/ + ~/.claude/agents/
installed by the plugin take over discovery.
- UPDATE CLAUDE.md:
* Skill-system section rewritten to point at ~/dev/skills/
+ the profile file.
* "My role: orchestrator" agent names dropped the ailang-
prefix (implementer, tester, debugger, architect).
* "Authority over `skills/`" became "Authority over the
skill plugin" — naming where plugin edits vs profile vs
CLAUDE.md edits live.
* Bug-fixes-TDD pointer updated to ~/dev/skills/debug.
* Milestone-cycle section notes the cycle/iteration
vocabulary mapping the profile carries.
* design-ledger-roles paragraph dropped the `ailang-`
prefix on the architect agent name.
* Code-layout table's `skills/` row replaced with a row
describing .claude/dev-cycle-profile.yml.
* ADDED a new "Lockstep-invariant pairs" section
enumerating AILang's two known cross-file pairings
(Pattern::Lit::* / pre_desugar_validation;
lower_app / is_static_callee) — the architect agent's
drift walk and plan-recon's cross-reference column both
consult this section per the plugin's
templates/CLAUDE.md.fragment shape.
After this commit, AILang no longer ships any skill files in
its own tree. All discipline lives in ~/dev/skills/; all
project-specific calibration lives in
.claude/dev-cycle-profile.yml plus CLAUDE.md.
CLAUDE.md previously mixed universal facts (agent role boundaries,
commit discipline, design rationale, file roles, TDD-for-bugs) with
mode-specific autonomy rules (direction freedom, notifications,
WhatsNew procedure). Autonomous-by-default conflicted with the user's
intent that a fresh session should be collaborative-interactive unless
explicitly elevated.
Add `skills/boss/` containing only the three genuinely mode-specific
subsections — Direction freedom, Notifications, Done-state notifications:
WhatsNew.md. Trim CLAUDE.md from 343 to 243 lines; extend the skill-
system pointer paragraph with a one-sentence /boss gate. Universal
orchestrator discipline stays in CLAUDE.md because it applies whether
/boss is active or not.
Two cross-references that named the moved subsections by sub-heading
are repointed: skills/implement/SKILL.md and the implement-orchestrator
agent's standing reading list. The other ~11 agent-file references to
"orchestrator framing" still resolve correctly because that framing
stays in CLAUDE.md.
skills/README.md skill table extended with a `boss` row (now eight
skills); pipeline-diagram caption notes /boss wraps the pipeline.
.claude/skills/boss symlink follows the existing relative-path
convention.
Anthropic now reserves /plan as a UI command, so the Skill tool refuses to
dispatch it. Rename the project's plan skill to planner, update the symlink
under .claude/skills/, and adjust references in CLAUDE.md, DESIGN.md,
skills/README.md, and the cross-references between brainstorm / implement /
audit / fieldtest / fieldtester. Plan files themselves (docs/plans/*.md)
keep their name — only the skill ID changes.
New skill that runs after a clean audit at milestone close. Picks
2-4 real-world programming tasks within the milestone's scope,
implements each in the AIL Surface form (.ailx), runs the binaries,
and writes a friction-and-bug spec to docs/specs/<date>-fieldtest-
<milestone>.md.
The dispatched agent (ailang-fieldtester) is restricted to DESIGN.md
plus the public examples/ corpus — crates/, runtime/, bench/ are
forbidden reads. This simulates a downstream LLM author who has only
the specification, which is the empirical complement to brainstorm's
prospective application of the LLM-utility criterion.
Findings classify as bug / friction / spec_gap / working, each with
a one-line downstream recommendation (debug / plan / ratify /
carry-on). The orchestrator dispatches the follow-ups; fieldtest
does not self-resolve.
Files:
- skills/fieldtest/SKILL.md
- skills/fieldtest/agents/ailang-fieldtester.md
- .claude/skills/fieldtest, .claude/agents/fieldtest (discovery
symlinks)
- skills/README.md updated (skill table → 6, pipeline ASCII,
agent roster, discovery list)
The skills are functionally complete and standalone — superpowers
references were attribution-only. Removed so a reader without the
superpowers plugin loaded isn't sent chasing dead links.
Plus: .claude/skills/<name> symlinks so Claude Code's Skill tool can
invoke them by name (analogous to the existing .claude/agents/
symlinks). Discovery section in skills/README.md updated to cover
both symlink sets.
Three symlinks per skill:
.claude/agents/implement -> skills/implement/agents
.claude/agents/audit -> skills/audit/agents
.claude/agents/debug -> skills/debug/agents
Tracked so contributors get correct subagent dispatch on clone.
Resolved correctly via 'ls -L'.