Files
Skills/docs/profile-schema.md
T
Brummel 71fa6a28de audit: skill + architect + bencher agents migrated
Fourth skill via the boss pattern. audit is the cycle-close
cleanup gate; architect does read-only drift review against
the design ledger; bencher does hypothesis-driven performance
diagnostics.

Profile gains one slot:
- `commands.architect_sweeps` — optional list of project-
  specific architect sweep commands. The architect agent runs
  these in addition to its universal checks; non-zero exit =
  drift suspicions. AILang uses this for the
  bench/architect_sweeps.sh design-honesty / history-anchor
  / lockstep-invariant detector.

The existing `commands.regression` slot now does double duty:
the audit skill walks it in Step 2; the bencher agent reads
the failing script for diagnostics.

Vocabulary substitutions:
- AILang → "this project"
- milestone → cycle
- Boss → orchestrator
- ailang-architect, ailang-bencher → architect, bencher

AILang-specific bits replaced or removed:
- `bench/check.py && bench/compile_check.py && bench/cross_lang.py`
  → `commands.regression` list
- `bench/architect_sweeps.sh` → `commands.architect_sweeps`
- design/INDEX.md / design/contracts/ / design/models/
  → `paths.design_ledger` / `paths.design_contracts` /
    `paths.design_models`
- `bench/run.sh`, `bench/orchestrator-stats/`, `runtime/rc.c`,
  `runtime/bump.c` (in bencher) → generic harness / production-
  path references
- RC + uniqueness + bump + implicit-mode/explicit-mode
  framework (the entire AILang allocator-comparison
  calibration) → generic "cost-paying variant vs control"
  framing; the hypothesis examples generalised to abstract
  perf claims
- The two specific lockstep invariants in architect
  (Pattern::Lit::* ↔ pre_desugar_validation; lower_app ↔
  is_static_callee) → "the project's CLAUDE.md enumerates
  the known pairings; walk each one against the cycle diff"
  (the concrete pairings stay AILang-only, in AILang's
  CLAUDE.md, not in the plugin)
- The Floats fieldtest "B1 canonical example" reference →
  dropped (AILang-specific anchor)
- `design/contracts/0007-honesty-rule.md` cross-ref → dropped
  (AILang-specific contract); the honesty principle survives
  in the architect's commit-body-truthfulness check

Universal substance preserved verbatim:
- All three Iron Law clauses for audit, architect, bencher
- audit's four-step process; architect's eight-step process;
  bencher's hypothesis-first methodology + fixture-pairing
  rule + honesty rules
- audit + architect + bencher exit code 0/1/2 semantics
- All Common Rationalisations (5/6/8) and all Red Flags
  (5/6/7) rows across the three files, vocabulary-substituted
- bencher's "tie is not a result" doctrine intact

Bencher is the most language-coupled of the seven (was
AILang-allocator-specific). Generalised to a performance-
benchmarker; the discipline (hypothesis-first, design-against
not around, ties-are-bench-info) survives intact. AILang's
RC+bump examples kept in spirit via the generic "cost-paying
vs control" framing.
2026-05-28 16:00:09 +02:00

7.4 KiB

Profile schema

Location: <project-root>/.claude/dev-cycle-profile.yml

Encoding: YAML. Each top-level key is a section. Keys are lowercase snake_case. Lists are YAML sequences.

paths

Key Type Default Description
spec_dir string docs/specs Where the brainstorm skill writes specs.
plan_dir string docs/plans Where the planner skill writes plans.
design_ledger string design/INDEX.md Canonical specification index (optional — projects without a design ledger can omit).
design_contracts string design/contracts Directory of prose-authoritative contracts (optional).
design_models string design/models Directory of onboarding whitepapers (optional).
code_roots list [src] Code directories the architect / quality reviewer walk.
bench_dir string bench Where regression harnesses live (optional).

Omitted optional keys signal that the feature is unused in this project; skills that depend on them either short-circuit or skip the corresponding step.

naming

Key Type Default Description
counter_dirs list [] Directories that use the counter-prefix policy.
policy enum flat One of stable_per_directory_4digit, date_prefix, flat.
slug_separator string - Separator inside the slug.

stable_per_directory_4digit means each listed directory has a per-directory counter, 4-digit zero-padded, assigned in creation order, stable for the life of the file. New files take the next-higher number; deleted files retire their number.

date_prefix uses YYYY-MM-DD-slug.md.

flat uses slug.md.

commands

Key Type Default Description
build string (required) Build command — exit 0 means success.
test string (required) Test command — exit 0 means success.
lint string (optional) Lint command — exit 0 means success.
doc_build string (optional) Documentation-build command used by the docwriter skill. Should print warnings on stderr so the agent can enumerate them (e.g. cargo doc --no-deps 2>&1). Omit if the project has no API docs.
regression list [] Regression scripts run by the audit skill. Each entry is a shell command; non-zero exit is a regress.
architect_sweeps list [] Project-specific architect sweep commands run by the architect agent in addition to its universal checks. Each entry is a shell command; non-zero exit means at least one sweep matched and the matches are drift-suspicions to verify. Optional.

vocabulary

Key Type Default Description
cycle string cycle What a top-level work unit is called. Examples: milestone, release, epic.
subcycle string iteration What a sub-unit is called. Examples: iteration, sprint, story.
ledger_entry string contract What a single design-ledger entry is called. Examples: contract, RFC, ADR.

Skills use these names in their generated artefacts and prose. Picking accurate vocabulary keeps prose readable; the underlying mechanics are identical regardless of name.

standing_reading

Key Type Default Description
always list [CLAUDE.md] Files every agent reads at start of every dispatch.
by_role map {} Map from role name to list of additional files.

Role names match agent slugs: architect, bencher, debugger, implementer, tester, fieldtester, docwriter, grounding-check, plan-recon, spec-reviewer, quality-reviewer.

Entries may be shell commands as well as file paths — they are read as opaque strings the agent should fetch / execute, e.g. "git log -10 --format=full".

git

Key Type Default Description
main_sacrosanct bool true If true, no actor may reset or revert main.
only_orchestrator_commits bool true If true, no agent commits; the orchestrator commits.
issue_tracker.kind enum none One of gitea, github, linear, none.
issue_tracker.close_marker string "closes #N" Marker the orchestrator includes in commit bodies to auto-close issues.
issue_tracker.url string (empty) Human-browsable URL of the issue list — surfaced in notifications and cross-references.
issue_tracker.list_cmd string (empty) Shell command that lists open issues. Used by the boss skill to read the forward queue. Examples: tea issues ls --repo X/Y --state open, gh issue list --repo X/Y --state open.
protected_branches list [main] Branches that are sacrosanct in the same sense as main.

notifications

Key Type Default Description
command string (empty) Shell command the boss skill invokes on done-state and bounce-back. Receives the message text as a single argument. Example: "~/.claude/notify.sh". If empty, the orchestrator falls back to printing the notification in chat.

pipeline

Per-phase configuration. Each phase has its own sub-map.

pipeline:
  brainstorm:
    gates: [planner]              # planner cannot start until this has run
  planner:
    gates: [implement]
  implement: {}                   # standard
  audit:
    mandatory_at: cycle_close     # auto-fires at end of each cycle
  fieldtest:
    boss_only: true               # only orchestrator dispatches
    when: surface_touch           # condition tag (orchestrator judgement)
  docwriter:
    boss_only: true
    when: api_stable_across_n_cycles
  debug:
    trigger: bug                  # observable misbehaviour
    red_first: true               # RED test before any fix
  boss:
    user_invoked: true            # autonomous-orchestrator mode, /boss

Phases not listed are disabled for the project. A project that does not want a fieldtest phase simply omits the key.

Example: minimal profile

paths:
  spec_dir: docs/specs
  plan_dir: docs/plans
  code_roots: [src]

commands:
  build: cargo build
  test: cargo test

vocabulary:
  cycle: milestone
  subcycle: iteration

standing_reading:
  always:
    - CLAUDE.md
    - "git log -10 --format=full"

git:
  issue_tracker:
    kind: github
    close_marker: "closes #N"

pipeline:
  brainstorm: { gates: [planner] }
  planner:    { gates: [implement] }
  implement:  {}
  audit:      { mandatory_at: cycle_close }
  debug:      { trigger: bug, red_first: true }

This minimal profile enables five phases, no fieldtest, no docwriter, no design-ledger. Good starting point for a small project.