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
package/ftm/SKILL.md CHANGED
@@ -1,122 +1,125 @@
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
+ | `ops`, `eng-buddy` | ftm-ops |
39
+
40
+ When routing to a specific skill:
41
+ 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.
42
+ 2. Show: `Routing to ftm-[skill]: [one-line reason]`
43
+ 3. Invoke the skill via the Skill tool with the user's full input as args.
44
+
45
+ ### 3. Everything Else ftm-mind
46
+ All freeform input that does not match an explicit skill prefix goes to ftm-mind for OODA processing:
47
+ 1. Update the blackboard context (same as above).
48
+ 2. Show: `Routing to ftm-mind: analyzing your request.`
49
+ 3. Invoke: Skill tool with skill="ftm-mind", args="<full user input>"
50
+
51
+ ### Legacy Fallback
52
+ 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:
53
+
54
+ - "bug", "broken", "error", "fix", "crash", "failing" → ftm-debug
55
+ - "plan", "think", "build", "design", "how should" → ftm-brainstorm
56
+ - file path + "execute"/"go"/"run" → ftm-executor
57
+ - "task", "capacity", "burnout", "blocking", "stakeholder", "wrap up", "what happened" → ftm-ops
58
+ - All other ftm-brainstorm (default)
59
+
60
+ This fallback can be disabled after stable operation.
61
+
62
+ ## Help Menu
63
+
64
+ When the user provides no input or asks for help, display this exactly:
65
+
66
+ ```
67
+ FTM Skills:
68
+ /ftm mind [anything] Default cognitive entry point (OODA reasoning)
69
+ /ftm brainstorm [idea] Research-backed idea development
70
+ /ftm execute [plan-path] Autonomous plan execution with agent teams
71
+ /ftm debug [description] — Multi-vector deep debugging war room
72
+ /ftm audit Wiring verification (knip + adversarial)
73
+ /ftm council [question] Multi-model deliberation (Claude + Codex + Gemini)
74
+ /ftm intent Manage INTENT.md documentation layer
75
+ /ftm diagram Manage ARCHITECTURE.mmd diagram layer
76
+ /ftm codex-gate Run adversarial Codex validation
77
+ /ftm pause Save session state for later
78
+ /ftm resume Resume a paused session
79
+ /ftm browse [url] Visual verification with headless browser
80
+ /ftm upgrade Check for and install skill updates
81
+ /ftm retro Post-execution retrospective
82
+ /ftm config — View and edit ftm configuration
83
+ /ftm capture [name] — Extract routine + playbook from current session
84
+ /ftm ops [request] — Task management, capacity, stakeholders, meetings
85
+
86
+ Or just describe what you need and ftm-mind will handle it.
87
+ ```
88
+
89
+ ## Important Notes
90
+ - Pass through the full user input as args to the target skill. Let the target skill parse details.
91
+ - Do not attempt to do the work yourself — route only.
92
+ - Be fast — decisive routing, not conversation.
93
+ - Case insensitive matching for all prefix detection.
94
+
95
+ ## Requirements
96
+
97
+ - config: `~/.claude/ftm-config.yml` | optional | legacy_router_fallback setting
98
+ - reference: `~/.claude/ftm-state/blackboard/context.json` | optional | session state for blackboard update on routing
99
+ - tool: none beyond skill invocation mechanism
100
+
101
+ ## Risk
102
+
103
+ - level: read_only
104
+ - scope: reads blackboard context.json and updates session_metadata.skills_invoked before routing; does not modify any project files
105
+ - rollback: no mutations to reverse; blackboard update is a metadata append
106
+
107
+ ## Approval Gates
108
+
109
+ - trigger: ftm-mind failure AND legacy_router_fallback enabled | action: fall back to keyword routing automatically (no user gate needed)
110
+ - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
111
+
112
+ ## Fallbacks
113
+
114
+ - 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
115
+ - condition: blackboard context.json missing | action: skip blackboard update, proceed with routing
116
+ - condition: skill tool unavailable for target skill | action: report routing failure to user with the target skill name
117
+
118
+ ## Capabilities
119
+
120
+ - env: none required
121
+
122
+ ## Event Payloads
123
+
124
+ ### (none)
125
+ ftm is a pure router and does not emit events directly. Events are emitted by the target skill after routing.