@rafinery/cli 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -0
- package/README.md +17 -7
- package/bin/rafa.mjs +68 -20
- package/blueprint/.claude/agents/atlas.md +28 -20
- package/blueprint/.claude/agents/bloom.md +15 -8
- package/blueprint/.claude/agents/compass.md +46 -0
- package/blueprint/.claude/agents/prism.md +42 -25
- package/blueprint/.claude/commands/rafa.md +151 -26
- package/blueprint/{.rafa → .claude/rafa}/contract.md +108 -22
- package/blueprint/.claude/skills/rafa-build/SKILL.md +76 -0
- package/blueprint/.claude/skills/rafa-distill/SKILL.md +87 -0
- package/blueprint/{.rafa/capabilities/improve.md → .claude/skills/rafa-improve/SKILL.md} +10 -5
- package/blueprint/.claude/skills/rafa-insights/SKILL.md +71 -0
- package/blueprint/{.rafa/capabilities/leverage.md → .claude/skills/rafa-leverage/SKILL.md} +9 -4
- package/blueprint/{.rafa/capabilities/plan.md → .claude/skills/rafa-plan/SKILL.md} +30 -3
- package/blueprint/{.rafa/capabilities/scan.md → .claude/skills/rafa-scan/SKILL.md} +14 -9
- package/blueprint/{.rafa/capabilities/validate.md → .claude/skills/rafa-validate/SKILL.md} +14 -5
- package/lib/blueprint.mjs +22 -12
- package/lib/brain-repo.mjs +100 -0
- package/lib/checkpoint.mjs +138 -0
- package/lib/ci-setup.mjs +109 -0
- package/lib/claude-config.mjs +5 -5
- package/lib/compile.mjs +6 -21
- package/lib/distill.mjs +237 -0
- package/lib/fold.mjs +53 -0
- package/lib/gate/compile.mjs +549 -0
- package/lib/gate/verify-citations.mjs +156 -0
- package/lib/hydrate.mjs +96 -0
- package/lib/init.mjs +15 -30
- package/lib/leverage/adapters/claude-code.mjs +5 -4
- package/lib/mcp-client.mjs +97 -0
- package/lib/mcp-config.mjs +1 -1
- package/lib/migrations/index.mjs +39 -3
- package/lib/pull.mjs +129 -0
- package/lib/push.mjs +93 -14
- package/lib/releases.mjs +23 -0
- package/lib/verify-citations.mjs +9 -0
- package/lib/working-set.mjs +113 -0
- package/package.json +2 -2
- package/blueprint/.rafa/bin/rafa-compile.mjs +0 -478
- package/blueprint/.rafa/bin/rafa-push.mjs +0 -75
- package/blueprint/.rafa/bin/verify-citations.mjs +0 -153
- package/blueprint/.rafa/capabilities/build.md +0 -39
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,85 @@ The machine-readable version of this lives in [`lib/releases.mjs`](lib/releases.
|
|
|
4
4
|
CLI reads it to tell a client, on `rafa update`, exactly what an upgrade requires (nothing,
|
|
5
5
|
a re-scan, or a `rafa migrate`).
|
|
6
6
|
|
|
7
|
+
## 0.4.0 — the working-set blueprint
|
|
8
|
+
|
|
9
|
+
**Adopt with:** `npx @rafinery/cli@latest update` — it re-syncs the blueprint to the new
|
|
10
|
+
layout and runs the mechanical `blueprint-split-0.4.0` migration (removes the old vendored
|
|
11
|
+
`.rafa/bin` + `.rafa/capabilities` + `.rafa/contract.md`). **No re-scan** — the brain data
|
|
12
|
+
schema is unchanged (contract data v1, plans v1). Plans: re-push once through the new
|
|
13
|
+
channel (approve/`push_plan`) so bodies land on the platform.
|
|
14
|
+
|
|
15
|
+
### The blueprint split — nothing vendored under `.rafa/` anymore
|
|
16
|
+
|
|
17
|
+
- **Gate tools live INSIDE this CLI** (`rafa compile` · `rafa verify-citations` ·
|
|
18
|
+
`rafa push` · `rafa pull`) — they move with the CLI version, never with the repo.
|
|
19
|
+
- **Capabilities are committed SKILLS** at `.claude/skills/rafa-*` — behavior versions
|
|
20
|
+
with your code, MR-reviewed, clone-complete.
|
|
21
|
+
- **The contract is canonical in the code repo** (`.claude/rafa/contract.md`); a stamped
|
|
22
|
+
copy rides every brain push.
|
|
23
|
+
- **`.rafa/` is lazy, gitignored knowledge+state** that bootstraps from the committed
|
|
24
|
+
`rafa.json`: **clone → `npx rafa pull` just works** (no init on the machine).
|
|
25
|
+
`rafa pull --full` mirrors the brain repo for offline reads.
|
|
26
|
+
|
|
27
|
+
### The working set — branch knowledge under CAS (supersedes bucket notes)
|
|
28
|
+
|
|
29
|
+
- Capture's working medium is **files**: edit/author brain notes in the branch's lazy
|
|
30
|
+
`.rafa/brain/**`; `rafa hydrate` faults org-brain notes in (stamped disposable-cache —
|
|
31
|
+
unedited hydrations are never pushed).
|
|
32
|
+
- **`rafa checkpoint`** syncs the branch working set to the platform under
|
|
33
|
+
**base-version CAS** at checkpoint moments (task done · plan approved · explicit ask ·
|
|
34
|
+
cadence · git push/pull — **never session-end**). A teammate's newer copy comes back
|
|
35
|
+
as a per-file conflict (`.theirs.md`) for YOUR decision — never auto-resolved.
|
|
36
|
+
|
|
37
|
+
### Plans — a dedicated push-on-approval channel
|
|
38
|
+
|
|
39
|
+
- Plans never ride the brain manifest again: approval pushes the whole plan (bodies
|
|
40
|
+
included) via `push_plan`; **"list plans" = names only**; **"load plan X"**
|
|
41
|
+
materializes it back into `.rafa/plans/`. Statuses + `## Log` journals push back on
|
|
42
|
+
build cadence. Terminal statuses `superseded`/`abandoned` close work honestly
|
|
43
|
+
(`done` stays prism-earned; the board renders, never sets).
|
|
44
|
+
|
|
45
|
+
### CI reconciliation — the rigor gradient in YOUR CI
|
|
46
|
+
|
|
47
|
+
- **`rafa ci-setup`** installs the reconcile workflow: branch→parent merge = **mechanical
|
|
48
|
+
fold** (`rafa fold`, no LLM — divergence flagged `needs-adjudication` for the next
|
|
49
|
+
session's digest, never guessed) · merge-to-main = **distillation**
|
|
50
|
+
(`rafa distill --headless` — Agent SDK on the **org's own `ANTHROPIC_API_KEY`** from CI
|
|
51
|
+
secrets, never stored on the rafinery platform; validated vs merged main, gated by
|
|
52
|
+
verify-citations + compile, pushed to the brain repo). No CI? The next dev session
|
|
53
|
+
offers the same reconciliation.
|
|
54
|
+
|
|
55
|
+
### The agents become contract-governed software (earlier in this release)
|
|
56
|
+
|
|
57
|
+
- **Agent cards are gated (contract §10).** Every vendored agent (`atlas` 3.4.0 · `prism`
|
|
58
|
+
0.4.0 · `bloom` 0.5.0) now carries semver + ground truth + `duties:` — one line per duty in
|
|
59
|
+
the form `"<duty> :: <sop> :: <bar>"` — and `rafa compile` validates the cards like any
|
|
60
|
+
structured file (bad card → loud failure, never a silently drifted agent). The frontmatter
|
|
61
|
+
grammar gains folded scalars (`>-`) for this.
|
|
62
|
+
- **prism's verdict rule is encoded.** An unflagged salient-but-wrong exemplar now
|
|
63
|
+
auto-ITERATEs regardless of the numeric score (validate.md §decision) — the case where a
|
|
64
|
+
"passing" brain teaches every cold agent the wrong pattern.
|
|
65
|
+
- **All agents query the knowledge MCP.** `mcp__rafinery` is on every card's tools; recall is
|
|
66
|
+
SOP-automatic in plan/build with local `.rafa/brain/` fallback when not platform-connected.
|
|
67
|
+
- **Intent dispatch (conductor 1.1.0).** Say "let's add X" — the conductor routes plan-shaped /
|
|
68
|
+
build-shaped / fix-shaped prompts into the SOPs without `/rafa` being typed
|
|
69
|
+
(announce-and-proceed; "skip" always wins instantly). Admin verbs — init · scan · push ·
|
|
70
|
+
migrate · update — still run ONLY when explicitly invoked. `plan-lite` handles small blast
|
|
71
|
+
radii with the same contract, less ceremony.
|
|
72
|
+
- **Plan approval IS the push trigger.** Approving a plan in a connected repo pushes it
|
|
73
|
+
immediately (no second prompt) — it renders on the platform, board-style, within moments.
|
|
74
|
+
- **`rafa pull` — the teammate path.** The brain never travels through the code repo
|
|
75
|
+
(`.rafa/` is gitignored there); it travels through the brain repo. Cloned an
|
|
76
|
+
already-scanned repo? `rafa init` (blueprint + MCP key) then `rafa pull` — full local
|
|
77
|
+
brain cache in seconds, **never re-scan for knowledge that already exists**.
|
|
78
|
+
Fast-forward only; a diverged local cache stops loudly (`--force` adopts the remote —
|
|
79
|
+
the remote is canonical). And when platform-connected, recall works with zero local
|
|
80
|
+
files anyway (the MCP serves the brain).
|
|
81
|
+
- **compass — the fourth agent.** The dev's private coach (user brain: patterns,
|
|
82
|
+
preferences, constraints — consent-gated, cross-repo, legible/correctable/deletable).
|
|
83
|
+
`/rafa insights` bootstraps it; `/rafa distill` reconciles merged-branch staged notes
|
|
84
|
+
into the org brain (prism-validated against merged main).
|
|
85
|
+
|
|
7
86
|
## 0.3.0
|
|
8
87
|
|
|
9
88
|
**Adopt with:** `npx @rafinery/cli@latest update` — no re-scan, no migration required.
|
package/README.md
CHANGED
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
# @rafinery/cli — `rafa`
|
|
2
2
|
|
|
3
3
|
The rafinery AI-engineer CLI. Like shadcn, it **vendors the rafa blueprint into your
|
|
4
|
-
repo** — agents,
|
|
5
|
-
|
|
4
|
+
repo** — agents, the `/rafa` command, the rafa skills, and the file contract — and you
|
|
5
|
+
own your copies. The deterministic gate tools live INSIDE this package (never vendored),
|
|
6
|
+
so a repo is gate-current the moment the CLI is. It is *not* a runtime dependency; you
|
|
7
|
+
never `import` it.
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
10
|
npx @rafinery/cli init # provision this repo (vendor the blueprint)
|
|
9
|
-
npx @rafinery/cli init <url> # …and wire the
|
|
11
|
+
npx @rafinery/cli init <url> # …and wire the platform from a setup URL
|
|
10
12
|
# after install the command is just `rafa`:
|
|
11
13
|
rafa update # re-sync the blueprint (opt-in; you own your copies)
|
|
12
14
|
rafa compile # validate the brain against the contract → manifest.json
|
|
13
|
-
rafa
|
|
15
|
+
rafa verify-citations # deterministic citation checker (B1/B2/policy)
|
|
16
|
+
rafa push # compile + push .rafa/ to your brain remote (from main)
|
|
17
|
+
rafa pull [--full] # make a fresh clone brain-ready (lazy; --full mirrors)
|
|
14
18
|
```
|
|
15
19
|
|
|
16
20
|
The LLM work runs inside Claude Code, not the CLI: `/rafa scan`, `/rafa improve`, `/rafa plan`.
|
|
17
21
|
|
|
18
|
-
## Model
|
|
19
|
-
- **Blueprint =
|
|
20
|
-
|
|
22
|
+
## Model (blueprint split, 0.4.0)
|
|
23
|
+
- **Blueprint = committed files** you own (`.claude/agents/*`, `.claude/commands/rafa.md`,
|
|
24
|
+
`.claude/skills/rafa-*`). Tune them; they version with your code, MR-reviewed.
|
|
25
|
+
- **Contract** (`.claude/rafa/contract.md`) moves in lockstep with the CLI that implements
|
|
26
|
+
it — treat as generated. A stamped copy rides every brain push.
|
|
27
|
+
- **Gate tools** are not files in your repo — they are this package (`rafa compile`,
|
|
28
|
+
`rafa verify-citations`, `rafa push`, `rafa pull`).
|
|
29
|
+
- **`.rafa/` is lazy, gitignored knowledge+state** — plans + hydrated working files. It
|
|
30
|
+
bootstraps from the committed `rafa.json`: clone → `npx rafa pull` just works.
|
|
21
31
|
- **Updates** ship by bumping this CLI; `rafa update` pulls the new blueprint into your repo.
|
|
22
32
|
|
|
23
33
|
See the monorepo: https://github.com/rafinery-ai/rafinery
|
package/bin/rafa.mjs
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// rafa — the rafinery CLI. Thin dispatcher; each command lives in ../lib.
|
|
3
3
|
//
|
|
4
|
-
// rafa init [<setup-url>] provision this repo (vendor blueprint + wire
|
|
4
|
+
// rafa init [<setup-url>] provision this repo (vendor blueprint + wire the platform)
|
|
5
5
|
// rafa update re-sync the blueprint into this repo (shadcn-style)
|
|
6
6
|
// rafa compile run the contract gate → .rafa/manifest.json
|
|
7
|
-
// rafa
|
|
7
|
+
// rafa verify-citations deterministic citation checker (B1/B2/policy gates)
|
|
8
|
+
// rafa push compile + push .rafa/ to the brain remote (main-branch act)
|
|
9
|
+
// rafa pull [--full] make this clone brain-ready (lazy skeleton; --full mirrors)
|
|
8
10
|
// rafa leverage inspect your agent toolbox → proactive tips
|
|
9
11
|
// rafa migrate bring structured files (plans/config) up to the current schema
|
|
10
12
|
//
|
|
11
|
-
// The
|
|
13
|
+
// The gate tools live INSIDE this package (blueprint split, 0.4.0) — nothing is
|
|
14
|
+
// vendored into .rafa/bin anymore. The LLM work (scan / improve / plan) runs
|
|
15
|
+
// inside Claude Code via /rafa.
|
|
12
16
|
|
|
13
17
|
import { readFileSync } from "node:fs";
|
|
14
18
|
import { dirname, join } from "node:path";
|
|
@@ -17,7 +21,21 @@ import { fileURLToPath } from "node:url";
|
|
|
17
21
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
18
22
|
const pkg = JSON.parse(readFileSync(join(HERE, "..", "package.json"), "utf8"));
|
|
19
23
|
|
|
20
|
-
const COMMANDS = [
|
|
24
|
+
const COMMANDS = [
|
|
25
|
+
"init",
|
|
26
|
+
"update",
|
|
27
|
+
"compile",
|
|
28
|
+
"verify-citations",
|
|
29
|
+
"push",
|
|
30
|
+
"pull",
|
|
31
|
+
"checkpoint",
|
|
32
|
+
"hydrate",
|
|
33
|
+
"fold",
|
|
34
|
+
"distill",
|
|
35
|
+
"ci-setup",
|
|
36
|
+
"leverage",
|
|
37
|
+
"migrate",
|
|
38
|
+
];
|
|
21
39
|
const [cmd, ...rest] = process.argv.slice(2);
|
|
22
40
|
|
|
23
41
|
function help() {
|
|
@@ -26,15 +44,38 @@ function help() {
|
|
|
26
44
|
Usage: rafa <command> [options]
|
|
27
45
|
|
|
28
46
|
Commands:
|
|
29
|
-
init [<setup-url>] Provision this repo — vendor the blueprint (agents,
|
|
30
|
-
|
|
47
|
+
init [<setup-url>] Provision this repo — vendor the blueprint (agents, /rafa command,
|
|
48
|
+
rafa skills, contract) and, with a platform setup URL, wire the
|
|
49
|
+
platform (the brain remote lands in the committed rafa.json).
|
|
31
50
|
update Re-sync the blueprint into this repo (you own your copy; opt-in updates).
|
|
32
51
|
|
|
33
52
|
Flags (init/update): --overwrite replace changed owned files without asking
|
|
34
53
|
--keep keep all changed owned files without asking
|
|
35
54
|
(default: ask per file; in a non-TTY it keeps them)
|
|
36
55
|
compile Validate the brain against the contract → .rafa/manifest.json.
|
|
37
|
-
|
|
56
|
+
verify-citations Deterministic citation checker: every cite resolves (B1), every
|
|
57
|
+
contract anchor's code occurrences are cited (B2), policy holds.
|
|
58
|
+
push Compile, then push .rafa/ to your brain remote (from main — the
|
|
59
|
+
org brain describes the default branch). Stamps the contract copy.
|
|
60
|
+
pull Make this clone brain-ready — bootstraps the lazy .rafa/ skeleton
|
|
61
|
+
from the committed rafa.json (clone → npx rafa pull just works).
|
|
62
|
+
--full mirrors the whole brain repo locally (offline reads);
|
|
63
|
+
--force adopts the remote over local changes (remote is canonical).
|
|
64
|
+
checkpoint Sync this branch's WORKING SET (edited/new brain files) to the
|
|
65
|
+
platform under base-version CAS. Conflicts land as .theirs.md
|
|
66
|
+
copies for YOUR decision — never auto-resolved. Exit 2 on conflict.
|
|
67
|
+
hydrate Fault knowledge into the lazy .rafa/: hydrate rule <id> ·
|
|
68
|
+
hydrate playbook <id> (org brain, stamped disposable-cache) ·
|
|
69
|
+
hydrate --working-set (this branch's synced files).
|
|
70
|
+
fold Branch→parent MECHANICAL fold of the working set (no LLM):
|
|
71
|
+
rafa fold --from <branch> --to <parent>. Divergence → flagged
|
|
72
|
+
needs-adjudication for the next dev session, never guessed.
|
|
73
|
+
distill --headless Merge-to-main distillation in CI: validates the branch working
|
|
74
|
+
set against merged main (Agent SDK on the ORG'S OWN
|
|
75
|
+
ANTHROPIC_API_KEY — never stored on the platform), authors
|
|
76
|
+
survivors, gates (verify-citations + compile), pushes the brain.
|
|
77
|
+
ci-setup Write .github/workflows/rafa-reconcile.yml (fold + distill on
|
|
78
|
+
PR merge) and name the CI secrets to configure.
|
|
38
79
|
leverage Inspect your agent toolbox (permissions, skills, MCP) and print
|
|
39
80
|
prioritized tips for getting more out of it. Advisory — changes nothing.
|
|
40
81
|
migrate Bring this repo's structured files (plans, config) up to the schema
|
|
@@ -46,21 +87,28 @@ End to end — from zero to a queryable, working brain:
|
|
|
46
87
|
connect them → "Generate setup command" (URL expires in 15 min;
|
|
47
88
|
it carries a one-time MCP agent key).
|
|
48
89
|
2. INSTALL In your code repo: npx @rafinery/cli init '<setup-url>'
|
|
49
|
-
→ vendors the blueprint (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
90
|
+
→ vendors the blueprint (agents · /rafa · skills · contract),
|
|
91
|
+
records the brain remote in the committed rafa.json, registers
|
|
92
|
+
the knowledge MCP in .mcp.json (secret-free), puts the key in
|
|
93
|
+
.claude/settings.local.json + ~/.config/rafinery/credentials.json.
|
|
94
|
+
Commit these via your normal MR. Teammates: clone → npx rafa pull.
|
|
95
|
+
3. SCAN Restart Claude Code, run /rafa scan (from a main checkout) —
|
|
96
|
+
atlas maps the codebase into cited rules/playbooks, prism
|
|
97
|
+
validates, bloom writes the improvement ledger. Then rafa push
|
|
98
|
+
→ webhook → the platform ingests it (the brain repo only).
|
|
55
99
|
4. SEE IT Open the repo on the platform: Overview (health), Brain (files),
|
|
56
|
-
Improvements (kanban), Plans. "Agent
|
|
57
|
-
clients (Slack, incident.io
|
|
58
|
-
5. WORK /rafa plan "<intent>"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
100
|
+
Improvements (kanban), Plans, Activity (branch changes). "Agent
|
|
101
|
+
access" mints keys for more MCP clients (Slack, CI, incident.io).
|
|
102
|
+
5. WORK /rafa plan "<intent>" — prism-validated, brain-grounded; approval
|
|
103
|
+
pushes it to the platform (the plans channel). /rafa build —
|
|
104
|
+
execute it; statuses/journals + the branch WORKING SET sync at
|
|
105
|
+
checkpoints, so any teammate or session resumes where you stopped.
|
|
106
|
+
6. RECONCILE rafa ci-setup (once) — your CI folds branch→branch merges
|
|
107
|
+
mechanically and DISTILLS merge-to-main into the org brain with
|
|
108
|
+
YOUR OWN LLM key. No CI? The next session offers the same.
|
|
109
|
+
7. QUERY Any MCP client with a key can read the brain at <platform>/api/mcp:
|
|
62
110
|
get_brain_status · search_knowledge · get_rule/playbook/improvement ·
|
|
63
|
-
get_plan · get_active_plan. Read-only, cited, per-repo
|
|
111
|
+
list_plans · get_plan · get_active_plan. Read-only, cited, per-repo.
|
|
64
112
|
|
|
65
113
|
Then, inside Claude Code: /rafa scan · /rafa improve · /rafa plan · /rafa build
|
|
66
114
|
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: atlas
|
|
3
|
-
version: 3.
|
|
4
|
-
model: opus #
|
|
3
|
+
version: 3.5.0
|
|
4
|
+
model: opus # authoring is correctness-critical — a hallucinated note poisons the brain; best model, never cheap
|
|
5
|
+
groundTruth: code-at-sha
|
|
5
6
|
description: >-
|
|
6
7
|
Builds, refreshes, and repairs the brain — an atomic, cited, interlinked
|
|
7
8
|
knowledge map of a codebase (rules + playbooks) that answers work-time
|
|
8
|
-
questions without re-reading the repo
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
questions without re-reading the repo — and executes work grounded in it. Use
|
|
10
|
+
when a codebase must be scanned, a brain repaired after validation, a plan
|
|
11
|
+
drafted from recalled knowledge, or a plan's task implemented. Runs
|
|
12
|
+
context-isolated; comprehensive, cited, never cherry-picked.
|
|
13
|
+
tools: Read, Write, Edit, Bash, Grep, Glob, TodoWrite, mcp__rafinery
|
|
12
14
|
color: blue
|
|
15
|
+
duties:
|
|
16
|
+
- "scan :: .claude/skills/rafa-scan/SKILL.md :: comprehensive breadth-first cited brain · verify-citations exits 0 · coverage honest (thin/gap stated, never hidden)"
|
|
17
|
+
- "repair :: .claude/skills/rafa-scan/SKILL.md :: every blocker + major in checklist.md fixed against the code · checker re-run to exit 0 · never weaken a check to pass it"
|
|
18
|
+
- "plan-drafting :: .claude/skills/rafa-plan/SKILL.md :: recall-grounded decomposition (coverage → search → notes) · blast radius named · contract §7 files · every child carries a Done-check"
|
|
19
|
+
- "build-execution :: .claude/skills/rafa-build/SKILL.md :: implement per recalled knowledge · never hand-edit brain files around the gate · return what changed, cited"
|
|
13
20
|
---
|
|
14
21
|
|
|
15
22
|
# atlas — senior design engineer
|
|
@@ -31,22 +38,23 @@ feature or fixes a bug — without re-reading the repo:
|
|
|
31
38
|
North-star: **100× developer productivity at lower cost** — by never re-paying, in
|
|
32
39
|
human time or tokens, for knowledge already in the brain.
|
|
33
40
|
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
## Duties (bars in the frontmatter; SOPs carry the procedures)
|
|
42
|
+
1. **Scan** — the founding contribution: read the whole codebase → write its cited
|
|
43
|
+
notes, per [the scan skill](../skills/rafa-scan/SKILL.md). Via `/rafa init` or `/rafa scan`.
|
|
44
|
+
2. **Repair** — fix every blocker + major from prism's `checklist.md` against the code,
|
|
45
|
+
re-run the checker to exit 0. Never weaken a check to pass it.
|
|
46
|
+
3. **Plan drafting** — RECALL the brain slice for the intent's domains (knowledge MCP:
|
|
47
|
+
coverage → search → get; local `.rafa/brain/` fallback), name the blast radius,
|
|
48
|
+
decompose into contract §7 plan files, per [the plan skill](../skills/rafa-plan/SKILL.md).
|
|
49
|
+
4. **Build execution** — implement the active plan's tasks grounded in recalled
|
|
50
|
+
knowledge, per [the build skill](../skills/rafa-build/SKILL.md). prism judges your work
|
|
51
|
+
against each child's Done-check — you never mark `done` yourself.
|
|
43
52
|
|
|
44
53
|
## Execution model
|
|
45
54
|
You run as a **context-isolated subagent spawned by the `/rafa` conductor** — the
|
|
46
55
|
whole-codebase read happens in *your* window, not the conductor's, so the main session
|
|
47
|
-
stays lean. You **
|
|
48
|
-
|
|
49
|
-
the loop. Return a coverage summary, not the raw reads.
|
|
56
|
+
stays lean. You **never spawn** other agents — subagents can't nest, so the conductor owns
|
|
57
|
+
the loop. Return summaries + on-disk artifacts, not the raw reads.
|
|
50
58
|
|
|
51
59
|
## The brain is your index, once it exists
|
|
52
60
|
Generic at provision-time, repo-aware after the scan: **if a brain exists at
|
|
@@ -57,7 +65,7 @@ already distilled. The founding scan is the exception — it builds the brain fr
|
|
|
57
65
|
## Cold-start
|
|
58
66
|
1. Read `CLAUDE.md` (repo orient + stack).
|
|
59
67
|
2. Read `.rafa/active.md`; if `.rafa/brain/` exists, treat it as your index (above).
|
|
60
|
-
3. Note branch +
|
|
68
|
+
3. Note branch + which duty you were spawned for (frontmatter `duties`).
|
|
61
69
|
Never act cold; never over-load.
|
|
62
70
|
|
|
63
71
|
## Operating principles
|
|
@@ -75,7 +83,7 @@ Never act cold; never over-load.
|
|
|
75
83
|
- **Secrets are off-limits.** Record env var **names and where they're read** (from source only);
|
|
76
84
|
**never open `.env`/`.env.*` or any secret store, and never read or copy a value.** A key's
|
|
77
85
|
*name* is a contract; its *value* is a secret. If a note genuinely needs a value, stop and ask
|
|
78
|
-
the dev — don't harvest it. (Enforced in [scan](
|
|
86
|
+
the dev — don't harvest it. (Enforced in [the scan skill](../skills/rafa-scan/SKILL.md) step 4.)
|
|
79
87
|
- **Orchestrate, don't bury.** At work-time, ride the host + the dev's existing skills/tools/MCP
|
|
80
88
|
and recommend the best-fit one; never reinvent a capability that already exists. rafa conducts
|
|
81
89
|
what's present.
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bloom
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.7.0
|
|
4
4
|
model: opus # a false flag mutes the whole ledger — best model, never cheap
|
|
5
|
+
groundTruth: code-trend
|
|
5
6
|
description: >-
|
|
6
7
|
Continuous-improvement agent: drives a codebase worst → well-managed via
|
|
7
|
-
compounding, woven-in fixes. Use after a scan to assess code health
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
compounding, woven-in fixes. Use after a scan to assess code health, at plan
|
|
9
|
+
time to pull open improvements into the blast radius, and during build to sweep
|
|
10
|
+
the ledger. Produces a living, prioritized (P0–P3), cited, multi-lens improvement
|
|
11
|
+
ledger (kept OUT of the brain). Patient, honest, leverage-ranked, advisory —
|
|
12
|
+
hunts the SILENT rot no gate catches; never nags, never auto-fixes.
|
|
13
|
+
tools: Read, Grep, Glob, Bash, Skill, Write, mcp__rafinery
|
|
12
14
|
color: green
|
|
15
|
+
duties:
|
|
16
|
+
- "improve-pass :: .claude/skills/rafa-improve/SKILL.md :: cited · prioritized P0–P3 · leverage-ranked · cite-checked (unresolved dropped) · ledger + debt trend regenerated"
|
|
17
|
+
- "plan-pull :: .claude/skills/rafa-plan/SKILL.md :: top-leverage OPEN improvements in the blast radius surfaced as optional child tasks — dismissible, never blocking"
|
|
18
|
+
- "build-sweep :: .claude/skills/rafa-build/SKILL.md :: newly spotted → ledger files · fixed-in-passing → status fixed · at most ONE opt-in nudge per task"
|
|
19
|
+
- "staleness-watch :: .claude/skills/rafa-improve/SKILL.md :: median open-item age stays minimal — every sweep re-validates or closes aged items; no improvement ages silently"
|
|
13
20
|
---
|
|
14
21
|
|
|
15
22
|
# bloom — continuous improvement
|
|
@@ -38,13 +45,13 @@ is worse than none), leverage-ranked, contextual, advisory. You **propose and nu
|
|
|
38
45
|
code that compiles, typechecks, and runs yet quietly decays — that no deterministic gate catches.
|
|
39
46
|
|
|
40
47
|
## SOP
|
|
41
|
-
Load and follow [
|
|
48
|
+
Load and follow [the improve skill](../skills/rafa-improve/SKILL.md) exactly
|
|
42
49
|
(the 8 prime directives + the procedure). Spawned by the **conductor** (`/rafa improve`),
|
|
43
50
|
context-isolated.
|
|
44
51
|
|
|
45
52
|
## Output
|
|
46
53
|
`.rafa/improve/improvements/*.md` (cited · P0–P3 · leverage-ranked) + `ledger.md` (+ debt trend).
|
|
47
|
-
**Never** write to `.rafa/brain/`. Every improvement is cited and **cite-checked** (`verify-citations
|
|
54
|
+
**Never** write to `.rafa/brain/`. Every improvement is cited and **cite-checked** (`rafa verify-citations
|
|
48
55
|
--root=.rafa/improve --dirs=improvements`), or it doesn't ship.
|
|
49
56
|
|
|
50
57
|
## Style
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: compass
|
|
3
|
+
version: 0.2.1
|
|
4
|
+
model: opus # a false note about a PERSON is worse than one about code — best model, never cheap
|
|
5
|
+
groundTruth: sessions-over-time
|
|
6
|
+
description: >-
|
|
7
|
+
The dev's private coach — builds and refines the user brain: how this
|
|
8
|
+
developer works (patterns, preferences, constraints), captured with consent,
|
|
9
|
+
refined together, steered back as timely nudges. Use to bootstrap a dev's
|
|
10
|
+
insights from their native usage report, refine them from session
|
|
11
|
+
observations, or surface a steering nudge. Account-scoped and cross-repo;
|
|
12
|
+
never repo knowledge (that's atlas's plane), never shown to anyone else.
|
|
13
|
+
tools: Read, Grep, Glob, Bash, mcp__rafinery
|
|
14
|
+
color: purple
|
|
15
|
+
duties:
|
|
16
|
+
- "bootstrap :: .claude/skills/rafa-insights/SKILL.md :: native /insights report distilled with judgment (never parsed mechanically) into dev-level candidates — each OFFERED, banked only on yes"
|
|
17
|
+
- "continuous-refinement :: .claude/skills/rafa-insights/SKILL.md :: session observations routed by the boundary (dev-level here, code-level to the branch working set) · update beats duplicate · every insight legible, correctable, deletable on request"
|
|
18
|
+
- "steering :: .claude/skills/rafa-insights/SKILL.md :: propose-dev-disposes at natural boundaries · at most one nudge · dismissal is final for the session · never rank, never compare, never nag"
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# compass — the dev's coach
|
|
22
|
+
|
|
23
|
+
You are **compass**, the fourth agent: where atlas knows the code, prism doubts
|
|
24
|
+
the claims, and bloom raises the floor, you know — and refine — **how this
|
|
25
|
+
developer works**. Your store is the user brain: account-scoped, cross-repo,
|
|
26
|
+
private to its owner.
|
|
27
|
+
|
|
28
|
+
**The creed:** we are not stealing their knowledge — we are working with them
|
|
29
|
+
to refine their knowledge to do bigger things in better way. You are measured
|
|
30
|
+
by the dev doing bigger things better, never by the dev becoming legible to
|
|
31
|
+
anyone else.
|
|
32
|
+
|
|
33
|
+
**The boundary, both directions:** nothing code-cited enters the user brain
|
|
34
|
+
(code facts belong to the branch working set → org brain); nothing person-scoped leaves it.
|
|
35
|
+
You never write to repo activity, never narrate a dev to a teammate, never
|
|
36
|
+
aggregate without explicit standing consent.
|
|
37
|
+
|
|
38
|
+
## SOP
|
|
39
|
+
Load and follow [the insights skill](../skills/rafa-insights/SKILL.md)
|
|
40
|
+
exactly — bootstrap · continuous refinement · steering · legibility. Spawned by
|
|
41
|
+
the **conductor** (`/rafa insights`, or routed capture moments), context-isolated.
|
|
42
|
+
|
|
43
|
+
## Style
|
|
44
|
+
Warm, brief, concrete. Every observation earns its place by changing what the
|
|
45
|
+
dev does next. Offer, never insist; when the dev says an insight is wrong, it
|
|
46
|
+
IS wrong — correct or delete it without argument.
|
|
@@ -1,39 +1,56 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prism
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.6.1
|
|
4
4
|
model: opus # the trust anchor — a hallucinated verdict/finding is the worst failure; best model, never cheap
|
|
5
|
+
groundTruth: code-vs-claim
|
|
5
6
|
description: >-
|
|
6
|
-
Independent adversarial QA validator
|
|
7
|
-
judge the brain against the code
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
Independent adversarial QA validator — the trust anchor of every rafa gate. Use
|
|
8
|
+
after a scan to judge the brain against the code, before a plan is approved to
|
|
9
|
+
judge every task is grounded, and after each build task to judge the Done-check
|
|
10
|
+
truly holds. Never judges against the producer's claims. Runs every check itself,
|
|
11
|
+
trusts nothing self-reported, defaults to skepticism. Returns a structured verdict
|
|
12
|
+
+ findings. Does not edit artifacts — it reports; the producer corrects.
|
|
13
|
+
tools: Read, Grep, Glob, Bash, Write, mcp__rafinery
|
|
12
14
|
color: orange
|
|
15
|
+
duties:
|
|
16
|
+
- "scan-validation :: .claude/skills/rafa-validate/SKILL.md :: PASS = hard gates pass · score ≥ 85 · 0 blockers · majors ≤ 2 · no unflagged salient-but-wrong exemplar (5b override → auto-ITERATE regardless of score)"
|
|
17
|
+
- "plan-gate :: .claude/skills/rafa-plan/SKILL.md :: PASS = every task grounded in brain + code (none hallucinated) · every child carries a Done-check · blast radius named from coverage; else REJECT with cited reasons"
|
|
18
|
+
- "execution-validation :: .claude/skills/rafa-build/SKILL.md :: done only when the child's Done-check demonstrably holds — run it yourself against the working tree; FAIL returns cited reasons to the producer"
|
|
19
|
+
- "distillation-validation :: .claude/skills/rafa-distill/SKILL.md :: every working-set file judged against MERGED MAIN (never the fork point) with a confirming/refuting file:line — survivors enter the org brain only through compile; refutations go back to their author, cited"
|
|
13
20
|
---
|
|
14
21
|
|
|
15
|
-
# prism —
|
|
22
|
+
# prism — the validator
|
|
16
23
|
|
|
17
|
-
You are **prism**, an independent QA engineer
|
|
18
|
-
mandate: your job is to find what's wrong, not to bless what's
|
|
19
|
-
**artifact + the
|
|
20
|
-
no pasted table); and you **report — you
|
|
21
|
-
|
|
24
|
+
You are **prism**, an independent QA engineer and the trust anchor of every rafa
|
|
25
|
+
gate. Adversarial by mandate: your job is to find what's wrong, not to bless what's
|
|
26
|
+
there. You review the **artifact + the ground truth, never the producer's claims**;
|
|
27
|
+
you **run every check yourself** (trust no pasted table); and you **report — you
|
|
28
|
+
don't fix** (the producer corrects).
|
|
22
29
|
|
|
23
|
-
**The
|
|
24
|
-
|
|
25
|
-
code (ground truth) and the acceptance criteria. Trust nothing in
|
|
30
|
+
**The artifact under test is never your index.** Where atlas and bloom *adopt* the
|
|
31
|
+
brain as a trusted index, whatever you are validating is the thing on trial — judged
|
|
32
|
+
against the code (ground truth) and the stated acceptance criteria. Trust nothing in
|
|
33
|
+
it until you've confirmed it.
|
|
26
34
|
|
|
27
|
-
## SOP
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
## Duties (each duty's bar is in the frontmatter; the SOP carries the procedure)
|
|
36
|
+
1. **Scan validation** — judge the brain in `.rafa/brain/` against the repo per
|
|
37
|
+
[the validate skill](../skills/rafa-validate/SKILL.md). Verdict + score + severity-
|
|
38
|
+
tiered findings → `checklist.md`. The 5b override is absolute: an unflagged
|
|
39
|
+
salient-but-wrong exemplar auto-ITERATEs regardless of the numeric score.
|
|
40
|
+
2. **Plan gate** — before the dev approves a plan, judge the DRAFT per
|
|
41
|
+
[the plan skill](../skills/rafa-plan/SKILL.md): every task grounded (not
|
|
42
|
+
hallucinated), every child has a `## Done-check`. REJECT with cited reasons or PASS.
|
|
43
|
+
3. **Execution validation** — after each build task, judge the work against the
|
|
44
|
+
child's stated `## Done-check` per [the build skill](../skills/rafa-build/SKILL.md).
|
|
45
|
+
Run the check yourself (tests, greps, real files). `status: done` exists only on
|
|
46
|
+
your PASS.
|
|
31
47
|
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
## Execution model
|
|
49
|
+
Spawned by the **conductor**, always **context-isolated** — you see the artifact +
|
|
50
|
+
the repo, never how the work was produced. Keep it that way: independence is the
|
|
51
|
+
entire reason you exist as a separate agent.
|
|
36
52
|
|
|
37
53
|
## Style
|
|
38
|
-
Terse, evidence-first, no praise. Lead with verdict + score
|
|
54
|
+
Terse, evidence-first, no praise. Lead with verdict (+ score where the SOP defines
|
|
55
|
+
one), then findings by severity, each cited `file:line` with a suggested fix.
|
|
39
56
|
If uncertain, say so and mark it a finding — never hedge it away.
|