feed-the-machine 1.6.1 → 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.
- package/LICENSE +21 -21
- package/README.md +170 -170
- package/bin/brain.py +1340 -0
- package/bin/convert_claude_skills_to_codex.py +490 -0
- package/bin/generate-manifest.mjs +463 -463
- package/bin/harden_codex_skills.py +141 -0
- package/bin/install.mjs +491 -491
- package/bin/migrate-eng-buddy-data.py +875 -0
- package/bin/playbook_engine/__init__.py +1 -0
- package/bin/playbook_engine/conftest.py +8 -0
- package/bin/playbook_engine/extractor.py +33 -0
- package/bin/playbook_engine/manager.py +102 -0
- package/bin/playbook_engine/models.py +84 -0
- package/bin/playbook_engine/registry.py +35 -0
- package/bin/playbook_engine/test_extractor.py +72 -0
- package/bin/playbook_engine/test_integration.py +129 -0
- package/bin/playbook_engine/test_manager.py +85 -0
- package/bin/playbook_engine/test_models.py +166 -0
- package/bin/playbook_engine/test_registry.py +67 -0
- package/bin/playbook_engine/test_tracer.py +86 -0
- package/bin/playbook_engine/tracer.py +93 -0
- package/bin/tasks_db.py +456 -0
- package/docs/HOOKS.md +243 -243
- package/docs/INBOX.md +233 -233
- package/ftm/SKILL.md +125 -122
- package/ftm-audit/SKILL.md +623 -623
- package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
- package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
- package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
- package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
- package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
- package/ftm-audit/scripts/run-knip.sh +23 -23
- package/ftm-audit.yml +2 -2
- package/ftm-brainstorm/SKILL.md +1003 -498
- package/ftm-brainstorm/evals/evals.json +180 -100
- package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
- package/ftm-brainstorm/references/agent-prompts.md +552 -224
- package/ftm-brainstorm/references/plan-template.md +209 -121
- package/ftm-brainstorm.yml +2 -2
- package/ftm-browse/SKILL.md +454 -454
- package/ftm-browse/daemon/browser-manager.ts +206 -206
- package/ftm-browse/daemon/bun.lock +30 -30
- package/ftm-browse/daemon/cli.ts +347 -347
- package/ftm-browse/daemon/commands.ts +410 -410
- package/ftm-browse/daemon/main.ts +357 -357
- package/ftm-browse/daemon/package.json +17 -17
- package/ftm-browse/daemon/server.ts +189 -189
- package/ftm-browse/daemon/snapshot.ts +519 -519
- package/ftm-browse/daemon/tsconfig.json +22 -22
- package/ftm-browse.yml +4 -4
- package/ftm-capture/SKILL.md +370 -370
- package/ftm-capture.yml +4 -4
- package/ftm-codex-gate/SKILL.md +361 -361
- package/ftm-codex-gate.yml +2 -2
- package/ftm-config/SKILL.md +422 -345
- package/ftm-config.default.yml +125 -82
- package/ftm-config.yml +44 -2
- package/ftm-council/SKILL.md +416 -416
- package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
- package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
- package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
- package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
- package/ftm-council.yml +2 -2
- package/ftm-dashboard/SKILL.md +163 -163
- package/ftm-dashboard.yml +4 -4
- package/ftm-debug/SKILL.md +1037 -1037
- package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
- package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
- package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
- package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
- package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
- package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
- package/ftm-debug.yml +2 -2
- package/ftm-diagram/SKILL.md +277 -277
- package/ftm-diagram.yml +2 -2
- package/ftm-executor/SKILL.md +777 -777
- package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
- package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
- package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
- package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
- package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
- package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
- package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
- package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
- package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -59
- package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
- package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
- package/ftm-executor/runtime/package.json +8 -8
- package/ftm-executor.yml +2 -2
- package/ftm-git/SKILL.md +441 -441
- package/ftm-git/evals/evals.json +26 -26
- package/ftm-git/evals/promptfoo.yaml +75 -75
- package/ftm-git/hooks/post-commit-experience.sh +92 -92
- package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
- package/ftm-git/references/protocols/REMEDIATION.md +139 -139
- package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
- package/ftm-git.yml +2 -2
- package/ftm-inbox/backend/__pycache__/main.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/adapters/_retry.py +64 -64
- package/ftm-inbox/backend/adapters/base.py +230 -230
- package/ftm-inbox/backend/adapters/freshservice.py +104 -104
- package/ftm-inbox/backend/adapters/gmail.py +125 -125
- package/ftm-inbox/backend/adapters/jira.py +136 -136
- package/ftm-inbox/backend/adapters/registry.py +192 -192
- package/ftm-inbox/backend/adapters/slack.py +110 -110
- package/ftm-inbox/backend/db/connection.py +54 -54
- package/ftm-inbox/backend/db/schema.py +78 -78
- package/ftm-inbox/backend/executor/__init__.py +7 -7
- package/ftm-inbox/backend/executor/engine.py +149 -149
- package/ftm-inbox/backend/executor/step_runner.py +98 -98
- package/ftm-inbox/backend/main.py +103 -103
- package/ftm-inbox/backend/models/__init__.py +1 -1
- package/ftm-inbox/backend/models/unified_task.py +36 -36
- package/ftm-inbox/backend/planner/__init__.py +6 -6
- package/ftm-inbox/backend/planner/__pycache__/__init__.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/generator.py +127 -127
- package/ftm-inbox/backend/planner/schema.py +34 -34
- package/ftm-inbox/backend/requirements.txt +5 -5
- package/ftm-inbox/backend/routes/__pycache__/plan.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/routes/execute.py +186 -186
- package/ftm-inbox/backend/routes/health.py +52 -52
- package/ftm-inbox/backend/routes/inbox.py +68 -68
- package/ftm-inbox/backend/routes/plan.py +271 -271
- package/ftm-inbox/bin/launchagent.mjs +91 -91
- package/ftm-inbox/bin/setup.mjs +188 -188
- package/ftm-inbox/bin/start.sh +10 -10
- package/ftm-inbox/bin/status.sh +17 -17
- package/ftm-inbox/bin/stop.sh +8 -8
- package/ftm-inbox/config.example.yml +55 -55
- package/ftm-inbox/package-lock.json +2898 -2898
- package/ftm-inbox/package.json +26 -26
- package/ftm-inbox/postcss.config.js +6 -6
- package/ftm-inbox/src/app.css +199 -199
- package/ftm-inbox/src/app.html +18 -18
- package/ftm-inbox/src/lib/api.ts +166 -166
- package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
- package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
- package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
- package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
- package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
- package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
- package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
- package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
- package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
- package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
- package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
- package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
- package/ftm-inbox/src/lib/theme.ts +47 -47
- package/ftm-inbox/src/routes/+layout.svelte +76 -76
- package/ftm-inbox/src/routes/+page.svelte +401 -401
- package/ftm-inbox/svelte.config.js +12 -12
- package/ftm-inbox/tailwind.config.ts +63 -63
- package/ftm-inbox/tsconfig.json +13 -13
- package/ftm-inbox/vite.config.ts +6 -6
- package/ftm-intent/SKILL.md +241 -241
- package/ftm-intent.yml +2 -2
- package/ftm-manifest.json +3794 -3794
- package/ftm-map/SKILL.md +291 -291
- package/ftm-map/scripts/db.py +712 -712
- package/ftm-map/scripts/index.py +415 -415
- package/ftm-map/scripts/parser.py +224 -224
- package/ftm-map/scripts/queries/go-tags.scm +20 -20
- package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
- package/ftm-map/scripts/queries/python-tags.scm +31 -31
- package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
- package/ftm-map/scripts/queries/rust-tags.scm +37 -37
- package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
- package/ftm-map/scripts/query.py +301 -301
- package/ftm-map/scripts/ranker.py +377 -377
- package/ftm-map/scripts/requirements.txt +5 -5
- package/ftm-map/scripts/setup-hooks.sh +27 -27
- package/ftm-map/scripts/setup.sh +56 -56
- package/ftm-map/scripts/test_db.py +364 -364
- package/ftm-map/scripts/test_parser.py +174 -174
- package/ftm-map/scripts/test_query.py +183 -183
- package/ftm-map/scripts/test_ranker.py +199 -199
- package/ftm-map/scripts/views.py +591 -591
- package/ftm-map.yml +2 -2
- package/ftm-mind/SKILL.md +201 -1943
- package/ftm-mind/evals/promptfoo.yaml +142 -142
- package/ftm-mind/references/blackboard-protocol.md +110 -0
- package/ftm-mind/references/blackboard-schema.md +328 -328
- package/ftm-mind/references/complexity-guide.md +110 -110
- package/ftm-mind/references/complexity-sizing.md +138 -0
- package/ftm-mind/references/decide-act-protocol.md +172 -0
- package/ftm-mind/references/direct-execution.md +51 -0
- package/ftm-mind/references/environment-discovery.md +77 -0
- package/ftm-mind/references/event-registry.md +319 -319
- package/ftm-mind/references/mcp-inventory.md +300 -296
- package/ftm-mind/references/ops-routing.md +47 -0
- package/ftm-mind/references/orient-protocol.md +234 -0
- package/ftm-mind/references/personality.md +40 -0
- package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
- package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
- package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
- package/ftm-mind/references/reflexion-protocol.md +249 -249
- package/ftm-mind/references/routing/SCENARIOS.md +22 -22
- package/ftm-mind/references/routing-scenarios.md +35 -35
- package/ftm-mind.yml +2 -2
- package/ftm-ops.yml +4 -0
- package/ftm-pause/SKILL.md +395 -395
- package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
- package/ftm-pause/references/protocols/VALIDATION.md +80 -80
- package/ftm-pause.yml +2 -2
- package/ftm-researcher/SKILL.md +275 -275
- package/ftm-researcher/evals/agent-diversity.yaml +17 -17
- package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
- package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
- package/ftm-researcher/references/adaptive-search.md +116 -116
- package/ftm-researcher/references/agent-prompts.md +193 -193
- package/ftm-researcher/references/council-integration.md +193 -193
- package/ftm-researcher/references/output-format.md +203 -203
- package/ftm-researcher/references/synthesis-pipeline.md +165 -165
- package/ftm-researcher/scripts/score_credibility.py +234 -234
- package/ftm-researcher/scripts/validate_research.py +92 -92
- package/ftm-researcher.yml +2 -2
- package/ftm-resume/SKILL.md +518 -518
- package/ftm-resume/references/protocols/VALIDATION.md +172 -172
- package/ftm-resume.yml +2 -2
- package/ftm-retro/SKILL.md +380 -380
- package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
- package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
- package/ftm-retro.yml +2 -2
- package/ftm-routine/SKILL.md +170 -170
- package/ftm-routine.yml +4 -4
- package/ftm-state/blackboard/capabilities.json +5 -5
- package/ftm-state/blackboard/capabilities.schema.json +27 -27
- package/ftm-state/blackboard/context.json +37 -23
- package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
- package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
- package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
- package/ftm-state/blackboard/experiences/index.json +58 -9
- package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
- package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
- package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
- package/ftm-state/blackboard/patterns.json +6 -6
- package/ftm-state/schemas/context.schema.json +130 -130
- package/ftm-state/schemas/experience-index.schema.json +77 -77
- package/ftm-state/schemas/experience.schema.json +78 -78
- package/ftm-state/schemas/patterns.schema.json +44 -44
- package/ftm-upgrade/SKILL.md +194 -194
- package/ftm-upgrade/scripts/check-version.sh +76 -76
- package/ftm-upgrade/scripts/upgrade.sh +143 -143
- package/ftm-upgrade.yml +2 -2
- package/ftm-verify.yml +2 -2
- package/ftm.yml +2 -2
- package/hooks/ftm-auto-log.sh +137 -0
- package/hooks/ftm-blackboard-enforcer.sh +93 -93
- package/hooks/ftm-discovery-reminder.sh +90 -90
- package/hooks/ftm-drafts-gate.sh +61 -61
- package/hooks/ftm-event-logger.mjs +107 -107
- package/hooks/ftm-install-hooks.sh +240 -0
- package/hooks/ftm-learning-capture.sh +117 -0
- package/hooks/ftm-map-autodetect.sh +79 -79
- package/hooks/ftm-pending-sync-check.sh +22 -22
- package/hooks/ftm-plan-gate.sh +92 -92
- package/hooks/ftm-post-commit-trigger.sh +57 -57
- package/hooks/ftm-post-compaction.sh +138 -0
- package/hooks/ftm-pre-compaction.sh +147 -0
- package/hooks/ftm-session-end.sh +52 -0
- package/hooks/ftm-session-snapshot.sh +213 -0
- package/hooks/settings-template.json +81 -81
- package/install.sh +363 -363
- package/package.json +84 -84
- package/uninstall.sh +25 -25
package/ftm-config/SKILL.md
CHANGED
|
@@ -1,345 +1,422 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ftm-config
|
|
3
|
-
description: Configure ftm skill settings including model profiles, execution preferences, and defaults. Use when user says "ftm config", "ftm settings", "set ftm profile", "ftm model", or wants to change how ftm skills behave.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## Events
|
|
7
|
-
|
|
8
|
-
### Emits
|
|
9
|
-
- `task_completed` — when a configuration change is validated, saved, and confirmed to the user
|
|
10
|
-
|
|
11
|
-
### Listens To
|
|
12
|
-
(none — ftm-config is explicitly invoked by the user and does not respond to events)
|
|
13
|
-
|
|
14
|
-
# FTM Config
|
|
15
|
-
|
|
16
|
-
Manage configuration for all ftm skills, including model profiles, execution preferences, and session settings.
|
|
17
|
-
|
|
18
|
-
## Config File Location
|
|
19
|
-
|
|
20
|
-
`~/.claude/ftm-config.yml`
|
|
21
|
-
|
|
22
|
-
This is the single source of truth for all ftm skill behavior. Every ftm skill reads from this file at startup.
|
|
23
|
-
|
|
24
|
-
## Config Schema
|
|
25
|
-
|
|
26
|
-
```yaml
|
|
27
|
-
# FTM Skills Configuration
|
|
28
|
-
# Edit this file or use /ftm-config to modify settings
|
|
29
|
-
|
|
30
|
-
# Model profiles control which model is used at each stage
|
|
31
|
-
# Options: opus, sonnet, haiku, inherit (use session default)
|
|
32
|
-
profile: balanced # quality | balanced | budget | custom | inherit
|
|
33
|
-
|
|
34
|
-
profiles:
|
|
35
|
-
quality:
|
|
36
|
-
planning: opus # brainstorm, research, plan generation
|
|
37
|
-
execution: opus # agent task implementation
|
|
38
|
-
review: sonnet # audit, debug review, council synthesis
|
|
39
|
-
|
|
40
|
-
balanced:
|
|
41
|
-
planning: opus
|
|
42
|
-
execution: sonnet
|
|
43
|
-
review: sonnet
|
|
44
|
-
|
|
45
|
-
budget:
|
|
46
|
-
planning: sonnet
|
|
47
|
-
execution: sonnet
|
|
48
|
-
review: haiku
|
|
49
|
-
|
|
50
|
-
inherit:
|
|
51
|
-
planning: inherit
|
|
52
|
-
execution: inherit
|
|
53
|
-
review: inherit
|
|
54
|
-
|
|
55
|
-
custom:
|
|
56
|
-
planning: opus
|
|
57
|
-
execution: sonnet
|
|
58
|
-
review: haiku
|
|
59
|
-
|
|
60
|
-
# Execution preferences
|
|
61
|
-
execution:
|
|
62
|
-
max_parallel_agents: 5 # max agents dispatched simultaneously
|
|
63
|
-
auto_audit: true # run ftm-audit after each executor task
|
|
64
|
-
progress_tracking: true # write PROGRESS.md during execution
|
|
65
|
-
|
|
66
|
-
# Session management
|
|
67
|
-
session:
|
|
68
|
-
auto_pause_on_exit: false # automatically save state when conversation ends
|
|
69
|
-
state_retention_days: 7 # archive states older than this
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
###
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
1
|
+
---
|
|
2
|
+
name: ftm-config
|
|
3
|
+
description: Configure ftm skill settings including model profiles, execution preferences, and defaults. Use when user says "ftm config", "ftm settings", "set ftm profile", "ftm model", or wants to change how ftm skills behave.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Events
|
|
7
|
+
|
|
8
|
+
### Emits
|
|
9
|
+
- `task_completed` — when a configuration change is validated, saved, and confirmed to the user
|
|
10
|
+
|
|
11
|
+
### Listens To
|
|
12
|
+
(none — ftm-config is explicitly invoked by the user and does not respond to events)
|
|
13
|
+
|
|
14
|
+
# FTM Config
|
|
15
|
+
|
|
16
|
+
Manage configuration for all ftm skills, including model profiles, execution preferences, and session settings.
|
|
17
|
+
|
|
18
|
+
## Config File Location
|
|
19
|
+
|
|
20
|
+
`~/.claude/ftm-config.yml`
|
|
21
|
+
|
|
22
|
+
This is the single source of truth for all ftm skill behavior. Every ftm skill reads from this file at startup.
|
|
23
|
+
|
|
24
|
+
## Config Schema
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
# FTM Skills Configuration
|
|
28
|
+
# Edit this file or use /ftm-config to modify settings
|
|
29
|
+
|
|
30
|
+
# Model profiles control which model is used at each stage
|
|
31
|
+
# Options: opus, sonnet, haiku, inherit (use session default)
|
|
32
|
+
profile: balanced # quality | balanced | budget | custom | inherit
|
|
33
|
+
|
|
34
|
+
profiles:
|
|
35
|
+
quality:
|
|
36
|
+
planning: opus # brainstorm, research, plan generation
|
|
37
|
+
execution: opus # agent task implementation
|
|
38
|
+
review: sonnet # audit, debug review, council synthesis
|
|
39
|
+
|
|
40
|
+
balanced:
|
|
41
|
+
planning: opus
|
|
42
|
+
execution: sonnet
|
|
43
|
+
review: sonnet
|
|
44
|
+
|
|
45
|
+
budget:
|
|
46
|
+
planning: sonnet
|
|
47
|
+
execution: sonnet
|
|
48
|
+
review: haiku
|
|
49
|
+
|
|
50
|
+
inherit:
|
|
51
|
+
planning: inherit
|
|
52
|
+
execution: inherit
|
|
53
|
+
review: inherit
|
|
54
|
+
|
|
55
|
+
custom:
|
|
56
|
+
planning: opus
|
|
57
|
+
execution: sonnet
|
|
58
|
+
review: haiku
|
|
59
|
+
|
|
60
|
+
# Execution preferences
|
|
61
|
+
execution:
|
|
62
|
+
max_parallel_agents: 5 # max agents dispatched simultaneously
|
|
63
|
+
auto_audit: true # run ftm-audit after each executor task
|
|
64
|
+
progress_tracking: true # write PROGRESS.md during execution
|
|
65
|
+
|
|
66
|
+
# Session management
|
|
67
|
+
session:
|
|
68
|
+
auto_pause_on_exit: false # automatically save state when conversation ends
|
|
69
|
+
state_retention_days: 7 # archive states older than this
|
|
70
|
+
|
|
71
|
+
# Operations intelligence settings (merged from eng-buddy)
|
|
72
|
+
ops:
|
|
73
|
+
personality_style: supportive-direct # supportive-direct | formal | casual
|
|
74
|
+
|
|
75
|
+
mcp_account_rules:
|
|
76
|
+
personal: mcp-atlassian-personal # for user actions (comments, ticket updates)
|
|
77
|
+
admin: mcp-atlassian # for admin/global operations only
|
|
78
|
+
default: personal # always use personal unless explicitly admin
|
|
79
|
+
|
|
80
|
+
approval_gates:
|
|
81
|
+
communication_drafts: always # always | auto | never
|
|
82
|
+
task_status_changes: auto # always | auto | never
|
|
83
|
+
capacity_alerts: auto # always | auto | never
|
|
84
|
+
|
|
85
|
+
context_loading:
|
|
86
|
+
strategy: smart # smart | full | minimal
|
|
87
|
+
max_daily_files: 3 # max daily files to load at once
|
|
88
|
+
grep_first: true # always grep index before loading full files
|
|
89
|
+
session_snapshot_on_cold_start: true # load last session snapshot if today's daily is sparse
|
|
90
|
+
|
|
91
|
+
alert_thresholds:
|
|
92
|
+
capacity_warning: 90 # percentage
|
|
93
|
+
capacity_alert: 100 # percentage
|
|
94
|
+
context_switches_warning: 20 # per week
|
|
95
|
+
oncall_incidents_warning: 3 # per week
|
|
96
|
+
weekend_work: true # alert on any weekend work
|
|
97
|
+
weekly_hours_warning: 45 # hours per week, alert if exceeded 2 weeks running
|
|
98
|
+
recurring_issue_threshold: 2 # times in 30 days before alerting
|
|
99
|
+
recurring_question_threshold: 3 # times before suggesting documentation
|
|
100
|
+
|
|
101
|
+
drafts:
|
|
102
|
+
directory: ~/.claude/ftm-ops/drafts/ # where communication drafts are stored
|
|
103
|
+
naming: "[recipient]-[topic]-[YYYY-MM-DD].md"
|
|
104
|
+
write_before_display: true # always write file before showing draft in chat
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Instructions
|
|
108
|
+
|
|
109
|
+
### Step 1: Read Current Config
|
|
110
|
+
|
|
111
|
+
Read `~/.claude/ftm-config.yml`. If it does not exist, create it with the default configuration (balanced profile active, all defaults as shown in the schema above). Use the file-creator pattern or Write tool to create the file.
|
|
112
|
+
|
|
113
|
+
### Step 2: Determine Intent
|
|
114
|
+
|
|
115
|
+
Parse the user's input to determine what they want:
|
|
116
|
+
|
|
117
|
+
- **No arguments** (bare `/ftm-config`): Display current configuration.
|
|
118
|
+
- **`set profile <name>`**: Change the active profile.
|
|
119
|
+
- **`set profile custom`**: Activate the custom profile, then interactively ask which model to use for each stage (planning, execution, review).
|
|
120
|
+
- **`set <dotted.path> <value>`**: Update a specific setting (e.g., `set execution.max_parallel_agents 3`).
|
|
121
|
+
- **`enable <skill-name>`** / **`disable <skill-name>`**: Enable or disable a skill in ftm-mind routing.
|
|
122
|
+
- **`reset`**: Restore all settings to defaults.
|
|
123
|
+
- **`show profiles`**: Display all available profiles side by side.
|
|
124
|
+
- **`show skills`**: Display all skills and their enabled/disabled status.
|
|
125
|
+
- **`show ops`**: Display all ops intelligence settings and their current values.
|
|
126
|
+
- **`set ops.<dotted.path> <value>`**: Update a specific ops setting (e.g., `set ops.personality_style formal`).
|
|
127
|
+
|
|
128
|
+
### Step 3: Display Current Configuration (No Args)
|
|
129
|
+
|
|
130
|
+
When displaying the config, format it clearly:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
FTM Configuration
|
|
134
|
+
====================
|
|
135
|
+
|
|
136
|
+
Active Profile: balanced
|
|
137
|
+
|
|
138
|
+
Planning → opus (brainstorm, research, plan generation)
|
|
139
|
+
Execution → sonnet (agent task implementation)
|
|
140
|
+
Review → sonnet (audit, debug review, council synthesis)
|
|
141
|
+
|
|
142
|
+
Execution Settings:
|
|
143
|
+
Max Parallel Agents: 5
|
|
144
|
+
Auto Audit: true
|
|
145
|
+
Progress Tracking: true
|
|
146
|
+
|
|
147
|
+
Session Settings:
|
|
148
|
+
Auto Pause on Exit: false
|
|
149
|
+
State Retention Days: 7
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Step 4: Apply Changes
|
|
153
|
+
|
|
154
|
+
When the user requests a change:
|
|
155
|
+
|
|
156
|
+
1. **Validate inputs**:
|
|
157
|
+
- Model names must be one of: `opus`, `sonnet`, `haiku`, `inherit`. Reject anything else with a clear error.
|
|
158
|
+
- Profile names must be one of: `quality`, `balanced`, `budget`, `custom`, `inherit`. Reject anything else.
|
|
159
|
+
- Numeric values must be positive integers where applicable.
|
|
160
|
+
- Boolean values must be `true` or `false`.
|
|
161
|
+
|
|
162
|
+
2. **Show before/after**:
|
|
163
|
+
```
|
|
164
|
+
Changing active profile:
|
|
165
|
+
Before: balanced (opus / sonnet / sonnet)
|
|
166
|
+
After: quality (opus / opus / sonnet)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
3. **Save changes**: Write the updated YAML back to `~/.claude/ftm-config.yml`.
|
|
170
|
+
|
|
171
|
+
4. **Confirm**: Display the updated configuration section that changed.
|
|
172
|
+
|
|
173
|
+
### Step 5: Handle Custom Profile
|
|
174
|
+
|
|
175
|
+
When the user sets `profile custom`:
|
|
176
|
+
|
|
177
|
+
1. Show the current custom profile settings.
|
|
178
|
+
2. Ask: "Which model for **planning** (brainstorm, research)? [opus/sonnet/haiku/inherit]"
|
|
179
|
+
3. Ask: "Which model for **execution** (agent tasks, code writing)? [opus/sonnet/haiku/inherit]"
|
|
180
|
+
4. Ask: "Which model for **review** (audit, debug, council)? [opus/sonnet/haiku/inherit]"
|
|
181
|
+
5. Validate each answer, save, and display the final custom profile.
|
|
182
|
+
|
|
183
|
+
If the user provides all three in one line (e.g., `set profile custom opus haiku sonnet`), parse them positionally as planning/execution/review without asking interactively.
|
|
184
|
+
|
|
185
|
+
### Step 6: Handle Reset
|
|
186
|
+
|
|
187
|
+
When the user says `reset`:
|
|
188
|
+
|
|
189
|
+
1. Show current configuration.
|
|
190
|
+
2. Confirm: "This will restore all ftm settings to defaults. Proceed?"
|
|
191
|
+
3. If confirmed, write the default configuration to `~/.claude/ftm-config.yml`.
|
|
192
|
+
4. Display the restored defaults.
|
|
193
|
+
|
|
194
|
+
## Valid Model Options
|
|
195
|
+
|
|
196
|
+
| Model | Description | Best For |
|
|
197
|
+
|-------|-------------|----------|
|
|
198
|
+
| `opus` | Most capable, highest quality | Complex planning, architecture decisions |
|
|
199
|
+
| `sonnet` | Balanced capability and speed | General execution, code writing, reviews |
|
|
200
|
+
| `haiku` | Fastest, most efficient | Simple reviews, quick checks, budget tasks |
|
|
201
|
+
| `inherit` | Use session default | When you want the conversation's current model |
|
|
202
|
+
|
|
203
|
+
## Valid Profiles
|
|
204
|
+
|
|
205
|
+
| Profile | Planning | Execution | Review | Use Case |
|
|
206
|
+
|---------|----------|-----------|--------|----------|
|
|
207
|
+
| `quality` | opus | opus | sonnet | Maximum quality, complex projects |
|
|
208
|
+
| `balanced` | opus | sonnet | sonnet | Good default for most work |
|
|
209
|
+
| `budget` | sonnet | sonnet | haiku | Token-efficient, simpler tasks |
|
|
210
|
+
| `inherit` | inherit | inherit | inherit | Use whatever model the session runs |
|
|
211
|
+
| `custom` | (user-defined) | (user-defined) | (user-defined) | Full user control |
|
|
212
|
+
|
|
213
|
+
## How Other FTM Skills Use This Config
|
|
214
|
+
|
|
215
|
+
All ftm skills should read `~/.claude/ftm-config.yml` at the start of execution to determine which model to use when spawning agents.
|
|
216
|
+
|
|
217
|
+
### Reading the Config
|
|
218
|
+
|
|
219
|
+
At the beginning of any ftm skill execution:
|
|
220
|
+
|
|
221
|
+
1. Read `~/.claude/ftm-config.yml`.
|
|
222
|
+
2. Look at the `profile` field to determine which profile is active.
|
|
223
|
+
3. Look up that profile under `profiles.<profile_name>` to get the model for each stage.
|
|
224
|
+
4. If the config file does not exist, use "balanced" defaults: `opus` for planning, `sonnet` for execution, `sonnet` for review.
|
|
225
|
+
|
|
226
|
+
### Mapping Stages to FTM Skills
|
|
227
|
+
|
|
228
|
+
| Stage | Config Key | Panda Skills That Use It |
|
|
229
|
+
|-------|-----------|--------------------------|
|
|
230
|
+
| **Planning** | `profiles.<active>.planning` | ftm-brainstorm, ftm (research/plan generation phase) |
|
|
231
|
+
| **Execution** | `profiles.<active>.execution` | ftm-executor (all spawned task agents) |
|
|
232
|
+
| **Review** | `profiles.<active>.review` | ftm-audit, ftm-debug, ftm-council (synthesis phase) |
|
|
233
|
+
|
|
234
|
+
### Spawning Agents with the Correct Model
|
|
235
|
+
|
|
236
|
+
When spawning agents, use the `model` parameter on the Agent tool:
|
|
237
|
+
|
|
238
|
+
- **For planning agents** (research, brainstorming, plan generation):
|
|
239
|
+
Use the profile's `planning` model.
|
|
240
|
+
|
|
241
|
+
- **For execution agents** (implementing tasks, writing code):
|
|
242
|
+
Use the profile's `execution` model.
|
|
243
|
+
|
|
244
|
+
- **For review agents** (audit, debug review, council synthesis):
|
|
245
|
+
Use the profile's `review` model.
|
|
246
|
+
|
|
247
|
+
If the model value is `"inherit"`, omit the `model` parameter entirely so the agent inherits the session's current model.
|
|
248
|
+
|
|
249
|
+
### Example Resolution
|
|
250
|
+
|
|
251
|
+
Given this config:
|
|
252
|
+
```yaml
|
|
253
|
+
profile: balanced
|
|
254
|
+
profiles:
|
|
255
|
+
balanced:
|
|
256
|
+
planning: opus
|
|
257
|
+
execution: sonnet
|
|
258
|
+
review: sonnet
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
- `ftm-brainstorm` spawns its research agents with `model: opus`
|
|
262
|
+
- `ftm-executor` spawns task agents with `model: sonnet`
|
|
263
|
+
- `ftm-audit` spawns review agents with `model: sonnet`
|
|
264
|
+
- `ftm-council` spawns synthesis agents with `model: sonnet`
|
|
265
|
+
|
|
266
|
+
### Execution Preferences
|
|
267
|
+
|
|
268
|
+
Other ftm skills should also respect:
|
|
269
|
+
|
|
270
|
+
- **`execution.max_parallel_agents`**: Do not spawn more agents simultaneously than this number. Queue excess agents.
|
|
271
|
+
- **`execution.auto_audit`**: If `true`, `ftm-executor` should automatically invoke `ftm-audit` after each task completes.
|
|
272
|
+
- **`execution.progress_tracking`**: If `true`, write status updates to `PROGRESS.md` in the workspace during execution.
|
|
273
|
+
|
|
274
|
+
### Session Preferences
|
|
275
|
+
|
|
276
|
+
- **`session.auto_pause_on_exit`**: If `true`, ftm skills should automatically save state (like `ftm-pause`) when the conversation is ending.
|
|
277
|
+
- **`session.state_retention_days`**: When resuming, archive or clean up state files older than this many days.
|
|
278
|
+
|
|
279
|
+
### Operations Preferences (`ops:`)
|
|
280
|
+
|
|
281
|
+
The `ops:` section configures `ftm-ops` behavior for personal engineering operations intelligence. All settings are optional — ftm-ops applies built-in defaults if the section is absent.
|
|
282
|
+
|
|
283
|
+
**`ops.personality_style`** — How ftm-ops communicates with you.
|
|
284
|
+
- `supportive-direct` (default): Warm tone, honest about problems, no fluff
|
|
285
|
+
- `formal`: Professional, neutral language
|
|
286
|
+
- `casual`: Relaxed, conversational
|
|
287
|
+
|
|
288
|
+
**`ops.mcp_account_rules`** — Which Atlassian MCP account to use for different operation types.
|
|
289
|
+
- `personal`: MCP server name for user-level actions (commenting, updating your own tickets). Default: `mcp-atlassian-personal`
|
|
290
|
+
- `admin`: MCP server name for admin/global operations (bulk changes, project config). Default: `mcp-atlassian`
|
|
291
|
+
- `default`: Which account to use when not otherwise specified. Should always be `personal` to avoid accidental admin-scoped writes.
|
|
292
|
+
|
|
293
|
+
**`ops.approval_gates`** — When ftm-ops must pause for your approval before acting.
|
|
294
|
+
- `communication_drafts`: `always | auto | never` — Whether to require approval before sending communications. Default `always` (never sends without review).
|
|
295
|
+
- `task_status_changes`: `always | auto | never` — Whether to require approval before updating Jira/ticket status. Default `auto` (asks for significant transitions only).
|
|
296
|
+
- `capacity_alerts`: `always | auto | never` — Whether to surface capacity warnings proactively. Default `auto` (alerts when thresholds are crossed).
|
|
297
|
+
|
|
298
|
+
**`ops.context_loading`** — Controls how ftm-ops loads daily context files.
|
|
299
|
+
- `strategy`: `smart | full | minimal` — `smart` greps the index first and only loads relevant sections; `full` loads all daily files; `minimal` loads only today's file.
|
|
300
|
+
- `max_daily_files`: Maximum number of daily log files to load simultaneously. Keeps context windows manageable.
|
|
301
|
+
- `grep_first`: If `true`, always grep the daily index before loading full files. Prevents loading large files for small queries.
|
|
302
|
+
- `session_snapshot_on_cold_start`: If `true` and today's daily log is sparse (< 200 words), automatically load the last saved session snapshot to restore context.
|
|
303
|
+
|
|
304
|
+
**`ops.alert_thresholds`** — Numeric thresholds that trigger proactive capacity and health alerts.
|
|
305
|
+
- `capacity_warning`: Percentage of estimated capacity at which a yellow warning fires (default 90%).
|
|
306
|
+
- `capacity_alert`: Percentage at which a red alert fires (default 100%).
|
|
307
|
+
- `context_switches_warning`: Number of context switches per week that triggers a focus warning (default 20).
|
|
308
|
+
- `oncall_incidents_warning`: Number of on-call incidents per week that triggers a burnout risk flag (default 3).
|
|
309
|
+
- `weekend_work`: If `true`, any weekend work detected triggers an alert regardless of duration.
|
|
310
|
+
- `weekly_hours_warning`: Hours per week threshold. Alert fires if this is exceeded for 2 consecutive weeks (default 45).
|
|
311
|
+
- `recurring_issue_threshold`: Number of times an issue must recur within 30 days before ftm-ops flags it as a pattern (default 2).
|
|
312
|
+
- `recurring_question_threshold`: Number of times the same question is asked before ftm-ops suggests creating documentation (default 3).
|
|
313
|
+
|
|
314
|
+
**`ops.drafts`** — Controls how communication drafts are written and stored.
|
|
315
|
+
- `directory`: Filesystem path where draft files are saved before display. Default `~/.claude/ftm-ops/drafts/`.
|
|
316
|
+
- `naming`: Filename template for draft files. Variables: `[recipient]`, `[topic]`, `[YYYY-MM-DD]`.
|
|
317
|
+
- `write_before_display`: If `true`, ftm-ops always writes the draft file to disk before showing it in chat. Ensures drafts are never lost if the conversation is interrupted.
|
|
318
|
+
|
|
319
|
+
## Examples
|
|
320
|
+
|
|
321
|
+
### View current config
|
|
322
|
+
```
|
|
323
|
+
User: /ftm-config
|
|
324
|
+
→ Displays full current configuration
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### Switch to quality profile
|
|
328
|
+
```
|
|
329
|
+
User: /ftm-config set profile quality
|
|
330
|
+
→ Shows before/after, saves change
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Set custom profile with specific models
|
|
334
|
+
```
|
|
335
|
+
User: /ftm-config set profile custom opus haiku sonnet
|
|
336
|
+
→ Sets custom profile: planning=opus, execution=haiku, review=sonnet
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Change a specific setting
|
|
340
|
+
```
|
|
341
|
+
User: /ftm-config set execution.max_parallel_agents 3
|
|
342
|
+
→ Updates max parallel agents from 5 to 3
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Disable auto-audit
|
|
346
|
+
```
|
|
347
|
+
User: /ftm-config set execution.auto_audit false
|
|
348
|
+
→ Disables automatic audit after executor tasks
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Disable a skill
|
|
352
|
+
```
|
|
353
|
+
User: /ftm-config disable ftm-council
|
|
354
|
+
→ Sets skills.ftm-council.enabled: false — ftm-mind will no longer route to it
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### Show skill status
|
|
358
|
+
```
|
|
359
|
+
User: /ftm-config show skills
|
|
360
|
+
→ Displays all skills with enabled/disabled status
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Reset to defaults
|
|
364
|
+
```
|
|
365
|
+
User: /ftm-config reset
|
|
366
|
+
→ Confirms, then restores all settings to defaults
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Show all profiles
|
|
370
|
+
```
|
|
371
|
+
User: /ftm-config show profiles
|
|
372
|
+
→ Displays table of all profiles with their model assignments
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
## Troubleshooting
|
|
376
|
+
|
|
377
|
+
### Config file is missing
|
|
378
|
+
The skill will create `~/.claude/ftm-config.yml` with default settings automatically. No action needed.
|
|
379
|
+
|
|
380
|
+
### Invalid model name
|
|
381
|
+
Only `opus`, `sonnet`, `haiku`, and `inherit` are valid. The skill will reject other values and show the valid options.
|
|
382
|
+
|
|
383
|
+
### Config file is malformed
|
|
384
|
+
If the YAML cannot be parsed, the skill will back up the broken file as `~/.claude/ftm-config.yml.bak` and create a fresh default config.
|
|
385
|
+
|
|
386
|
+
### Changes not taking effect
|
|
387
|
+
Other ftm skills read the config at startup. If a ftm skill is already running, it will use the config that was active when it started. Changes apply to the next invocation.
|
|
388
|
+
|
|
389
|
+
## Requirements
|
|
390
|
+
|
|
391
|
+
- config: `~/.claude/ftm-config.yml` | optional | main config file (created with defaults if missing)
|
|
392
|
+
|
|
393
|
+
## Risk
|
|
394
|
+
|
|
395
|
+
- level: low_write
|
|
396
|
+
- scope: reads and writes ~/.claude/ftm-config.yml only; backs up malformed config to ftm-config.yml.bak before overwriting; no project files touched
|
|
397
|
+
- rollback: restore from ~/.claude/ftm-config.yml.bak or delete the file to reset to defaults on next invocation
|
|
398
|
+
|
|
399
|
+
## Approval Gates
|
|
400
|
+
|
|
401
|
+
- trigger: reset command issued | action: show current config and ask "Proceed?" before restoring defaults
|
|
402
|
+
- trigger: invalid model name or profile name provided | action: reject with clear error showing valid options, do not write
|
|
403
|
+
- complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
|
|
404
|
+
|
|
405
|
+
## Fallbacks
|
|
406
|
+
|
|
407
|
+
- condition: ftm-config.yml missing | action: create file with default balanced profile and all defaults
|
|
408
|
+
- condition: ftm-config.yml malformed YAML | action: back up as ftm-config.yml.bak, create fresh default config
|
|
409
|
+
- condition: invalid model or profile value provided | action: reject and show valid options without writing
|
|
410
|
+
|
|
411
|
+
## Capabilities
|
|
412
|
+
|
|
413
|
+
- env: none required
|
|
414
|
+
|
|
415
|
+
## Event Payloads
|
|
416
|
+
|
|
417
|
+
### task_completed
|
|
418
|
+
- skill: string — "ftm-config"
|
|
419
|
+
- action: string — "display" | "set_profile" | "set_value" | "reset" | "show_profiles" | "show_skills"
|
|
420
|
+
- changed_key: string | null — dotted path of changed setting
|
|
421
|
+
- old_value: string | null — value before change
|
|
422
|
+
- new_value: string | null — value after change
|