feed-the-machine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/bin/generate-manifest.mjs +210 -0
  4. package/bin/install.mjs +114 -0
  5. package/ftm/SKILL.md +88 -0
  6. package/ftm-audit/SKILL.md +146 -0
  7. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -0
  8. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -0
  9. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -0
  10. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -0
  11. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -0
  12. package/ftm-audit/scripts/run-knip.sh +23 -0
  13. package/ftm-audit.yml +2 -0
  14. package/ftm-brainstorm/SKILL.md +379 -0
  15. package/ftm-brainstorm/evals/evals.json +100 -0
  16. package/ftm-brainstorm/evals/promptfoo.yaml +109 -0
  17. package/ftm-brainstorm/references/agent-prompts.md +224 -0
  18. package/ftm-brainstorm/references/plan-template.md +121 -0
  19. package/ftm-brainstorm.yml +2 -0
  20. package/ftm-browse/SKILL.md +415 -0
  21. package/ftm-browse/daemon/browser-manager.ts +206 -0
  22. package/ftm-browse/daemon/bun.lock +30 -0
  23. package/ftm-browse/daemon/cli.ts +347 -0
  24. package/ftm-browse/daemon/commands.ts +410 -0
  25. package/ftm-browse/daemon/main.ts +357 -0
  26. package/ftm-browse/daemon/package.json +17 -0
  27. package/ftm-browse/daemon/server.ts +189 -0
  28. package/ftm-browse/daemon/snapshot.ts +519 -0
  29. package/ftm-browse/daemon/tsconfig.json +22 -0
  30. package/ftm-browse.yml +4 -0
  31. package/ftm-codex-gate/SKILL.md +302 -0
  32. package/ftm-codex-gate.yml +2 -0
  33. package/ftm-config/SKILL.md +310 -0
  34. package/ftm-config.default.yml +80 -0
  35. package/ftm-config.yml +2 -0
  36. package/ftm-council/SKILL.md +132 -0
  37. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -0
  38. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -0
  39. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -0
  40. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -0
  41. package/ftm-council/references/protocols/PREREQUISITES.md +47 -0
  42. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -0
  43. package/ftm-council.yml +2 -0
  44. package/ftm-dashboard.yml +4 -0
  45. package/ftm-debug/SKILL.md +146 -0
  46. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -0
  47. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -0
  48. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -0
  49. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -0
  50. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -0
  51. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -0
  52. package/ftm-debug.yml +2 -0
  53. package/ftm-diagram/SKILL.md +233 -0
  54. package/ftm-diagram.yml +2 -0
  55. package/ftm-executor/SKILL.md +657 -0
  56. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -0
  57. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -0
  58. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -0
  59. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -0
  60. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -0
  61. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -0
  62. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -0
  63. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -0
  64. package/ftm-executor/references/protocols/MODEL-PROFILE.md +44 -0
  65. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -0
  66. package/ftm-executor/runtime/ftm-runtime.mjs +252 -0
  67. package/ftm-executor/runtime/package.json +8 -0
  68. package/ftm-executor.yml +2 -0
  69. package/ftm-git/SKILL.md +195 -0
  70. package/ftm-git/evals/evals.json +26 -0
  71. package/ftm-git/evals/promptfoo.yaml +75 -0
  72. package/ftm-git/hooks/post-commit-experience.sh +92 -0
  73. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -0
  74. package/ftm-git/references/protocols/REMEDIATION.md +139 -0
  75. package/ftm-git/scripts/pre-commit-secrets.sh +110 -0
  76. package/ftm-git.yml +2 -0
  77. package/ftm-intent/SKILL.md +198 -0
  78. package/ftm-intent.yml +2 -0
  79. package/ftm-map.yml +2 -0
  80. package/ftm-mind/SKILL.md +986 -0
  81. package/ftm-mind/evals/promptfoo.yaml +142 -0
  82. package/ftm-mind/references/blackboard-schema.md +328 -0
  83. package/ftm-mind/references/complexity-guide.md +110 -0
  84. package/ftm-mind/references/event-registry.md +299 -0
  85. package/ftm-mind/references/mcp-inventory.md +296 -0
  86. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -0
  87. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -0
  88. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -0
  89. package/ftm-mind/references/reflexion-protocol.md +249 -0
  90. package/ftm-mind/references/routing/SCENARIOS.md +22 -0
  91. package/ftm-mind/references/routing-scenarios.md +35 -0
  92. package/ftm-mind.yml +2 -0
  93. package/ftm-pause/SKILL.md +133 -0
  94. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -0
  95. package/ftm-pause/references/protocols/VALIDATION.md +80 -0
  96. package/ftm-pause.yml +2 -0
  97. package/ftm-researcher.yml +2 -0
  98. package/ftm-resume/SKILL.md +166 -0
  99. package/ftm-resume/references/protocols/VALIDATION.md +172 -0
  100. package/ftm-resume.yml +2 -0
  101. package/ftm-retro/SKILL.md +189 -0
  102. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -0
  103. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -0
  104. package/ftm-retro.yml +2 -0
  105. package/ftm-routine.yml +4 -0
  106. package/ftm-state/blackboard/context.json +23 -0
  107. package/ftm-state/blackboard/experiences/index.json +9 -0
  108. package/ftm-state/blackboard/patterns.json +6 -0
  109. package/ftm-state/schemas/context.schema.json +130 -0
  110. package/ftm-state/schemas/experience-index.schema.json +77 -0
  111. package/ftm-state/schemas/experience.schema.json +78 -0
  112. package/ftm-state/schemas/patterns.schema.json +44 -0
  113. package/ftm-upgrade/SKILL.md +153 -0
  114. package/ftm-upgrade/scripts/check-version.sh +76 -0
  115. package/ftm-upgrade/scripts/upgrade.sh +143 -0
  116. package/ftm-upgrade.yml +2 -0
  117. package/ftm.yml +2 -0
  118. package/install.sh +102 -0
  119. package/package.json +74 -0
  120. package/uninstall.sh +25 -0
@@ -0,0 +1,186 @@
1
+ # Skill State Capture and Restoration Protocols
2
+
3
+ This document defines exactly what state must be captured (by ftm-pause) and restored (by ftm-resume) for each ftm skill. It is the shared contract between the two skills.
4
+
5
+ ---
6
+
7
+ ## ftm-brainstorm
8
+
9
+ ### State to Capture
10
+
11
+ **Phase tracking:**
12
+ - Current phase (0, 1, 2, or 3)
13
+ - If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
14
+ - If Phase 2: how many research+challenge turns have been completed
15
+ - If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
16
+
17
+ **Phase 0 context:**
18
+ - The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
19
+ - Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
20
+
21
+ **Phase 1 — Intake:**
22
+ - The user's original idea/request (verbatim if short, summarized if long)
23
+ - If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
24
+ - All user answers from each completed round
25
+ - Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
26
+ - Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
27
+ - If Path B: the novelty map (which claims are solved/partially solved/novel)
28
+
29
+ **Phase 2 — Research + Challenge Loop:**
30
+ - Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
31
+ - Every challenge posed and the user's response
32
+ - Every question asked and the user's answer
33
+ - Accumulated decisions and direction chosen
34
+ - Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
35
+ - The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
36
+
37
+ **Phase 3 — Plan Generation:**
38
+ - Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
39
+ - The plan content generated so far
40
+ - The plan file path if it's been saved
41
+ - User feedback on each section
42
+
43
+ ### Restoration Instructions
44
+
45
+ On resume, reload Phase 0 context into the project context register. Reload the full context register from Phase 2 state so the next research sprint does not re-search prior ground. Resume at exactly the turn number and phase detail captured — if the user was mid-Phase 2, the next action is a research sprint responding to their last answer.
46
+
47
+ ---
48
+
49
+ ## ftm-executor
50
+
51
+ ### State to Capture
52
+
53
+ **Plan context:**
54
+ - Plan file path (absolute)
55
+ - Plan title and summary
56
+ - Total task count
57
+ - Agent team composition (agent names, roles, task assignments)
58
+
59
+ **Execution progress:**
60
+ - Current wave number
61
+ - For each task: status (pending / in-progress / complete / failed / blocked)
62
+ - For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
63
+ - For in-progress tasks: which agent is working on it, what's been done so far
64
+ - For failed/blocked tasks: what went wrong, error details
65
+
66
+ **Worktree state:**
67
+ - List of all worktree branches and their paths
68
+ - Which worktrees are active vs merged vs abandoned
69
+ - Any merge results or conflicts encountered
70
+ - The main/working branch name
71
+
72
+ **Verification state:**
73
+ - Post-task audit results for each completed task
74
+ - Any manual intervention items outstanding
75
+ - Full test suite status (last run result)
76
+
77
+ ### Restoration Instructions
78
+
79
+ On resume, verify that all worktrees in the saved state still exist on disk (`git worktree list`). If any are missing, note them for the user before continuing. Resume from the current wave, skipping tasks already marked complete. If a task was in-progress, treat it as needing restart from the beginning of that task.
80
+
81
+ ---
82
+
83
+ ## ftm-debug
84
+
85
+ ### State to Capture
86
+
87
+ **Problem context:**
88
+ - The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
89
+ - Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
90
+ - The investigation plan (likely category, which agents deployed, worktree strategy)
91
+
92
+ **Phase 1 — Investigation results:**
93
+ - Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
94
+ - Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
95
+ - Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
96
+ - Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
97
+
98
+ **Phase 2 — Synthesis & Solve:**
99
+ - Cross-reference analysis (how findings align or conflict)
100
+ - Recommended fix approach
101
+ - Solver attempts: which hypotheses tried, what was implemented, commit hashes
102
+ - FIX-SUMMARY.md content if fix was applied
103
+
104
+ **Phase 3 — Review & Verify:**
105
+ - Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
106
+ - REVIEW-VERDICT.md content
107
+ - How many solver-reviewer iterations completed
108
+ - Outstanding issues from review
109
+
110
+ **Worktree state:**
111
+ - debug-instrumentation branch and path
112
+ - debug-reproduction branch and path
113
+ - debug-fix branch and path (including any fix attempt sub-branches)
114
+ - Which worktrees still exist vs cleaned up
115
+
116
+ ### Restoration Instructions
117
+
118
+ On resume, verify debug worktrees still exist. Re-read any artifact files referenced in the state (HYPOTHESES.md, REPRODUCTION.md, etc.) to reload their content into context. Resume at the exact phase captured — if mid-Phase 2, proceed to the next solver iteration using the saved hypotheses and prior solver attempts.
119
+
120
+ ---
121
+
122
+ ## ftm-council
123
+
124
+ ### State to Capture
125
+
126
+ **Council setup:**
127
+ - The council prompt (the framed problem statement)
128
+ - Whether the user confirmed/edited the prompt
129
+ - Prerequisites check result (codex and gemini available?)
130
+
131
+ **Deliberation state:**
132
+ - Current round number (1-5)
133
+ - For each completed round, each model's full response:
134
+ - Research summary (what files examined, what was found)
135
+ - Position (their stance)
136
+ - Reasoning (with code references)
137
+ - Concerns
138
+ - Confidence level
139
+ - For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
140
+ - Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
141
+
142
+ **Outcome:**
143
+ - Whether consensus has been reached (and if so, which 2 models agreed)
144
+ - The verdict if delivered (decision, agreed by, dissent, evidence basis)
145
+ - If no consensus after 5 rounds: the synthesis and options presented
146
+
147
+ ### Restoration Instructions
148
+
149
+ On resume, re-present the council prompt and the round history as a summary before continuing. If consensus was already reached, surface the verdict and ask the user what they want next. If still in deliberation, resume with the next model dispatch using full prior-round context.
150
+
151
+ ---
152
+
153
+ ## ftm-audit
154
+
155
+ ### State to Capture
156
+
157
+ **Trigger context:**
158
+ - What triggered the audit (manual invocation, post-task from executor, specific files/scope)
159
+ - Scope (full project, specific files, specific task's changes)
160
+
161
+ **Phase 0 — Project patterns:**
162
+ - Detected framework, router, state management, API layer, build tool
163
+ - Active dimensions (D1-D5) and their configuration
164
+ - Any unusual patterns noted
165
+
166
+ **Layer 1 — knip results:**
167
+ - Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
168
+ - Each finding with file:line
169
+
170
+ **Layer 2 — Adversarial audit results:**
171
+ - Each finding with type, location, evidence, and which dimension failed
172
+ - Wiring contract checks if applicable (which checks passed, which failed)
173
+
174
+ **Layer 3 — Auto-fix results:**
175
+ - Fixes applied (finding, fix description, verification result)
176
+ - Manual intervention items (finding, reason auto-fix skipped, suggested action)
177
+ - Re-verification results
178
+ - Current iteration count (of max 3)
179
+
180
+ **Final status:**
181
+ - PASS or FAIL
182
+ - Remaining issues count and details
183
+
184
+ ### Restoration Instructions
185
+
186
+ On resume, skip any layers already completed. If mid-Layer 3 auto-fix loop, restore the iteration count and continue from where it left off. If the final status was PASS, surface the result and confirm with the user before doing anything further.
@@ -0,0 +1,80 @@
1
+ # State Validation Logic
2
+
3
+ This document defines all validation checks performed before and after writing state to disk.
4
+
5
+ ---
6
+
7
+ ## Pre-Write Validation
8
+
9
+ Before writing `~/.claude/ftm-state/STATE.md`, verify the following:
10
+
11
+ ### Skill Detection Confirmed
12
+
13
+ - A ftm skill was positively identified from the conversation context
14
+ - If no skill detected: halt and tell the user "No active ftm session detected" — do not write a blank or partial state file
15
+
16
+ ### Required Frontmatter Fields Present
17
+
18
+ The YAML frontmatter block must contain:
19
+ - `skill` — one of: ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, ftm-audit
20
+ - `phase` — the current phase number or stage name for that skill
21
+ - `phase_detail` — a human-readable one-liner about exactly where the session stopped
22
+ - `timestamp` — ISO 8601 format (YYYY-MM-DDThh:mm:ss)
23
+ - `project_dir` — absolute path to the working directory
24
+
25
+ Git fields (`git_branch`, `git_commit`) are required only if a git repo is present. If no repo, omit them rather than leaving them blank.
26
+
27
+ ### State File Contains Actual Content
28
+
29
+ - "Next Step" section must be specific and actionable — not a placeholder like "[describe next step]"
30
+ - Decisions Made section must reflect real decisions from the conversation, not template text
31
+ - If the session was very early (e.g., Phase 0 only), the "Captured" summary should say so explicitly
32
+
33
+ ### Artifacts Verified
34
+
35
+ For each artifact path listed in the state file:
36
+ - The file must exist on disk at the recorded path
37
+ - If an artifact path is stale (file was deleted or moved), note it with `[NOT FOUND]` rather than silently omitting it
38
+
39
+ ---
40
+
41
+ ## Post-Write Validation
42
+
43
+ After writing the state file, verify:
44
+
45
+ ### File Was Written Successfully
46
+
47
+ - The state file exists at `~/.claude/ftm-state/STATE.md`
48
+ - File size is non-zero
49
+ - The frontmatter block is parseable (starts with `---`, contains required keys)
50
+
51
+ ### State Is Resumable
52
+
53
+ The written state must pass the "cold start test": a fresh conversation with no prior context should be able to reconstruct the session from the state file alone, without needing to ask the user "where were we?" Concretely:
54
+ - The skill and phase are unambiguous
55
+ - The Next Step section tells ftm-resume exactly what action to take first
56
+ - Enough prior context is captured that the first response after resume won't require re-explaining the project
57
+
58
+ ---
59
+
60
+ ## Edge Case Handling
61
+
62
+ ### Multiple Skills Active
63
+
64
+ If two ftm skills were invoked in the same conversation (e.g., brainstorm followed by executor), save the most recently active one to `STATE.md`. Save the other to `STATE-[skill].md` in the same directory. Both files go through the same validation.
65
+
66
+ ### Overwriting Existing State
67
+
68
+ Overwrite `STATE.md` without prompting. The previous state was either already resumed and consumed, or abandoned. Validation still applies to the new file.
69
+
70
+ ### No Git Repo
71
+
72
+ Skip `git_branch` and `git_commit` fields entirely. Record only `project_dir`. Do not write empty string values for these fields — omit them from the frontmatter block.
73
+
74
+ ### Very Early Session (Phase 0 or Step 1 Only)
75
+
76
+ Capture whatever exists. Even a Phase 0 repo scan is worth saving. The "Next Step" section should note that the user needs to answer the first intake question. This passes validation — sparse state is valid state.
77
+
78
+ ### Large State Files
79
+
80
+ Do not truncate. Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. The state file can be large. Completeness is required for reliable restoration.
package/ftm-pause.yml ADDED
@@ -0,0 +1,2 @@
1
+ name: ftm-pause
2
+ description: Save the current ftm skill session state so work can be resumed in a new conversation. Use when user says "pause", "save state", "I need to stop", "continue later", "ftm pause", "save progress", or is about to end a session mid-workflow. Works with any ftm skill (brainstorm, executor, debug, council, audit).
@@ -0,0 +1,2 @@
1
+ name: ftm-researcher
2
+ description: Deep parallel research engine with 7 domain-specialized finder agents, adversarial review via ftm-council, adaptive wave-based search, and codebase awareness. Use when the user wants thorough research on any topic — "research X", "find out about Y", "what's the state of the art on Z", "compare approaches to W", "deep dive into X", "look into Y". Also invoked by ftm-brainstorm for its research sprints. Triggers on "research", "investigate", "deep dive", "state of the art", "compare", "find examples of", "what's out there for", "how do others handle", "find me evidence", "look into". For idea exploration and brainstorming, use ftm-brainstorm instead (which calls ftm-researcher internally for research).
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: ftm-resume
3
+ description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.
4
+ ---
5
+
6
+ ## Events
7
+
8
+ ### Emits
9
+ - `session_resumed` — when a saved session state has been validated and the appropriate ftm skill is re-invoked with restored context
10
+ - `task_completed` — when the resume workflow finishes (skill re-invoked and state file archived)
11
+
12
+ ### Listens To
13
+ (none — ftm-resume is explicitly invoked by the user and does not respond to events)
14
+
15
+ # FTM Resume — Session State Restoration
16
+
17
+ Read a saved ftm session state file and seamlessly continue the workflow in a fresh conversation. The user should feel like they never left — same context, same decisions, same progress, picking up at exactly the right step.
18
+
19
+ ## Why This Exists
20
+
21
+ FTM skills are long-running, multi-phase workflows. A brainstorm session might span 10+ turns of research and questioning. An executor session might be mid-way through wave 2 of a 5-wave plan. A debug war room might have 4 investigation agents completed and a solver mid-attempt. When these sessions end — whether by choice, crash, or context exhaustion — the work shouldn't be lost. This skill reads the state file that ftm-pause saved and reconstructs the session so the appropriate ftm skill can continue exactly where it stopped.
22
+
23
+ ---
24
+
25
+ ## Step 1: Read and Validate
26
+
27
+ Read `~/.claude/ftm-state/STATE.md`.
28
+
29
+ Run all validation checks before proceeding. See `references/protocols/VALIDATION.md` for the full validation protocol covering:
30
+ - State file integrity and required frontmatter fields
31
+ - Version compatibility between saved state and installed skills
32
+ - Project directory existence
33
+ - Git state drift (branch changes, new commits)
34
+ - Worktree branch availability (executor and debug)
35
+ - Plan file existence (executor)
36
+ - Artifact file availability (debug)
37
+ - Session staleness (< 24h / 1–7 days / > 7 days)
38
+ - Skill availability
39
+
40
+ Present a consolidated validation summary before asking the user to confirm. A single block-level failure prevents resumption. Warnings require user acknowledgment.
41
+
42
+ ---
43
+
44
+ ## Step 2: Parse the Frontmatter
45
+
46
+ Extract required YAML frontmatter: `skill`, `phase`, `timestamp`, `project_dir`. Optional fields: `phase_detail`, `git_branch`, `git_commit`.
47
+
48
+ ---
49
+
50
+ ## Step 3: Present the Resume Summary
51
+
52
+ After validation passes (or the user acknowledges warnings), present the resume summary for the relevant skill.
53
+
54
+ All summaries follow this structure — adapt the "Where we left off" fields to the skill:
55
+
56
+ ```
57
+ Resuming ftm-{skill} session from {timestamp}
58
+ Project: {project_dir}
59
+
60
+ Where we left off:
61
+ [skill-specific fields — see below]
62
+
63
+ Next step:
64
+ {next_step from state file}
65
+
66
+ Ready to continue? (or type new context to add before resuming)
67
+ ```
68
+
69
+ **ftm-brainstorm fields:**
70
+ - Phase: {phase} — {phase_detail}, Path: {A or B}
71
+ - Research sprints completed: {N}, Challenge turns: {N}
72
+ - Decisions locked: {N} (list them), Open questions: {N} (list them)
73
+
74
+ **ftm-executor fields:**
75
+ - Wave: {current_wave} of {total_waves}, Tasks: {completed}/{total} complete
76
+ - Done / In-progress (with agent) / Pending / Failed+Blocked (list each)
77
+ - Worktrees: {N active}, Last audit: {result}
78
+
79
+ **ftm-debug fields:**
80
+ - Phase: {phase} — {phase_detail}, Problem: {one-line summary}
81
+ - Investigation: Instrumenter / Researcher / Reproducer / Hypothesizer (complete/pending + finding)
82
+ - Solver attempts: {N}, Reviewer verdict: {if any}, Worktrees: {list}
83
+
84
+ **ftm-council fields:**
85
+ - Council prompt: {brief summary}, Round: {N} of 5
86
+ - Each model's one-line position, Consensus: {Yes/No + detail}
87
+
88
+ **ftm-audit fields:**
89
+ - Trigger: {what triggered it}
90
+ - Phase 0 / Layer 1 / Layer 2 / Layer 3: {complete with findings / pending}
91
+ - Status: {PASS/FAIL/in-progress}
92
+
93
+ ---
94
+
95
+ ## Step 4: Handle User Response
96
+
97
+ **"Yes" / "Continue" / "Go"** — proceed to Step 5.
98
+
99
+ **New context / additional information** — the user may say "yes, but also..." or provide updated information. Capture this as a "Post-pause update" section in the Context Snapshot. Pass it forward when invoking the skill.
100
+
101
+ **"Start fresh" / "Never mind"** — archive the state file (see Step 6) and tell the user: "State archived. You can start a fresh session with /ftm-{skill}."
102
+
103
+ ---
104
+
105
+ ## Step 5: Invoke the Appropriate FTM Skill
106
+
107
+ Invoke the ftm skill with the full saved context injected so it picks up exactly where it left off, not from the beginning. Construct a context preamble that tells the skill its position.
108
+
109
+ Read `../ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md` for the exact per-skill state fields to inject and restoration instructions for each skill (brainstorm, executor, debug, council, audit).
110
+
111
+ ### Context preamble pattern:
112
+
113
+ ```
114
+ RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
115
+
116
+ [Inject all relevant state sections from the state file, organized by the
117
+ field groups defined in SKILL-RESTORE-PROTOCOLS.md for this skill.]
118
+
119
+ NEXT STEP: {paste next_step from state file — this is where execution picks up}
120
+
121
+ {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
122
+ ```
123
+
124
+ Then invoke the skill via the Skill tool:
125
+ - brainstorm: `/ftm-brainstorm`
126
+ - executor: `/ftm-executor {plan_path}`
127
+ - debug: `/ftm-debug`
128
+ - council: `/ftm-council`
129
+ - audit: `/ftm-audit`
130
+
131
+ ---
132
+
133
+ ## Step 6: Archive the State File
134
+
135
+ After the skill has been successfully invoked, archive the consumed state file immediately:
136
+
137
+ ```bash
138
+ mkdir -p ~/.claude/ftm-state/archive
139
+ mv ~/.claude/ftm-state/STATE.md ~/.claude/ftm-state/archive/STATE-$(date +%Y%m%d-%H%M%S).md
140
+ ```
141
+
142
+ Archive immediately after invocation — not after the full session completes. The state has been consumed. If the user needs to pause again, ftm-pause will create a new STATE.md from the now-continued session.
143
+
144
+ ---
145
+
146
+ ## Edge Cases
147
+
148
+ **Multiple state files** — If both `STATE.md` and `STATE-ftm-brainstorm.md` exist, ask the user which one to resume. List them with skill type and timestamp.
149
+
150
+ **User wants to resume but also change direction** — Add the direction change as a post-pause update. Let the skill's natural conversation flow handle it. Do not edit the state file directly.
151
+
152
+ **Archived states** — If the user asks "do I have any old sessions?", check the archive:
153
+ ```bash
154
+ ls -la ~/.claude/ftm-state/archive/
155
+ ```
156
+ List archived states with skill type, timestamp, and phase. Offer to restore any of them (copy from archive to STATE.md, then run the normal resume flow).
157
+
158
+ **Nothing to resume** — If `~/.claude/ftm-state/` doesn't exist or contains no STATE.md:
159
+ ```
160
+ No saved ftm session found.
161
+
162
+ To save a session for later:
163
+ 1. Start any ftm skill (/ftm-brainstorm, /ftm-executor, /ftm-debug, /ftm-council, /ftm-audit)
164
+ 2. When you need to stop, use /ftm-pause
165
+ 3. In a new conversation, use /ftm-resume to continue
166
+ ```
@@ -0,0 +1,172 @@
1
+ # Resume Validation Protocols
2
+
3
+ Before attempting to restore a session, run these environment checks. Each check either passes, warns, or blocks resumption.
4
+
5
+ ---
6
+
7
+ ## Check 1: State File Integrity
8
+
9
+ Read `~/.claude/ftm-state/STATE.md`.
10
+
11
+ **File missing:**
12
+ ```
13
+ No saved ftm session found at ~/.claude/ftm-state/STATE.md
14
+
15
+ To save a session mid-workflow, use /ftm-pause during any active ftm skill.
16
+ ```
17
+ Stop here.
18
+
19
+ **File exists but unparseable (missing frontmatter, malformed YAML):**
20
+ ```
21
+ Found state file but it appears corrupted — missing required frontmatter fields.
22
+ Expected fields: skill, phase, timestamp, project_dir
23
+
24
+ Would you like me to try to extract what I can from the file, or should we start fresh?
25
+ ```
26
+
27
+ **Required frontmatter fields:**
28
+
29
+ | Field | Required | Purpose |
30
+ |-------|----------|---------|
31
+ | `skill` | Yes | Which ftm skill to resume |
32
+ | `phase` | Yes | Which phase the skill was in |
33
+ | `phase_detail` | No | Human-readable position within phase |
34
+ | `timestamp` | Yes | When the session was saved |
35
+ | `project_dir` | Yes | Project directory the session was working in |
36
+ | `git_branch` | No | Git branch at time of save |
37
+ | `git_commit` | No | HEAD commit at time of save |
38
+
39
+ **Incomplete state (missing critical sections — no "Next Step," no "Context Snapshot"):**
40
+
41
+ Warn: "The state file is incomplete — it may have been saved during an error. I can try to resume with what's available, but some context may be missing. Alternatively, we can start fresh."
42
+
43
+ ---
44
+
45
+ ## Check 2: Version Compatibility
46
+
47
+ If the state file has a `ftm_version` field, compare it to the installed skill version.
48
+
49
+ - **Same version**: Pass.
50
+ - **Minor version difference**: Warn. "This state was saved with an older version of ftm. The workflow may behave slightly differently, but resumption should work."
51
+ - **Major version difference**: Block with explanation. "This state was saved with ftm v{N}, but the installed version is v{M}. Major version changes may have altered skill structure. Resuming could produce unexpected behavior. Recommend starting fresh."
52
+ - **No version field**: Proceed without warning (pre-versioning state files are assumed compatible).
53
+
54
+ ---
55
+
56
+ ## Check 3: Project Directory
57
+
58
+ ```bash
59
+ test -d "{project_dir}" && echo "EXISTS" || echo "MISSING"
60
+ ```
61
+
62
+ - **EXISTS**: Pass. Continue.
63
+ - **MISSING**: Block. "The project directory `{project_dir}` no longer exists. Cannot resume — the codebase isn't available. Did the project move?"
64
+
65
+ ---
66
+
67
+ ## Check 4: Git State (if git fields present)
68
+
69
+ ```bash
70
+ cd "{project_dir}" && git branch --show-current && git rev-parse --short HEAD
71
+ ```
72
+
73
+ Compare current branch and commit against saved values.
74
+
75
+ - **Same branch, same commit**: Pass — nothing changed.
76
+ - **Same branch, different commit**: Warn. "The codebase has been modified since the session was saved. {N} new commits on `{branch}` since `{saved_commit}`." Show the commit log between saved and current. Ask if the user wants to continue anyway or review changes first.
77
+ - **Different branch**: Warn. "You're now on branch `{current}` but the session was saved on `{saved_branch}`. Would you like to switch back to `{saved_branch}`, or continue on `{current}`?"
78
+
79
+ ---
80
+
81
+ ## Check 5: Worktree Branches (executor and debug only)
82
+
83
+ If the state file references worktree branches:
84
+
85
+ ```bash
86
+ cd "{project_dir}" && git worktree list
87
+ git branch --list "plan-exec/*" "debug/*"
88
+ ```
89
+
90
+ - **All referenced branches exist**: Pass.
91
+ - **Some missing**: Warn. List which branches are missing. "These worktree branches from the saved session no longer exist: {list}. Tasks associated with these branches may need to be re-executed."
92
+ - **All missing**: Warn more strongly. "All worktree branches from the saved session have been cleaned up. Completed task work may have been merged already. In-progress tasks will need to restart."
93
+
94
+ ---
95
+
96
+ ## Check 6: Plan File (executor only)
97
+
98
+ If the state references a plan file:
99
+
100
+ ```bash
101
+ test -f "{plan_path}" && echo "EXISTS" || echo "MISSING"
102
+ ```
103
+
104
+ - **EXISTS**: Pass.
105
+ - **MISSING**: Block. "The plan file `{plan_path}` no longer exists. Cannot resume executor without a plan. Do you have the plan elsewhere?"
106
+
107
+ ---
108
+
109
+ ## Check 7: Artifact Files (debug only)
110
+
111
+ Check for any referenced artifact files (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, etc.):
112
+
113
+ ```bash
114
+ for f in {artifact_paths}; do test -f "$f" && echo "$f: EXISTS" || echo "$f: MISSING"; done
115
+ ```
116
+
117
+ - **All exist**: Pass.
118
+ - **Some missing**: Warn. The state file should contain the key content from these files, so they're reconstructible. Note which are missing.
119
+
120
+ ---
121
+
122
+ ## Check 8: Staleness
123
+
124
+ Calculate the age of the saved state by comparing the `timestamp` field to the current time.
125
+
126
+ - **< 24 hours**: Fresh. No warning needed.
127
+ - **1–7 days**: Mild staleness. Note and proceed: "This session is {N} days old. The codebase may have changed — check the git log above."
128
+ - **> 7 days**: Present staleness options explicitly:
129
+
130
+ ```
131
+ This session was saved 12 days ago. The codebase has likely changed significantly.
132
+
133
+ Options:
134
+ 1. Resume anyway — use the saved context but some references may be outdated
135
+ 2. Resume with a fresh repo scan — re-run Phase 0 to update project context, then
136
+ continue from where you left off
137
+ 3. Start fresh — discard this state and begin a new session
138
+
139
+ Which would you prefer?
140
+ ```
141
+
142
+ If the user picks option 2: run Phase 0 of the relevant skill (repo scan for brainstorm, plan re-read for executor, codebase reconnaissance for debug) with fresh data. Merge the new scan with the saved state — keeping all decisions, answers, and progress but updating the project context.
143
+
144
+ ---
145
+
146
+ ## Check 9: Skill Availability
147
+
148
+ If the state says `skill: ftm-debug` but that skill isn't in the skills directory:
149
+
150
+ "The saved session requires ftm-{skill} but that skill isn't available. Install it and try again."
151
+
152
+ Block resumption.
153
+
154
+ ---
155
+
156
+ ## Validation Summary
157
+
158
+ Run all applicable checks in order. Present a consolidated summary before asking the user to confirm:
159
+
160
+ ```
161
+ Validation complete:
162
+ ✓ State file: valid
163
+ ✓ Project directory: exists
164
+ ✓ Git state: same branch, 2 new commits (show log)
165
+ ⚠ Worktrees: plan-exec/task-3 missing
166
+ ✓ Plan file: exists
167
+ ✓ Session age: 6 hours
168
+
169
+ 1 warning. Ready to resume? (or review warnings first)
170
+ ```
171
+
172
+ A single block-level failure prevents resumption. Warnings require user acknowledgment before proceeding.
package/ftm-resume.yml ADDED
@@ -0,0 +1,2 @@
1
+ name: ftm-resume
2
+ description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.