fdeops 4.1.1 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/README.md +85 -246
- package/bin/catalog-doc.js +38 -0
- package/bin/check.js +20 -49
- package/bin/fde.js +2 -2
- package/bin/generate-skills.js +11 -3
- package/bin/install.js +37 -3
- package/bin/skill-catalog.js +283 -16
- package/mcp/fdeops-ingest/package.json +1 -1
- package/package.json +2 -2
- package/plugin.json +1 -1
- package/skills/README.md +7 -0
- package/skills/audit/.fde-generated.json +10 -0
- package/skills/audit/SKILL.md +21 -0
- package/skills/audit/references/discover.md +112 -0
- package/skills/{fde-build → audit}/references/task-context.md +7 -1
- package/skills/board-memo/.fde-generated.json +10 -0
- package/skills/board-memo/SKILL.md +21 -0
- package/skills/{fde-debug → board-memo}/references/task-context.md +7 -1
- package/skills/brief/.fde-generated.json +9 -0
- package/skills/brief/SKILL.md +21 -0
- package/skills/brief/references/land.md +136 -0
- package/skills/{fde-discover → brief}/references/task-context.md +7 -1
- package/skills/{fde-build → build}/.fde-generated.json +2 -2
- package/skills/{fde-build → build}/SKILL.md +2 -2
- package/skills/{fde-evaluate → build}/references/task-context.md +7 -1
- package/skills/business-case/.fde-generated.json +9 -0
- package/skills/business-case/SKILL.md +21 -0
- package/skills/business-case/references/task-context.md +18 -0
- package/skills/connect/.fde-generated.json +12 -0
- package/skills/connect/SKILL.md +21 -0
- package/skills/connect/references/connect.md +24 -0
- package/skills/connect/references/debrief.md +91 -0
- package/skills/connect/references/ingest.md +75 -0
- package/skills/connect/references/source-setup.md +30 -0
- package/skills/connect/references/task-context.md +18 -0
- package/skills/dashboard/.fde-generated.json +9 -0
- package/skills/dashboard/SKILL.md +21 -0
- package/skills/dashboard/references/dashboard.md +40 -0
- package/skills/dashboard/references/task-context.md +18 -0
- package/skills/debrief/.fde-generated.json +12 -0
- package/skills/debrief/SKILL.md +21 -0
- package/skills/debrief/references/connect.md +24 -0
- package/skills/debrief/references/debrief.md +91 -0
- package/skills/debrief/references/ingest.md +75 -0
- package/skills/debrief/references/source-setup.md +30 -0
- package/skills/debrief/references/task-context.md +18 -0
- package/skills/{fde-debug → debug}/.fde-generated.json +2 -2
- package/skills/{fde-debug → debug}/SKILL.md +2 -2
- package/skills/debug/references/task-context.md +18 -0
- package/skills/demo-prep/.fde-generated.json +9 -0
- package/skills/demo-prep/SKILL.md +21 -0
- package/skills/demo-prep/references/demo-prep.md +31 -0
- package/skills/demo-prep/references/task-context.md +18 -0
- package/skills/discover/.fde-generated.json +10 -0
- package/skills/{fde-discover → discover}/SKILL.md +2 -2
- package/skills/discover/references/discover.md +112 -0
- package/skills/discover/references/task-context.md +18 -0
- package/skills/earn-trust/.fde-generated.json +9 -0
- package/skills/earn-trust/SKILL.md +21 -0
- package/skills/earn-trust/references/earn-trust.md +100 -0
- package/skills/earn-trust/references/task-context.md +18 -0
- package/skills/{fde-integrate → evaluate}/.fde-generated.json +2 -2
- package/skills/{fde-evaluate → evaluate}/SKILL.md +2 -2
- package/skills/evaluate/references/task-context.md +18 -0
- package/skills/fde/SKILL.md +11 -10
- package/skills/fde/references/connect.md +14 -24
- package/skills/fde/references/debrief.md +2 -0
- package/skills/fde/references/discover.md +66 -208
- package/skills/fde/references/ingest.md +4 -2
- package/skills/fde/references/plan.md +6 -6
- package/skills/fde/references/runbook.md +52 -120
- package/skills/fde/references/source-setup.md +30 -0
- package/skills/fde/references/task-context.md +7 -1
- package/skills/feedback/.fde-generated.json +9 -0
- package/skills/{fde-feedback → feedback}/SKILL.md +2 -2
- package/skills/feedback/references/task-context.md +18 -0
- package/skills/{fde-handoff → handoff}/.fde-generated.json +2 -2
- package/skills/{fde-handoff → handoff}/SKILL.md +2 -2
- package/skills/handoff/references/task-context.md +18 -0
- package/skills/ingest/.fde-generated.json +12 -0
- package/skills/ingest/SKILL.md +21 -0
- package/skills/ingest/references/connect.md +24 -0
- package/skills/ingest/references/debrief.md +91 -0
- package/skills/ingest/references/ingest.md +75 -0
- package/skills/ingest/references/source-setup.md +30 -0
- package/skills/ingest/references/task-context.md +18 -0
- package/skills/{fde-evaluate → integrate}/.fde-generated.json +2 -2
- package/skills/{fde-integrate → integrate}/SKILL.md +2 -2
- package/skills/integrate/references/task-context.md +18 -0
- package/skills/{fde-options → options}/.fde-generated.json +2 -2
- package/skills/{fde-options → options}/SKILL.md +2 -2
- package/skills/options/references/task-context.md +18 -0
- package/skills/plan/.fde-generated.json +10 -0
- package/skills/plan/SKILL.md +21 -0
- package/skills/plan/references/business-case.md +90 -0
- package/skills/{fde-poc → plan}/references/plan.md +6 -6
- package/skills/plan/references/task-context.md +18 -0
- package/skills/{fde-poc → poc}/.fde-generated.json +4 -4
- package/skills/{fde-poc → poc}/SKILL.md +2 -2
- package/skills/poc/references/audit.md +71 -0
- package/skills/poc/references/business-case.md +90 -0
- package/skills/poc/references/discover.md +112 -0
- package/skills/poc/references/plan.md +167 -0
- package/skills/poc/references/task-context.md +18 -0
- package/skills/prioritize/.fde-generated.json +10 -0
- package/skills/prioritize/SKILL.md +21 -0
- package/skills/prioritize/references/business-case.md +90 -0
- package/skills/prioritize/references/pick-three.md +95 -0
- package/skills/prioritize/references/task-context.md +18 -0
- package/skills/qa/.fde-generated.json +16 -0
- package/skills/{fde-qa → qa}/SKILL.md +2 -2
- package/skills/qa/references/task-context.md +18 -0
- package/skills/{fde-readout → readout}/.fde-generated.json +2 -2
- package/skills/{fde-readout → readout}/SKILL.md +2 -2
- package/skills/readout/references/board-memo.md +108 -0
- package/skills/readout/references/business-case.md +90 -0
- package/skills/readout/references/task-context.md +18 -0
- package/skills/red-team/.fde-generated.json +9 -0
- package/skills/red-team/SKILL.md +21 -0
- package/skills/red-team/references/red-team.md +105 -0
- package/skills/red-team/references/task-context.md +18 -0
- package/skills/rescue/.fde-generated.json +9 -0
- package/skills/rescue/SKILL.md +21 -0
- package/skills/rescue/references/rescue.md +82 -0
- package/skills/rescue/references/task-context.md +18 -0
- package/skills/review/.fde-generated.json +16 -0
- package/skills/{fde-review → review}/SKILL.md +2 -2
- package/skills/review/references/task-context.md +18 -0
- package/skills/rollback/.fde-generated.json +9 -0
- package/skills/rollback/SKILL.md +21 -0
- package/skills/rollback/references/rollback.md +102 -0
- package/skills/rollback/references/task-context.md +18 -0
- package/skills/runbook/.fde-generated.json +11 -0
- package/skills/runbook/SKILL.md +21 -0
- package/skills/runbook/references/close.md +66 -0
- package/skills/runbook/references/encode-pattern.md +96 -0
- package/skills/runbook/references/runbook.md +73 -0
- package/skills/runbook/references/task-context.md +18 -0
- package/skills/scope/.fde-generated.json +9 -0
- package/skills/{fde-scope → scope}/SKILL.md +2 -2
- package/skills/scope/references/task-context.md +18 -0
- package/skills/score-use-cases/.fde-generated.json +10 -0
- package/skills/score-use-cases/SKILL.md +21 -0
- package/skills/score-use-cases/references/business-case.md +90 -0
- package/skills/score-use-cases/references/score-use-cases.md +70 -0
- package/skills/score-use-cases/references/task-context.md +18 -0
- package/skills/ship/.fde-generated.json +16 -0
- package/skills/{fde-ship → ship}/SKILL.md +2 -2
- package/skills/ship/references/task-context.md +18 -0
- package/skills/switch-clients/.fde-generated.json +9 -0
- package/skills/switch-clients/SKILL.md +21 -0
- package/skills/switch-clients/references/switch-clients.md +114 -0
- package/skills/switch-clients/references/task-context.md +18 -0
- package/skills/test-assumptions/.fde-generated.json +9 -0
- package/skills/test-assumptions/SKILL.md +21 -0
- package/skills/test-assumptions/references/task-context.md +18 -0
- package/skills/test-assumptions/references/test-assumptions.md +102 -0
- package/skills/what-breaks/.fde-generated.json +9 -0
- package/skills/what-breaks/SKILL.md +21 -0
- package/skills/what-breaks/references/task-context.md +18 -0
- package/skills/what-breaks/references/what-breaks.md +91 -0
- package/skills/who-decides/.fde-generated.json +9 -0
- package/skills/who-decides/SKILL.md +21 -0
- package/skills/who-decides/references/task-context.md +18 -0
- package/skills/who-decides/references/who-decides.md +91 -0
- package/skills/fde-discover/.fde-generated.json +0 -10
- package/skills/fde-discover/references/discover.md +0 -254
- package/skills/fde-feedback/.fde-generated.json +0 -9
- package/skills/fde-feedback/references/task-context.md +0 -12
- package/skills/fde-handoff/references/task-context.md +0 -12
- package/skills/fde-integrate/references/task-context.md +0 -12
- package/skills/fde-options/references/task-context.md +0 -12
- package/skills/fde-poc/references/discover.md +0 -254
- package/skills/fde-poc/references/task-context.md +0 -12
- package/skills/fde-qa/.fde-generated.json +0 -16
- package/skills/fde-qa/references/task-context.md +0 -12
- package/skills/fde-readout/references/task-context.md +0 -12
- package/skills/fde-review/.fde-generated.json +0 -16
- package/skills/fde-review/references/task-context.md +0 -12
- package/skills/fde-scope/.fde-generated.json +0 -9
- package/skills/fde-scope/references/task-context.md +0 -12
- package/skills/fde-ship/.fde-generated.json +0 -16
- package/skills/fde-ship/references/task-context.md +0 -12
- /package/skills/{fde-discover → audit}/references/audit.md +0 -0
- /package/skills/{fde-readout → board-memo}/references/board-memo.md +0 -0
- /package/skills/{fde-options → board-memo}/references/business-case.md +0 -0
- /package/skills/{fde-build → build}/references/build.md +0 -0
- /package/skills/{fde-build → build}/references/debug.md +0 -0
- /package/skills/{fde-build → build}/references/eval-pack.md +0 -0
- /package/skills/{fde-build → build}/references/integrate.md +0 -0
- /package/skills/{fde-build → build}/references/qa.md +0 -0
- /package/skills/{fde-build → build}/references/review.md +0 -0
- /package/skills/{fde-build → build}/references/ship.md +0 -0
- /package/skills/{fde-build → build}/references/verification.md +0 -0
- /package/skills/{fde-poc → business-case}/references/business-case.md +0 -0
- /package/skills/{fde-debug → debug}/references/build.md +0 -0
- /package/skills/{fde-debug → debug}/references/debug.md +0 -0
- /package/skills/{fde-debug → debug}/references/eval-pack.md +0 -0
- /package/skills/{fde-debug → debug}/references/integrate.md +0 -0
- /package/skills/{fde-debug → debug}/references/qa.md +0 -0
- /package/skills/{fde-debug → debug}/references/review.md +0 -0
- /package/skills/{fde-debug → debug}/references/ship.md +0 -0
- /package/skills/{fde-debug → debug}/references/verification.md +0 -0
- /package/skills/{fde-poc → discover}/references/audit.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/build.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/debug.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/eval-pack.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/integrate.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/qa.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/review.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/ship.md +0 -0
- /package/skills/{fde-evaluate → evaluate}/references/verification.md +0 -0
- /package/skills/{fde-feedback → feedback}/references/encode-pattern.md +0 -0
- /package/skills/{fde-handoff → handoff}/references/close.md +0 -0
- /package/skills/{fde-handoff → handoff}/references/encode-pattern.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/build.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/debug.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/eval-pack.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/integrate.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/qa.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/review.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/ship.md +0 -0
- /package/skills/{fde-integrate → integrate}/references/verification.md +0 -0
- /package/skills/{fde-readout → options}/references/business-case.md +0 -0
- /package/skills/{fde-options → options}/references/test-assumptions.md +0 -0
- /package/skills/{fde-options → options}/references/three-options.md +0 -0
- /package/skills/{fde-poc → poc}/references/build.md +0 -0
- /package/skills/{fde-poc → poc}/references/debug.md +0 -0
- /package/skills/{fde-poc → poc}/references/eval-pack.md +0 -0
- /package/skills/{fde-poc → poc}/references/integrate.md +0 -0
- /package/skills/{fde-poc → poc}/references/poc.md +0 -0
- /package/skills/{fde-poc → poc}/references/qa.md +0 -0
- /package/skills/{fde-poc → poc}/references/review.md +0 -0
- /package/skills/{fde-poc → poc}/references/ship.md +0 -0
- /package/skills/{fde-poc → poc}/references/test-assumptions.md +0 -0
- /package/skills/{fde-poc → poc}/references/three-options.md +0 -0
- /package/skills/{fde-poc → poc}/references/verification.md +0 -0
- /package/skills/{fde-qa → qa}/references/build.md +0 -0
- /package/skills/{fde-qa → qa}/references/debug.md +0 -0
- /package/skills/{fde-qa → qa}/references/eval-pack.md +0 -0
- /package/skills/{fde-qa → qa}/references/integrate.md +0 -0
- /package/skills/{fde-qa → qa}/references/qa.md +0 -0
- /package/skills/{fde-qa → qa}/references/review.md +0 -0
- /package/skills/{fde-qa → qa}/references/ship.md +0 -0
- /package/skills/{fde-qa → qa}/references/verification.md +0 -0
- /package/skills/{fde-readout → readout}/references/readout.md +0 -0
- /package/skills/{fde-review → review}/references/build.md +0 -0
- /package/skills/{fde-review → review}/references/debug.md +0 -0
- /package/skills/{fde-review → review}/references/eval-pack.md +0 -0
- /package/skills/{fde-review → review}/references/integrate.md +0 -0
- /package/skills/{fde-review → review}/references/qa.md +0 -0
- /package/skills/{fde-review → review}/references/review.md +0 -0
- /package/skills/{fde-review → review}/references/ship.md +0 -0
- /package/skills/{fde-review → review}/references/verification.md +0 -0
- /package/skills/{fde-scope → scope}/references/hold-scope.md +0 -0
- /package/skills/{fde-ship → ship}/references/build.md +0 -0
- /package/skills/{fde-ship → ship}/references/debug.md +0 -0
- /package/skills/{fde-ship → ship}/references/eval-pack.md +0 -0
- /package/skills/{fde-ship → ship}/references/integrate.md +0 -0
- /package/skills/{fde-ship → ship}/references/qa.md +0 -0
- /package/skills/{fde-ship → ship}/references/review.md +0 -0
- /package/skills/{fde-ship → ship}/references/ship.md +0 -0
- /package/skills/{fde-ship → ship}/references/verification.md +0 -0
|
@@ -1,141 +1,73 @@
|
|
|
1
|
-
# runbook - Write
|
|
1
|
+
# runbook - Write an operating guide
|
|
2
2
|
|
|
3
|
-
**Enter when:** the
|
|
3
|
+
**Enter when:** the team needs instructions to operate, diagnose or recover a system, or an engineer is preparing to transfer responsibility.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Apply [task context](task-context.md). Use supplied operational facts, relevant code and verified procedures. For a bound engagement, retrieve relevant sanitized delivery, dependency and ownership evidence; do not load the full customer record or raw private material.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Match the request
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- **Draft a guide:** write what is known, mark unverified procedures and missing evidence, and return the requested document. No customer record, live access, drill or closure ceremony is required.
|
|
10
|
+
- **Verify an operating guide:** agree the permitted environment and checks, exercise relevant procedures, and record what happened. Do not run a destructive or production drill from a documentation request alone.
|
|
11
|
+
- **Complete a handoff:** use [handoff](close.md) for the wider ownership and acceptance decision. A written guide is one part of that decision, not proof of readiness.
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
## Build the guide from evidence
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|----------|-----------------|---------------------------|
|
|
15
|
-
| **Code knowledge** | Architecture decisions (`decisions.md`), why the code is shaped the way it is | Team member can explain the three most important design decisions |
|
|
16
|
-
| **Operational** | Deploy, rollback, incident response, monitoring | Team member runs the deploy and rollback procedure independently |
|
|
17
|
-
| **Tribal** | The things only you know - the workaround, the contact, the context | Written in `handoff.md` and reviewed with the person who'll carry it |
|
|
18
|
-
| **Political** | Stakeholder dynamics, approval chains, who to call when | Documented in `stakeholders.md` with signal history |
|
|
19
|
-
| **Data/AI** | Model versions, retraining triggers, drift monitoring, fallback paths | Owner named for each AI component; kill switch documented |
|
|
20
|
-
|
|
21
|
-
**2. The 2am document.** Written for the person woken up on a Saturday night with zero context:
|
|
22
|
-
|
|
23
|
-
```markdown
|
|
24
|
-
# Operations runbook - <system name>
|
|
25
|
-
|
|
26
|
-
## The 3 things that will break (and the fix for each)
|
|
27
|
-
|
|
28
|
-
### 1. <most likely failure>
|
|
29
|
-
Symptom: <what they'll see>
|
|
30
|
-
Cause: <most likely why>
|
|
31
|
-
Fix: <exact steps, copy-pasteable commands>
|
|
32
|
-
Who to call if this doesn't fix it: <name, contact>
|
|
33
|
-
|
|
34
|
-
### 2. <second most likely failure>
|
|
35
|
-
...
|
|
36
|
-
|
|
37
|
-
### 3. <third most likely failure>
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
## Deploy
|
|
41
|
-
Command: <exact command>
|
|
42
|
-
Time: <how long it takes>
|
|
43
|
-
Verify: <how to confirm it worked>
|
|
44
|
-
Rollback: <exact command and expected time>
|
|
45
|
-
|
|
46
|
-
## Alerts
|
|
47
|
-
| Alert | Means | Do this |
|
|
48
|
-
|-------|-------|---------|
|
|
49
|
-
| <alert name> | <plain English> | <action or link to detailed runbook> |
|
|
50
|
-
|
|
51
|
-
## Contacts
|
|
52
|
-
| Who | When to call | How |
|
|
53
|
-
|-----|-------------|-----|
|
|
54
|
-
| <name> | <scenario> | <phone/slack/email> |
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
**3. The knowledge transfer sessions.** Not a document dump - three structured sessions:
|
|
58
|
-
|
|
59
|
-
| Session | Focus | Attendees | Duration | Output |
|
|
60
|
-
|---------|-------|-----------|----------|--------|
|
|
61
|
-
| **Architecture walkthrough** | Why, not what. The decisions, the trade-offs, the things that almost went wrong. | Full team | 60-90 min | Recording + Q&A log |
|
|
62
|
-
| **Operational drill** | Deploy, rollback, incident response. They do it, you watch. | On-call team | 60 min | Drill report with confidence level |
|
|
63
|
-
| **Floor drill** | They run the real job (the exception on the operating map) while you watch, hands off. Then they teach the next person. If they cannot, the runbook is a PDF. | Named operator on the floor | 45-60 min | They used the 2am doc during the drill, or the embed is not closed |
|
|
64
|
-
| **Edge-case handover** | The things that aren't in any document. The workarounds, the fragile spots, the "ask Sarah because she's the only one who knows." | Team lead + 1 | 30 min | Additions to `handoff.md` |
|
|
65
|
-
|
|
66
|
-
**4. The confidence check.** After the knowledge transfer, score the team's readiness:
|
|
67
|
-
|
|
68
|
-
| Area | Confidence (1-5) | Evidence |
|
|
69
|
-
|------|------------------|----------|
|
|
70
|
-
| Daily operations | | Can they deploy and rollback without help? |
|
|
71
|
-
| Incident response | | Did they complete the drill within acceptable time? |
|
|
72
|
-
| Floor job | | Did the named operator complete Tuesday's real exception without you at the keyboard? |
|
|
73
|
-
| Architecture decisions | | Can they explain why the system is built this way? |
|
|
74
|
-
| AI components (if any) | | Do they know how to monitor, retrain, and disable? |
|
|
75
|
-
| Stakeholder management | | Do they know who to update and how? |
|
|
76
|
-
|
|
77
|
-
**Average below 3.5 → the handoff is not complete.** Extend, or tell the sponsor the embed is not closed. Do not document the gap and leave.
|
|
78
|
-
|
|
79
|
-
**5. The successor brief.** If a new FDE is taking over, write a brief that gets them operational in one hour:
|
|
15
|
+
Identify the system, the intended reader and the decisions that reader can make. Follow the actual operating path and include only relevant sections:
|
|
80
16
|
|
|
81
17
|
```markdown
|
|
82
|
-
#
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
##
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
<
|
|
18
|
+
# Operating guide - <system>
|
|
19
|
+
Status: Draft / Verified for <environment and scope>
|
|
20
|
+
Evidence: <code, observed run, operator statement or existing document>
|
|
21
|
+
Operating owner: <confirmed role/person and source, or proposed/unconfirmed>
|
|
22
|
+
|
|
23
|
+
## Normal operation
|
|
24
|
+
What should happen, how often, and how to check it.
|
|
25
|
+
|
|
26
|
+
## Known failure modes
|
|
27
|
+
Symptom: <what the operator sees>
|
|
28
|
+
Evidence: <what establishes this behavior>
|
|
29
|
+
Cause: <verified cause or explicit unknown>
|
|
30
|
+
Action: <supported steps, constraints and stop conditions>
|
|
31
|
+
Validation: <tested environment/date/result, or unverified>
|
|
32
|
+
Escalation: <confirmed role/channel, or missing>
|
|
33
|
+
|
|
34
|
+
## Deploy and recover
|
|
35
|
+
Procedure: <verified commands or a source link; do not invent commands>
|
|
36
|
+
Permissions and prerequisites: <required access and safety conditions>
|
|
37
|
+
Check: <expected observable result>
|
|
38
|
+
Recovery: <tested procedure or the missing recovery evidence>
|
|
39
|
+
|
|
40
|
+
## Monitor and escalate
|
|
41
|
+
Signal: <existing alert or check>
|
|
42
|
+
Meaning: <known interpretation>
|
|
43
|
+
Response: <authorized action and when to escalate>
|
|
44
|
+
|
|
45
|
+
## Open readiness gaps
|
|
46
|
+
Missing evidence, owner to confirm, and proposed next check.
|
|
101
47
|
```
|
|
102
48
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- [ ] All access returned or transferred (repos, environments, admin panels)
|
|
106
|
-
- [ ] No personal credentials left in the system (API keys, tokens, SSH keys)
|
|
107
|
-
- [ ] `.fde/` folder handed to the successor or archived with the team
|
|
108
|
-
- [ ] Final status sent to sponsor (see `readout.md`)
|
|
109
|
-
- [ ] Retrospective completed (see `close.md`)
|
|
110
|
-
- [ ] Patterns extracted (see `encode-pattern.md`)
|
|
49
|
+
Do not pad the document with an arbitrary number of failures, contacts or commands. A stated retry problem without a known cause should remain an investigation item, not become a fabricated repair procedure. A suggested owner is not an accepted operating responsibility.
|
|
111
50
|
|
|
112
|
-
|
|
51
|
+
For AI components, include relevant model and configuration versions, evaluation checks, failure limits and the supported way to pause actions. Do not assume retraining or autonomous operation is required.
|
|
113
52
|
|
|
114
|
-
|
|
53
|
+
## Verify when requested
|
|
115
54
|
|
|
116
|
-
|
|
55
|
+
Select checks based on the system's actual consequences. For example, the receiving operator may demonstrate normal operation, diagnose a known failure, or recover a failed release in a permitted test environment.
|
|
117
56
|
|
|
118
|
-
|
|
57
|
+
Record each critical capability separately as verified, failed or untested, with evidence. A successful walkthrough cannot compensate for an untested recovery path. Avoid an averaged confidence score that hides a critical gap.
|
|
119
58
|
|
|
120
|
-
|
|
59
|
+
If a procedure fails, correct the guide or system within scope and repeat the affected check. If verification is unavailable, deliver the draft with its limits and propose the next check; do not claim the handoff complete or indefinitely extend the engagement yourself.
|
|
121
60
|
|
|
122
|
-
##
|
|
61
|
+
## Deliver and retain ownership boundaries
|
|
123
62
|
|
|
124
|
-
|
|
125
|
-
- The team defers decisions until you're in the room
|
|
126
|
-
- "Can you just stay one more month?" (translation: the handoff hasn't started)
|
|
127
|
-
- You're the only person who's run the deploy or the rollback
|
|
128
|
-
- The sponsor introduces you as "part of the team" in month 4
|
|
129
|
-
- The customer calls you within a week of "close"
|
|
63
|
+
Return the guide, its verification status and any remaining operating decisions. Save it to the requested location. In a bound engagement, propose updates to `handoff.md` and relevant current-state records under their confirmation rules.
|
|
130
64
|
|
|
131
|
-
|
|
65
|
+
Access changes, exports of customer records, sponsor messages and closure decisions require their own authorization. A request for a runbook does not authorize these actions. Transfer only the material the recipient is entitled to receive.
|
|
132
66
|
|
|
133
67
|
## Principles
|
|
134
68
|
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
- Clean exit: no personal credentials left behind, ever.
|
|
141
|
-
- If you're still indispensable after close, the engagement failed on the most important criterion.
|
|
69
|
+
- Write for the person handling the actual failure.
|
|
70
|
+
- Supported procedures beat plausible commands.
|
|
71
|
+
- Draft, tested procedure and accepted ownership remain distinct.
|
|
72
|
+
- Verify critical capabilities individually.
|
|
73
|
+
- Keep private relationship notes and credentials out of an operating guide.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Source access for customer notes
|
|
2
|
+
|
|
3
|
+
Use this guide when `connect` needs a source and when `ingest` cannot reach requested material. Configure only the named source. FDEOps does not bundle source authentication or silently install integrations.
|
|
4
|
+
|
|
5
|
+
## Start with what is already available
|
|
6
|
+
|
|
7
|
+
Inspect the current host's tools. Name which requested source can be read and what remains unavailable. A server appearing in a configuration file is not proof that its credentials or scopes work.
|
|
8
|
+
|
|
9
|
+
For setup, use the source provider's current official documentation and the host's documented connector or MCP configuration. Do not invent package names, API methods, secret values or installation flags. Prefer an existing authenticated connector over adding a second one. Put credentials in the host's supported secret storage; never paste them into a customer record, prompt or report.
|
|
10
|
+
|
|
11
|
+
## Choose the source path
|
|
12
|
+
|
|
13
|
+
| Material | First check | If unavailable |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Pasted notes or a local export | The user permits this content in the agent; identify the relevant file or text | Ask for the specific missing material, not an integration installation |
|
|
16
|
+
| Meeting notes, such as Granola | A notes tool can read the selected meeting and its source identifier | Use a permitted export or the provider's supported setup |
|
|
17
|
+
| Slack or another chat system | Read access to the specified thread or channel and date range | Ask the user or workspace owner to resolve access; a copied thread is an alternative |
|
|
18
|
+
| Notion or another document system | Read access to the specified page and its linked content when required | Use a permitted document export or resolve the missing page access |
|
|
19
|
+
|
|
20
|
+
Test a configured source with the smallest requested read. Report setup, connectivity and successful retrieval separately. Do not widen access to an entire inbox or workspace just because one item is unavailable.
|
|
21
|
+
|
|
22
|
+
## Keep setup separate from record updates
|
|
23
|
+
|
|
24
|
+
Configuring or testing a source does not require a customer record. Reading requested material does not authorize applying it to one.
|
|
25
|
+
|
|
26
|
+
For a review-only request, use the permitted supplied or fetched text and return a sourced draft. For staging or saving, select the intended customer record first, then follow [ingest](ingest.md): stage → propose → review → explicit confirmation → apply. Source permissions do not authorize a record update, and the FDEOps CLI itself makes no network calls.
|
|
27
|
+
|
|
28
|
+
Short notes can use [debrief](debrief.md) directly. Large files should be staged through the CLI when a customer record has been selected. Preserve source IDs and dates when available; absence of a source remains explicit.
|
|
29
|
+
|
|
30
|
+
FDEOps does not post messages, change source documents, background-sync channels or make recurring pulls through this path. Use the requested read scope only.
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Use this contract for standalone methods and methods routed through `@fde`.
|
|
4
4
|
|
|
5
|
-
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
5
|
+
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
6
6
|
- **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
|
|
7
7
|
- **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
|
|
8
8
|
- **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
|
|
9
9
|
- **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
|
|
10
10
|
- **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
|
|
11
11
|
|
|
12
|
+
## CLI availability
|
|
13
|
+
|
|
14
|
+
Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
|
|
15
|
+
|
|
16
|
+
If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
|
|
17
|
+
|
|
12
18
|
Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generator": "bin/generate-skills.js",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"files": {
|
|
5
|
+
"SKILL.md": "f8666990f8b4463af5f29acdb1d1cd5e8fec68119b82a891aa2322a213f37344",
|
|
6
|
+
"references/encode-pattern.md": "3be7bf9d0f69af31659423c54d6023a4af1556e2ce200fb025bf64d0757de4d8",
|
|
7
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: feedback
|
|
3
3
|
description: Assess a field lesson for reuse or product feedback without exposing customer context. Use for recurring deployment lessons; distinguish a hypothesis from a validated pattern.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# feedback
|
|
7
7
|
|
|
8
8
|
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
9
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Task context and evidence
|
|
2
|
+
|
|
3
|
+
Use this contract for standalone methods and methods routed through `@fde`.
|
|
4
|
+
|
|
5
|
+
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
6
|
+
- **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
|
|
7
|
+
- **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
|
|
8
|
+
- **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
|
|
9
|
+
- **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
|
|
10
|
+
- **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
|
|
11
|
+
|
|
12
|
+
## CLI availability
|
|
13
|
+
|
|
14
|
+
Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
|
|
15
|
+
|
|
16
|
+
If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
|
|
17
|
+
|
|
18
|
+
Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"generator": "bin/generate-skills.js",
|
|
3
3
|
"version": 1,
|
|
4
4
|
"files": {
|
|
5
|
-
"SKILL.md": "
|
|
5
|
+
"SKILL.md": "9f08605914670f2c0bd09631d3d40c079e7f63174d1a2607e60ea6eca5d54d93",
|
|
6
6
|
"references/close.md": "095266722624e4bc647628243c8be0e69b02017ef6b4e3a7e7790ec1f53ab7c0",
|
|
7
7
|
"references/encode-pattern.md": "3be7bf9d0f69af31659423c54d6023a4af1556e2ce200fb025bf64d0757de4d8",
|
|
8
|
-
"references/task-context.md": "
|
|
8
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: handoff
|
|
3
3
|
description: Transfer operation of a customer deployment with ownership, evidence and a tested support path. Use for handoff or an engineer rotation, not merely code delivery.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# handoff
|
|
7
7
|
|
|
8
8
|
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
9
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Task context and evidence
|
|
2
|
+
|
|
3
|
+
Use this contract for standalone methods and methods routed through `@fde`.
|
|
4
|
+
|
|
5
|
+
- **Standalone work:** use the supplied, permitted facts, notes, code, and artifacts. A client name, `.fde/` directory, or initialized engagement is not a prerequisite for work on supplied context. Tasks that inspect actual records need those records; staging or saving requires a selected customer. Never fabricate records to make an operational task appear complete. Do not bootstrap records merely to run a method. Ask only for missing information or authority that changes the next action; mark other gaps as unknown.
|
|
6
|
+
- **Artifact names are destinations:** names such as `success.md`, `decisions.md`, and `delivery.md` identify relevant evidence and, when bound, record destinations. If absent, use supplied facts and return the requested draft or result in the current workspace or conversation. Do not invent files or require initialization to complete useful work.
|
|
7
|
+
- **Bound engagement:** honor the current client binding and constraints. Before reading records, run `fde privacy` to verify masking support. Obtain a fresh, identity-matching sanitized `fde resume` packet for this task (or reuse a fresh session-hook packet); retrieve missing evidence with targeted `fde recall <topic>`. Use bounded `fde handoff` for transfer work. Refresh after binding, masking, or record changes. Never substitute raw `.fde/` reads, private blocks, masking dictionaries, or full transcripts. If the CLI is unavailable, use only permitted supplied excerpts and report the context limitation.
|
|
8
|
+
- **Authority:** continue reversible work within authorized scope. Reuse prior authorization when it covers the specific action. Show consequential engagement-record judgments and uncertainties for confirmation before saving unless already explicitly confirmed. New scope, acceptance changes, production actions, exports, and external messages need the applicable authority; a method invocation alone does not supply it. Keep one customer's writes in that customer's record.
|
|
9
|
+
- **Evidence:** distinguish supplied facts, estimates, hypotheses, and unknowns. Cite actual sources; a log date is not attribution. Never invent a source, signer, signature, customer reaction, or acceptance. Keep outcomes **promised → measured → accepted** distinct, and implementation, verification, deployment, and customer acceptance separate. Missing evidence means unproven, not an observed failure.
|
|
10
|
+
- **Data boundary:** use only data permitted by the customer's AI policy; clarify unknown policy before loading their code or data. Never load `<private>` content into a model. Cross-client comparison and exporting reusable material require permission and removal of customer-identifying or confidential content; anonymization alone does not grant permission.
|
|
11
|
+
|
|
12
|
+
## CLI availability
|
|
13
|
+
|
|
14
|
+
Only locate the CLI when the selected task needs it. Check `fde` on PATH and its `fde privacy` capability before reading records. If unavailable, use `node ~/.claude/fdeops/fde.js` when the disk installer placed it there, or `npx --yes fdeops <command>` when package downloads are permitted. Respect local installation and network rules. Run commands for the user; do not turn a missing bare `fde` command into unnecessary manual setup.
|
|
15
|
+
|
|
16
|
+
If no permitted executable is available, explain the missing capability. Continue any useful draft from supplied excerpts, but do not claim to have read, switched, staged, saved or rendered real records. Do not read raw private record files as a fallback.
|
|
17
|
+
|
|
18
|
+
Apply the selected method to this context. Follow its linked supporting methods only when needed; do not restart discovery or repeat already answered questions.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generator": "bin/generate-skills.js",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"files": {
|
|
5
|
+
"SKILL.md": "4df02c561ea8d2baf66ac373d67527c8826b72d80bf7b1fedc248c45a572adf9",
|
|
6
|
+
"references/connect.md": "37ad703ece7fe3596be4d5d3697cc4ba5e6062615f9576733c20d055fc3e4927",
|
|
7
|
+
"references/debrief.md": "2d2db9a177f5341a9a2721a9d6ea32a6d07e7e982e621429ca408a38bc5617c1",
|
|
8
|
+
"references/ingest.md": "24880bc3d95cda09ec6c2f5edebd17fba99deb912f93e15c8b715a287283da84",
|
|
9
|
+
"references/source-setup.md": "a28ae7c6dbb2573a66f31b30b7abca34bc52573fe34d48fff4c7490e4dc85d3e",
|
|
10
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ingest
|
|
3
|
+
description: Fetch requested source material and prepare sourced engagement updates. Use to catch up from external notes or messages; applying updates requires a bound record and confirmation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ingest
|
|
7
|
+
|
|
8
|
+
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Fetch requested source material and prepare sourced engagement updates. Use to catch up from external notes or messages; applying updates requires a bound record and confirmation.
|
|
13
|
+
|
|
14
|
+
Read [the task context contract](references/task-context.md), then [the method](references/ingest.md). Load further references only when the task needs them. Everything linked is included in this skill; no other skill pack is required.
|
|
15
|
+
|
|
16
|
+
## Principles
|
|
17
|
+
|
|
18
|
+
- Use permitted supplied material or available source tools to prepare a sourced proposal without requiring an engagement record. CLI staging and reconciliation use a bound engagement; applying updates requires the bound record and confirmation. Do not claim an unbound draft has been saved to engagement memory.
|
|
19
|
+
- If called by @fde, reuse its current sanitized packet and scope. Do not restart setup, discovery or questions already answered.
|
|
20
|
+
- The task context contract controls persistence and authority in both modes. Preserve unknowns and distinguish implementation, verification, deployment and acceptance.
|
|
21
|
+
- Use the customer's repository instructions and available tools. Report a missing capability or unrun check honestly; do not claim that installing a skill provisions infrastructure.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# connect - Connect a source
|
|
2
|
+
|
|
3
|
+
**Enter when:** the user asks to connect a notes, chat or document source, or an expected source cannot be read.
|
|
4
|
+
|
|
5
|
+
Apply [task context](task-context.md). Source setup can run independently of a customer record. Follow [source setup](source-setup.md) for permitted tools, credentials, connectivity checks and export alternatives.
|
|
6
|
+
|
|
7
|
+
## Method
|
|
8
|
+
|
|
9
|
+
1. Identify the source and the material the user wants to read. Inspect the host's actual available tools before recommending setup.
|
|
10
|
+
2. If the source already works, use a narrowly scoped requested read. Do not install another connector.
|
|
11
|
+
3. If setup is needed, verify current provider and host documentation, explain the required access, and make only authorized configuration changes. Never put credentials into prompts or customer records.
|
|
12
|
+
4. Test the selected source and distinguish configuration from successful retrieval. If access is blocked, report the specific limitation and an available file or paste alternative.
|
|
13
|
+
5. If the user also wants to update a customer record, continue with [ingest](ingest.md) after selecting that record. Otherwise stop after the requested setup or read.
|
|
14
|
+
|
|
15
|
+
## Checkpoint
|
|
16
|
+
|
|
17
|
+
Return what is connected, what read was verified, any access gap, and how to request the next pull. Do not claim an integration works from configuration alone or write customer records during setup.
|
|
18
|
+
|
|
19
|
+
## Principles
|
|
20
|
+
|
|
21
|
+
- Existing source tools first; configuration only when needed.
|
|
22
|
+
- Minimum requested read, no ambient synchronization.
|
|
23
|
+
- Credentials stay in supported secret storage.
|
|
24
|
+
- Record updates require their own review and confirmation.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# debrief - Capture the meeting
|
|
2
|
+
|
|
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
|
+
|
|
5
|
+
**Standalone review:** apply [task context](task-context.md). If the user supplies notes and wants a summary or review, interpret them using **Prepare one update** below and return a draft. Keep requests, confirmed decisions, reported results and unknowns distinct. No CLI or customer record is needed; do not claim anything was saved. Use the bound-record path below only when updating an existing record or when the user asks to start one.
|
|
6
|
+
|
|
7
|
+
**Large transcripts or emails** sitting in Granola/Gmail/Notion → prefer **`fde ingest stage`** first (via source MCPs the FDE configured), then the same propose → confirm → **`fde ingest apply`** path. See `references/ingest.md`. Pasted short notes stay on this debrief verb.
|
|
8
|
+
|
|
9
|
+
**Read first:** the bounded `fde resume` packet for the bound client. Use `fde recall` for the specific prior decision, action, or delivery result needed to reconcile this update. Do not reload the whole engagement.
|
|
10
|
+
|
|
11
|
+
**Who runs the CLI:** you (the agent). Never tell the FDE to type `fde debrief …`.
|
|
12
|
+
|
|
13
|
+
## Honest contract (read once)
|
|
14
|
+
|
|
15
|
+
- The `fde` CLI is **local, deterministic, no AI**. `--smart` is a **gate + writer**, not a brain.
|
|
16
|
+
- It keeps lines that already have `decision:` / `risk:` / `delivery:` / `contact:` / `next:` / `signer:` prefixes, plus a thin keyword pass (e.g. "we agreed", person+verb lines, "open question", "X signs off").
|
|
17
|
+
- `signer: Priya` fills **Stakeholder who signs off** in `success.md` and logs Priya as a contact. The CLI proposes it when a sentence says someone signs off / approves / has final say. If the notes name who can say yes and the proposal does not carry a `signer:` line, add one - that is the most expensive sentence in the meeting.
|
|
18
|
+
- Heuristics can miss facts **and mislabel prefixed lines**. You interpret every candidate against the sanitized source, not just unprefixed lines. Split distinct decisions, requests, actions, and results; keep uncertainty. The user reviews meaning, never prefix syntax.
|
|
19
|
+
- `.debrief-propose` is raw lines only (no routing annotations). "Edit if mis-routed" means **rewrite the line with the right prefix**, not leave a comment in the file.
|
|
20
|
+
|
|
21
|
+
## Method (you do this work)
|
|
22
|
+
|
|
23
|
+
### Preferred path - smart debrief (messy notes)
|
|
24
|
+
|
|
25
|
+
1. Save the FDE's notes to a temp `.md` file in the workspace (or pipe stdin).
|
|
26
|
+
2. Run `fde debrief --smart <notes.md>` (or `npx fdeops debrief --smart …`).
|
|
27
|
+
3. Run `fde debrief --review` before opening an existing proposal so legacy identifiers are masked. Open the proposal only after review succeeds. Never open a proposal containing manually inserted raw private blocks. Prepare the pending proposal using **Prepare one update** below. Read only the sanitized `.debrief-propose`, never the sealed private sidecars or raw private source. Preserve privacy markers, source metadata, and complete identifier aliases such as `[[email:...]]`. The CLI restores known aliases locally on apply. Never read `.privacy/` or try to recover an identity with file tools. If an alias is truncated, retrieve a narrower excerpt; never guess or edit the token.
|
|
28
|
+
4. Run `fde debrief --review` after editing. Treat the CLI REVIEW and routing output as your validation, not a second presentation to the user. Resolve errors and replay warnings before asking for confirmation.
|
|
29
|
+
5. Show **one** concise review in chat: name the client, then the consequential changes in plain English. Include decisions, requests still unagreed, actions, reported delivery, signer or contact changes, and unresolved conflicts when present. Show the previous value only where it changes the meaning. Omit empty categories and CLI routing details; do not impose a fixed four-row card that hides other changes. If the proposal is too large to show faithfully, split the review into explicit batches; never approve hidden changes.
|
|
30
|
+
6. Ask **Save this update?** This confirms the engineer's record, not customer acceptance. On confirmation, apply precisely that proposal with `fde debrief --apply`. A material correction requires a revised review and renewed confirmation. On rejection, leave the proposal pending and do not apply.
|
|
31
|
+
7. Verify the changed facts through bounded `fde resume` / targeted `fde recall`. If a fieldbook is part of the current task, regenerate it using the existing command and destination after the confirmed save; do not make the user run it. End with a brief saved/not-saved result and the next action, not another full summary.
|
|
32
|
+
|
|
33
|
+
### Prepare one update (shared with ingest)
|
|
34
|
+
|
|
35
|
+
Do this work yourself before the human review:
|
|
36
|
+
|
|
37
|
+
- **Check meaning, not keywords.** “We settled on delaying the rewrite” is a decision; “Mara will request access” is an action, even if the heuristic calls it a contact. A wish or suggestion remains a request, not agreement. Do not infer authority, approval, a calendar date from an unanchored relative date, or production value from staging.
|
|
38
|
+
- **Make interpretation visible in the same review.** For messy or dictated input, separate consequential statements supplied by the user from your proposed interpretation. Leave a missing model, date, owner, or scope explicitly unknown; do not fill it from what seems usual. Include only interpretation calls that could change the work, not a second recap or extra approval step.
|
|
39
|
+
- **Handle changed minds without erasing history.** If the same speaker clearly corrects their own instruction ("send it Friday; actually, wait for Monday's review"), show the superseded instruction and the replacement together. Different speakers, uncertain chronology, or a new request conflicting with recorded authority remain a conflict to resolve, not permission to choose the last sentence. Keep consequential parked requests pending; omit conversational tangents. Never mark an inferred change as agreed.
|
|
40
|
+
- **Keep facts traceable.** Preserve supplied source locators on each consequential fact, using `[source: ...]`. If only a local file or staged item exists, cite that actual locator as a note source, not a customer receipt. Do not invent a meeting date or speaker. A source label is not authenticated approval.
|
|
41
|
+
- **Reconcile only what changed.** Compare affected facts with the current record using targeted retrieval. Leave unchanged sourced statements out of an accidental re-import. Preserve earlier history; record changed or conflicting claims explicitly. If everything is already recorded, say so and leave the pending proposal unapplied. If it blocks a later capture, explain that no new facts were saved and ask permission to replace that pending review; use `--replace-proposal` with the new notes only after that authorization. Do not delete proposal files or private sidecars manually. Do not use `--allow-replay` without explicit approval of an intentional repeat.
|
|
42
|
+
- **Protect the current next action.** A late meeting note does not automatically supersede a newer action. Keep older actions as dated context unless their current priority is established; show a conflict when it needs a decision. Use exactly one physical `next:` line for the current action. If multiple current actions are explicitly agreed, include them on that same line separated by semicolons; the CLI retains only the last `next:` line. Keep other dated commitments in context. Do not silently discard other commitments.
|
|
43
|
+
- **Keep memory useful.** Retain consequential facts and indispensable context; remove chatter and repetition from the proposal, not from the source. Preserve the raw input outside `.fde/` (staged material stays in `.inbox/`). Never remove privacy placeholders or modify sealed sidecars. Ask only about a consequential ambiguity that cannot remain explicitly unknown.
|
|
44
|
+
- **Structure the result.** Use `decision:` / `risk:` / `delivery:` / `contact:` / `next:` / `signer:`. Preserve `ask:` / `scope:` as explicitly proposed context when appropriate. Prepare the seven-field delivery row yourself for a reported result (see below); unknown fields stay `pending`. The human should not have to fill out a ledger to capture a meeting.
|
|
45
|
+
|
|
46
|
+
Before showing the review, check that every consequential fact in the sanitized source is represented, already recorded, or explicitly unresolved. Check classified lines as carefully as unclassified ones. Nothing is saved simply because this preparation is complete.
|
|
47
|
+
|
|
48
|
+
### Fallback - you structure, then route
|
|
49
|
+
|
|
50
|
+
If `--smart` is unavailable or you already have clean prefixes:
|
|
51
|
+
|
|
52
|
+
1. Extract into buckets - **only what was actually said**:
|
|
53
|
+
- **Decisions** - agreed, by whom, in their words where possible
|
|
54
|
+
- **Action items** - owner + due; unowned → `owner: unknown - ask`
|
|
55
|
+
- **Stakeholder signals** - tone shifts with evidence → green/amber/red
|
|
56
|
+
- **Risks** - new / confirmed / retired
|
|
57
|
+
- **Open questions** - what to chase next
|
|
58
|
+
2. Format lines as `decision:` / `risk:` / `delivery:` / `contact:` / `next:` / `signer:` (contacts may end with `[signal:green|amber|red]`).
|
|
59
|
+
3. Follow **Prepare one update** and show the same single plain-English review as the preferred path. Include every consequential change and ask **Save this update?**.
|
|
60
|
+
4. On confirm, pipe to `fde debrief` (or write a file and run it).
|
|
61
|
+
|
|
62
|
+
Ask at most one focused question at a time when ambiguity would change the record. Otherwise preserve the unknown and include it in the review. Never treat silence as confirmation.
|
|
63
|
+
|
|
64
|
+
## Artifact
|
|
65
|
+
|
|
66
|
+
- Smart apply / debrief CLI writes the dated routes into the right `.fde/` files.
|
|
67
|
+
- `next:` updates the existing `## Next action` in `context.md` (collapses duplicates). Do not append a second `## Next action` heading by hand.
|
|
68
|
+
- If you must write directly: decisions → `decisions.md`; signals → `stakeholders.md` Signal history; risks → `risks.md`; next actions → fill under the template `## Next action` in `context.md`. Prefer the CLI.
|
|
69
|
+
|
|
70
|
+
## Checkpoint
|
|
71
|
+
|
|
72
|
+
Use the single pre-save review above. After saving, report verification and the next action briefly; do not ask for a second approval or repeat the review.
|
|
73
|
+
|
|
74
|
+
## Principles
|
|
75
|
+
|
|
76
|
+
- Capture within the hour or lose the nuance.
|
|
77
|
+
- Verbatim quote outranks paraphrase; hesitation outranks quote.
|
|
78
|
+
- Signals move on evidence, never on vibe alone.
|
|
79
|
+
- A meeting with no decisions and no actions - say so; that is a finding.
|
|
80
|
+
|
|
81
|
+
## Delivery rows and repeated updates
|
|
82
|
+
|
|
83
|
+
For a measured or promised slice, use a reviewed structured line:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
delivery: Replay|risk-mitigation|zero duplicates|zero duplicates on staging|pending|[source: transcript:42]|pending
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The seven fields are Slice, Bucket, Promised, Measured, Accepted by, Evidence, Rollback. Keep unknowns `pending`; never infer approval. This lands in the value ledger during the same confirmed apply. A `delivery:` line without pipes stays a narrative note. Incorrect field counts refuse the write rather than shifting the meaning of cells.
|
|
90
|
+
|
|
91
|
+
A sourced statement already in the record triggers a replay warning. Before applying, compare newer facts and the current next action. Remove repeated statements from the proposal if this is an accidental re-import. Only after the engineer explicitly confirms an intentional repeat, apply with `fde debrief --apply --allow-replay`. This does not silently deduplicate history and does not authenticate sources.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# ingest - Ingest sources
|
|
2
|
+
|
|
3
|
+
**Enter when:** the FDE wants to catch the engagement up from external sources - "make sure Acme is up to date," "pull what's relevant," "grab today's Granola and Denise's last email." Raw transcripts and long emails that are too big to paste usefully.
|
|
4
|
+
|
|
5
|
+
**Connect / capability (different entry):** "connect a new MCP", "connect Granola/Slack/Notion", "what can you pull?" → `references/connect.md` first. Use [source setup](source-setup.md) for files and supported source tools.
|
|
6
|
+
|
|
7
|
+
**Review only:** requested source reads and a sourced draft can proceed without a customer record. Use [source setup](source-setup.md) and [debrief](debrief.md). Do not stage or apply anything until the intended customer is selected; do not silently create a record for a review-only request.
|
|
8
|
+
|
|
9
|
+
**Read first:** the bounded `fde resume` packet and targeted recall for affected prior facts. Bind the engagement before staging anything.
|
|
10
|
+
|
|
11
|
+
**Who runs the CLI:** you (the agent). Never tell the FDE to type `fde ingest …`. Never auto-apply. Never background-sync or poll sources on your own.
|
|
12
|
+
|
|
13
|
+
## Honest contract (read once)
|
|
14
|
+
|
|
15
|
+
- FDEOps owns the **sink only**: stage raw pulls → propose → confirm → apply. Nothing writes `.fde/` unreviewed.
|
|
16
|
+
- **Source MCPs are the FDE's.** Granola, Slack, Notion, Gmail, custom - whatever they configured in Cursor/Claude. fdeops does not bundle OAuth, connectors, or ambient sync, and **does not push** to those tools.
|
|
17
|
+
- Prefer **`fde ingest` in this bound workspace.** Optional `fdeops-ingest` MCP: pass `engagement` (path to `.fde/` from `fde resume --bind`) because MCP cwd often is not the client workspace.
|
|
18
|
+
- The core `fde` CLI stays local (git + file reads). Source credentials live with that MCP; fdeops never stores them.
|
|
19
|
+
- After apply, raw stays in `.inbox/`; the system of record (`.fde/`) stays thin dated facts.
|
|
20
|
+
|
|
21
|
+
## Capability check (before every pull)
|
|
22
|
+
|
|
23
|
+
List what you can actually call **this session**:
|
|
24
|
+
|
|
25
|
+
1. **Sink** - `ingest_stage` / `fde ingest` available?
|
|
26
|
+
2. **Sources** - which fetch tools exist (Granola-shaped, Slack, Notion, Drive, file-only)?
|
|
27
|
+
3. Tell the FDE in one line: *I can pull from X; Y is not connected.* If they asked to pull Y and it is missing → switch to `connect.md`. Never pretend a source exists.
|
|
28
|
+
|
|
29
|
+
## Ground loop (you do this work)
|
|
30
|
+
|
|
31
|
+
1. **Bind** the engagement (`fde resume` / registry). If multiple meetings or threads could apply, ask **one** clarifying question - which meeting, which thread, which date range.
|
|
32
|
+
2. **Capability check** (above). Then **fetch** via available source MCP(s). You pull; the CLI does not reach the network.
|
|
33
|
+
3. **Stage** - `fde ingest stage [--source NAME] [--title TEXT] [file|-]` writes raw text into `<engagement>/.inbox/` (outside the memory git ledger).
|
|
34
|
+
4. **List** (optional) - `fde ingest list` shows staged items when you need an id or filename.
|
|
35
|
+
5. **Propose** - `fde ingest propose <id-or-filename>` runs the debrief `--smart` path on the staged body (+ provenance line). Opens `.debrief-propose`.
|
|
36
|
+
6. **Prepare** - follow **Prepare one update** in `references/debrief.md`. Interpret every sanitized candidate, including already-prefixed lines; reconcile changed facts, preserve source locators, and keep raw chatter out of memory. Preserve privacy placeholders and sealed sidecars.
|
|
37
|
+
7. **Validate and show** - run `fde debrief --review` after editing, then show the same single plain-English review as debrief, including delivery changes and conflicts. Ask **Save this update?** and wait for confirmation. CLI output is agent validation, not a second user review.
|
|
38
|
+
8. **Apply and verify** - on FDE confirm only → `fde ingest apply` (= `fde debrief --apply`), then verify affected facts through bounded resume/recall. Refresh the current fieldbook if it is part of this task. On reject, leave the proposal pending; material edits require a revised review.
|
|
39
|
+
|
|
40
|
+
No invented names, meetings, or quotes. If the propose looks wrong, fix prefixes with judgment, then re-show before apply.
|
|
41
|
+
|
|
42
|
+
## Paths
|
|
43
|
+
|
|
44
|
+
| Path | Role |
|
|
45
|
+
|------|------|
|
|
46
|
+
| `~/fde-engagements/<slug>/.inbox/` | Staging for raw pulls. Not the memory ledger. NDA surface - same home tree as `.fde/`. |
|
|
47
|
+
| `~/fde-engagements/<slug>/.fde/` | System of record (unchanged contract). |
|
|
48
|
+
| `.fde/.debrief-propose` | Propose file (shared with debrief). |
|
|
49
|
+
|
|
50
|
+
## CLI verbs
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
fde ingest stage [--source NAME] [--title TEXT] [file|-]
|
|
54
|
+
fde ingest list
|
|
55
|
+
fde ingest propose <id-or-filename>
|
|
56
|
+
fde ingest apply
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Provenance
|
|
60
|
+
|
|
61
|
+
Carry an actual `[source: ...]` locator on each consequential fact. Preserve upstream IDs or links when supplied; otherwise cite the staged item path as a note source. Retain its `via:` metadata, but do not treat a standalone `via:` line as a source marker for every fact or as proof of approval. Re-imports still require semantic comparison; exact replay protection is not semantic deduplication.
|
|
62
|
+
|
|
63
|
+
## MCP sink + recipes
|
|
64
|
+
|
|
65
|
+
Optional `mcp/fdeops-ingest` wraps the same verbs over stdio. Source MCPs remain separate - the FDE adds whichever fetch tools they trust. Setup coach: `connect.md`. Portable setup guidance: [source setup](source-setup.md).
|
|
66
|
+
|
|
67
|
+
## Checkpoint
|
|
68
|
+
|
|
69
|
+
Use the single review from debrief: identify the client and sources, show consequential changes, then wait. Do not add another summary or approval step.
|
|
70
|
+
|
|
71
|
+
## Principles
|
|
72
|
+
|
|
73
|
+
- Pull on request, not on a schedule. No auto-poll, no vacuum of inbox or Slack. No posting back.
|
|
74
|
+
- Staging is not memory. Only `--apply` after confirm writes `.fde/`.
|
|
75
|
+
- Large artifact → ingest stage first; pasted short notes → debrief verb directly (`references/debrief.md`).
|