feed-the-machine 1.6.1 → 1.7.1

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