71fa6a28de
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.
64 lines
2.5 KiB
YAML
64 lines
2.5 KiB
YAML
# Project profile for the skills plugin.
|
|
#
|
|
# Drop a copy of this file at <project-root>/.claude/dev-cycle-profile.yml
|
|
# and edit. See ~/dev/skills/docs/profile-schema.md for the full schema
|
|
# and per-key documentation.
|
|
|
|
paths:
|
|
spec_dir: docs/specs
|
|
plan_dir: docs/plans
|
|
# design_ledger: design/INDEX.md # optional
|
|
# design_contracts: design/contracts # optional
|
|
# design_models: design/models # optional
|
|
code_roots: [src]
|
|
# bench_dir: bench # optional
|
|
|
|
naming:
|
|
counter_dirs: []
|
|
policy: flat # stable_per_directory_4digit | date_prefix | flat
|
|
slug_separator: "-"
|
|
|
|
commands:
|
|
build: "" # REQUIRED — e.g. "cargo build" or "npm run build"
|
|
test: "" # REQUIRED — e.g. "cargo test" or "npm test"
|
|
# lint: "" # optional
|
|
# doc_build: "" # e.g. "cargo doc --no-deps 2>&1" — used by docwriter
|
|
regression: [] # list of shell commands run by audit; non-zero exit = regress
|
|
architect_sweeps: [] # optional project-specific architect sweeps; non-zero exit = drift suspicion
|
|
|
|
vocabulary:
|
|
cycle: cycle # what a top-level work unit is called
|
|
subcycle: iteration # what a sub-unit is called
|
|
ledger_entry: contract # what one design-ledger entry is called
|
|
|
|
standing_reading:
|
|
always:
|
|
- CLAUDE.md
|
|
- "git log -10 --format=full"
|
|
by_role:
|
|
# architect: [design/contracts]
|
|
# debugger: ["git log -5 --format=full"]
|
|
|
|
git:
|
|
main_sacrosanct: true
|
|
only_orchestrator_commits: true
|
|
protected_branches: [main]
|
|
issue_tracker:
|
|
kind: none # gitea | github | linear | none
|
|
close_marker: "closes #N"
|
|
# url: "" # human-browsable issue list URL
|
|
# list_cmd: "" # e.g. "tea issues ls --repo X/Y --state open"
|
|
|
|
notifications:
|
|
# command: "" # e.g. "~/.claude/notify.sh"; boss falls back to chat if empty
|
|
|
|
pipeline:
|
|
brainstorm: { gates: [planner] }
|
|
planner: { gates: [implement] }
|
|
implement: {}
|
|
audit: { mandatory_at: cycle_close }
|
|
debug: { trigger: bug, red_first: true }
|
|
# boss: { user_invoked: true } # autonomous orchestrator mode, /boss
|
|
# fieldtest: { boss_only: true, when: surface_touch }
|
|
# docwriter: { boss_only: true, when: api_stable_across_n_cycles }
|