crap-analyzer
Use to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity × untested) on changed methods.…
Use to rough out a working thing fast, zero ceremony, before committing to the pipeline — the prototype IS the spec. Triggers — "/engineer.prototype", "prototype this", "quick prototype", "spike it", "rough it out", "throwaway version", "let's prototype".
$ npx -y skills add swingerman/disciplined-agentic-engineering --skill prototype --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/prototypeContext preview
The summary Claude sees to decide when to auto-load this skill.
Use to rough out a working thing fast, zero ceremony, before committing to the pipeline — the prototype IS the spec. Triggers — "/engineer.prototype", "prototype this", "quick prototype", "spike it", "rough it out", "throwaway version", "let's prototype".
name: prototype description: Use to rough out a working thing fast, zero ceremony, before committing to the pipeline — the prototype IS the spec. Triggers — "/engineer.prototype", "prototype this", "quick prototype", "spike it", "rough it out", "throwaway version", "let's prototype".
The **prototype-first path** to a feature (see `${CLAUDE_PLUGIN_ROOT}/references/two-paths.md`). Build a **rough working thing fast** and **iterate it** — no feature list, no stories, just the concept and rounds — until it converges. No ACs, no plan, no tests, no gates, no gauntlet: there is nothing to grade against yet, because **the prototype is what everything else will be graded against.** Most prototypes are learning; the ones worth keeping **convert to spec** — reaching the *same* fully-specced, hardened feature as spec-first, by build-then-spec instead of spec-then-build.
The **iteration loop is the point** — it is where the speed comes from. Expect several rounds; the "one thing it must demonstrate" sharpens as you go.
Sits *before* `discuss`/`feature-init` in ceremony: `discuss` talks an idea through; `prototype` builds it to find out. `discuss` and `feature-init` offer this path as a first-class entry.
paragraph of spec won't answer it but ten minutes of code will.
**Not for:** the real build (that's the pipeline, post-promote); anything that must be correct, tested, or hardened; grading a prototype with the gauntlet (there is no bar yet — this *is* the bar).
1. **Resolve + load** — methodology root + manifest via `${CLAUDE_PLUGIN_ROOT}/scripts/dae_resolve.py` (see `references/resolving.md`). Load `CHARTER.md` for the stack/conventions to build in, and the last ~15 lines of `.engineer/prototypes.log` to soft-match against existing prototypes and Ready features (don't re-spike something that already exists). 2. **Frame in two lines** — the rough idea, and the **one thing it must demonstrate** (the question the prototype answers). Not a spec. Derive a kebab `slug` from the idea. If an idea arg was given, use it; otherwise ask once. 3. **Build rough** — construct the minimum runnable thing that answers the question. **Speed over quality:** hardcode, stub, fake data, skip error paths, no abstractions, no tests. Match the charter's stack so it's recognizable, but nothing here is load-bearing. Keep it **runnable** — a prototype that can't be opened/run is worthless as a bar. Build directly (or one born-die builder for a big one); **no multi-agent gauntlet, no CP gates.** Land it in `prototypes/<slug>/`; ensure `prototypes/` is in `.gitignore` (throwaway by default). 4. **Capture** — write `prototypes/<slug>/PROTOTYPE.md`: the idea, the one thing it demonstrates, **how to run it**, what's faked/stubbed/hardcoded, and the open questions it surfaced. This is the "prototype is the spec" record — the human-readable intent + result. Show the user how to see it (run command, or `SendUserFile` for a visual artifact). Append one line to `.engineer/prototypes.log`: `<ISO-timestamp> | <slug> | built | <one-line what>`. 5. **Decide (human)** — recommend an outcome; the user confirms. Never auto-execute.
still zero ceremony (iteration 0.x). Update `PROTOTYPE.md`. Stay here for as many rounds as it takes — **convergence, not round count, is the exit.** This loop is where the speed lives; don't rush out of it.
`... | discarded | <why>`. The learning stays in the log.
build. This is the pivot from prototype-first into the pipeline (see `${CLAUDE_PLUGIN_ROOT}/references/two-paths.md`): a. Invoke `feature-init` with `feature_intake { status: ready, ... }` — seed `outcome`/`title` from `PROTOTYPE.md`, carry `size` if obvious. b. Copy `prototypes/<slug>/` → `features/NNN-<slug>/prototype/` (**tracked**, so the bar travels with the feature to any agent/host), and record `prototype: prototype/` in `feature.md` frontmatter. Discard the gitignored original. c. **Set the disposition (size-dialed)** — record `prototype_disposition: in-place | rebuild` in `feature.md` (defaulted from `size`, overridable): **S/M → `in-place`** (the prototype code is CP5's starting implementation; refine + verify + harden clean it); **L/XL or risky → `rebuild`** (CP5 implements fresh against the derived spec, with the prototype as the `gauntlet:` bar; its code is discarded). d. Hand off to `discover-acs` **in reverse-engineer mode** with the prototype + `PROTOTYPE.md` as the seed — this is "convert the artifact to ACs," the same RE mode onboarding uses. The prototype is **iteration 0**; `plan` (CP4) reads `prototype:` and declares it as the `gauntlet:` bar (see `references/gauntlet.md`). e. Log `... | promoted | features/NNN-<slug>/`.
Promote emits per `${CLAUDE_PLUGIN_ROOT}/references/handoff-summary.md`, `checkpoint: null` (pre-pipeline, like `discuss`). Iterate stays in the loop and emits nothing. Discard is recorded by the log line only.
(invoked on promote), `discover-acs` (the handoff target).
A methodology kit for engineering-led AI development — spec-driven, test-driven, charter-bound. ATDD + mutation testing + deterministic guardrails. AI agents do the typing. Engineers stay in charge of architecture, behavior contracts, and verification.
Repo: swingerman/disciplined-agentic-engineering
Use to produce a risk-based refactor + test plan for recently-changed code on a diff/branch/PR by computing CRAP (complexity × untested) on changed methods.…
Use to check a feature's code against the charter's architecture rules — dependency layering, cycles, forbidden patterns, file naming, file size. Triggers —…
Use to drive feature work through the Acceptance Test Driven Development workflow — Given/When/Then specs before code, a project-specific test pipeline, and…
Use when a single DAE artifact has ambiguities to resolve. Triggers — "/engineer.clarify", "clarify this spec", "resolve ambiguities", "this is vague — tighten…
Use to validate DAE artifacts for schema correctness and cross-artifact consistency. Triggers — "/engineer.consistency-check", "check consistency", "validate…
Use when a Ready feature needs its acceptance criteria discovered before specs are written. Triggers — "/engineer.discover-acs",…