fdeops 3.9.5 → 3.9.6
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 +45 -41
- package/adapters/cursor.fde.mdc +3 -2
- package/bin/check.js +15 -2
- package/hooks/session-start +1 -1
- package/package.json +1 -1
- package/skills/fde/SKILL.md +26 -14
- package/skills/fde/references/debrief.md +35 -20
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://nodejs.org)
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
One `@fde` skill over a local client notebook (the **fieldbook** under `.fde/`) - one folder per client. The **second brain for Forward Deployed Engineers** - engineers embedded at a client, from first meeting to final handoff. Works the same for consultants, agency developers, solutions architects, and fractional CTOs.
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
land discover plan build ship close
|
|
@@ -17,25 +17,23 @@ CLI + one `@fde` skill + hooks over a local `.fde/` fieldbook - one folder per c
|
|
|
17
17
|
written as a side effect of the work
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
**
|
|
21
|
-
|
|
22
|
-
Describe your situation - `@fde` routes to the right method and writes the matching `.fde/` artifact. Phase methods (land → close) live in the skill; the CLI owns scan, memory, and receipts. You still confirm judgment - the fieldbook does not maintain itself without you.
|
|
20
|
+
**You talk in plain language with `@fde`.** The agent (and an optional CLI) handles the boring memory work. You still confirm anything that goes into the record.
|
|
23
21
|
|
|
24
22
|
---
|
|
25
23
|
|
|
26
24
|
## The week
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
Day to day you only need `@fde` and normal English. No command cheat sheet.
|
|
29
27
|
|
|
30
|
-
| When | What you
|
|
31
|
-
|
|
32
|
-
| **
|
|
33
|
-
| **After a meeting** | `
|
|
34
|
-
| **Before a
|
|
35
|
-
| **
|
|
36
|
-
| **
|
|
28
|
+
| When | What you say | What you get |
|
|
29
|
+
|------|--------------|--------------|
|
|
30
|
+
| **Start of week** | Open your AI coding agent (nothing to paste) | It already knows where you left off - trust, phase, what's next |
|
|
31
|
+
| **After a meeting** | `@fde` debrief these notes *(paste or attach them)* | Proposed updates to the record - you review, then confirm |
|
|
32
|
+
| **Before a stakeholder meeting** | `@fde` prep me for tomorrow's meeting with the sponsor | A short brief from what you already logged - not a blank chat |
|
|
33
|
+
| **Someone disputes scope** | `@fde` when did we agree to drop that feature? | Dated answers from the record (or a clear gap if nothing was logged) |
|
|
34
|
+
| **End of week** | `@fde` draft the sponsor update from the record | Status grounded in what actually happened |
|
|
37
35
|
|
|
38
|
-
Same
|
|
36
|
+
Same client folder every time (`~/fde-engagements/<client>/.fde/`). Your AI coding agent reads it on every session. Optional terminal tools live under [Under the hood](#under-the-hood-optional).
|
|
39
37
|
|
|
40
38
|
---
|
|
41
39
|
|
|
@@ -52,25 +50,25 @@ npx skills add suboss87/fdeops # Cursor, Codex, and skills-compatible a
|
|
|
52
50
|
/plugin install fdeops@fdeops
|
|
53
51
|
```
|
|
54
52
|
|
|
55
|
-
**2. Bind** -
|
|
53
|
+
**2. Bind once** - inside the client workspace (setup only; not a daily habit):
|
|
56
54
|
|
|
57
55
|
```bash
|
|
58
56
|
npx fdeops resume --init garvey # creates ~/fde-engagements/garvey engagement + binds workspace
|
|
59
57
|
```
|
|
60
58
|
|
|
61
|
-
**
|
|
59
|
+
**Check it worked:**
|
|
62
60
|
|
|
63
61
|
```bash
|
|
64
|
-
npx fdeops resume #
|
|
62
|
+
npx fdeops resume # prints a short "where we are" for this client
|
|
65
63
|
```
|
|
66
64
|
|
|
67
|
-
**3. Work**
|
|
65
|
+
**3. Work** - talk normally:
|
|
68
66
|
|
|
69
67
|
```text
|
|
70
68
|
@fde I just got the brief. New client, payments platform, they want it live before their Q3 audit.
|
|
71
69
|
```
|
|
72
70
|
|
|
73
|
-
`@fde` routes and
|
|
71
|
+
`@fde` routes and updates the fieldbook - you confirm judgment. Full workflow: [docs/USAGE.md](docs/USAGE.md).
|
|
74
72
|
|
|
75
73
|
<details>
|
|
76
74
|
<summary><strong>Other install paths</strong> · scan · env</summary>
|
|
@@ -88,14 +86,11 @@ npx fdeops resume # should print TRIAGE (trust, phase, next) for
|
|
|
88
86
|
|
|
89
87
|
## How it works
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **
|
|
94
|
-
- **Session end** - a hook captures what happened back into the fieldbook
|
|
95
|
-
- **`@fde`** - routes your situation to a field method; you confirm before memory sticks
|
|
96
|
-
- **CLI** - deterministic, offline (`scan`, `debrief`, `prep`, `receipts`, `status`)
|
|
89
|
+
- **You** describe the situation with `@fde` (or plain language once the skill is loaded)
|
|
90
|
+
- **Session start / end** - small hooks load where you left off and capture what changed (no re-paste)
|
|
91
|
+
- **Under the hood** - a local CLI does memory writes, search, and status with no model tokens; you do not need to learn it for daily use
|
|
97
92
|
|
|
98
|
-
fdeops complements repo memory: CLAUDE.md holds how the *code* works; the fieldbook holds how the *engagement* works.
|
|
93
|
+
fdeops complements repo memory: CLAUDE.md holds how the *code* works; the fieldbook holds how the *client engagement* works.
|
|
99
94
|
|
|
100
95
|
Works with **Claude Code** · **Cursor** · **Copilot** · **Gemini CLI** · **Ollama** · **LM Studio** - any model that reads markdown.
|
|
101
96
|
|
|
@@ -134,41 +129,50 @@ Every entry is dated and sourced, so you can defend it in front of skeptical sta
|
|
|
134
129
|
|
|
135
130
|
---
|
|
136
131
|
|
|
137
|
-
##
|
|
132
|
+
## Under the hood (optional)
|
|
133
|
+
|
|
134
|
+
**You do not need to learn these for daily work.** Chat with `@fde`; the agent runs the local tools. The list below is for setup, air-gap, or if you prefer the terminal.
|
|
138
135
|
|
|
139
|
-
|
|
136
|
+
**Humans only need (once / occasional):**
|
|
140
137
|
|
|
141
138
|
```bash
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
fde receipts <term> # dated search (gap ≠ proof of absence)
|
|
147
|
-
fde status # sponsor-ready triage (--all for portfolio)
|
|
148
|
-
fde scan # day-1 recon + ASK ON DAY 1 (works via npx)
|
|
139
|
+
npx fdeops resume --init <client> # one-time: create + bind this workspace
|
|
140
|
+
npx fdeops resume # check "where we are"
|
|
141
|
+
npx fdeops scan # try day-1 recon with no install
|
|
142
|
+
npx fdeops dashboard # optional local HTML view of the fieldbook
|
|
149
143
|
```
|
|
150
144
|
|
|
145
|
+
**What you say → what the agent runs** (you never have to type the right-hand side):
|
|
146
|
+
|
|
147
|
+
| You say | Agent runs |
|
|
148
|
+
|---------|------------|
|
|
149
|
+
| Debrief these notes | `fde debrief --smart …` → you confirm → `--apply` |
|
|
150
|
+
| Prep me for the sponsor meeting | `fde prep "…"` |
|
|
151
|
+
| When did we agree to drop that? | `fde receipts …` |
|
|
152
|
+
| Draft the sponsor update | `fde status` (+ judgment in chat) |
|
|
153
|
+
| Log that the sponsor went quiet | `fde log contact "…" --signal amber` |
|
|
154
|
+
|
|
151
155
|
<details>
|
|
152
|
-
<summary><strong>
|
|
156
|
+
<summary><strong>Full command list</strong> (power users / scripts)</summary>
|
|
153
157
|
|
|
154
158
|
```bash
|
|
155
|
-
fde triage #
|
|
156
|
-
fde debrief notes.md #
|
|
157
|
-
fde doctor #
|
|
159
|
+
fde triage # short status (also injected by session hooks)
|
|
160
|
+
fde debrief notes.md # if notes already use decision: / risk: / … prefixes
|
|
161
|
+
fde doctor # check the fieldbook for gaps
|
|
158
162
|
fde log decision "…"
|
|
159
163
|
fde log contact "…" --signal amber
|
|
160
|
-
fde dashboard
|
|
164
|
+
fde dashboard --all # every client, sorted by trust
|
|
161
165
|
```
|
|
162
166
|
|
|
163
167
|
Optional: `export FDEOPS_ENGAGEMENTS_ROOT=~/path/to/engagements` to isolate from `~/fde-engagements`.
|
|
164
168
|
|
|
165
|
-
Each `.fde/` is a local git repo (no remote, no telemetry)
|
|
169
|
+
Each `.fde/` is a local git repo (no remote, no telemetry). More detail: [docs/USAGE.md](docs/USAGE.md).
|
|
166
170
|
|
|
167
171
|
</details>
|
|
168
172
|
|
|
169
173
|
<p align="center"><img src="media/terminal-demo.svg" alt="fde CLI - status, scan, dashboard" width="720"/></p>
|
|
170
174
|
|
|
171
|
-
`fde dashboard`
|
|
175
|
+
Optional FieldBook view (`fde dashboard`) - current engagement by default:
|
|
172
176
|
|
|
173
177
|
<p align="center"><img width="1336" height="624" alt="fde dashboard FieldBook" src="https://github.com/user-attachments/assets/5683614c-7730-4a3a-860d-185053a377eb" /></p>
|
|
174
178
|
|
package/adapters/cursor.fde.mdc
CHANGED
|
@@ -9,10 +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 (new customer,
|
|
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.
|
|
13
13
|
|
|
14
14
|
- Skill (single source of truth): `~/.claude/skills/fde/SKILL.md`
|
|
15
15
|
- **Never ask the FDE to pick a skill.** Read the situation, route silently, do the work.
|
|
16
|
+
- **Never ask the FDE to type `fde …` commands.** You run the local CLI; they confirm judgment in chat.
|
|
16
17
|
|
|
17
18
|
## Engagement memory
|
|
18
19
|
|
|
@@ -20,7 +21,7 @@ Read and write engagement files under the workspace's bound engagement: run `fde
|
|
|
20
21
|
|
|
21
22
|
**On every session entry (before other work):** run `fde triage` (fallback `node ~/.claude/fdeops/fde.js triage`, then `fde resume`). Lead with that TRIAGE block — trust, phase, open risks, next action, record owner/hash. Do not invent stakeholders or status.
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
You run the CLI for deterministic work - `fde scan | log | debrief | prep | doctor | receipts | status | dashboard` - instead of improvising shell or handing commands to the human.
|
|
24
25
|
|
|
25
26
|
### Meeting → memory loop
|
|
26
27
|
- Messy notes: `fde debrief --smart notes.md` → review `.debrief-propose` → `fde debrief --apply`
|
package/bin/check.js
CHANGED
|
@@ -214,8 +214,21 @@ if (/\$\(cat\s+"\$BOOTSTRAP"\)|cat\s+"\$BOOTSTRAP"|cat\s+[^\n]*SKILL\.md/.test(h
|
|
|
214
214
|
if (hookCode.includes('BOOTSTRAP=')) {
|
|
215
215
|
fail('session-start must not resolve BOOTSTRAP skill path for inject')
|
|
216
216
|
}
|
|
217
|
-
if (
|
|
218
|
-
fail('session-start must include a lean @fde pointer (not full skill)')
|
|
217
|
+
if (!/plain language with @fde|invoke @fde/.test(hook)) {
|
|
218
|
+
fail('session-start must include a lean @fde / plain-language pointer (not full skill)')
|
|
219
|
+
}
|
|
220
|
+
const skillBody = read('skills/fde/SKILL.md')
|
|
221
|
+
if (!skillBody.includes('Human surface vs agent plumbing')) {
|
|
222
|
+
fail('SKILL.md must define human NL surface vs agent CLI plumbing')
|
|
223
|
+
}
|
|
224
|
+
if (!/never tell the FDE to type|Never tell the FDE to type|never ask the human to type fde/i.test(skillBody)) {
|
|
225
|
+
fail('SKILL.md must forbid asking the human to type fde commands')
|
|
226
|
+
}
|
|
227
|
+
if (!skillBody.includes('fde prep')) {
|
|
228
|
+
fail('SKILL.md must route walk-in prep to fde prep')
|
|
229
|
+
}
|
|
230
|
+
if (!skillBody.includes('debrief --smart')) {
|
|
231
|
+
fail('SKILL.md must prefer fde debrief --smart for messy notes')
|
|
219
232
|
}
|
|
220
233
|
if (!/\btriage\b/.test(hook)) {
|
|
221
234
|
fail('session-start must still inject TRIAGE')
|
package/hooks/session-start
CHANGED
|
@@ -136,7 +136,7 @@ bounded_context() {
|
|
|
136
136
|
CONTENT=""
|
|
137
137
|
|
|
138
138
|
# Lean pointer only - never cat SKILL.md. Methods load on @fde / skill trigger.
|
|
139
|
-
CONTENT="${CONTENT}fdeops: engagement fieldbook active.
|
|
139
|
+
CONTENT="${CONTENT}fdeops: engagement fieldbook active. Human speaks plain language with @fde - you (the agent) run the local fde CLI for memory plumbing; never ask the human to type fde commands. Load skills/fde/SKILL.md when @fde triggers.\n\n"
|
|
140
140
|
|
|
141
141
|
# Same TRIAGE block as `fde resume` / `fde triage` - Monday morning must not
|
|
142
142
|
# depend on the model remembering to run a CLI command. Prefer the installed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fdeops",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.6",
|
|
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",
|
package/skills/fde/SKILL.md
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fde
|
|
3
|
-
description: Second brain for Forward Deployed Engineers.
|
|
3
|
+
description: Second brain for Forward Deployed Engineers. The human describes the situation in plain language with @fde - you route, run the local fde CLI for memory plumbing, and write the fieldbook. Never ask the human to type fde commands.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# @fde
|
|
7
7
|
|
|
8
8
|
## Audience (read this first)
|
|
9
9
|
|
|
10
|
-
- **FDE** = the **human** who types `@fde` in the chat.
|
|
10
|
+
- **FDE** = the **human** who types `@fde` (or plain language) in the chat.
|
|
11
11
|
- **You (the model)** = the **AI coding agent** running this skill - not a human colleague, not the client's staff.
|
|
12
12
|
|
|
13
13
|
When this skill says "ask the FDE," it means the human. When it says "write to `.fde/`," you (the AI) write the files.
|
|
14
14
|
|
|
15
|
+
## Human surface vs agent plumbing (non-negotiable)
|
|
16
|
+
|
|
17
|
+
| Who | Interface |
|
|
18
|
+
|-----|-----------|
|
|
19
|
+
| **FDE (human)** | `@fde` + natural language. Examples: "debrief these notes", "prep me for tomorrow's sponsor meeting", "when did we agree to drop that?", "draft the sponsor update". |
|
|
20
|
+
| **You (agent)** | Run the local `fde` CLI for deterministic memory work. Never tell the FDE to type `fde …` (except if setup is missing - then **you** run `fde resume --init <name>` after one clarifying question). |
|
|
21
|
+
|
|
22
|
+
If you catch yourself saying "run `fde debrief --smart notes.txt`" to the human - **stop**. Run it yourself (or write a temp notes file and run it), then show the human the result in plain language for confirm/reject.
|
|
23
|
+
|
|
15
24
|
## Purpose
|
|
16
25
|
|
|
17
26
|
The single entry point for an entire client engagement. Field methods cover the FDE lifecycle (land through close, plus daily verbs and overlays). 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 method, **do the work**, and leave the memory updated so the next session starts where this one ended.
|
|
@@ -36,6 +45,7 @@ These stop confident fiction. They are not optional soft tips.
|
|
|
36
45
|
|
|
37
46
|
| Temptation | Gate |
|
|
38
47
|
|------------|------|
|
|
48
|
+
| Tell the FDE to run `fde debrief` / `fde prep` / `fde receipts` themselves | **Stop.** You run the CLI; they confirm results in plain language. |
|
|
39
49
|
| Invent a stakeholder, meeting, or quote to make the narrative rich | **Stop.** Write `unknown - ask: <question>`. One fake name poisons every real citation. |
|
|
40
50
|
| Route to a phase because it "feels senior" while the signal is muddy | **Stop.** Playback + one natural question, or name the ambiguity ("discover or rescue — leaning X because…"). |
|
|
41
51
|
| Fill `success.md` / `terrain.md` with plausible defaults when the brief is thin | **Stop.** Run **brief interrogation** in land/discover (one Q + GUESS + confidence) until you can write without guessing, or leave gaps explicit. |
|
|
@@ -54,21 +64,22 @@ When NOT to interrogate or challenge: unambiguous one-liners, mechanical ops, FD
|
|
|
54
64
|
|
|
55
65
|
**Engagement path - zero ceremony.** Run `fde resume` (fallback: `node ~/.claude/fdeops/fde.js resume`). The **workspace registry** (written once by `fde resume --init <name>`) is the normal path; resolution order is env var override → registry → pointer file → workspace-name match (read-only) → `./.fde`. Writes require a bind (or `FDEOPS_ENGAGEMENT`), not folder name alone. It prints a **bounded** view of `context.md` - the curated head (state, next action) plus the most recent activity, with the older session log collapsed (use `fde resume --full` when you genuinely need the whole history). If it reports NO ENGAGEMENT: confirm the client name in conversation (one question), then run `fde resume --init <name>` yourself - the one setup step; the FDE never runs setup commands. Never install fdeops on infrastructure the FDE does not control.
|
|
56
66
|
|
|
57
|
-
**
|
|
67
|
+
**You run the `fde` CLI for deterministic work - never improvise shell, never hand the command to the FDE:**
|
|
58
68
|
|
|
59
|
-
|
|
|
60
|
-
|
|
61
|
-
|
|
|
62
|
-
| Day-1
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
| "
|
|
66
|
-
|
|
|
67
|
-
|
|
|
69
|
+
| When the FDE says (approx.) | You run |
|
|
70
|
+
|-----------------------------|---------|
|
|
71
|
+
| (session entry / where are we) | `fde resume` or use injected TRIAGE; `fde resume --init <name>` only if unbound |
|
|
72
|
+
| Day-1 look at the repo | `fde scan` - then you interpret against the brief |
|
|
73
|
+
| "Debrief these notes" / pastes meeting notes | Prefer `fde debrief --smart <notes>` → show propose → on confirm `fde debrief --apply`. Fallback: structure `decision:`/`risk:`/`delivery:`/`contact:` lines yourself, show FDE, then `fde debrief` |
|
|
74
|
+
| "Prep me for the meeting with …" / walk-in brief | `fde prep "<short label>"` - present the brief in plain language; do not invent facts missing from `.fde/` |
|
|
75
|
+
| "When did we agree…?" / scope dispute | `fde receipts <term>` - answer with dates; no hit = gap, not proof |
|
|
76
|
+
| "Draft the sponsor update" / how are we doing | `fde status` then follow `references/status.md` for the narrative |
|
|
77
|
+
| "Log that they went quiet" / trust signal | `fde log contact "…" --signal amber\|green\|red` (after FDE confirms the read) |
|
|
78
|
+
| Want the HTML fieldbook | `fde dashboard` |
|
|
68
79
|
|
|
69
|
-
**The debrief verb.** When the FDE shares
|
|
80
|
+
**The debrief verb.** Highest-frequency loop. When the FDE shares notes or says "debrief": **you** run the smart path (write notes to a temp file if needed). Show the proposed routing in plain language. Only `--apply` (or pipe prefixed lines) after they confirm. Never ask them to run the CLI. Detail: `references/debrief.md`.
|
|
70
81
|
|
|
71
|
-
CLI missing → use the manual
|
|
82
|
+
CLI missing → use the manual fallbacks inside each reference (still you write files; still never ask the FDE to run setup).
|
|
72
83
|
|
|
73
84
|
**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`. Session-start hooks inject **TRIAGE + bounded `context.md` + a one-line pointer** - never this full skill body (that loads only when `@fde` triggers). 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.
|
|
74
85
|
|
|
@@ -241,6 +252,7 @@ Running the engagement and ending it well.
|
|
|
241
252
|
| Weekly update due, "need to send the sponsor something" | status | `references/status.md` |
|
|
242
253
|
| Demo coming up, show-and-tell, exec walkthrough | demo-prep | `references/demo-prep.md` |
|
|
243
254
|
| Just out of a meeting, raw notes, "they said…", "debrief" | debrief | the debrief verb (above) + `references/debrief.md` |
|
|
255
|
+
| Prep me for a meeting / walk-in brief / "what should I know before I talk to…" | - | run `fde prep "<label>"`, present in plain language |
|
|
244
256
|
| Sponsor's boss needs a summary, board update, justify continued investment | exec-narrative | `references/exec-narrative.md` |
|
|
245
257
|
| Status across all my customers | dashboard | `references/dashboard.md` |
|
|
246
258
|
| Juggling 2+ customers, losing track, context-switching | multi-customer-ops | `references/multi-customer-ops.md` |
|
|
@@ -1,36 +1,51 @@
|
|
|
1
1
|
# debrief - capture the meeting before it evaporates
|
|
2
2
|
|
|
3
|
-
**Enter when:** the FDE just left a meeting/call and dumps raw notes, a transcript, or "they said…".
|
|
3
|
+
**Enter when:** the FDE just left a meeting/call and dumps raw notes, a transcript, or "they said…". Highest-frequency moment in FDE life. Capture within the hour.
|
|
4
4
|
|
|
5
|
-
**Read first:** `context.md`, `stakeholders.md` (
|
|
5
|
+
**Read first:** `context.md`, `stakeholders.md` (signals against what's known).
|
|
6
|
+
|
|
7
|
+
**Who runs the CLI:** you (the agent). Never tell the FDE to type `fde debrief …`.
|
|
6
8
|
|
|
7
9
|
## Method (you do this work)
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
### Preferred path - smart debrief (messy notes)
|
|
12
|
+
|
|
13
|
+
1. Save the FDE's notes to a temp `.md` file in the workspace (or pipe stdin).
|
|
14
|
+
2. Run `fde debrief --smart <notes.md>` (or `npx fdeops debrief --smart …`).
|
|
15
|
+
3. Show the **proposed** routing in plain language (what would become decisions, risks, contacts, etc.).
|
|
16
|
+
4. On FDE confirm → run `fde debrief --apply`.
|
|
17
|
+
5. On reject → stop; ask what to change; do not apply.
|
|
18
|
+
|
|
19
|
+
No invented names or quotes. If the propose looks wrong, fix with judgment then re-propose or use the fallback path.
|
|
20
|
+
|
|
21
|
+
### Fallback - you structure, then route
|
|
22
|
+
|
|
23
|
+
If `--smart` is unavailable or the notes are already cleanly prefixed:
|
|
10
24
|
|
|
11
|
-
1.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
1. Extract into buckets - **only what was actually said**:
|
|
26
|
+
- **Decisions** - agreed, by whom, in their words where possible
|
|
27
|
+
- **Action items** - owner + due; unowned → `owner: unknown - ask`
|
|
28
|
+
- **Stakeholder signals** - tone shifts with evidence → green/amber/red
|
|
29
|
+
- **Risks** - new / confirmed / retired
|
|
30
|
+
- **Open questions** - what to chase next
|
|
31
|
+
2. Format lines as `decision:` / `risk:` / `delivery:` / `contact:` (contacts may end with `[signal:green|amber|red]`).
|
|
32
|
+
3. Show that structured version to the FDE for confirmation.
|
|
33
|
+
4. Pipe to `fde debrief` (or write a file and run it).
|
|
16
34
|
|
|
17
|
-
|
|
35
|
+
One clarifying question max if the dump is ambiguous - then write. Never stall capture on completeness.
|
|
18
36
|
|
|
19
|
-
## Artifact
|
|
37
|
+
## Artifact
|
|
20
38
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
- Risks → `risks.md`, dated.
|
|
24
|
-
- Action items + open questions → `context.md` under "Next actions".
|
|
25
|
-
- Sacred/sensitive things mentioned (data, systems, politics) → `trust-profile.md` if new.
|
|
39
|
+
- Smart apply / debrief CLI writes the dated routes into the right `.fde/` files.
|
|
40
|
+
- If you must write directly: decisions → `decisions.md`; signals → `stakeholders.md` Signal history; risks → `risks.md`; next actions → `context.md`. Prefer the CLI.
|
|
26
41
|
|
|
27
42
|
## Checkpoint
|
|
28
43
|
|
|
29
|
-
Read back the 2
|
|
44
|
+
Read back the 2-3 most consequential captures in one breath - so the FDE can correct on the spot. Then stop. No summary theatre.
|
|
30
45
|
|
|
31
46
|
## Principles
|
|
32
47
|
|
|
33
|
-
- Capture within the hour or lose the nuance
|
|
34
|
-
-
|
|
35
|
-
- Signals move on evidence, never on
|
|
36
|
-
- A meeting
|
|
48
|
+
- Capture within the hour or lose the nuance.
|
|
49
|
+
- Verbatim quote outranks paraphrase; hesitation outranks quote.
|
|
50
|
+
- Signals move on evidence, never on vibe alone.
|
|
51
|
+
- A meeting with no decisions and no actions - say so; that is a finding.
|