Skip to content
Back to skills

Ef Implement

ASecurity

Stage 4 - turn closed decisions and a written contract into checks with named proofs, then orchestrate the build in parallel slices and hand a whole feature to the audit. Use when discovery closed, the contract is written, or the user says implement this feature, build this ticket, extract a checklist, ef-implement. Do NOT use when nobody has decided what to build, or to design the work.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 10, 2026
ai-agentsgoapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 10, 2026

npx -y skills add micaelcf/ef-harness --skill ef-implement --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ef Implement?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ef Implement
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/micaelcf-ef-implement/badge)](https://www.skillsdirectory.com/skills/micaelcf-ef-implement)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ef-implement
description: "Stage 4 - turn closed decisions and a written contract into checks with named proofs, then orchestrate the build in parallel slices and hand a whole feature to the audit. Use when discovery closed, the contract is written, or the user says implement this feature, build this ticket, extract a checklist, ef-implement. Do NOT use when nobody has decided what to build, or to design the work."
---

# EF Implement — Stage 4 of 5

Stage 4 of 5 · per target repo · after `/ef:perspective-discovery` · next: `/ef:audit`

```
EXTRACT ─────────→ BUILD ─────────→ VERIFY
(checks + proofs)  (your call)      (Stage 5, fresh agent, whole feature)
```

The thinking already happened in Stages 1–3. Your job is to lose nothing from it, prove what you
build, and hand a *whole feature* to Stage 5. **How** you build is yours — no phases, no task list,
no step-by-step.

## Inputs — all three, or stop and run that stage

- the **requirement identifiers** this repo owns, from the PRD, and `grill-decisions` as the
  rationale authority over the RFC and PRD
- the **contract** written at the end of Stage 3, in `.ef/<feature>/checks.md`. If it exists only in a
  conversation, it does not exist: parallel slices cannot read a conversation
- an **anchor table** with no unresolved `FICTION`/`CHANGED` on a load-bearing claim

## Bindings

Every concrete command, identifier rule and convention comes from the repository, never from this
skill. Read the `ef-harness` block in the repo's context file; the contract carries the
feature-specific delta.

Where the block is absent, derive the gates from the task runner and the CI workflows, propose them,
and offer to write the block. **Never invent a command** — a proof that cannot run is worse than no
proof. Prefer a command that already runs in CI.

## Critical rules

1. Every check names its **proof**: the specific test whose exit code settles it. The whole suite is
   not a proof — a suite going green says nothing about *this* claim. No proof, no check.
2. Tests assert what the check says, never what the code happens to do. **Never write a test by
   reading the implementation.**
3. Never weaken an assertion, delete a test, or skip one to make a suite pass. A red proof is a
   stop, not a note. If a check turns out to be wrong or impossible, stop and renegotiate.
4. The checks do not change while you build. Once written they are the bar you build under, not a
   position to argue against; lowering them is renegotiation with the user, visible in the diff.
   `Landing` is the exception, and it is additive.
5. **You never verify your own work.** Stage 5 is dispatched by whoever holds the whole feature,
   after the last wave, over the whole feature range. A build slice finishes, reports, and stops — it
   never spawns an agent at all.
6. **Blast radius:** an approved checklist authorises local edits and local commits. Pushing,
   deploying and production data changes need an explicit go-ahead.

---

## Extract

Read the contract and the requirements completely first, then walk the code they touch, so the checks
land on real paths and reuse what exists.

**Refuse rather than guess.** Three things must be true of every check:

- a **nameable proof** — if you cannot say which test would settle it, it is too vague to write down
- a **concrete value** — a status code, a field, a bound. Never "properly", "gracefully", "fast"
- the **boundary** is stated — you can say what is explicitly out

Missing one is normal and asking is cheap. Proceeding on a guess is not: a vague check becomes a
vague assertion that passes, which is the single failure this stage exists to prevent.

Then walk `references/sweep.md` — the requirements nobody writes down — and say where each one
landed. "Already covered by X" and "not in scope because X" are complete answers. Silence is not, and
neither is a generic one: *"authorization: handled"* is silence with a word in front of it.

Raising a sweep item is always free. Growing scope is the user's call.

### Format

Read `references/checklist-format.md` when you write `.ef/<feature>/checks.md` — after the contract is
read, the refuse gate is passed and the sweep is walked. Do not load it during the first pass.

---

## Build

You decide how. Write the tests from the checks, implement, run each proof, commit in coherent
pieces following the repo's commit convention.

Slices run in **parallel**, one agent per ownership set. `references/orchestration.md` holds the
weighing, the ownership rules and the wave boundary.

Two boundaries, about scope rather than care: capability nobody asked for and unrelated refactors are
not yours to add — surface them and move on. Everything else inside the work at hand is the work: a
guard clause, a clear error message, a test beyond the proofs when you can say what *should* happen
at an edge the checks did not name. Extra tests are welcome and there is no quota.

Doors get discovered while building, and deciding them is yours. Then record: append the row to
`Landing` with its literal shape and the alternative you rejected, **before the code that closes it
is written**. The timing is the mechanism — an alternative is only knowable while you are still
choosing between them. Written at the end it becomes a justification of what you already did.

---

## Verify → Stage 5

When the last wave is green and the gates pass, **you** dispatch `/ef:audit <docs> audit` over
`<feature base>..HEAD` with every check in scope.

Not from inside a slice, and not scoped to the last wave. An auditor briefed by the agent that closed
the final wave inherits that agent's scope even though it inherits none of its tokens — it gets
pointed at the last wave, and a pass over four checks reads exactly like a pass over forty.

---

## Amend the feature docs

Implementation is where the design meets the code, and the code wins. Record what you learned in the
RFC and PRD the next repository will read: a shipped shape that differs from the design, a promised
mechanism that does not exist, a pre-existing defect surfaced in the blast radius, an assumption whose
invalidation trigger fired.

See the `ef-feature-docs` skill's `references/amendments.md`. Nothing enforces this; it is also the highest
value thing this stage produces for anyone but you.

---

## Knowledge chain

In strict order: existing code and conventions, project docs, library documentation, web search, then
flag as uncertain. Never invent an API, a flag or a behaviour. *"I could not find documentation for
this"* always beats a plausible fabrication.

---

## Common failures

- **A proof that names a suite.** The suite going green says nothing about this claim.
- **The author verified their own work** — a slice spawned a checker, or the lead re-read its own diff
  and called it verification.
- **A test written from the implementation** — the assertion mirrors what the code does, so it cannot
  fail when the behaviour is wrong.
- **A slice split mid-outcome** — the next agent inherits half an outcome that is green and
  incomplete.
- **A `Landing` row written at the end** — then it is a justification, not a decision.
- **A generic sweep answer** — a category answered without binding it to this repo.
- **A gate command invented because none was found** — a proof that cannot run.

Files in this skill

  • SKILL.md7.2 KB
  • references/checklist-format.md8.1 KB
  • references/orchestration.md5.2 KB
  • references/sweep.md4.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.