fdeops 3.5.3 → 3.5.5

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/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # fdeops
1
+ # FDEOps
2
+
3
+ **The discipline and methodology for Forward Deployed Engineers.**
2
4
 
3
5
  [![npm version](https://img.shields.io/npm/v/fdeops)](https://www.npmjs.com/package/fdeops)
4
6
  [![CI](https://github.com/suboss87/fdeops/actions/workflows/validate.yml/badge.svg)](https://github.com/suboss87/fdeops/actions)
@@ -7,169 +9,117 @@
7
9
 
8
10
  You embed at a client site. You bridge strategy and code. You ship on their systems, not yours.
9
11
 
10
- Every morning you open your AI coding agent, and it has no idea what happened yesterday. You re-paste the same context. You explain the stakeholders again. You remind it about the scope change from Tuesday. Meanwhile, the real problem - the one the brief didn't mention - sits undiscovered because nobody asked the right questions on day one.
12
+ Every morning you open your AI coding agent, and it has no idea what happened yesterday with your projects/clients. You re-paste the same context. You explain the stakeholders again. You remind it about the scope change from Tuesday. Meanwhile, the real problem the one the brief didn't mention - sits undiscovered because nobody asked the right questions on day one.
11
13
 
12
- **fdeops fixes this.** It gives your AI agent a complete engagement methodology and a private memory that writes itself. You type `@fde`, describe your situation, and the right method runs - from first stakeholder meeting to final handoff. Tomorrow's session starts exactly where today ended.
13
-
14
- ```mermaid
15
- flowchart LR
16
- A["@fde"] --> B{"Describe\nyour situation"}
17
- B --> C["Embed & Trust"]
18
- B --> D["Discover & Diagnose"]
19
- B --> E["Plan & Align"]
20
- B --> F["Build & Guard"]
21
- B --> G["Ship & Verify"]
22
- B --> H["Operate & Close"]
23
- C --> I[".fde/ memory\n(written as you work)"]
24
- D --> I
25
- E --> I
26
- F --> I
27
- G --> I
28
- H --> I
29
- I --> J["Next session\nloads automatically"]
30
- ```
31
-
32
- Works with **Claude Code** · **Cursor** · **Copilot** · **Devin** · **Gemini CLI** · any agent that reads SKILL.md
33
-
34
- <p align="center"><strong>The CLI</strong></p>
35
- <p align="center"><img src="media/terminal-demo.svg" alt="fde CLI - status, scan, dashboard" width="720"/></p>
36
-
37
- <p align="center"><strong>The Fieldbook Dashboard</strong></p>
38
- <p align="center"><img src="media/fieldbook-dashboard.png" alt="FDE Fieldbook - portfolio view" width="720"/></p>
39
-
40
- ---
41
-
42
- ## Who this is for
43
-
44
- | You are... | fdeops helps when... |
45
- |----------|-------------------|
46
- | **Consultant or contractor at a client site** | Every session, you re-explain context. fdeops remembers for you. |
47
- | **Solutions architect bridging strategy and code** | You navigate politics AND architecture. fdeops has methods for both. |
48
- | **Agency engineer running 3-5 clients** | Client details blur together. One `.fde/` per customer, never cross-contaminated. |
49
- | **Forward Deployed Engineer** | The role this was built for. 34 skills across the full engagement lifecycle. |
50
- | **Technical founder doing client work solo** | You ARE the team. The agent becomes your second brain. |
51
- | **Enterprise programme lead** | Leading AI transformations? Built-in methods for model selection, agent safety, governance, and cost management. |
52
-
53
- ---
54
-
55
- ## Without fdeops vs with fdeops
56
-
57
- | | **Without fdeops** | **With fdeops** |
58
- |---|-------------------|----------------|
59
- | **Monday morning** | Re-paste last week's context, explain the stakeholders again | Agent opens with "last session you were on the ingest retry — CTO demo is Friday" |
60
- | **Scope creep** | Five "small" additions absorbed silently, timeline slips | Receipts timestamped — you walk into the sponsor meeting with evidence |
61
- | **Multiple customers** | Wrong client name in a status update, details blur | One folder per customer, context-switch protocol, cross-contamination checklist |
62
- | **The sponsor meeting** | "We completed the API endpoint" | "Manual reconciliation dropped from 3 FTEs to 0.5 — here's the rollback if it turns" |
14
+ **fdeops fixes this.** One `@fde` command gives your AI coding agent a complete engagement methodology, a memory that writes itself, and a co-pilot that never assumes. Describe your situation, the agent confirms its understanding, generates specs where needed, and runs the right method from first stakeholder meeting, discovery workshops to final handoff. Tomorrow's session opens with a state summary and the one thing worth your attention.
63
15
 
64
16
  ---
65
17
 
66
18
  ## Quickstart
67
19
 
68
- **Requires:** [Node.js](https://nodejs.org) >= 18
69
-
70
- ### 1. Install and create your first engagement
20
+ ### 1. Install
71
21
 
72
- ```bash
73
- npx fdeops init my-client # creates engagement memory at ~/fde-engagements/my-client/.fde/
22
+ **Claude Code**
23
+ ```
24
+ /plugin marketplace add suboss87/fdeops
25
+ /plugin install fdeops@fdeops
74
26
  ```
75
27
 
76
- ### 2. Point your AI agent at it
77
-
28
+ **Cursor · Codex · Copilot · Gemini CLI**
78
29
  ```bash
79
- export FDEOPS_ENGAGEMENT=~/fde-engagements/my-client/.fde
30
+ npx fdeops adapters .
80
31
  ```
81
32
 
82
- ### 3. Start working
83
-
84
- ```
85
- @fde I'm on site. First stakeholder meeting tomorrow. Brief says fix the payments API.
86
- ```
33
+ **Local LLMs** - load `skills/fde/SKILL.md` as system prompt ([guide](adapters/LOCAL-LLM.md))
87
34
 
88
- The agent routes to `land` and starts thinking with you:
35
+ ### 2. Create your first engagement
89
36
 
37
+ ```bash
38
+ npx fdeops init my-client # creates engagement memory
39
+ export FDEOPS_ENGAGEMENT=~/fde-engagements/my-client/.fde # point your tool at it
90
40
  ```
91
- Brief says payments API — but nobody named who owns the budget for this
92
- work. That's your first question tomorrow. And the brief has no
93
- out-of-scope section, which means scope creep is pre-authorised.
94
-
95
- Watch for the internal dev who got passed over for this contract — if
96
- there is one, you want them on your side before the first standup.
97
- Also: what does failure look like to the sponsor personally, not the
98
- project charter? That answer shapes everything.
99
41
 
100
- I'll draft brief.md, success.md, stakeholders.md, trust-profile.md
101
- after you come back with notes.
102
- ```
42
+ Creates 12 markdown files at `~/fde-engagements/my-client/.fde/` - private to your machine, never uploaded.
103
43
 
104
- Day 15, the memory has compounded:
44
+ ### 3. Start working
105
45
 
106
46
  ```
107
- @fde What's the priority today?
47
+ @fde I just got the brief. New client, payments platform, 3-week timeline.
108
48
  ```
109
49
 
110
- ```
111
- Last session you were finishing the ingest retry on staging. CTO demo
112
- is Friday and status hasn't gone out since Tuesday. The finance
113
- controller still hasn't seen a working demo — that's a risk.
50
+ Describe what's happening and the agent picks the right method. No configuration files to edit. No API keys. See [docs/USAGE.md](docs/USAGE.md) for the full workflow.
114
51
 
115
- Globex has been quiet for 3 days trust signal amber.
52
+ > **Requires:** [Node.js](https://nodejs.org) >= 18 (for CLI and adapters). Claude Code plugin install does not require Node separately.
53
+ >
54
+ > **Other install methods:** `npx skills add suboss87/fdeops` (Skills CLI) or `git clone https://github.com/suboss87/fdeops.git && cd fdeops && node bin/install.js` (manual). Full install details: [docs/install.md](docs/install.md).
116
55
 
117
- I'd send the CTO status first, then finish the retry, then check in
118
- on Globex before end of day. What do you want to tackle?
119
- ```
56
+ ---
120
57
 
121
- That's the difference. Day 1: it coaches your preparation. Day 15: it picks up where yesterday ended and triages across customers.
58
+ ## Who this is for
122
59
 
123
- > **Other install methods:** `npx skills add suboss87/fdeops` (Skills CLI) or `git clone https://github.com/suboss87/fdeops.git && cd fdeops && node bin/install.js` (manual).
60
+ | You are... | What fdeops does for you |
61
+ |----------|-------------------|
62
+ | **Forward Deployed Engineer** | The role this was built for. 35 skills across the full engagement lifecycle - land, build, ship, close. |
63
+ | **Consultant or contractor at a client site** | Every session, you re-explain context. fdeops remembers for you. |
64
+ | **Solutions architect bridging strategy and code** | You navigate politics AND architecture. fdeops has methods for both. |
65
+ | **Agency engineer running 3-5 clients** | Client details blur together. One `.fde/` per customer, never cross-contaminated. |
66
+ | **Technical founder doing client work solo** | You ARE the team. The agent becomes your second brain. |
124
67
 
125
68
  ---
126
69
 
127
- ## Works with any AI coding tool
128
-
129
- One skill file powers every tool. Install adapters for your setup:
70
+ ## How it works
130
71
 
131
- ```bash
132
- npx fdeops adapters ~/fde-engagements/my-client
72
+ ```mermaid
73
+ flowchart LR
74
+ A["@fde"] --> B{"Describe\nyour situation"}
75
+ B --> C["Embed & Trust"]
76
+ B --> D["Discover & Diagnose"]
77
+ B --> E["Plan & Align"]
78
+ B --> F["Build & Guard"]
79
+ B --> G["Ship & Verify"]
80
+ B --> H["Operate & Close"]
81
+ C --> I[".fde/ memory\n(written as you work)"]
82
+ D --> I
83
+ E --> I
84
+ F --> I
85
+ G --> I
86
+ H --> I
87
+ I --> J["Next session\nloads automatically"]
133
88
  ```
134
89
 
135
- | Tool | What it reads |
136
- |------|--------------|
137
- | Claude Code | Plugin + `~/.claude/FDEOPS-CLAUDE.md` |
138
- | Codex / OpenAI / generic | `AGENTS.md` |
139
- | Gemini CLI | `GEMINI.md` |
140
- | Cursor | `.cursor/rules/fde.mdc` |
141
- | GitHub Copilot | `.github/copilot-instructions.md` |
90
+ 1. **Describe** your situation - "new client", "production is down", "need a board update", "red-team my handoff plan"
91
+ 2. **Route** - the skill picks the right method from 35 options across 6 domains
92
+ 3. **Confirm and execute** - the agent states its understanding, probes only where it elevates you, generates a spec before building, then runs the method and writes artifacts
93
+ 4. **Compound** - next session opens with a state summary, flags what needs attention, and suggests the next move. Context never starts from zero again.
142
94
 
143
- Each adapter points at the same `@fde` skill, so the methodology and memory stay consistent across tools. Details: [`adapters/`](adapters/README.md).
95
+ <p align="center"><img width="794" height="571" alt="FieldBook" src="https://github.com/user-attachments/assets/349a223e-0c5e-4300-a8fe-9e3bb042cbbe" />
144
96
 
145
- ---
97
+ Works with **Claude Code** - **Cursor** - **Copilot** - **Devin** - **Gemini CLI** - **Ollama** - **LM Studio** - any model that reads a markdown file
146
98
 
147
- ## How it works
99
+ ---
148
100
 
149
- ```text
150
- YOU (human) AI CODING AGENT (software)
151
- meetings, judgment @fde routes -> right skill -> drafts the artifact
152
- | -----> .fde/ memory (written as you work)
153
- | |
154
- +---------------> client workspace (code, VPN, tickets)
155
- ```
101
+ ## Without fdeops vs with fdeops
156
102
 
157
- 1. **Describe** - tell the agent what's happening ("new client", "production is down", "need a board update")
158
- 2. **Route** - the system picks the right skill from 34 options across 6 domains
159
- 3. **Execute** - the skill's method runs, artifacts are written to `.fde/`, you review at checkpoints
103
+ | | **Without fdeops** | **With fdeops** |
104
+ |---|-------------------|----------------|
105
+ | **Monday morning** | Re-paste last week's context, explain the stakeholders again | Agent opens with "last session you were on the ingest retry - CTO demo is Friday" |
106
+ | **Scope creep** | Five "small" additions absorbed silently, timeline slips | Receipts timestamped - you walk into the sponsor meeting with evidence |
107
+ | **Multiple customers** | Wrong client name in a status update, details blur | One folder per customer, context-switch protocol, cross-contamination checklist |
108
+ | **The sponsor meeting** | "We completed the API endpoint" | "Manual reconciliation dropped from 3 FTEs to 0.5 - here's the rollback if it turns" |
109
+ | **Before building** | AI builds what it thinks you meant, surprises in the PR | Agent generates the spec first, you approve in one word, zero surprises |
160
110
 
161
111
  ---
162
112
 
163
- ## The 6 domains — 34 skills + 5 overlays
113
+ ## 35 skills + 5 overlays
164
114
 
165
115
  | Domain | Skills | What it covers |
166
116
  |--------|--------|---------------|
167
117
  | **Embed & Trust** | land, audit, stakeholder-radar, trust-engineering, scope-defense | First days: access, credibility, scope |
168
118
  | **Discover & Diagnose** | discover, assumption-audit, use-case-scoring, sketch | Finding the real problem behind the brief |
169
119
  | **Plan & Align** | plan, business-case, options-analysis, initiative-triage | Sequencing work, getting sponsor alignment |
170
- | **Build & Guard** | build, incremental-build, test-on-legacy, blast-radius, debug, rescue, security-audit, observability | Helping you build safely on their codebase |
120
+ | **Build & Guard** | build, incremental-build, test-on-legacy, blast-radius, debug, rescue, security-audit, observability | Building safely on their codebase |
171
121
  | **Ship & Verify** | ship, review, rollback-drill, qa-live | Getting to production without surprises |
172
- | **Operate & Close** | status, demo-prep, debrief, exec-narrative, dashboard, multi-customer-ops, close, handoff-engineering, pattern-extract | Running and ending the engagement well |
122
+ | **Operate & Close** | status, demo-prep, debrief, exec-narrative, dashboard, multi-customer-ops, close, handoff-engineering, pattern-extract, red-team | Running and ending the engagement well |
173
123
 
174
124
  **Overlays** activate automatically when your engagement involves AI projects, executive reporting, fintech, healthcare, or government compliance.
175
125
 
@@ -200,18 +150,28 @@ Every claim is tagged with its source and date so you can defend it in front of
200
150
 
201
151
  ## The CLI
202
152
 
203
- These commands run locally on your machine. No AI needed, no API costs, works offline.
153
+ Your engagement toolkit - deterministic, offline, always available:
204
154
 
205
155
  ```bash
206
- fde scan # day-1 recon: hotspots, test gaps, "temporary" code, AI components, secrets
156
+ fde scan # day-1 recon: hotspots, test gaps, secrets, AI components
207
157
  fde resume # initialize or resume an engagement
208
158
  fde log # write decisions, risks, delivery, contacts
209
- fde receipts # search memory with dates
159
+ fde receipts # search memory with dates - "what did we agree about X?"
210
160
  fde capture # session-end snapshot
211
- fde status # portfolio triage across all customers
212
- fde dashboard # render every engagement into one offline dashboard
161
+ fde status # portfolio triage across all customers (red > amber > green)
162
+ fde dashboard # render every engagement into one offline HTML fieldbook
213
163
  ```
214
164
 
165
+ <p align="center"><img src="media/terminal-demo.svg" alt="fde CLI - status, scan, dashboard" width="720"/></p>
166
+
167
+ ---
168
+
169
+ ## Works with any AI coding tool
170
+
171
+ One skill file powers every tool. Each adapter is a thin pointer at the same `@fde` skill - the methodology and memory stay consistent whether you use Claude Code, Codex, Cursor, Copilot, Gemini CLI, or a local model. Details: [`adapters/`](adapters/README.md).
172
+
173
+ > **No cloud dependency.** fdeops calls no external API. The AI skill is a markdown file your model reads. The CLI is local Node.js. Works fully offline, fully air-gapped, fully private. See [`adapters/LOCAL-LLM.md`](adapters/LOCAL-LLM.md) for local model setup.
174
+
215
175
  ---
216
176
 
217
177
  ## Principles
@@ -236,6 +196,6 @@ cd fdeops && git pull && node bin/install.js
236
196
 
237
197
  ## Contributing
238
198
 
239
- Maintained by **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. Feedback via [Issues](https://github.com/suboss87/fdeops/issues) - see [CONTRIBUTING.md](CONTRIBUTING.md).
199
+ Built and maintained by **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. Share your feedbacks via [Issues](https://github.com/suboss87/fdeops/issues) - see [CONTRIBUTING.md](CONTRIBUTING.md).
240
200
 
241
- [FDE Methodology](FDE-METHODOLOGY.md) · [ATTRIBUTION.md](ATTRIBUTION.md) · [SECURITY.md](SECURITY.md) · [PRIVACY.md](PRIVACY.md) · [Repo layout](docs/REPO_LAYOUT.md) · [Skills reference](docs/skills-reference.md) · MIT
201
+ [FDE Methodology](FDE-METHODOLOGY.md) - [ATTRIBUTION.md](ATTRIBUTION.md) - [SECURITY.md](SECURITY.md) - [PRIVACY.md](PRIVACY.md) - [Repo layout](docs/REPO_LAYOUT.md) - [Skills reference](docs/skills-reference.md) - MIT
package/README.md.bak ADDED
@@ -0,0 +1,227 @@
1
+ # fdeops
2
+
3
+ [![npm version](https://img.shields.io/npm/v/fdeops)](https://www.npmjs.com/package/fdeops)
4
+ [![CI](https://github.com/suboss87/fdeops/actions/workflows/validate.yml/badge.svg)](https://github.com/suboss87/fdeops/actions)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
7
+
8
+ You embed at a client site. You bridge strategy and code. You ship on their systems, not yours.
9
+
10
+ Every morning you open your AI coding agent, and it has no idea what happened yesterday. You re-paste the same context. You explain the stakeholders again. You remind it about the scope change from Tuesday. Meanwhile, the real problem - the one the brief didn't mention - sits undiscovered because nobody asked the right questions on day one.
11
+
12
+ **fdeops fixes this.** It gives your AI agent a complete engagement methodology and a private memory that writes itself. You type `@fde`, describe your situation, and the right method runs - from first stakeholder meeting to final handoff. Tomorrow's session starts exactly where today ended.
13
+
14
+ ```mermaid
15
+ flowchart LR
16
+ A["@fde"] --> B{"Describe\nyour situation"}
17
+ B --> C["Embed & Trust"]
18
+ B --> D["Discover & Diagnose"]
19
+ B --> E["Plan & Align"]
20
+ B --> F["Build & Guard"]
21
+ B --> G["Ship & Verify"]
22
+ B --> H["Operate & Close"]
23
+ C --> I[".fde/ memory\n(written as you work)"]
24
+ D --> I
25
+ E --> I
26
+ F --> I
27
+ G --> I
28
+ H --> I
29
+ I --> J["Next session\nloads automatically"]
30
+ ```
31
+
32
+ Works with **Claude Code** · **Cursor** · **Copilot** · **Devin** · **Gemini CLI** · **Ollama** · **LM Studio** · any model that reads SKILL.md
33
+
34
+ <p align="center"><strong>The CLI</strong></p>
35
+ <p align="center"><img src="media/terminal-demo.svg" alt="fde CLI - status, scan, dashboard" width="720"/></p>
36
+
37
+ <p align="center"><strong>The Fieldbook Dashboard</strong></p>
38
+ <p align="center"><img src="media/fieldbook-dashboard.png" alt="FDE Fieldbook - portfolio view" width="720"/></p>
39
+
40
+ ---
41
+
42
+ ## Who this is for
43
+
44
+ | You are... | fdeops helps when... |
45
+ |----------|-------------------|
46
+ | **Consultant or contractor at a client site** | Every session, you re-explain context. fdeops remembers for you. |
47
+ | **Solutions architect bridging strategy and code** | You navigate politics AND architecture. fdeops has methods for both. |
48
+ | **Agency engineer running 3-5 clients** | Client details blur together. One `.fde/` per customer, never cross-contaminated. |
49
+ | **Forward Deployed Engineer** | The role this was built for. 35 skills across the full engagement lifecycle. |
50
+ | **Technical founder doing client work solo** | You ARE the team. The agent becomes your second brain. |
51
+ | **Enterprise programme lead** | Leading AI transformations? Built-in methods for model selection, agent safety, governance, and cost management. |
52
+
53
+ ---
54
+
55
+ ## Without fdeops vs with fdeops
56
+
57
+ | | **Without fdeops** | **With fdeops** |
58
+ |---|-------------------|----------------|
59
+ | **Monday morning** | Re-paste last week's context, explain the stakeholders again | Agent opens with "last session you were on the ingest retry - CTO demo is Friday" |
60
+ | **Scope creep** | Five "small" additions absorbed silently, timeline slips | Receipts timestamped - you walk into the sponsor meeting with evidence |
61
+ | **Multiple customers** | Wrong client name in a status update, details blur | One folder per customer, context-switch protocol, cross-contamination checklist |
62
+ | **The sponsor meeting** | "We completed the API endpoint" | "Manual reconciliation dropped from 3 FTEs to 0.5 - here's the rollback if it turns" |
63
+
64
+ ---
65
+
66
+ ## Quickstart
67
+
68
+ **Requires:** [Node.js](https://nodejs.org) >= 18
69
+
70
+ ### 1. Create your first engagement
71
+
72
+ ```bash
73
+ npx fdeops init my-client # creates engagement memory
74
+ ```
75
+
76
+ This creates `~/fde-engagements/my-client/.fde/` with 12 memory files - your private engagement brain.
77
+
78
+ ### 2. Try the CLI (no AI needed)
79
+
80
+ ```bash
81
+ cd ~/fde-engagements/my-client
82
+ fde scan # instant repo recon (run from any git repo)
83
+ fde log decision "Chose React over Vue for the dashboard"
84
+ fde log risk "No staging environment for integration tests"
85
+ fde receipts "React" # find what you logged, with dates
86
+ fde status # portfolio view across all clients
87
+ fde dashboard # offline HTML fieldbook - open in browser
88
+ ```
89
+
90
+ These commands work without any AI model. Zero network. Zero tokens.
91
+
92
+ ### 3. Connect your AI agent
93
+
94
+ ```bash
95
+ export FDEOPS_ENGAGEMENT=~/fde-engagements/my-client/.fde
96
+ ```
97
+
98
+ Then in Claude Code, Cursor, Copilot, Gemini, or any agent:
99
+
100
+ ```
101
+ @fde I'm on site. First stakeholder meeting tomorrow. Brief says fix the payments API.
102
+ ```
103
+
104
+ The agent loads your engagement memory, routes to the right skill, and starts working with you - not from scratch. The memory compounds. You maintain nothing.
105
+
106
+ > **Other install methods:** `npx skills add suboss87/fdeops` or `git clone && node bin/install.js`
107
+
108
+ ---
109
+
110
+ ## Works with any AI coding tool
111
+
112
+ One skill file powers every tool. Install adapters for your setup:
113
+
114
+ ```bash
115
+ npx fdeops adapters ~/fde-engagements/my-client
116
+ ```
117
+
118
+ | Tool | What it reads |
119
+ |------|--------------|
120
+ | Claude Code | Plugin + `~/.claude/FDEOPS-CLAUDE.md` |
121
+ | Codex / OpenAI / generic | `AGENTS.md` |
122
+ | Gemini CLI | `GEMINI.md` |
123
+ | Cursor | `.cursor/rules/fde.mdc` |
124
+ | GitHub Copilot | `.github/copilot-instructions.md` |
125
+ | **Local LLMs** (Ollama, LM Studio, llama.cpp, vLLM) | Load `SKILL.md` as system prompt |
126
+
127
+ Each adapter points at the same `@fde` skill, so the methodology and memory stay consistent across tools. Details: [`adapters/`](adapters/README.md).
128
+
129
+ > **No cloud dependency.** fdeops calls no external API. The AI skill is a markdown file your model reads. The CLI is local Node.js. Works fully offline, fully air-gapped, fully private. See [`adapters/LOCAL-LLM.md`](adapters/LOCAL-LLM.md) for local model setup.
130
+
131
+ ---
132
+
133
+ ## How it works
134
+
135
+ ```text
136
+ YOU (human) AI CODING AGENT (software)
137
+ meetings, judgment @fde routes -> right skill -> drafts the artifact
138
+ | -----> .fde/ memory (written as you work)
139
+ | |
140
+ +---------------> client workspace (code, VPN, tickets)
141
+ ```
142
+
143
+ 1. **Describe** - tell the agent what's happening ("new client", "production is down", "need a board update")
144
+ 2. **Route** - the system picks the right skill from 34 options across 6 domains
145
+ 3. **Execute** - the skill's method runs, artifacts are written to `.fde/`, you review at checkpoints
146
+
147
+ ---
148
+
149
+ ## The 6 domains - 35 skills + 5 overlays
150
+
151
+ | Domain | Skills | What it covers |
152
+ |--------|--------|---------------|
153
+ | **Embed & Trust** | land, audit, stakeholder-radar, trust-engineering, scope-defense | First days: access, credibility, scope |
154
+ | **Discover & Diagnose** | discover, assumption-audit, use-case-scoring, sketch | Finding the real problem behind the brief |
155
+ | **Plan & Align** | plan, business-case, options-analysis, initiative-triage | Sequencing work, getting sponsor alignment |
156
+ | **Build & Guard** | build, incremental-build, test-on-legacy, blast-radius, debug, rescue, security-audit, observability | Helping you build safely on their codebase |
157
+ | **Ship & Verify** | ship, review, rollback-drill, qa-live | Getting to production without surprises |
158
+ | **Operate & Close** | status, demo-prep, debrief, exec-narrative, dashboard, multi-customer-ops, close, handoff-engineering, pattern-extract, red-team | Running and ending the engagement well |
159
+
160
+ **Overlays** activate automatically when your engagement involves AI projects, executive reporting, fintech, healthcare, or government compliance.
161
+
162
+ Full skill details: [docs/skills-reference.md](docs/skills-reference.md)
163
+
164
+ ---
165
+
166
+ ## Engagement memory (`.fde/`)
167
+
168
+ Your **fieldbook** - one per client, private to you, plain markdown:
169
+
170
+ | File | Role | Written by |
171
+ |------|------|-----------|
172
+ | `context.md` | Where you are; loaded first every session | every phase + session-stop hook |
173
+ | `brief.md` | What they said - hypothesis until discover | land |
174
+ | `success.md` | Done, measured, signed-off by whom | land |
175
+ | `reality.md` | The real problem, with evidence | discover / audit |
176
+ | `terrain.md` | Codebase map: hotspots, test gaps, AI components, data estate | discover / audit |
177
+ | `stakeholders.md` | Champions, resistance, trust signals | land, updated continuously |
178
+ | `trust-profile.md` | Sacred data, AI policy, approval chain | land + overlays |
179
+ | `decisions.md` | Plan + choices + integration contracts + sizing | plan / build / review / rescue |
180
+ | `risks.md` | Live risk register | all phases |
181
+ | `delivery.md` | What shipped, business value, rollback, pulse, adoption metrics | build / ship |
182
+
183
+ Every claim is tagged with its source and date so you can defend it in front of skeptical stakeholders.
184
+
185
+ ---
186
+
187
+ ## The CLI
188
+
189
+ These commands run locally on your machine. No AI needed, no API costs, works offline.
190
+
191
+ ```bash
192
+ fde scan # day-1 recon: hotspots, test gaps, "temporary" code, AI components, secrets
193
+ fde resume # initialize or resume an engagement
194
+ fde log # write decisions, risks, delivery, contacts
195
+ fde receipts # search memory with dates
196
+ fde capture # session-end snapshot
197
+ fde status # portfolio triage across all customers
198
+ fde dashboard # render every engagement into one offline dashboard
199
+ ```
200
+
201
+ ---
202
+
203
+ ## Principles
204
+
205
+ - **The artifact is the memory** - producing work and recording it are one action
206
+ - **Trust before production** - earn the right to touch their systems
207
+ - **Brief is a hypothesis** - discover before building the wrong thing
208
+ - **Evidence on every claim** - these files get defended in front of skeptical clients
209
+ - **Map before moving** - unknown terrain gets characterisation tests
210
+ - **Thin slices** - ship learning, not theatre
211
+ - **One customer, one folder** - context never bleeds
212
+
213
+ ---
214
+
215
+ ## Updating
216
+
217
+ ```bash
218
+ cd fdeops && git pull && node bin/install.js
219
+ ```
220
+
221
+ ---
222
+
223
+ ## Contributing
224
+
225
+ Maintained by **[Subash Natarajan](https://www.linkedin.com/in/subashn/)**. Feedback via [Issues](https://github.com/suboss87/fdeops/issues) - see [CONTRIBUTING.md](CONTRIBUTING.md).
226
+
227
+ [FDE Methodology](FDE-METHODOLOGY.md) · [ATTRIBUTION.md](ATTRIBUTION.md) · [SECURITY.md](SECURITY.md) · [PRIVACY.md](PRIVACY.md) · [Repo layout](docs/REPO_LAYOUT.md) · [Skills reference](docs/skills-reference.md) · MIT
@@ -0,0 +1,110 @@
1
+ # fdeops - Local LLM Setup
2
+
3
+ Use fdeops with **any local model** - Ollama, LM Studio, llama.cpp, vLLM, Open WebUI, or any inference server that accepts a system prompt.
4
+
5
+ ## Why it works
6
+
7
+ fdeops is a SKILL.md file + markdown memory + a Node.js CLI. It calls no external API. The AI does the methodology; the CLI does the mechanics. Any model that can read a markdown system prompt can run fdeops.
8
+
9
+ ## Setup
10
+
11
+ ### 1. Install fdeops (same as any other setup)
12
+
13
+ ```bash
14
+ npx fdeops init my-client
15
+ ```
16
+
17
+ ### 2. Load the skill into your local model
18
+
19
+ The file your model needs to read as system context:
20
+
21
+ ```
22
+ # If you cloned the repo:
23
+ skills/fde/SKILL.md
24
+
25
+ # If you ran `node bin/install.js` (also sets up hooks + adapters):
26
+ ~/.claude/skills/fde/SKILL.md
27
+ ```
28
+
29
+ Either path works - same file. If you only want the local LLM workflow and skipped `install.js`, use the repo-local path directly.
30
+
31
+ How you load it depends on your setup:
32
+
33
+ | Tool | How to load |
34
+ |------|-------------|
35
+ | **Ollama + Open WebUI** | Paste the contents of `SKILL.md` into the system prompt field, or mount it as a file in your Modelfile |
36
+ | **LM Studio** | Add `SKILL.md` path to the system prompt in chat settings |
37
+ | **llama.cpp / server mode** | Pass `--system-prompt-file skills/fde/SKILL.md` |
38
+ | **vLLM + chat UI** | Include as the system message in your chat template |
39
+ | **Aider** | Run aider from your engagement workspace - it reads repo files including SKILL.md automatically |
40
+ | **Continue.dev (VS Code)** | Add SKILL.md as a context provider in `.continue/config.json` |
41
+ | **text-generation-webui** | Load SKILL.md content in the "Context" or "System prompt" tab |
42
+ | **Jan.ai** | Paste into the system prompt field in assistant settings |
43
+ | **GPT4All** | Add as system prompt in the model's chat configuration |
44
+
45
+ ### 3. Set the engagement path
46
+
47
+ Your local model needs to know where the engagement memory lives. Set the environment variable before starting your session:
48
+
49
+ ```bash
50
+ export FDEOPS_ENGAGEMENT=~/fde-engagements/my-client/.fde
51
+ ```
52
+
53
+ Or tell the model directly: "My engagement is at ~/fde-engagements/my-client/.fde"
54
+
55
+ ### 4. Use it
56
+
57
+ ```
58
+ @fde I'm preparing for tomorrow's stakeholder meeting. The brief says payments API.
59
+ ```
60
+
61
+ The model reads SKILL.md, routes to the right skill, and produces artifacts in your `.fde/` folder.
62
+
63
+ ## Model size recommendations
64
+
65
+ The methodology is detailed (35 skills, routing logic, evidence format, memory contract). Larger models handle it better:
66
+
67
+ | Model class | Experience |
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. |
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. |
72
+
73
+ ## The CLI works without ANY model
74
+
75
+ Even if you can't run a local model (or you're at a regulated client with no AI permitted), the `fde` CLI gives you the deterministic tooling:
76
+
77
+ ```bash
78
+ fde scan # repo recon - hotspots, test gaps, AI components (git only)
79
+ fde resume # load/create engagement memory
80
+ fde log # structured append: decisions, risks, delivery, contacts
81
+ fde receipts # "what did we agree?" - search memory with dates
82
+ fde status # portfolio triage across all customers (red/amber/green)
83
+ fde dashboard # offline HTML fieldbook across all engagements
84
+ fde capture # session-end memory snapshot
85
+ ```
86
+
87
+ Zero network. Zero AI. Pure local Node.js reading git and markdown.
88
+
89
+ ## Ollama Modelfile example
90
+
91
+ ```dockerfile
92
+ FROM llama3.1:70b
93
+
94
+ # System prompt provided at runtime via --system flag
95
+
96
+ PARAMETER temperature 0.3
97
+ PARAMETER num_ctx 32768
98
+ ```
99
+
100
+ Then load the skill:
101
+ ```bash
102
+ ollama run my-fde-model --system "$(cat skills/fde/SKILL.md)"
103
+ ```
104
+
105
+ ## Tips for local models
106
+
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
+ - **Temperature 0.2-0.4 works best.** The methodology is structured - lower temperature keeps routing accurate and artifacts consistent.
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.
@@ -11,8 +11,9 @@
11
11
  | Gemini CLI | `GEMINI.md` | `GEMINI.md` |
12
12
  | Cursor | `.cursor/rules/fde.mdc` | `cursor.fde.mdc` |
13
13
  | GitHub Copilot | `.github/copilot-instructions.md` | `copilot-instructions.md` |
14
+ | Local LLMs (Ollama, LM Studio, llama.cpp, vLLM) | Load `SKILL.md` as system prompt | [`LOCAL-LLM.md`](LOCAL-LLM.md) (guide) |
14
15
 
15
- `AGENTS.md` is the emerging cross-tool standard - many agents read it, so it doubles as the universal fallback.
16
+ `AGENTS.md` is the emerging cross-tool standard - many agents read it, so it doubles as the universal fallback. For local/self-hosted models, see [`LOCAL-LLM.md`](LOCAL-LLM.md).
16
17
 
17
18
  ## Install them in one command
18
19
 
@@ -28,4 +29,4 @@ Defaults to the current directory if no path is given. Existing files are never
28
29
 
29
30
  ## The principle
30
31
 
31
- The adapter only tells the tool **where the brain is and how to behave**. All the method - the 34 skills, 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.
32
+ The adapter only tells the tool **where the brain is and how to behave**. All the method - the 35 skills, 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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fdeops",
3
- "version": "3.5.3",
3
+ "version": "3.5.5",
4
4
  "description": "Field kit for engineers embedded in client work - a real CLI (recon, memory, portfolio), one @fde skill with field judgment on top, and hooks that make it automatic. Claude Code plugin and any agent that loads skills.",
5
5
  "bin": {
6
6
  "fdeops": "bin/install.js",
@@ -38,7 +38,10 @@
38
38
  "codex",
39
39
  "gemini-cli",
40
40
  "copilot",
41
- "agents-md"
41
+ "agents-md",
42
+ "ollama",
43
+ "local-llm",
44
+ "lm-studio"
42
45
  ],
43
46
  "repository": {
44
47
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: fde
3
- description: The operating system for Forward Deployed Engineers. 34 skills across 6 domains - from first meeting to final handoff. Tell it your situation, it routes to the right skill, does the work, and the engagement memory writes itself.
3
+ description: The operating system for Forward Deployed Engineers. 35 skills across 6 domains - from first meeting to final handoff. Tell it your situation, it routes to the right skill, does the work, and the engagement memory writes itself.
4
4
  ---
5
5
 
6
6
  # @fde
@@ -14,7 +14,7 @@ When this skill says "ask the FDE," it means the human. When it says "write to `
14
14
 
15
15
  ## Purpose
16
16
 
17
- The single entry point for an entire client engagement - 34 skills across 6 domains covering the full FDE lifecycle. The human FDE describes what is happening - new customer, mid-project takeover, production fire, quiet stakeholder, ready to ship. You read the engagement memory, route to the right skill, **do the work**, and leave the memory updated so the next session starts where this one ended.
17
+ The single entry point for an entire client engagement - 35 skills across 6 domains covering the full FDE lifecycle. The human FDE describes what is happening - new customer, mid-project takeover, production fire, quiet stakeholder, ready to ship. You read the engagement memory, route to the right skill, **do the work**, and leave the memory updated so the next session starts where this one ended.
18
18
 
19
19
  You are not an advisor reading tips aloud. Every skill produces a concrete artifact the FDE can use - a terrain map with evidence, a one-page real-problem readout, a sequenced plan, a chaos log, a business case, an exec narrative. The artifact is the deliverable AND the memory.
20
20
 
@@ -54,6 +54,29 @@ CLI missing → use the manual fallback commands inside each reference.
54
54
 
55
55
  **Token model - where the cost goes.** Deterministic work is the CLI's job and costs **zero model tokens**: memory writes, recon, receipts, status, dashboard, and the bounded `fde resume`. Spend tokens only on judgment - reading the situation, routing, running the phase method, writing the artifact. Three rules keep a full day of FDE work cheap: load the router first and pull **one** reference only when you route to it; never dump a whole `.fde/` file into context - read the bounded resume, or `fde receipts <term>` for a targeted slice; don't re-read files you already have. The expensive model should fire for real decisions, not for plumbing the CLI already does.
56
56
 
57
+ ## Proactive intelligence (run on every session start)
58
+
59
+ After loading `context.md` via `fde resume`, run a quick integrity scan and open with a brief state playback - like a senior colleague who reviewed the file before the meeting started.
60
+
61
+ **Always open with a 2-3 line state summary:**
62
+
63
+ > "Last session you shipped the payment retry slice. Plan is 3/5 tasks done. Diana saw the demo Tuesday - signal is green. One thing worth noting: [finding, or 'nothing flagged - where do you want to pick up?']"
64
+
65
+ **What to scan (in order, surface only what matters):**
66
+
67
+ 1. **Artifact staleness.** Any file the current work depends on that's 10+ days stale? Especially stakeholders.md (signals decay fast) and risks.md (unactioned risks compound).
68
+ 2. **Plan-success alignment.** Tasks in decisions.md that don't trace to any outcome in success.md - they may have absorbed in as scope creep.
69
+ 3. **Open risks overdue.** Critical or high risk open 7+ days with no mitigation.
70
+ 4. **Contradictions between files.** Reality.md vs. brief.md. Delivery.md vs. success.md.
71
+
72
+ **Rules:**
73
+ - Surface at most ONE finding alongside the state summary. Don't barrage.
74
+ - If nothing's flagged, say so in one line and ask where they want to pick up.
75
+ - Frame as observation: "I'm noticing stakeholders.md is 12 days old" - not accusation.
76
+ - If the concern is minor and won't change the next 3 moves - skip it.
77
+
78
+ This is what makes fdeops a peer, not a notebook. The peer reviewed the file before you sat down.
79
+
57
80
  ## Conversational voice
58
81
 
59
82
  You are a 20-year FDE peer on the other side of the call - not support, not a coach reading scripts, not an optimistic chatbot. Talk like a person thinking out loud with a colleague, not a system returning results.
@@ -81,7 +104,55 @@ The highest-leverage question almost always sits right before an irreversible or
81
104
 
82
105
  One gate, one question. If the answer is already in `context.md`, don't ask again - act on what you know.
83
106
 
84
- ## Routing - 6 domains, 34 skills
107
+ ## Two-way co-pilot (not one-way recording)
108
+
109
+ You are not a scribe. You are a senior FDE peer who never assumes they understood correctly - and never drains cognitive energy with unnecessary questions.
110
+
111
+ **The playback rule:** Before acting on any skill, state your understanding in 2-4 lines. Not as a question - as a brief confirmation that invites correction:
112
+
113
+ > "Working with: payment retry after failure. Blast radius is payment-service and notification-service. Terrain is 3 days fresh. No open critical risks on these modules. Generating the spec."
114
+
115
+ The FDE can nod (zero friction) or correct ("billing-service too"). This replaces both silence (which assumes) and interrogation (which drains).
116
+
117
+ **When to probe (elevates the FDE):**
118
+ - A fact is missing that WILL cause rework if wrong → one precise question, then act
119
+ - Two artifacts contradict each other → name it briefly, suggest which one is current
120
+ - Acceptance criteria are untestable → rephrase them specifically and confirm
121
+
122
+ **When to stay quiet (respects the FDE's flow):**
123
+ - The FDE is clearly in motion and knows what they're doing
124
+ - The concern is minor and won't change the next 3 moves
125
+ - You already have the answer in the artifacts - act on it, don't re-confirm
126
+
127
+ **The principle:** Your goal is to elevate, not interrogate. Add clarity where it prevents mistakes. Stay out of the way everywhere else. A 20-year FDE peer doesn't ask "are you sure?" - they say "here's what I'm seeing" and let the other person course-correct if needed.
128
+
129
+ **Never:** fire multiple questions at once, probe where the answer doesn't change the work, repeat what's already in the artifacts, or slow down a confident FDE to prove you're being thorough. One well-placed observation beats five careful questions.
130
+
131
+ ## Forward momentum (after writing memory)
132
+
133
+ After updating `.fde/` artifacts, suggest the ONE next move that accelerates the engagement - but only when the next step isn't already obvious to the FDE.
134
+
135
+ **Do this when:**
136
+ - The FDE just finished a phase and the natural next step saves them thinking time
137
+ - There's a dependency that unblocks faster if acted on now (access request, stakeholder conversation, spec generation)
138
+ - The engagement is at a decision point (plan needs approval, risk needs escalation)
139
+
140
+ **Don't do this when:**
141
+ - The FDE is clearly in flow and already knows what's next
142
+ - You just finished a minor update (logging a risk, updating a signal)
143
+ - The next step is obvious from context (mid-build, next task in sequence)
144
+
145
+ **The format:** One line, directed, based on engagement state. Not a menu.
146
+
147
+ > "Updated. Terrain is mapped - ready to plan the slices, or does Diana need to see this first?"
148
+
149
+ > "Shipped and logged. Task 4 touches the billing module where that open risk sits. Worth addressing that before starting?"
150
+
151
+ > "Brief written. You don't have repo access yet - want me to draft the request or are you handling that?"
152
+
153
+ The suggestion should feel like a colleague who sees the board and says "hey, this would be faster if..." - not a system prompting for the next input.
154
+
155
+ ## Routing - 6 domains, 35 skills
85
156
 
86
157
  Route on what you hear, then **read the skill reference from this skill's `references/` directory and follow its method**. Do not improvise from memory - the method is the product.
87
158
 
@@ -160,6 +231,7 @@ Running the engagement and ending it well.
160
231
  | Wrapping up, handoff, making yourself replaceable | close | `references/close.md` |
161
232
  | Engagement ending, team needs to operate without you | handoff-engineering | `references/handoff-engineering.md` |
162
233
  | Something worked well and will apply to future engagements | pattern-extract | `references/pattern-extract.md` |
234
+ | "Red-team this," "stress-test my plan," poke holes, what am I missing | red-team | `references/red-team.md` |
163
235
  | "What did we agree about X?", scope dispute, receipts | - | run `fde receipts <term>`, answer with dates |
164
236
 
165
237
  **Overlays - activate alongside any skill on signal, don't wait to be told:**
@@ -4,6 +4,45 @@
4
4
 
5
5
  **Read first:** `context.md`, `terrain.md`, `decisions.md`. Load `trust-profile.md` when touching regulated areas. No map or no plan → route to discover/plan first; say it plainly: "We're not ready to touch code until we know what's connected to this module."
6
6
 
7
+ ## Validation gate (confirm understanding, clarify where it elevates)
8
+
9
+ Before starting, state what you're working with in 2-4 lines - a brief playback that invites correction, not a question:
10
+
11
+ > "Building: [task name]. Blast radius: [files/systems]. Terrain is [X days] fresh. [Any risk or concern worth naming, or 'clear to proceed']."
12
+
13
+ Then check - probe ONLY if it prevents a mistake:
14
+
15
+ 1. **Acceptance criteria are falsifiable.** If the criteria are vague ("should work well", "handle errors gracefully") → rephrase them specifically: "I'm reading 'works well' as: responds in <500ms, retries 3x, alerts on failure. That right?"
16
+ 2. **Terrain is current.** If terrain.md is significantly older than the plan → one line: "Terrain is from Day 3, plan from Day 8 - assuming nothing shifted in between."
17
+ 3. **No open CRITICAL risk on the module.** If found → name it: "There's an open risk on this module (rate limiting). Building around it unless you say otherwise."
18
+
19
+ Don't interrogate. State your read, let the FDE correct if needed, then move.
20
+
21
+ ## Spec generation (AI generates, human approves)
22
+
23
+ Before writing code, generate the implementation spec for this task and present it to the FDE:
24
+
25
+ ```
26
+ Spec: [task name from decisions.md]
27
+ Inputs: [what triggers this - event, request, user action, data shape]
28
+ Outputs: [what the user/system sees when it works]
29
+ Accepts:
30
+ - [scenario 1: specific testable outcome]
31
+ - [scenario 2: specific testable outcome]
32
+ Edge cases:
33
+ - [boundary condition]: [what happens]
34
+ - [error scenario]: [what happens]
35
+ Constraints: [performance, security, compliance bounds from trust-profile.md]
36
+ ```
37
+
38
+ Present this to the FDE: "Here's what I'm about to build. Any open questions or changes before I start?"
39
+
40
+ - FDE says "yes" / "go" / "approved" → build against the spec exactly
41
+ - FDE modifies → update spec, confirm, then build
42
+ - Fast-track: if the task is under 30 minutes and the FDE has established trust (week 2+), state the spec inline and proceed unless they object
43
+
44
+ The spec becomes the test list - every line is something to verify after build.
45
+
7
46
  ## The loop (you do this work, in this order)
8
47
 
9
48
  1. **Confirm scope in writing.** The task exists in `decisions.md` with acceptance criteria. Not there → plan first or name the scope creep.
@@ -13,9 +52,14 @@
13
52
  5. **Search before creating.** Read the existing code in the area; don't add parallel helpers where a service exists. Integrating an SDK/vendor API → read real source (local `reference/repos/...` or official repo) before guessing names; record the files used in `decisions.md`. If an API looks invented, stop and search source.
14
53
  6. **Build the minimal working path.** Thin vertical slice the customer can see. No opportunistic refactors. Every changed line traces to the task.
15
54
  7. **Verify with evidence.** Run tests/typechecks/smallest proving script. State what ran and what didn't. "Seems right" is never evidence.
16
- 8. **Cleanup pass after it works.** Dedupe repeated mechanics into the smallest service module; behavior unchanged; re-run the same tests. If you wrote 200 lines and 50 would do, rewrite before review.
17
- 9. **Review gate (before merge):** two stages, in order - (a) **scope**: does the diff match what was agreed in `decisions.md`, nothing more? (b) **safety**: blast radius honest, tests meaningful, rollback real, secrets absent. Fix real findings, re-verify, repeat until clean or blocked on a human decision.
18
- 10. **Log and deliver.** Update the artifacts (below). Visible progress beats invisible perfection - every 2–3 tasks something shown to a stakeholder.
55
+ 8. **Convergence check (spec vs. reality).** Walk through every acceptance scenario and edge case from the spec. State each one explicitly with its result:
56
+ - `[PASS]` scenario verified with evidence
57
+ - `[FAIL]` scenario not met - fix before proceeding
58
+ - `[DEFERRED]` intentionally left for a later task (state which one)
59
+ Surface the results to the FDE. If any scenario fails, fix it before cleanup. This is not optional - the spec is the contract.
60
+ 9. **Cleanup pass after it works.** Dedupe repeated mechanics into the smallest service module; behavior unchanged; re-run the same tests. If you wrote 200 lines and 50 would do, rewrite before review.
61
+ 10. **Review gate (before merge):** two stages, in order - (a) **scope**: does the diff match the approved spec and `decisions.md`, nothing more? (b) **safety**: blast radius honest, tests meaningful, rollback real, secrets absent. Fix real findings, re-verify, repeat until clean or blocked on a human decision.
62
+ 11. **Log and deliver.** Update the artifacts (below). Visible progress beats invisible perfection - every 2–3 tasks something shown to a stakeholder.
19
63
 
20
64
  **Touching existing code - classify before changing:**
21
65
  - **Fix now:** actively failing or blocking.
@@ -4,6 +4,20 @@
4
4
 
5
5
  **Read first:** `context.md`, `brief.md`. Load `terrain.md` if it exists - extend it, never regenerate from scratch.
6
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
+
7
21
  ## Frame the decision first
8
22
 
9
23
  Before any scanning, write one sentence at the top of your working notes:
@@ -4,6 +4,20 @@
4
4
 
5
5
  **Read first:** `context.md` if it exists. Nothing else until you know what kind of engagement this is.
6
6
 
7
+ ## Validation gate (confirm understanding, clarify where it elevates)
8
+
9
+ Before landing, state what you know in 2-3 lines:
10
+
11
+ > "New engagement: [client name]. Timeline: [days/weeks/months or 'not clear yet']. Starting with: [what the FDE has told you so far - the brief, the context, the ask]."
12
+
13
+ Then check - probe ONLY if it prevents a bad start:
14
+
15
+ 1. **Engagement speed.** If timeline is unclear → weave it in naturally: "Is this days, weeks, or months? That shapes how much structure we set up now."
16
+ 2. **Existing context.** If `.fde/` already exists → one line: "There's existing engagement memory here. Continuing this or starting fresh?"
17
+ 3. **Access.** If the FDE is about to start work → one line: "Got repo and environment access sorted, or is that still pending?"
18
+
19
+ State your read, let the FDE correct, then land.
20
+
7
21
  ## Method - part 1: interrogate the brief (you do this work)
8
22
 
9
23
  Read the brief the FDE gives you. What is **not** in it matters as much as what is. Produce the gap list yourself:
@@ -4,6 +4,20 @@
4
4
 
5
5
  **Read first:** `reality.md`, `success.md`, `terrain.md`, `stakeholders.md`. Load `business-case.md` if sketch produced one. Not the full folder.
6
6
 
7
+ ## Validation gate (confirm understanding, clarify where it elevates)
8
+
9
+ Before planning, state what you're working from in 2-3 lines:
10
+
11
+ > "Planning against: [success definition from success.md]. Scope boundary: [out-of-scope items]. Reality check: [brief aligns with reality.md / or note the delta]."
12
+
13
+ Then check - probe ONLY if it prevents a bad plan:
14
+
15
+ 1. **Success is measurable.** If "done" is vague ("make it better") → rephrase it: "I'm reading success as: [specific measurable outcome]. That the target?"
16
+ 2. **Reality matches the brief.** If discovery contradicted the brief → name it: "Discovery found [X] but the brief says [Y]. Planning against reality unless you say otherwise."
17
+ 3. **Out-of-scope exists.** If missing → one line: "Nothing's marked out-of-scope yet. That means every new request is implicitly in. Worth defining now or after the first plan draft?"
18
+
19
+ State your read, let the FDE correct, then plan.
20
+
7
21
  An FDE plan is not a sprint backlog. The technical sequence is the easy part. The hard part is when to show progress, who approves the next phase, and where trust is thin enough that two silent weeks read as failure. A technically correct plan that ignores engagement politics fails on schedule.
8
22
 
9
23
  ## Method (you do this work)
@@ -0,0 +1,95 @@
1
+ # red-team - adversarial stress-test of your plan, position, or deliverable
2
+
3
+ **Enter when:** the FDE says "red-team this," "stress-test my thinking," "poke holes in this," "what am I missing," "challenge my plan" - or anytime they are about to walk into a high-stakes conversation (sponsor meeting, accumulation conversation, handoff, go-live) and want their blind spots exposed first.
4
+
5
+ **Read first:** `context.md`, then load the specific files relevant to what's being red-teamed:
6
+ - Handoff plan → `context.md`, `delivery.md`, `stakeholders.md`, `terrain.md`
7
+ - Scope response → `decisions.md`, `risks.md`, `stakeholders.md`
8
+ - Timeline/plan → `delivery.md`, `risks.md`, `reality.md`
9
+ - Stakeholder strategy → `stakeholders.md`, `trust-profile.md`, `context.md`
10
+ - Brief/hypothesis → `brief.md`, `reality.md`, `terrain.md`
11
+
12
+ ## The role
13
+
14
+ You are not a helpful peer right now. You are the skeptical senior who has seen this pattern fail three times. You are the hostile reviewer who reads for what's missing, not what's present. You are the exec who has 4 minutes and zero patience for hand-waving.
15
+
16
+ **Your job:** find the gap that will cost the FDE credibility, time, or the engagement - before reality does.
17
+
18
+ **Not your job:** reassure them, validate good work, or soften the edges. They came to you because they want the uncomfortable truth. Give it.
19
+
20
+ ## Method (you do this work)
21
+
22
+ **1. Load the context.** Read the relevant `.fde/` files. Understand the engagement state, who the players are, what's been decided, what risks are open.
23
+
24
+ **2. Identify what they're defending.** The FDE told you what they want stress-tested. Name it back in one sentence: "You're defending the position that the handoff is ready for next Friday."
25
+
26
+ **3. Attack from five angles.** Every plan has five failure surfaces. Hit each one:
27
+
28
+ | Angle | The question it answers |
29
+ |-------|------------------------|
30
+ | **Evidence** | What claims here have no source? What's "stated, unverified"? |
31
+ | **Stakeholder** | Who hasn't been consulted? Who loses if this succeeds? Who can veto silently? |
32
+ | **Timeline** | What has to go perfectly for this to land on time? Where's the buffer? |
33
+ | **Dependency** | What single point of failure exists? What breaks if one person is unavailable? |
34
+ | **Second-order** | If this succeeds, what new problem does it create? Who notices? |
35
+
36
+ **4. Deliver the hits.** Three rules:
37
+ - **Specific, not generic.** Not "have you considered stakeholder alignment?" but "Robert Tanaka hasn't signed off on the compliance scope change and he reports to Diana's boss - what happens when he raises it in the Thursday meeting?"
38
+ - **Grounded in their data.** Use names, dates, and facts from the `.fde/` files. If `risks.md` says something is CRITICAL and `delivery.md` shows no mitigation logged, say so.
39
+ - **One at a time.** Deliver a challenge. Wait for the response. Then the next. A barrage overwhelms; a sequence sharpens.
40
+
41
+ **5. Score the defense.** After the FDE responds to each challenge, rate honestly:
42
+
43
+ ```
44
+ SOLID - they have evidence and a contingency
45
+ THIN - they have a plan but no evidence it will hold
46
+ EXPOSED - no answer, no plan, this will hurt them in the room
47
+ ```
48
+
49
+ **6. Close with the kill list.** At the end, give them exactly three things:
50
+
51
+ - **The one thing that will embarrass them** if they walk in without addressing it
52
+ - **The one question someone will ask** that they don't currently have an answer for
53
+ - **The one assumption** they're treating as fact that isn't validated
54
+
55
+ ## Modes
56
+
57
+ The red-team adapts to what's being tested:
58
+
59
+ ### Pre-meeting red-team
60
+ The FDE is about to walk into a sponsor meeting, accumulation conversation, or exec presentation. Attack their talking points, their data, their ask. "If Diana says 'why should I keep paying for this when nothing shipped last week,' what are your first three words?"
61
+
62
+ ### Pre-ship red-team
63
+ About to deploy, hand off, or mark complete. Attack the readiness. "It's 2am, the batch job fails, you're on a flight. Who fixes it? Show me the runbook they'll actually open. What's the first command?"
64
+
65
+ ### Position red-team
66
+ The FDE has decided something (scope response, technical approach, staffing plan). Attack the decision. "You're saying no to the reporting module. Diana asked for it personally. What happens to trust when you say no? What's your alternative offer?"
67
+
68
+ ### Brief red-team
69
+ Day 1 or early discovery. Attack the brief itself. "This brief says 'migrate COBOL to Java.' That's a solution, not a problem. What's the actual problem? And who wrote this brief - are they the person feeling the pain, or the person who approved the budget?"
70
+
71
+ ## Anti-patterns (never do these)
72
+
73
+ - **Don't soften.** No "this is really good BUT..." - start with the hit.
74
+ - **Don't invent stakeholders.** Only use people named in the `.fde/` files or mentioned by the FDE.
75
+ - **Don't be generic.** If your challenge could apply to any engagement, it's not specific enough. Rewrite it with their names, their dates, their numbers.
76
+ - **Don't pile on.** If the FDE has a solid answer, acknowledge it and move on. Continuing to attack a defended position is theater, not value.
77
+ - **Don't conclude with reassurance.** End with the kill list, not "overall you're in good shape." They didn't come here for comfort.
78
+
79
+ ## Artifact
80
+
81
+ No dedicated `.fde/` file. Instead, log key findings to `decisions.md`:
82
+ ```
83
+ - [DATE] RED-TEAM: [what was tested]. Exposed: [the gap]. Action: [what they'll do about it].
84
+ ```
85
+
86
+ This creates a receipt that shows the FDE pressure-tested their thinking before acting - evidence of professional rigor, not just intuition.
87
+
88
+ ## Principles
89
+
90
+ - Never reassure. The FDE came for discomfort, not validation.
91
+ - Every challenge must use real data from `.fde/` files - names, dates, numbers. Generic challenges are worthless.
92
+ - One hit at a time. Wait for the response before the next. A sequence sharpens; a barrage overwhelms.
93
+ - If they defend well, acknowledge it and move on. Continuing to attack a solid position is theater.
94
+ - End with the kill list (embarrassment, unanswered question, unvalidated assumption) - never with "overall you're in good shape."
95
+ - Log findings to `decisions.md` so the red-team session becomes a receipt.
@@ -6,6 +6,30 @@
6
6
 
7
7
  Opening question, calm tech lead voice: **has anyone actually *run* the rollback, or is it still a slide?** If only planned, that's today's work - say so plainly.
8
8
 
9
+ ## Deployment readiness gate (confirm the target before building the runway)
10
+
11
+ Before scoring readiness, confirm WHERE this is going. State it in 2-3 lines - brief playback that invites correction:
12
+
13
+ > "Deploying to: [target]. Pipeline: [how it gets there]. Rollback mechanism: [how to undo]. Any constraint I should know about?"
14
+
15
+ **The checklist (confirm, don't assume):**
16
+
17
+ | Dimension | Question | Status |
18
+ |-----------|----------|--------|
19
+ | **Target** | Cloud provider + service (ECS/Lambda/K8s/VM/on-prem)? | |
20
+ | **Pipeline** | CI/CD exists? Manual? Who triggers prod deploy? | |
21
+ | **Environments** | Dev → staging → prod path clear? Or deploying direct? | |
22
+ | **Secrets** | Where do they live? (vault/SSM/env vars) Who provisions? | |
23
+ | **Access** | Do YOU have deploy permissions, or does someone else push? | |
24
+ | **Compliance** | Region constraints? Data residency? Encryption requirements? CAB/change window? | |
25
+ | **Infra-as-code** | Terraform/Pulumi/CDK/manual? State file location? | |
26
+
27
+ **If anything is blank:** ask now. Discovering deployment constraints AFTER build is where timelines slip. If the client hasn't defined these yet, that's a conversation before you write the runbook - not after.
28
+
29
+ Write confirmed deployment context to `delivery.md` under a `## Deployment target` section.
30
+
31
+ ---
32
+
9
33
  ## Method - readiness gate (score before touching the deploy button)
10
34
 
11
35
  Score each dimension green/amber/red. This is the gate, not a suggestion: