From 2e8dfd8ff95bb7cdd61bfa71c88a89b385c236e8 Mon Sep 17 00:00:00 2001 From: Brummel Date: Sat, 13 Jun 2026 16:32:27 +0200 Subject: [PATCH] chore: move skills-plugin profile into CLAUDE.md project facts The skills plugin dropped dev-cycle-profile.yml. Migrate this project's facts into CLAUDE.md under '## Skills plugin: project facts' and remove the profile file. --- .claude/dev-cycle-profile.yml | 92 ----------------------------------- CLAUDE.md | 88 +++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 111 deletions(-) delete mode 100644 .claude/dev-cycle-profile.yml diff --git a/.claude/dev-cycle-profile.yml b/.claude/dev-cycle-profile.yml deleted file mode 100644 index 84b7785..0000000 --- a/.claude/dev-cycle-profile.yml +++ /dev/null @@ -1,92 +0,0 @@ -# AILang project profile for the ~/dev/skills/ plugin. -# Schema reference: ~/dev/skills/docs/profile-schema.md - -paths: - spec_dir: docs/specs - plan_dir: docs/plans - design_ledger: design/INDEX.md - design_contracts: design/contracts - design_models: design/models - glossary: design/glossary.md - code_roots: [crates, runtime] - bench_dir: bench - public_interface: [README.md, design, docs, examples] - fieldtest_examples: examples/fieldtest - -naming: - counter_dirs: [docs/specs, docs/plans, design/contracts, design/models] - policy: stable_per_directory_4digit - slug_separator: "-" - -commands: - build: cargo build --workspace - test: cargo test --workspace - doc_build: cargo doc --no-deps 2>&1 - regression: - - bench/check.py - - bench/compile_check.py - - bench/cross_lang.py - architect_sweeps: - - bash bench/architect_sweeps.sh - -vocabulary: - cycle: milestone - subcycle: iteration - ledger_entry: contract - -standing_reading: - always: - - CLAUDE.md - - design/INDEX.md - - "git log -10 --format=full" - by_role: - architect: - - design/contracts - debugger: - - "git log -5 --format=full" - bencher: - - design/models/0004-rc-uniqueness.md - - bench/run.sh - - runtime/rc.c - - runtime/bump.c - grounding-check: - - design/INDEX.md - - design/contracts - fieldtester: - - design/INDEX.md - - design/models - -git: - main_sacrosanct: true - only_orchestrator_commits: true - protected_branches: [main] - issue_tracker: - kind: gitea - close_marker: "closes #N" - url: "http://192.168.178.103:3000/Brummel/AILang/issues" - list_cmd: "tea issues ls --repo Brummel/AILang --state open" - -notifications: - command: "~/.claude/notify.sh" - -spec_validation: - parsers: - ail: - ext: ".ail" - cmd: "ail check {file}" - ail-json: - ext: ".ail.json" - cmd: "ail check {file}" - ll: - ext: ".ll" - cmd: "llvm-as {file} -o /dev/null" - -pipeline: - brainstorm: { gates: [planner] } - planner: { gates: [implement] } - implement: {} - audit: { mandatory_at: cycle_close } - debug: { trigger: bug, red_first: true } - boss: { user_invoked: true } - fieldtest: { boss_only: true, when: surface_touch } - docwriter: { boss_only: true, when: api_stable_across_n_cycles } diff --git a/CLAUDE.md b/CLAUDE.md index 4f9ab1e..be5f717 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,8 +4,9 @@ repos, commit convention, issue-tracker vocabulary). This file carries only AILang-specific decisions on top — the language identity, code layout, file-naming convention, the project-calibrated orchestrator discipline (the skill system -itself lives in the `~/dev/skills/` plugin and is wired into -this project via `.claude/dev-cycle-profile.yml`), and the +itself lives in the `~/dev/skills/` plugin and reads the few +per-project facts it needs from the "Skills plugin: project +facts" section at the bottom of this file), and the LLM-utility feature gate. ## AILang — a language for LLM authors @@ -61,7 +62,6 @@ most likely a revert, not a redesign. | `examples/` | AILang fixtures used by tests and benches | | `design/` | The canonical contract ledger — `design/INDEX.md` (sole addressable spine: a typed Contracts + Models table), `design/contracts/` (prose-authoritative test-linked invariants), `design/models/` (onboarding whitepapers). Files under `contracts/` and `models/` follow the counter-prefix convention (see "File-naming convention" below). | | `docs/` | Specs and plans — `docs/specs/` (per-milestone design specs), `docs/plans/` (per-iteration plans), `PROSE_ROUNDTRIP.md`. Files under `specs/` and `plans/` follow the counter-prefix convention (see "File-naming convention" below). Project history lives in `git log`; the forward queue lives in Gitea issues (see "Roles" section below). | -| `.claude/dev-cycle-profile.yml` | Project profile consumed by the `~/dev/skills/` plugin — declares paths, commands, vocabulary, naming policy, issue tracker, and pipeline customisations. See `~/dev/skills/docs/profile-schema.md` for the slot reference. | ## File-naming convention @@ -97,17 +97,17 @@ ordering. Day-to-day discipline lives in the `~/dev/skills/` plugin — generic SKILL.md files at `~/dev/skills//SKILL.md`, agents under `~/dev/skills//agents/.md`. The -plugin reads project-specific slots (paths, commands, -vocabulary, naming, issue tracker, pipeline customisations) -from this project's profile at -`.claude/dev-cycle-profile.yml`. See `~/dev/skills/README.md` -for the skill table and `~/dev/skills/docs/profile-schema.md` -for the slot schema. Skills are sharper tools, not a -replacement for orchestrator judgement. +plugin reads the few project-specific facts it needs (code +roots, build/test commands, design-ledger paths, issue +tracker, by-role standing reading, spec-validation parsers) +from the "Skills plugin: project facts" section at the bottom +of this file. See `~/dev/skills/README.md` for the skill table +and `~/dev/skills/docs/conventions.md` for the fixed +conventions. Skills are sharper tools, not a replacement for +orchestrator judgement. Specs go to `docs/specs/.md`, plans to -`docs/plans/.md` — both per `paths.spec_dir` / -`paths.plan_dir` in the profile. +`docs/plans/.md`. Autonomous orchestrator mode — picking the next iter from the Gitea issue backlog and looping until done-state — is @@ -184,7 +184,8 @@ needs it. Concretely: - Adjust an agent's mandatory reading list (in `~/dev/skills//agents/.md`, or per-project via - `standing_reading.by_role.` in this project's profile). + the by-role standing-reading table in the "Skills plugin: + project facts" section below). - Tighten an agent or skill output format if reports are getting verbose. - Add a new skill when a recurring meta-pattern doesn't fit @@ -195,7 +196,7 @@ needs it. Concretely: Plugin edits are universal (every project that consumes the plugin sees them). Edits that are only relevant to AILang go -in the profile or in this CLAUDE.md, not in the plugin. +in this CLAUDE.md, not in the plugin. Skill and agent definitions are versioned files like any other code — changes go through git in `~/dev/skills/`, with a @@ -257,14 +258,13 @@ Work clusters into **milestones**, each subdivided into **iterations**. Pipeline (`brainstorm → plan → implement → audit → fieldtest`), skipping rules, and exit-code gating live in `~/dev/skills/README.md` and the per-skill `SKILL.md` -files; this project's pipeline configuration is in -`.claude/dev-cycle-profile.yml` under `pipeline:`. +files. Vocabulary note: pre-2026-05-09 git history uses "iter" / "family"; current vocabulary is "iteration" / "milestone". -Old commits are not retroactively renamed. The plugin uses -"cycle" / "iteration" as generic vocabulary; this project's -profile maps `cycle: milestone`. +Old commits are not retroactively renamed. The fixed plugin +terms cycle / iteration / milestone / contract apply across +all projects. ## Roles of the `design/` ledger, `git log`, Gitea issues, `docs/specs/`, `docs/plans/` @@ -320,3 +320,53 @@ Walk procedure: for each milestone-scope commit-range arm landed in these files (use `git diff ..HEAD --` on each file in the pair), open both files in the pair and confirm the matching update is present. Flag any unpaired arm as drift. + +## Skills plugin: project facts + +The few facts the `~/dev/skills/` plugin needs that genuinely vary per +project. Everything else is a fixed convention (see +`~/dev/skills/docs/conventions.md`). + +- **Code roots** — `crates`, `runtime` +- **Build** — `cargo build --workspace` +- **Test** — `cargo test --workspace` +- **Doc build** — `cargo doc --no-deps 2>&1` +- **Regression scripts** — `bench/check.py`, `bench/compile_check.py`, + `bench/cross_lang.py` +- **Architect sweeps** — `bash bench/architect_sweeps.sh` +- **Design ledger** — `design/INDEX.md` +- **Design contracts** — `design/contracts` +- **Design models** — `design/models` +- **Glossary** — `design/glossary.md` +- **Bench dir** — `bench` +- **Public interface** — the *only* surface the `fieldtester` may read + (everything else, especially code roots and bench, is forbidden to + it): `README.md`, `design`, `docs`, `examples` +- **Fieldtest examples** — `examples/fieldtest` +- **Spec-validation parsers** — fence-label → parser table the `specify` + parse-gate and `grounding-check` use to validate spec code blocks. A + block whose label has no entry is a documented skip, never a silent + pass. + + | Fence label | Temp ext | Command | + |-------------|-------------|---------| + | `ail` | `.ail` | `ail check {file}` | + | `ail-json` | `.ail.json` | `ail check {file}` | + | `ll` | `.ll` | `llvm-as {file} -o /dev/null` | + +- **By-role standing reading** — extra files/commands a specific agent + role reads on every dispatch, beyond the universal always-list + (`CLAUDE.md` + `git log -10`). + + | Role | Reads also | + |------|------------| + | architect | `design/contracts` | + | debugger | `git log -5 --format=full` | + | bencher | `design/models/0004-rc-uniqueness.md`, `bench/run.sh`, `runtime/rc.c`, `runtime/bump.c` | + | grounding-check | `design/INDEX.md`, `design/contracts` | + | fieldtester | `design/INDEX.md`, `design/models` | + +- **Issue tracker** — Gitea, repo `Brummel/AILang`. + - browse: `http://192.168.178.103:3000/Brummel/AILang/issues` + - list open issues: + `tea issues ls --repo Brummel/AILang --state open`