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,9 @@
1
+ {
2
+ "generator": "bin/generate-skills.js",
3
+ "version": 1,
4
+ "files": {
5
+ "SKILL.md": "33a822a1e10824461543e296f93e07ed3f8e2eab7a719bcde4bb3bbef597859c",
6
+ "references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490",
7
+ "references/who-decides.md": "56c577f0984cb69cfb18349fc9194e92dba2b56ead9a527d5e6e887c1219717f"
8
+ }
9
+ }
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: who-decides
3
+ description: Map stakeholders, decision rights, influence and blockers from supplied evidence. Use when ownership is unclear or the stakeholder landscape changes.
4
+ ---
5
+
6
+ # who-decides
7
+
8
+ <!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
9
+
10
+ ## Purpose
11
+
12
+ Map stakeholders, decision rights, influence and blockers from supplied evidence. Use when ownership is unclear or the stakeholder landscape changes.
13
+
14
+ Read [the task context contract](references/task-context.md), then [the method](references/who-decides.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,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,91 @@
1
+ # who-decides - Map decision rights
2
+
3
+ **Enter when:** new stakeholders appear, signals shift mid-engagement, a meeting felt off but you can't say why, or it's been two weeks and the map hasn't been updated.
4
+
5
+ **Read first:** `stakeholders.md`, `context.md`. Load `trust-profile.md` only if sacred-data boundaries affect who gets told what.
6
+
7
+ The org chart tells you who reports to whom. The stakeholder radar tells you who actually decides, who blocks quietly, and who's about to escalate. FDEs who read the org chart get blindsided; FDEs who read the room stay ahead.
8
+
9
+ ## Method (you do this work)
10
+
11
+ **1. Map the five roles - every engagement has them, sometimes in one person:**
12
+
13
+ | Role | How to spot them | What they need from you |
14
+ |------|-----------------|------------------------|
15
+ | **Sponsor** | Signed the SOW, owns the budget, asks "are we on track" | Progress in their units (cost saved, risk retired), never technical detail |
16
+ | **Champion** | Wants you to succeed, opens doors, warns you about politics | Early wins they can point to - makes them look right for backing you |
17
+ | **Gatekeeper** | Controls access: repos, environments, meetings, introductions | Respect for their process; go around them and they close every door |
18
+ | **Resistor** | Sceptical, protective, or threatened - not necessarily wrong | To be heard first; resistors who feel consulted become the strongest allies |
19
+ | **Ghost** | Named on the project, never in the room - either checked out or operating above you | Find out which. A checked-out ghost is noise. A ghost operating above you is the real decision-maker. |
20
+
21
+ **2. Track signal, not sentiment.** A stakeholder's signal is what they *do*, not what they say:
22
+
23
+ | Signal | Evidence (not vibes) |
24
+ |--------|---------------------|
25
+ | **Green** | Responds same-day, shares context unprompted, introduces you to their people |
26
+ | **Amber** | Response time doubles, defers decisions, "let me check with…" when they used to decide alone |
27
+ | **Red** | Stops responding, routes around you, a new person you've never met starts asking questions |
28
+
29
+ **3. The 48-hour rule.** A stakeholder who goes amber has roughly 48 hours before they go red. A stakeholder who goes red is already escalating above you. Respond same-day to amber signals - not with more delivery, with a conversation.
30
+
31
+ **3b. One name per person.** If the table says "Denise Chen" and Signal history says "Denise" or "D. Chen", trust keys fork and prep lies. Consolidate to one spelling. `fde doctor` flags these identity clusters - treat that as a fix, not a nit.
32
+
33
+ **4. Detect the invisible escalation.** Three markers:
34
+ - Questions shift from "what are you building" to "when will it be done" - someone above is asking.
35
+ - A meeting gets shortened or cancelled - they're meeting without you.
36
+ - A new stakeholder appears with no introduction - they were sent to check.
37
+
38
+ When you see any of these: tell the FDE immediately, recommend a proactive conversation with the sponsor before the invisible meeting becomes visible.
39
+
40
+ **5. The passed-over team - the most dangerous and most valuable stakeholder.**
41
+
42
+ In every engagement where an external FDE was brought in, an internal team was passed over. They know the codebase better than you, they know the politics better than you, and they resent your presence. Three moves:
43
+
44
+ - **Ask what they tried.** Before your first standup. Their previous approach is the real requirements doc.
45
+ - **Use their language.** In every meeting. They hear their words coming back and they feel consulted, not replaced.
46
+ - **Make them look right.** Credit their prior work in your artifacts. They protect you if they feel respected; they wait for your mistake if they don't.
47
+
48
+ **6. Before a decision meeting: pre-wire, then pre-mortem.**
49
+
50
+ A recommendation that needs several people to say yes is not won in the room; it is won in the week before it. When the FDE is heading into a go/no-go, a budget ask, or anything that visibly costs someone territory:
51
+
52
+ - **Sort by position, not by seniority.** Firm supporter / firm opponent / **swing**. Effort goes almost entirely to swings - supporters need reinforcement, not persuasion, and a firm opponent is rarely moved by a louder version of the argument that already failed.
53
+ - **Name what each swing is protecting.** The objection voiced in a meeting is usually a proxy: headcount, budget, credibility, control, or the reporting line that gets messier. Write the underlying motivation next to the stated objection - they are different sentences.
54
+ - **Sequence the conversations.** Whoever makes the others easier to win goes first; whoever is reassured by seeing names already on board goes last. One-on-one for anyone who would lose face conceding in a group.
55
+ - **Pre-mortem the meeting.** "It's Thursday, the meeting went badly - who sank it, and with what sentence?" That sentence is the pre-wire you are missing. If the answer is a specific person's objection, their conversation happens *before* the room convenes, not in it.
56
+
57
+ Log the sequence and the pre-mortem sentence in `context.md` as the plan for the week - a pre-wire plan that lives only in the FDE's head is not a plan.
58
+
59
+ ## Artifact
60
+
61
+ **`stakeholders.md`** - updated with evidence-dated signal changes:
62
+ ```markdown
63
+ | Who | Role | Signal | Last evidence | Notes |
64
+ |-----|------|--------|---------------|-------|
65
+ | <name> | sponsor | green | responded same-day with budget approval (Jun 12) | owns renewal decision |
66
+ | <name> | resistor→champion | amber→green | shared API docs unprompted after we used their naming (Jun 14) | was passed-over lead |
67
+ ```
68
+
69
+ Signal changes get a dated evidence note. A signal that moved without evidence logged is a guess, not radar.
70
+
71
+ ## Checkpoint
72
+
73
+ One line per stakeholder who changed signal this week. If nobody changed: "Map stable - next check <date>." If a ghost appeared or a resistor went quiet: name it, recommend the move, and update `context.md` with the action.
74
+
75
+ ## Worked example
76
+
77
+ Acme, week 6. Priya's replies have gone from same-day to two days, and a phase-2 go/no-go is scheduled for Thursday.
78
+
79
+ Two signals, not one feeling: response time doubled *and* a finance analyst nobody introduced started asking when the work completes. That combination is an invisible escalation - someone above Priya is asking, and the meeting is already happening without the FDE.
80
+
81
+ Positions: Priya is a supporter under pressure. Marco is a supporter who does not vote. Denise (finance) is the swing, and what she is protecting is not the budget line she cites - it is that her team's escalation started this and she has nothing to show her own director. Raj is a firm opponent on the rewrite question, and no amount of the same argument moves him.
82
+
83
+ Sequence: Denise one-on-one Tuesday with the incident numbers in her units, then Priya Wednesday, so Priya walks in already knowing finance is not going to object. Pre-mortem sentence: *"Denise says 'we still don't know if this actually caught anything'"* - which is precisely why Tuesday exists. `stakeholders.md` records `Priya | sponsor | green→amber | reply latency 1d → 2d, unintroduced analyst (Jul 3)`; `context.md` carries the sequence.
84
+
85
+ ## Principles
86
+
87
+ - Signals are evidence-based, not feeling-based. "Seemed distant" doesn't move a signal; "stopped responding to three messages" does.
88
+ - The 48-hour rule: amber is a same-day response, not a next-week note.
89
+ - The passed-over team is your most important relationship. Win them first.
90
+ - Every engagement has a ghost. Find them before they find you.
91
+ - A stakeholder map that hasn't been updated in two weeks is fiction.
@@ -1,10 +0,0 @@
1
- {
2
- "generator": "bin/generate-skills.js",
3
- "version": 1,
4
- "files": {
5
- "SKILL.md": "ca2ab4e5d01f8715b344e0726a692aa6bc66a599a45ebea37b7f8e05f71b1e65",
6
- "references/audit.md": "ed32ea78cbccb100742dd838e8cf4cd4b6f33ad44b3de7424fc624670d571dbc",
7
- "references/discover.md": "6fc143a4224248c496b209bf36509c2f1aac7872aa0c0ba82656a94d0dee0f66",
8
- "references/task-context.md": "8ec90708522e512a50a57ab2a377a7472e93bae169c6f075a93fa603ce2ad780"
9
- }
10
- }
@@ -1,254 +0,0 @@
1
- # discover - Frame the problem
2
-
3
- **Enter when:** the brief feels wrong, the real problem is unclear, shadow processes are suspected, or any phase found that the map is missing.
4
-
5
- **Read first:** `context.md`, `brief.md`. Load `terrain.md` if it exists - extend it, never regenerate from scratch.
6
-
7
- ## Validation gate (confirm understanding, clarify where it elevates)
8
-
9
- Before discovering, state what you're investigating and why in 2-3 lines:
10
-
11
- > "Investigating: [the hypothesis or problem area]. This informs: [the decision it feeds - descope/rescope/pick A over B]. Existing terrain: [what's already mapped vs. what's unknown]."
12
-
13
- Then check - probe ONLY if it prevents wasted discovery:
14
-
15
- 1. **Hypothesis is testable.** If the stated problem is unfalsifiable ("the architecture is wrong") → rephrase it: "I'd narrow this to: [specific testable claim]. That closer to what you're seeing?"
16
- 2. **Discovery feeds a decision.** If there's no named decision → one line: "What changes depending on what we find? That keeps the discovery focused."
17
- 3. **Not repeating previous work.** If terrain.md already covers this area → name it: "Terrain already maps this from Day [X]. Extending it or has something shifted?"
18
-
19
- State your read, let the FDE correct, then discover.
20
-
21
- Before asking for facts, inspect the supplied brief and existing redacted records for the answer. Once the decision frame is confirmed and code access is authorized, use the scan below and targeted file reads to resolve technical unknowns. Phrase remaining questions around the discrepancy found: “The queue already exists, but alerts are disabled; who currently checks it?”
22
-
23
- ## Brief interrogation (when the hypothesis is still mush)
24
-
25
- Use when the "problem" is unfalsifiable, success is undefined, or you cannot name the decision discovery informs. Skip when `reality.md` / `terrain.md` already pin a testable claim and the FDE is ready to dig.
26
-
27
- Same format as land - one Q + GUESS, no checklist:
28
-
29
- ```
30
- READ: <the real problem you think exists, in one sentence>
31
- CONFIDENCE: ~NN% - missing: <what would falsify or confirm it>
32
- Q: <one question that changes where you dig>
33
- GUESS: <your answer, so they can correct it>
34
- ```
35
-
36
- Stop when you can write the four lines under **Frame the decision first**. If a name, quote, or metric is still missing, write `unknown - ask:` - never invent ops folklore to make the map look complete.
37
-
38
- ## Frame the decision first
39
-
40
- Same SCQA spine as readout (`S → C → Q → A`), aimed at the floor, not a deck. Write it **before** any scan. Confirm with the FDE, then dig.
41
-
42
- | Line | What it is | Fail if |
43
- |------|------------|---------|
44
- | **Situation** | What they already treat as true - the workaround, the sheet, the owner who left | It could be copied from the RFP |
45
- | **Complication** | What broke, so they cannot stay here | No tension, or three problems joined by "and" |
46
- | **Question** | One decision the named signer must make | It smuggles the solution ("how do we add alerting") |
47
- | **Answer-space** | Shape of a satisfying answer: confirm brief / descope / rescope / pause | A novel, or "insights" |
48
-
49
- Tests on **Question** - rewrite until all five hold:
50
-
51
- 1. **Decision-shaped** - answering it changes what someone does.
52
- 2. **Single** - one thing, not three.
53
- 3. **Scoped** - who, where, by when.
54
- 4. **Answerable** - evidence could settle it in this engagement.
55
- 5. **Neutral** - does not assume the fix.
56
-
57
- Cannot write the Question → keep interrogating. Do not `fde scan`. Every later output of this phase aims at that Question. Sub-questions go to the operating map or `assumptions.md`, not into the Question.
58
-
59
- ## Parts of the problem (decompose only)
60
-
61
- After the Question is locked, and **before** `fde scan` or any option: write what the problem is made of. No advice, no playbook, no solution.
62
-
63
- If the stated brief hides a deeper job, name that deeper job in one sentence and **wait**. Do not silently replace their problem with yours.
64
-
65
- In `terrain.md` under `## Parts`, list the smallest useful pieces that still change what you examine next. Typical cuts: people, process step, system, data, time, cost. For each piece: what it contains, and how it connects to the Question. Stop when a further split would not change where you dig.
66
-
67
- Do not mark pieces as facts or assumptions here. That is `test-assumptions`. Do not assemble options here. That is `three-options`.
68
-
69
- ## Method - part 1: the codebase (you do this work)
70
-
71
- **First code move: `fde scan`** - after the Question is locked. It runs everything below deterministically in seconds (churn×tests, "temporary" archaeology, AI components, secrets redacted, previous attempts). Your job is then **interpretation**: read its output against the brief, follow the hotspots into the code, and connect the technical findings to the human signals in part 2.
72
-
73
- If the CLI is unavailable, run the manual commands below. Either way: do not load the full codebase into context - scan wide, read deep only on hotspots.
74
-
75
- **1. Stack and age.** Language, framework, build system, date of last major upgrade:
76
- ```bash
77
- git log --reverse --format="%ad" --date=short | head -1 # repo birth
78
- git log -1 --format="%ad" --date=short # last commit
79
- ```
80
-
81
- **2. Churn heat - the modules everyone touches but fears:**
82
- ```bash
83
- git log --since="90 days ago" --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
84
- ```
85
- The highest-churn file in a legacy codebase is the one everyone is afraid to refactor but cannot avoid touching. Cross-reference with complexity (file size, nesting) and mark "handle with care."
86
-
87
- **3. Test gaps - what's covered, what's a lie:**
88
- ```bash
89
- find . -path ./node_modules -prune -o -name "*test*" -print | head -30
90
- ```
91
- Map test files against the churn list. A high-churn module with no test neighbors is a load-bearing wall with no insurance. Spot-read the tests that do exist: tests that pass but assert nothing are worse than no tests - note them.
92
-
93
- **4. The "temporary" archaeology** (repeat `--include` per extension - brace globs silently match nothing):
94
- ```bash
95
- grep -rnE "HACK|FIXME|XXX|temporary|for now|remove this|workaround" \
96
- --include="*.js" --include="*.ts" --include="*.py" --include="*.java" \
97
- --include="*.go" --include="*.rb" --include="*.cs" --include="*.php" . | head -30
98
- ```
99
- Temporary code in production is permanent code with an excuse. Each hit is a candidate for "what was never built properly."
100
-
101
- **5. AI components - they fail silently:**
102
- ```bash
103
- grep -rlnE "openai|anthropic|llm|prompt|embedding|vector|inference" \
104
- --include="*.js" --include="*.ts" --include="*.py" --include="*.java" \
105
- --include="*.go" . | head -20
106
- ```
107
- Flag every one. AI components don't fail like regular code - they degrade as the world changes. Each needs: model version, fallback path (or note its absence), observability (or note its absence).
108
-
109
- **6. Data flow.** Where data enters, how it moves, where it stops. Entry points first: routes, queues, cron, file drops.
110
-
111
- **7. Existing capability.** Trace the requested user action through existing code, configuration, tests, and operating workarounds. In `terrain.md`, record what can already be reused and the evidence that it works or fails. Check whether a configuration, ownership, or process change could resolve the observed break. A disabled feature is a lead, not a proven root cause. Keep observations and hypotheses distinct; option selection still belongs to plan / three-options. Summarize the remaining gap in `reality.md`: what works today → what the customer needs → what is still missing, with sources. If existing capability meets the need, say so; do not manufacture a build requirement.
112
-
113
- ## Method - part 2: the humans (you coach, the FDE asks)
114
-
115
- The real spec is what people **do** when the system fails - not what the slide deck says. Arm the FDE with these, in their own words:
116
-
117
- - **"How is the team coping today without the fix?"** - the workaround is the honest requirements doc.
118
- - **Find the spreadsheet.** Almost always there. Whoever maintains it is the best interview in the building.
119
- - **The hesitation.** When someone says "well, there's also this other thing we do…" - stop them, ask them to finish. The main story is what they're comfortable explaining; the hesitation is the real problem.
120
- - **"Which part of the codebase do you least want to touch?"** The answer is unanimous and it's the load-bearing wall. Check it against your churn scan - when the human answer and the churn data agree, that's your first map landmark.
121
- - **Shadow AI.** Someone pasting data into ChatGPT to cope = a real unmet need + an uncontrolled data risk. Note both.
122
- - **Exception-led operating map.** For each real break (not the slide-deck process): what fails, who notices first, what they do today, and which artifact is trusted in that moment. Prefer exceptions over happy-path swimlanes - the workaround is the operating system. Write rows under `terrain.md` → `## Operating map (exception-led)`. If the section is missing on an older engagement, add it; never regenerate the rest of terrain. When AI is in play, also fill `## Intelligence placement` (deterministic vs LLM judgement vs human approve). **`fde doctor` requires at least one filled exception row before plan/ship/outcome/close** - empty map after discover is a hygiene fail, not optional polish.
123
-
124
- ## Method - part 3: workshop facilitation
125
-
126
- When discovery requires a structured session with multiple stakeholders (alignment, prioritisation, design):
127
-
128
- **Before the room:**
129
- - Define the single decision the workshop must produce - not "discuss options" but "rank the three candidates and commit to one."
130
- - Cap at 8 people. Every person above 8 halves the probability of a decision.
131
- - Time-box: 90 minutes max. Anything longer splits into two sessions.
132
- - Pre-read: one page, sent 48 hours ahead. Nobody will read more.
133
-
134
- **In the room (the FDE facilitates, not presents):**
135
- 1. **5 min - frame.** One slide: the decision, the constraint, the deadline. No history lesson.
136
- 2. **15 min - diverge.** Silent post-its (or digital equivalent). Everyone writes before anyone talks - prevents the loudest voice dominating.
137
- 3. **20 min - cluster.** Group themes, name them. The FDE does NOT label - the room labels.
138
- 4. **30 min - converge.** Dot-vote or forced-rank. The FDE counts, the room decides.
139
- 5. **10 min - lock.** State the decision back. "We're saying X. Anyone who can't live with this, speak now." Silence = consent.
140
- 6. **10 min - next steps.** Who does what by when. Written before people stand up.
141
-
142
- **After the room:** Summary in `decisions.md` within 2 hours. Decisions decay - what felt clear at 3pm is debatable by 5pm if unwritten.
143
-
144
- ## Method - part 4: data estate and the pipe
145
-
146
- Always map the estate before you score a use case - not only when someone said "AI." A path they cannot feed is a discover miss, not a ship surprise.
147
-
148
- **Their words first.** In `terrain.md`, write the names the floor uses for the workaround, the sheet, the exception path, and the person who left. Later plan/ship/review sentences use those names. Do not translate their floor into generic product language.
149
-
150
- **The 5 questions (ask the data owner, not the sponsor):**
151
- 1. **Where does data live?** - List every source: databases, warehouses, SaaS exports, spreadsheets, S3 buckets, vendor APIs. Map it.
152
- 2. **How fresh is it?** - Real-time, daily batch, "someone uploads a CSV on Mondays"? Freshness determines what's buildable.
153
- 3. **Who owns it?** - Not "IT" - the named person who can grant access and explain the schema. No named owner: access responsibility remains unverified.
154
- 4. **What's the quality?** - Sample 100 rows from each critical source. Check: nulls, duplicates, format consistency, semantic correctness. A 60% null rate in a key field = that source is fiction.
155
- 5. **What are the governance constraints?** - PII classification, retention policies, cross-border rules, consent basis. One missed constraint = a compliance stop later.
156
-
157
- **The pipe (what talks to what).** For each source that a use case depends on, write: the system it flows from and to, the contract (object, table, file, API), whose credentials, what happens when the vendor 500s or the Monday file does not land, and whether the join the sponsor described actually exists. Their IdP, CRM, and warehouse are delivery work when the path needs them - policy questions in `trust-profile.md` are not a substitute.
158
-
159
- **The data readiness matrix:**
160
-
161
- | Source | Location | Freshness | Owner | Quality (sample) | Governance | Pipe | Verdict |
162
- |--------|----------|-----------|-------|-----------------|------------|------|---------|
163
- | _fill per source_ | | | | | | | Ready / Needs work / Blocker |
164
-
165
- A use case that depends on a "Blocker" source **or a Blocker pipe** doesn't get scored - it gets a remediation conversation first. `what-breaks` finding an invisible integration at ship is already too late. Write this to `terrain.md` under a `## Data estate` section.
166
-
167
- **Promised dependencies are not ready dependencies.** For consequential promises such as "data in two weeks," record or update one dependency entry in `assumptions.md` with the responsible owner, dated verification checkpoint, and evidence needed. Unknown owners or dates stay unknown; propose a checkpoint for confirmation. Link the affected work; if the checkpoint slips, identify what can proceed and what needs replanning. Missing ownership is an unresolved dependency, not proof that the project will fail. On-prem or restricted access is a constraint to investigate, not a red flag by itself.
168
-
169
- **Verify the future operator now.** Check the proposed owner in `success.md` against who will actually monitor, recover, and support the result. Record whether they have agreed, access or training gaps, and a practical handoff check there; carry these into `handoff.md` at close. Keep unconfirmed ownership explicit. Reuse supplied evidence and ask only what changes the plan.
170
-
171
- ## When scope is a transformation, not a single problem
172
-
173
- Score every candidate use case before anything gets prototyped:
174
-
175
- | Dimension | Question | 1-5 |
176
- |---|---|---|
177
- | Business value | What does it cost them unsolved? | |
178
- | Complexity | How hard to build safely? (5 = hardest) | |
179
- | Data readiness | Available, clean, sufficient volume today? | |
180
-
181
- **Score = (Value × Data readiness) / Complexity.** Highest score gets prototyped first (hand to `poc`). A 5-value/1-complexity/5-readiness case scores 25; a 5-value/5-complexity/2-readiness case scores 2 - they look identical on a whiteboard. Never let a technically interesting use case override the score.
182
-
183
- ## Artifact (this IS the memory - write it as you work)
184
-
185
- **`reality.md`** - the readout the FDE takes into the sponsor meeting. Keep the three schema lines the dashboard reads (`Working theory` / `Evidence` / `Differs from brief how`). Then the decision frame:
186
-
187
- ```markdown
188
- # Reality (actual problem)
189
- **Working theory:** <the real problem, one sentence>
190
- **Evidence:** <workaround/data/quote, source, day>
191
- **Differs from brief how:** <delta, with evidence>
192
- **Situation:** <what the floor already treats as true>
193
- **Complication:** <what forces a decision now>
194
- **Question:** <one decision-shaped sentence>
195
- **Answer-space:** confirm brief / descope / rescope / pause - and what a yes looks like
196
- **Implication for build:** <first change they can see>
197
- **Validated with:** <who, when>
198
- ```
199
-
200
- **`terrain.md`** - the map every later phase loads:
201
- ```markdown
202
- # Terrain
203
- **Stack:** <lang/framework/build, age>
204
- **Hotspots (handle with care):** <file - churn n/90d - tests: none/weak/ok - why it matters>
205
- **AI components:** <file - model - fallback? - observability?>
206
- **Data flow:** <entry → transform → store → exit>
207
- **Test landscape:** <covered / gaps / lies>
208
- **Unknowns:** <named explicitly - an honest gap beats a confident guess>
209
-
210
- ## Operating map (exception-led)
211
- | Exception / break | Who notices first | What they do today | System of record then | Blast | Evidence |
212
- |-------------------|-------------------|--------------------|----------------------|-------|----------|
213
- | <break> | <role> | <workaround> | <sheet/DB/person> | CRITICAL / LOAD-BEARING / CONVENIENCE | <who/day> |
214
- ```
215
-
216
- Every line carries its evidence. `(churn: 47/90d)` `(ops lead, Day 5)` `(stated, unverified)`.
217
-
218
- **`assumptions.md`** - update statuses from what discovery proved or disproved. Seed any new OPEN assumptions the brief never named. CRITICAL + OPEN must be named in the checkpoint.
219
-
220
- ## Checkpoint (before any build)
221
-
222
- Present to the FDE, five things, one paragraph each - no padding:
223
- 1. The Question, then the real problem, with the two strongest pieces of evidence.
224
- 2. The top 3 risk areas of the codebase, one line of why each.
225
- 3. What must not be touched without characterisation tests.
226
- 4. The exception-led operating map: the two breaks that matter most, who owns the workaround, and where shadow systems live.
227
- 5. The Answer-space: confirm brief / descope / rescope - and the decision it puts in front of the sponsor.
228
-
229
- If discovery revealed the problem is 3× the brief: the FDE tells the customer **before** telling themselves it's manageable. Lead with evidence, offer three paths (descope / rescope / pause-and-plan), confirm any reset in writing - update `success.md` and `brief.md` before continuing.
230
-
231
- ## If you've formed three wrong reads
232
-
233
- Stop. Don't form a fourth hypothesis. Three disproven reads means the brief is actively misleading - usually the person who briefed doesn't know, or knows and can't say. Change method: stop analysing the system, ask three people separately "if you had to bet on what's actually wrong here, what would you say?" The thing they all hesitate before saying is the real problem.
234
-
235
- ## Worked example
236
-
237
- Acme's brief blamed missing monitoring. Discovery goes to the workaround first.
238
-
239
- `git log` shows the reconciliation module at 47 commits/90d with no tests, all from one author who left in February. Marco (ops lead) turns out to keep a spreadsheet: every morning he re-runs the job manually and eyeballs the totals - a habit nobody mentioned because to him it is just the job. That spreadsheet is the system of record when the job fails, which is the actual finding.
240
-
241
- `reality.md` keeps the schema, then the frame. **Working theory:** the job has no owner, and the manual re-run masks failures for a day. **Evidence:** Marco's sheet, Day 5; two silent failures since March, finance escalation Mar 14. **Differs from brief how:** alerting existed last year and was disabled - adding it again without an owner reproduces the same outcome. **Situation:** Marco re-runs the job every morning and the spreadsheet is truth when it fails. **Complication:** two silent failures since March already hit finance, and the author of the module left in February. **Question:** should Priya fund a named owner on the failure path, or fund alerting and accept the same miss in six months? **Answer-space:** fund ownership / fund alerting-as-theatre / pause until she names who acks. `terrain.md` gets the hotspot row and an operating-map row: `job fails silently → Marco notices next morning → re-runs by hand → spreadsheet is truth → LOAD-BEARING (Marco, Day 5)`.
242
-
243
- Checkpoint to the FDE leads with that Question, not a tour of the repo.
244
-
245
- ## Principles
246
-
247
- - The brief is a hypothesis until evidence confirms it.
248
- - No scan until the Question is one decision the signer must make.
249
- - The workaround is more honest than the requirements document.
250
- - Churn data + the human's "don't touch that" pointing at the same module = the map is true.
251
- - Never modify code before the terrain map exists.
252
- - Scan wide, read deep only on hotspots.
253
-
254
- Before changing a surprising workaround, use the targeted history check in [audit](audit.md#before-changing-an-unfamiliar-workaround). Inspect only the implicated file or region; commit messages supply clues, not proof of current requirements.
@@ -1,9 +0,0 @@
1
- {
2
- "generator": "bin/generate-skills.js",
3
- "version": 1,
4
- "files": {
5
- "SKILL.md": "c70af27393a64319c7113cf100328b05bc317b0b95aba73ac5f3c77976ba24d9",
6
- "references/encode-pattern.md": "3be7bf9d0f69af31659423c54d6023a4af1556e2ce200fb025bf64d0757de4d8",
7
- "references/task-context.md": "8ec90708522e512a50a57ab2a377a7472e93bae169c6f075a93fa603ce2ad780"
8
- }
9
- }
@@ -1,12 +0,0 @@
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. 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
- Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -1,12 +0,0 @@
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. 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
- Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -1,12 +0,0 @@
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. 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
- Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
@@ -1,12 +0,0 @@
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. 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
- Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.