fdeops 3.9.20 → 3.10.2
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 +106 -87
- package/adapters/LOCAL-LLM.md +1 -1
- package/adapters/README.md +1 -1
- package/bin/check.js +211 -4
- package/bin/fde.js +379 -26
- package/bin/install.js +223 -20
- package/bin/lib/memory.js +2 -2
- package/bin/lib/render.js +2 -0
- package/mcp/README.md +2 -4
- package/mcp/fdeops-ingest/README.md +7 -3
- package/mcp/fdeops-ingest/package.json +1 -1
- package/mcp/fdeops-ingest/server.js +59 -28
- package/mcp/recipes/README.md +9 -8
- package/mcp/recipes/file.md +7 -7
- package/mcp/recipes/granola.md +16 -20
- package/mcp/recipes/notion.md +16 -18
- package/mcp/recipes/slack.md +61 -0
- package/mcp.json +10 -0
- package/package.json +4 -2
- package/plugin.json +21 -0
- package/skills/fde/SKILL.md +4 -4
- package/skills/fde/references/assumption-audit.md +10 -0
- package/skills/fde/references/build.md +13 -1
- package/skills/fde/references/business-case.md +10 -0
- package/skills/fde/references/close.md +11 -1
- package/skills/fde/references/discover.md +10 -0
- package/skills/fde/references/ingest-connect.md +16 -18
- package/skills/fde/references/ingest.md +5 -4
- package/skills/fde/references/land.md +20 -0
- package/skills/fde/references/options-analysis.md +10 -0
- package/skills/fde/references/plan.md +10 -0
- package/skills/fde/references/scope-defense.md +10 -0
- package/skills/fde/references/ship.md +10 -0
- package/skills/fde/references/stakeholder-radar.md +21 -0
- package/skills/fde/references/status.md +12 -2
- package/templates/.fde/delivery.md +3 -3
|
@@ -45,6 +45,17 @@ In every engagement where an external FDE was brought in, an internal team was p
|
|
|
45
45
|
- **Use their language.** In every meeting. They hear their words coming back and they feel consulted, not replaced.
|
|
46
46
|
- **Make them look right.** Credit their prior work in your artifacts. They protect you if they feel respected; they wait for your mistake if they don't.
|
|
47
47
|
|
|
48
|
+
**6. Before a decision meeting: pre-wire, then pre-mortem.**
|
|
49
|
+
|
|
50
|
+
A recommendation that needs several people to say yes is not won in the room; it is won in the week before it. When the FDE is heading into a go/no-go, a budget ask, or anything that visibly costs someone territory:
|
|
51
|
+
|
|
52
|
+
- **Sort by position, not by seniority.** Firm supporter / firm opponent / **swing**. Effort goes almost entirely to swings - supporters need reinforcement, not persuasion, and a firm opponent is rarely moved by a louder version of the argument that already failed.
|
|
53
|
+
- **Name what each swing is protecting.** The objection voiced in a meeting is usually a proxy: headcount, budget, credibility, control, or the reporting line that gets messier. Write the underlying motivation next to the stated objection - they are different sentences.
|
|
54
|
+
- **Sequence the conversations.** Whoever makes the others easier to win goes first; whoever is reassured by seeing names already on board goes last. One-on-one for anyone who would lose face conceding in a group.
|
|
55
|
+
- **Pre-mortem the meeting.** "It's Thursday, the meeting went badly - who sank it, and with what sentence?" That sentence is the pre-wire you are missing. If the answer is a specific person's objection, their conversation happens *before* the room convenes, not in it.
|
|
56
|
+
|
|
57
|
+
Log the sequence and the pre-mortem sentence in `context.md` as the plan for the week - a pre-wire plan that lives only in the FDE's head is not a plan.
|
|
58
|
+
|
|
48
59
|
## Artifact
|
|
49
60
|
|
|
50
61
|
**`stakeholders.md`** - updated with evidence-dated signal changes:
|
|
@@ -61,6 +72,16 @@ Signal changes get a dated evidence note. A signal that moved without evidence l
|
|
|
61
72
|
|
|
62
73
|
One line per stakeholder who changed signal this week. If nobody changed: "Map stable - next check <date>." If a ghost appeared or a resistor went quiet: name it, recommend the move, and update `context.md` with the action.
|
|
63
74
|
|
|
75
|
+
## Worked example
|
|
76
|
+
|
|
77
|
+
Acme, week 6. Priya's replies have gone from same-day to two days, and a phase-2 go/no-go is scheduled for Thursday.
|
|
78
|
+
|
|
79
|
+
Two signals, not one feeling: response time doubled *and* a finance analyst nobody introduced started asking when the work completes. That combination is an invisible escalation — someone above Priya is asking, and the meeting is already happening without the FDE.
|
|
80
|
+
|
|
81
|
+
Positions: Priya is a supporter under pressure. Marco is a supporter who does not vote. Denise (finance) is the swing, and what she is protecting is not the budget line she cites — it is that her team's escalation started this and she has nothing to show her own director. Raj is a firm opponent on the rewrite question, and no amount of the same argument moves him.
|
|
82
|
+
|
|
83
|
+
Sequence: Denise one-on-one Tuesday with the incident numbers in her units, then Priya Wednesday, so Priya walks in already knowing finance is not going to object. Pre-mortem sentence: *"Denise says 'we still don't know if this actually caught anything'"* — which is precisely why Tuesday exists. `stakeholders.md` records `Priya | sponsor | green→amber | reply latency 1d → 2d, unintroduced analyst (Jul 3)`; `context.md` carries the sequence.
|
|
84
|
+
|
|
64
85
|
## Principles
|
|
65
86
|
|
|
66
87
|
- Signals are evidence-based, not feeling-based. "Seemed distant" doesn't move a signal; "stopped responding to three messages" does.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
| **A — Answer** | What you recommend / what happens next week (≤3 bullets) | plan Now lane, delivery promised→measured |
|
|
17
17
|
|
|
18
18
|
Then add, still on the same page:
|
|
19
|
-
1. **Value this week** - from the value ledger: promised → measured (or "pending") with evidence citation.
|
|
19
|
+
1. **Value this week** - from the value ledger: promised → measured (or "pending") → **accepted by whom**, with evidence citation. A measured number nobody on the customer side has agreed to is written as `claimed`, and the Ask never rests on it - if the whole case for the next phase is a claimed number, the real ask this week is "who signs off that this is real?".
|
|
20
20
|
2. **Kill / defer reminder** - one line from the plan kill list so scope fights stay visible.
|
|
21
21
|
3. **Hostile Q prep** - three questions a skeptical sponsor will ask, with one-line answers from memory.
|
|
22
22
|
|
|
@@ -34,7 +34,7 @@ Append the draft to `delivery.md` under `## Status - <date>` using the SCQA head
|
|
|
34
34
|
**C:** ...
|
|
35
35
|
**Q:** ...
|
|
36
36
|
**A:** ...
|
|
37
|
-
**Value ledger:** promised … / measured … (evidence)
|
|
37
|
+
**Value ledger:** promised … / measured … / accepted by … (evidence) — or `claimed, unaccepted`
|
|
38
38
|
**Kill list reminder:** …
|
|
39
39
|
**Hostile Qs:** 1) … 2) … 3) …
|
|
40
40
|
```
|
|
@@ -43,6 +43,16 @@ Append the draft to `delivery.md` under `## Status - <date>` using the SCQA head
|
|
|
43
43
|
|
|
44
44
|
Walk the FDE through the Complication and the Ask - confirm the framing matches what the sponsor can hear right now (check `stakeholders.md` signal first: a red-signal sponsor gets a different opening than a green one).
|
|
45
45
|
|
|
46
|
+
## Worked example
|
|
47
|
+
|
|
48
|
+
Acme, week 3, Priya's Friday update.
|
|
49
|
+
|
|
50
|
+
**S:** failure routing is live; detection is 12 min against the 4h baseline in `success.md`. **C** leads with the bad news, not the win: the second incident was acked 40 minutes late because the rota has one name on it, and that name was on leave. **Q:** one ask — a second name on the rota by Wednesday. **A:** three bullets, top of the Now lane.
|
|
51
|
+
|
|
52
|
+
Value ledger line: `promised 4h → 15min / measured 12min over 2 incidents / accepted by — (Marco confirmed operationally, finance not yet)` → written as `claimed, unaccepted`, which is what makes the Ask honest rather than a victory lap.
|
|
53
|
+
|
|
54
|
+
Hostile Q prep, from memory not imagination: "why did we pay for alerting we already had?" → the receipt from `decisions.md` and the disabled-alerting finding in `reality.md`. Kill list reminder: the service rewrite is still deferred, accepted by Priya on Jun 12.
|
|
55
|
+
|
|
46
56
|
## Principles
|
|
47
57
|
|
|
48
58
|
- SCQA every time. Situation → Complication → Ask → Answer.
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
## Value ledger
|
|
6
6
|
|
|
7
|
-
| Date | Slice | Bucket | Promised | Measured | Evidence | Rollback |
|
|
8
|
-
|
|
9
|
-
| | | *(cost-save / risk-mitigation / revenue-uplift)* | *(what we said it would change)* | *(what actually changed, or pending)* | *(who/when/metric)* | |
|
|
7
|
+
| Date | Slice | Bucket | Promised | Measured | Accepted by | Evidence | Rollback |
|
|
8
|
+
|------|-------|--------|----------|----------|-------------|----------|----------|
|
|
9
|
+
| | | *(cost-save / risk-mitigation / revenue-uplift)* | *(what we said it would change)* | *(what actually changed, or pending)* | *(customer-side name + date, or it stays claimed)* | *(who/when/metric)* | |
|
|
10
10
|
|
|
11
11
|
## Ship receipts
|
|
12
12
|
|