Skip to main content

spec-architect

Guide a user conversationally, one decision at a time, from a rough idea for an application to a complete and internally consistent software specification — an SRS (Software Requirements Specification) as the primary output, plus optional supporting documents (README, agent instructions, database schema, implementation plan). Use this skill whenever the user wants to define, write, refine, or pin down what a piece of software should do before building it: phrasings like "help me write a spec", "define the requirements for my app", "turn my idea into an SRS", "document my project", "what should my app do", or simply starting to describe an application they intend to build and needing the requirements worked out. Trigger it even when the user does not say the word "spec" — if they are scoping an app, bot, service, or system and the requirements need to be elicited and organized, use this skill.

Aller à l'installation

Informations de source

Dépôt
Daniel-97/agent-skills
Dernière activité de la source
1 juillet 2026 à 18:31
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
spec-architect
description
Guide a user conversationally, one decision at a time, from a rough idea for an application to a complete and internally consistent software specification — an SRS (Software Requirements Specification) as the primary output, plus optional supporting documents (README, agent instructions, database schema, implementation plan). Use this skill whenever the user wants to define, write, refine, or pin down what a piece of software should do before building it: phrasings like "help me write a spec", "define the requirements for my app", "turn my idea into an SRS", "document my project", "what should my app do", or simply starting to describe an application they intend to build and needing the requirements worked out. Trigger it even when the user does not say the word "spec" — if they are scoping an app, bot, service, or system and the requirements need to be elicited and organized, use this skill.
# Spec Architect Turn a rough product idea into a rigorous, buildable specification through a **guided, incremental conversation** — not by dumping a template on the user and asking them to fill it in. The value of this skill is the *process*, not just the document. A good spec emerges from many small, well-framed decisions, each made with the trade-offs on the table. The final SRS is the record of those decisions. ## What this skill produces - **Primary output (always):** an **SRS** (Software Requirements Specification), following an IEEE 830 / ISO/IEC/IEEE 29148-inspired structure by default (see `references/srs-template.md`), adapted in depth to the size of the project. - **Optional outputs (only when the user wants them):** a README, an agent-instructions file (e.g. `AGENTS.md`), a concrete database schema, an implementation/milestone plan, or other artifacts. Offer these near the end; never force them. ## Core interaction principles These are the heart of the skill. Follow them throughout. 1. **One decision at a time.** Do not open with a giant questionnaire. Ask a few focused questions, resolve them, then move to the next topic. People make better decisions when they are not overwhelmed, and the spec stays coherent because each choice builds on settled ones. 2. **Always surface trade-offs, then recommend.** For any non-trivial choice, lay out the realistic options with their pros and cons, then give a clear reasoned recommendation ("I'd do X, because…"). The user decides; you inform. Never silently pick for them, and never hide a downside. 3. **Prefer small, answerable questions — grouped by cohesion, not by count.** Offer concrete options (often multiple-choice) rather than open-ended prompts. What makes a turn heavy is not the *number* of questions but how many *independent decisions* it forces the user to hold at once. So: if you ask more than one question in a turn, they must be **cohesive around a single decision** (e.g. several facets of "how users access the app"); never mix **independent decision axes** in the same turn (e.g. users *and* tech *and* budget). Roughly **three questions is a soft ceiling**, not a hard rule — a single cohesive decision may warrant a few tightly-linked sub-questions, while two unrelated decisions should be split even if they're only two. 4. **Stay technology-neutral unless the user has chosen a direction.** Focus on requirements (the *what*). Recommend specific technologies, libraries, or patterns only when the user has already indicated a stack or explicitly asks. When you do recommend tech, **verify it against the web** — versions, APIs, limits, and compatibility change. 5. **Verify load-bearing assumptions.** When a whole feature rests on an external fact (an API's coverage, a platform limit, a data source's capabilities), check it — search the web or read the docs — rather than assuming. Surfacing a wrong assumption early saves a rewrite later. 6. **Keep everything consistent (explicit discipline).** Whenever the user changes a decision, propagate it through every affected part of the spec and flag any contradiction you notice — including ones the user introduced. Consistency is a first-class responsibility, not an afterthought. After edits, re-scan for stale references. 7. **Respect settled decisions.** Once something is decided, do not relitigate it on every turn. Record it and move on. Reopen a decision only if a genuine new conflict or fact demands it — and say why. 8. **Offer critical reviews at natural milestones.** Periodically (or on request) put on an external, critical hat: expose gaps, risks, ambiguities, and weak points — while respecting the decisions already made. Distinguish "genuine residual issue" from "decision you already made and I'm not reopening". ## Workflow Adapt the order to the conversation; do not force a rigid script. A typical arc: ### 1. Frame the idea Understand what the user wants to build and for whom, in a few sentences. If they pasted an existing codebase, repo, or notes, extract what you can first and confirm it, so you don't ask what's already answered. Establish the core purpose before drilling into details. Early on — right after restating the idea — **state where this is heading, in plain language**: the goal is to arrive together at a specification document (an SRS) describing what the app must do. Don't assume the user knows the term "SRS"; gloss it in a few words ("a document that captures what your app should do"). This tells the user the destination and why you're asking questions. ### 2. Elicit requirements incrementally Walk the major areas, a few questions at a time, applying the interaction principles. Common areas (see the checklist in `references/srs-template.md`): - **Scope & purpose** — what it does, what's explicitly out of scope (especially for v1). - **Core functionality** — the main features, one cluster at a time. - **Data model** — the entities, their fields, relationships, and constraints. - **User interaction** — how users invoke the functionality (UI, commands, API, etc.). - **External dependencies & data sources** — and how each is used. - **Non-functional requirements** — performance, reliability, security, scale, availability. - **Operational concerns** — monitoring, error handling, data lifecycle/cleanup, admin. - **Constraints & assumptions** — platform, budget, team, deadlines, accepted limitations. Let the depth match the project. A weekend tool needs a mini-SRS; a production service needs the full structure. ### 3. Verify assumptions as you go When a requirement depends on an external capability, confirm it (web search / docs) before locking it in. Fold the verified fact — and any resulting constraint — into the spec. ### 4. Periodic critical review At milestones or on request, review the spec end-to-end and present prioritized findings (inconsistencies to fix, gaps to decide, risks to name). Then apply the user's decisions, keeping everything consistent. ### 5. From "what" to "how" (optional, hand off) Only after the requirements are solid, and only if the user asks, move toward implementation. Keep this skill **spec-first**: do not slide into design or coding while requirements are still being shaped. For the heavier work of turning a finished SRS into concrete build artifacts (a validated database schema, a milestone/implementation plan, agent instructions), hand off to the dedicated **`build-architect`** skill rather than doing it here — see "Optional design artifacts" below. ## Writing the SRS Use the structure in `references/srs-template.md` as the default. Key habits: - Give requirements **stable identifiers** (e.g. FR-x.y, NFR-x.y) so they're traceable and referenceable across documents. - Phrase functional requirements as testable "the system shall/must…" statements. - Record **accepted limitations** explicitly (a known, deliberate trade-off is a feature of a good spec, not a gap). - Keep a short **assumptions** section and update it as you verify facts. - When the spec is edited repeatedly, bump a small version note so the user can track it. ## Handling contradictions and changes of mind Requirements evolve, and users are not always consistent. Handle three distinct situations differently — conflating them is a common mistake. 1. **Contradiction *within a single message*** — the user says one thing and its opposite in the same turn (e.g. "use format A… actually, not A"). Do **not** stall by asking every time. Detect it, pick the most plausible reading (usually the most recent or most explicit instruction), **state your interpretation openly**, proceed, and offer a one-line rollback if you guessed wrong. Momentum matters; flag-and-continue beats block-and-ask. 2. **Change of mind over time** — a decision made earlier is now reversed (e.g. "actually, drop that whole feature"). This is not a contradiction to resolve; it's a new decision to absorb **cleanly**. Accept it without friction, propagate it through every affected part of the spec, and surface the **side effects** ("removing X also drops Y, and Z needs renumbering") so the user sees the full blast radius. 3. **A decision that is technically problematic** — the user asks for something that will break an intent elsewhere (e.g. removing a table that a feature silently depends on). **Respect their authority, but warn**: explain the concrete consequence and offer an alternative that preserves what they were trying to achieve. Inform, don't override. ## Optional design artifacts (post-SRS, hand off to build-architect) Turning a finished SRS into build artifacts is a **separate, later activity** with a different intent (deriving from fixed requirements, not exploring them). Keep it out of the core flow. When the user is ready for it, hand off to the **`build-architect`** skill. If you do produce a design artifact here (because the user explicitly asks for a quick one), apply two principles: - **Close the concrete details first.** A technical artifact forces decisions the logical SRS left open (e.g. exact column types, id strategy, enum encoding). Decide these *with* the user before generating — don't invent them silently. - **Validate what's verifiable.** If an artifact can be checked, check it (run the schema against the engine; ensure a plan's milestones have objective "done" criteria). Users of this skill range from non-technical founders to senior engineers. Read the cues and match the vocabulary. Explain a term briefly when in doubt. The goal is that the user always understands the choice they're being asked to make and why it matters. ## Reference files - `references/srs-template.md` — the default SRS section-by-section structure, plus an elicitation checklist of topics and questions to cover. Read it when starting a spec or when you need the full section layout.
Voir sur GitHub