specification-writing

Specification Writing

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "specification-writing" with this command: npx skills add epicenterhq/epicenter/epicenterhq-epicenter-specification-writing

Specification Writing

Follow writing-voice for prose sections.

A specification gives an agent (or human) the context they need to implement a feature autonomously. The goal is NOT to describe everything exhaustively; it's to provide enough initial context that the implementer can do their own research and make informed decisions.

Note: This guide uses [PLACEHOLDER] markers for content you must fill in. Code blocks show templates; replace all bracketed content with your feature's details.

The Core Philosophy

Specs should:

  • Provide context, not instructions: Give the "why" and "what", let the implementer figure out "how"

  • Document research, not conclusions: Show what was explored, what exists, what doesn't

  • Leave questions open: The Open Questions section is a feature, not a bug

  • Enable autonomous implementation: An agent reading this should spawn sub-agents to verify and extend

A good spec is a launching pad, not a script to follow.

Document Structure

Header (Required)

[Feature Name]

Date: [YYYY-MM-DD] Status: Draft | In Progress | Implemented Author: [Name or AI-assisted] Branch: [optional: feat/feature-name if work has started]

Overview

One paragraph max. Describe what the feature does. Don't sell it.

Overview

[One to two sentences describing what this feature adds or changes and what it enables. Be specific about the capability, not vague about benefits.]

Motivation

Structure as Current State → Problems → Desired State.

Motivation

Current State

[Show actual code or configuration demonstrating how things work TODAY. Use real code blocks, not prose descriptions.]

This creates problems:

  1. [Problem Title]: [Specific explanation of what breaks or is painful]
  2. [Problem Title]: [Specific explanation of what breaks or is painful]

Desired State

[Brief description of what the target looks like. Can include a code snippet showing the ideal API or structure.]

Research Findings

This is where specs shine. Document what you FOUND, not what you assumed.

Research Findings

[Topic Researched]

[Description of what you investigated and methodology]

[Category][Dimension 1][Dimension 2]
[Project/Lib][What they do][Their approach]
[Project/Lib][What they do][Their approach]

Key finding: [Your main discovery—could be that no standard exists, or that everyone does X]

Implication: [What this means for your design decisions]

Include:

  • What similar projects do (comparison tables)

  • What you searched for but didn't find ("No Established Pattern Exists")

  • Links or references to documentation you consulted

Design Decisions

Use a table for traceability. Every decision should have a rationale.

Design Decisions

DecisionChoiceRationale
[Decision point][What you chose][Why this over alternatives]
[Decision point][What you chose][Why this over alternatives]
[Deferred decision]Deferred[Why it's out of scope for now]

Architecture

Diagrams over prose. Show relationships visually with ASCII art.

Architecture

[Describe what the diagram shows]

┌─────────────────────────────────────────┐ │ [Component Name] │ │ ├── [field]: [type or value] │ │ └── [field]: [type or value] │ └─────────────────────────────────────────┘ │ ▼ [relationship label] ┌─────────────────────────────────────────┐ │ [Component Name] │ └─────────────────────────────────────────┘

For multi-step flows:

STEP 1: [Step name] ──────────────────── [What happens in this step]

STEP 2: [Step name] ──────────────────── [What happens in this step]

Implementation Plan

Break into phases. Use checkboxes for tracking. Phase 1 should be detailed; later phases can be rougher (the implementer will flesh them out).

Implementation Plan

Phase 1: [Phase Name]

  • 1.1 [Specific, atomic task]
  • 1.2 [Specific, atomic task]
  • 1.3 [Specific, atomic task]

Phase 2: [Phase Name]

  • 2.1 [Higher-level task—implementer will break down]
  • 2.2 [Higher-level task]

Edge Cases

List scenarios that might break assumptions or need special handling.

Edge Cases

[Scenario Name]

  1. [Initial condition]
  2. [What happens]
  3. [Expected outcome or "See Open Questions"]

[Scenario Name]

  1. [Initial condition]
  2. [What happens]
  3. [Expected outcome]

Open Questions

This section signals "you decide this" to the implementer. Include your recommendation but don't close the question.

Open Questions

  1. [Question about an unresolved design decision]

    • Options: (a) [Option A], (b) [Option B], (c) [Option C]
    • Recommendation: [Your suggestion and why, but explicitly leave it open]
  2. [Another unresolved question]

    • [Context about why this is uncertain]
    • Recommendation: [Suggestion or "Defer until X"]

Success Criteria

How do we know this is done? Checkboxes for verification.

Success Criteria

  • [Specific, verifiable outcome]
  • [Specific, verifiable outcome]
  • [Tests pass / build succeeds / docs updated]

References

Files that will be touched or consulted.

References

  • [path/to/file.ts] - [Why this file is relevant]
  • [path/to/pattern.ts] - [Pattern to follow or reference]

Good vs Bad Specs

Good Spec Characteristics

  • Research is documented: Shows what was explored, not just conclusions

  • Decisions have rationale: Every choice has a "why" in a table

  • Questions are left open: Implementer has room to decide

  • Code shows current state: Not described abstractly

  • Architecture is visual: ASCII diagrams over prose

  • Phases are actionable: Checkboxes that can be tracked

Bad Spec Characteristics

  • Prescriptive step-by-step: Reads like a tutorial, no room for autonomy

  • Assumes without research: "We'll use X" without exploring alternatives

  • Closes all questions: No Open Questions section

  • Abstract descriptions: "The system will handle Y" without showing code

  • Wall of prose: No tables, no diagrams, no structure

Writing for Agent Implementers

When an agent reads your spec, they should:

  • Understand the problem from Motivation section

  • Know what's been explored from Research Findings

  • See the proposed direction from Design Decisions

  • Have a starting point from Implementation Plan Phase 1

  • Know what to investigate further from Open Questions

The agent will then:

  • Spawn sub-agents to verify your research

  • Explore the Open Questions you left

  • Flesh out later phases of the implementation plan

  • Make decisions where you left room

If your spec is too prescriptive, the agent will blindly follow it. If it's too vague, the agent will flounder. The sweet spot is: enough context to start, enough openness to own the implementation.

Quick Reference Checklist

  • Header (Date, Status, Author)
  • Overview (1-2 sentences)
  • Motivation
    • Current State (with code)
    • Problems (numbered)
    • Desired State
  • Research Findings
    • Comparison tables
    • Key findings
    • Implications
  • Design Decisions (table with rationale)
  • Architecture (ASCII diagrams)
  • Implementation Plan (phased checkboxes)
  • Edge Cases
  • Open Questions (with recommendations)
  • Success Criteria
  • References

Not every spec needs every section. A small feature might skip Research Findings. A migration spec might focus heavily on Edge Cases. Use judgment.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

svelte

No summary provided by upstream source.

Repository SourceNeeds Review
General

documentation

No summary provided by upstream source.

Repository SourceNeeds Review
General

writing-voice

No summary provided by upstream source.

Repository SourceNeeds Review