From product-wiki
Use when authoring a new Executable Implementation Spec (EIS) from a natural-language description. Triggers on "write an EIS", "create new EIS", "executable implementation spec", "/create-feature". Teaches the EIS file format, numbering, required sections, the grounding rule (must verify against src/ before writing), and the wiki-companion rule (summary under docs/wiki/eis/ plus index update).
How this skill is triggered — by the user, by Claude, or both
Slash command
/product-wiki:eis-writingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Author an EIS that follows the established format in `docs/eis/`. An EIS is a concrete, codebase-grounded implementation plan — not a design doc, not a PRD.
Author an EIS that follows the established format in docs/eis/. An EIS is a concrete, codebase-grounded implementation plan — not a design doc, not a PRD.
docs/eis/EIS-<###>-<kebab-slug>.md (three-digit zero-padded number).ls docs/eis/EIS-*.md to find the highest, then +1.stripe-integration, security-hardening, api-auth-tenant-isolation).docs/eis/. The directory docs/wiki/eis/ is ONLY for wiki summaries — never put the full spec there.Every existing EIS uses these. Use the same names.
# EIS-<###>: <Title Case Name> — H1 title.## Problem — what is wrong today, with file paths and line references. Often broken into numbered sub-problems (### 1. …). Cite real files.## Scope — a markdown table listing affected files + the issue/status for each. Columns vary (File | Issue | Severity or File | Status | Issue or File | Current Behavior | Gap), pick what fits.## Solution Design — the plan, broken into streams or numbered sub-sections, each with a short prose explanation and TypeScript code blocks showing the intended shape (imports, function signatures, key logic). Code is illustrative, not exhaustive.## Files to Create — table: File | Purpose. Omit if nothing new is created.## Files to Modify (with specific changes) — table: File | Change. The Change cell is a crisp imperative sentence per file.## Dependencies — bullet list: other EIS that must land first, env vars required, schema/migration concerns, external services.## Complexity: <S|M|L> — single letter, then bullets on scope size (file count, testing notes, risk areas).Do not invent new top-level sections. If something doesn't fit, put it inside Solution Design as a numbered sub-section.
# EIS-<###>: <Title>
## Problem
<1–2 paragraphs stating the gap. Then numbered sub-problems:>
### 1. <Sub-problem>
- `src/path/to/file.ts` — what it does wrong.
- Consequence (security, correctness, UX).
### 2. <Sub-problem>
- …
## Scope
| File | Issue | Severity |
|------|-------|----------|
| `src/…` | <what's broken> | High/Medium/Low |
## Solution Design
### 1. <Stream or fix name>
<Prose.>
```typescript
// Illustrative code for src/lib/foo.ts
export function foo() { … }
…
| File | Purpose |
|---|---|
src/lib/new-thing.ts |
| File | Change |
|---|---|
src/app/api/x/route.ts | <Imperative: "Add Zod validation via fooSchema.safeParse(body)"> |
FOO_SECRET.bar to Baz.
## 4. Grounding rule (MANDATORY)
Before writing a single line of the EIS, you must have scanned the live codebase. Concretely:
- Use `Grep`/`Glob` to locate every file you will reference in Scope, Files to Create, and Files to Modify.
- Every file path in the EIS must exist (or be a believable new file under an existing directory).
- Every "currently does X" claim in Problem must be backed by lines you actually read.
- When Solution Design says "modify `functionName()` in `src/lib/foo.ts`", that function must exist there today (or the EIS must explicitly say it is being introduced).
If a natural-language request asks for something you cannot ground in the codebase, stop and ask the user to clarify — do not hand-wave paths.
## 5. Wiki companion rule
Every new EIS ships with a summary page plus an index update. When you create `docs/eis/EIS-<###>-<slug>.md`, also:
1. Create `docs/wiki/eis/EIS-<###>.md` — a 1-page wiki summary.
- Wiki frontmatter (match the style already in `docs/wiki/eis/` — check an existing file or the wiki conventions first).
- Short prose: what problem, what solution approach, complexity.
- A link back to the raw source at `../../eis/EIS-<###>-<slug>.md`.
2. Update `docs/wiki/index.md` — add the new EIS to whatever list/section the index uses for EIS entries (mirror existing formatting).
Do not dump the full spec into the wiki file; the wiki is a navigable summary, the raw EIS is the source of truth.
## 6. Overlap check (before creating)
Read the titles + Problem sections of every existing `docs/eis/EIS-*.md`. If the NL description overlaps with an existing EIS (same files, same feature area, same gap):
- **Do not create a duplicate.**
- Either: extend the existing EIS (add a new sub-problem in Problem, new rows in Scope, new numbered Solution Design section). Return a clear diff of what you added.
- Or: abort and surface the conflict to the user — tell them which EIS overlaps and ask whether to extend it, supersede it, or proceed with a narrower scope.
Overlap signals: same `src/` files appear in the existing EIS's Scope table; same subsystem (auth, stripe, storefront, etc.); same issue numbers referenced.
## 7. Final checklist before returning
- [ ] Filename matches `EIS-<###>-<kebab-slug>.md`, number is next available.
- [ ] All 8 required sections present in order.
- [ ] Every file path referenced has been verified in the codebase.
- [ ] No duplicate of an existing EIS.
- [ ] Wiki summary at `docs/wiki/eis/EIS-<###>.md` created.
- [ ] `docs/wiki/index.md` updated.
- [ ] Complexity rating (S/M/L) set with justifying bullets.
npx claudepluginhub esxr/marketplace --plugin product-wikiGuides test-driven development for Django applications using pytest-django, factory_boy, and Django REST Framework. Covers red-green-refactor workflow, conftest fixtures, and coverage reporting.