thevoidforge 21.0.11 → 21.0.13

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.
Files changed (108) hide show
  1. package/dist/.claude/commands/ai.md +69 -0
  2. package/dist/.claude/commands/architect.md +121 -0
  3. package/dist/.claude/commands/assemble.md +201 -0
  4. package/dist/.claude/commands/assess.md +75 -0
  5. package/dist/.claude/commands/blueprint.md +135 -0
  6. package/dist/.claude/commands/build.md +116 -0
  7. package/dist/.claude/commands/campaign.md +201 -0
  8. package/dist/.claude/commands/cultivation.md +166 -0
  9. package/dist/.claude/commands/current.md +128 -0
  10. package/dist/.claude/commands/dangerroom.md +74 -0
  11. package/dist/.claude/commands/debrief.md +178 -0
  12. package/dist/.claude/commands/deploy.md +99 -0
  13. package/dist/.claude/commands/devops.md +143 -0
  14. package/dist/.claude/commands/gauntlet.md +140 -0
  15. package/dist/.claude/commands/git.md +104 -0
  16. package/dist/.claude/commands/grow.md +146 -0
  17. package/dist/.claude/commands/imagine.md +126 -0
  18. package/dist/.claude/commands/portfolio.md +50 -0
  19. package/dist/.claude/commands/prd.md +113 -0
  20. package/dist/.claude/commands/qa.md +107 -0
  21. package/dist/.claude/commands/review.md +151 -0
  22. package/dist/.claude/commands/security.md +100 -0
  23. package/dist/.claude/commands/test.md +96 -0
  24. package/dist/.claude/commands/thumper.md +116 -0
  25. package/dist/.claude/commands/treasury.md +100 -0
  26. package/dist/.claude/commands/ux.md +118 -0
  27. package/dist/.claude/commands/vault.md +189 -0
  28. package/dist/.claude/commands/void.md +108 -0
  29. package/dist/CHANGELOG.md +1918 -0
  30. package/dist/CLAUDE.md +250 -0
  31. package/dist/HOLOCRON.md +856 -0
  32. package/dist/VERSION.md +123 -0
  33. package/dist/docs/NAMING_REGISTRY.md +478 -0
  34. package/dist/docs/methods/AI_INTELLIGENCE.md +276 -0
  35. package/dist/docs/methods/ASSEMBLER.md +142 -0
  36. package/dist/docs/methods/BACKEND_ENGINEER.md +165 -0
  37. package/dist/docs/methods/BUILD_JOURNAL.md +185 -0
  38. package/dist/docs/methods/BUILD_PROTOCOL.md +426 -0
  39. package/dist/docs/methods/CAMPAIGN.md +568 -0
  40. package/dist/docs/methods/CONTEXT_MANAGEMENT.md +189 -0
  41. package/dist/docs/methods/DEEP_CURRENT.md +184 -0
  42. package/dist/docs/methods/DEVOPS_ENGINEER.md +295 -0
  43. package/dist/docs/methods/FIELD_MEDIC.md +261 -0
  44. package/dist/docs/methods/FORGE_ARTIST.md +108 -0
  45. package/dist/docs/methods/FORGE_KEEPER.md +268 -0
  46. package/dist/docs/methods/GAUNTLET.md +344 -0
  47. package/dist/docs/methods/GROWTH_STRATEGIST.md +466 -0
  48. package/dist/docs/methods/HEARTBEAT.md +168 -0
  49. package/dist/docs/methods/MCP_INTEGRATION.md +139 -0
  50. package/dist/docs/methods/MUSTER.md +148 -0
  51. package/dist/docs/methods/PRD_GENERATOR.md +186 -0
  52. package/dist/docs/methods/PRODUCT_DESIGN_FRONTEND.md +250 -0
  53. package/dist/docs/methods/QA_ENGINEER.md +337 -0
  54. package/dist/docs/methods/RELEASE_MANAGER.md +145 -0
  55. package/dist/docs/methods/SECURITY_AUDITOR.md +320 -0
  56. package/dist/docs/methods/SUB_AGENTS.md +335 -0
  57. package/dist/docs/methods/SYSTEMS_ARCHITECT.md +171 -0
  58. package/dist/docs/methods/TESTING.md +359 -0
  59. package/dist/docs/methods/THUMPER.md +175 -0
  60. package/dist/docs/methods/TIME_VAULT.md +120 -0
  61. package/dist/docs/methods/TREASURY.md +184 -0
  62. package/dist/docs/methods/TROUBLESHOOTING.md +265 -0
  63. package/dist/docs/patterns/README.md +52 -0
  64. package/dist/docs/patterns/ad-billing-adapter.ts +537 -0
  65. package/dist/docs/patterns/ad-platform-adapter.ts +421 -0
  66. package/dist/docs/patterns/ai-classifier.ts +195 -0
  67. package/dist/docs/patterns/ai-eval.ts +272 -0
  68. package/dist/docs/patterns/ai-orchestrator.ts +341 -0
  69. package/dist/docs/patterns/ai-router.ts +194 -0
  70. package/dist/docs/patterns/ai-tool-schema.ts +237 -0
  71. package/dist/docs/patterns/api-route.ts +241 -0
  72. package/dist/docs/patterns/backtest-engine.ts +499 -0
  73. package/dist/docs/patterns/browser-review.ts +292 -0
  74. package/dist/docs/patterns/combobox.tsx +300 -0
  75. package/dist/docs/patterns/component.tsx +262 -0
  76. package/dist/docs/patterns/daemon-process.ts +338 -0
  77. package/dist/docs/patterns/data-pipeline.ts +297 -0
  78. package/dist/docs/patterns/database-migration.ts +466 -0
  79. package/dist/docs/patterns/e2e-test.ts +629 -0
  80. package/dist/docs/patterns/error-handling.ts +312 -0
  81. package/dist/docs/patterns/execution-safety.ts +601 -0
  82. package/dist/docs/patterns/financial-transaction.ts +342 -0
  83. package/dist/docs/patterns/funding-plan.ts +462 -0
  84. package/dist/docs/patterns/game-entity.ts +137 -0
  85. package/dist/docs/patterns/game-loop.ts +113 -0
  86. package/dist/docs/patterns/game-state.ts +143 -0
  87. package/dist/docs/patterns/job-queue.ts +225 -0
  88. package/dist/docs/patterns/kongo-integration.ts +164 -0
  89. package/dist/docs/patterns/middleware.ts +363 -0
  90. package/dist/docs/patterns/mobile-screen.tsx +139 -0
  91. package/dist/docs/patterns/mobile-service.ts +167 -0
  92. package/dist/docs/patterns/multi-tenant.ts +382 -0
  93. package/dist/docs/patterns/oauth-token-lifecycle.ts +223 -0
  94. package/dist/docs/patterns/outbound-rate-limiter.ts +260 -0
  95. package/dist/docs/patterns/prompt-template.ts +195 -0
  96. package/dist/docs/patterns/revenue-source-adapter.ts +311 -0
  97. package/dist/docs/patterns/service.ts +224 -0
  98. package/dist/docs/patterns/sse-endpoint.ts +118 -0
  99. package/dist/docs/patterns/stablecoin-adapter.ts +511 -0
  100. package/dist/docs/patterns/third-party-script.ts +68 -0
  101. package/dist/scripts/thumper/gom-jabbar.sh +241 -0
  102. package/dist/scripts/thumper/relay.sh +610 -0
  103. package/dist/scripts/thumper/scan.sh +359 -0
  104. package/dist/scripts/thumper/thumper.sh +190 -0
  105. package/dist/scripts/thumper/water-rings.sh +76 -0
  106. package/dist/wizard/ui/index.html +1 -1
  107. package/package.json +1 -1
  108. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,104 @@
1
+ # /git — Coulson's Version & Release Management
2
+
3
+ ## Context Setup
4
+ 1. Read `/docs/methods/RELEASE_MANAGER.md`
5
+ 2. Read `VERSION.md` (~25 lines — semver rules + version history)
6
+
7
+ ## Step 0 — Orient (Coulson)
8
+ Scope the changes:
9
+ 1. Run `git status` — identify staged, unstaged, and untracked files
10
+ 2. Run `git diff --stat` — get a summary of what changed
11
+ 3. If there are unstaged changes, ask the user: "Stage everything, or should I be selective?"
12
+ 4. If there are no changes at all, stop: "Nothing to version. Working tree is clean."
13
+
14
+ ## Step 1 — Analyze (Vision)
15
+ Read the actual diffs and classify every change:
16
+ 1. Run `git diff --cached` (staged) and `git diff` (unstaged) — read the content
17
+ 2. Classify each change into exactly one category:
18
+ - **Added** — new files, new features, new commands, new agents
19
+ - **Changed** — modifications to existing features, refactors, improvements
20
+ - **Fixed** — bug fixes, corrections
21
+ - **Removed** — deleted files, removed features
22
+ - **Security** — security-related changes (auth, encryption, headers, secrets)
23
+ 3. Flag any **breaking changes** (deleted/renamed exports, changed method doc structure, changed build phases, changed agent naming)
24
+ 4. Present the classification to the user for review before proceeding
25
+
26
+ ## Step 2 — Version (Friday)
27
+ Determine the version bump:
28
+ 1. Read current version from `VERSION.md`
29
+ 2. Check for user override arguments (`--major`, `--minor`, `--patch`)
30
+ 3. If no override, apply the priority cascade:
31
+ - **MAJOR** — Breaking changes: deleted/renamed exports, changed method doc structure, changed build phases, changed agent naming
32
+ - **MINOR** — New files (not tests), new features, new commands, new agents, new method docs
33
+ - **PATCH** — Bug fixes, typos, refactors, dependency updates, test-only changes
34
+ 4. Present recommendation: "Recommend **vX.Y.Z** (MINOR — new command, new method doc). Override? [enter to accept]"
35
+ 5. User confirms or overrides
36
+
37
+ ## Step 3 — Chronicle (Wong)
38
+ Update all version files:
39
+ 1. Read the top of `CHANGELOG.md` (~30 lines for format reference)
40
+ 2. Write new CHANGELOG entry at the top (after the header), using the categories from Step 1:
41
+ - User-facing language, not file-level details
42
+ - Group by Added/Changed/Fixed/Removed/Security
43
+ - Include today's date
44
+ 3. Update `VERSION.md`:
45
+ - Change "**Current:** X.Y.Z" to the new version
46
+ - Add a row to the Version History table with date and one-line summary
47
+ 4. Update `package.json` version field
48
+
49
+ ## Step 4 — Commit (Rogers)
50
+ Stage and commit:
51
+ 1. Stage all modified version files: `VERSION.md`, `CHANGELOG.md`, `package.json`
52
+ 2. Stage any other files that are part of this release (from Step 0)
53
+ 3. Craft commit message in the format: `vX.Y.Z: One-line summary`
54
+ - If elaboration needed, add a blank line then details
55
+ - Match the style of existing commits (check `git log --oneline -10`)
56
+ 4. Present the full commit message and staged file list to the user
57
+ 5. On user approval, execute the commit
58
+
59
+ ## Step 5 — Verify (Barton)
60
+ Confirm everything is consistent:
61
+ 1. Run `git log -1 --format="%H %s"` — verify the commit exists and message is correct
62
+ 2. Check version consistency:
63
+ - `VERSION.md` current version matches
64
+ - `package.json` version matches
65
+ - `CHANGELOG.md` has an entry for this version
66
+ - Commit message starts with the correct version tag
67
+ 3. Run `git status` — verify working tree is clean (no forgotten files)
68
+ 4. If any inconsistency found, flag it and offer to fix
69
+
70
+ ## Step 6 — Push (Coulson) [Optional]
71
+ Only if the user explicitly requests:
72
+ 1. Check remote: `git remote -v`
73
+ 2. Check if branch tracks upstream: `git status -sb`
74
+ 3. Push: `git push`
75
+ 4. Verify: `git log --oneline -1` matches remote
76
+
77
+ ## Step 5.5 — Command↔Doc Sync Check (Friday)
78
+ If any `docs/methods/*.md` file was modified, verify the paired `.claude/commands/*.md` file reflects the same additions:
79
+
80
+ | Method Doc | Command File |
81
+ |-----------|-------------|
82
+ | GAUNTLET.md | gauntlet.md |
83
+ | CAMPAIGN.md | campaign.md |
84
+ | FORGE_KEEPER.md | void.md |
85
+ | ASSEMBLER.md | assemble.md |
86
+ | FIELD_MEDIC.md | debrief.md |
87
+ | BUILD_PROTOCOL.md | build.md |
88
+ | QA_ENGINEER.md | qa.md |
89
+ | SECURITY_AUDITOR.md | security.md |
90
+ | PRODUCT_DESIGN_FRONTEND.md | ux.md |
91
+ | SYSTEMS_ARCHITECT.md | architect.md |
92
+ | DEVOPS_ENGINEER.md | devops.md |
93
+ | RELEASE_MANAGER.md | git.md |
94
+ | THUMPER.md | thumper.md |
95
+
96
+ If a method doc gained a new section, flag, or checklist item — flag it: "Method doc X changed but command file Y may need matching update." The user decides whether the command file needs updating.
97
+
98
+ ## Arguments
99
+ - `--dry-run` → Show version bump, changelog entry, and commit message without executing.
100
+
101
+ ## Handoffs
102
+ - If changes include security fixes → note for Kenobi (`/security`)
103
+ - If changes include infrastructure → note for Kusanagi (`/devops`)
104
+ - If version is MAJOR → recommend Picard review (`/architect`)
@@ -0,0 +1,146 @@
1
+ # /grow — Kelsier's 6-Phase Growth Protocol
2
+
3
+ Read `/docs/methods/GROWTH_STRATEGIST.md` for operating rules.
4
+
5
+ ## Prerequisites
6
+ If `packages/voidforge/wizard/server.ts` does not exist and the mode requires it (default 6-phase, `--setup`, `--distribute`):
7
+ 1. Offer: "Phases 4-6 require the wizard server for ad platform APIs, treasury, and autonomous monitoring. Pull it from upstream? [Y/n] (Phases 1-3 work without it.)"
8
+ 2. On yes: `git fetch voidforge main 2>/dev/null || git remote add voidforge https://github.com/tmcleod3/voidforge.git && git fetch voidforge main` then `git checkout voidforge/main -- packages/voidforge/` then `npm install`. Proceed with all 6 phases.
9
+ 3. On no: proceed to Phases 1-3. The Phase 3/4 boundary check below will display a clear stop message after Phase 3 completes.
10
+
11
+ If `packages/voidforge/wizard/server.ts` does not exist and the mode does NOT require it (`--audit-only`, `--seo`, `--content`):
12
+ - Skip the wizard gate entirely. These modes run Phases 1-3 only — no wizard dependency.
13
+
14
+ ## Arguments
15
+ - No arguments → run/resume the 6-phase growth protocol
16
+ - `--setup` → Ad platform onboarding only (interactive credential setup for Google/Meta/LinkedIn/Twitter/Reddit). See GROWTH_STRATEGIST.md "Ad Platform Setup" section. Does NOT require a deployed product.
17
+ - `--audit-only` → Run Phases 1-3 (Reconnaissance, Foundation, Content) — methodology-only growth audit without paid acquisition
18
+ - `--resume` → Resume from last completed phase in growth-state.md
19
+ - `--plan` → Planning mode: analyze and recommend without executing. Present findings and proposed changes for review.
20
+
21
+ ## `/grow --setup` (Ad Platform Onboarding)
22
+
23
+ If `--setup` is specified, skip the 6-phase protocol and run the ad platform onboarding flow:
24
+ 1. Check: is Cultivation installed? (`~/.voidforge/treasury/vault.enc` exists). If not: "Run `/cultivation install` first."
25
+ 2. Read GROWTH_STRATEGIST.md "Ad Platform Setup" section
26
+ 3. Present platform options with best-fit guidance per product type
27
+ 4. For each selected platform: account check → credential collection → test connection → store in vault
28
+ 5. **Billing capability verification** (after credential auth succeeds):
29
+ - **Google Ads:** Check for monthly invoicing, capture billing setup / payments account IDs. Classify as `FULLY_FUNDABLE` (monthly invoicing available), `MONITORED_ONLY` (manual bank transfer only), or `UNSUPPORTED` (no billing API access).
30
+ - **Meta Ads:** Check billing mode — direct debit, extended credit / invoicing, or card-only. Classify as `FULLY_FUNDABLE` (direct debit or extended credit), `MONITORED_ONLY` (card / unknown), or `UNSUPPORTED` (no billing data).
31
+ - **Other platforms (LinkedIn, Twitter, Reddit):** Classify as `MONITORED_ONLY` — campaign ops supported, billing automation not available in V1.
32
+ - Store capability state per platform in vault alongside credentials.
33
+ 6. Summary: which platforms are connected, billing capability per platform, suggest next steps (`/grow` to start campaigns, `/treasury --simulate-funding` if stablecoin treasury is configured)
34
+
35
+ ## Context Setup
36
+ 1. Read `/logs/growth-state.md` — if it exists, resume from current phase
37
+ 2. Read `/logs/growth-brief.md` — if it exists, reconnaissance is complete
38
+ 3. Read the PRD — extract product vision, target audience, deployed URL
39
+ 4. Verify the product is deployed: check for a live URL in deploy logs or PRD. If not deployed and not `--setup`: "Can't grow what doesn't exist. Run `/campaign` first."
40
+
41
+ ## First-Run Experience
42
+
43
+ If no `growth-brief.md` exists (first time running /grow):
44
+ 1. Display overview: "The growth pipeline has 6 phases: Reconnaissance → Foundation → Content → Distribution → Compliance → Measure."
45
+ 2. Ask: "Guided walkthrough with explanations, or expert mode? [guided/expert]"
46
+ 3. In guided mode, each phase transition shows a 2-sentence explanation and estimated time.
47
+ 4. Display estimated total: "Full pipeline: ~30-60 minutes. Audit only (--audit-only, Phases 1-3): ~15-20 minutes."
48
+
49
+ ## Phase Execution
50
+
51
+ ### Phase 1 — Reconnaissance (Kelsier + Vin + Marsh)
52
+ 1. Kelsier reads PRD, scans deployed site, produces Growth Brief
53
+ 2. Vin audits analytics (GA4, Plausible, PostHog)
54
+ 3. Marsh scans 3-5 competitors
55
+ 4. Output: `/logs/growth-brief.md`
56
+ 5. **Gate:** User confirmation before Phase 2
57
+
58
+ ### Phase 2 — Foundation (Navani + Raoden)
59
+ 1. Navani: Core Web Vitals, meta tags, structured data, sitemap, robots.txt
60
+ 2. Vin: Analytics snippet, event tracking, UTM strategy
61
+ 3. Raoden: Conversion audit — CTAs, forms, page speed, social proof
62
+ 4. Preview code changes before applying: "[Y]es / [n]o / [d]iff"
63
+ 5. Commit changes as separate git commit
64
+ 6. Output: `/logs/growth-foundation.md`
65
+ 7. Auto-continues to Phase 3
66
+
67
+ ### Phase 3 — Content (Shallan + Hoid)
68
+ 1. Shallan: Blog topics, changelog format, social calendar, visual check
69
+ 2. Hoid: Landing page copy, feature descriptions, CTAs, error messages
70
+ 3. Blog drafts to `/content/blog/`. Copy changes committed.
71
+ 4. Output: `/logs/growth-content.md`
72
+ 5. **Gate:** User confirmation before Phase 4
73
+
74
+ ### Phase 3/4 Boundary — Wizard Check
75
+
76
+ Before entering Phase 4, check if `packages/voidforge/wizard/server.ts` exists:
77
+ - **If present:** Continue to Phase 4 as normal.
78
+ - **If absent:** Display the following and stop gracefully:
79
+ ```
80
+ ═══════════════════════════════════════════
81
+ GROWTH PHASES 1-3 COMPLETE
82
+ ═══════════════════════════════════════════
83
+
84
+ Reconnaissance, Foundation, and Content phases are done.
85
+ Results saved to /logs/growth-*.md
86
+
87
+ Phases 4-6 (Paid Acquisition, Compliance, Measure & Iterate)
88
+ require the wizard server for:
89
+ - Ad platform API integration
90
+ - Financial vault and treasury
91
+ - Heartbeat daemon for autonomous monitoring
92
+ - Kongo landing page generation
93
+
94
+ To enable: /cultivation install (pulls wizard from upstream)
95
+ To review results so far: check /logs/growth-brief.md,
96
+ /logs/growth-foundation.md, /logs/growth-content.md
97
+ ═══════════════════════════════════════════
98
+ ```
99
+ Save state to `growth-state.md` with Phase 3 complete. Exit cleanly.
100
+
101
+ ### Phase 4 — Distribution (3 parallel tracks)
102
+ **Track A — Organic** (Kaladin + Lift + Adolin): Community posts, social content, launch plan
103
+ **Track B — Paid** (Wax + Wayne + Steris): Campaign architecture, creative variants, budget allocation
104
+ **Track C — Outreach** (Sarene): Cold email sequences, co-marketing pitches
105
+
106
+ Output: `/logs/growth-distribution.md` + `/logs/growth-campaigns.json`
107
+
108
+ If treasury is set up: "Campaigns ready. Launch now? [Y/n/later]"
109
+ - Y → send `launchCampaigns` to daemon socket
110
+ - later → "Launch with `voidforge treasury --launch` when ready"
111
+ If treasury NOT set up: "Run `/treasury setup` first, then `voidforge treasury --launch`"
112
+
113
+ ### Phase 5 — Compliance (Szeth)
114
+ 1. Privacy (cookie consent, privacy policy, DPA)
115
+ 2. Email (CAN-SPAM, GDPR opt-in, unsubscribe)
116
+ 3. Ad platform ToS (per-platform creative review)
117
+ 4. Financial (spend tracking, revenue classification)
118
+ 5. **Szeth blocks campaign launch on Critical compliance issues**
119
+ 6. Output: `/logs/growth-compliance.md`
120
+ 7. Auto-continues to Phase 6
121
+
122
+ ### Phase 6 — Measure & Iterate (Vin + Kelsier)
123
+ 1. Vin establishes measurement baseline
124
+ 2. Kelsier defines decision rules for autonomous monitoring
125
+ 3. CLI-to-autonomous handoff — show transition screen per §9.19.8
126
+ 4. Daemon takes over with Tier 1 deterministic rules
127
+
128
+ ## Phase Transitions
129
+
130
+ User confirmation required between: Phase 1→2, Phase 3→4, Phase 5→6.
131
+ Phases 2→3 and 4→5 auto-continue.
132
+ On "no" at any gate: save state to `growth-state.md`, exit with "Resume with `/grow --phase N`"
133
+
134
+ ## Flags
135
+
136
+ - `--phase N` → resume from phase N (checks previous phase output)
137
+ - `--audit-only` → Phases 1-3 (Reconnaissance, Foundation, Content)
138
+ - `--seo` → Phase 2 only (Navani + Raoden)
139
+ - `--content` → Phase 3 only (Shallan + Hoid)
140
+ - `--distribute` → Phase 4 only (assumes 1-3 done)
141
+ - `--budget N` → set total monthly budget for Phase 4
142
+ - `--explain` → show daemon rules and thresholds
143
+ - `--dry-run` → Show what Phase 4 (Distribution) would create without submitting to platforms.
144
+
145
+ ## Arguments
146
+ $ARGUMENTS
@@ -0,0 +1,126 @@
1
+ Celebrimbor lights the forge. Time to create.
2
+
3
+ ## Context Setup
4
+ 1. Read `/docs/methods/FORGE_ARTIST.md` for operating rules
5
+ 2. Read the PRD — scan for visual asset requirements
6
+ 3. Check vault for `openai-api-key`
7
+
8
+ ## Step 0 — Credential Check
9
+
10
+ If no `openai-api-key` in vault:
11
+ 1. Prompt the user: "Celebrimbor needs an OpenAI API key to generate images. Get one at platform.openai.com/api-keys"
12
+ 2. Store in vault with same AES-256-GCM encryption as other credentials
13
+ 3. Validate the key works (test API call)
14
+
15
+ If key exists, proceed silently.
16
+
17
+ ## Step 1 — Scan the PRD (Nori)
18
+
19
+ Parse the PRD for visual asset requirements. Look for patterns:
20
+ - illustration, portrait, silhouette, avatar, icon (custom)
21
+ - OG image, og:image, hero image, background image
22
+ - logo, favicon, screenshot, comic strip, splash page
23
+
24
+ For each match, extract:
25
+ - **Description:** What the PRD says the image should look like
26
+ - **Context:** Which page/component/section it belongs to
27
+ - **Dimensions:** Infer from context (OG = 1200x630, portrait = 1024x1024, hero = 1792x1024)
28
+
29
+ If `$ARGUMENTS` contains `--scan`, stop here and report findings without generating.
30
+
31
+ ## Step 2 — Scan Existing Assets (Nori)
32
+
33
+ Check `public/images/` (or equivalent asset directory) for what already exists.
34
+ Diff: what the PRD describes vs. what's on disk.
35
+ Produce an asset manifest showing status per image.
36
+
37
+ If `$ARGUMENTS` contains `--asset "name"`, filter to just that asset.
38
+
39
+ ## Step 3 — Derive Style (Celebrimbor)
40
+
41
+ Read the PRD's brand section (Section 14 or equivalent) to derive the generation style:
42
+ - Color palette keywords
43
+ - Aesthetic direction (comic book, watercolor, minimalist, etc.)
44
+ - What to avoid (stock photo, generic, photorealistic unless specified)
45
+
46
+ Construct a **style prefix** that gets prepended to every generation prompt.
47
+
48
+ If `$ARGUMENTS` contains `--style "override"`, use that instead.
49
+
50
+ ## Step 4 — Present the Plan
51
+
52
+ ```
53
+ ═══════════════════════════════════════════
54
+ CELEBRIMBOR'S FORGE — Asset Plan
55
+ ═══════════════════════════════════════════
56
+ Style: [derived style or override]
57
+ Model: [gpt-image-1 or --provider override]
58
+ Assets: [N] images to generate
59
+ Est: ~[time], ~$[cost]
60
+
61
+ [list of assets with dimensions]
62
+
63
+ Confirm? [Y/n]
64
+ ═══════════════════════════════════════════
65
+ ```
66
+
67
+ Wait for user confirmation.
68
+
69
+ ## Step 5 — Generate (Ori)
70
+
71
+ For each asset:
72
+ 1. Craft the generation prompt: style prefix + PRD description + dimension context
73
+ 2. Call the image generation API
74
+ 3. Download and save to `public/images/{category}/{name}.png`
75
+ 4. Log to asset manifest (`public/images/manifest.json`)
76
+ 5. Show progress: "Saved {name}.png ({n}/{total})"
77
+
78
+ - Sequential calls (rate limit aware)
79
+ - Retry failures up to 3 times
80
+ - Skip existing files unless `--regen` flag is set
81
+
82
+ If `$ARGUMENTS` contains `--regen "name"`, regenerate just that asset (overwrite existing).
83
+
84
+ ## Step 5.5 — Optimize for Web (Gimli)
85
+
86
+ DALL-E outputs 1024x1024 PNGs regardless of display size. A 40px avatar served from a 1024px source wastes 99% of bandwidth. For every generated image:
87
+
88
+ 1. **Determine display dimensions** — check the asset manifest for intended usage (avatar, hero, card, portrait). If the PRD or component specifies dimensions, use 2x those (retina). Default sizes by category: avatars → 200px, portraits → 400px, cards → 600px, hero → 1200px, OG images → 1200x630.
89
+ 2. **Resize** — use `sharp` (already a project dependency) to resize to 2x display dimensions. Never serve 1024px for a 40px slot.
90
+ 3. **Convert to WebP** — WebP is ~70% smaller than PNG at equivalent quality. Save as `.webp` with quality 85 (good enough for illustrations, dramatically smaller). Keep the original PNG in a `/originals` subfolder for regeneration.
91
+ 4. **Verify size** — individual image must be < 200KB after optimization. If larger, reduce quality to 75 and try again.
92
+ 5. **Update manifest** — record optimized filename, dimensions, and file size. Log savings: "Optimized {name}: {original_size} → {optimized_size} ({savings}% reduction)"
93
+
94
+ Total asset budget: all generated images combined should be < 10MB. If over, flag the largest offenders.
95
+
96
+ ## Step 6 — Integration Check (Dori)
97
+
98
+ Scan codebase for image references (`src=`, `url(`, `import`):
99
+ - Flag components that reference images that don't exist on disk
100
+ - Flag generated images that aren't referenced by any component
101
+ - Suggest wiring if images were generated but not integrated
102
+
103
+ ## Step 7 — Report
104
+
105
+ ```
106
+ ═══════════════════════════════════════════
107
+ CELEBRIMBOR'S FORGE — Complete
108
+ ═══════════════════════════════════════════
109
+ Generated: [n/total] images
110
+ Retries: [n] (if any)
111
+ Total: [size] MB
112
+ Cost: ~$[cost]
113
+ Time: [duration]
114
+
115
+ Next: wire images into components
116
+ (or run /build to integrate)
117
+ ═══════════════════════════════════════════
118
+ ```
119
+
120
+ ## Arguments
121
+ - No arguments → full scan + generate all missing assets
122
+ - `--scan` → scan only, report what's needed without generating
123
+ - `--asset "name"` → generate a specific named asset
124
+ - `--regen "name"` → regenerate a specific image (overwrites existing)
125
+ - `--style "description"` → override the style derived from PRD
126
+ - `--provider model` → use specific model (default: gpt-image-1)
@@ -0,0 +1,50 @@
1
+ # /portfolio — Steris's Cross-Project Financials
2
+
3
+ > *"Contingency plan 47-B: what if we have more than one project?"*
4
+
5
+ Read `/docs/methods/TREASURY.md` for financial operating rules.
6
+
7
+ ## Prerequisites
8
+ If `packages/voidforge/wizard/server.ts` does not exist (scaffold/core users):
9
+ 1. Offer: "Portfolio requires the wizard server. Pull it from upstream? [Y/n]"
10
+ 2. On yes: `git fetch voidforge main 2>/dev/null || git remote add voidforge https://github.com/tmcleod3/voidforge.git && git fetch voidforge main` then `git checkout voidforge/main -- packages/voidforge/` then `npm install`
11
+ 3. On no: stop with "Run manually: `git checkout voidforge/main -- packages/voidforge/`"
12
+
13
+ ## Context Setup
14
+ 1. Read `~/.voidforge/projects.json` for registered projects
15
+ 2. For each project: read treasury data from `~/.voidforge/treasury/`
16
+ 3. If no projects registered: "No projects registered. Run `/treasury setup` in a project directory."
17
+ 4. If single project: show treasury view with note about portfolio comparisons
18
+
19
+ ## Portfolio Dashboard
20
+
21
+ ```
22
+ ═══════════════════════════════════════════════════════
23
+ PORTFOLIO — [Month Year]
24
+ ═══════════════════════════════════════════════════════
25
+ Projects: N active
26
+
27
+ ┌─────────────┬──────────┬──────────┬────────┬───────┐
28
+ │ Project │ Revenue │ Spend │ Net │ ROAS │
29
+ ├─────────────┼──────────┼──────────┼────────┼───────┤
30
+ │ ... │ $X,XXX │ $X,XXX │ $X,XXX │ X.Xx │
31
+ ├─────────────┼──────────┼──────────┼────────┼───────┤
32
+ │ TOTAL │ $X,XXX │ $X,XXX │ $X,XXX │ X.Xx │
33
+ └─────────────┴──────────┴──────────┴────────┴───────┘
34
+
35
+ Budget utilization: XX% ($X,XXX / $X,XXX)
36
+ Top performer: [project] (X.Xx ROAS)
37
+ Underperformer: [project] (X.Xx — [note])
38
+ ═══════════════════════════════════════════════════════
39
+ ```
40
+
41
+ ## Commands
42
+
43
+ - `/portfolio` or `/portfolio --status` — portfolio dashboard
44
+ - `/portfolio --report` — monthly report (JSON/CSV/markdown) for tax records
45
+ - `/portfolio --optimize` — Kelsier analyzes cross-project spend, recommends reallocation
46
+ - `/portfolio --add [path]` — manually register a project
47
+ - `/portfolio --remove [name]` — unregister a project
48
+
49
+ ## Arguments
50
+ $ARGUMENTS
@@ -0,0 +1,113 @@
1
+ # /prd — Sisko's PRD Generator
2
+
3
+ > Structured interview to generate a production-ready PRD with valid YAML frontmatter.
4
+
5
+ ## Context Setup
6
+ 1. Read `/docs/PRD.md` — understand the template structure
7
+ 2. Read `/docs/methods/CAMPAIGN.md` — understand how PRDs drive campaigns
8
+
9
+ ## The Interview
10
+
11
+ Sisko conducts a 5-act structured interview. Each act drafts that PRD section, shows it for confirmation, then moves to the next. The user can revise any section before moving on.
12
+
13
+ ### Act 1 — "What are you building?"
14
+ Ask:
15
+ - What's the name of this project?
16
+ - Describe it in one sentence.
17
+ - Who is this for? (audience)
18
+ - What does it do? (2-3 sentences)
19
+ - What's the brand personality? (e.g., "Confident, witty, warm. Never corporate.")
20
+
21
+ **Draft:** PRD Section 1 (Product Vision). Present for confirmation.
22
+
23
+ ### Act 2 — "What stack?"
24
+ Propose defaults based on Act 1, then ask:
25
+ - Framework? (Next.js, Express, Django, Rails, etc.) — Sisko proposes based on project type
26
+ - Database? (Postgres, MySQL, SQLite, MongoDB, none)
27
+ - Cache? (Redis, none)
28
+ - Styling? (Tailwind, CSS modules, styled-components, vanilla)
29
+ - Auth? (yes/no — Sisko recommends based on features)
30
+ - Payments? (Stripe, LemonSqueezy, none)
31
+ - Deploy target? (VPS, Vercel, Railway, Cloudflare, static, Docker)
32
+
33
+ **Draft:** PRD Section 3 (Tech Stack) + YAML frontmatter. Present for confirmation.
34
+
35
+ ### Act 3 — "What features?"
36
+ Ask:
37
+ - What's the core user flow? (Step by step: user does X, sees Y, system does Z)
38
+ - Any supporting features? (settings, profile, notifications, search)
39
+ - Any integrations? (email, payments, file upload, third-party APIs)
40
+ - What data do you need to store? (Sisko proposes a schema based on features)
41
+
42
+ **Draft:** PRD Section 4 (Core Features) with user flows and data models. Present for confirmation.
43
+
44
+ ### Act 4 — "What does it look like?"
45
+ Ask:
46
+ - Key screens? (list the main pages/views)
47
+ - Any specific UI requirements? (dark mode, mobile-first, dashboard layout)
48
+ - Route structure? (Sisko proposes based on features)
49
+
50
+ **Draft:** PRD Section 2 (System Architecture) with route structure + ASCII diagram. Present for confirmation.
51
+
52
+ ### Act 5 — "How does it ship?"
53
+
54
+ **Natural Language Deploy (optional):** Before the structured questions, offer: *"Describe your ideal deployment in plain language — budget, features, scale. Or skip to configure manually."*
55
+
56
+ If the user provides a prose description (e.g., "I want a $20/month server with SSL, daily backups, and a custom domain"), run it through the natural language deploy resolver (`wizard/lib/natural-language-deploy.ts`). Present the resolved config:
57
+ - Deploy target and reasoning
58
+ - Instance type and estimated cost
59
+ - Resilience features (auto-detected from prose)
60
+ - Hostname (if mentioned)
61
+
62
+ The user confirms, adjusts, or overrides. The resolved config replaces the manual deploy target selection in Act 2's frontmatter.
63
+
64
+ **Then ask:**
65
+ - Any phased launch? (MVP first, then features?)
66
+ - Success metrics? (users, revenue, performance targets)
67
+ - Any non-functional requirements? (accessibility, performance, SEO)
68
+
69
+ **Draft:** PRD Sections 5-8 (remaining sections). Present for confirmation.
70
+
71
+ ## Act 6 — Challenge (optional: `--challenge`)
72
+
73
+ If `--challenge` is passed, Boromir argues AGAINST the PRD before it's finalized:
74
+ - "This feature will be expensive to maintain because..."
75
+ - "This integration has a high chance of API deprecation..."
76
+ - "Your schema doesn't support the multi-tenant use case you mentioned..."
77
+ - "The deploy target can't handle the real-time features you described..."
78
+
79
+ The user defends their choices or adjusts the PRD. This is cheaper than discovering design flaws in Phase 9. Boromir's challenges are adversarial but constructive — he's testing the plan's strength, not rejecting it.
80
+
81
+ ## Output
82
+
83
+ After all 5 (or 6) acts are confirmed:
84
+ 1. Assemble the complete PRD from all confirmed sections
85
+ 2. Write to `/docs/PRD.md`
86
+ 3. Verify YAML frontmatter is valid and complete
87
+ 4. Announce: "PRD written to /docs/PRD.md. Run `/build` to start building, or `/campaign` for autonomous execution."
88
+
89
+ ## Import Mode (`--import`)
90
+
91
+ If `--import path/to/existing-PRD.md` is passed, skip the interview entirely:
92
+
93
+ 1. Copy the file to `docs/PRD.md`
94
+ 2. Parse and validate YAML frontmatter (same rules as `/build` Phase 0)
95
+ 3. Run Troi's structural compliance check (sections present, cross-refs valid)
96
+ 4. Present validation results (errors block, warnings don't)
97
+ 5. If `--challenge` is also passed, run Boromir's challenge on the imported PRD
98
+ 6. Announce: "PRD imported and validated. Run `/blueprint` to provision, or `/campaign` to build."
99
+
100
+ This is the lightweight alternative to `/blueprint` — it validates and places the PRD but does not provision infrastructure or discover supporting documents.
101
+
102
+ ## Arguments
103
+ - No arguments → full 5-act interview
104
+ - `--challenge` → add Boromir's adversarial challenge (Act 6)
105
+ - `--import path/to/PRD.md` → skip interview, import and validate an existing PRD
106
+ - `--import path/to/PRD.md --challenge` → import + validate + challenge
107
+
108
+ ## Rules
109
+ - Sisko proposes smart defaults — the user should confirm, not configure from scratch
110
+ - Each act is self-contained — the user sees and approves before moving on
111
+ - If the user is vague, Sisko asks one clarifying question (not three)
112
+ - The output PRD must have valid YAML frontmatter that `/build` Phase 0 can parse
113
+ - Never generate placeholder content — every section should have real, specific content based on the interview
@@ -0,0 +1,107 @@
1
+ # /qa — Batman's QA Pass
2
+
3
+ **AGENT DEPLOYMENT IS MANDATORY.** Step 3 specifies parallel agent launches via the Agent tool. You MUST launch Oracle, Red Hood, Alfred, Deathstroke, Constantine, Cyborg, Raven, Wonder Woman, Batgirl, and Aquaman as separate sub-processes — do NOT shortcut to inline analysis. (Field report #68)
4
+
5
+ ## Context Setup
6
+ 1. Read `/logs/build-state.md` — understand current project state
7
+ 2. Read `/docs/methods/QA_ENGINEER.md`
8
+ 3. Read `/docs/methods/TESTING.md` (Testing Pyramid + Running Tests sections)
9
+ 4. Read `/docs/LESSONS.md` — check for QA-relevant lessons (antipatterns, gotchas, prior misses). Flag matches during analysis.
10
+
11
+ ## Step 0 — Orient
12
+ 1. Create or update `/docs/qa-prompt.md` with: stack, framework, how to run, how to validate
13
+ 2. Create `/logs/phase-09-qa-audit.md` (or appropriate phase log)
14
+
15
+ ## Step 1 — Attack Plan
16
+ **Green Lantern** generates the test matrix first — what inputs × what states × what conditions should be tested. Then assign targets:
17
+ - **Oracle (static):** Critical flows, missing awaits, null checks, type mismatches, race conditions
18
+ - **Red Hood (dynamic):** Empty/huge/unicode inputs, network failures, malformed JSON, rapid clicking
19
+ - **Alfred (deps):** `npm audit`, outdated libs, deprecated APIs, version conflicts
20
+ - **Lucius (config):** .env completeness, secrets not in git, prod vs dev mismatches
21
+ - **Deathstroke (adversarial):** Penetration-style probing — bypass validations, chain interactions, exploit business logic
22
+ - **Constantine (cursed code):** Unreachable branches, dead state, impossible conditions, logic that works by accident
23
+ - **Cyborg (integration):** When 3+ modules connect, trace the full data path across boundaries. Missing imports, inconsistent response shapes, broken cross-module flows.
24
+ - **Raven (deep analysis):** Bugs hidden beneath 3 layers of abstraction — follows data through transforms, closures, callbacks. Logic correct per function, wrong in composition.
25
+ - **Wonder Woman (truth):** Code that says one thing and does another — misleading names, wrong comments, stale docs, functions that don't match their behavior.
26
+
27
+ ## Step 2 — Baseline
28
+ Get the project running. Verify manually: app starts, primary flow works, auth works (if applicable), data persists, error states display.
29
+
30
+ ## Step 2.5 — Smoke Tests (**Flash** speed-runs these)
31
+ After build + restart, **Flash** parallelizes curl commands against the running server for each new or modified feature:
32
+ - **Primary user flow:** Execute via curl/fetch against localhost — verify the end-to-end path works
33
+ - **File uploads:** Upload a file, then fetch the returned URL and verify HTTP 200 + correct content-type
34
+ - **Form submissions:** Submit valid data (verify 200), then submit invalid/duplicate data (verify error message is specific, not generic)
35
+ - **Real-time features:** Trigger the polling/SSE and verify at least one successful response cycle
36
+ - **Cross-module paths:** If code writes with key prefix X, verify the serving endpoint accepts prefix X
37
+
38
+ This catches integration failures that static code review misses. If the server isn't running or can't be tested this way, document what couldn't be smoke-tested.
39
+
40
+ ## Step 3 — Pass 1: Find Bugs (parallel analysis)
41
+ Use the Agent tool to run these in parallel — these are read-only analysis tasks:
42
+ - **Agent 1 (Oracle):** Scan /src/lib/ and /src/app/ for logic flaws, missing awaits, unsafe assumptions
43
+ - **Agent 2 (Red Hood):** Test all API endpoints with malformed inputs, empty bodies, missing auth
44
+ - **Agent 3 (Alfred):** Run `npm audit`, check package.json for deprecated/vulnerable packages
45
+ - **Agent 4 (Deathstroke):** Adversarial probing — bypass validations, chain unexpected interactions, test authorization boundaries
46
+ - **Agent 5 (Constantine):** Hunt cursed code — dead branches, impossible conditions, accidental correctness, shadowed variables
47
+ - **Agent 6 (Batgirl):** Deep per-module audit — every edge of every form, every boundary of every validation, every regex. Not broad — *thorough*.
48
+ - **Agent 7 (Aquaman):** Deep dive on the hardest/largest module (500+ lines or 10+ functions). Exhaustive testing of one complex area.
49
+
50
+ Synthesize findings from all agents into a unified list.
51
+
52
+ Lucius reviews config separately (reads .env files — sensitive, don't delegate to sub-agent).
53
+
54
+ ## Step 3.5 — Automated Tests
55
+ Run `npm test`. Analyze failures. Cross-reference with findings from Step 3. **Huntress** identifies flaky/non-deterministic tests — race conditions, timing dependencies, order-dependent assertions. For every bug found, ask: "Can this be caught by an automated test?" If yes, write the test.
56
+
57
+ ## Step 4 — Bug Tracker
58
+ Log all findings in this format in the phase log:
59
+
60
+ | ID | Title | Severity | Confidence | Area | Repro Steps | Root Cause | Fix | Verified | Risk |
61
+ |----|-------|----------|------------|------|-------------|-----------|-----|----------|------|
62
+
63
+ Severity: Critical (security/data loss) > High (broken flow) > Medium (degraded) > Low (cosmetic)
64
+
65
+ **Confidence scoring is mandatory.** Every finding includes a confidence score (0-100). If confidence is below 60, launch a second agent from a different universe (e.g., if Oracle found it, escalate to Spock or Kenobi) to verify before including. If the second agent disagrees, drop the finding. High-confidence findings (90+) skip re-verification in Step 6.5.
66
+
67
+ ## Step 5 — Fix (small batches — **Green Arrow** pinpoints exact lines)
68
+ One batch = fixes for one area or severity level. **Green Arrow** narrows vague findings to exact lines and conditions. After each batch:
69
+ 1. Re-run `npm test`
70
+ 2. Re-verify affected manual flows
71
+ 3. Update bug tracker in phase log
72
+ 4. Add new test for each fix where applicable
73
+
74
+ ## Step 6 — Harden (**Superman** enforces standards)
75
+ Normalize error handling (reference `/docs/patterns/error-handling.ts`). Add guardrails. Improve structured logging. **Superman** verifies the codebase meets its own stated standards — linting clean, type-safe, naming conventions consistent, no unresolved TODOs.
76
+
77
+ ## Step 6.5 — Pass 2: Re-Verify Fixes
78
+ After all fixes are applied, run a verification pass:
79
+ - **Nightwing** re-runs full test suite, reports any new failures
80
+ - **Red Hood** re-probes fixed areas — verify fixes hold under adversarial input
81
+ - **Deathstroke** re-tests authorization boundaries and business logic exploits that were remediated
82
+
83
+ If Pass 2 finds new issues, fix and re-verify until clean.
84
+
85
+ ## Step 7 — Regression Checklist
86
+ Nightwing builds the checklist. Template:
87
+
88
+ | # | Flow | Steps | Expected | Status |
89
+ |---|------|-------|----------|--------|
90
+ | 1 | User signup | Go to /signup, fill form, submit | Account created, redirect to dashboard | Pass |
91
+ | 2 | Create project | Click "New Project", fill name, submit | Project appears in list | Pass |
92
+
93
+ Store in `/docs/qa-prompt.md` under "Regression Checklist" section.
94
+
95
+ ## Step 8 — Deliverables
96
+ 1. Bug tracker (in phase log)
97
+ 2. Code fixes + new tests
98
+ 3. Updated `/docs/qa-prompt.md` with regression checklist
99
+ 4. Release note summary in phase log
100
+
101
+ ## Handoffs
102
+ - Security findings → Kenobi (`/security`)
103
+ - Architecture issues → Picard (`/architect`)
104
+ - Infrastructure issues → Kusanagi (`/devops`)
105
+ - UX issues → Galadriel (`/ux`)
106
+
107
+ Log all handoffs to `/logs/handoffs.md`.