feed-the-machine 1.5.0 → 1.6.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 (224) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/generate-manifest.mjs +463 -463
  4. package/bin/install.mjs +491 -491
  5. package/docs/HOOKS.md +243 -243
  6. package/docs/INBOX.md +233 -233
  7. package/ftm/SKILL.md +122 -122
  8. package/ftm-audit/SKILL.md +623 -541
  9. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  10. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  11. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  12. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  13. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  14. package/ftm-audit/scripts/run-knip.sh +23 -23
  15. package/ftm-audit.yml +2 -2
  16. package/ftm-brainstorm/SKILL.md +498 -498
  17. package/ftm-brainstorm/evals/evals.json +100 -100
  18. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  19. package/ftm-brainstorm/references/agent-prompts.md +224 -224
  20. package/ftm-brainstorm/references/plan-template.md +121 -121
  21. package/ftm-brainstorm.yml +2 -2
  22. package/ftm-browse/SKILL.md +454 -454
  23. package/ftm-browse/daemon/browser-manager.ts +206 -206
  24. package/ftm-browse/daemon/bun.lock +30 -30
  25. package/ftm-browse/daemon/cli.ts +347 -347
  26. package/ftm-browse/daemon/commands.ts +410 -410
  27. package/ftm-browse/daemon/main.ts +357 -357
  28. package/ftm-browse/daemon/package.json +17 -17
  29. package/ftm-browse/daemon/server.ts +189 -189
  30. package/ftm-browse/daemon/snapshot.ts +519 -519
  31. package/ftm-browse/daemon/tsconfig.json +22 -22
  32. package/ftm-browse.yml +4 -4
  33. package/ftm-capture/SKILL.md +370 -370
  34. package/ftm-capture.yml +4 -4
  35. package/ftm-codex-gate/SKILL.md +361 -361
  36. package/ftm-codex-gate.yml +2 -2
  37. package/ftm-config/SKILL.md +345 -345
  38. package/ftm-config.default.yml +82 -80
  39. package/ftm-config.yml +2 -2
  40. package/ftm-council/SKILL.md +416 -416
  41. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  42. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  43. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  44. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  45. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  46. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  47. package/ftm-council.yml +2 -2
  48. package/ftm-dashboard/SKILL.md +163 -163
  49. package/ftm-dashboard.yml +4 -4
  50. package/ftm-debug/SKILL.md +1037 -1037
  51. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  52. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  53. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  54. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  55. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  56. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  57. package/ftm-debug.yml +2 -2
  58. package/ftm-diagram/SKILL.md +277 -277
  59. package/ftm-diagram.yml +2 -2
  60. package/ftm-executor/SKILL.md +777 -767
  61. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  62. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  63. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  64. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  65. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  66. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  67. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  68. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  69. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -44
  70. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  71. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  72. package/ftm-executor/runtime/package.json +8 -8
  73. package/ftm-executor.yml +2 -2
  74. package/ftm-git/SKILL.md +441 -441
  75. package/ftm-git/evals/evals.json +26 -26
  76. package/ftm-git/evals/promptfoo.yaml +75 -75
  77. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  78. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  79. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  80. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  81. package/ftm-git.yml +2 -2
  82. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  83. package/ftm-inbox/backend/adapters/base.py +230 -230
  84. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  85. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  86. package/ftm-inbox/backend/adapters/jira.py +136 -136
  87. package/ftm-inbox/backend/adapters/registry.py +192 -192
  88. package/ftm-inbox/backend/adapters/slack.py +110 -110
  89. package/ftm-inbox/backend/db/connection.py +54 -54
  90. package/ftm-inbox/backend/db/schema.py +78 -78
  91. package/ftm-inbox/backend/executor/__init__.py +7 -7
  92. package/ftm-inbox/backend/executor/engine.py +149 -149
  93. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  94. package/ftm-inbox/backend/main.py +103 -103
  95. package/ftm-inbox/backend/models/__init__.py +1 -1
  96. package/ftm-inbox/backend/models/unified_task.py +36 -36
  97. package/ftm-inbox/backend/planner/__init__.py +6 -6
  98. package/ftm-inbox/backend/planner/generator.py +127 -127
  99. package/ftm-inbox/backend/planner/schema.py +34 -34
  100. package/ftm-inbox/backend/requirements.txt +5 -5
  101. package/ftm-inbox/backend/routes/execute.py +186 -186
  102. package/ftm-inbox/backend/routes/health.py +52 -52
  103. package/ftm-inbox/backend/routes/inbox.py +68 -68
  104. package/ftm-inbox/backend/routes/plan.py +271 -271
  105. package/ftm-inbox/bin/launchagent.mjs +91 -91
  106. package/ftm-inbox/bin/setup.mjs +188 -188
  107. package/ftm-inbox/bin/start.sh +10 -10
  108. package/ftm-inbox/bin/status.sh +17 -17
  109. package/ftm-inbox/bin/stop.sh +8 -8
  110. package/ftm-inbox/config.example.yml +55 -55
  111. package/ftm-inbox/package-lock.json +2898 -2898
  112. package/ftm-inbox/package.json +26 -26
  113. package/ftm-inbox/postcss.config.js +6 -6
  114. package/ftm-inbox/src/app.css +199 -199
  115. package/ftm-inbox/src/app.html +18 -18
  116. package/ftm-inbox/src/lib/api.ts +166 -166
  117. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  118. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  119. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  120. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  121. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  122. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  123. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  124. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  125. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  126. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  127. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  128. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  129. package/ftm-inbox/src/lib/theme.ts +47 -47
  130. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  131. package/ftm-inbox/src/routes/+page.svelte +401 -401
  132. package/ftm-inbox/svelte.config.js +12 -12
  133. package/ftm-inbox/tailwind.config.ts +63 -63
  134. package/ftm-inbox/tsconfig.json +13 -13
  135. package/ftm-inbox/vite.config.ts +6 -6
  136. package/ftm-intent/SKILL.md +241 -241
  137. package/ftm-intent.yml +2 -2
  138. package/ftm-manifest.json +3794 -3794
  139. package/ftm-map/SKILL.md +291 -291
  140. package/ftm-map/scripts/db.py +712 -712
  141. package/ftm-map/scripts/index.py +415 -415
  142. package/ftm-map/scripts/parser.py +224 -224
  143. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  144. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  145. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  146. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  147. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  148. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  149. package/ftm-map/scripts/query.py +301 -301
  150. package/ftm-map/scripts/ranker.py +377 -377
  151. package/ftm-map/scripts/requirements.txt +5 -5
  152. package/ftm-map/scripts/setup-hooks.sh +27 -27
  153. package/ftm-map/scripts/setup.sh +56 -56
  154. package/ftm-map/scripts/test_db.py +364 -364
  155. package/ftm-map/scripts/test_parser.py +174 -174
  156. package/ftm-map/scripts/test_query.py +183 -183
  157. package/ftm-map/scripts/test_ranker.py +199 -199
  158. package/ftm-map/scripts/views.py +591 -591
  159. package/ftm-map.yml +2 -2
  160. package/ftm-mind/SKILL.md +1943 -1943
  161. package/ftm-mind/evals/promptfoo.yaml +142 -142
  162. package/ftm-mind/references/blackboard-schema.md +328 -328
  163. package/ftm-mind/references/complexity-guide.md +110 -110
  164. package/ftm-mind/references/event-registry.md +319 -319
  165. package/ftm-mind/references/mcp-inventory.md +296 -296
  166. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  167. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  168. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  169. package/ftm-mind/references/reflexion-protocol.md +249 -249
  170. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  171. package/ftm-mind/references/routing-scenarios.md +35 -35
  172. package/ftm-mind.yml +2 -2
  173. package/ftm-pause/SKILL.md +395 -395
  174. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  175. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  176. package/ftm-pause.yml +2 -2
  177. package/ftm-researcher/SKILL.md +275 -275
  178. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  179. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  180. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  181. package/ftm-researcher/references/adaptive-search.md +116 -116
  182. package/ftm-researcher/references/agent-prompts.md +193 -193
  183. package/ftm-researcher/references/council-integration.md +193 -193
  184. package/ftm-researcher/references/output-format.md +203 -203
  185. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  186. package/ftm-researcher/scripts/score_credibility.py +234 -234
  187. package/ftm-researcher/scripts/validate_research.py +92 -92
  188. package/ftm-researcher.yml +2 -2
  189. package/ftm-resume/SKILL.md +518 -518
  190. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  191. package/ftm-resume.yml +2 -2
  192. package/ftm-retro/SKILL.md +380 -380
  193. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  194. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  195. package/ftm-retro.yml +2 -2
  196. package/ftm-routine/SKILL.md +170 -170
  197. package/ftm-routine.yml +4 -4
  198. package/ftm-state/blackboard/capabilities.json +5 -5
  199. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  200. package/ftm-state/blackboard/context.json +23 -23
  201. package/ftm-state/blackboard/experiences/index.json +9 -9
  202. package/ftm-state/blackboard/patterns.json +6 -6
  203. package/ftm-state/schemas/context.schema.json +130 -130
  204. package/ftm-state/schemas/experience-index.schema.json +77 -77
  205. package/ftm-state/schemas/experience.schema.json +78 -78
  206. package/ftm-state/schemas/patterns.schema.json +44 -44
  207. package/ftm-upgrade/SKILL.md +194 -194
  208. package/ftm-upgrade/scripts/check-version.sh +76 -76
  209. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  210. package/ftm-upgrade.yml +2 -2
  211. package/ftm-verify.yml +2 -2
  212. package/ftm.yml +2 -2
  213. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  214. package/hooks/ftm-discovery-reminder.sh +90 -90
  215. package/hooks/ftm-drafts-gate.sh +61 -61
  216. package/hooks/ftm-event-logger.mjs +107 -107
  217. package/hooks/ftm-map-autodetect.sh +79 -79
  218. package/hooks/ftm-pending-sync-check.sh +22 -22
  219. package/hooks/ftm-plan-gate.sh +92 -92
  220. package/hooks/ftm-post-commit-trigger.sh +57 -57
  221. package/hooks/settings-template.json +81 -81
  222. package/install.sh +363 -363
  223. package/package.json +84 -84
  224. package/uninstall.sh +25 -25
package/ftm/SKILL.md CHANGED
@@ -1,122 +1,122 @@
1
- ---
2
- name: ftm
3
- description: Universal entry point for all ftm skills. Routes freeform text to the right ftm skill. ftm-mind is the default cognitive entry point for all unclassified input.
4
- ---
5
-
6
- # Feed The Machine — Universal Skill Router
7
-
8
- You are the entry point for the ftm skill system. Your job is routing — fast, thin, decisive.
9
-
10
- ## Routing Rules
11
-
12
- Evaluate the user's input in this order:
13
-
14
- ### 1. Help Menu
15
- If input is empty, "help", "?", or "menu" → display the help menu below. Do NOT invoke any skill.
16
-
17
- ### 2. Explicit Skill Name
18
- If input starts with a recognized skill name, route directly to that skill:
19
-
20
- | Input prefix | Route to |
21
- |---|---|
22
- | `brainstorm` | ftm-brainstorm |
23
- | `execute`, `run` (+ file path) | ftm-executor |
24
- | `debug` | ftm-debug |
25
- | `audit` | ftm-audit |
26
- | `council` | ftm-council |
27
- | `intent` | ftm-intent |
28
- | `diagram` | ftm-diagram |
29
- | `codex-gate`, `codex gate` | ftm-codex-gate |
30
- | `pause` | ftm-pause |
31
- | `resume` | ftm-resume |
32
- | `browse` | ftm-browse |
33
- | `upgrade` | ftm-upgrade |
34
- | `retro` | ftm-retro |
35
- | `config` | ftm-config |
36
- | `capture`, `codify`, `save as routine` | ftm-capture |
37
- | `mind` | ftm-mind |
38
-
39
- When routing to a specific skill:
40
- 1. Update the blackboard context: read `~/.claude/ftm-state/blackboard/context.json`, set `current_task` to reflect the incoming request, append to `session_metadata.skills_invoked`, write back.
41
- 2. Show: `Routing to ftm-[skill]: [one-line reason]`
42
- 3. Invoke the skill via the Skill tool with the user's full input as args.
43
-
44
- ### 3. Everything Else → ftm-mind
45
- All freeform input that does not match an explicit skill prefix goes to ftm-mind for OODA processing:
46
- 1. Update the blackboard context (same as above).
47
- 2. Show: `Routing to ftm-mind: analyzing your request.`
48
- 3. Invoke: Skill tool with skill="ftm-mind", args="<full user input>"
49
-
50
- ### Legacy Fallback
51
- If ftm-mind fails (errors, timeouts, no actionable output) AND `legacy_router_fallback` is `true` in `~/.claude/ftm-config.yml`, fall back to keyword matching:
52
-
53
- - "bug", "broken", "error", "fix", "crash", "failing" → ftm-debug
54
- - "plan", "think", "build", "design", "how should" → ftm-brainstorm
55
- - file path + "execute"/"go"/"run" → ftm-executor
56
- - All other → ftm-brainstorm (default)
57
-
58
- This fallback can be disabled after stable operation.
59
-
60
- ## Help Menu
61
-
62
- When the user provides no input or asks for help, display this exactly:
63
-
64
- ```
65
- FTM Skills:
66
- /ftm mind [anything] — Default cognitive entry point (OODA reasoning)
67
- /ftm brainstorm [idea] — Research-backed idea development
68
- /ftm execute [plan-path] — Autonomous plan execution with agent teams
69
- /ftm debug [description] — Multi-vector deep debugging war room
70
- /ftm audit — Wiring verification (knip + adversarial)
71
- /ftm council [question] — Multi-model deliberation (Claude + Codex + Gemini)
72
- /ftm intent — Manage INTENT.md documentation layer
73
- /ftm diagram — Manage ARCHITECTURE.mmd diagram layer
74
- /ftm codex-gate — Run adversarial Codex validation
75
- /ftm pause — Save session state for later
76
- /ftm resume — Resume a paused session
77
- /ftm browse [url] — Visual verification with headless browser
78
- /ftm upgrade — Check for and install skill updates
79
- /ftm retro — Post-execution retrospective
80
- /ftm config — View and edit ftm configuration
81
- /ftm capture [name] — Extract routine + playbook from current session
82
-
83
- Or just describe what you need and ftm-mind will handle it.
84
- ```
85
-
86
- ## Important Notes
87
- - Pass through the full user input as args to the target skill. Let the target skill parse details.
88
- - Do not attempt to do the work yourself — route only.
89
- - Be fast — decisive routing, not conversation.
90
- - Case insensitive matching for all prefix detection.
91
-
92
- ## Requirements
93
-
94
- - config: `~/.claude/ftm-config.yml` | optional | legacy_router_fallback setting
95
- - reference: `~/.claude/ftm-state/blackboard/context.json` | optional | session state for blackboard update on routing
96
- - tool: none beyond skill invocation mechanism
97
-
98
- ## Risk
99
-
100
- - level: read_only
101
- - scope: reads blackboard context.json and updates session_metadata.skills_invoked before routing; does not modify any project files
102
- - rollback: no mutations to reverse; blackboard update is a metadata append
103
-
104
- ## Approval Gates
105
-
106
- - trigger: ftm-mind failure AND legacy_router_fallback enabled | action: fall back to keyword routing automatically (no user gate needed)
107
- - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
108
-
109
- ## Fallbacks
110
-
111
- - condition: ftm-mind fails or times out | action: check legacy_router_fallback in ftm-config.yml; if true, use keyword matching; if false, report failure
112
- - condition: blackboard context.json missing | action: skip blackboard update, proceed with routing
113
- - condition: skill tool unavailable for target skill | action: report routing failure to user with the target skill name
114
-
115
- ## Capabilities
116
-
117
- - env: none required
118
-
119
- ## Event Payloads
120
-
121
- ### (none)
122
- ftm is a pure router and does not emit events directly. Events are emitted by the target skill after routing.
1
+ ---
2
+ name: ftm
3
+ description: Universal entry point for all ftm skills. Routes freeform text to the right ftm skill. ftm-mind is the default cognitive entry point for all unclassified input.
4
+ ---
5
+
6
+ # Feed The Machine — Universal Skill Router
7
+
8
+ You are the entry point for the ftm skill system. Your job is routing — fast, thin, decisive.
9
+
10
+ ## Routing Rules
11
+
12
+ Evaluate the user's input in this order:
13
+
14
+ ### 1. Help Menu
15
+ If input is empty, "help", "?", or "menu" → display the help menu below. Do NOT invoke any skill.
16
+
17
+ ### 2. Explicit Skill Name
18
+ If input starts with a recognized skill name, route directly to that skill:
19
+
20
+ | Input prefix | Route to |
21
+ |---|---|
22
+ | `brainstorm` | ftm-brainstorm |
23
+ | `execute`, `run` (+ file path) | ftm-executor |
24
+ | `debug` | ftm-debug |
25
+ | `audit` | ftm-audit |
26
+ | `council` | ftm-council |
27
+ | `intent` | ftm-intent |
28
+ | `diagram` | ftm-diagram |
29
+ | `codex-gate`, `codex gate` | ftm-codex-gate |
30
+ | `pause` | ftm-pause |
31
+ | `resume` | ftm-resume |
32
+ | `browse` | ftm-browse |
33
+ | `upgrade` | ftm-upgrade |
34
+ | `retro` | ftm-retro |
35
+ | `config` | ftm-config |
36
+ | `capture`, `codify`, `save as routine` | ftm-capture |
37
+ | `mind` | ftm-mind |
38
+
39
+ When routing to a specific skill:
40
+ 1. Update the blackboard context: read `~/.claude/ftm-state/blackboard/context.json`, set `current_task` to reflect the incoming request, append to `session_metadata.skills_invoked`, write back.
41
+ 2. Show: `Routing to ftm-[skill]: [one-line reason]`
42
+ 3. Invoke the skill via the Skill tool with the user's full input as args.
43
+
44
+ ### 3. Everything Else → ftm-mind
45
+ All freeform input that does not match an explicit skill prefix goes to ftm-mind for OODA processing:
46
+ 1. Update the blackboard context (same as above).
47
+ 2. Show: `Routing to ftm-mind: analyzing your request.`
48
+ 3. Invoke: Skill tool with skill="ftm-mind", args="<full user input>"
49
+
50
+ ### Legacy Fallback
51
+ If ftm-mind fails (errors, timeouts, no actionable output) AND `legacy_router_fallback` is `true` in `~/.claude/ftm-config.yml`, fall back to keyword matching:
52
+
53
+ - "bug", "broken", "error", "fix", "crash", "failing" → ftm-debug
54
+ - "plan", "think", "build", "design", "how should" → ftm-brainstorm
55
+ - file path + "execute"/"go"/"run" → ftm-executor
56
+ - All other → ftm-brainstorm (default)
57
+
58
+ This fallback can be disabled after stable operation.
59
+
60
+ ## Help Menu
61
+
62
+ When the user provides no input or asks for help, display this exactly:
63
+
64
+ ```
65
+ FTM Skills:
66
+ /ftm mind [anything] — Default cognitive entry point (OODA reasoning)
67
+ /ftm brainstorm [idea] — Research-backed idea development
68
+ /ftm execute [plan-path] — Autonomous plan execution with agent teams
69
+ /ftm debug [description] — Multi-vector deep debugging war room
70
+ /ftm audit — Wiring verification (knip + adversarial)
71
+ /ftm council [question] — Multi-model deliberation (Claude + Codex + Gemini)
72
+ /ftm intent — Manage INTENT.md documentation layer
73
+ /ftm diagram — Manage ARCHITECTURE.mmd diagram layer
74
+ /ftm codex-gate — Run adversarial Codex validation
75
+ /ftm pause — Save session state for later
76
+ /ftm resume — Resume a paused session
77
+ /ftm browse [url] — Visual verification with headless browser
78
+ /ftm upgrade — Check for and install skill updates
79
+ /ftm retro — Post-execution retrospective
80
+ /ftm config — View and edit ftm configuration
81
+ /ftm capture [name] — Extract routine + playbook from current session
82
+
83
+ Or just describe what you need and ftm-mind will handle it.
84
+ ```
85
+
86
+ ## Important Notes
87
+ - Pass through the full user input as args to the target skill. Let the target skill parse details.
88
+ - Do not attempt to do the work yourself — route only.
89
+ - Be fast — decisive routing, not conversation.
90
+ - Case insensitive matching for all prefix detection.
91
+
92
+ ## Requirements
93
+
94
+ - config: `~/.claude/ftm-config.yml` | optional | legacy_router_fallback setting
95
+ - reference: `~/.claude/ftm-state/blackboard/context.json` | optional | session state for blackboard update on routing
96
+ - tool: none beyond skill invocation mechanism
97
+
98
+ ## Risk
99
+
100
+ - level: read_only
101
+ - scope: reads blackboard context.json and updates session_metadata.skills_invoked before routing; does not modify any project files
102
+ - rollback: no mutations to reverse; blackboard update is a metadata append
103
+
104
+ ## Approval Gates
105
+
106
+ - trigger: ftm-mind failure AND legacy_router_fallback enabled | action: fall back to keyword routing automatically (no user gate needed)
107
+ - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
108
+
109
+ ## Fallbacks
110
+
111
+ - condition: ftm-mind fails or times out | action: check legacy_router_fallback in ftm-config.yml; if true, use keyword matching; if false, report failure
112
+ - condition: blackboard context.json missing | action: skip blackboard update, proceed with routing
113
+ - condition: skill tool unavailable for target skill | action: report routing failure to user with the target skill name
114
+
115
+ ## Capabilities
116
+
117
+ - env: none required
118
+
119
+ ## Event Payloads
120
+
121
+ ### (none)
122
+ ftm is a pure router and does not emit events directly. Events are emitted by the target skill after routing.