feed-the-machine 1.6.0 → 1.7.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 (269) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/brain.py +1340 -0
  4. package/bin/convert_claude_skills_to_codex.py +490 -0
  5. package/bin/generate-manifest.mjs +463 -463
  6. package/bin/harden_codex_skills.py +141 -0
  7. package/bin/install.mjs +491 -491
  8. package/bin/migrate-eng-buddy-data.py +875 -0
  9. package/bin/playbook_engine/__init__.py +1 -0
  10. package/bin/playbook_engine/conftest.py +8 -0
  11. package/bin/playbook_engine/extractor.py +33 -0
  12. package/bin/playbook_engine/manager.py +102 -0
  13. package/bin/playbook_engine/models.py +84 -0
  14. package/bin/playbook_engine/registry.py +35 -0
  15. package/bin/playbook_engine/test_extractor.py +72 -0
  16. package/bin/playbook_engine/test_integration.py +129 -0
  17. package/bin/playbook_engine/test_manager.py +85 -0
  18. package/bin/playbook_engine/test_models.py +166 -0
  19. package/bin/playbook_engine/test_registry.py +67 -0
  20. package/bin/playbook_engine/test_tracer.py +86 -0
  21. package/bin/playbook_engine/tracer.py +93 -0
  22. package/bin/tasks_db.py +456 -0
  23. package/docs/HOOKS.md +243 -243
  24. package/docs/INBOX.md +233 -233
  25. package/ftm/SKILL.md +125 -122
  26. package/ftm-audit/SKILL.md +623 -623
  27. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  28. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  29. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  30. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  31. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  32. package/ftm-audit/scripts/run-knip.sh +23 -23
  33. package/ftm-audit.yml +2 -2
  34. package/ftm-brainstorm/SKILL.md +1003 -498
  35. package/ftm-brainstorm/evals/evals.json +180 -100
  36. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  37. package/ftm-brainstorm/references/agent-prompts.md +552 -224
  38. package/ftm-brainstorm/references/plan-template.md +209 -121
  39. package/ftm-brainstorm.yml +2 -2
  40. package/ftm-browse/SKILL.md +454 -454
  41. package/ftm-browse/daemon/browser-manager.ts +206 -206
  42. package/ftm-browse/daemon/bun.lock +30 -30
  43. package/ftm-browse/daemon/cli.ts +347 -347
  44. package/ftm-browse/daemon/commands.ts +410 -410
  45. package/ftm-browse/daemon/main.ts +357 -357
  46. package/ftm-browse/daemon/package.json +17 -17
  47. package/ftm-browse/daemon/server.ts +189 -189
  48. package/ftm-browse/daemon/snapshot.ts +519 -519
  49. package/ftm-browse/daemon/tsconfig.json +22 -22
  50. package/ftm-browse.yml +4 -4
  51. package/ftm-capture/SKILL.md +370 -370
  52. package/ftm-capture.yml +4 -4
  53. package/ftm-codex-gate/SKILL.md +361 -361
  54. package/ftm-codex-gate.yml +2 -2
  55. package/ftm-config/SKILL.md +422 -345
  56. package/ftm-config.default.yml +125 -82
  57. package/ftm-config.yml +44 -2
  58. package/ftm-council/SKILL.md +416 -416
  59. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  60. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  61. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  62. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  63. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  64. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  65. package/ftm-council.yml +2 -2
  66. package/ftm-dashboard/SKILL.md +163 -163
  67. package/ftm-dashboard.yml +4 -4
  68. package/ftm-debug/SKILL.md +1037 -1037
  69. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  70. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  71. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  72. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  73. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  74. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  75. package/ftm-debug.yml +2 -2
  76. package/ftm-diagram/SKILL.md +277 -277
  77. package/ftm-diagram.yml +2 -2
  78. package/ftm-executor/SKILL.md +777 -777
  79. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  80. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  81. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  82. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  83. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  84. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  85. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  86. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  87. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -59
  88. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  89. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  90. package/ftm-executor/runtime/package.json +8 -8
  91. package/ftm-executor.yml +2 -2
  92. package/ftm-git/SKILL.md +441 -441
  93. package/ftm-git/evals/evals.json +26 -26
  94. package/ftm-git/evals/promptfoo.yaml +75 -75
  95. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  96. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  97. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  98. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  99. package/ftm-git.yml +2 -2
  100. package/ftm-inbox/backend/__pycache__/main.cpython-314.pyc +0 -0
  101. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  102. package/ftm-inbox/backend/adapters/base.py +230 -230
  103. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  104. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  105. package/ftm-inbox/backend/adapters/jira.py +136 -136
  106. package/ftm-inbox/backend/adapters/registry.py +192 -192
  107. package/ftm-inbox/backend/adapters/slack.py +110 -110
  108. package/ftm-inbox/backend/db/connection.py +54 -54
  109. package/ftm-inbox/backend/db/schema.py +78 -78
  110. package/ftm-inbox/backend/executor/__init__.py +7 -7
  111. package/ftm-inbox/backend/executor/engine.py +149 -149
  112. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  113. package/ftm-inbox/backend/main.py +103 -103
  114. package/ftm-inbox/backend/models/__init__.py +1 -1
  115. package/ftm-inbox/backend/models/unified_task.py +36 -36
  116. package/ftm-inbox/backend/planner/__init__.py +6 -6
  117. package/ftm-inbox/backend/planner/__pycache__/__init__.cpython-314.pyc +0 -0
  118. package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
  119. package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
  120. package/ftm-inbox/backend/planner/generator.py +127 -127
  121. package/ftm-inbox/backend/planner/schema.py +34 -34
  122. package/ftm-inbox/backend/requirements.txt +5 -5
  123. package/ftm-inbox/backend/routes/__pycache__/plan.cpython-314.pyc +0 -0
  124. package/ftm-inbox/backend/routes/execute.py +186 -186
  125. package/ftm-inbox/backend/routes/health.py +52 -52
  126. package/ftm-inbox/backend/routes/inbox.py +68 -68
  127. package/ftm-inbox/backend/routes/plan.py +271 -271
  128. package/ftm-inbox/bin/launchagent.mjs +91 -91
  129. package/ftm-inbox/bin/setup.mjs +188 -188
  130. package/ftm-inbox/bin/start.sh +10 -10
  131. package/ftm-inbox/bin/status.sh +17 -17
  132. package/ftm-inbox/bin/stop.sh +8 -8
  133. package/ftm-inbox/config.example.yml +55 -55
  134. package/ftm-inbox/package-lock.json +2898 -2898
  135. package/ftm-inbox/package.json +26 -26
  136. package/ftm-inbox/postcss.config.js +6 -6
  137. package/ftm-inbox/src/app.css +199 -199
  138. package/ftm-inbox/src/app.html +18 -18
  139. package/ftm-inbox/src/lib/api.ts +166 -166
  140. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  141. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  142. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  143. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  144. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  145. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  146. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  147. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  148. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  149. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  150. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  151. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  152. package/ftm-inbox/src/lib/theme.ts +47 -47
  153. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  154. package/ftm-inbox/src/routes/+page.svelte +401 -401
  155. package/ftm-inbox/svelte.config.js +12 -12
  156. package/ftm-inbox/tailwind.config.ts +63 -63
  157. package/ftm-inbox/tsconfig.json +13 -13
  158. package/ftm-inbox/vite.config.ts +6 -6
  159. package/ftm-intent/SKILL.md +241 -241
  160. package/ftm-intent.yml +2 -2
  161. package/ftm-manifest.json +3794 -3794
  162. package/ftm-map/SKILL.md +291 -291
  163. package/ftm-map/scripts/db.py +712 -712
  164. package/ftm-map/scripts/index.py +415 -415
  165. package/ftm-map/scripts/parser.py +224 -224
  166. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  167. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  168. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  169. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  170. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  171. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  172. package/ftm-map/scripts/query.py +301 -301
  173. package/ftm-map/scripts/ranker.py +377 -377
  174. package/ftm-map/scripts/requirements.txt +5 -5
  175. package/ftm-map/scripts/setup-hooks.sh +27 -27
  176. package/ftm-map/scripts/setup.sh +56 -56
  177. package/ftm-map/scripts/test_db.py +364 -364
  178. package/ftm-map/scripts/test_parser.py +174 -174
  179. package/ftm-map/scripts/test_query.py +183 -183
  180. package/ftm-map/scripts/test_ranker.py +199 -199
  181. package/ftm-map/scripts/views.py +591 -591
  182. package/ftm-map.yml +2 -2
  183. package/ftm-mind/SKILL.md +201 -1943
  184. package/ftm-mind/evals/promptfoo.yaml +142 -142
  185. package/ftm-mind/references/blackboard-protocol.md +110 -0
  186. package/ftm-mind/references/blackboard-schema.md +328 -328
  187. package/ftm-mind/references/complexity-guide.md +110 -110
  188. package/ftm-mind/references/complexity-sizing.md +138 -0
  189. package/ftm-mind/references/decide-act-protocol.md +172 -0
  190. package/ftm-mind/references/direct-execution.md +51 -0
  191. package/ftm-mind/references/environment-discovery.md +77 -0
  192. package/ftm-mind/references/event-registry.md +319 -319
  193. package/ftm-mind/references/mcp-inventory.md +300 -296
  194. package/ftm-mind/references/ops-routing.md +47 -0
  195. package/ftm-mind/references/orient-protocol.md +234 -0
  196. package/ftm-mind/references/personality.md +40 -0
  197. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  198. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  199. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  200. package/ftm-mind/references/reflexion-protocol.md +249 -249
  201. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  202. package/ftm-mind/references/routing-scenarios.md +35 -35
  203. package/ftm-mind.yml +2 -2
  204. package/ftm-ops.yml +4 -0
  205. package/ftm-pause/SKILL.md +395 -395
  206. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  207. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  208. package/ftm-pause.yml +2 -2
  209. package/ftm-researcher/SKILL.md +275 -275
  210. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  211. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  212. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  213. package/ftm-researcher/references/adaptive-search.md +116 -116
  214. package/ftm-researcher/references/agent-prompts.md +193 -193
  215. package/ftm-researcher/references/council-integration.md +193 -193
  216. package/ftm-researcher/references/output-format.md +203 -203
  217. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  218. package/ftm-researcher/scripts/score_credibility.py +234 -234
  219. package/ftm-researcher/scripts/validate_research.py +92 -92
  220. package/ftm-researcher.yml +2 -2
  221. package/ftm-resume/SKILL.md +518 -518
  222. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  223. package/ftm-resume.yml +2 -2
  224. package/ftm-retro/SKILL.md +380 -380
  225. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  226. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  227. package/ftm-retro.yml +2 -2
  228. package/ftm-routine/SKILL.md +170 -170
  229. package/ftm-routine.yml +4 -4
  230. package/ftm-state/blackboard/capabilities.json +5 -5
  231. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  232. package/ftm-state/blackboard/context.json +37 -23
  233. package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
  234. package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
  235. package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
  236. package/ftm-state/blackboard/experiences/index.json +58 -9
  237. package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
  238. package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
  239. package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
  240. package/ftm-state/blackboard/patterns.json +6 -6
  241. package/ftm-state/schemas/context.schema.json +130 -130
  242. package/ftm-state/schemas/experience-index.schema.json +77 -77
  243. package/ftm-state/schemas/experience.schema.json +78 -78
  244. package/ftm-state/schemas/patterns.schema.json +44 -44
  245. package/ftm-upgrade/SKILL.md +194 -194
  246. package/ftm-upgrade/scripts/check-version.sh +76 -76
  247. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  248. package/ftm-upgrade.yml +2 -2
  249. package/ftm-verify.yml +2 -2
  250. package/ftm.yml +2 -2
  251. package/hooks/ftm-auto-log.sh +137 -0
  252. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  253. package/hooks/ftm-discovery-reminder.sh +90 -90
  254. package/hooks/ftm-drafts-gate.sh +61 -61
  255. package/hooks/ftm-event-logger.mjs +107 -107
  256. package/hooks/ftm-install-hooks.sh +240 -0
  257. package/hooks/ftm-learning-capture.sh +117 -0
  258. package/hooks/ftm-map-autodetect.sh +79 -79
  259. package/hooks/ftm-pending-sync-check.sh +22 -22
  260. package/hooks/ftm-plan-gate.sh +92 -92
  261. package/hooks/ftm-post-commit-trigger.sh +57 -57
  262. package/hooks/ftm-post-compaction.sh +138 -0
  263. package/hooks/ftm-pre-compaction.sh +147 -0
  264. package/hooks/ftm-session-end.sh +52 -0
  265. package/hooks/ftm-session-snapshot.sh +213 -0
  266. package/hooks/settings-template.json +81 -81
  267. package/install.sh +363 -363
  268. package/package.json +84 -84
  269. package/uninstall.sh +25 -25
@@ -1,172 +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.
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 CHANGED
@@ -1,2 +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.
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.