fdeops 3.11.1 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # AGENTS.md - working in the fdeops repository
2
2
 
3
- This repository **is** fdeops - the second brain for Forward Deployed Engineers. One `@fde` skill routes an entire client engagement across six domains, the `fde` CLI does the deterministic work, and per-customer memory lands in `.fde/` files 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
@@ -1,183 +1,252 @@
1
1
  # FDEOps
2
2
 
3
- **Your AI coding agent forgets your client every morning. FDEOps remembers.**
3
+ **Forward deployed engineering skills for AI coding agents.**
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/fdeops.svg)](https://www.npmjs.com/package/fdeops)
6
- [![CI](https://github.com/suboss87/fdeops/actions/workflows/validate.yml/badge.svg)](https://github.com/suboss87/fdeops/actions)
7
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
8
- [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
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.
9
6
 
10
- Skill packs teach your AI coding agent how to *build*. None of them remember who the client is, what you promised, or who agreed it was delivered. FDEOps adds that layer: a private fieldbook per engagement (`.fde/`), a field methodology from land to close, and one `@fde` skill that routes it.
11
-
12
- Built for Forward Deployed Engineers and anyone embedded in client work - consultants, agency developers, solutions architects, fractional CTOs. Feels like a second brain; behaves like a defensible record: dated, sourced, on your laptop.
13
-
14
- ```
15
- land discover plan build ship close
16
- | | | | | |
17
- +-----------+-----------+---------+----------+---------+
18
- the fieldbook (.fde/) - one per engagement
19
- written as a side effect of the work
7
+ ```text
8
+ LAND DISCOVER PLAN SHIP PROVE CLOSE
9
+ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
10
+ │ Brief │ ───▶ │ Reality│ ───▶ │ Sequence│───▶ │ Live │ ───▶ │ Signed │ ───▶ │ They │
11
+ │ Trust │ │ Terrain│ │ Align │ │ slice │ │ off │ │ run │
12
+ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘
13
+ /brief /discover /plan /ship /got /close
20
14
  ```
21
15
 
22
16
  ---
23
17
 
24
- ## A real session
18
+ ## Commands
19
+
20
+ 6 slash commands that map to the engagement. Each one loads `@fde`. You never pick a method.
25
21
 
26
- Kickoff notes go in messy. You confirm what enters the record. A cold session the next morning already knows the client, the sponsor brief is grounded in dated facts, and the receipts survive the argument. Real CLI output - only the typing pace is staged, and you can [re-record it yourself](media/record-session.sh).
22
+ | What you're doing | Command | Principle |
23
+ |-------------------|---------|-----------|
24
+ | Land the embed | `/brief` | Brief and trust before code |
25
+ | Find the real problem | `/discover` | Brief is a hypothesis |
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
30
 
28
- <p align="center"><img alt="A real fdeops session: messy kickoff notes routed into dated memory after you confirm, then a cold session that already knows the client, a grounded sponsor-meeting brief, and dated receipts" src="media/session.gif" width="900" /></p>
31
+ Also: `/debrief` (after a meeting) · `/prep` (walk-in) · `/quiet` (sponsor silent) · `/agreed` (scope dispute) · `/status` (Friday readout).
29
32
 
30
- Nothing to install to see it on a fake client: `npx fdeops demo`.
33
+ `@fde` plus English activates the same skill automatically. Ordinary TypeScript, unit tests, and git commits stay in the host agent.
31
34
 
32
35
  ---
33
36
 
34
- ## Quickstart
37
+ ## Quick Start
35
38
 
36
- **1. Install** on your machine - never in the customer's repo.
39
+ ```bash
40
+ npx skills add suboss87/fdeops --skill fde
41
+ ```
42
+
43
+ Then one chat. Name the client. The AI coding agent binds.
44
+
45
+ ```text
46
+ @fde this is Acme
47
+ ```
48
+
49
+ Paste kickoff notes in the same thread. `@fde` routes; you confirm judgment. Same folder every time: `~/fde-engagements/<client>/.fde/`. Workflow: [docs/USAGE.md](docs/USAGE.md).
50
+
51
+ <details>
52
+ <summary><b>Claude Code (recommended)</b></summary>
37
53
 
38
54
  ```text
39
55
  /plugin marketplace add suboss87/fdeops
40
56
  /plugin install fdeops@fdeops
41
57
  ```
42
58
 
59
+ Hooks load where you left off. Slash commands match the map above.
60
+
61
+ </details>
62
+
63
+ <details>
64
+ <summary><b>Cursor</b></summary>
65
+
43
66
  ```bash
44
- npx skills add suboss87/fdeops --skill fde # Cursor, Codex, skills-compatible hosts
67
+ npx skills add suboss87/fdeops --skill fde
45
68
  ```
46
69
 
47
- That is one skill, not a catalogue - `@fde` routes the whole method. The CLI needs no install either: the skill reaches for `npx fdeops` when `fde` is not on the PATH. (Drop `--skill fde` and you also get `testing-fieldbook`, which is for people contributing to this repo, not for field work.)
70
+ Or `npx fdeops adapters .` [adapters/](adapters/README.md).
48
71
 
49
- Claude Code additionally gets session hooks, so context arrives before you type. Everywhere else it is the same fieldbook, loaded when you ask.
72
+ </details>
50
73
 
51
- **2. Bind once** in the client workspace:
74
+ <details>
75
+ <summary><b>Other agents</b></summary>
52
76
 
53
77
  ```bash
54
- npx fdeops resume --init garvey # ~/fde-engagements/garvey + bind this checkout
55
- npx fdeops resume # where we are
78
+ npx skills add suboss87/fdeops --skill fde
56
79
  ```
57
80
 
58
- **3. Work** in plain language:
81
+ Gemini, Copilot, Codex, local LLMs: [adapters/](adapters/README.md). Air-gapped: `git clone https://github.com/suboss87/fdeops.git && node bin/install.js`.
59
82
 
60
- ```text
61
- @fde New client. Payments platform. They want it live before the Q3 audit.
62
- ```
63
-
64
- **It is working if** `npx fdeops resume` prints this client's phase, trust signal, and next action - and prints the same thing tomorrow, from a new session, with no explaining. Full workflow: [docs/USAGE.md](docs/USAGE.md).
83
+ Fallback if the agent cannot bind:
65
84
 
66
- <details>
67
- <summary>Other install paths · scan · env</summary>
85
+ ```bash
86
+ npx fdeops resume --init acme # ~/fde-engagements/acme + bind this checkout
87
+ ```
68
88
 
69
- - **Adapters:** `npx fdeops adapters .` - [adapters/](adapters/README.md)
70
- - **Local LLMs:** load `skills/fde/SKILL.md` - [guide](adapters/LOCAL-LLM.md)
71
- - **Air-gapped:** `git clone https://github.com/suboss87/fdeops.git && cd fdeops && node bin/install.js`
72
- - **No install:** `npx fdeops demo` · `npx fdeops scan` (heuristic recon, not findings)
73
- - **Requires:** Node.js >= 18
74
- - **Override:** `FDEOPS_ENGAGEMENT` - [docs/install.md](docs/install.md)
89
+ Requires Node.js >= 18. Override: `FDEOPS_ENGAGEMENT` [docs/install.md](docs/install.md). Try the loop: `npx fdeops demo`.
75
90
 
76
91
  </details>
77
92
 
78
93
  ---
79
94
 
80
- ## The week
95
+ ## All 31 Methods
81
96
 
82
- `@fde` plus English. No cheat sheet.
97
+ The commands above are the entry points. One `@fde` skill routes to these 31 methods — each a structured workflow with an artifact and a checkpoint. You never pick a method by name. Full detail: [docs/skills-reference.md](docs/skills-reference.md).
83
98
 
84
- | When | What you say | What you get |
85
- |------|--------------|--------------|
86
- | **Start of week** | `@fde` - or just open Claude Code | Fieldbook on disk either way. **Claude Code** injects trust, phase, next before you type. **Cursor / Codex / others:** say `@fde` or `resume` - nothing auto-loads. |
87
- | **After a meeting** | `@fde` debrief these notes *(paste or attach)* | Proposed updates. You review, then confirm. |
88
- | **Optional: pull** | `@fde` connect Granola *(once)* · `@fde` pull today's Acme transcript | You add that source MCP. We **pull** on request - no push, no sync. [mcp/recipes/](mcp/recipes/) |
89
- | **Before a stakeholder meeting** | `@fde` prep me for tomorrow with the sponsor | Brief from what you already logged. |
90
- | **Scope dispute** | `@fde` when did we agree to drop that? | Dated answers, or a clear gap. |
91
- | **End of week** | `@fde` draft the sponsor update from the record | Status grounded in what happened. |
99
+ ### Land
92
100
 
93
- Same folder every time: `~/fde-engagements/<client>/.fde/`.
101
+ | Method | What it does | Use when |
102
+ |--------|--------------|----------|
103
+ | [land](skills/fde/references/land.md) | Interrogate the brief, map stakeholders, define success | New client, first meeting, just got the brief |
104
+ | [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 |
94
108
 
95
- ---
109
+ ### Discover
96
110
 
97
- ## How it works
111
+ | Method | What it does | Use when |
112
+ |--------|--------------|----------|
113
+ | [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 |
98
117
 
99
- - **You** describe the situation with `@fde`, in plain language.
100
- - **The AI coding agent** routes to a method, does the work, and drafts the memory.
101
- - **The CLI** (`bin/fde.js`) does every write, receipt, and status check - git and file reads only, no network, no model tokens. You do not live in the CLI; your agent runs it. [docs/USAGE.md](docs/USAGE.md)
102
- - **You confirm.** Nothing enters the record unreviewed; `fde debrief --dry-run` shows the routing first.
118
+ ### Plan
103
119
 
104
- `CLAUDE.md` is how the *code* works. The fieldbook is how the *engagement* works. It lives at `~/fde-engagements/<client>/.fde/`, not inside any vendor - change hosts, install `@fde` on the new one, keep talking.
120
+ | Method | What it does | Use when |
121
+ |--------|--------------|----------|
122
+ | [plan](skills/fde/references/plan.md) | Backwards from done, PR-sized | What order, what is done |
123
+ | [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 |
105
126
 
106
- ### What works where
127
+ ### Ship
107
128
 
108
- Honest boundaries, so nothing here needs a footnote:
129
+ | Method | What it does | Use when |
130
+ |--------|--------------|----------|
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 |
133
+ | [rescue](skills/fde/references/rescue.md) | Production fire or trust fire | Down, or they went quiet |
134
+ | [ship](skills/fde/references/ship.md) | Intent vs diff, pre-flight, rollback | Going live |
135
+ | [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" |
109
137
 
110
- | | Claude Code | Cursor · Codex · Copilot · Gemini · local LLMs |
111
- |---|---|---|
112
- | Fieldbook, methods, CLI, dashboard | yes | yes |
113
- | Context loaded before you type | session hooks | you say `@fde` / `resume` |
114
- | Snapshot on session end | session hooks | `@fde` capture, or `fde capture` |
115
- | Pull from Granola / Slack / Notion | you add that source MCP; FDEOps only ingests | same |
138
+ ### Prove
116
139
 
117
- FDEOps is the sink, never the source: no push, no sync, no third-party tokens in `.fde/`. [mcp/recipes/](mcp/recipes/)
140
+ | Method | What it does | Use when |
141
+ |--------|--------------|----------|
142
+ | [status](skills/fde/references/status.md) | Promised → measured → accepted | Friday, sponsor update |
143
+ | [demo-prep](skills/fde/references/demo-prep.md) | One number, five hard questions | Demo or exec walkthrough |
144
+ | [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 |
146
+ | [dashboard](skills/fde/references/dashboard.md) | Portfolio, trust-ordered | All my customers |
147
+ | [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 |
118
149
 
119
- <details>
120
- <summary>Phase verbs (land → close)</summary>
150
+ ### Close
121
151
 
122
- | Verb | When |
123
- |------|------|
124
- | **land** | First days - brief, stakeholders, success |
125
- | **discover** | The brief is wrong - evidence from the repo |
126
- | **plan** | Sequence backwards from done, PR-sized |
127
- | **build** | Blast radius, log what shipped |
128
- | **ship** | Pre-flight, canary, rollback |
129
- | **close** | Handoff, retro, receipts that survive you |
152
+ | Method | What it does | Use when |
153
+ |--------|--------------|----------|
154
+ | [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 |
158
+ | [red-team](skills/fde/references/red-team.md) | Stress-test before they do | "Poke holes in this" |
130
159
 
131
- Overlays (AI, fintech, healthcare, gov) fire on signal. [docs/skills.md](docs/skills.md)
160
+ 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)
132
161
 
133
- </details>
162
+ Optional pull: you add the source MCP; we **pull** on request. [mcp/recipes/](mcp/recipes/)
134
163
 
135
164
  ---
136
165
 
137
- ## Engagement memory (`.fde/`)
166
+ ## How it works
138
167
 
139
- One folder per client. Plain markdown, so you can grep it, diff it, copy it into a readout, and defend it in a room.
168
+ Every method follows the same anatomy:
140
169
 
141
- | File | Holds |
142
- |------|-------|
143
- | `context.md` | Where you are |
144
- | `brief.md` / `success.md` | What they asked; what "done" is and who signs |
145
- | `reality.md` / `terrain.md` | The real problem; the map |
146
- | `stakeholders.md` | `[signal:green\|amber\|red]` |
147
- | `trust-profile.md` | Sacred data, AI policy, approval chain |
148
- | `decisions.md` / `risks.md` / `delivery.md` | Dated choices; live risks; what shipped and how it rolls back |
170
+ ```
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/<method>.md fde CLI (local)
185
+ one file, then stop dating, gates, redaction
186
+ ```
187
+
188
+ - **Process, not prose.** Methods are workflows with an artifact and a checkpoint.
189
+ - **You confirm.** Nothing is written until you say so.
190
+ - **Progressive disclosure.** `SKILL.md` is the entry point. One `references/*.md` loads when routed.
191
+ - **Local CLI.** Writes, receipts, status. Zero model tokens. The AI coding agent runs it.
149
192
 
150
- A day-one fieldbook ships **empty** - headings and allowed values, no invented rows - so anything you read in it is something that actually happened. Schema: [docs/schema.md](docs/schema.md).
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.
194
+
195
+ **Words used here, once:** *engagement* - one client's body of work, one folder. *Fieldbook* - that folder (`.fde/`), the record itself. *Brief vs reality* - what they said the problem was, and what it turned out to be. *Terrain* - their systems and org as you actually found them. *Trust signal* - green / amber / red on one relationship. *Receipts* - the dated line proving something was agreed. *Vault* - the Obsidian copy `fde vault` generates to read it all in one window.
151
196
 
152
197
  ---
153
198
 
154
- ## The field methods
199
+ ## Project Structure
155
200
 
156
- You never pick one. You describe the situation and `@fde` routes. **37 methods** across six domains, each a method - thinking, artifact, checkpoint - not a tip sheet. [docs/skills.md](docs/skills.md) · [docs/skills-reference.md](docs/skills-reference.md)
201
+ ```
202
+ fdeops/
203
+ ├── skills/fde/ # the one skill
204
+ │ ├── SKILL.md # router
205
+ │ └── references/ # 31 methods + overlays
206
+ ├── .claude/commands/ # slash commands (each loads @fde)
207
+ ├── bin/fde.js # local CLI — git + files, no network
208
+ ├── hooks/ # session-start / session-stop / pre-compact
209
+ ├── adapters/ # Cursor, Gemini, Copilot, Codex pointers
210
+ ├── templates/.fde/ # memory files created on bind
211
+ └── docs/ # usage, schema, install
212
+ ```
157
213
 
158
- <details>
159
- <summary>All 37 methods</summary>
214
+ ---
160
215
 
161
- | Domain | Methods |
162
- |--------|---------|
163
- | **1. Embed & Trust** | [land](skills/fde/references/land.md) · [audit](skills/fde/references/audit.md) · [stakeholder-radar](skills/fde/references/stakeholder-radar.md) · [trust-engineering](skills/fde/references/trust-engineering.md) · [scope-defense](skills/fde/references/scope-defense.md) |
164
- | **2. Discover & Diagnose** | [discover](skills/fde/references/discover.md) · [assumption-audit](skills/fde/references/assumption-audit.md) · [use-case-scoring](skills/fde/references/use-case-scoring.md) · [sketch](skills/fde/references/sketch.md) |
165
- | **3. Plan & Align** | [plan](skills/fde/references/plan.md) · [business-case](skills/fde/references/business-case.md) · [options-analysis](skills/fde/references/options-analysis.md) · [initiative-triage](skills/fde/references/initiative-triage.md) |
166
- | **4. Build & Guard** | [build](skills/fde/references/build.md) · [incremental-build](skills/fde/references/incremental-build.md) · [test-on-legacy](skills/fde/references/test-on-legacy.md) · [blast-radius](skills/fde/references/blast-radius.md) · [debug](skills/fde/references/debug.md) · [rescue](skills/fde/references/rescue.md) · [security-audit](skills/fde/references/security-audit.md) · [observability](skills/fde/references/observability.md) |
167
- | **5. Ship & Verify** | [ship](skills/fde/references/ship.md) · [review](skills/fde/references/review.md) · [rollback-drill](skills/fde/references/rollback-drill.md) · [qa-live](skills/fde/references/qa-live.md) |
168
- | **6. Operate & Close** | [status](skills/fde/references/status.md) · [demo-prep](skills/fde/references/demo-prep.md) · [debrief](skills/fde/references/debrief.md) · [exec-narrative](skills/fde/references/exec-narrative.md) · [dashboard](skills/fde/references/dashboard.md) · [multi-customer-ops](skills/fde/references/multi-customer-ops.md) · [close](skills/fde/references/close.md) · [handoff-engineering](skills/fde/references/handoff-engineering.md) · [pattern-extract](skills/fde/references/pattern-extract.md) · [red-team](skills/fde/references/red-team.md) · [ingest](skills/fde/references/ingest.md) · [ingest-connect](skills/fde/references/ingest-connect.md) |
216
+ ## Why this exists
169
217
 
170
- Overlays: [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)
218
+ ### 1. The brief is wrong
171
219
 
172
- </details>
220
+ 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?
221
+
222
+ ### 2. They went quiet
223
+
224
+ 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.
225
+
226
+ ### 3. When did we agree?
227
+
228
+ Arguments from memory lose. `/agreed` searches dated receipts. No hit is a gap, not proof.
229
+
230
+ ### 4. What did they get?
231
+
232
+ A number only you agree with is claimed, not delivered. `/got` reads promised → measured → accepted out loud.
173
233
 
174
234
  ---
175
235
 
176
- ## Fieldbook UI
236
+ ## Engagement memory (`.fde/`)
177
237
 
178
- `@fde` dashboard, or `npx fdeops dashboard` (`--all` for the portfolio): one local HTML file - trust, phase, next action, and the record behind them. Generated on demand, no server.
238
+ One folder per client. Plain markdown. Grep it, copy it, defend it.
179
239
 
180
- <p align="center"><img width="1336" height="624" alt="The fdeops Fieldbook dashboard: engagements with trust signal, phase and next action" src="https://github.com/user-attachments/assets/5683614c-7730-4a3a-860d-185053a377eb" /></p>
240
+ | File | Holds |
241
+ |------|-------|
242
+ | `context.md` | Where you are |
243
+ | `brief.md` / `success.md` | What they asked; what “done” is and who signs |
244
+ | `reality.md` / `terrain.md` | The real problem; the map |
245
+ | `stakeholders.md` | `[signal:green\|amber\|red]` |
246
+ | `trust-profile.md` | Sacred data, AI policy, approval chain |
247
+ | `decisions.md` / `risks.md` / `delivery.md` | Dated choices; live risks; what shipped and how it rolls back |
248
+
249
+ Schema: [docs/schema.md](docs/schema.md). Local HTML: `npx fdeops dashboard`.
181
250
 
182
251
  ---
183
252
 
@@ -185,38 +254,29 @@ Overlays: [ai](skills/fde/references/ai.md) · [artifacts](skills/fde/references
185
254
 
186
255
  | You are | What this is |
187
256
  |---------|----------------|
188
- | **Forward Deployed Engineer** | The job this was built for - first meeting through handoff |
257
+ | **Forward Deployed Engineer** | Client work that has to survive Monday morning |
189
258
  | **Consultant / contractor on site** | The engagement stops resetting every morning |
190
259
  | **Solutions architect** | Politics and architecture in the same record |
191
- | **Agency, 3-5 clients** | One `.fde/` each - they stop blurring |
260
+ | **Agency, 35 clients** | One `.fde/` each they stop blurring |
192
261
  | **Fractional CTO on client work** | System of record for the embed, and the billable trail |
193
262
 
194
263
  ---
195
264
 
196
265
  ## Your data stays yours
197
266
 
198
- - **Local only.** `git` + files. No network, no telemetry, no account. Air-gapped is fine.
199
- - **Plain markdown.** No database, no lock-in, nothing to export.
200
- - **No new data path.** The model sees client code only when you point the AI coding agent at it. `<private>` blocks are redacted from CLI, dashboard, and hook output - do not open raw private blocks with file tools.
201
- - **Know the sync surface.** `~/fde-engagements` lives in `$HOME`. iCloud or Dropbox is an NDA incident waiting; `resume --init` warns you.
267
+ 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.
202
268
 
203
- [PRIVACY.md](PRIVACY.md) before the first NDA · [SECURITY.md](SECURITY.md)
269
+ [PRIVACY.md](PRIVACY.md) · [SECURITY.md](SECURITY.md)
204
270
 
205
271
  ---
206
272
 
207
273
  ## Principles
208
274
 
209
- - **The artifact is the memory** - producing the work and recording it are one action
210
- - **Methods, not autonomy** - the kit says what to check; judgment stays yours
211
- - **Brief is a hypothesis** - discover before building the wrong thing
212
- - **Evidence on every claim** - these files get defended in the room
213
- - **One customer, one folder** - context never bleeds
214
-
215
- ---
216
-
217
- ## Updating
218
-
219
- Re-run the Quickstart install, or from a clone: `git pull && node bin/install.js`
275
+ - **The artifact is the memory** producing the work and recording it are one action
276
+ - **Methods, not autonomy** the kit says what to check; judgment stays yours
277
+ - **Brief is a hypothesis** discover before building the wrong thing
278
+ - **Evidence on every claim** these files get defended in the room
279
+ - **One customer, one folder** context never bleeds
220
280
 
221
281
  ---
222
282
 
@@ -224,8 +284,8 @@ Re-run the Quickstart install, or from a clone: `git pull && node bin/install.js
224
284
 
225
285
  **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. [Issues](https://github.com/suboss87/fdeops/issues) · [CONTRIBUTING.md](CONTRIBUTING.md)
226
286
 
227
- Thanks to builders whose craft sharpened the thinking, among them [Andrej Karpathy](https://karpathy.ai/)'s engineering guidelines and the [agentic engineering workflow](https://github.com/pawel-cell/micky-podcast-agentic-engineering) notes from David Ondrej / Michael Shimeles.
287
+ Methods should be **specific** (actionable steps), **verifiable** (an artifact in `.fde/`), and **minimal**. The `fde` CLI stays local-only.
228
288
 
229
- **What we won't build:** SaaS sync; Slack/Notion/Granola connectors or **push** inside the CLI; CRM as core; hardware capture; generic code-craft packs (TDD and review live elsewhere). You may **pull** via *your* MCP. The `fde` CLI stays local-only.
289
+ ## License
230
290
 
231
- [FDE Methodology](FDE-METHODOLOGY.md) · [SECURITY.md](SECURITY.md) · [PRIVACY.md](PRIVACY.md) · [Repo layout](docs/REPO_LAYOUT.md) · [Skills matrix](docs/skills.md) · MIT
291
+ MIT use these skills on client work.
@@ -4,10 +4,13 @@ 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`** (or describes an engagement situation - new customer, mid-project takeover, production fire, quiet stakeholder, ready to ship), load the skill and route.
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
+
9
+ Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
8
10
 
9
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
10
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
13
+ - **Never ask the FDE to type `fde …` commands.** You run the local CLI; they confirm judgment in chat.
11
14
 
12
15
  ## Engagement memory
13
16
 
@@ -4,10 +4,13 @@ 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`** or describes an engagement situation (new customer, mid-project takeover, production fire, quiet stakeholder, ready to ship), load the skill and route.
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
+
9
+ Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
8
10
 
9
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
10
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
13
+ - **Never ask the FDE to type `fde …` commands.** You run the local CLI; they confirm judgment in chat.
11
14
 
12
15
  ## Engagement memory
13
16
 
@@ -62,7 +62,7 @@ The model reads SKILL.md, routes to the right skill, and produces artifacts in y
62
62
 
63
63
  ## Model size recommendations
64
64
 
65
- The methodology is detailed (37 methods, routing logic, evidence format, memory contract). Larger models handle it better:
65
+ The methodology is detailed (31 methods, routing logic, evidence format, memory contract). Larger models handle it better:
66
66
 
67
67
  | Model class | Experience |
68
68
  |-------------|-----------|
@@ -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 Code–first; elsewhere load via `@fde` / `fde resume`. See [README § What works where](../README.md#what-works-where).
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
 
@@ -31,4 +31,4 @@ Defaults to the current directory if no path is given. Existing files are never
31
31
 
32
32
  ## The principle
33
33
 
34
- The adapter only tells the tool **where the brain is and how to behave**. All the method - the 37 methods, the overlays, the memory contract - lives once in `skills/fde/SKILL.md`. Update the brain, every platform gets it. That's why fdeops feels native in whatever the FDE already uses, without five things to keep in sync.
34
+ The adapter only tells the tool **where the brain is and how to behave**. All the method - the 31 methods, the overlays, the memory contract - lives once in `skills/fde/SKILL.md`. Update the brain, every platform gets it. That's why fdeops feels native in whatever the FDE already uses, without five things to keep in sync.
@@ -4,10 +4,13 @@ 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`** or describes an engagement situation (new customer, mid-project takeover, production fire, quiet stakeholder, ready to ship), load the skill and route.
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
+
9
+ Do **not** load `@fde` for ordinary code edits, TypeScript, unit tests, refactors, or git commits.
8
10
 
9
11
  - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
10
12
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
13
+ - **Never ask the FDE to type `fde …` commands.** You run the local CLI; they confirm judgment in chat.
11
14
 
12
15
  ## Engagement memory
13
16
 
@@ -9,9 +9,11 @@ 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`** or describes an engagement situation in plain language (new customer, meeting notes, prep for a stakeholder meeting, scope dispute, ready to ship), load the skill and route.
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
- - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
14
+ Do **not** load `@fde` for ordinary code edits, unit tests, refactors, or git commits.
15
+
16
+ - Skill (single source of truth): `~/.claude/skills/fde/SKILL.md` (or the copy this install placed)
15
17
  - **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
16
18
  - **Never ask the FDE to type `fde …` commands.** You run the local CLI; they confirm judgment in chat.
17
19