# Spec Author Instruction Guides This directory contains comprehensive instruction guides for creating each type of specification document supported by the spec-author skill. Each guide includes: - **Quick Start**: Get up and running quickly with basic commands - **Research Phase**: Guidance on researching related specs and external documentation - **Structure & Content Guide**: Detailed walkthrough of each section - **Writing Tips**: Best practices and common pitfalls - **Validation & Fixing Issues**: How to use the validation tools - **Decision-Making Framework**: Questions to ask while writing - **Next Steps**: Complete workflow from creation to completion ## Specification Types ### Business & Planning #### [Business Requirement (brd-XXX)](./business-requirement.md) Capture what problem you're solving and why it matters from a business perspective. Translate customer needs into requirements that engineering can build against. **Use when**: Documenting new features, defining business value, creating stakeholder alignment **Key sections**: Business value, user stories, acceptance criteria, success metrics #### [Technical Requirement (prd-XXX)](./technical-requirement.md) Translate business needs into specific, implementation-ready technical requirements. Bridge the gap between "what we want" and "how we'll build it." **Use when**: Defining technical implementation details, mapping business requirements to solutions **Key sections**: Technical requirements, design decisions, acceptance criteria, constraints #### [Plan (pln-XXX)](./plan.md) Document implementation roadmaps, project timelines, phases, and deliverables. Provide the "how and when" we'll build something. **Use when**: Planning project execution, defining phases and timeline, identifying dependencies **Key sections**: Phases, timeline, deliverables, dependencies, risks, resources #### [Milestone (mls-XXX)](./milestone.md) Define specific delivery checkpoints within a project, including deliverables, success criteria, and timeline. **Use when**: Defining delivery targets, communicating progress, tracking against concrete deliverables **Key sections**: Deliverables, success criteria, timeline, blockers, acceptance procedures ### Architecture & Design #### [Design Document (des-XXX)](./design-document.md) Provide the detailed architectural and technical design for a system, component, or significant feature. **Use when**: Major system redesign, architectural decisions, technology choices **Key sections**: Proposed solution, design decisions, technology stack, trade-offs, implementation plan #### [Component (cmp-XXX)](./component.md) Document individual system components or services, including responsibilities, interfaces, configuration, and deployment. **Use when**: Documenting microservices, major system components, architectural pieces **Key sections**: Responsibilities, interfaces, configuration, deployment, monitoring #### [Flow Schematic (flow-XXX)](./flow-schematic.md) Document business processes, workflows, and system flows visually and textually. Show how information moves through systems. **Use when**: Documenting user workflows, system interactions, complex processes **Key sections**: Flow diagram, step-by-step descriptions, decision points, error handling ### Data & Contracts #### [Data Model (data-XXX)](./data-model.md) Define entities, fields, relationships, and constraints for your application's data. Define the "shape" of data your system works with. **Use when**: Planning database schema, documenting entity relationships, enabling API/UI teams **Key sections**: Entity definitions, relationships, constraints, scaling considerations #### [API Contract (api-XXX)](./api-contract.md) Document the complete specification of REST/GraphQL endpoints, including request/response formats, error handling, and authentication. **Use when**: Defining API endpoints, enabling parallel frontend/backend development, creating living documentation **Key sections**: Authentication, endpoints, response formats, error handling, rate limiting ### Operations & Configuration #### [Deployment Procedure (deploy-XXX)](./deployment-procedure.md) Document step-by-step instructions for deploying systems to production, including prerequisites, procedures, rollback, and troubleshooting. **Use when**: Deploying services, creating runbooks, enabling safe operations, ensuring repeatable deployments **Key sections**: Prerequisites, deployment steps, rollback procedure, success criteria, troubleshooting #### [Configuration Schema (config-XXX)](./configuration-schema.md) Document all configurable parameters for a system, including types, valid values, defaults, and impact. **Use when**: Documenting system configuration, enabling ops teams to configure safely, supporting multiple environments **Key sections**: Configuration methods, field descriptions, validation rules, environment-specific examples ## How to Use These Guides ### For New Spec Types 1. **Choose your spec type** based on what you're documenting 2. **Go to the corresponding guide** (e.g., if creating a business requirement, read `business-requirement.md`) 3. **Follow the Quick Start** to generate a new spec from the template 4. **Work through the Research Phase** to understand context 5. **Use the Structure & Content Guide** to fill in each section 6. **Apply the Writing Tips** as you write 7. **Run validation** using the tools 8. **Follow the Decision-Making Framework** to reason through tough choices ### For Improving Existing Specs 1. **Check the appropriate guide** for what your spec should contain 2. **Review the "Validation & Fixing Issues"** section for common problems 3. **Use validation tools** to identify what's missing 4. **Fill in missing sections** using the structure guide 5. **Fix any issues** the validator identifies ### For Team Standards 1. **Each guide provides concrete standards** for each spec type 2. **Sections that are marked as "required"** should be in all specs 3. **Examples in each guide** show the expected quality and detail level 4. **Validation rules** ensure consistent structure across specs ## Quick Reference: CLI Commands ### Create a New Spec ```bash # Generate a new spec from template scripts/generate-spec.sh # Examples: scripts/generate-spec.sh business-requirement brd-001-user-export scripts/generate-spec.sh design-document des-001-export-arch scripts/generate-spec.sh api-contract api-001-export-endpoints ``` ### Validate a Spec ```bash # Check a spec for completeness and structure scripts/validate-spec.sh docs/specs/business-requirement/brd-001-user-export.md ``` Returns: - ✓ **PASS**: All required sections present and complete - ⚠ **WARNINGS**: Missing optional sections or incomplete TODOs - ✗ **ERRORS**: Missing critical sections or structural issues ### Check Completeness ```bash # See what's incomplete and what TODOs need attention scripts/check-completeness.sh docs/specs/business-requirement/brd-001-user-export.md ``` Shows: - Completion percentage - Missing sections with descriptions - TODO items that need completion - Referenced documents ### List Available Templates ```bash # See what spec types are available scripts/list-templates.sh ``` ## Workflow Example: Creating a Feature End-to-End ### Step 1: Business Requirements **Create**: `scripts/generate-spec.sh business-requirement brd-001-bulk-export` **Guide**: Follow [business-requirement.md](./business-requirement.md) **Output**: `docs/specs/business-requirement/brd-001-bulk-export.md` ### Step 2: Technical Requirements **Create**: `scripts/generate-spec.sh technical-requirement prd-001-export-api` **Guide**: Follow [technical-requirement.md](./technical-requirement.md) **Reference**: Link to BRD created in Step 1 **Output**: `docs/specs/technical-requirement/prd-001-export-api.md` ### Step 3: Design Document **Create**: `scripts/generate-spec.sh design-document des-001-export-arch` **Guide**: Follow [design-document.md](./design-document.md) **Reference**: Link to PRD and BRD **Output**: `docs/specs/design-document/des-001-export-arch.md` ### Step 4: Data Model **Create**: `scripts/generate-spec.sh data-model data-001-export-schema` **Guide**: Follow [data-model.md](./data-model.md) **Reference**: Entities used in design **Output**: `docs/specs/data-model/data-001-export-schema.md` ### Step 5: API Contract **Create**: `scripts/generate-spec.sh api-contract api-001-export-endpoints` **Guide**: Follow [api-contract.md](./api-contract.md) **Reference**: Link to technical requirements **Output**: `docs/specs/api-contract/api-001-export-endpoints.md` ### Step 6: Component Specs **Create**: `scripts/generate-spec.sh component cmp-001-export-service` **Guide**: Follow [component.md](./component.md) **Reference**: Link to design and technical requirements **Output**: `docs/specs/component/cmp-001-export-service.md` ### Step 7: Implementation Plan **Create**: `scripts/generate-spec.sh plan pln-001-export-implementation` **Guide**: Follow [plan.md](./plan.md) **Reference**: Link to all related specs **Output**: `docs/specs/plan/pln-001-export-implementation.md` ### Step 8: Define Milestones **Create**: `scripts/generate-spec.sh milestone mls-001-export-phase1` **Guide**: Follow [milestone.md](./milestone.md) **Reference**: Link to plan created in Step 7 **Output**: `docs/specs/milestone/mls-001-export-phase1.md` ### Step 9: Document Workflows **Create**: `scripts/generate-spec.sh flow-schematic flow-001-export-process` **Guide**: Follow [flow-schematic.md](./flow-schematic.md) **Reference**: Illustrate flows described in design and API **Output**: `docs/specs/flow-schematic/flow-001-export-process.md` ### Step 10: Configuration Schema **Create**: `scripts/generate-spec.sh configuration-schema config-001-export-service` **Guide**: Follow [configuration-schema.md](./configuration-schema.md) **Reference**: Used by component and deployment **Output**: `docs/specs/configuration-schema/config-001-export-service.md` ### Step 11: Deployment Procedure **Create**: `scripts/generate-spec.sh deployment-procedure deploy-001-export-production` **Guide**: Follow [deployment-procedure.md](./deployment-procedure.md) **Reference**: Link to component, configuration, and plan **Output**: `docs/specs/deployment-procedure/deploy-001-export-production.md` ## Tips for Success ### 1. Research Thoroughly - Use the Research Phase section in each guide - Look for related specs that have already been created - Research external docs using doc tools or web search - Understand the context before writing ### 2. Use CLI Tools Effectively - Start with `scripts/generate-spec.sh` to create from template (saves time) - Use `scripts/validate-spec.sh` frequently while writing (catches issues early) - Use `scripts/check-completeness.sh` to find TODOs that need attention - Run validation before considering a spec "done" ### 3. Complete All Sections - "Required" sections should be in every spec - "Optional" sections may be skipped if not applicable - Never leave placeholder text or TODO items in final specs - Incomplete specs cause confusion and rework ### 4. Link Specs Together - Reference related specs using [ID] format (e.g., `[BRD-001]`) - Show how specs depend on each other - This creates a web of related documentation - Makes specs more discoverable ### 5. Use Concrete Examples - Concrete examples are clearer than abstract descriptions - Show actual data, requests, responses - Include sample configurations - Show before/after if describing changes ### 6. Get Feedback Early - Share early drafts with stakeholders - Use validation to catch structural issues - Get domain experts to review for accuracy - Iterate based on feedback ### 7. Keep Updating - Specs should reflect current state, not initial design - Update when important decisions change - Mark what was decided and when - Document why changes were made ## Common Patterns Across Guides ### Quick Start Pattern Every guide starts with: ```bash scripts/generate-spec.sh # Edit file scripts/validate-spec.sh docs/specs/... scripts/check-completeness.sh docs/specs/... ``` ### Research Phase Pattern Every guide recommends: 1. Finding related specs 2. Understanding external context 3. Reviewing existing patterns 4. Understanding constraints/requirements ### Structure Pattern Every guide provides: - Detailed walkthrough of each section - Purpose of each section - What should be included - How detailed to be ### Validation Pattern Every guide includes: - Running the validator - Common issues and how to fix them - Checking completeness ### Decision Pattern Every guide encourages thinking through: 1. Scope/boundaries 2. Options and trade-offs 3. Specific decisions and rationale 4. Communication and approval 5. Evolution and change ## Getting Help ### For questions about a specific spec type: - Read the corresponding guide in this directory - Check the examples section for concrete examples - Review the decision-making framework for guidance ### For validation issues: - Run `./scripts/validate-spec.sh` to see what's missing - Read the "Validation & Fixing Issues" section of the guide - Check if required sections are present and complete ### For understanding the bigger picture: - Read through related guides to see how specs connect - Look at the Workflow Example to see the full flow - Review the Common Patterns section ## Next Steps 1. **Pick a spec type** you need to create 2. **Read the corresponding guide** thoroughly 3. **Run the generate command** to create from template 4. **Follow the structure guide** to fill in sections 5. **Validate frequently** as you work 6. **Fix issues** the validator identifies 7. **Get feedback** from stakeholders 8. **Consider this "complete"** when validator passes ✓ Good luck writing great specs! Remember: clear, complete specifications save time and prevent mistakes later in the development process.