fdeops 3.15.1 → 3.16.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 (56) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +132 -93
  3. package/adapters/AGENTS.md +2 -2
  4. package/adapters/GEMINI.md +2 -2
  5. package/adapters/LOCAL-LLM.md +3 -3
  6. package/adapters/README.md +1 -1
  7. package/adapters/copilot-instructions.md +2 -2
  8. package/adapters/cursor.fde.mdc +3 -3
  9. package/bin/check.js +66 -14
  10. package/bin/fde.js +16 -16
  11. package/bin/lib/memory.js +1 -1
  12. package/bin/lib/render.js +1 -1
  13. package/bin/lib/trust.js +1 -1
  14. package/mcp/README.md +3 -3
  15. package/mcp/fdeops-ingest/README.md +8 -8
  16. package/mcp/fdeops-ingest/package.json +1 -1
  17. package/mcp/fdeops-ingest/server.js +1 -1
  18. package/mcp/recipes/README.md +3 -3
  19. package/mcp/recipes/file.md +1 -1
  20. package/mcp/recipes/granola.md +5 -5
  21. package/mcp/recipes/notion.md +2 -2
  22. package/mcp/recipes/slack.md +5 -5
  23. package/package.json +1 -1
  24. package/plugin.json +1 -1
  25. package/skills/fde/SKILL.md +52 -39
  26. package/skills/fde/references/ai.md +9 -9
  27. package/skills/fde/references/{exec-narrative.md → board-memo.md} +1 -1
  28. package/skills/fde/references/business-case.md +5 -5
  29. package/skills/fde/references/close.md +5 -5
  30. package/skills/fde/references/{ingest-connect.md → connect.md} +7 -7
  31. package/skills/fde/references/debrief.md +2 -2
  32. package/skills/fde/references/discover.md +8 -8
  33. package/skills/fde/references/{trust-engineering.md → earn-trust.md} +2 -2
  34. package/skills/fde/references/{pattern-extract.md → encode-pattern.md} +1 -1
  35. package/skills/fde/references/eval-pack.md +6 -6
  36. package/skills/fde/references/{scope-defense.md → hold-scope.md} +4 -4
  37. package/skills/fde/references/ingest.md +16 -16
  38. package/skills/fde/references/land.md +10 -10
  39. package/skills/fde/references/{initiative-triage.md → pick-three.md} +7 -7
  40. package/skills/fde/references/plan.md +9 -9
  41. package/skills/fde/references/{sketch.md → poc.md} +4 -4
  42. package/skills/fde/references/{status.md → readout.md} +10 -10
  43. package/skills/fde/references/red-team.md +2 -2
  44. package/skills/fde/references/rescue.md +1 -1
  45. package/skills/fde/references/review.md +7 -7
  46. package/skills/fde/references/{rollback-drill.md → rollback.md} +1 -1
  47. package/skills/fde/references/{handoff-engineering.md → runbook.md} +5 -5
  48. package/skills/fde/references/{use-case-scoring.md → score-use-cases.md} +4 -4
  49. package/skills/fde/references/ship.md +16 -16
  50. package/skills/fde/references/{multi-customer-ops.md → switch-clients.md} +2 -2
  51. package/skills/fde/references/{assumption-audit.md → test-assumptions.md} +3 -3
  52. package/skills/fde/references/{incremental-build.md → thin-slices.md} +22 -13
  53. package/skills/fde/references/{options-analysis.md → three-options.md} +3 -3
  54. package/skills/fde/references/{blast-radius.md → what-breaks.md} +4 -4
  55. package/skills/fde/references/{stakeholder-radar.md → who-decides.md} +5 -5
  56. package/templates/.fde/assumptions.md +1 -1
package/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTS.md - working in the fdeops repository
2
2
 
3
- This repository **is** fdeops the engagement record for Forward Deployed Engineers. One `@fde` skill, the `fde` CLI for deterministic work, and per-customer memory in `.fde/` as a side effect of the work (you still confirm judgment).
3
+ This repository **is** fdeops - the engagement record for Forward Deployed Engineers. One `@fde` skill, the `fde` CLI for deterministic work, and per-customer memory in `.fde/` as a side effect of the work (you still confirm judgment).
4
4
 
5
5
  ## If you are helping use fdeops in an engagement
6
6
 
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Forward deployed engineering skills for AI coding agents.**
4
4
 
5
- Skills encode the workflows, quality gates, and judgment Forward Deployed Engineers use on someone else's site. Packaged so an AI coding agent follows them consistently and writes a dated record you can defend. The host agent still writes the TypeScript.
5
+ Skills encode the workflows, quality gates, and judgment Forward Deployed Engineers use on someone else's site. Packaged so an AI coding agent can run the embed end-to-end: discovery, POC, slice, on-site proof, eval, signed outcome. The workspace still compiles and commits. `@fde` does not leave.
6
6
 
7
7
  ```text
8
8
  LAND DISCOVER PLAN SHIP PROVE CLOSE
@@ -10,27 +10,35 @@ Skills encode the workflows, quality gates, and judgment Forward Deployed Engine
10
10
  │ Brief │ ───▶ │ Reality│ ───▶ │ Sequence│───▶ │ Live │ ───▶ │ Signed │ ───▶ │ They │
11
11
  │ Trust │ │ Terrain│ │ Align │ │ slice │ │ off │ │ run │
12
12
  └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘
13
- /brief /discover /plan /ship /got /close
13
+ /brief /discover /plan /ship /outcome /close
14
14
  ```
15
15
 
16
16
  ---
17
17
 
18
18
  ## Commands
19
19
 
20
- 6 slash commands that map to the engagement. Each one activates `@fde`.
20
+ Each command loads the same `@fde` skill. You never pick from 31 names.
21
21
 
22
22
  | What you're doing | Command | Key principle |
23
23
  |-------------------|---------|-----------|
24
- | Land the embed | `/brief` | Brief and trust before code |
24
+ | Land the embed | `/brief` | Who signs done |
25
25
  | Find the real problem | `/discover` | Brief is a hypothesis |
26
26
  | Plan the sequence | `/plan` | Backwards from done |
27
- | Ship a slice | `/ship` | Pre-flight, then live |
28
- | Prove what they got | `/got` | Promised measured accepted |
29
- | Close the embed | `/close` | They can run it without you |
27
+ | Ship a slice | `/ship` | Live with a rollback |
28
+ | Prove the outcome | `/outcome` | Promised, measured, accepted |
29
+ | Close the embed | `/close` | They run it without you |
30
30
 
31
- Also: `/debrief` (after a meeting) · `/prep` (walk-in) · `/quiet` (sponsor silent) · `/agreed` (scope dispute) · `/status` (Friday readout).
31
+ Also:
32
32
 
33
- Skills also activate automatically based on what you're doing naming a client, debriefing a meeting, or asking what was agreed triggers `@fde`. Ordinary TypeScript, unit tests, and git commits stay in the host agent.
33
+ | What you're doing | Command | Key principle |
34
+ |-------------------|---------|-----------|
35
+ | Sponsor went silent | `/trust` | Process or trust |
36
+ | Scope dispute | `/receipts` | Dated, or a gap |
37
+ | After a meeting | `/debrief` | Notes into the record |
38
+ | Walk-in | `/prep` | One page from the record |
39
+ | Friday readout | `/readout` | Promised, measured, accepted |
40
+
41
+ Skills also activate on English: naming a client, running a POC, slicing a feature, asking what was agreed. A throwaway one-liner in an unbound repo can skip `@fde`. A client slice cannot.
34
42
 
35
43
  ---
36
44
 
@@ -67,7 +75,7 @@ Hooks load where you left off. Slash commands match the map above.
67
75
  npx skills add suboss87/fdeops --skill fde
68
76
  ```
69
77
 
70
- Or `npx fdeops adapters .` [adapters/](adapters/README.md).
78
+ Or `npx fdeops adapters .`. See [adapters/](adapters/README.md).
71
79
 
72
80
  </details>
73
81
 
@@ -86,7 +94,7 @@ Fallback if the agent cannot bind:
86
94
  npx fdeops resume --init acme # ~/fde-engagements/acme + bind this checkout
87
95
  ```
88
96
 
89
- Requires Node.js >= 18. Override: `FDEOPS_ENGAGEMENT` [docs/install.md](docs/install.md). Try the loop: `npx fdeops demo`.
97
+ Requires Node.js >= 18. Override: `FDEOPS_ENGAGEMENT`. See [docs/install.md](docs/install.md). Try the loop: `npx fdeops demo`.
90
98
 
91
99
  </details>
92
100
 
@@ -94,7 +102,7 @@ Requires Node.js >= 18. Override: `FDEOPS_ENGAGEMENT` — [docs/install.md](docs
94
102
 
95
103
  ## All 31 Skills
96
104
 
97
- The commands above are the entry points. Under the hood, `@fde` activates these 31 skills each a structured workflow with steps, an artifact, and a checkpoint. You never pick one by name. Full detail: [docs/skills-reference.md](docs/skills-reference.md).
105
+ The commands above are the entry points. Under the hood, `@fde` activates these 31 skills, each a structured workflow with steps, an artifact, and a checkpoint. You never pick one by name. Full detail: [docs/skills-reference.md](docs/skills-reference.md).
98
106
 
99
107
  ### Land - Brief and trust
100
108
 
@@ -102,18 +110,18 @@ The commands above are the entry points. Under the hood, `@fde` activates these
102
110
  |--------|--------------|----------|
103
111
  | [land](skills/fde/references/land.md) | Interrogate the brief, map stakeholders, define success | New client, first meeting, just got the brief |
104
112
  | [audit](skills/fde/references/audit.md) | Verify claims, find the load-bearing wall | Taking over, previous consultant left |
105
- | [stakeholder-radar](skills/fde/references/stakeholder-radar.md) | Who decides, who blocks, who escalates | Need to know who matters |
106
- | [trust-engineering](skills/fde/references/trust-engineering.md) | Observer → trusted; navigate AI policy | Need access or credibility |
107
- | [scope-defense](skills/fde/references/scope-defense.md) | Scope receipts; the accumulation conversation | "Also can you…", timeline unchanged |
113
+ | [who-decides](skills/fde/references/who-decides.md) | Who decides, who blocks, who escalates | Need to know who matters |
114
+ | [earn-trust](skills/fde/references/earn-trust.md) | Observer → trusted; navigate AI policy | Need access or credibility |
115
+ | [hold-scope](skills/fde/references/hold-scope.md) | Scope receipts; the accumulation conversation | "Also can you…", timeline unchanged |
108
116
 
109
117
  ### Discover - Find the real problem
110
118
 
111
119
  | Skill | What It Does | Use When |
112
120
  |--------|--------------|----------|
113
121
  | [discover](skills/fde/references/discover.md) | Repo + workaround + the real problem | Brief feels wrong, shadow processes |
114
- | [assumption-audit](skills/fde/references/assumption-audit.md) | Untested assumptions by blast radius | Brief feels too neat |
115
- | [use-case-scoring](skills/fde/references/use-case-scoring.md) | Value × urgency × alignment / complexity | Everything is P0 |
116
- | [sketch](skills/fde/references/sketch.md) | Kill the killer assumption in a day | Need to de-risk a direction |
122
+ | [test-assumptions](skills/fde/references/test-assumptions.md) | Untested assumptions by blast radius | Brief feels too neat |
123
+ | [score-use-cases](skills/fde/references/score-use-cases.md) | Value × urgency × alignment / complexity | Everything is P0 |
124
+ | [poc](skills/fde/references/poc.md) | Kill the killer assumption in a day | POC, spike, need to de-risk |
117
125
 
118
126
  ### Plan - Sequence the work
119
127
 
@@ -121,40 +129,40 @@ The commands above are the entry points. Under the hood, `@fde` activates these
121
129
  |--------|--------------|----------|
122
130
  | [plan](skills/fde/references/plan.md) | Backwards from done, PR-sized | What order, what is done |
123
131
  | [business-case](skills/fde/references/business-case.md) | Cost of nothing → investment → return | Defend budget or timeline |
124
- | [options-analysis](skills/fde/references/options-analysis.md) | Three genuine options | "What should we do?" |
125
- | [initiative-triage](skills/fde/references/initiative-triage.md) | Pick three from twenty urgents | Everything is urgent |
132
+ | [three-options](skills/fde/references/three-options.md) | Three genuine options | "What should we do?" |
133
+ | [pick-three](skills/fde/references/pick-three.md) | Pick three from twenty urgents | Everything is urgent |
126
134
 
127
135
  ### Ship - Go live
128
136
 
129
137
  | Skill | What It Does | Use When |
130
138
  |--------|--------------|----------|
131
- | [incremental-build](skills/fde/references/incremental-build.md) | Vertical slices, visible every 2–3 days | Large feature on their codebase |
132
- | [blast-radius](skills/fde/references/blast-radius.md) | Impact from contained → irreversible | Touching shared infrastructure |
139
+ | [thin-slices](skills/fde/references/thin-slices.md) | Vertical slices, on-site proof | Building on their codebase |
140
+ | [what-breaks](skills/fde/references/what-breaks.md) | Impact from contained → irreversible | Touching shared infrastructure |
133
141
  | [rescue](skills/fde/references/rescue.md) | Production fire or trust fire | Down, or they went quiet |
134
142
  | [ship](skills/fde/references/ship.md) | Intent vs diff, pre-flight, rollback | Going live |
135
143
  | [review](skills/fde/references/review.md) | Did we only build what we agreed | Before merge, scope creep |
136
- | [rollback-drill](skills/fde/references/rollback-drill.md) | Test the escape route before 2am | "We can always revert" |
144
+ | [rollback](skills/fde/references/rollback.md) | Test the escape route before 2am | "We can always revert" |
137
145
 
138
- ### Prove - What they got
146
+ ### Prove - Outcome
139
147
 
140
148
  | Skill | What It Does | Use When |
141
149
  |--------|--------------|----------|
142
- | [status](skills/fde/references/status.md) | Promised → measured → accepted | Friday, sponsor update |
150
+ | [readout](skills/fde/references/readout.md) | Promised → measured → accepted | Friday, sponsor update |
143
151
  | [demo-prep](skills/fde/references/demo-prep.md) | One number, five hard questions | Demo or exec walkthrough |
144
152
  | [debrief](skills/fde/references/debrief.md) | Meeting notes into the record | Just left a meeting |
145
- | [exec-narrative](skills/fde/references/exec-narrative.md) | Board / sponsor's boss | Justify continued investment |
153
+ | [board-memo](skills/fde/references/board-memo.md) | Board / sponsor's boss | Justify continued investment |
146
154
  | [dashboard](skills/fde/references/dashboard.md) | Portfolio, trust-ordered | All my customers |
147
155
  | [ingest](skills/fde/references/ingest.md) | Pull text you confirm | Transcript, Notion, Slack |
148
- | [ingest-connect](skills/fde/references/ingest-connect.md) | Wire a source MCP | Connect Granola |
156
+ | [connect](skills/fde/references/connect.md) | Wire a source MCP | Connect Granola |
149
157
 
150
158
  ### Close - They run it
151
159
 
152
160
  | Skill | What It Does | Use When |
153
161
  |--------|--------------|----------|
154
162
  | [close](skills/fde/references/close.md) | Handoff that survives you | Wrapping up |
155
- | [handoff-engineering](skills/fde/references/handoff-engineering.md) | Runbook, confidence scoring | They must operate without you |
156
- | [multi-customer-ops](skills/fde/references/multi-customer-ops.md) | Switch without bleed | 2+ clients |
157
- | [pattern-extract](skills/fde/references/pattern-extract.md) | If you did it twice, encode it | It will apply again |
163
+ | [runbook](skills/fde/references/runbook.md) | Runbook, confidence scoring | They must operate without you |
164
+ | [switch-clients](skills/fde/references/switch-clients.md) | Switch without bleed | 2+ clients |
165
+ | [encode-pattern](skills/fde/references/encode-pattern.md) | If you did it twice, encode it | It will apply again |
158
166
  | [red-team](skills/fde/references/red-team.md) | Stress-test before they do | "Poke holes in this" |
159
167
 
160
168
  Overlays (on signal, not on request): [ai](skills/fde/references/ai.md) · [artifacts](skills/fde/references/artifacts.md) · [fintech](skills/fde/references/fintech.md) · [healthcare](skills/fde/references/healthcare.md) · [gov](skills/fde/references/gov.md) · [eval-pack](skills/fde/references/eval-pack.md)
@@ -165,32 +173,31 @@ Optional pull: you add the source MCP; we **pull** on request. [mcp/recipes/](mc
165
173
 
166
174
  ## How Skills Work
167
175
 
168
- Every skill follows a consistent anatomy:
176
+ One skill. One reference file per situation. One folder per client.
169
177
 
170
178
  ```
171
- ┌─────────────────────────────────────────────┐
172
- @fde (one skill) │
173
- │ │
174
- ┌─ Frontmatter ─────────────────────────┐ │
175
- name: fde │ │
176
- │ │ description: Use when [client work] │ │
177
- └───────────────────────────────────────┘ │
178
-
179
- │ Commands load it. English loads it. │
180
- You confirm. Then .fde/ is written. │
181
- └─────────────────────────────────────────────┘
182
-
183
-
184
- references/<skill>.md fde CLI (local)
185
- one file, then stop dating, gates, redaction
179
+ /brief or "@fde this is Acme"
180
+
181
+
182
+ skills/fde/SKILL.md hosts load this one file
183
+ routes. you never pick a skill by name
184
+
185
+ references/land.md one workflow, then stop
186
+
187
+
188
+ fde CLI (local) dates, gates, redacts. no network
189
+ │ after you confirm
190
+
191
+ ~/fde-engagements/<client>/.fde/
186
192
  ```
187
193
 
188
- - **Process, not prose.** Skills are workflows with an artifact and a checkpoint, not tip sheets.
194
+ - **Process, not prose.** Each reference is a workflow with an artifact and a checkpoint, not a tip sheet.
195
+ - **Ground loop.** Name → characterise → prove where they live → log. The workspace compiles; `@fde` stays.
189
196
  - **You confirm.** Nothing is written until you say so.
190
- - **Progressive disclosure.** The `SKILL.md` is the entry point. One `references/*.md` loads when routed.
191
- - **Local CLI.** Writes, status, dated agreements. Zero model tokens. The AI coding agent runs it.
197
+ - **Progressive disclosure.** `SKILL.md` is the entry point. One `references/*.md` loads when routed.
198
+ - **Local CLI.** Writes and status cost zero model tokens. The AI coding agent runs it.
192
199
 
193
- The record lives at `~/fde-engagements/<client>/.fde/` — not inside any vendor. Change hosts, install `@fde` on the new one, bind if needed, keep talking.
200
+ Change hosts, install `@fde` on the new one, bind if needed, keep talking. The record is not inside any vendor.
194
201
 
195
202
  ---
196
203
 
@@ -198,41 +205,76 @@ The record lives at `~/fde-engagements/<client>/.fde/` — not inside any vendor
198
205
 
199
206
  ```
200
207
  fdeops/
201
- ├── skills/fde/ # the one skill
202
- │ ├── SKILL.md # router
203
- │ └── references/ # 31 skills + overlays
204
- ├── .claude/commands/ # slash commands (each loads @fde)
205
- ├── .claude-plugin/ # Claude Code marketplace
206
- ├── bin/ # local CLI — git + files, no network
207
- ├── hooks/ # session-start / session-stop / pre-compact
208
- ├── adapters/ # Cursor, Gemini, Copilot, Codex pointers
209
- ├── templates/.fde/ # memory files created on bind
210
- ├── examples/ # fictional walkthroughs
211
- ├── mcp/ # optional ingest + source recipes
212
- ├── evals/ # routing checks + CLI attack notes
213
- ├── media/ # recorded session (docs/USAGE.md)
214
- └── docs/ # usage, schema, install, methodology
208
+ ├── skills/fde/ # the one skill hosts load
209
+ │ ├── SKILL.md # router
210
+ │ └── references/ # 31 skills + overlays (you never pick)
211
+ ├── land.md # Land
212
+ ├── audit.md
213
+ ├── who-decides.md
214
+ ├── earn-trust.md
215
+ ├── hold-scope.md
216
+ ├── discover.md # Discover
217
+ ├── test-assumptions.md
218
+ ├── score-use-cases.md
219
+ ├── poc.md
220
+ ├── plan.md # Plan
221
+ │ ├── business-case.md
222
+ │ ├── three-options.md
223
+ │ ├── pick-three.md
224
+ │ ├── thin-slices.md # Ship
225
+ │ ├── what-breaks.md
226
+ │ ├── rescue.md
227
+ │ ├── ship.md
228
+ │ ├── review.md
229
+ │ ├── rollback.md
230
+ │ ├── readout.md # Prove
231
+ │ ├── demo-prep.md
232
+ │ ├── debrief.md
233
+ │ ├── board-memo.md
234
+ │ ├── dashboard.md
235
+ │ ├── ingest.md
236
+ │ ├── connect.md
237
+ │ ├── close.md # Close
238
+ │ ├── runbook.md
239
+ │ ├── switch-clients.md
240
+ │ ├── encode-pattern.md
241
+ │ ├── red-team.md
242
+ │ ├── ai.md # overlays (on signal)
243
+ │ ├── artifacts.md
244
+ │ ├── eval-pack.md
245
+ │ ├── fintech.md
246
+ │ ├── healthcare.md
247
+ │ └── gov.md
248
+ ├── .claude/commands/ # slash commands (each loads @fde)
249
+ │ ├── brief.md
250
+ │ ├── discover.md
251
+ │ ├── plan.md
252
+ │ ├── ship.md
253
+ │ ├── outcome.md
254
+ │ ├── close.md
255
+ │ ├── trust.md
256
+ │ ├── receipts.md
257
+ │ ├── debrief.md
258
+ │ ├── prep.md
259
+ │ └── readout.md
260
+ ├── .claude-plugin/ # Claude Code marketplace
261
+ ├── bin/ # local CLI: git + files, no network
262
+ ├── hooks/ # session-start / session-stop / pre-compact
263
+ ├── adapters/ # Cursor, Gemini, Copilot, Codex pointers
264
+ ├── templates/.fde/ # memory files created on bind
265
+ ├── examples/ # fictional walkthroughs
266
+ ├── mcp/ # optional ingest + source recipes
267
+ ├── evals/ # routing checks
268
+ └── docs/ # usage, schema, install
215
269
  ```
216
270
 
217
271
  ---
218
272
 
219
273
  ## Why FDEOps?
220
274
 
221
- ### 1. The brief is wrong
222
-
223
- The most common failure on an embed is building the portal they asked for. Ops has been running a spreadsheet for two years. `/brief` then `/discover` — who in their company would have to agree it worked?
224
-
225
- ### 2. They went quiet
275
+ AI coding agents are built for a repo, not for a client. They forget the sponsor, the promise, who can say yes, and whether anyone accepted the number. Monday morning they start from the ticket again.
226
276
 
227
- A sponsor who stops answering is not a Jira gap. It is a trust color. `/quiet` process vs trust, then a dated signal in the record.
228
-
229
- ### 3. When did we agree?
230
-
231
- Arguments from memory lose. `/agreed` searches dated receipts. No hit is a gap, not proof.
232
-
233
- ### 4. What did they get?
234
-
235
- A number only you agree with is claimed, not delivered. `/got` reads promised → measured → accepted out loud.
277
+ FDEOps is what you take on site. One `@fde` skill runs the embed from discovery to signed outcome: POC, slice, on-site proof, eval when a model judges, promised → measured → accepted. A local CLI dates every decision. `.fde/` is markdown on your laptop. You confirm; then it is on the record.
236
278
 
237
279
  ---
238
280
 
@@ -255,19 +297,15 @@ Schema: [docs/schema.md](docs/schema.md). Local HTML: `npx fdeops dashboard`.
255
297
 
256
298
  ## Who this is for
257
299
 
258
- | You are | What this is |
259
- |---------|----------------|
260
- | **Forward Deployed Engineer** | Client work that has to survive Monday morning |
261
- | **Consultant / contractor on site** | The engagement stops resetting every morning |
262
- | **Solutions architect** | Politics and architecture in the same record |
263
- | **Agency, 3–5 clients** | One `.fde/` each — they stop blurring |
264
- | **Fractional CTO on client work** | System of record for the embed, and the billable trail |
300
+ You embed with a customer and an AI coding agent. Take this on the ground. Discovery through signed outcome lives in `@fde`. One `.fde/` per client so they do not blur.
301
+
302
+ If you only write code in your own repo with no client record to defend, you do not need this kit.
265
303
 
266
304
  ---
267
305
 
268
306
  ## Your data stays yours
269
307
 
270
- Local only `git` + files, no network, no telemetry. Plain markdown. The model sees client code only when you point the AI coding agent at it. `<private>` is redacted from CLI, dashboard, and hooks. Nothing is written until you confirm. `~/fde-engagements` is in `$HOME`; iCloud/Dropbox is an NDA incident waiting.
308
+ Local only - `git` + files, no network, no telemetry. Plain markdown. The model sees client code only when you point the AI coding agent at it. `<private>` is redacted from CLI, dashboard, and hooks. Nothing is written until you confirm. `~/fde-engagements` is in `$HOME`; iCloud/Dropbox is an NDA incident waiting.
271
309
 
272
310
  [PRIVACY.md](PRIVACY.md) · [SECURITY.md](SECURITY.md)
273
311
 
@@ -275,20 +313,21 @@ Local only — `git` + files, no network, no telemetry. Plain markdown. The mode
275
313
 
276
314
  ## Principles
277
315
 
278
- - **The artifact is the memory** producing the work and recording it are one action
279
- - **Skills, not autonomy** the kit says what to check; judgment stays yours
280
- - **Brief is a hypothesis** discover before building the wrong thing
281
- - **Evidence on every claim** these files get defended in the room
282
- - **One customer, one folder** context never bleeds
316
+ - **The artifact is the memory** - producing the work and recording it are one action
317
+ - **Ground loop** - name the slice, characterise their code, prove it where they live, log the outcome
318
+ - **Skills, not autonomy** - the kit says what to check; judgment stays yours
319
+ - **Brief is a hypothesis** - discover before building the wrong thing
320
+ - **Evidence on every claim** - these files get defended in the room
321
+ - **One customer, one folder** - context never bleeds
283
322
 
284
323
  ---
285
324
 
286
325
  ## Contributing
287
326
 
288
- **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. [Issues](https://github.com/suboss87/fdeops/issues) · [CONTRIBUTING.md](CONTRIBUTING.md)
327
+ **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. [Issues](https://github.com/suboss87/fdeops/issues) · [Discussions](https://github.com/suboss87/fdeops/discussions) · [CONTRIBUTING.md](CONTRIBUTING.md) · [Code of Conduct](CODE_OF_CONDUCT.md)
289
328
 
290
329
  Skills should be **specific** (actionable steps), **verifiable** (an artifact in `.fde/`), and **minimal**. The `fde` CLI stays local-only.
291
330
 
292
331
  ## License
293
332
 
294
- MIT use these skills on client work.
333
+ MIT - use these skills on client work.
@@ -4,9 +4,9 @@ You are the AI coding agent for a **Forward Deployed Engineer (FDE)** - the huma
4
4
 
5
5
  ## Entry
6
6
 
7
- When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
7
+ When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) - load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
8
8
 
9
- Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
9
+ Do **not** load `@fde` for a one-line typo in an unbound repo. On a bound client, stay on `@fde` for POC, slices, characterisation, on-site proof, eval, and go-live.
10
10
 
11
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
12
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
@@ -4,9 +4,9 @@ Context for Gemini CLI when assisting a **Forward Deployed Engineer (FDE)** - th
4
4
 
5
5
  ## Entry
6
6
 
7
- When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
7
+ When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) - load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
8
8
 
9
- Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
9
+ Do **not** load `@fde` for a one-line typo in an unbound repo. On a bound client, stay on `@fde` for POC, slices, characterisation, on-site proof, eval, and go-live.
10
10
 
11
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
12
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
@@ -66,9 +66,9 @@ The methodology is detailed (31 skills, routing logic, evidence format, memory c
66
66
 
67
67
  | Model class | Experience |
68
68
  |-------------|-----------|
69
- | **7-8B** (Llama 3.1 8B, Mistral 7B, Qwen 2.5 7B) | Handles individual skills (status, log, land). May struggle with complex routing or multi-skill sessions. Good for the CLI-heavy workflow where you invoke skills explicitly. |
69
+ | **7-8B** (Llama 3.1 8B, Mistral 7B, Qwen 2.5 7B) | Handles individual skills (readout, log, land). May struggle with complex routing or multi-skill sessions. Good for the CLI-heavy workflow where you invoke skills explicitly. |
70
70
  | **13-34B** (Llama 3.1 13B, Mixtral 8x7B, Qwen 2.5 32B, DeepSeek-R1 32B) | Good across all domains. Routes correctly, follows memory contract, writes structured artifacts. Recommended minimum for full methodology use. |
71
- | **70B+** (Llama 3.1 405B, DeepSeek V3, Qwen 2.5 72B) | Full capability. Handles regulated overlays, multi-customer ops, exec-narrative pyramid structure, complex handoff engineering. |
71
+ | **70B+** (Llama 3.1 405B, DeepSeek V3, Qwen 2.5 72B) | Full capability. Handles regulated overlays, switch-clients, board-memo pyramid, runbook handoff. |
72
72
 
73
73
  ## The CLI works without ANY model
74
74
 
@@ -107,4 +107,4 @@ ollama run my-fde-model --system "$(cat skills/fde/SKILL.md)"
107
107
  - **Context window matters.** SKILL.md + references can be large. Use a model with at least 8K context; 32K+ is ideal for loading skill references on demand.
108
108
  - **Temperature 0.2-0.4 works best.** The methodology is structured - lower temperature keeps routing accurate and artifacts consistent.
109
109
  - **Use the CLI for mechanics.** Don't ask the model to do what the CLI already does deterministically. Use `fde scan` for repo recon, `fde log` for memory writes, `fde receipts` for searching. Let the model handle judgment, routing, and artifact drafting.
110
- - **Explicit skill invocation.** If a smaller model struggles with routing, you can invoke skills directly: "@fde run the discover phase" or "@fde use scope-defense." The model skips routing and goes straight to the method.
110
+ - **Explicit skill invocation.** If a smaller model struggles with routing, you can invoke skills directly: "@fde run the discover phase" or "@fde use hold-scope." The model skips routing and goes straight to the method.
@@ -2,7 +2,7 @@
2
2
 
3
3
  **One brain, thin adapters.** fdeops has a single source of truth - the `@fde` skill at `skills/fde/SKILL.md` and the `fde` CLI. Each AI coding tool discovers it through a small pointer file in the place that tool already looks. No forked logic, no five copies to maintain - every adapter says the same thing: *route via `@fde`, read/write `.fde/` memory, talk like a peer, never touch what isn't yours.*
4
4
 
5
- **Switching tools:** the fieldbook does not live in the agent. It lives at `~/fde-engagements/<client>/.fde/`. Point a new tool at a bound workspace, drop adapters (or install the skill/plugin for that tool), and the same client record opens. Auto session hooks are Claude Codefirst; elsewhere load via `@fde` / `fde resume`. See [README § How it works](../README.md#how-it-works).
5
+ **Switching tools:** the fieldbook does not live in the agent. It lives at `~/fde-engagements/<client>/.fde/`. Point a new tool at a bound workspace, drop adapters (or install the skill/plugin for that tool), and the same client record opens. Auto session hooks are Claude Code-first; elsewhere load via `@fde` / `fde resume`. See [README § How it works](../README.md#how-it-works).
6
6
 
7
7
  ## What goes where
8
8
 
@@ -4,9 +4,9 @@ You are the AI coding agent for a **Forward Deployed Engineer (FDE)** - the huma
4
4
 
5
5
  ## Entry
6
6
 
7
- When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
7
+ When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) - load the skill. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
8
8
 
9
- Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
9
+ Do **not** load `@fde` for a one-line typo in an unbound repo. On a bound client, stay on `@fde` for POC, slices, characterisation, on-site proof, eval, and go-live.
10
10
 
11
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
12
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
@@ -9,9 +9,9 @@ You are the AI coding agent for a **Forward Deployed Engineer (FDE)** - the huma
9
9
 
10
10
  ## Entry
11
11
 
12
- When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) load `@fde`. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
12
+ When the FDE types **`@fde`**, names a client, pastes meeting notes, asks what was agreed, or describes embed work (quiet sponsor, brief feels wrong, Friday update) - load `@fde`. If `fde resume` says NO ENGAGEMENT: ask the client name once, then **you** run `fde resume --init <slug>`. Never tell them to type it.
13
13
 
14
- Do **not** load `@fde` for ordinary code edits, unit tests, refactors, or git commits.
14
+ Do **not** load `@fde` for a one-line typo in an unbound repo. On a bound client, stay on `@fde` for POC, slices, characterisation, on-site proof, eval, and go-live.
15
15
 
16
16
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md` (or the copy this install placed)
17
17
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
@@ -21,7 +21,7 @@ Do **not** load `@fde` for ordinary code edits, unit tests, refactors, or git co
21
21
 
22
22
  Read and write engagement files under the workspace's bound engagement: run `fde resume` to resolve it (binding created once with `fde resume --init <name>`; default `~/fde-engagements/<name>/.fde/`). `FDEOPS_ENGAGEMENT` (expand `~`) overrides when set. Use `./.fde/` only when the engagement approves it and it is gitignored.
23
23
 
24
- **On every session entry (before other work):** run `fde triage` (fallback `node ~/.claude/fdeops/fde.js triage`, then `fde resume`). Lead with that TRIAGE block trust, phase, open risks, next action, record owner/hash. Do not invent stakeholders or status.
24
+ **On every session entry (before other work):** run `fde triage` (fallback `node ~/.claude/fdeops/fde.js triage`, then `fde resume`). Lead with that TRIAGE block - trust, phase, open risks, next action, record owner/hash. Do not invent stakeholders or status.
25
25
 
26
26
  You run the CLI for deterministic work - `fde scan | log | debrief | prep | doctor | receipts | status | dashboard` - instead of improvising shell or handing commands to the human.
27
27