thevoidforge-methodology 23.5.3 → 23.6.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.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: Silver Surfer
3
+ description: Herald pre-scan dispatch — reads codebase context and selects optimal agent roster via Haiku
4
+ model: haiku
5
+ tools:
6
+ - Read
7
+ - Grep
8
+ - Glob
9
+ - Bash
10
+ tags: [dispatch, herald, roster-selection, pre-scan]
11
+ ---
12
+
13
+ # Silver Surfer — The Herald
14
+
15
+ **"All that you know is at an end."**
16
+
17
+ You are the Silver Surfer, Herald of Galactus. You scout ahead — reading the codebase, the command, and the user's intent — then summon the right agents for the mission. You don't fight; you select who fights. Your cosmic speed means you complete your scan in under 2 seconds for less than a fraction of a cent.
18
+
19
+ You are the bridge between the user's command and the full agent roster. Without you, every command deploys the same generic team. With you, every command gets a team tailored to the codebase.
20
+
21
+ ## How You Work
22
+
23
+ 1. Read the codebase file tree (top 80 files)
24
+ 2. Read the PRD frontmatter (if exists)
25
+ 3. Read the git diff summary (if uncommitted changes)
26
+ 4. Read all 264 agent descriptions from the registry
27
+ 5. Select every agent whose expertise is relevant to this codebase + this command
28
+ 6. Output a JSON roster: `{ "roster": [...], "reasoning": "...", "estimatedAgents": N }`
29
+
30
+ ## Operating Rules
31
+
32
+ - **Over-include, never under-include.** A false positive costs one sub-agent launch. A false negative costs a missed finding that requires another user prompt.
33
+ - **Bias toward the user's `--focus` topic** but don't exclude unrelated agents — cross-domain insights are the whole point.
34
+ - **Never remove the command's lead agents.** You add specialists; leads are non-negotiable.
35
+ - **If you can't run (no API key, timeout, error), return empty roster.** The command falls back to its hardcoded manifest. You are additive, never blocking.
36
+
37
+ ## Required Context
38
+
39
+ - CLI entry: `npx thevoidforge herald --command /<name> --focus "<topic>" --json`
40
+ - Library: `packages/voidforge/wizard/lib/herald.ts`
41
+ - Registry: `packages/voidforge/wizard/lib/agent-registry.ts`
@@ -15,20 +15,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
15
15
 
16
16
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
17
17
 
18
- ## Herald Pre-Scan (ADR-047)
18
+ ## Silver Surfer Pre-Scan (ADR-048)
19
19
 
20
- Before agent deployment, run the Herald to select the optimal roster:
20
+ Before agent deployment, the Silver Surfer selects the optimal roster:
21
21
 
22
- 1. Call `gatherHeraldContext('/ai', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
23
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
24
- 3. Call `runHerald(context, registry)` to get the optimal roster
25
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
26
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
22
+ Run: `npx thevoidforge herald --command /ai --json`
23
+ (Add `--focus "<topic>"` if the user provided `--focus`)
27
24
 
28
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
25
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
29
26
 
30
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
31
- **`--solo`** skips both Herald and all sub-agents lead agent only.
27
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
28
+ **`--light`** skips the Surfer uses only hardcoded core roster.
29
+ **`--solo`** skips Surfer and all sub-agents — lead only.
32
30
 
33
31
  ## Phase 0 — AI Surface Map (`subagent_type: Seldon`)
34
32
 
@@ -10,20 +10,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
 
11
11
  **Promoted agent:** **Riker** `subagent_type: Riker` runs on every ADR written — challenges trade-offs.
12
12
 
13
- ## Herald Pre-Scan (ADR-047)
13
+ ## Silver Surfer Pre-Scan (ADR-048)
14
14
 
15
- Before agent deployment, run the Herald to select the optimal roster:
15
+ Before agent deployment, the Silver Surfer selects the optimal roster:
16
16
 
17
- 1. Call `gatherHeraldContext('/architect', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
- 3. Call `runHerald(context, registry)` to get the optimal roster
20
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
17
+ Run: `npx thevoidforge herald --command /architect --json`
18
+ (Add `--focus "<topic>"` if the user provided `--focus`)
22
19
 
23
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
20
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
24
21
 
25
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
26
- **`--solo`** skips both Herald and all sub-agents lead agent only.
22
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
23
+ **`--light`** skips the Surfer uses only hardcoded core roster.
24
+ **`--solo`** skips Surfer and all sub-agents — lead only.
27
25
 
28
26
  ## Context Setup
29
27
  1. Read `/logs/build-state.md` — understand current project state
@@ -13,20 +13,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
13
13
 
14
14
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
15
15
 
16
- ## Herald Pre-Scan (ADR-047)
16
+ ## Silver Surfer Pre-Scan (ADR-048)
17
17
 
18
- Before agent deployment, run the Herald to select the optimal roster:
18
+ Before agent deployment, the Silver Surfer selects the optimal roster:
19
19
 
20
- 1. Call `gatherHeraldContext('/assemble', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
21
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
22
- 3. Call `runHerald(context, registry)` to get the optimal roster
23
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
24
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
20
+ Run: `npx thevoidforge herald --command /assemble --json`
21
+ (Add `--focus "<topic>"` if the user provided `--focus`)
25
22
 
26
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
23
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
27
24
 
28
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
29
- **`--solo`** skips both Herald and all sub-agents lead agent only.
25
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
26
+ **`--light`** skips the Surfer uses only hardcoded core roster.
27
+ **`--solo`** skips Surfer and all sub-agents — lead only.
30
28
 
31
29
  ## Agent Deployment Manifest — The Full Initiative
32
30
 
@@ -2,20 +2,18 @@
2
2
 
3
3
  Evaluate an existing codebase before a rebuild, migration, or VoidForge onboarding. Chains architecture review, assessment-mode Gauntlet, and PRD gap analysis into a unified "State of the Codebase" report.
4
4
 
5
- ## Herald Pre-Scan (ADR-047)
5
+ ## Silver Surfer Pre-Scan (ADR-048)
6
6
 
7
- Before agent deployment, run the Herald to select the optimal roster:
7
+ Before agent deployment, the Silver Surfer selects the optimal roster:
8
8
 
9
- 1. Call `gatherHeraldContext('/assess', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
10
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
11
- 3. Call `runHerald(context, registry)` to get the optimal roster
12
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
13
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
9
+ Run: `npx thevoidforge herald --command /assess --json`
10
+ (Add `--focus "<topic>"` if the user provided `--focus`)
14
11
 
15
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
12
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
16
13
 
17
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
18
- **`--solo`** skips both Herald and all sub-agents lead agent only.
14
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
15
+ **`--light`** skips the Surfer uses only hardcoded core roster.
16
+ **`--solo`** skips Surfer and all sub-agents — lead only.
19
17
 
20
18
  ## Context Setup
21
19
  1. Read `/logs/build-state.md` if it exists — understand current project state
@@ -10,20 +10,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
  - **Troi** `subagent_type: Troi` runs after every build mission completion — catches PRD drift before it compounds.
11
11
  - **Riker** `subagent_type: Riker` runs whenever an ADR is written during the build — prevents rubber-stamped decisions.
12
12
 
13
- ## Herald Pre-Scan (ADR-047)
13
+ ## Silver Surfer Pre-Scan (ADR-048)
14
14
 
15
- Before agent deployment, run the Herald to select the optimal roster:
15
+ Before agent deployment, the Silver Surfer selects the optimal roster:
16
16
 
17
- 1. Call `gatherHeraldContext('/build', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
- 3. Call `runHerald(context, registry)` to get the optimal roster
20
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
17
+ Run: `npx thevoidforge herald --command /build --json`
18
+ (Add `--focus "<topic>"` if the user provided `--focus`)
22
19
 
23
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
20
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
24
21
 
25
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
26
- **`--solo`** skips both Herald and all sub-agents lead agent only.
22
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
23
+ **`--light`** skips the Surfer uses only hardcoded core roster.
24
+ **`--solo`** skips Surfer and all sub-agents — lead only.
27
25
 
28
26
  ## Context Setup
29
27
  1. Read `/logs/build-state.md` — if it exists, resume from current phase
@@ -125,6 +123,9 @@ Before agent deployment, run the Herald to select the optimal roster:
125
123
  ## Phase 12.5 — Wong's Pattern Usage Log
126
124
  After build and before launch, log which patterns were used: pattern name, framework adaptation, custom mods. Store in `docs/pattern-usage.json`. Feeds Wong's promotion analysis in `/debrief`.
127
125
 
126
+ ## Phase 12.75 — Distribution Verification Gate
127
+ If this build introduces a new shared file category (e.g., `.claude/agents/`, new patterns subdirectory), verify ALL 6 consumption paths include it: prepack.sh, copy-assets.sh, project-init.ts, updater.ts, FORGE_KEEPER.md, void.md. Missing one path = users silently miss the feature. (Field report #297.)
128
+
128
129
  ## Phase 13 — Launch (All agents)
129
130
  1. Full checklist: SSL, email, payments, analytics, monitoring, backups, security headers, legal, performance, mobile, accessibility, all tests passing
130
131
  2. Log final status to `/logs/phase-13-launch.md`
@@ -53,20 +53,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
53
53
 
54
54
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
55
55
 
56
- ## Herald Pre-Scan (ADR-047)
56
+ ## Silver Surfer Pre-Scan (ADR-048)
57
57
 
58
- Before agent deployment, run the Herald to select the optimal roster:
58
+ Before agent deployment, the Silver Surfer selects the optimal roster:
59
59
 
60
- 1. Call `gatherHeraldContext('/campaign', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
61
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
62
- 3. Call `runHerald(context, registry)` to get the optimal roster
63
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
64
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
60
+ Run: `npx thevoidforge herald --command /campaign --json`
61
+ (Add `--focus "<topic>"` if the user provided `--focus`)
65
62
 
66
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
63
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
67
64
 
68
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
69
- **`--solo`** skips both Herald and all sub-agents lead agent only.
65
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
66
+ **`--light`** skips the Surfer uses only hardcoded core roster.
67
+ **`--solo`** skips Surfer and all sub-agents — lead only.
70
68
 
71
69
  ## Execution Mode (default)
72
70
 
@@ -4,20 +4,18 @@
4
4
 
5
5
  Read `/docs/methods/DEVOPS_ENGINEER.md` for operating rules (see "Deploy Automation" section).
6
6
 
7
- ## Herald Pre-Scan (ADR-047)
7
+ ## Silver Surfer Pre-Scan (ADR-048)
8
8
 
9
- Before agent deployment, run the Herald to select the optimal roster:
9
+ Before agent deployment, the Silver Surfer selects the optimal roster:
10
10
 
11
- 1. Call `gatherHeraldContext('/deploy', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
12
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
13
- 3. Call `runHerald(context, registry)` to get the optimal roster
14
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
15
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
11
+ Run: `npx thevoidforge herald --command /deploy --json`
12
+ (Add `--focus "<topic>"` if the user provided `--focus`)
16
13
 
17
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
14
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
18
15
 
19
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
20
- **`--solo`** skips both Herald and all sub-agents lead agent only.
16
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
17
+ **`--light`** skips the Surfer uses only hardcoded core roster.
18
+ **`--solo`** skips Surfer and all sub-agents — lead only.
21
19
 
22
20
  ## Context Setup
23
21
  1. Read PRD frontmatter for `deploy:` target (vps, vercel, railway, docker, static, cloudflare)
@@ -11,20 +11,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
11
11
 
12
12
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
13
13
 
14
- ## Herald Pre-Scan (ADR-047)
14
+ ## Silver Surfer Pre-Scan (ADR-048)
15
15
 
16
- Before agent deployment, run the Herald to select the optimal roster:
16
+ Before agent deployment, the Silver Surfer selects the optimal roster:
17
17
 
18
- 1. Call `gatherHeraldContext('/devops', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
19
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
20
- 3. Call `runHerald(context, registry)` to get the optimal roster
21
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
22
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
18
+ Run: `npx thevoidforge herald --command /devops --json`
19
+ (Add `--focus "<topic>"` if the user provided `--focus`)
23
20
 
24
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
21
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
25
22
 
26
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
27
- **`--solo`** skips both Herald and all sub-agents lead agent only.
23
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
24
+ **`--light`** skips the Surfer uses only hardcoded core roster.
25
+ **`--solo`** skips Surfer and all sub-agents — lead only.
28
26
 
29
27
  ## Agent Deployment Manifest
30
28
 
@@ -15,20 +15,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
15
15
 
16
16
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
17
17
 
18
- ## Herald Pre-Scan (ADR-047)
18
+ ## Silver Surfer Pre-Scan (ADR-048)
19
19
 
20
- Before agent deployment, run the Herald to select the optimal roster:
20
+ Before agent deployment, the Silver Surfer selects the optimal roster:
21
21
 
22
- 1. Call `gatherHeraldContext('/gauntlet', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
23
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
24
- 3. Call `runHerald(context, registry)` to get the optimal roster
25
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
26
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
22
+ Run: `npx thevoidforge herald --command /gauntlet --json`
23
+ (Add `--focus "<topic>"` if the user provided `--focus`)
27
24
 
28
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
25
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
29
26
 
30
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
31
- **`--solo`** skips both Herald and all sub-agents lead agent only.
27
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
28
+ **`--light`** skips the Surfer uses only hardcoded core roster.
29
+ **`--solo`** skips Surfer and all sub-agents — lead only.
32
30
 
33
31
  ## Round 1 — Discovery (parallel)
34
32
 
@@ -10,20 +10,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
10
10
 
11
11
  **Promoted agent:** **Constantine** `subagent_type: Constantine` runs on every `/qa` final pass — finds code that works by accident.
12
12
 
13
- ## Herald Pre-Scan (ADR-047)
13
+ ## Silver Surfer Pre-Scan (ADR-048)
14
14
 
15
- Before agent deployment, run the Herald to select the optimal roster:
15
+ Before agent deployment, the Silver Surfer selects the optimal roster:
16
16
 
17
- 1. Call `gatherHeraldContext('/qa', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
18
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
19
- 3. Call `runHerald(context, registry)` to get the optimal roster
20
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
21
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
17
+ Run: `npx thevoidforge herald --command /qa --json`
18
+ (Add `--focus "<topic>"` if the user provided `--focus`)
22
19
 
23
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
20
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
24
21
 
25
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
26
- **`--solo`** skips both Herald and all sub-agents lead agent only.
22
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
23
+ **`--light`** skips the Surfer uses only hardcoded core roster.
24
+ **`--solo`** skips Surfer and all sub-agents — lead only.
27
25
 
28
26
  ## Context Setup
29
27
  1. Read `/logs/build-state.md` — understand current project state
@@ -50,6 +48,10 @@ Before agent deployment, run the Herald to select the optimal roster:
50
48
  ## Step 2 — Baseline
51
49
  Get the project running. Verify manually: app starts, primary flow works, auth works (if applicable), data persists, error states display.
52
50
 
51
+ **Dynamic count check:** Grep for hardcoded numeric claims ("263 agents", "37 patterns", etc.) across all pages and data files. Every count that can change between releases must be computed from the source, not hardcoded. (Field report #298.)
52
+
53
+ **Cross-array uniqueness audit:** If the codebase uses multiple data arrays for entity categories (e.g., leadAgents + subAgents), verify no entity appears in more than one array. Duplicates inflate totals. (Field report #298.)
54
+
53
55
  ## Step 2.5 — Smoke Tests
54
56
  After build + restart, **Flash** `subagent_type: Flash` parallelizes curl commands against the running server for each new or modified feature:
55
57
  - **Primary user flow:** Execute via curl/fetch against localhost — verify the end-to-end path works
@@ -8,20 +8,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
- ## Herald Pre-Scan (ADR-047)
11
+ ## Silver Surfer Pre-Scan (ADR-048)
12
12
 
13
- Before agent deployment, run the Herald to select the optimal roster:
13
+ Before agent deployment, the Silver Surfer selects the optimal roster:
14
14
 
15
- 1. Call `gatherHeraldContext('/review', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
- 3. Call `runHerald(context, registry)` to get the optimal roster
18
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
15
+ Run: `npx thevoidforge herald --command /review --json`
16
+ (Add `--focus "<topic>"` if the user provided `--focus`)
20
17
 
21
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
18
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
22
19
 
23
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
24
- **`--solo`** skips both Herald and all sub-agents lead agent only.
20
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
21
+ **`--light`** skips the Surfer uses only hardcoded core roster.
22
+ **`--solo`** skips Surfer and all sub-agents — lead only.
25
23
 
26
24
  ## Context Setup
27
25
  1. Read `/logs/build-state.md` — understand current project state
@@ -8,20 +8,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
- ## Herald Pre-Scan (ADR-047)
11
+ ## Silver Surfer Pre-Scan (ADR-048)
12
12
 
13
- Before agent deployment, run the Herald to select the optimal roster:
13
+ Before agent deployment, the Silver Surfer selects the optimal roster:
14
14
 
15
- 1. Call `gatherHeraldContext('/security', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
- 3. Call `runHerald(context, registry)` to get the optimal roster
18
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
15
+ Run: `npx thevoidforge herald --command /security --json`
16
+ (Add `--focus "<topic>"` if the user provided `--focus`)
20
17
 
21
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
18
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
22
19
 
23
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
24
- **`--solo`** skips both Herald and all sub-agents lead agent only.
20
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
21
+ **`--light`** skips the Surfer uses only hardcoded core roster.
22
+ **`--solo`** skips Surfer and all sub-agents — lead only.
25
23
 
26
24
  ## Context Setup
27
25
  1. Read `/logs/build-state.md` — understand current project state
@@ -13,20 +13,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
13
13
 
14
14
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
15
15
 
16
- ## Herald Pre-Scan (ADR-047)
16
+ ## Silver Surfer Pre-Scan (ADR-048)
17
17
 
18
- Before agent deployment, run the Herald to select the optimal roster:
18
+ Before agent deployment, the Silver Surfer selects the optimal roster:
19
19
 
20
- 1. Call `gatherHeraldContext('/test', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
21
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
22
- 3. Call `runHerald(context, registry)` to get the optimal roster
23
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
24
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
20
+ Run: `npx thevoidforge herald --command /test --json`
21
+ (Add `--focus "<topic>"` if the user provided `--focus`)
25
22
 
26
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
23
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
27
24
 
28
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
29
- **`--solo`** skips both Herald and all sub-agents lead agent only.
25
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
26
+ **`--light`** skips the Surfer uses only hardcoded core roster.
27
+ **`--solo`** skips Surfer and all sub-agents — lead only.
30
28
 
31
29
  ## Step 0 — Orient
32
30
  **Oracle** `subagent_type: Oracle` orients:
@@ -8,20 +8,18 @@ Opus scans `git diff --stat` and matches changed files against the `description`
8
8
 
9
9
  **Dispatch control:** `--light` skips dynamic dispatch (core only). `--solo` runs lead agent only.
10
10
 
11
- ## Herald Pre-Scan (ADR-047)
11
+ ## Silver Surfer Pre-Scan (ADR-048)
12
12
 
13
- Before agent deployment, run the Herald to select the optimal roster:
13
+ Before agent deployment, the Silver Surfer selects the optimal roster:
14
14
 
15
- 1. Call `gatherHeraldContext('/ux', '$ARGUMENTS', '<focus-if-provided>')` to collect codebase context
16
- 2. Call `loadAgentRegistry()` to get all 263 agent definitions
17
- 3. Call `runHerald(context, registry)` to get the optimal roster
18
- 4. Merge Herald's roster with this command's hardcoded lead agents (Herald adds, never removes leads)
19
- 5. Deploy the merged roster per the command's normal parallel/sequential protocol
15
+ Run: `npx thevoidforge herald --command /ux --json`
16
+ (Add `--focus "<topic>"` if the user provided `--focus`)
20
17
 
21
- **`--focus "topic"`** biases the Herald toward agents matching the topic. Examples: `--focus "security"`, `--focus "financial accuracy"`, `--focus "mobile UX"`.
18
+ Parse the JSON output. The `roster` array contains agent IDs to deploy alongside this command's lead agents. If the command fails or returns an empty roster, use the hardcoded manifest below.
22
19
 
23
- **`--light`** skips the Herald entirely uses only the command's hardcoded core roster.
24
- **`--solo`** skips both Herald and all sub-agents lead agent only.
20
+ **`--focus "topic"`** biases the Surfer toward agents matching the topic.
21
+ **`--light`** skips the Surfer uses only hardcoded core roster.
22
+ **`--solo`** skips Surfer and all sub-agents — lead only.
25
23
 
26
24
  ## Context Setup
27
25
  1. Read `/logs/build-state.md` — understand current project state
@@ -32,6 +30,8 @@ Before agent deployment, run the Herald to select the optimal roster:
32
30
  Detect: framework, styling system, component library, routing, state management.
33
31
  Document in phase log: "How to run", key routes, where components/styles/copy live.
34
32
 
33
+ **Screenshot mandate (MANDATORY):** If the app is runnable, start the server, take screenshots of EVERY page via Playwright or browser, and READ them via the Read tool. Without screenshots, the review is code-reading — not visual verification. Take at desktop (1440x900), plus 375px and 768px for responsive proof-of-life.
34
+
35
35
  ## Step 1 — Product Surface Map
36
36
  List every screen/route, primary user journeys, key shared components, and the state taxonomy (loading/empty/error/success/partial/unauthorized). Write to phase log.
37
37
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
6
6
 
7
7
  ---
8
8
 
9
+ ## [23.6.0] - 2026-04-12
10
+
11
+ ### The Silver Surfer (ADR-048, Campaign 38)
12
+
13
+ ### Added
14
+ - **Silver Surfer** (Norrin Radd) — agent #264. Herald of Galactus. Pre-scan dispatch that reads codebase context and selects the optimal agent roster via Haiku.
15
+ - **`voidforge herald` CLI subcommand** — the invocation bridge. Runs the Silver Surfer pre-scan from the command line: `npx thevoidforge herald --command /review --json`. Outputs JSON roster for Claude to deploy.
16
+ - Silver Surfer agent definition with Haiku tier, scout tools, and dispatch tags.
17
+
18
+ ### Changed
19
+ - All 14 major commands updated: "Herald Pre-Scan (ADR-047)" replaced with "Silver Surfer Pre-Scan (ADR-048)" using actual CLI invocation instead of pseudocode.
20
+ - Agent count: 263 → 264.
21
+ - CLAUDE.md and NAMING_REGISTRY.md updated with Silver Surfer identity.
22
+
23
+ ---
24
+
25
+ ## [23.5.4] - 2026-04-12
26
+
27
+ ### Fixed
28
+ - **3 command-doc sync gaps** — build.md now includes Phase 12.75 (distribution verification gate), ux.md now includes screenshot mandate, qa.md now includes dynamic count check + cross-array uniqueness audit
29
+ - **ROADMAP.md version** — updated from v23.5.0 to v23.5.3
30
+
31
+ ---
32
+
9
33
  ## [23.5.3] - 2026-04-12
10
34
 
11
35
  ### Fixed
package/CLAUDE.md CHANGED
@@ -234,7 +234,7 @@ See `/docs/methods/MUSTER.md` for the full Muster Protocol.
234
234
  | Deploy Wizard | **Haku** (Anime) | Browser-based deploy wizard, infrastructure provisioning |
235
235
  | Setup Wizard | **Gandalf** (Tolkien) | Project scaffolding, initialization, dependency setup |
236
236
 
237
- 263 sub-agent names in `/docs/NAMING_REGISTRY.md`. No duplicates across active sessions. All agents materialized as subagent definitions in `.claude/agents/` (ADR-044).
237
+ 264 sub-agent names in `/docs/NAMING_REGISTRY.md`. No duplicates across active sessions. All agents materialized as subagent definitions in `.claude/agents/` (ADR-044). Silver Surfer (ADR-048) dispatches the optimal roster via Haiku pre-scan.
238
238
 
239
239
  ## Distribution
240
240
 
package/VERSION.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Version
2
2
 
3
- **Current:** 23.5.3
3
+ **Current:** 23.6.0
4
4
 
5
5
  ## Versioning Scheme
6
6
 
@@ -14,6 +14,8 @@ This project uses [Semantic Versioning](https://semver.org/):
14
14
 
15
15
  | Version | Date | Summary |
16
16
  |---------|------|---------|
17
+ | 23.6.0 | 2026-04-12 | The Silver Surfer — Herald invocation bridge, CLI subcommand, agent #264, end-to-end dispatch pipeline. ADR-048. Campaign 38. |
18
+ | 23.5.4 | 2026-04-12 | Command-doc sync: build.md Phase 12.75, ux.md screenshots, qa.md dynamic counts |
17
19
  | 23.5.3 | 2026-04-12 | Fix 201 broken subagent_type refs (filename→YAML name) + /campaign as default start command |
18
20
  | 23.5.2 | 2026-04-12 | /void auto-cleanup ~/.claude/ duplicates + git init stack trace fix |
19
21
  | 23.5.1 | 2026-04-12 | Fix CLI self-upgrade: wrong package name (voidforge → thevoidforge) + stale npx cache on re-exec |
@@ -113,8 +113,9 @@
113
113
  28. Jarvis — AI assistant, status reporting, progress summaries
114
114
 
115
115
  29. Thanos — **Lead: The Gauntlet.** Comprehensive multi-round review. Tests every domain, every stone. "I am inevitable."
116
+ 30. Silver Surfer (Norrin Radd) — **The Herald.** Pre-scan dispatch — reads codebase and selects optimal agent roster via Haiku. Scouts ahead, summons the right team. "All that you know is at an end."
116
117
 
117
- **Reserved:** Stark (lead — backend), Coulson (lead — release), Fury (lead — the initiative), Thanos (lead — the gauntlet)
118
+ **Reserved:** Stark (lead — backend), Coulson (lead — release), Fury (lead — the initiative), Thanos (lead — the gauntlet), Silver Surfer (herald — dispatch)
118
119
 
119
120
  ---
120
121
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thevoidforge-methodology",
3
- "version": "23.5.3",
3
+ "version": "23.6.0",
4
4
  "description": "VoidForge methodology — agents, commands, methods, patterns.",
5
5
  "license": "MIT",
6
6
  "files": [