fdeops 5.0.0 → 5.1.1
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 +1 -1
- package/README.md +30 -26
- package/bin/catalog-doc.js +38 -0
- package/bin/check.js +20 -49
- package/bin/fde.js +2 -2
- package/bin/generate-skills.js +9 -1
- package/bin/install.js +9 -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/audit.md +71 -0
- package/skills/audit/references/discover.md +112 -0
- package/skills/audit/references/task-context.md +18 -0
- package/skills/board-memo/.fde-generated.json +10 -0
- package/skills/board-memo/SKILL.md +21 -0
- package/skills/board-memo/references/board-memo.md +108 -0
- package/skills/board-memo/references/business-case.md +90 -0
- package/skills/board-memo/references/task-context.md +18 -0
- 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/brief/references/task-context.md +18 -0
- package/skills/build/.fde-generated.json +3 -3
- package/skills/build/references/build.md +1 -1
- package/skills/build/references/integrate.md +12 -2
- package/skills/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/business-case.md +90 -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/debug/.fde-generated.json +3 -3
- package/skills/debug/references/build.md +1 -1
- package/skills/debug/references/integrate.md +12 -2
- package/skills/debug/references/task-context.md +7 -1
- 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 +1 -1
- package/skills/discover/references/task-context.md +7 -1
- 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 +81 -0
- package/skills/earn-trust/references/task-context.md +18 -0
- package/skills/evaluate/.fde-generated.json +3 -3
- package/skills/evaluate/references/build.md +1 -1
- package/skills/evaluate/references/integrate.md +12 -2
- package/skills/evaluate/references/task-context.md +7 -1
- package/skills/fde/SKILL.md +24 -21
- package/skills/fde/references/build.md +1 -1
- package/skills/fde/references/connect.md +14 -24
- package/skills/fde/references/debrief.md +2 -0
- package/skills/fde/references/earn-trust.md +27 -46
- package/skills/fde/references/hold-scope.md +25 -24
- package/skills/fde/references/ingest.md +4 -2
- package/skills/fde/references/integrate.md +12 -2
- package/skills/fde/references/land.md +28 -28
- package/skills/fde/references/plan.md +6 -6
- package/skills/fde/references/rescue.md +18 -18
- 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/fde/references/who-decides.md +29 -57
- package/skills/feedback/.fde-generated.json +1 -1
- package/skills/feedback/references/task-context.md +7 -1
- package/skills/handoff/.fde-generated.json +1 -1
- package/skills/handoff/references/task-context.md +7 -1
- 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/integrate/.fde-generated.json +3 -3
- package/skills/integrate/references/build.md +1 -1
- package/skills/integrate/references/integrate.md +12 -2
- package/skills/integrate/references/task-context.md +7 -1
- package/skills/options/.fde-generated.json +1 -1
- package/skills/options/references/task-context.md +7 -1
- 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/plan/references/plan.md +167 -0
- package/skills/plan/references/task-context.md +18 -0
- package/skills/poc/.fde-generated.json +4 -4
- package/skills/poc/references/build.md +1 -1
- package/skills/poc/references/integrate.md +12 -2
- package/skills/poc/references/plan.md +6 -6
- package/skills/poc/references/task-context.md +7 -1
- 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 +3 -3
- package/skills/qa/references/build.md +1 -1
- package/skills/qa/references/integrate.md +12 -2
- package/skills/qa/references/task-context.md +7 -1
- package/skills/readout/.fde-generated.json +1 -1
- package/skills/readout/references/task-context.md +7 -1
- 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 +3 -3
- package/skills/review/references/build.md +1 -1
- package/skills/review/references/integrate.md +12 -2
- package/skills/review/references/task-context.md +7 -1
- 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 +2 -2
- package/skills/scope/references/hold-scope.md +25 -24
- package/skills/scope/references/task-context.md +7 -1
- 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 +3 -3
- package/skills/ship/references/build.md +1 -1
- package/skills/ship/references/integrate.md +12 -2
- package/skills/ship/references/task-context.md +7 -1
- 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 +63 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# rollback - Rehearse rollback
|
|
2
|
+
|
|
3
|
+
**Enter when:** a deploy is planned for the next 48 hours, the FDE says "we can always revert," a previous rollback failed or took too long, or the engagement involves regulated/critical systems.
|
|
4
|
+
|
|
5
|
+
**Read first:** `delivery.md` (the deployment record), `terrain.md`, `trust-profile.md` (for change-approval requirements), `context.md`.
|
|
6
|
+
|
|
7
|
+
"We can always revert" is the most dangerous sentence in deployment. A rollback plan that hasn't been tested is a wish, not a plan. The drill proves the escape route works before you need it at 2am.
|
|
8
|
+
|
|
9
|
+
## Method (you do this work)
|
|
10
|
+
|
|
11
|
+
**1. Map the rollback path for every change type:**
|
|
12
|
+
|
|
13
|
+
| Change type | Rollback method | Complication | Test |
|
|
14
|
+
|-------------|----------------|--------------|------|
|
|
15
|
+
| **Code deploy** | Revert the PR / redeploy previous version | Feature flags, cache invalidation | Deploy previous version to staging, verify function |
|
|
16
|
+
| **Database migration** | Compatible rollback, restore, or roll-forward | Irreversible transforms, concurrent writes, old/new schema compatibility | Rehearse on representative staging data; verify integrity, elapsed time, and possible data loss |
|
|
17
|
+
| **Config change** | Restore previous config | Propagation delay, dependent service restarts | Flip config, verify all services pick it up |
|
|
18
|
+
| **Infrastructure** | Terraform/Pulumi rollback or manual | State drift, dependent resources | Plan the rollback, review the diff |
|
|
19
|
+
| **Data backfill** | Restore from backup or reverse script | Mixed old/new data states | Run reverse on a 100-row sample |
|
|
20
|
+
|
|
21
|
+
**2. Identify the irreversible components.** Some changes can't be rolled back:
|
|
22
|
+
|
|
23
|
+
- Column drops after data migration
|
|
24
|
+
- Encryption key rotations after old key is destroyed
|
|
25
|
+
- External API version deprecations
|
|
26
|
+
- Emails/notifications already sent
|
|
27
|
+
- Published API changes consumed by third parties
|
|
28
|
+
|
|
29
|
+
For each irreversible component: **what's the compensating action?** Not "undo" but "what do we do to recover the same effect?"
|
|
30
|
+
|
|
31
|
+
**3. Run the drill.** On staging or a test environment - never on production:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
DRILL PROTOCOL:
|
|
35
|
+
1. Deploy the change (confirm it works)
|
|
36
|
+
2. Start a timer
|
|
37
|
+
3. Execute the documented rollback procedure - exactly as written, no shortcuts
|
|
38
|
+
4. Measure: time to complete, services affected, data state after
|
|
39
|
+
5. Verify: can users still do the critical path?
|
|
40
|
+
6. Record: what worked, what was unclear, what failed
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**4. The drill report.** Honest, specific, actionable:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## Rollback drill - <date>
|
|
47
|
+
Change: <what was deployed>
|
|
48
|
+
Environment: staging
|
|
49
|
+
Rollback method: <what was executed>
|
|
50
|
+
Time to rollback: <minutes:seconds>
|
|
51
|
+
Result: PASS / FAIL / PARTIAL
|
|
52
|
+
|
|
53
|
+
What worked:
|
|
54
|
+
- Code revert completed in 45s
|
|
55
|
+
- Feature flag disabled correctly
|
|
56
|
+
|
|
57
|
+
What didn't:
|
|
58
|
+
- Database down migration left orphan rows in junction table
|
|
59
|
+
- Cache took 3 minutes to invalidate (stale data served)
|
|
60
|
+
|
|
61
|
+
Actions before production deploy:
|
|
62
|
+
- [ ] Fix down migration to clean junction table
|
|
63
|
+
- [ ] Add cache-bust step to rollback procedure
|
|
64
|
+
- [ ] Verify cache invalidation time is acceptable
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**5. The "acceptable rollback time" conversation.** With the FDE and the team:
|
|
68
|
+
|
|
69
|
+
> "If this deploy fails in production, how long can the system be in a degraded state before it's a business problem?"
|
|
70
|
+
|
|
71
|
+
| Answer | Implication |
|
|
72
|
+
|--------|-------------|
|
|
73
|
+
| "Minutes" | Automated rollback trigger needed - human decision loop is too slow |
|
|
74
|
+
| "An hour" | Manual rollback is acceptable if the procedure is tested and documented |
|
|
75
|
+
| "A day" | Gradual rollback is fine - feature flag off, monitor, clean up next morning |
|
|
76
|
+
| "It can't fail" | Blue/green deployment with instant traffic switch - test both environments |
|
|
77
|
+
|
|
78
|
+
**6. Change-approval environments (CAB).** In regulated industries:
|
|
79
|
+
|
|
80
|
+
- The rollback procedure is part of the change ticket - filed before the approval window.
|
|
81
|
+
- The drill evidence goes with the change request: "Rollback tested on <date>, completed in <time>, no issues."
|
|
82
|
+
- A drill that fails → the change ticket isn't ready. Better to discover that now than during the CAB.
|
|
83
|
+
|
|
84
|
+
## Artifact
|
|
85
|
+
|
|
86
|
+
**`delivery.md`** - the drill report, attached to the deployment record for this change. The evidence that the rollback works.
|
|
87
|
+
|
|
88
|
+
**`risks.md`** - any irreversible components identified, with the compensating action.
|
|
89
|
+
|
|
90
|
+
**`decisions.md`** - if the drill failed and the deployment is delayed: what failed, the fix, the revised timeline.
|
|
91
|
+
|
|
92
|
+
## Checkpoint
|
|
93
|
+
|
|
94
|
+
One statement: "Rollback tested on staging. Time: <N minutes>. Result: <pass/fail>. Production deploy is / is not ready." If not ready: the specific blocker and when it'll be resolved.
|
|
95
|
+
|
|
96
|
+
## Principles
|
|
97
|
+
|
|
98
|
+
- A rollback plan that hasn't been tested is a wish.
|
|
99
|
+
- Time the drill and account for differences in production scale and operating conditions; do not assume a fixed multiplier.
|
|
100
|
+
- Identify the irreversible components and name the compensating action.
|
|
101
|
+
- The drill report is evidence for the change ticket and the team's confidence.
|
|
102
|
+
- A drill that fails is a success - you found the problem before production did.
|
|
@@ -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,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generator": "bin/generate-skills.js",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"files": {
|
|
5
|
+
"SKILL.md": "5488cddb607cb05face73ad1a838dd87babb00716544793f36997ca15dcb1560",
|
|
6
|
+
"references/close.md": "095266722624e4bc647628243c8be0e69b02017ef6b4e3a7e7790ec1f53ab7c0",
|
|
7
|
+
"references/encode-pattern.md": "3be7bf9d0f69af31659423c54d6023a4af1556e2ce200fb025bf64d0757de4d8",
|
|
8
|
+
"references/runbook.md": "1233aa1943da8db6d3c7624b7a54b3a1afc340b97e16f95d70b42cdbf521b63c",
|
|
9
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: runbook
|
|
3
|
+
description: Write an operating runbook from the delivered system and verified procedures. Use when the customer team or a successor needs to operate without the original engineer.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# runbook
|
|
7
|
+
|
|
8
|
+
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Write an operating runbook from the delivered system and verified procedures. Use when the customer team or a successor needs to operate without the original engineer.
|
|
13
|
+
|
|
14
|
+
Read [the task context contract](references/task-context.md), then [the method](references/runbook.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
|
+
- Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
|
|
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,66 @@
|
|
|
1
|
+
# close - Transfer operations
|
|
2
|
+
|
|
3
|
+
**Context:** apply [task context and evidence](task-context.md) before using the named records below.
|
|
4
|
+
|
|
5
|
+
**Enter when:** the engagement is ending - the customer team must run this without the FDE.
|
|
6
|
+
|
|
7
|
+
**Read first:** for standalone work, use the supplied permitted operating notes, evidence and ownership; no engagement binding or CLI command is required. For a bound engagement, use bounded `fde handoff` or `fde resume`, then targeted `fde recall` for missing evidence. Never initialize records merely to draft a handoff. Build the picture through relevant excerpts, not a full-directory load. Consult `terrain.md` only for code paths needed by the successor.
|
|
8
|
+
|
|
9
|
+
The engagement doesn't end at ship. It ends when the customer can maintain what was built without calling.
|
|
10
|
+
|
|
11
|
+
## Method (you do this work, with the FDE's answers)
|
|
12
|
+
|
|
13
|
+
**0. The opening question:** "What will bite them when you're gone?" Their answer shapes everything written below.
|
|
14
|
+
|
|
15
|
+
**1. The retrospective.** Work through, blame-free and specific:
|
|
16
|
+
- Did the real problem match the brief? (Compare `brief.md` vs `reality.md` - you have the receipts.)
|
|
17
|
+
- Which trust moments mattered?
|
|
18
|
+
- What did the codebase teach that `terrain.md` didn't know at the start?
|
|
19
|
+
- Which risk almost became real?
|
|
20
|
+
- AI components: did they behave in production? What failure modes did the prototype hide? Is the team equipped to maintain them?
|
|
21
|
+
|
|
22
|
+
**1b. Value + receipts close gate (refuse green close if any fail):**
|
|
23
|
+
- Primary value bucket in `success.md` matches what the sponsor funded; at least one ledger row has **Measured** (not forever-`pending`) with evidence **and a named customer-side owner in Accepted by** for that bucket - or the retrospective explicitly records “not measured; sponsor accepted pending.” A measured-but-unaccepted number closes as `claimed`; say so in the retrospective rather than closing green on arithmetic nobody signed.
|
|
24
|
+
- Audit receipt exists for the final shipped path (exceptions/operating map walked; cite file).
|
|
25
|
+
- Eval receipt: **n/a if no AI**, else final scoped eval result + operating owner and required human-review or bounded-automation authority recorded; kill switch / fallback named in `handoff.md`.
|
|
26
|
+
- One line in the retrospective: which bucket moved, by how much, vs baseline.
|
|
27
|
+
|
|
28
|
+
**2. The pattern.** Anything that happened here and will happen again - a compliance approach, a migration pattern, a stakeholder dynamic - gets encoded for reuse. Use [encode-pattern](encode-pattern.md) to distinguish candidate patterns from supported ones and protect customer data.
|
|
29
|
+
|
|
30
|
+
**3. The handoff.** Operational knowledge for the person woken at 2am, not technical documentation: the 3 things that will break and the fix for each · who holds the tribal knowledge · what each alert means · deploy and rollback in plain language. AI components additionally: model version, what normal output looks like (so drift is recognisable), fallback behaviour, who owns retraining, **how to disable the AI path without taking down the feature** - without this the team turns it off at the first misbehaviour and it stays off.
|
|
31
|
+
|
|
32
|
+
**4. Transformation engagements - four extra answers in `handoff.md`:**
|
|
33
|
+
- Who owns AI governance after the FDE leaves? (Who can pull a model from production?)
|
|
34
|
+
- The retraining trigger, exactly: "precision < 0.82 on validation for 3 consecutive weeks → <owner> retrains." A number, a condition, an owner - not "when performance drops."
|
|
35
|
+
- The operating model at scale: who coordinates twenty use cases across five teams?
|
|
36
|
+
- Decision authority for new use cases: intake, risk assessment, approver.
|
|
37
|
+
|
|
38
|
+
## Artifact
|
|
39
|
+
|
|
40
|
+
**`retrospectives/YYYY-MM-DD-<engagement>.md`** - one file per close (separate files make cross-engagement patterns scannable). **`patterns.md`** - reusable patterns extracted. **`handoff.md`** - the 2am document.
|
|
41
|
+
|
|
42
|
+
## Checkpoint
|
|
43
|
+
|
|
44
|
+
**Check the handoff as a lookup tool.** Give the intended operator one realistic task, such as finding the owner and recovery steps for a failed run. Can they locate the answer and its source in the permitted handoff without your explanation? A reader finding the instructions is not proof they can execute them; verify operation separately in the agreed safe environment. Correct the passage they could not use, rather than adding a longer introduction.
|
|
45
|
+
|
|
46
|
+
If the operator is unavailable, a fresh reviewer can attempt the same lookup using only the permitted draft and task. Report this as a simulated clarity check, not operator validation, customer approval, or a green close. Claim independent review only if a separate reviewer actually performed it; identify the reviewer and evidence available. If none is available, perform a labeled self-check and report independent review as unperformed. Use one focused pass for a consequential handoff; do not add a committee or a second approval ritual.
|
|
47
|
+
|
|
48
|
+
Direct assessment to the FDE: did the engagement achieve `success.md` · 2-3 lessons that matter · is the pattern worth encoding · is the handoff complete or where are the gaps. Also: value bucket + audit receipt green; eval **n/a or green**. Pending Measured without sponsor acceptance = gap, not green close. Honest - a gap named now is cheaper than a callback in six weeks.
|
|
49
|
+
|
|
50
|
+
## Worked example
|
|
51
|
+
|
|
52
|
+
Acme, twelve weeks in, the FDE is rolling off.
|
|
53
|
+
|
|
54
|
+
Retrospective against the receipts: `brief.md` asked for monitoring, `reality.md` proved it was ownership - and the delta is the most useful paragraph in the file, because it is exactly the argument the next engagement will need.
|
|
55
|
+
|
|
56
|
+
The close gate bites in a useful way. The ledger shows detection at 12 minutes measured across two real incidents, but **Accepted by** is empty - Marco confirmed it in Slack, Denise (finance) never did, and Denise is whose escalation started the engagement. So it closes as `claimed` with a one-line retrospective note and a named next step, rather than a green close on a number nobody with budget agreed to.
|
|
57
|
+
|
|
58
|
+
`handoff.md` is written for the person woken at 2am: the three things that break, what the page means, how to re-run manually the way Marco does, and who holds the tribal knowledge (Raj, who built the original job - credited, because he protects it now). `patterns.md` gets *"unowned job" presents as "unmonitored job"* - it has now happened twice.
|
|
59
|
+
|
|
60
|
+
## Principles
|
|
61
|
+
|
|
62
|
+
- Done = the customer operates without you.
|
|
63
|
+
- No named value bucket moved (or sponsor-accepted pending) = not a green close.
|
|
64
|
+
- The retrospective is an investment in the next engagement, not a post-mortem.
|
|
65
|
+
- Encode what repeated. The same lesson learned twice is a process failure.
|
|
66
|
+
- Write the handoff for 2am.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# encode-pattern - Encode the pattern
|
|
2
|
+
|
|
3
|
+
**Context:** apply [task context and evidence](task-context.md) before using the named records below.
|
|
4
|
+
|
|
5
|
+
**Enter when:** the engagement is closing and reusable patterns exist, a technique worked well and will apply to future clients, the FDE notices themselves doing the same thing on a second engagement, or close identified a pattern worth preserving.
|
|
6
|
+
|
|
7
|
+
**Read first:** `decisions.md`, `reality.md`, `delivery.md`, `retrospectives/`, `context.md`. Patterns live in what was *done*, not what was planned.
|
|
8
|
+
|
|
9
|
+
The difference between a 5-year FDE and a 15-year FDE is not talent - it's encoded patterns. The 15-year FDE walks into a new engagement and recognises the situation in minutes because they've seen it before, named it, and know the move. Pattern extraction turns experience into reusable intelligence.
|
|
10
|
+
|
|
11
|
+
## Method (you do this work)
|
|
12
|
+
|
|
13
|
+
**1. Identify the pattern candidates.** Scan the engagement for things that:
|
|
14
|
+
|
|
15
|
+
| Signal | Example |
|
|
16
|
+
|--------|---------|
|
|
17
|
+
| Worked well and would work again in a similar situation | The "show the workaround first" approach to earning ops team trust |
|
|
18
|
+
| Failed and the failure mode is predictable | The "refactor before understanding" mistake on legacy codebases |
|
|
19
|
+
| Was discovered late and should have been discovered early | The hidden cron job that broke the migration - always ask about cron jobs |
|
|
20
|
+
| Required a workaround that others would face too | The compliance dance for getting AI tools approved in regulated environments |
|
|
21
|
+
| Involved a political dynamic that repeats | The passed-over internal team dynamic - present in every engagement with external FDEs |
|
|
22
|
+
|
|
23
|
+
**2. Write the pattern in a transferable format.** Each pattern must be usable by a future FDE who has never heard of this engagement:
|
|
24
|
+
|
|
25
|
+
```markdown
|
|
26
|
+
## Pattern: <name>
|
|
27
|
+
|
|
28
|
+
### Situation
|
|
29
|
+
<When does this pattern apply? What does the FDE see/hear that triggers recognition?>
|
|
30
|
+
|
|
31
|
+
### The move
|
|
32
|
+
<What to do, specifically. Not advice - steps.>
|
|
33
|
+
|
|
34
|
+
### Why it works
|
|
35
|
+
<The mechanism - why this approach succeeds where the obvious approach fails.>
|
|
36
|
+
|
|
37
|
+
### Watch out for
|
|
38
|
+
<The failure mode or edge case that makes the pattern not apply.>
|
|
39
|
+
|
|
40
|
+
### Evidence
|
|
41
|
+
<Permitted source, what happened, measured result, and limits. Keep identifying evidence in its original customer record.>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**3. The pattern quality test.** Before encoding:
|
|
45
|
+
|
|
46
|
+
| Test | Pass | Fail |
|
|
47
|
+
|------|------|------|
|
|
48
|
+
| **Transferable?** | Another FDE could apply this without context from this engagement | Only makes sense if you know the specific client |
|
|
49
|
+
| **Specific enough?** | Contains concrete steps, not just principles | "Build trust" / "Communicate well" - too vague to act on |
|
|
50
|
+
| **Repeatable?** | Applies to a class of situations, not just this one | Only worked because of a unique circumstance |
|
|
51
|
+
| **Falsifiable?** | You can tell when the pattern is working or not | No way to measure whether applying it helped |
|
|
52
|
+
| **Monday bag?** | You would refuse the next similar embed without this in your bag - a named move plus an artifact you can drop on day one (pipe questions, CAB dance, eval golden shape, floor-drill script) | "We learned to communicate." Patterns that only live in this client's `.fde/` do not compound |
|
|
53
|
+
|
|
54
|
+
**4. Classify by stage.** Patterns sort into the same stages as the skills:
|
|
55
|
+
|
|
56
|
+
| Stage | Pattern type | Example |
|
|
57
|
+
|--------|-------------|---------|
|
|
58
|
+
| **Land** | Political / relational | "The passed-over team warm-up protocol" |
|
|
59
|
+
| **Discover** | Investigative / analytical | "The cron-job discovery checklist for legacy systems" |
|
|
60
|
+
| **Plan** | Structural / strategic | "The three-option presentation for nervous sponsors" |
|
|
61
|
+
| **Ship** | Technical / safety | "The Strangler Fig on financial transaction code" |
|
|
62
|
+
| **Outcome** | Operational / process | "The regulated-environment change-approval timeline buffer" |
|
|
63
|
+
| **Close** | Knowledge / handoff | "The 2am document format that actually gets used" |
|
|
64
|
+
|
|
65
|
+
**5. Version and evolve.** Patterns are living documents:
|
|
66
|
+
|
|
67
|
+
- First use: **v0.1** - hypothesis based on one engagement
|
|
68
|
+
- Later uses: record context, observed results, failures, and refinements. Repetition supplies evidence; it does not automatically validate the pattern. Promote a version when a substantive revision warrants it, not at a fixed use count.
|
|
69
|
+
- After modification: increment minor version with what changed and why
|
|
70
|
+
- After contradiction: note the counter-example, adjust the "watch out for" section
|
|
71
|
+
|
|
72
|
+
**6. Cross-engagement pattern mining.** Only when explicitly authorized for the named engagements and permitted by each customer's data policy. Keep records separate; use sanitized CLI packets or targeted recall in each authorized context, never raw file comparisons. Otherwise extract a candidate from the current permitted context only.
|
|
73
|
+
|
|
74
|
+
- Compare permitted problem summaries - do the same problems recur?
|
|
75
|
+
- Compare permitted decision summaries - are the same decisions being made?
|
|
76
|
+
- Compare permitted lessons - are the same lessons being learned twice?
|
|
77
|
+
|
|
78
|
+
A pattern learned twice is a process failure. Encoding it prevents the third time.
|
|
79
|
+
|
|
80
|
+
## Artifact
|
|
81
|
+
|
|
82
|
+
**`patterns.md`** - candidates and evidence for this engagement, indexed by stage and situation trigger. A shared library is a separate, authorized export: remove names, identifiers, distinctive operational details, secrets, and confidential code or data. Keep source receipts in the original record and export only permitted generalizations.
|
|
83
|
+
|
|
84
|
+
**`retrospectives/YYYY-MM-DD-<engagement>.md`** - reference to which patterns were extracted from this engagement.
|
|
85
|
+
|
|
86
|
+
## Checkpoint
|
|
87
|
+
|
|
88
|
+
Present the extracted patterns to the FDE: "From this engagement, I've identified N patterns worth encoding. The highest-value one is <name> because <it will apply to future engagements in these situations>." Confirm the pattern is accurate - the FDE's field judgment outranks the analysis.
|
|
89
|
+
|
|
90
|
+
## Principles
|
|
91
|
+
|
|
92
|
+
- If you did it twice, encode it. The same lesson learned three times is a failure.
|
|
93
|
+
- Patterns are steps, not principles. "Build trust" isn't a pattern; "fix a small visible bug on day one" is.
|
|
94
|
+
- Every pattern needs a situation trigger - the FDE must recognise when it applies.
|
|
95
|
+
- Version substantive changes. State the evidence and limits; repeated use is not automatic confirmation.
|
|
96
|
+
- The pattern library is the FDE's compound interest. It's what separates 5 years of experience from 1 year repeated 5 times.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# runbook - Write an operating guide
|
|
2
|
+
|
|
3
|
+
**Enter when:** the team needs instructions to operate, diagnose or recover a system, or an engineer is preparing to transfer responsibility.
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
## Match the request
|
|
8
|
+
|
|
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.
|
|
12
|
+
|
|
13
|
+
## Build the guide from evidence
|
|
14
|
+
|
|
15
|
+
Identify the system, the intended reader and the decisions that reader can make. Follow the actual operating path and include only relevant sections:
|
|
16
|
+
|
|
17
|
+
```markdown
|
|
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.
|
|
47
|
+
```
|
|
48
|
+
|
|
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.
|
|
50
|
+
|
|
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.
|
|
52
|
+
|
|
53
|
+
## Verify when requested
|
|
54
|
+
|
|
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.
|
|
56
|
+
|
|
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.
|
|
58
|
+
|
|
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.
|
|
60
|
+
|
|
61
|
+
## Deliver and retain ownership boundaries
|
|
62
|
+
|
|
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.
|
|
64
|
+
|
|
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.
|
|
66
|
+
|
|
67
|
+
## Principles
|
|
68
|
+
|
|
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,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.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"version": 1,
|
|
4
4
|
"files": {
|
|
5
5
|
"SKILL.md": "13640b029f34068b08f2b0532ad7d2bae2d1063eeff17ec85a840bfbf832311e",
|
|
6
|
-
"references/hold-scope.md": "
|
|
7
|
-
"references/task-context.md": "
|
|
6
|
+
"references/hold-scope.md": "7779188df1d7f5aef9f878719499f9c0e974deba45289329ae8fa3d62e6c5090",
|
|
7
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -6,51 +6,52 @@
|
|
|
6
6
|
|
|
7
7
|
**Read first:** `success.md` (the agreed boundary), `decisions.md`, `context.md`. Load `stakeholders.md` to know who's asking and their signal.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Small requests can accumulate into material changes to cost, timing or acceptance. Compare the request with the actual agreement before classifying it; an adjacent request may already be in scope, and a clarification is not automatically an addition.
|
|
10
10
|
|
|
11
11
|
## Method (you do this work)
|
|
12
12
|
|
|
13
|
-
**1. Detect before it compounds.**
|
|
13
|
+
**1. Detect before it compounds.** Patterns worth checking against the agreement:
|
|
14
14
|
|
|
15
|
-
| Pattern | What it sounds like | What
|
|
15
|
+
| Pattern | What it sounds like | What to check |
|
|
16
16
|
|---------|--------------------|--------------------------|
|
|
17
|
-
| **The friendly addition** | "While you're in there, could you also…" |
|
|
18
|
-
| **The evolved requirement** | "Oh, what I actually meant was…" |
|
|
19
|
-
| **The stakeholder swap** | A new person starts requesting features the original sponsor didn't |
|
|
17
|
+
| **The friendly addition** | "While you're in there, could you also…" | Whether the work is already covered and what it changes |
|
|
18
|
+
| **The evolved requirement** | "Oh, what I actually meant was…" | Whether this clarifies existing acceptance or proposes a change |
|
|
19
|
+
| **The stakeholder swap** | A new person starts requesting features the original sponsor didn't | The requester's authority and whether the request changes the agreed outcome |
|
|
20
20
|
|
|
21
|
-
**2. The scope receipt.**
|
|
21
|
+
**2. The scope receipt.** Record consequential proposed changes and cumulative impact in the existing task or engagement record. Routine clarifications within confirmed scope can share a concise update; do not add a separate ceremony for each request. Distinguish estimates from measured effort and proposals from decisions:
|
|
22
22
|
|
|
23
23
|
```markdown
|
|
24
24
|
## Scope change - <date>
|
|
25
25
|
Requested by: <who>
|
|
26
26
|
Request: <what, in their words>
|
|
27
|
-
Impact: <
|
|
28
|
-
|
|
27
|
+
Impact: <estimate with assumptions, or unknown; affected work/risk/acceptance>
|
|
28
|
+
Authority: <applicable agreement/decision source or unknown>
|
|
29
|
+
Status: proposed / confirmed in scope / agreed change / deferred / declined / disputed
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
Show consequential judgments and uncertainties for confirmation before saving unless already explicitly confirmed. Use the existing task or `decisions.md` workflow; label an unapproved request as proposed rather than logging it as an agreed scope change.
|
|
32
33
|
|
|
33
|
-
**3.
|
|
34
|
+
**3. Recommend a disposition.** Explain the fit and tradeoffs; use the relevant authority for any change:
|
|
34
35
|
|
|
35
36
|
| Bucket | What you say | When to use |
|
|
36
37
|
|--------|-------------|-------------|
|
|
37
|
-
| **This phase** | "That
|
|
38
|
-
| **Next phase** | "
|
|
39
|
-
| **Separate engagement** | "That's a different problem - it deserves its own brief and its own timeline." | The request
|
|
38
|
+
| **This phase** | "That is covered by the current agreement. Here is its impact on the plan." | The request is within confirmed scope and authority; do not promise unchanged timing without evidence |
|
|
39
|
+
| **Next phase** | "This adds <impact>. I recommend deferring it or agreeing a tradeoff." | The request changes current commitments; a future phase is proposed, not promised |
|
|
40
|
+
| **Separate engagement** | "That's a different problem - it deserves its own brief and its own timeline." | The request requires a materially different outcome, access or commercial agreement |
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
Decline a request clearly when it conflicts with policy or the applicable authority rejects it. No wording can substitute for a real scope decision.
|
|
42
43
|
|
|
43
44
|
**4. The accumulation conversation.** When the scope receipts show a pattern - a material cumulative impact on delivery, cost, risk, or acceptance - the FDE needs a conversation with the sponsor:
|
|
44
45
|
|
|
45
46
|
Frame it as **protection, not complaint:**
|
|
46
47
|
> "We've absorbed five changes since the original agreement. Each one made sense individually. Together, they've added roughly two weeks. I want to make sure the timeline expectation still matches - should we adjust the delivery date, or reprioritise to keep the original date?"
|
|
47
48
|
|
|
48
|
-
Evidence-based: point to `decisions.md` scope receipts with dates and requesters.
|
|
49
|
+
Evidence-based: point to `decisions.md` scope receipts with dates and requesters. Use the actual scope decision-maker; sponsorship alone does not establish delegated authority.
|
|
49
50
|
|
|
50
51
|
**5. The commercial boundary.** In paid engagements, scope creep silently moves billing and liability:
|
|
51
52
|
|
|
52
53
|
- If the engagement is time-and-materials: scope creep is the client's money, but flag it - they deserve to know what they're buying.
|
|
53
|
-
- If the engagement is fixed-price:
|
|
54
|
+
- If the engagement is fixed-price: check the change terms and contingency; material changes may affect margin or commitments. Surface the evidence to whoever owns the commercials.
|
|
54
55
|
- If the engagement has a success fee: scope changes that move the success criteria affect compensation. Log it.
|
|
55
56
|
|
|
56
57
|
## Artifact
|
|
@@ -69,15 +70,15 @@ Acme, week 5. Nothing has been formally added, and the slice is a week late.
|
|
|
69
70
|
|
|
70
71
|
The pattern shows in three requests: a "quick" finance CSV export (Jun 20, half a day, from Denise directly), retry-logic cleanup asked for mid-build (Jun 24, one day, Tom), and a dashboard tile "while you're in there" (Jun 27, half a day). Each sounds reasonable; their cumulative estimates explain part of the slip and need a scope decision.
|
|
71
72
|
|
|
72
|
-
Three-bucket response, applied while the requests can still be placed: the CSV export fits this phase only with an accepted trade (it displaces the runbook polish), the retry cleanup goes to the kill list in `decisions.md` with the what-breaks reason, and the tile is absorbed because it is genuinely twenty minutes -
|
|
73
|
+
Three-bucket response, applied while the requests can still be placed: the CSV export fits this phase only with an accepted trade (it displaces the runbook polish), the retry cleanup goes to the kill list in `decisions.md` with the what-breaks reason, and the tile is absorbed because it is genuinely twenty minutes - included in the existing progress receipt so cumulative impact remains visible.
|
|
73
74
|
|
|
74
|
-
That conversation happens with Priya when the added work threatens the date, with the receipts on screen: "here are the asks, their estimated impact, and what moved."
|
|
75
|
+
That conversation happens with Priya when the added work threatens the date, with the receipts on screen: "here are the asks, their estimated impact, and what moved." Confirm Priya holds the relevant scope authority before treating her response as agreement.
|
|
75
76
|
|
|
76
77
|
## Principles
|
|
77
78
|
|
|
78
|
-
-
|
|
79
|
-
-
|
|
79
|
+
- Compare requests with the agreement before classifying them.
|
|
80
|
+
- Record consequential changes with their source, authority and status; batch routine work.
|
|
80
81
|
- Escalate material impact, not an arbitrary count of requests.
|
|
81
|
-
-
|
|
82
|
-
- `success.md`
|
|
83
|
-
-
|
|
82
|
+
- Missing boundaries do not grant permission to expand scope.
|
|
83
|
+
- `success.md` records agreed scope; it does not replace the governing agreement.
|
|
84
|
+
- Make tradeoffs visible without inventing motives, approval or future commitments.
|
|
@@ -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,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"generator": "bin/generate-skills.js",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"files": {
|
|
5
|
+
"SKILL.md": "d201fe1d784eea04ce25bde63fb3e6beb129ac4924b8f654b7c4fd5b3022f2d1",
|
|
6
|
+
"references/business-case.md": "32e000e8351cd59f9eaad8be40babb276df69948ea4f81e01a4672e47f48cb25",
|
|
7
|
+
"references/score-use-cases.md": "bb304cf2de26a2df0b9f2a299e3a6b2760ebce15b8b523d9cb4a584cc26038f8",
|
|
8
|
+
"references/task-context.md": "73eea2d7f164fac3226599e5be26ae4e79dcf69e0d24428dd12d623861410490"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: score-use-cases
|
|
3
|
+
description: Compare competing customer use cases by value, feasibility and evidence. Use when several problems compete for delivery capacity.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# score-use-cases
|
|
7
|
+
|
|
8
|
+
<!-- Generated by bin/generate-skills.js; edit the canonical references and catalog. -->
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
Compare competing customer use cases by value, feasibility and evidence. Use when several problems compete for delivery capacity.
|
|
13
|
+
|
|
14
|
+
Read [the task context contract](references/task-context.md), then [the method](references/score-use-cases.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
|
+
- Work directly from the supplied permitted context. Standalone work does not require an engagement folder or initialization. Record filenames in the method are optional persistence destinations when no engagement is bound.
|
|
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.
|