Forward deployed engineering skills for AI coding agents.
You're on a customer site. The AI coding agent writes code in their repo. This kit is the work around that code: the brief, who can say yes, proof on their staging then live, whether they signed off, whether they can run it after you leave.
Notes stay on your laptop. Their repo stays theirs. You confirm before anything is written down.
Keep the coding pack you already use. Install this next to it. FDEOps is the client work. The other pack writes the code.
fdeopsTry it first, nothing installed. In any repo:
npx fdeops scan
Two minutes. It prints what to look at on day one and the questions to ask. Local only, nothing written.
Then install the skill:
npx skills add suboss87/fdeops --skill fde
One chat. Name the client:
@fde this is client01
That creates ~/fde-engagements/client01/.fde/ on your laptop. Paste kickoff notes in the same thread. @fde picks what to check. You still decide.
Day to day: docs/USAGE.md.
Claude Code
/plugin marketplace add suboss87/fdeops
/plugin install fdeops@fdeops
Hooks resume where you left off. Slash commands match the table below.
Cursor
After the skill install, in the client repo you have open (pointer, not a second pack):
npx fdeops adapters .See adapters/.
Air-gap, PATH, override
git clone https://github.com/suboss87/fdeops.git && node bin/install.jsIf the agent cannot create the folder:
npx fdeops resume --init client01 # ~/fde-engagements/client01Requires Node.js >= 18. Override: FDEOPS_ENGAGEMENT. See docs/install.md. Try the loop: npx fdeops demo.
One command per stage. Skills load automatically.
Six stages, same order every job: Land, Discover, Plan, Ship, Outcome, Close.
| What you're doing | Command | Stage |
|---|---|---|
| First days. Get the brief. Name who signs. | /brief |
Land |
| Check the brief is the real job. | /discover |
Discover |
| Sequence from done, not from the ticket. | /plan |
Plan |
| Prove it on their staging, then go live. | /ship |
Ship |
| What you promised, measured, and who accepted. | /outcome |
Outcome |
| Hand it over. They run it without you. | /close |
Close |
Same @fde, when you need them: /debrief (notes into the record), /prep (one page before you walk in), /trust (process gap, or they stopped trusting you), /receipts (a dated line, or it did not happen), /readout (Friday page for the sponsor; not a seventh stage).
You can also just say it: naming a client, a POC, changing their checkout, going live, asking what was agreed. A typo in a repo that is not a client job can skip this. A named client, a POC, or go-live cannot.
Thirty situations, grouped by stage. Not prompts - each one has steps, a file it writes, and a checkpoint with you. Type English or a slash command. @fde opens the matching skill. You never pick one by name.
Full detail: docs/skills-reference.md.
| Skill | What it does | Use when |
|---|---|---|
| land | Interrogate the brief | New client, first meeting, just got the brief |
| audit | Verify inherited claims | Taking over, previous consultant left |
| who-decides | Map decision rights | Need to know who matters |
| earn-trust | Earn access | Need access or credibility |
| hold-scope | Hold scope | "Also can you...", timeline unchanged |
| Skill | What it does | Use when |
|---|---|---|
| discover | Frame the problem | Brief feels wrong, shadow processes |
| test-assumptions | Test assumptions | Brief feels too neat |
| score-use-cases | Score use cases | Everything is P0 |
| poc | Validate the solution | POC, spike, need to de-risk |
| Skill | What it does | Use when |
|---|---|---|
| plan | Sequence the work | What order, what is done |
| business-case | Build the business case | Defend budget or timeline |
| three-options | Generate options | "What should we do?" |
| pick-three | Prioritize three | Everything is urgent |
| Skill | What it does | Use when |
|---|---|---|
| ship | Deliver the increment | Building, updating, or going live |
| what-breaks | Assess impact | Touching shared infrastructure |
| rescue | Resolve the incident | Down, or they went quiet |
| review | Review the change | Before merge, scope creep |
| rollback | Rehearse rollback | "We can always revert" |
| Skill | What it does | Use when |
|---|---|---|
| readout | Report the outcome | Friday, sponsor update |
| demo-prep | Prepare the demo | Demo or exec walkthrough |
| debrief | Capture the meeting | Just left a meeting |
| board-memo | Brief the board | Justify continued investment |
| dashboard | View the portfolio | All my customers |
| ingest | Ingest sources | Transcript, Notion, Slack |
| connect | Connect a source | Connect Granola |
| Skill | What it does | Use when |
|---|---|---|
| close | Transfer operations | Wrapping up |
| runbook | Write the runbook | They must operate without you |
| switch-clients | Switch engagements | 2+ clients |
| encode-pattern | Encode the pattern | It will apply again |
| red-team | Challenge the plan | "Poke holes in this" |
Overlays (on signal, not on request): ai · artifacts · fintech · healthcare · gov. AI companion (not a sixth overlay): eval-pack.
Optional pull: you add the source MCP; we pull on request. mcp/recipes/
One @fde. One file per situation. One folder per client.
"@fde this is client01" creates ~/fde-engagements/client01/.fde/
/brief or English the AI coding agent loads skills/fde/SKILL.md
│ routes. you never pick a skill by name
▼
references/<one>.md one skill, then stop
│
▼
fde CLI (local) dates, gates, redacts. no network
│ after you confirm
▼
~/fde-engagements/client01/.fde/
A dated line, or it did not happen. Promised → measured → accepted. If it is not in .fde/, it is not on the record.
Confirm, then it is written. The CLI stays on your laptop: git and files, no network. The AI coding agent runs the command. You say yes. Then it is in the folder.
The record is on your laptop. Change hosts, install @fde on the new one, keep talking. The notes are not inside any vendor.
One skill hosts load: skills/fde/SKILL.md. It opens one file in skills/fde/references/ and stops. Slash commands live in .claude/commands/. The local CLI is bin/fde.js (git + files, no network). Layout: docs/REPO_LAYOUT.md.
One folder per client. Plain markdown. Grep it, copy it, take it into a meeting.
| File | Holds |
|---|---|
context.md |
Where you are |
brief.md / success.md |
What they asked; what "done" is and who signs |
reality.md / terrain.md |
The real problem; the map |
stakeholders.md |
[signal:green|amber|red] |
trust-profile.md |
Sacred data, AI policy, approval chain |
decisions.md / risks.md / delivery.md |
Dated choices; live risks; what shipped and how it rolls back |
Schema: docs/schema.md. Local HTML: npx fdeops dashboard.
You sit with a customer's team. An AI coding agent writes in their repo. You need a record of the brief, who can say yes, what went live, and whether they signed off.
If you ship your own company's product from HQ, with no customer team that has to run it after you leave, you do not need this kit.
The CLI is local: git + files, no network, no telemetry. The host model sees .fde/ the agent loads (usually a bounded context.md) and any client code you open. It must not see <private> blocks - redacted from CLI, dashboard, and hooks; do not paste them or open them with file tools. Nothing is written until you confirm. ~/fde-engagements is in $HOME; iCloud/Dropbox is an NDA incident waiting.
AI coding agents are built for a repo, not for a client. Left alone they skip who signs, whether the brief is true, and whether anyone accepted the number. Monday they start from the ticket again.
This is the kit you take on site. @fde runs the client work around the code. A local command dates every decision. The notes are markdown on your laptop. You confirm; then it is on the record.
- Who signs - name them in the first days
- Brief vs real job - check the floor, not only the slide
- Back from done - sequence from signed-off, not from the ticket
- Their staging then live - prove it where they operate, then go live
- Promised, measured, accepted - a number nobody signed is claimed, not delivered
- They run it - if they cannot operate it without you, you are not done
- A dated line, or it did not happen - these files get defended in the room
- One customer, one folder - context never bleeds
- The kit says what to check. You still decide.
fdeops/
├── skills/fde/ # the one skill hosts load
│ ├── SKILL.md # router
│ └── references/ # 30 skills + overlays (you never pick)
│ ├── land.md # Land
│ ├── audit.md
│ ├── who-decides.md
│ ├── earn-trust.md
│ ├── hold-scope.md
│ ├── discover.md # Discover
│ ├── test-assumptions.md
│ ├── score-use-cases.md
│ ├── poc.md
│ ├── plan.md # Plan
│ ├── business-case.md
│ ├── three-options.md
│ ├── pick-three.md
│ ├── ship.md # Ship
│ ├── what-breaks.md
│ ├── rescue.md
│ ├── review.md
│ ├── rollback.md
│ ├── readout.md # Outcome
│ ├── demo-prep.md
│ ├── debrief.md
│ ├── board-memo.md
│ ├── dashboard.md
│ ├── ingest.md
│ ├── connect.md
│ ├── close.md # Close
│ ├── runbook.md
│ ├── switch-clients.md
│ ├── encode-pattern.md
│ ├── red-team.md
│ ├── ai.md # overlays (on signal)
│ ├── artifacts.md
│ ├── eval-pack.md
│ ├── fintech.md
│ ├── healthcare.md
│ └── gov.md
├── .claude/commands/ # slash commands (each loads @fde)
│ ├── brief.md
│ ├── discover.md
│ ├── plan.md
│ ├── ship.md
│ ├── outcome.md
│ ├── close.md
│ ├── trust.md
│ ├── receipts.md
│ ├── debrief.md
│ ├── prep.md
│ └── readout.md
├── .claude-plugin/ # Claude Code marketplace
├── bin/ # local CLI: git + files, no network
├── hooks/ # session-start / session-stop / pre-compact
├── adapters/ # Cursor, Gemini, Copilot, Codex pointers
├── templates/.fde/ # memory files created on first client
├── examples/ # fictional walkthroughs
├── mcp/ # optional ingest + source recipes
├── evals/ # routing checks
└── docs/ # usage, schema, install
Subash Natarajan . Issues · Discussions · CONTRIBUTING.md · Code of Conduct
Skills should be specific (actionable steps), verifiable (an artifact in .fde/), and minimal. The fde CLI stays local-only.
MIT - use these skills on client work.