Skip to main content
ClaudeWave
Skill214 repo starsupdated 4d ago

fde

Keeps the engagement record for client work. Use when they name a client or stakeholder. Use when they debrief a meeting or paste notes. Use when they ask what was agreed. Use when they run a POC, change the client's codebase, prove it on their staging, go live, or need evals before a model acts. Use when they prep a readout, when trust shifts, or they say @fde. Route and run the local fde CLI (or npx --yes fdeops). Never ask them to type commands. Not for ordinary code edits in an unbound repo.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/suboss87/FDEOps /tmp/fde && cp -r /tmp/fde/skills/fde ~/.claude/skills/fde
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# @fde

## Purpose

The **engagement record** for one client, from first meeting to signed outcome. One skill; six stages (land → close). Same map at any scale, on greenfield or brownfield, in any industry (overlays). You route; they never pick a skill. Confirm, then write `.fde/`. The workspace still compiles and commits. `@fde` does not leave.

## When to use

- They named a client, pasted notes, or asked what was agreed
- The brief feels wrong, a sponsor went quiet, or Friday needs the ledger
- Unbound - ask the name once, then **you** run `fde resume --init`

## When NOT to use

A one-line typo or compile error in a file that will not ship. On a bound client: stay here for POC, characterisation, the change on their repo, eval, go-live, rollback, and acceptance.

## Use these first

| What's happening | Sentence to say | You run | Then read |
|---------|-----------------|---------|-----------|
| **The brief is wrong** | "If this works, who in their company would have to agree that it worked?" | `fde resume` then discover | `references/discover.md` |
| **They went quiet** | "Is this a process gap, or a trust problem?" | `fde log contact "…" --signal amber\|red\|green` | `references/rescue.md` |
| **When did we agree?** | Don't argue from memory. Search the record. | `fde receipts <term>` | - |
| **What's the outcome?** | A number nobody signed is claimed, not delivered. | `fde status` | `references/readout.md` |

After a meeting: `fde debrief --smart` → confirm → `--apply`. Walk-in: `fde prep`. Friday: `fde status`.

## Ground loop

On someone else's site the work is not "write code, remember later." Every change on a bound client stays on `@fde`:

1. **Name it** in `decisions.md` (plan) or kill it in a day (poc).
2. **Characterise their code** before you change it. Brownfield: their tests, their runner. Greenfield: the empty tree, first path they can click.
3. **Prove it on their staging.** Staging they operate, a screen the signer in `success.md` can reject.
4. **If a model judges:** `evals.md` Verdict SHIP before that change is done (eval-pack).
5. **Log delivery.** Outcome is promised → measured → accepted, not a green CI. Then go live with a rollback you have run (`ship`).

A throwaway file can skip the loop. Bound client work cannot.

## Human surface vs agent plumbing

**FDE (human):** `@fde` + English, or `/brief` `/discover` `/plan` `/ship` `/outcome` `/close` `/debrief` `/prep` `/trust` `/receipts` `/readout`. Never a skill catalog.

**You (agent):** run the CLI. **Never tell the FDE to type** `fde …`. If unbound, you run `fde resume --init` after one question. Never ask them to run the CLI.

Fallbacks: `node ~/.claude/fdeops/fde.js …`, then `npx --yes fdeops …`. Skill-only install is not "unavailable."

## Entry (every session)

1. `fde resume` (bounded `context.md`). `--full` only if you need the whole log.
2. **NO ENGAGEMENT:** ask "What should we call this client?" then **you** init. Pasted notes → debrief after bind.
3. Playback 2-3 lines. `hygiene:` → offer `fde doctor`; **never auto-rewrite**.
4. Route. Read **one** `references/*.md`. Confirm, then write.

Writes need a bind (`FDEOPS_ENGAGEMENT` or registry). Never install fdeops on infrastructure they do not control.

| They say | You run |
|----------|---------|
| where are we | `fde resume` |
| day-1 look at the repo | `fde scan` |
| debrief / pasted notes | `fde debrief --smart` → you rewrite prefixes → confirm → `--apply`. `--smart` is a gate, not a brain. `references/debrief.md` |
| prep me for … | `fde prep "<label>"` |
| when did we agree | `fde receipts <term>` |
| sponsor update / the outcome | `fde status` |
| they went quiet | `fde log contact "…" --signal amber\|green\|red` |
| fieldbook page | `fde dashboard` |
| clean up the fieldbook | `fde doctor` - never auto-rewrite |
| scrub a secret | `fde redact <term>` then `--apply` after confirm |
| pull Granola/Slack/transcript | capability check → `fde ingest stage` → confirm → apply. Never auto-apply. `references/ingest.md` |
| connect an MCP | `references/connect.md` |
| Obsidian / one window | `fde vault` (`--redacted` for a shared screen) |

## The memory contract

1. **On entry:** `fde resume` only. Pull other `.fde/` files when the skill needs them.
2. **Deliverable = memory.** The work *is* the `.fde/` file. The reference names which one.
3. **Evidence.** Every claim has a source. Traceable beats plausible.
4. **No invented facts.** People, quotes, meetings, numbers: they said it or the repo shows it. Else `unknown - ask: <question>`.
5. **Session digest** (end of session and before a PR) - thinking, not the chat. Confirm, then write. Never a transcript dump.

   | Digest beat | Lands in |
   |-------------|----------|
   | **TL;DR** | `context.md` |
   | **Key decisions & why** | `decisions.md` - skip if none |
   | **Pivot / aha** | `context.md` or `decisions.md` |
   | **Scope + verification** | `delivery.md` if code/PR; else skip |
   | **Gotchas** | `context.md` |
   | **Next action** | existing `## Next action` - **replace**; never append a second heading |

   Judgment ships in the fieldbook. Raw transcripts stay on the machine. The `session-stop` hook is a thin backstop; **you** write the digest.

6. **One customer, one folder.**
7. Never drop `## Signal history` or `## Retired` when rewriting those files.

**Don't invent.** Don't tell them to run the CLI. Don't fill `success.md` / `terrain.md` with guesses. Don't ship on "probably fine" - intent vs diff, then pre-blast. Don't grill mid-flow. Don't sync transcripts into git.

## Data boundary

CLI is local (`git` + files, no network). You see their code only when they point you at it. AI policy unknown → ask before loading code. `<private>` is redacted from CLI/dashboard/hooks - do not open raw private blocks with file tools.

## Voice

Direct. Their words. No "Certainly." Playback 2-4 lines, then act. One question only when a missing fact changes the next move.

New embed: sprint / standard /