thevoidforge 21.0.11 → 21.0.12

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 (107) 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/package.json +1 -1
  107. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,118 @@
1
+ # /ux — Galadriel's UX/UI Pass
2
+
3
+ **AGENT DEPLOYMENT IS MANDATORY.** Step 2 specifies parallel agent launches via the Agent tool. You MUST launch Elrond, Arwen, Samwise, and Celeborn 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/PRODUCT_DESIGN_FRONTEND.md`
8
+ 3. Read `/docs/LESSONS.md` — check for UX-relevant lessons (a11y gaps, component gotchas, CSS issues). Flag matches during review.
9
+
10
+ ## Step 0 — Orient
11
+ Detect: framework, styling system, component library, routing, state management.
12
+ Document in phase log: "How to run", key routes, where components/styles/copy live.
13
+
14
+ ## Step 1 — Product Surface Map
15
+ List every screen/route, primary user journeys, key shared components, and the state taxonomy (loading/empty/error/success/partial/unauthorized). Write to phase log.
16
+
17
+ ## Step 1.75 — Éowyn's Enchantment Review
18
+ Before the auditors begin, Éowyn dreams. Read the PRD's brand personality section. Walk through each primary flow and ask:
19
+ - Where could this surprise and delight?
20
+ - Where does functionality need warmth?
21
+ - Do transitions breathe or just appear? (200ms ease-out minimum for panels, modals, state changes)
22
+ - Do empty states invite or repel? (illustrations, warm copy, calls to action)
23
+ - Does loading feel like anticipation or waiting? (progressive reveals, warm shimmers)
24
+ - Do micro-moments celebrate? (toast personality, pin bounces, checkmark draws)
25
+ - Is there a consistent motion language? (same duration/easing vocabulary throughout)
26
+ - Does the first 5 seconds feel like the brand?
27
+ - Could each opportunity be implemented in ~5 lines? (magic must be lightweight)
28
+
29
+ Log enchantment opportunities to phase log with effort estimates. These are **nice-to-have** — never block ship. But the best ones get implemented in Step 6.
30
+
31
+ See `PRODUCT_DESIGN_FRONTEND.md` Step 1.75 for full Éowyn protocol.
32
+
33
+ ## Step 2 — Parallel Analysis
34
+ Use the Agent tool to run these simultaneously — all are read-only analysis:
35
+ - **Agent 1 (Elrond — UX):** Review information architecture, navigation, task flows, friction points. Can users find things? Are flows intuitive?
36
+ - **Agent 2 (Arwen — Visual):** Review spacing, typography, color usage, button hierarchy, visual consistency. Does it look intentional?
37
+ - **Agent 3 (Samwise — A11y):** Check keyboard navigation, focus management, ARIA labels, color contrast, reduced motion. Test with keyboard-only navigation.
38
+ - **Agent 4 (Celeborn — Design System):** Are spacing tokens consistent? Typography scale followed? Colors from the palette? Component naming conventions respected? Catches systemic inconsistencies (e.g., `gap-4` vs `gap-[18px]` for the same spacing).
39
+
40
+ **Aragorn** orchestrates when multiple findings conflict — prioritizes which matter most for users.
41
+
42
+ Synthesize findings from all agents.
43
+
44
+ ## Step 3 — Sequential Reviews
45
+ These require interactive testing:
46
+
47
+ **Bilbo (Copy):** Review all microcopy — labels, buttons, error messages, empty states, confirmations, destructive action warnings. Does the product speak clearly and consistently?
48
+
49
+ **Pippin (Edge Cases):** Does the unexpected — resizes to 320px, pastes emoji in search, clicks back mid-flow, opens the same page in two tabs, toggles between light/dark mid-animation.
50
+
51
+ **Frodo (Hardest Flow):** If the project has one flow that is both the most critical AND the most complex, Frodo gets dedicated attention on that single flow. Conditional — skip if no single flow dominates.
52
+
53
+ **Legolas (Code):** Review component architecture — semantic HTML, CSS organization, state management patterns. Reference `/docs/patterns/component.tsx`.
54
+
55
+ **Gimli (Performance):** Check loading states, skeleton screens, layout shift, optimistic UI, mobile responsiveness, touch targets (min 44px).
56
+
57
+ **Radagast (Edge Cases + Error States):** Test forms with empty/huge/unicode inputs, broken states, dangerous actions without confirmation, validation gaps.
58
+
59
+ **ERROR STATE TESTING (mandatory):** For every form/action in the UI:
60
+ - Submit with intentionally invalid data (duplicate name, wrong format, missing required field)
61
+ - Verify the error message is SPECIFIC and ACTIONABLE — never generic ("something went wrong", "failed to save")
62
+ - Verify the form state after error allows retry without losing user input
63
+ - If the feature involves a resource that can conflict (duplicate slug, duplicate email, taken domain), test the conflict case explicitly
64
+ - For every API error the backend can return, verify the UI displays it meaningfully
65
+
66
+ ## Step 4 — Issue Tracker
67
+ Log all findings to `/logs/phase-10-ux-audit.md`:
68
+
69
+ | ID | Title | Severity | Confidence | Category | Location | Current | Expected | Fix | Status |
70
+ |----|-------|----------|------------|----------|----------|---------|----------|-----|--------|
71
+
72
+ Categories: UX, Visual, A11y, Copy, Performance, Edge Case
73
+
74
+ **Confidence scoring is mandatory.** Every finding includes a confidence score (0-100). If confidence is below 60, escalate to a second agent from a different universe (e.g., if Samwise found it, escalate to Padmé or Nightwing) to verify before including. If the second agent disagrees, drop the finding. High-confidence findings (90+) skip re-verification in Step 7.5.
75
+
76
+ ## Step 5 — Enhancement Specs (before coding)
77
+ For each fix: problem statement, proposed solution, acceptance criteria, a11y requirements (Samwise signs off), copy (Bilbo signs off). **Faramir** checks whether polish effort targets the right screens — high-traffic core flows, not low-traffic edge pages.
78
+
79
+ ## Step 6 — Implement (small batches — **Boromir** guards against hubris)
80
+ One batch = one flow or component cluster (max ~200 lines changed). **Boromir** checks: is the polish overengineered? Too many animations? Does complexity hurt performance? **Glorfindel** handles the hardest rendering (canvas, WebGL, SVG — conditional, only if the project has visual complexity). After each batch:
81
+ 1. Re-run the app
82
+ 2. Re-walk the affected flow
83
+ 3. Test keyboard navigation
84
+ 4. Update issue tracker status
85
+ 5. Run `npm test` to catch regressions
86
+
87
+ ## Step 7 — Harden Design System (**Haldir** guards boundaries)
88
+ Arwen leads. **Haldir** checks transitions between pages, states, and components — loading→success, error→retry, navigate→return. Are they smooth or jarring? Audit shared components (buttons, inputs, cards, modals, toasts) for:
89
+ - Consistent variants (primary, secondary, danger, ghost)
90
+ - Responsive behavior
91
+ - Keyboard focus styles
92
+ - Proper ARIA attributes
93
+
94
+ ## Step 7.5 — Pass 2: Re-Verify Fixes
95
+ After all fixes are applied, run a verification pass:
96
+ - **Samwise** re-audits accessibility on all modified components — verify a11y fixes didn't break other a11y properties
97
+ - **Radagast** re-checks edge cases on fixed flows — verify fixes hold under adversarial input
98
+ - **Merry** pair-verifies Pippin's edge case resolutions — one found it, the other confirms the fix
99
+
100
+ If Pass 2 finds new issues, fix and re-verify until Samwise, Radagast, and Merry sign off.
101
+
102
+ ## Step 8 — Regression Checklist
103
+ Add UX-specific items to the regression checklist in `/docs/qa-prompt.md`:
104
+
105
+ | # | Flow | A11y Check | Responsive Check | Status |
106
+ |---|------|-----------|-----------------|--------|
107
+
108
+ ## Step 9 — Deliverables
109
+ 1. UX_UI_AUDIT.md — all findings
110
+ 2. Updated regression checklist in qa-prompt.md
111
+ 3. Code fixes
112
+ 4. "Next improvements" backlog in phase log
113
+
114
+ ## Handoffs
115
+ - Backend issues → Stark, log to `/logs/handoffs.md`
116
+ - Security issues → Kenobi, log to `/logs/handoffs.md`
117
+ - Architecture issues → Picard, log to `/logs/handoffs.md`
118
+ - Non-UI bugs → Batman, log to `/logs/handoffs.md`
@@ -0,0 +1,189 @@
1
+ # /vault — Seldon's Time Vault
2
+
3
+ > *"I am Hari Seldon. The time I have is short, so I will not waste yours. What I have to say is important."*
4
+
5
+ Distill session intelligence into a portable, actionable briefing. The Time Vault preserves expensive analysis so the next session starts informed, not ignorant.
6
+
7
+ Read `/docs/methods/TIME_VAULT.md` for operating rules.
8
+
9
+ ## Arguments
10
+
11
+ Parse the user's input for flags:
12
+
13
+ | Flag | Behavior |
14
+ |------|----------|
15
+ | (none) | Generate vault briefing + pickup prompt, then confirm |
16
+ | `--seal` | Auto-confirm, write without review |
17
+ | `--open` | Read and display the most recent vault file |
18
+ | `--list` | List all vault files with dates and summaries |
19
+ | `--for <target>` | Tailor the briefing for a specific audience: `campaign` (next campaign session), `colleague` (human handoff), `trigger` (Thumper/cron pickup) |
20
+
21
+ ---
22
+
23
+ ## Step 0 — Gather Persisted State (Gaal Dornick)
24
+
25
+ Gaal Dornick is the recorder. She gathers every source of persisted state before Seldon synthesizes.
26
+
27
+ **Read these files (skip any that don't exist):**
28
+
29
+ 1. `/logs/build-state.md` — current build phase and progress
30
+ 2. `/logs/campaign-state.md` — campaign prophecy board, mission status
31
+ 3. `/docs/ROADMAP.md` — planned work, deferred items
32
+ 4. `/docs/PRD.md` — frontmatter only (project identity, stack, deploy target)
33
+
34
+ **Run these commands:**
35
+
36
+ 5. `git log --oneline -20` — recent commit history
37
+ 6. `git diff --stat` — uncommitted changes
38
+ 7. `git stash list` — stashed work
39
+
40
+ **Scan for session artifacts:**
41
+
42
+ 8. Check `/logs/` for any phase logs modified today
43
+ 9. Check `/logs/deep-current/` for situation model (if exists)
44
+ 10. Check `/logs/deploy-state.md` for deploy status (if exists)
45
+
46
+ Log what was found and what was missing. Missing files are not errors — they indicate project maturity stage.
47
+
48
+ ---
49
+
50
+ ## Step 1 — Extract Session Intelligence (Seldon)
51
+
52
+ Seldon synthesizes. He includes what is **expensive to re-derive** and excludes what is **cheap to re-read**.
53
+
54
+ ### Include (psychohistorical compression):
55
+
56
+ **Muster Findings** — Consolidated findings from any review agents that ran this session. Not the full finding tables — the actionable summary: what was found, what was fixed, what remains open.
57
+
58
+ **Decisions Made** — Architecture decisions, tradeoff resolutions, and "we chose X over Y because Z" moments. These are the most expensive items to re-derive because they require the full context that led to the decision.
59
+
60
+ **Failed Approaches** — What was tried and didn't work, with the specific reason it failed. Prevents the next session from re-attempting dead ends. Format: "Tried [approach]. Failed because [specific reason]. Instead, [what worked or what to try next]."
61
+
62
+ **Architecture Context** — Schema state, key relationships between modules, integration points, and any non-obvious wiring that a fresh session would need to trace through code to understand. Per-task file lists: which files were created/modified for each unit of work.
63
+
64
+ **Execution Plan** — What to do next. Ordered list of remaining work with dependencies noted. If a campaign is active, include the current mission status and what the next mission should be.
65
+
66
+ **Blocking Items** — Anything that prevents progress: missing credentials, unanswered PRD questions, external dependencies, known bugs without fixes.
67
+
68
+ **Test State** — Suite status (passing/failing), coverage gaps identified, any tests that were written but are currently skipped or failing.
69
+
70
+ ### Exclude (cheap to re-read):
71
+
72
+ - Full file contents (the code is in git)
73
+ - Complete PRD text (it's in `/docs/PRD.md`)
74
+ - Method doc contents (they're in `/docs/methods/`)
75
+ - Pattern references (they're in `/docs/patterns/`)
76
+ - Agent rosters (they're in `/docs/NAMING_REGISTRY.md`)
77
+
78
+ ---
79
+
80
+ ## Step 1.5 — Operational Learnings Sync
81
+
82
+ Before sealing the vault, check for operational learnings from this session:
83
+
84
+ 1. If `/debrief` ran and produced approved learnings → they're already in `docs/LEARNINGS.md`. Skip extraction. Note count in the vault's Open Items.
85
+ 2. If no debrief ran, check the session for operational discoveries (API quirks, decision rationale, root causes that took multiple attempts). Flag candidates using the extraction criteria from FIELD_MEDIC.md Step 2.5.
86
+ 3. Before writing, count `###` headings in `docs/LEARNINGS.md` (excluding `## Archived`). If >= 50, ask user to archive or promote before adding.
87
+ 4. Before appending, grep the file for each candidate's title/description. Skip duplicates.
88
+ 5. Present candidates to user for approval. Append approved entries to `docs/LEARNINGS.md` (created on first use).
89
+ 6. Do NOT duplicate learnings content in the vault narrative — the vault references the file, not the entries.
90
+
91
+ See ADR-035 and `/docs/methods/TIME_VAULT.md` Section 7 for full protocol.
92
+
93
+ ## Step 2 — Seal the Vault (Jake Sisko)
94
+
95
+ Jake Sisko writes the record. He produces two artifacts:
96
+
97
+ ### Artifact 1: Vault File
98
+
99
+ Write to `/logs/vault-YYYY-MM-DD.md` (use today's date). If a vault file for today already exists, append a counter: `vault-YYYY-MM-DD-2.md`.
100
+
101
+ **Format:**
102
+
103
+ ```markdown
104
+ ---
105
+ sealed: YYYY-MM-DDTHH:MM:SSZ
106
+ project: [from PRD frontmatter or CLAUDE.md]
107
+ branch: [current git branch]
108
+ commit: [HEAD short hash]
109
+ session_focus: [1-line summary of what this session accomplished]
110
+ ---
111
+
112
+ # Time Vault — [Date]
113
+
114
+ ## Session Summary
115
+ [2-3 sentences: what was accomplished, what changed, what's next]
116
+
117
+ ## Decisions
118
+ - [Decision]: [Rationale]
119
+
120
+ ## Failed Approaches
121
+ - Tried [X]: [Why it failed]
122
+
123
+ ## Architecture Context
124
+ [Key relationships, schema state, non-obvious wiring]
125
+
126
+ ### Files Modified
127
+ [Per-task file lists]
128
+
129
+ ## Open Items
130
+ - [ ] [Blocking item or remaining work]
131
+
132
+ ## Test State
133
+ [Suite status, coverage notes]
134
+
135
+ ## Next Session Plan
136
+ 1. [First priority]
137
+ 2. [Second priority]
138
+ 3. [Third priority]
139
+ ```
140
+
141
+ ### Artifact 2: Pickup Prompt
142
+
143
+ Generate a pickup prompt that the next session can paste verbatim to recover context:
144
+
145
+ ```
146
+ Read /logs/vault-YYYY-MM-DD.md for session context.
147
+ Then read /logs/build-state.md and /logs/campaign-state.md for operational state.
148
+ Resume from: [specific next action]
149
+ ```
150
+
151
+ Print the pickup prompt to the console so the user can copy it.
152
+
153
+ ---
154
+
155
+ ## Step 3 — Confirm
156
+
157
+ If `--seal` was NOT passed:
158
+
159
+ 1. Display the vault file contents
160
+ 2. Display the pickup prompt
161
+ 3. Ask: "Seal this vault? [Y/n]"
162
+ 4. On confirm: write the file, print the pickup prompt one final time
163
+ 5. On reject: ask what to change, revise, re-confirm
164
+
165
+ If `--seal` WAS passed:
166
+
167
+ 1. Write the file immediately
168
+ 2. Print the pickup prompt
169
+ 3. Print: "Vault sealed. The Seldon Plan continues."
170
+
171
+ ---
172
+
173
+ ## `--open` Behavior
174
+
175
+ 1. Find the most recent file matching `/logs/vault-*.md`
176
+ 2. Read and display its full contents
177
+ 3. Print the pickup prompt from that vault's metadata
178
+
179
+ ## `--list` Behavior
180
+
181
+ 1. List all `/logs/vault-*.md` files
182
+ 2. For each: date, session_focus from frontmatter, commit hash
183
+ 3. Print as a table
184
+
185
+ ## `--for <target>` Tailoring
186
+
187
+ - **campaign**: Emphasize mission status, next objectives, PRD progress. Pickup prompt includes `/campaign --resume`.
188
+ - **colleague**: Write for a human reader. Include project context that an AI session wouldn't need. Expand abbreviations. Add a "Project Background" section.
189
+ - **trigger**: Minimal format optimized for automated pickup. No prose — structured data only. Pickup prompt is a single executable line.
@@ -0,0 +1,108 @@
1
+ # /void — Bombadil's Forge Sync
2
+
3
+ ## Context Setup
4
+ 1. Read `/docs/methods/FORGE_KEEPER.md`
5
+ 2. Read `VERSION.md` (~30 lines — current version + history)
6
+
7
+ ## Step 0 — Tune the Forge (Bombadil)
8
+ Orient to the current state:
9
+ 1. Read `VERSION.md` — identify the current VoidForge version
10
+ 2. Run `git status` — note any uncommitted changes (warn if shared files are dirty)
11
+ 3. Check which shared files exist locally:
12
+ - `CLAUDE.md` (check both root and `.claude/CLAUDE.md` — if `.claude/CLAUDE.md` exists and root does not, use that path. If both exist, warn and don't create a duplicate.)
13
+ - `HOLOCRON.md`
14
+ - `.claude/commands/*`
15
+ - `docs/methods/*`, `docs/patterns/*`, `docs/NAMING_REGISTRY.md`
16
+ - `scripts/thumper/*`
17
+ - `VERSION.md` (conditional — only sync the "Current:" line, preserve project-specific version history rows)
18
+ - `CHANGELOG.md`
19
+ 4. Announce the current version and that you're checking for updates
20
+
21
+ ## Step 1 — Listen to the River (Goldberry)
22
+ Fetch the latest from upstream. Two transports supported:
23
+
24
+ **Transport A (npm — v21.0+):** If `npx voidforge` is available:
25
+ 1. Run `npx voidforge update` — uses the methodology diff/apply system
26
+ 2. This handles version comparison, diffing, and applying automatically
27
+ 3. If no changes → "The forge burns bright! You're on the latest." → Stop
28
+ 4. If changes applied → skip to Step 4 (npm transport handles Steps 2-3)
29
+
30
+ **Transport B (git — legacy):** If `npx voidforge` is not installed:
31
+ 1. Run `git remote -v` — look for a remote pointing to `tmcleod3/voidforge`
32
+ 2. If no VoidForge remote exists → add: `git remote add voidforge https://github.com/tmcleod3/voidforge.git`
33
+ 3. Run `git fetch <remote> main` — get the latest main branch
34
+ 4. Read remote VERSION.md: `git show <remote>/main:VERSION.md`
35
+ 5. Compare versions numerically (parse major.minor.patch as integers, not strings)
36
+ - If current version matches or is ahead → "The forge burns bright!" → Stop
37
+ - If behind → continue to Step 2
38
+
39
+ ## Step 1.5 — Spring Cleaning (Treebeard)
40
+ Check the **Migration Registry** in `/docs/methods/FORGE_KEEPER.md` for one-time cleanup actions:
41
+ 1. Determine which migrations apply based on local version → upstream version range
42
+ 2. For each applicable migration, scan for the listed files
43
+ 3. **Fingerprint ambiguous files** before marking for removal — files like `docs/ARCHITECTURE.md` could be the user's own. Only remove if they contain VoidForge markers (e.g., "Version: 15.2.1", references to `wizard/`, "VoidForge" in header)
44
+ 4. **Always-remove files** (PRD-VOIDFORGE.md, PROPHECY.md, WORKSHOP.md, etc.) don't need fingerprinting — they're unambiguously VoidForge artifacts
45
+ 5. **wizard/ is NOT auto-removed.** Scaffold/core users may have pulled it via Full-tier commands (/cultivation, /dangerroom, /grow, /treasury, /portfolio, /current). Check: if package.json has dependencies or .voidforge/ exists on disk → user is running Full-tier, keep wizard/. If minimal package.json and no runtime data → ask the user whether to keep or remove
46
+ 6. Present the cleanup plan alongside the update plan in Step 2
47
+ 7. Apply cleanup in Step 3 alongside updates — same confirmation prompt ("all / selective / skip")
48
+ 8. For tracked `logs/*` files, use `git rm --cached` (untrack but keep on disk)
49
+ 9. If `package.json` has `dependencies`/`devDependencies` AND wizard/ is being kept → leave package.json alone. Only strip to minimal if wizard/ is being removed
50
+
51
+ ## Step 2 — Walk the Forest (Treebeard)
52
+ Compare every shared methodology file:
53
+ 1. For each shared file, compare local vs upstream using `git diff HEAD <remote>/main -- <path>`
54
+ 2. Also check for new files on upstream that don't exist locally: `git diff --name-status HEAD <remote>/main -- <shared paths>`
55
+ 3. Categorize each file:
56
+ - **New** — exists upstream, not locally
57
+ - **Updated** — content differs between local and upstream
58
+ - **Unchanged** — identical
59
+ - **Locally modified** — check with `git diff HEAD -- <path>` to see if user has uncommitted local changes to a file that upstream also changed
60
+ 4. For each changed file, summarize the changes in plain language (read the diff, describe what's new/different)
61
+ 5. Present the full update plan to the user:
62
+ - List new files with descriptions
63
+ - List updated files with change summaries
64
+ - Flag locally modified files with conflict warnings
65
+ - Count unchanged files (don't list them)
66
+ 6. Ask the user: "Shall old Tom sing these changes into being? (all / selective / skip)"
67
+
68
+ ## Step 3 — Carry the Message (Radagast)
69
+ Apply updates based on user's choice:
70
+ 1. For **"all"** — update every file in the manifest
71
+ 2. For **"selective"** — walk through each file, ask yes/no
72
+ 3. For **"skip"** — stop gracefully
73
+
74
+ For each file being updated:
75
+ - **New files:** `git show <remote>/main:<path>` and write to local path
76
+ - **Updated files (no local mods):** Replace with upstream version via `git show <remote>/main:<path>`
77
+ - **Updated files (with local mods):**
78
+ - For `CLAUDE.md`: Preserve the `## Project` section (name, one-liner, domain, repo) and any user-added `## Coding Standards` entries. Update all methodology sections (Slash Commands, Team, Docs Reference, Release Tiers, etc.)
79
+ - For other files: Show both versions, let user choose, or attempt to merge non-overlapping changes
80
+ - **Never touch:** `docs/PRD.md`, `docs/LESSONS.md`, `logs/*`, `wizard/*`, `scripts/* (except scripts/thumper/)`, `.env`, `.claude/settings.json`, `package.json`, application code
81
+
82
+ ## Step 4 — The Song Continues (Bombadil)
83
+ Verify and celebrate:
84
+ 1. Confirm all updated files were written correctly (spot-check a couple)
85
+ 2. Update local `VERSION.md` current version to match upstream if it wasn't already in the shared file set
86
+ 3. Log the sync — append to `/logs/forge-sync.md`:
87
+ ```
88
+ ## Forge Sync — [DATE]
89
+ - Updated from v[OLD] to v[NEW]
90
+ - Files synced: [count]
91
+ - New: [list or "none"]
92
+ - Updated: [list]
93
+ - Conflicts: [list or "none"]
94
+ ```
95
+ 4. Note any handoffs:
96
+ - New slash commands added → mention what they do
97
+ - New method docs → mention what agent/domain they cover
98
+ - New patterns → mention what they demonstrate
99
+ - Changes to build protocol → recommend reviewing before next `/build`
100
+ 5. **Content impact check:** If NAMING_REGISTRY.md or CLAUDE.md was updated, diff the agent/command lists against the previous version. If new agents or commands were added, explicitly announce them: "New in this update: [Agent Name] ([role]). New commands: [/command]." Then warn: **"If your project displays agent counts, command lists, references the team roster, or assigns agents to protocol phases (e.g., marketing sites, docs pages, about pages, protocol timelines), update those data sources to match. New agents may need to be added to protocol phase assignments — check which phases they should participate in."** This is a handoff, not an auto-fix — `/void` doesn't know your project's data model.
101
+ - If `VERSION.md` was updated, check if the project has any pages displaying version/release history. Flag versions in VERSION.md not reflected in site content.
102
+ 6. Announce completion with flair
103
+
104
+ ## Handoffs
105
+ - If build protocol phases changed → recommend **Picard** review (`/architect`)
106
+ - If security method updated → recommend **Kenobi** review (`/security`)
107
+ - If new patterns added → note for **Stark** and **Galadriel** to review
108
+ - If the update is a MAJOR version → strongly recommend reading the CHANGELOG before continuing work