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.
- package/dist/.claude/commands/ai.md +69 -0
- package/dist/.claude/commands/architect.md +121 -0
- package/dist/.claude/commands/assemble.md +201 -0
- package/dist/.claude/commands/assess.md +75 -0
- package/dist/.claude/commands/blueprint.md +135 -0
- package/dist/.claude/commands/build.md +116 -0
- package/dist/.claude/commands/campaign.md +201 -0
- package/dist/.claude/commands/cultivation.md +166 -0
- package/dist/.claude/commands/current.md +128 -0
- package/dist/.claude/commands/dangerroom.md +74 -0
- package/dist/.claude/commands/debrief.md +178 -0
- package/dist/.claude/commands/deploy.md +99 -0
- package/dist/.claude/commands/devops.md +143 -0
- package/dist/.claude/commands/gauntlet.md +140 -0
- package/dist/.claude/commands/git.md +104 -0
- package/dist/.claude/commands/grow.md +146 -0
- package/dist/.claude/commands/imagine.md +126 -0
- package/dist/.claude/commands/portfolio.md +50 -0
- package/dist/.claude/commands/prd.md +113 -0
- package/dist/.claude/commands/qa.md +107 -0
- package/dist/.claude/commands/review.md +151 -0
- package/dist/.claude/commands/security.md +100 -0
- package/dist/.claude/commands/test.md +96 -0
- package/dist/.claude/commands/thumper.md +116 -0
- package/dist/.claude/commands/treasury.md +100 -0
- package/dist/.claude/commands/ux.md +118 -0
- package/dist/.claude/commands/vault.md +189 -0
- package/dist/.claude/commands/void.md +108 -0
- package/dist/CHANGELOG.md +1918 -0
- package/dist/CLAUDE.md +250 -0
- package/dist/HOLOCRON.md +856 -0
- package/dist/VERSION.md +123 -0
- package/dist/docs/NAMING_REGISTRY.md +478 -0
- package/dist/docs/methods/AI_INTELLIGENCE.md +276 -0
- package/dist/docs/methods/ASSEMBLER.md +142 -0
- package/dist/docs/methods/BACKEND_ENGINEER.md +165 -0
- package/dist/docs/methods/BUILD_JOURNAL.md +185 -0
- package/dist/docs/methods/BUILD_PROTOCOL.md +426 -0
- package/dist/docs/methods/CAMPAIGN.md +568 -0
- package/dist/docs/methods/CONTEXT_MANAGEMENT.md +189 -0
- package/dist/docs/methods/DEEP_CURRENT.md +184 -0
- package/dist/docs/methods/DEVOPS_ENGINEER.md +295 -0
- package/dist/docs/methods/FIELD_MEDIC.md +261 -0
- package/dist/docs/methods/FORGE_ARTIST.md +108 -0
- package/dist/docs/methods/FORGE_KEEPER.md +268 -0
- package/dist/docs/methods/GAUNTLET.md +344 -0
- package/dist/docs/methods/GROWTH_STRATEGIST.md +466 -0
- package/dist/docs/methods/HEARTBEAT.md +168 -0
- package/dist/docs/methods/MCP_INTEGRATION.md +139 -0
- package/dist/docs/methods/MUSTER.md +148 -0
- package/dist/docs/methods/PRD_GENERATOR.md +186 -0
- package/dist/docs/methods/PRODUCT_DESIGN_FRONTEND.md +250 -0
- package/dist/docs/methods/QA_ENGINEER.md +337 -0
- package/dist/docs/methods/RELEASE_MANAGER.md +145 -0
- package/dist/docs/methods/SECURITY_AUDITOR.md +320 -0
- package/dist/docs/methods/SUB_AGENTS.md +335 -0
- package/dist/docs/methods/SYSTEMS_ARCHITECT.md +171 -0
- package/dist/docs/methods/TESTING.md +359 -0
- package/dist/docs/methods/THUMPER.md +175 -0
- package/dist/docs/methods/TIME_VAULT.md +120 -0
- package/dist/docs/methods/TREASURY.md +184 -0
- package/dist/docs/methods/TROUBLESHOOTING.md +265 -0
- package/dist/docs/patterns/README.md +52 -0
- package/dist/docs/patterns/ad-billing-adapter.ts +537 -0
- package/dist/docs/patterns/ad-platform-adapter.ts +421 -0
- package/dist/docs/patterns/ai-classifier.ts +195 -0
- package/dist/docs/patterns/ai-eval.ts +272 -0
- package/dist/docs/patterns/ai-orchestrator.ts +341 -0
- package/dist/docs/patterns/ai-router.ts +194 -0
- package/dist/docs/patterns/ai-tool-schema.ts +237 -0
- package/dist/docs/patterns/api-route.ts +241 -0
- package/dist/docs/patterns/backtest-engine.ts +499 -0
- package/dist/docs/patterns/browser-review.ts +292 -0
- package/dist/docs/patterns/combobox.tsx +300 -0
- package/dist/docs/patterns/component.tsx +262 -0
- package/dist/docs/patterns/daemon-process.ts +338 -0
- package/dist/docs/patterns/data-pipeline.ts +297 -0
- package/dist/docs/patterns/database-migration.ts +466 -0
- package/dist/docs/patterns/e2e-test.ts +629 -0
- package/dist/docs/patterns/error-handling.ts +312 -0
- package/dist/docs/patterns/execution-safety.ts +601 -0
- package/dist/docs/patterns/financial-transaction.ts +342 -0
- package/dist/docs/patterns/funding-plan.ts +462 -0
- package/dist/docs/patterns/game-entity.ts +137 -0
- package/dist/docs/patterns/game-loop.ts +113 -0
- package/dist/docs/patterns/game-state.ts +143 -0
- package/dist/docs/patterns/job-queue.ts +225 -0
- package/dist/docs/patterns/kongo-integration.ts +164 -0
- package/dist/docs/patterns/middleware.ts +363 -0
- package/dist/docs/patterns/mobile-screen.tsx +139 -0
- package/dist/docs/patterns/mobile-service.ts +167 -0
- package/dist/docs/patterns/multi-tenant.ts +382 -0
- package/dist/docs/patterns/oauth-token-lifecycle.ts +223 -0
- package/dist/docs/patterns/outbound-rate-limiter.ts +260 -0
- package/dist/docs/patterns/prompt-template.ts +195 -0
- package/dist/docs/patterns/revenue-source-adapter.ts +311 -0
- package/dist/docs/patterns/service.ts +224 -0
- package/dist/docs/patterns/sse-endpoint.ts +118 -0
- package/dist/docs/patterns/stablecoin-adapter.ts +511 -0
- package/dist/docs/patterns/third-party-script.ts +68 -0
- package/dist/scripts/thumper/gom-jabbar.sh +241 -0
- package/dist/scripts/thumper/relay.sh +610 -0
- package/dist/scripts/thumper/scan.sh +359 -0
- package/dist/scripts/thumper/thumper.sh +190 -0
- package/dist/scripts/thumper/water-rings.sh +76 -0
- package/package.json +1 -1
- 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
|