From great-engineers
Produce a technical spec / design doc for a feature or system change. Reads the project specification (README, CLAUDE.md, manifest, ADRs, architecture docs), then dispatches an engineering persona to draft the spec in their register. Default persona auto-selected by signal — Hejlsberg for language/API, Carmack for performance, Knuth for algorithm correctness, DHH for pragmatic web app, etc. Override with --persona. Output saves to engineering/specs/<slug>.md. Use when a feature or system change needs a structured proposal before implementation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/great-engineers:engineers-write-specThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a technical spec for a feature or system change.
Produce a technical spec for a feature or system change.
This skill is the engineering equivalent of the publishers/marketers write-positioning skill — the upstream artifact that downstream work obeys. Before code is written, the spec establishes what's being built, what constraints apply, what alternatives were considered, what trade-offs were accepted, and what's still open.
The spec serves three downstream consumers:
Not for: line-level code reviews (use /engineers-design-review); craft conversations about a single function (use /engineers-channel <persona>); auto-generated documentation (this is craft work, not extraction).
When this skill is invoked with a <feature> argument and optional --persona:
Resolve the project root the same way /engineers-project-init does. Verify CLAUDE.md (or README.md) exists and the engineering/ directory is present. If engineering/ is missing, recommend running /engineers-project-init first; do not auto-create.
Read the project specification:
CLAUDE.md — orchestrator-mode notes, current spec slug, conventionsREADME.md — what the project doespackage.json, pyproject.toml, Cargo.toml, etc.) — declared dependencies, runtime versionsARCHITECTURE.md if present — system structure, load-bearing assumptionsADR/ if present — prior decisions that constrain or inform this one.great-authors/project.md if cross-craft projectResolve the persona to dispatch. If --persona is given, use it. Otherwise auto-select by signal:
| Signal in the feature description / project | Default persona |
|---|---|
| "type system", "API design", "language feature", TypeScript | anders-hejlsberg-engineer |
| "performance", "throughput", "memory", "latency", systems-level | john-carmack-engineer |
| "algorithm", "complexity", "correctness", "proof", math | don-knuth-engineer |
| "web platform", "browser API", "JavaScript", backwards compat | brendan-eich-engineer |
| "Rails", "monolith", "convention", pragmatic web app | dhh-engineer |
| "refactor", "OO design", "responsibility", clarity | sandi-metz-engineer |
| "kernel", "OS", "syscall", "ABI", low-level | linus-torvalds-engineer |
| "documentation", "legacy", "accessibility", maintenance | grace-hopper-engineer |
| "invariant", "concurrent", "formal", correctness proof | edsger-dijkstra-engineer |
| None of the above | don-knuth-engineer (the rigorous default) |
Document the choice in the spec's frontmatter.
Dispatch the persona via the Agent tool with subagent_type: "great-engineers:<persona-slug>-engineer". The brief must include:
<feature> argument, plus any context the user provided)engineering/specs/<slug>.mdThe output structure:
---
title: <Feature name>
slug: <slug>
persona: <persona-slug>
created: YYYY-MM-DD
status: draft | proposed | accepted | implemented | superseded
---
# Spec: <Title>
## Problem
<One paragraph. What is the problem? Who has it? Why now?>
## Constraints
<Bulleted list. Real constraints — runtime versions, backwards compatibility, team size, deadlines, budget. The constraints are part of the design.>
## Proposal
<2-4 paragraphs. The proposed solution, described concretely enough that the implementer can build it. Include API shapes, data structures, key code snippets where they clarify.>
## Alternatives considered
<2-4 alternatives with one paragraph each. What was rejected and why. The rejections are part of the proposal's defense.>
## Trade-offs
<Bulleted list. What the proposal costs in exchange for what it buys. Honest accounting, not advocacy.>
## Decision
<One paragraph. The chosen path, the reasoning in one or two sentences, the criterion that would invalidate the decision.>
## Open questions
<Bulleted list. Things the spec does not yet answer. The implementer is allowed to make these calls; the spec author is acknowledging the gaps.>
Save the doc to engineering/specs/<slug>.md. If the file exists, ask the user whether to overwrite, save as <slug>-v2.md, or skip.
Report:
📝 Saved to engineering/specs/<slug>.md (<word-count> words, drafted by <persona>).
Problem: <one-line summary>
Decision: <one-line summary>
Next:
- /engineers-design-review engineering/specs/<slug>.md to dispatch a panel for review
- /engineers-channel <other-persona> to refine specific sections (e.g., Knuth on the algorithm proof, Sandi Metz on the API ergonomics)
/agency-execute in great-minds.)CLAUDE.md's Current spec: field.--persona knuth or --persona dijkstra and request the ADR format explicitly. Filed for v1.0 as its own skill.Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub sethshoultes/great-engineers-plugin --plugin great-engineers-dxt