fdeops 4.1.1 → 5.1.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 (264) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +85 -246
  3. package/bin/catalog-doc.js +38 -0
  4. package/bin/check.js +20 -49
  5. package/bin/fde.js +2 -2
  6. package/bin/generate-skills.js +11 -3
  7. package/bin/install.js +37 -3
  8. package/bin/skill-catalog.js +283 -16
  9. package/mcp/fdeops-ingest/package.json +1 -1
  10. package/package.json +2 -2
  11. package/plugin.json +1 -1
  12. package/skills/README.md +7 -0
  13. package/skills/audit/.fde-generated.json +10 -0
  14. package/skills/audit/SKILL.md +21 -0
  15. package/skills/audit/references/discover.md +112 -0
  16. package/skills/{fde-build → audit}/references/task-context.md +7 -1
  17. package/skills/board-memo/.fde-generated.json +10 -0
  18. package/skills/board-memo/SKILL.md +21 -0
  19. package/skills/{fde-debug → board-memo}/references/task-context.md +7 -1
  20. package/skills/brief/.fde-generated.json +9 -0
  21. package/skills/brief/SKILL.md +21 -0
  22. package/skills/brief/references/land.md +136 -0
  23. package/skills/{fde-discover → brief}/references/task-context.md +7 -1
  24. package/skills/{fde-build → build}/.fde-generated.json +2 -2
  25. package/skills/{fde-build → build}/SKILL.md +2 -2
  26. package/skills/{fde-evaluate → build}/references/task-context.md +7 -1
  27. package/skills/business-case/.fde-generated.json +9 -0
  28. package/skills/business-case/SKILL.md +21 -0
  29. package/skills/business-case/references/task-context.md +18 -0
  30. package/skills/connect/.fde-generated.json +12 -0
  31. package/skills/connect/SKILL.md +21 -0
  32. package/skills/connect/references/connect.md +24 -0
  33. package/skills/connect/references/debrief.md +91 -0
  34. package/skills/connect/references/ingest.md +75 -0
  35. package/skills/connect/references/source-setup.md +30 -0
  36. package/skills/connect/references/task-context.md +18 -0
  37. package/skills/dashboard/.fde-generated.json +9 -0
  38. package/skills/dashboard/SKILL.md +21 -0
  39. package/skills/dashboard/references/dashboard.md +40 -0
  40. package/skills/dashboard/references/task-context.md +18 -0
  41. package/skills/debrief/.fde-generated.json +12 -0
  42. package/skills/debrief/SKILL.md +21 -0
  43. package/skills/debrief/references/connect.md +24 -0
  44. package/skills/debrief/references/debrief.md +91 -0
  45. package/skills/debrief/references/ingest.md +75 -0
  46. package/skills/debrief/references/source-setup.md +30 -0
  47. package/skills/debrief/references/task-context.md +18 -0
  48. package/skills/{fde-debug → debug}/.fde-generated.json +2 -2
  49. package/skills/{fde-debug → debug}/SKILL.md +2 -2
  50. package/skills/debug/references/task-context.md +18 -0
  51. package/skills/demo-prep/.fde-generated.json +9 -0
  52. package/skills/demo-prep/SKILL.md +21 -0
  53. package/skills/demo-prep/references/demo-prep.md +31 -0
  54. package/skills/demo-prep/references/task-context.md +18 -0
  55. package/skills/discover/.fde-generated.json +10 -0
  56. package/skills/{fde-discover → discover}/SKILL.md +2 -2
  57. package/skills/discover/references/discover.md +112 -0
  58. package/skills/discover/references/task-context.md +18 -0
  59. package/skills/earn-trust/.fde-generated.json +9 -0
  60. package/skills/earn-trust/SKILL.md +21 -0
  61. package/skills/earn-trust/references/earn-trust.md +100 -0
  62. package/skills/earn-trust/references/task-context.md +18 -0
  63. package/skills/{fde-integrate → evaluate}/.fde-generated.json +2 -2
  64. package/skills/{fde-evaluate → evaluate}/SKILL.md +2 -2
  65. package/skills/evaluate/references/task-context.md +18 -0
  66. package/skills/fde/SKILL.md +11 -10
  67. package/skills/fde/references/connect.md +14 -24
  68. package/skills/fde/references/debrief.md +2 -0
  69. package/skills/fde/references/discover.md +66 -208
  70. package/skills/fde/references/ingest.md +4 -2
  71. package/skills/fde/references/plan.md +6 -6
  72. package/skills/fde/references/runbook.md +52 -120
  73. package/skills/fde/references/source-setup.md +30 -0
  74. package/skills/fde/references/task-context.md +7 -1
  75. package/skills/feedback/.fde-generated.json +9 -0
  76. package/skills/{fde-feedback → feedback}/SKILL.md +2 -2
  77. package/skills/feedback/references/task-context.md +18 -0
  78. package/skills/{fde-handoff → handoff}/.fde-generated.json +2 -2
  79. package/skills/{fde-handoff → handoff}/SKILL.md +2 -2
  80. package/skills/handoff/references/task-context.md +18 -0
  81. package/skills/ingest/.fde-generated.json +12 -0
  82. package/skills/ingest/SKILL.md +21 -0
  83. package/skills/ingest/references/connect.md +24 -0
  84. package/skills/ingest/references/debrief.md +91 -0
  85. package/skills/ingest/references/ingest.md +75 -0
  86. package/skills/ingest/references/source-setup.md +30 -0
  87. package/skills/ingest/references/task-context.md +18 -0
  88. package/skills/{fde-evaluate → integrate}/.fde-generated.json +2 -2
  89. package/skills/{fde-integrate → integrate}/SKILL.md +2 -2
  90. package/skills/integrate/references/task-context.md +18 -0
  91. package/skills/{fde-options → options}/.fde-generated.json +2 -2
  92. package/skills/{fde-options → options}/SKILL.md +2 -2
  93. package/skills/options/references/task-context.md +18 -0
  94. package/skills/plan/.fde-generated.json +10 -0
  95. package/skills/plan/SKILL.md +21 -0
  96. package/skills/plan/references/business-case.md +90 -0
  97. package/skills/{fde-poc → plan}/references/plan.md +6 -6
  98. package/skills/plan/references/task-context.md +18 -0
  99. package/skills/{fde-poc → poc}/.fde-generated.json +4 -4
  100. package/skills/{fde-poc → poc}/SKILL.md +2 -2
  101. package/skills/poc/references/audit.md +71 -0
  102. package/skills/poc/references/business-case.md +90 -0
  103. package/skills/poc/references/discover.md +112 -0
  104. package/skills/poc/references/plan.md +167 -0
  105. package/skills/poc/references/task-context.md +18 -0
  106. package/skills/prioritize/.fde-generated.json +10 -0
  107. package/skills/prioritize/SKILL.md +21 -0
  108. package/skills/prioritize/references/business-case.md +90 -0
  109. package/skills/prioritize/references/pick-three.md +95 -0
  110. package/skills/prioritize/references/task-context.md +18 -0
  111. package/skills/qa/.fde-generated.json +16 -0
  112. package/skills/{fde-qa → qa}/SKILL.md +2 -2
  113. package/skills/qa/references/task-context.md +18 -0
  114. package/skills/{fde-readout → readout}/.fde-generated.json +2 -2
  115. package/skills/{fde-readout → readout}/SKILL.md +2 -2
  116. package/skills/readout/references/board-memo.md +108 -0
  117. package/skills/readout/references/business-case.md +90 -0
  118. package/skills/readout/references/task-context.md +18 -0
  119. package/skills/red-team/.fde-generated.json +9 -0
  120. package/skills/red-team/SKILL.md +21 -0
  121. package/skills/red-team/references/red-team.md +105 -0
  122. package/skills/red-team/references/task-context.md +18 -0
  123. package/skills/rescue/.fde-generated.json +9 -0
  124. package/skills/rescue/SKILL.md +21 -0
  125. package/skills/rescue/references/rescue.md +82 -0
  126. package/skills/rescue/references/task-context.md +18 -0
  127. package/skills/review/.fde-generated.json +16 -0
  128. package/skills/{fde-review → review}/SKILL.md +2 -2
  129. package/skills/review/references/task-context.md +18 -0
  130. package/skills/rollback/.fde-generated.json +9 -0
  131. package/skills/rollback/SKILL.md +21 -0
  132. package/skills/rollback/references/rollback.md +102 -0
  133. package/skills/rollback/references/task-context.md +18 -0
  134. package/skills/runbook/.fde-generated.json +11 -0
  135. package/skills/runbook/SKILL.md +21 -0
  136. package/skills/runbook/references/close.md +66 -0
  137. package/skills/runbook/references/encode-pattern.md +96 -0
  138. package/skills/runbook/references/runbook.md +73 -0
  139. package/skills/runbook/references/task-context.md +18 -0
  140. package/skills/scope/.fde-generated.json +9 -0
  141. package/skills/{fde-scope → scope}/SKILL.md +2 -2
  142. package/skills/scope/references/task-context.md +18 -0
  143. package/skills/score-use-cases/.fde-generated.json +10 -0
  144. package/skills/score-use-cases/SKILL.md +21 -0
  145. package/skills/score-use-cases/references/business-case.md +90 -0
  146. package/skills/score-use-cases/references/score-use-cases.md +70 -0
  147. package/skills/score-use-cases/references/task-context.md +18 -0
  148. package/skills/ship/.fde-generated.json +16 -0
  149. package/skills/{fde-ship → ship}/SKILL.md +2 -2
  150. package/skills/ship/references/task-context.md +18 -0
  151. package/skills/switch-clients/.fde-generated.json +9 -0
  152. package/skills/switch-clients/SKILL.md +21 -0
  153. package/skills/switch-clients/references/switch-clients.md +114 -0
  154. package/skills/switch-clients/references/task-context.md +18 -0
  155. package/skills/test-assumptions/.fde-generated.json +9 -0
  156. package/skills/test-assumptions/SKILL.md +21 -0
  157. package/skills/test-assumptions/references/task-context.md +18 -0
  158. package/skills/test-assumptions/references/test-assumptions.md +102 -0
  159. package/skills/what-breaks/.fde-generated.json +9 -0
  160. package/skills/what-breaks/SKILL.md +21 -0
  161. package/skills/what-breaks/references/task-context.md +18 -0
  162. package/skills/what-breaks/references/what-breaks.md +91 -0
  163. package/skills/who-decides/.fde-generated.json +9 -0
  164. package/skills/who-decides/SKILL.md +21 -0
  165. package/skills/who-decides/references/task-context.md +18 -0
  166. package/skills/who-decides/references/who-decides.md +91 -0
  167. package/skills/fde-discover/.fde-generated.json +0 -10
  168. package/skills/fde-discover/references/discover.md +0 -254
  169. package/skills/fde-feedback/.fde-generated.json +0 -9
  170. package/skills/fde-feedback/references/task-context.md +0 -12
  171. package/skills/fde-handoff/references/task-context.md +0 -12
  172. package/skills/fde-integrate/references/task-context.md +0 -12
  173. package/skills/fde-options/references/task-context.md +0 -12
  174. package/skills/fde-poc/references/discover.md +0 -254
  175. package/skills/fde-poc/references/task-context.md +0 -12
  176. package/skills/fde-qa/.fde-generated.json +0 -16
  177. package/skills/fde-qa/references/task-context.md +0 -12
  178. package/skills/fde-readout/references/task-context.md +0 -12
  179. package/skills/fde-review/.fde-generated.json +0 -16
  180. package/skills/fde-review/references/task-context.md +0 -12
  181. package/skills/fde-scope/.fde-generated.json +0 -9
  182. package/skills/fde-scope/references/task-context.md +0 -12
  183. package/skills/fde-ship/.fde-generated.json +0 -16
  184. package/skills/fde-ship/references/task-context.md +0 -12
  185. /package/skills/{fde-discover → audit}/references/audit.md +0 -0
  186. /package/skills/{fde-readout → board-memo}/references/board-memo.md +0 -0
  187. /package/skills/{fde-options → board-memo}/references/business-case.md +0 -0
  188. /package/skills/{fde-build → build}/references/build.md +0 -0
  189. /package/skills/{fde-build → build}/references/debug.md +0 -0
  190. /package/skills/{fde-build → build}/references/eval-pack.md +0 -0
  191. /package/skills/{fde-build → build}/references/integrate.md +0 -0
  192. /package/skills/{fde-build → build}/references/qa.md +0 -0
  193. /package/skills/{fde-build → build}/references/review.md +0 -0
  194. /package/skills/{fde-build → build}/references/ship.md +0 -0
  195. /package/skills/{fde-build → build}/references/verification.md +0 -0
  196. /package/skills/{fde-poc → business-case}/references/business-case.md +0 -0
  197. /package/skills/{fde-debug → debug}/references/build.md +0 -0
  198. /package/skills/{fde-debug → debug}/references/debug.md +0 -0
  199. /package/skills/{fde-debug → debug}/references/eval-pack.md +0 -0
  200. /package/skills/{fde-debug → debug}/references/integrate.md +0 -0
  201. /package/skills/{fde-debug → debug}/references/qa.md +0 -0
  202. /package/skills/{fde-debug → debug}/references/review.md +0 -0
  203. /package/skills/{fde-debug → debug}/references/ship.md +0 -0
  204. /package/skills/{fde-debug → debug}/references/verification.md +0 -0
  205. /package/skills/{fde-poc → discover}/references/audit.md +0 -0
  206. /package/skills/{fde-evaluate → evaluate}/references/build.md +0 -0
  207. /package/skills/{fde-evaluate → evaluate}/references/debug.md +0 -0
  208. /package/skills/{fde-evaluate → evaluate}/references/eval-pack.md +0 -0
  209. /package/skills/{fde-evaluate → evaluate}/references/integrate.md +0 -0
  210. /package/skills/{fde-evaluate → evaluate}/references/qa.md +0 -0
  211. /package/skills/{fde-evaluate → evaluate}/references/review.md +0 -0
  212. /package/skills/{fde-evaluate → evaluate}/references/ship.md +0 -0
  213. /package/skills/{fde-evaluate → evaluate}/references/verification.md +0 -0
  214. /package/skills/{fde-feedback → feedback}/references/encode-pattern.md +0 -0
  215. /package/skills/{fde-handoff → handoff}/references/close.md +0 -0
  216. /package/skills/{fde-handoff → handoff}/references/encode-pattern.md +0 -0
  217. /package/skills/{fde-integrate → integrate}/references/build.md +0 -0
  218. /package/skills/{fde-integrate → integrate}/references/debug.md +0 -0
  219. /package/skills/{fde-integrate → integrate}/references/eval-pack.md +0 -0
  220. /package/skills/{fde-integrate → integrate}/references/integrate.md +0 -0
  221. /package/skills/{fde-integrate → integrate}/references/qa.md +0 -0
  222. /package/skills/{fde-integrate → integrate}/references/review.md +0 -0
  223. /package/skills/{fde-integrate → integrate}/references/ship.md +0 -0
  224. /package/skills/{fde-integrate → integrate}/references/verification.md +0 -0
  225. /package/skills/{fde-readout → options}/references/business-case.md +0 -0
  226. /package/skills/{fde-options → options}/references/test-assumptions.md +0 -0
  227. /package/skills/{fde-options → options}/references/three-options.md +0 -0
  228. /package/skills/{fde-poc → poc}/references/build.md +0 -0
  229. /package/skills/{fde-poc → poc}/references/debug.md +0 -0
  230. /package/skills/{fde-poc → poc}/references/eval-pack.md +0 -0
  231. /package/skills/{fde-poc → poc}/references/integrate.md +0 -0
  232. /package/skills/{fde-poc → poc}/references/poc.md +0 -0
  233. /package/skills/{fde-poc → poc}/references/qa.md +0 -0
  234. /package/skills/{fde-poc → poc}/references/review.md +0 -0
  235. /package/skills/{fde-poc → poc}/references/ship.md +0 -0
  236. /package/skills/{fde-poc → poc}/references/test-assumptions.md +0 -0
  237. /package/skills/{fde-poc → poc}/references/three-options.md +0 -0
  238. /package/skills/{fde-poc → poc}/references/verification.md +0 -0
  239. /package/skills/{fde-qa → qa}/references/build.md +0 -0
  240. /package/skills/{fde-qa → qa}/references/debug.md +0 -0
  241. /package/skills/{fde-qa → qa}/references/eval-pack.md +0 -0
  242. /package/skills/{fde-qa → qa}/references/integrate.md +0 -0
  243. /package/skills/{fde-qa → qa}/references/qa.md +0 -0
  244. /package/skills/{fde-qa → qa}/references/review.md +0 -0
  245. /package/skills/{fde-qa → qa}/references/ship.md +0 -0
  246. /package/skills/{fde-qa → qa}/references/verification.md +0 -0
  247. /package/skills/{fde-readout → readout}/references/readout.md +0 -0
  248. /package/skills/{fde-review → review}/references/build.md +0 -0
  249. /package/skills/{fde-review → review}/references/debug.md +0 -0
  250. /package/skills/{fde-review → review}/references/eval-pack.md +0 -0
  251. /package/skills/{fde-review → review}/references/integrate.md +0 -0
  252. /package/skills/{fde-review → review}/references/qa.md +0 -0
  253. /package/skills/{fde-review → review}/references/review.md +0 -0
  254. /package/skills/{fde-review → review}/references/ship.md +0 -0
  255. /package/skills/{fde-review → review}/references/verification.md +0 -0
  256. /package/skills/{fde-scope → scope}/references/hold-scope.md +0 -0
  257. /package/skills/{fde-ship → ship}/references/build.md +0 -0
  258. /package/skills/{fde-ship → ship}/references/debug.md +0 -0
  259. /package/skills/{fde-ship → ship}/references/eval-pack.md +0 -0
  260. /package/skills/{fde-ship → ship}/references/integrate.md +0 -0
  261. /package/skills/{fde-ship → ship}/references/qa.md +0 -0
  262. /package/skills/{fde-ship → ship}/references/review.md +0 -0
  263. /package/skills/{fde-ship → ship}/references/ship.md +0 -0
  264. /package/skills/{fde-ship → ship}/references/verification.md +0 -0
@@ -0,0 +1,102 @@
1
+ # rollback - Rehearse rollback
2
+
3
+ **Enter when:** a deploy is planned for the next 48 hours, the FDE says "we can always revert," a previous rollback failed or took too long, or the engagement involves regulated/critical systems.
4
+
5
+ **Read first:** `delivery.md` (the deployment record), `terrain.md`, `trust-profile.md` (for change-approval requirements), `context.md`.
6
+
7
+ "We can always revert" is the most dangerous sentence in deployment. A rollback plan that hasn't been tested is a wish, not a plan. The drill proves the escape route works before you need it at 2am.
8
+
9
+ ## Method (you do this work)
10
+
11
+ **1. Map the rollback path for every change type:**
12
+
13
+ | Change type | Rollback method | Complication | Test |
14
+ |-------------|----------------|--------------|------|
15
+ | **Code deploy** | Revert the PR / redeploy previous version | Feature flags, cache invalidation | Deploy previous version to staging, verify function |
16
+ | **Database migration** | Compatible rollback, restore, or roll-forward | Irreversible transforms, concurrent writes, old/new schema compatibility | Rehearse on representative staging data; verify integrity, elapsed time, and possible data loss |
17
+ | **Config change** | Restore previous config | Propagation delay, dependent service restarts | Flip config, verify all services pick it up |
18
+ | **Infrastructure** | Terraform/Pulumi rollback or manual | State drift, dependent resources | Plan the rollback, review the diff |
19
+ | **Data backfill** | Restore from backup or reverse script | Mixed old/new data states | Run reverse on a 100-row sample |
20
+
21
+ **2. Identify the irreversible components.** Some changes can't be rolled back:
22
+
23
+ - Column drops after data migration
24
+ - Encryption key rotations after old key is destroyed
25
+ - External API version deprecations
26
+ - Emails/notifications already sent
27
+ - Published API changes consumed by third parties
28
+
29
+ For each irreversible component: **what's the compensating action?** Not "undo" but "what do we do to recover the same effect?"
30
+
31
+ **3. Run the drill.** On staging or a test environment - never on production:
32
+
33
+ ```
34
+ DRILL PROTOCOL:
35
+ 1. Deploy the change (confirm it works)
36
+ 2. Start a timer
37
+ 3. Execute the documented rollback procedure - exactly as written, no shortcuts
38
+ 4. Measure: time to complete, services affected, data state after
39
+ 5. Verify: can users still do the critical path?
40
+ 6. Record: what worked, what was unclear, what failed
41
+ ```
42
+
43
+ **4. The drill report.** Honest, specific, actionable:
44
+
45
+ ```markdown
46
+ ## Rollback drill - <date>
47
+ Change: <what was deployed>
48
+ Environment: staging
49
+ Rollback method: <what was executed>
50
+ Time to rollback: <minutes:seconds>
51
+ Result: PASS / FAIL / PARTIAL
52
+
53
+ What worked:
54
+ - Code revert completed in 45s
55
+ - Feature flag disabled correctly
56
+
57
+ What didn't:
58
+ - Database down migration left orphan rows in junction table
59
+ - Cache took 3 minutes to invalidate (stale data served)
60
+
61
+ Actions before production deploy:
62
+ - [ ] Fix down migration to clean junction table
63
+ - [ ] Add cache-bust step to rollback procedure
64
+ - [ ] Verify cache invalidation time is acceptable
65
+ ```
66
+
67
+ **5. The "acceptable rollback time" conversation.** With the FDE and the team:
68
+
69
+ > "If this deploy fails in production, how long can the system be in a degraded state before it's a business problem?"
70
+
71
+ | Answer | Implication |
72
+ |--------|-------------|
73
+ | "Minutes" | Automated rollback trigger needed - human decision loop is too slow |
74
+ | "An hour" | Manual rollback is acceptable if the procedure is tested and documented |
75
+ | "A day" | Gradual rollback is fine - feature flag off, monitor, clean up next morning |
76
+ | "It can't fail" | Blue/green deployment with instant traffic switch - test both environments |
77
+
78
+ **6. Change-approval environments (CAB).** In regulated industries:
79
+
80
+ - The rollback procedure is part of the change ticket - filed before the approval window.
81
+ - The drill evidence goes with the change request: "Rollback tested on <date>, completed in <time>, no issues."
82
+ - A drill that fails → the change ticket isn't ready. Better to discover that now than during the CAB.
83
+
84
+ ## Artifact
85
+
86
+ **`delivery.md`** - the drill report, attached to the deployment record for this change. The evidence that the rollback works.
87
+
88
+ **`risks.md`** - any irreversible components identified, with the compensating action.
89
+
90
+ **`decisions.md`** - if the drill failed and the deployment is delayed: what failed, the fix, the revised timeline.
91
+
92
+ ## Checkpoint
93
+
94
+ One statement: "Rollback tested on staging. Time: <N minutes>. Result: <pass/fail>. Production deploy is / is not ready." If not ready: the specific blocker and when it'll be resolved.
95
+
96
+ ## Principles
97
+
98
+ - A rollback plan that hasn't been tested is a wish.
99
+ - Time the drill and account for differences in production scale and operating conditions; do not assume a fixed multiplier.
100
+ - Identify the irreversible components and name the compensating action.
101
+ - The drill report is evidence for the change ticket and the team's confidence.
102
+ - A drill that fails is a success - you found the problem before production did.
@@ -0,0 +1,18 @@
1
+ # Task context and evidence
2
+
3
+ Use this contract for standalone methods and methods routed through `@fde`.
4
+
5
+ - **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
6
+ - **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
7
+ - **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
8
+ - **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
9
+ - **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
10
+ - **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
11
+
12
+ ## CLI availability
13
+
14
+ Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
15
+
16
+ If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
17
+
18
+ Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -0,0 +1,11 @@
1
+ {
2
+ "generator": "bin/generate-skills.js",
3
+ "version": 1,
4
+ "files": {
5
+ "SKILL.md": "5488cddb607cb05face73ad1a838dd87babb00716544793f36997ca15dcb1560",
6
+ "references/close.md": "095266722624e4bc647628243c8be0e69b02017ef6b4e3a7e7790ec1f53ab7c0",
7
+ "references/encode-pattern.md": "3be7bf9d0f69af31659423c54d6023a4af1556e2ce200fb025bf64d0757de4d8",
8
+ "references/runbook.md": "1233aa1943da8db6d3c7624b7a54b3a1afc340b97e16f95d70b42cdbf521b63c",
9
+ "references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
10
+ }
11
+ }
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: runbook
3
+ description: Write an operating runbook from the delivered system and verified procedures. Use when the customer team or a successor needs to operate without the original engineer.
4
+ ---
5
+
6
+ # runbook
7
+
8
+ <!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
9
+
10
+ ## Purpose
11
+
12
+ Write an operating runbook from the delivered system and verified procedures. Use when the customer team or a successor needs to operate without the original engineer.
13
+
14
+ Read [the task context contract](references/task-context.md), then [the method](references/runbook.md). Load further references only when the task needs them. Everything linked is included in this skill; no other skill pack is required.
15
+
16
+ ## Principles
17
+
18
+ - Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
19
+ - If called by @fde, reuse its current sanitized packet and scope. Do not restart setup, discovery or questions already answered.
20
+ - The task context contract controls persistence and authority in both modes. Preserve unknowns and distinguish implementation, verification, deployment and acceptance.
21
+ - Use the customer's repository instructions and available tools. Report a missing capability or unrun check honestly; do not claim that installing a skill provisions infrastructure.
@@ -0,0 +1,66 @@
1
+ # close - Transfer operations
2
+
3
+ **Context:** apply [task context and evidence](task-context.md) before using the named records below.
4
+
5
+ **Enter when:** the engagement is ending - the customer team must run this without the FDE.
6
+
7
+ **Read first:** for standalone work, use the supplied permitted operating notes, evidence and ownership; no engagement binding or CLI command is required. For a bound engagement, use bounded `fde handoff` or `fde resume`, then targeted `fde recall` for missing evidence. Never initialize records merely to draft a handoff. Build the picture through relevant excerpts, not a full-directory load. Consult `terrain.md` only for code paths needed by the successor.
8
+
9
+ The engagement doesn't end at ship. It ends when the customer can maintain what was built without calling.
10
+
11
+ ## Method (you do this work, with the FDE's answers)
12
+
13
+ **0. The opening question:** "What will bite them when you're gone?" Their answer shapes everything written below.
14
+
15
+ **1. The retrospective.** Work through, blame-free and specific:
16
+ - Did the real problem match the brief? (Compare `brief.md` vs `reality.md` - you have the receipts.)
17
+ - Which trust moments mattered?
18
+ - What did the codebase teach that `terrain.md` didn't know at the start?
19
+ - Which risk almost became real?
20
+ - AI components: did they behave in production? What failure modes did the prototype hide? Is the team equipped to maintain them?
21
+
22
+ **1b. Value + receipts close gate (refuse green close if any fail):**
23
+ - Primary value bucket in `success.md` matches what the sponsor funded; at least one ledger row has **Measured** (not forever-`pending`) with evidence **and a named customer-side owner in Accepted by** for that bucket - or the retrospective explicitly records “not measured; sponsor accepted pending.” A measured-but-unaccepted number closes as `claimed`; say so in the retrospective rather than closing green on arithmetic nobody signed.
24
+ - Audit receipt exists for the final shipped path (exceptions/operating map walked; cite file).
25
+ - Eval receipt: **n/a if no AI**, else final scoped eval result + operating owner and required human-review or bounded-automation authority recorded; kill switch / fallback named in `handoff.md`.
26
+ - One line in the retrospective: which bucket moved, by how much, vs baseline.
27
+
28
+ **2. The pattern.** Anything that happened here and will happen again - a compliance approach, a migration pattern, a stakeholder dynamic - gets encoded for reuse. Use [encode-pattern](encode-pattern.md) to distinguish candidate patterns from supported ones and protect customer data.
29
+
30
+ **3. The handoff.** Operational knowledge for the person woken at 2am, not technical documentation: the 3 things that will break and the fix for each · who holds the tribal knowledge · what each alert means · deploy and rollback in plain language. AI components additionally: model version, what normal output looks like (so drift is recognisable), fallback behaviour, who owns retraining, **how to disable the AI path without taking down the feature** - without this the team turns it off at the first misbehaviour and it stays off.
31
+
32
+ **4. Transformation engagements - four extra answers in `handoff.md`:**
33
+ - Who owns AI governance after the FDE leaves? (Who can pull a model from production?)
34
+ - The retraining trigger, exactly: "precision < 0.82 on validation for 3 consecutive weeks → <owner> retrains." A number, a condition, an owner - not "when performance drops."
35
+ - The operating model at scale: who coordinates twenty use cases across five teams?
36
+ - Decision authority for new use cases: intake, risk assessment, approver.
37
+
38
+ ## Artifact
39
+
40
+ **`retrospectives/YYYY-MM-DD-<engagement>.md`** - one file per close (separate files make cross-engagement patterns scannable). **`patterns.md`** - reusable patterns extracted. **`handoff.md`** - the 2am document.
41
+
42
+ ## Checkpoint
43
+
44
+ **Check the handoff as a lookup tool.** Give the intended operator one realistic task, such as finding the owner and recovery steps for a failed run. Can they locate the answer and its source in the permitted handoff without your explanation? A reader finding the instructions is not proof they can execute them; verify operation separately in the agreed safe environment. Correct the passage they could not use, rather than adding a longer introduction.
45
+
46
+ If the operator is unavailable, a fresh reviewer can attempt the same lookup using only the permitted draft and task. Report this as a simulated clarity check, not operator validation, customer approval, or a green close. Claim independent review only if a separate reviewer actually performed it; identify the reviewer and evidence available. If none is available, perform a labeled self-check and report independent review as unperformed. Use one focused pass for a consequential handoff; do not add a committee or a second approval ritual.
47
+
48
+ Direct assessment to the FDE: did the engagement achieve `success.md` · 2-3 lessons that matter · is the pattern worth encoding · is the handoff complete or where are the gaps. Also: value bucket + audit receipt green; eval **n/a or green**. Pending Measured without sponsor acceptance = gap, not green close. Honest - a gap named now is cheaper than a callback in six weeks.
49
+
50
+ ## Worked example
51
+
52
+ Acme, twelve weeks in, the FDE is rolling off.
53
+
54
+ Retrospective against the receipts: `brief.md` asked for monitoring, `reality.md` proved it was ownership - and the delta is the most useful paragraph in the file, because it is exactly the argument the next engagement will need.
55
+
56
+ The close gate bites in a useful way. The ledger shows detection at 12 minutes measured across two real incidents, but **Accepted by** is empty - Marco confirmed it in Slack, Denise (finance) never did, and Denise is whose escalation started the engagement. So it closes as `claimed` with a one-line retrospective note and a named next step, rather than a green close on a number nobody with budget agreed to.
57
+
58
+ `handoff.md` is written for the person woken at 2am: the three things that break, what the page means, how to re-run manually the way Marco does, and who holds the tribal knowledge (Raj, who built the original job - credited, because he protects it now). `patterns.md` gets *"unowned job" presents as "unmonitored job"* - it has now happened twice.
59
+
60
+ ## Principles
61
+
62
+ - Done = the customer operates without you.
63
+ - No named value bucket moved (or sponsor-accepted pending) = not a green close.
64
+ - The retrospective is an investment in the next engagement, not a post-mortem.
65
+ - Encode what repeated. The same lesson learned twice is a process failure.
66
+ - Write the handoff for 2am.
@@ -0,0 +1,96 @@
1
+ # encode-pattern - Encode the pattern
2
+
3
+ **Context:** apply [task context and evidence](task-context.md) before using the named records below.
4
+
5
+ **Enter when:** the engagement is closing and reusable patterns exist, a technique worked well and will apply to future clients, the FDE notices themselves doing the same thing on a second engagement, or close identified a pattern worth preserving.
6
+
7
+ **Read first:** `decisions.md`, `reality.md`, `delivery.md`, `retrospectives/`, `context.md`. Patterns live in what was *done*, not what was planned.
8
+
9
+ The difference between a 5-year FDE and a 15-year FDE is not talent - it's encoded patterns. The 15-year FDE walks into a new engagement and recognises the situation in minutes because they've seen it before, named it, and know the move. Pattern extraction turns experience into reusable intelligence.
10
+
11
+ ## Method (you do this work)
12
+
13
+ **1. Identify the pattern candidates.** Scan the engagement for things that:
14
+
15
+ | Signal | Example |
16
+ |--------|---------|
17
+ | Worked well and would work again in a similar situation | The "show the workaround first" approach to earning ops team trust |
18
+ | Failed and the failure mode is predictable | The "refactor before understanding" mistake on legacy codebases |
19
+ | Was discovered late and should have been discovered early | The hidden cron job that broke the migration - always ask about cron jobs |
20
+ | Required a workaround that others would face too | The compliance dance for getting AI tools approved in regulated environments |
21
+ | Involved a political dynamic that repeats | The passed-over internal team dynamic - present in every engagement with external FDEs |
22
+
23
+ **2. Write the pattern in a transferable format.** Each pattern must be usable by a future FDE who has never heard of this engagement:
24
+
25
+ ```markdown
26
+ ## Pattern: <name>
27
+
28
+ ### Situation
29
+ <When does this pattern apply? What does the FDE see/hear that triggers recognition?>
30
+
31
+ ### The move
32
+ <What to do, specifically. Not advice - steps.>
33
+
34
+ ### Why it works
35
+ <The mechanism - why this approach succeeds where the obvious approach fails.>
36
+
37
+ ### Watch out for
38
+ <The failure mode or edge case that makes the pattern not apply.>
39
+
40
+ ### Evidence
41
+ <Permitted source, what happened, measured result, and limits. Keep identifying evidence in its original customer record.>
42
+ ```
43
+
44
+ **3. The pattern quality test.** Before encoding:
45
+
46
+ | Test | Pass | Fail |
47
+ |------|------|------|
48
+ | **Transferable?** | Another FDE could apply this without context from this engagement | Only makes sense if you know the specific client |
49
+ | **Specific enough?** | Contains concrete steps, not just principles | "Build trust" / "Communicate well" - too vague to act on |
50
+ | **Repeatable?** | Applies to a class of situations, not just this one | Only worked because of a unique circumstance |
51
+ | **Falsifiable?** | You can tell when the pattern is working or not | No way to measure whether applying it helped |
52
+ | **Monday bag?** | You would refuse the next similar embed without this in your bag - a named move plus an artifact you can drop on day one (pipe questions, CAB dance, eval golden shape, floor-drill script) | "We learned to communicate." Patterns that only live in this client's `.fde/` do not compound |
53
+
54
+ **4. Classify by stage.** Patterns sort into the same stages as the skills:
55
+
56
+ | Stage | Pattern type | Example |
57
+ |--------|-------------|---------|
58
+ | **Land** | Political / relational | "The passed-over team warm-up protocol" |
59
+ | **Discover** | Investigative / analytical | "The cron-job discovery checklist for legacy systems" |
60
+ | **Plan** | Structural / strategic | "The three-option presentation for nervous sponsors" |
61
+ | **Ship** | Technical / safety | "The Strangler Fig on financial transaction code" |
62
+ | **Outcome** | Operational / process | "The regulated-environment change-approval timeline buffer" |
63
+ | **Close** | Knowledge / handoff | "The 2am document format that actually gets used" |
64
+
65
+ **5. Version and evolve.** Patterns are living documents:
66
+
67
+ - First use: **v0.1** - hypothesis based on one engagement
68
+ - Later uses: record context, observed results, failures, and refinements. Repetition supplies evidence; it does not automatically validate the pattern. Promote a version when a substantive revision warrants it, not at a fixed use count.
69
+ - After modification: increment minor version with what changed and why
70
+ - After contradiction: note the counter-example, adjust the "watch out for" section
71
+
72
+ **6. Cross-engagement pattern mining.** Only when explicitly authorized for the named engagements and permitted by each customer's data policy. Keep records separate; use sanitized CLI packets or targeted recall in each authorized context, never raw file comparisons. Otherwise extract a candidate from the current permitted context only.
73
+
74
+ - Compare permitted problem summaries - do the same problems recur?
75
+ - Compare permitted decision summaries - are the same decisions being made?
76
+ - Compare permitted lessons - are the same lessons being learned twice?
77
+
78
+ A pattern learned twice is a process failure. Encoding it prevents the third time.
79
+
80
+ ## Artifact
81
+
82
+ **`patterns.md`** - candidates and evidence for this engagement, indexed by stage and situation trigger. A shared library is a separate, authorized export: remove names, identifiers, distinctive operational details, secrets, and confidential code or data. Keep source receipts in the original record and export only permitted generalizations.
83
+
84
+ **`retrospectives/YYYY-MM-DD-<engagement>.md`** - reference to which patterns were extracted from this engagement.
85
+
86
+ ## Checkpoint
87
+
88
+ Present the extracted patterns to the FDE: "From this engagement, I've identified N patterns worth encoding. The highest-value one is <name> because <it will apply to future engagements in these situations>." Confirm the pattern is accurate - the FDE's field judgment outranks the analysis.
89
+
90
+ ## Principles
91
+
92
+ - If you did it twice, encode it. The same lesson learned three times is a failure.
93
+ - Patterns are steps, not principles. "Build trust" isn't a pattern; "fix a small visible bug on day one" is.
94
+ - Every pattern needs a situation trigger - the FDE must recognise when it applies.
95
+ - Version substantive changes. State the evidence and limits; repeated use is not automatic confirmation.
96
+ - The pattern library is the FDE's compound interest. It's what separates 5 years of experience from 1 year repeated 5 times.
@@ -0,0 +1,73 @@
1
+ # runbook - Write an operating guide
2
+
3
+ **Enter when:** the team needs instructions to operate, diagnose or recover a system, or an engineer is preparing to transfer responsibility.
4
+
5
+ Apply [task context](task-context.md). Use supplied operational facts, relevant code and verified procedures. For a bound engagement, retrieve relevant sanitized delivery, dependency and ownership evidence; do not load the full customer record or raw private material.
6
+
7
+ ## Match the request
8
+
9
+ - **Draft a guide:** write what is known, mark unverified procedures and missing evidence, and return the requested document. No customer record, live access, drill or closure ceremony is required.
10
+ - **Verify an operating guide:** agree the permitted environment and checks, exercise relevant procedures, and record what happened. Do not run a destructive or production drill from a documentation request alone.
11
+ - **Complete a handoff:** use [handoff](close.md) for the wider ownership and acceptance decision. A written guide is one part of that decision, not proof of readiness.
12
+
13
+ ## Build the guide from evidence
14
+
15
+ Identify the system, the intended reader and the decisions that reader can make. Follow the actual operating path and include only relevant sections:
16
+
17
+ ```markdown
18
+ # Operating guide - <system>
19
+ Status: Draft / Verified for <environment and scope>
20
+ Evidence: <code, observed run, operator statement or existing document>
21
+ Operating owner: <confirmed role/person and source, or proposed/unconfirmed>
22
+
23
+ ## Normal operation
24
+ What should happen, how often, and how to check it.
25
+
26
+ ## Known failure modes
27
+ Symptom: <what the operator sees>
28
+ Evidence: <what establishes this behavior>
29
+ Cause: <verified cause or explicit unknown>
30
+ Action: <supported steps, constraints and stop conditions>
31
+ Validation: <tested environment/date/result, or unverified>
32
+ Escalation: <confirmed role/channel, or missing>
33
+
34
+ ## Deploy and recover
35
+ Procedure: <verified commands or a source link; do not invent commands>
36
+ Permissions and prerequisites: <required access and safety conditions>
37
+ Check: <expected observable result>
38
+ Recovery: <tested procedure or the missing recovery evidence>
39
+
40
+ ## Monitor and escalate
41
+ Signal: <existing alert or check>
42
+ Meaning: <known interpretation>
43
+ Response: <authorized action and when to escalate>
44
+
45
+ ## Open readiness gaps
46
+ Missing evidence, owner to confirm, and proposed next check.
47
+ ```
48
+
49
+ Do not pad the document with an arbitrary number of failures, contacts or commands. A stated retry problem without a known cause should remain an investigation item, not become a fabricated repair procedure. A suggested owner is not an accepted operating responsibility.
50
+
51
+ For AI components, include relevant model and configuration versions, evaluation checks, failure limits and the supported way to pause actions. Do not assume retraining or autonomous operation is required.
52
+
53
+ ## Verify when requested
54
+
55
+ Select checks based on the system's actual consequences. For example, the receiving operator may demonstrate normal operation, diagnose a known failure, or recover a failed release in a permitted test environment.
56
+
57
+ Record each critical capability separately as verified, failed or untested, with evidence. A successful walkthrough cannot compensate for an untested recovery path. Avoid an averaged confidence score that hides a critical gap.
58
+
59
+ If a procedure fails, correct the guide or system within scope and repeat the affected check. If verification is unavailable, deliver the draft with its limits and propose the next check; do not claim the handoff complete or indefinitely extend the engagement yourself.
60
+
61
+ ## Deliver and retain ownership boundaries
62
+
63
+ Return the guide, its verification status and any remaining operating decisions. Save it to the requested location. In a bound engagement, propose updates to `handoff.md` and relevant current-state records under their confirmation rules.
64
+
65
+ Access changes, exports of customer records, sponsor messages and closure decisions require their own authorization. A request for a runbook does not authorize these actions. Transfer only the material the recipient is entitled to receive.
66
+
67
+ ## Principles
68
+
69
+ - Write for the person handling the actual failure.
70
+ - Supported procedures beat plausible commands.
71
+ - Draft, tested procedure and accepted ownership remain distinct.
72
+ - Verify critical capabilities individually.
73
+ - Keep private relationship notes and credentials out of an operating guide.
@@ -0,0 +1,18 @@
1
+ # Task context and evidence
2
+
3
+ Use this contract for standalone methods and methods routed through `@fde`.
4
+
5
+ - **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
6
+ - **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
7
+ - **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
8
+ - **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
9
+ - **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
10
+ - **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
11
+
12
+ ## CLI availability
13
+
14
+ Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
15
+
16
+ If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
17
+
18
+ Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -0,0 +1,9 @@
1
+ {
2
+ "generator": "bin/generate-skills.js",
3
+ "version": 1,
4
+ "files": {
5
+ "SKILL.md": "13640b029f34068b08f2b0532ad7d2bae2d1063eeff17ec85a840bfbf832311e",
6
+ "references/hold-scope.md": "42b3823f6b49b87b432f81208b0a61115f22340f6a922a4e858012e908c6643d",
7
+ "references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
8
+ }
9
+ }
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: fde-scope
2
+ name: scope
3
3
  description: Assess a new customer request against agreed scope, trade-offs and ownership. Use when an engagement expands or a custom feature needs a commitment decision.
4
4
  ---
5
5
 
6
- # fde-scope
6
+ # scope
7
7
 
8
8
  <!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
9
9
 
@@ -0,0 +1,18 @@
1
+ # Task context and evidence
2
+
3
+ Use this contract for standalone methods and methods routed through `@fde`.
4
+
5
+ - **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
6
+ - **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
7
+ - **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
8
+ - **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
9
+ - **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
10
+ - **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
11
+
12
+ ## CLI availability
13
+
14
+ Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
15
+
16
+ If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
17
+
18
+ Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -0,0 +1,10 @@
1
+ {
2
+ "generator": "bin/generate-skills.js",
3
+ "version": 1,
4
+ "files": {
5
+ "SKILL.md": "d201fe1d784eea04ce25bde63fb3e6beb129ac4924b8f654b7c4fd5b3022f2d1",
6
+ "references/business-case.md": "32e000e8351cd59f9eaad8be40babb276df69948ea4f81e01a4672e47f48cb25",
7
+ "references/score-use-cases.md": "bb304cf2de26a2df0b9f2a299e3a6b2760ebce15b8b523d9cb4a584cc26038f8",
8
+ "references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
9
+ }
10
+ }
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: score-use-cases
3
+ description: Compare competing customer use cases by value, feasibility and evidence. Use when several problems compete for delivery capacity.
4
+ ---
5
+
6
+ # score-use-cases
7
+
8
+ <!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
9
+
10
+ ## Purpose
11
+
12
+ Compare competing customer use cases by value, feasibility and evidence. Use when several problems compete for delivery capacity.
13
+
14
+ Read [the task context contract](references/task-context.md), then [the method](references/score-use-cases.md). Load further references only when the task needs them. Everything linked is included in this skill; no other skill pack is required.
15
+
16
+ ## Principles
17
+
18
+ - Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
19
+ - If called by @fde, reuse its current sanitized packet and scope. Do not restart setup, discovery or questions already answered.
20
+ - The task context contract controls persistence and authority in both modes. Preserve unknowns and distinguish implementation, verification, deployment and acceptance.
21
+ - Use the customer's repository instructions and available tools. Report a missing capability or unrun check honestly; do not claim that installing a skill provisions infrastructure.
@@ -0,0 +1,90 @@
1
+ # business-case - Build the business case
2
+
3
+ **Context:** apply [task context and evidence](task-context.md) before using the named records below.
4
+
5
+ **Enter when:** the sponsor needs justification for the next phase, the FDE needs to defend budget or timeline, a feature decision needs cost/benefit evidence, or poc produced a direction that needs funding.
6
+
7
+ **Read first:** `reality.md`, `success.md`, `delivery.md`, `context.md`. Load `business-case.md` from poc if it exists - extend it, don't restart.
8
+
9
+ Technical FDEs lose engagements by shipping good code without business justification. The sponsor's boss doesn't ask "is the code clean?" - they ask "what did we get for the money?" A business case translates technical work into the language that keeps the engagement alive.
10
+
11
+ ## Method (you do this work)
12
+
13
+ **1. Name the cost of doing nothing.** This is the anchor. Every business case starts not with what you'll build, but with what it costs them to leave the problem unsolved:
14
+
15
+ | Cost type | How to find it | Example |
16
+ |-----------|---------------|---------|
17
+ | **Labor capacity / direct spend** | Ask: "What does this problem cost per month in money?" | Manual reconciliation hours × loaded rate = capacity value; separately identify reducible spend |
18
+ | **Opportunity cost** | Ask: "What can't you do because of this problem?" | Can't onboard enterprise clients because the API can't handle their volume |
19
+ | **Risk cost** | Ask: "What happens if this breaks at the worst time?" | A payment processing outage during Black Friday = $X/hour in lost sales |
20
+ | **Velocity cost** | Measure: deployment frequency, lead time, change failure rate | Team ships once/month instead of once/week; each delay = N features not reaching customers |
21
+
22
+ **2. Build the driver model.** Not a spreadsheet - a logic chain the sponsor can trace:
23
+
24
+ ```
25
+ Investment: <hours × rate, or fixed cost>
26
+ → Delivers: <specific outcome from success.md>
27
+ → Benefit: <capacity released, avoidable cash spend, revenue, or risk reduction>
28
+ → Net cash: realizable incremental cash benefit - full costs over <time horizon>
29
+ ```
30
+
31
+ Keep drivers, units, sources, and ranges explicit. For example, 3 people × 8h/week × $75/h × 52 weeks = $93.6K/year of labor capacity value. It is cash savings only if spend actually falls (for example, paid overtime or a contractor cost ends). Name who can realize the benefit and how. Include build, ongoing operation, adoption, and transition costs; avoid double-counting capacity and revenue enabled by the same hours. Do not calculate cash payback from capacity value alone.
32
+
33
+ **3. Sensitivity check - name the two drivers that swing the result:**
34
+
35
+ Every business case has 1-2 variables where a small change flips the outcome. Name them explicitly:
36
+
37
+ > "The capacity case assumes the team reclaims 6 hours/week per person. At 3 hours, that benefit halves. Cash payback remains unproven until finance identifies avoidable spend. Validate time-spent before and after the pilot with representative team members."
38
+
39
+ The sponsor who sees you've identified where the case could break trusts the case more, not less.
40
+
41
+ **4. Frame for the audience.** Different stakeholders need different lenses on the same case:
42
+
43
+ | Audience | Lead with | Avoid |
44
+ |----------|----------|-------|
45
+ | **CFO / finance** | ROI, payback period, cash flow impact | Technical architecture, feature lists |
46
+ | **CTO / engineering** | Technical debt retired, velocity improved, risk reduced | Revenue projections they can't verify |
47
+ | **CEO / founder** | Strategic enablement, competitive edge, customer impact | Detailed calculations (give the summary, offer the detail) |
48
+ | **Product** | User impact, adoption metrics, feature velocity | Cost structures that aren't their domain |
49
+
50
+ **5. The one-page format.** The business case fits one page or it isn't understood:
51
+
52
+ ```markdown
53
+ ## Business case: <initiative name>
54
+
55
+ **The problem costs:** <one line, quantified>
56
+ **The investment:** <hours and cost>
57
+ **The return:** <quantified, with time horizon>
58
+ **Payback:** <months from realizable cash benefits, or not established>
59
+ **Sensitivity:** <the 1-2 drivers that swing it, with thresholds>
60
+ **Risks:** <what must be true for this to hold>
61
+ **Recommendation:** <proceed / proceed-with-conditions / defer>
62
+ ```
63
+
64
+ ## Artifact
65
+
66
+ **`business-case.md`** - the one-page case. Lives alongside `success.md` and `reality.md` as a first-class engagement artifact. Referenced by plan, status, and close.
67
+
68
+ **`decisions.md`** - log the sponsor's response: approved, modified, deferred. With the date.
69
+
70
+ ## Checkpoint
71
+
72
+ Walk the FDE through: the cost of doing nothing (anchor), the investment, the return, and the one sensitivity that matters most. If the FDE says "the sponsor won't buy the ROI number," inspect the disputed inputs and sources, test plausible ranges, and identify what measurement would resolve the disagreement. Never reverse-engineer assumptions to hit a desired number.
73
+
74
+ ## Worked example
75
+
76
+ Acme phase 2 needs funding. The case starts with the cost of doing nothing, not the cost of building.
77
+
78
+ Anchor: two silent failures since March, each one day of finance reconciliation by hand plus a late close (`reality.md`, Marco's sheet). That is the number the sponsor already believes because her own team reported it.
79
+
80
+ Driver model the sponsor can trace: incidents/quarter × hours of manual reconciliation × loaded cost, plus the tail risk of a late regulatory close - stated separately, because mixing a certain small number with an uncertain large one is how a case loses credibility.
81
+
82
+ Sensitivity names the two drivers that swing it: incident frequency (2/quarter → 1/quarter and the case halves) and whether the manual re-run continues in parallel (if Marco keeps re-running every morning, the saving is theoretical). The second one is the honest weakness, so it is in the case rather than waiting to be found in the room - with the condition that makes it hold: the morning re-run stops after two clean cycles, agreed with Marco.
83
+
84
+ ## Principles
85
+
86
+ - The cost of doing nothing is always the opening move. Anchor before proposing.
87
+ - Driver models with visible arithmetic beat magic spreadsheets.
88
+ - Name the sensitivity. The case that admits its weakness earns more trust.
89
+ - One page. If it doesn't fit, you don't understand it yet.
90
+ - A business case the FDE can't explain in 60 seconds won't survive the sponsor's boss.