Brummel 808044c0cf fieldtest: skill + fieldtester agent migrated
Fifth skill via the boss pattern. fieldtest empirically tests
whether a shipped cycle is usable by a downstream consumer
who has only the public interface.

Profile gains two slots:
- `paths.public_interface` — list of dirs/files the fieldtester
  may read (the project's outward-facing surface: README, design
  ledger, docs, examples)
- `paths.fieldtest_examples` — where the fieldtester writes its
  fixtures

The forbidden zone is derived: everything not in
`paths.public_interface` (especially `paths.code_roots` and
`paths.bench_dir`) is closed to the fieldtester. This is the
load-bearing source-isolation discipline.

Vocabulary substitutions:
- AILang → "this project"
- milestone → cycle
- Boss → orchestrator
- ailang-fieldtester → fieldtester
- "AIL Surface form / .ail" → "the project's canonical
  authoring or consumer form"
- "design/INDEX.md + design/models/" → `paths.public_interface`
- "crates/, runtime/, bench/" → `paths.code_roots`,
  `paths.bench_dir`

AILang-specific bits dropped:
- The form-a-default-authoring milestone history (2026-05-13)
  and the eight `.ail.json` carve-outs — AILang-specific
  schema-migration detail; the universal rule is just
  "canonical authoring form only"
- The ail check / ail build / ail emit-ir CLI commands — the
  fieldtester now uses "the project's user-facing entry point"
- Per-iter journals reference — replaced with recent iter
  commit bodies (universal)
- Example ideas calibrated to AILang (FizzBuzz, Newton's method
  on Float, JSON-tree depth, ADT functors) — generalised to
  "realistic tasks an end-user might be asked to do"
- `design/contracts/0004-feature-acceptance.md` cross-ref —
  dropped (AILang-specific contract); the empirical-vs-
  prospective brainstorm symmetry survives in prose

Universal substance preserved verbatim:
- All three Iron Law clauses (public-interface-only,
  canonical-form-only, record-don't-fix)
- Five-phase process structure
- Four-class finding taxonomy (bug / friction / spec_gap /
  working)
- Spec template
- Status protocol (DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT /
  BLOCKED)
- All 8 Common Rationalisations rows (vocabulary-substituted)
- All 10 Red Flags bullets (vocabulary-substituted, with the
  AILang-specific .ail.json hand-write bullet generalised to
  "intermediate representations")

The source-isolation contract (Iron Law clause 1) is the
load-bearing discipline. Profile slot
`paths.public_interface` makes it machine-checkable; the
agent's hard limit on opening paths outside that list is the
discipline.
2026-05-28 16:02:58 +02:00

skills

A self-contained set of development-cycle skills and agents for Claude Code. Originally distilled from the AILang project's in-tree skills/ directory and generalised so it can carry the same discipline across any project.

The plugin is mechanics: pipeline shape, hard-gates, TDD, RED-first bug fixing, agent-template, working-tree-as-quarantine, status protocol. It does not know your project's paths, build commands, vocabulary, or domain-specific contracts. Those live in a small per-project profile file (.claude/dev-cycle-profile.yml) plus the project's CLAUDE.md.

What's in the box

Eight skills, each with the agents it primarily dispatches:

Skill Trigger Output Mandatory?
brainstorm New cycle starting spec under the configured spec dir Hard-gate before plan
planner New iteration within an open cycle plan under the configured plan dir Hard-gate before implement
implement Plan exists code + tests, uncommitted in working tree Standard iteration path
audit Cycle closing OR baseline drift suspected drift report + regression report Mandatory at cycle close
debug Bug observed RED test in working tree + cause analysis Mandatory RED-first for any bug
fieldtest Orchestrator-dispatched post-audit, surface-touching cycle example fixtures + friction spec Optional
docwriter API surface stable across N cycles rustdoc / docstring sweep Optional
boss User types /boss autonomous-orchestrator session — dispatches the other skills until done-state or bounce-back User-invoked, never auto-dispatched

Vocabulary is configurable. AILang calls a cycle a milestone and a sub-cycle an iteration; your project may call them release and sprint, or epic and story, or whatever fits.

The two-layer split

This repo (the plugin) carries everything that is universal:

  • Pipeline form: design → plan → execute → review → close
  • Hard-gates between phases
  • TDD as an independent inner-loop discipline
  • RED-first bug fixes
  • Agent template (frontmatter / Iron Law / standing reading / process / status / output / rationalisations / red flags)
  • Status protocol: DONE / DONE_WITH_CONCERNS / PARTIAL / BLOCKED / NEEDS_CONTEXT
  • Working-tree-as-quarantine and only-orchestrator-commits
  • main HEAD sacrosanct
  • No nested subagent dispatch (Claude Code platform constraint)
  • No orphan agents

Your project carries a small profile that fills the slots:

  • Paths: spec dir, plan dir, design ledger, code roots, bench dir
  • Commands: build, test, lint, regression scripts
  • Vocabulary: cycle name, sub-cycle name, ledger-entry name
  • Naming: counter prefix vs date prefix vs flat, slug shape
  • Standing reading list: concrete files, per role
  • Git: issue tracker kind, close marker, main-protection policy
  • Pipeline customisations: which phases are mandatory, when optional ones fire

See docs/profile-schema.md for the full schema and templates/project-profile.yml for a copy-and-fill starting point.

Install

See INSTALL.md. In short: clone, run install.sh, then drop a dev-cycle-profile.yml into each project that should use the plugin.

Status

Migration from AILang's in-tree ~/dev/ailang/skills/ is in progress. The boss skill is the landed pilot; the remaining seven skills follow. See docs/migration.md for the per-skill and per-agent migration checklists and the expected final layout.

S
Description
No description provided
Readme 3.2 MiB
Languages
JavaScript 85.6%
HTML 6.8%
Python 4.4%
Shell 3.2%