Specky
Specky is a CLI and MCP server for Spec-Driven Development (SDD) that enforces a deterministic 10-phase pipeline from ideation to release, providing 58 tools across the full development lifecycle.
Pipeline & Project Management
Initialize projects (
sdd_init), gather structured requirements (sdd_discover), track pipeline status (sdd_get_status), advance phases (sdd_advance_phase), and scan existing codebases (sdd_scan_codebase).
Specification Writing & Validation
Write EARS-validated requirements (
sdd_write_spec), resolve ambiguities (sdd_clarify), validate EARS patterns (sdd_validate_ears), or generate a full spec from plain language in one call (sdd_turnkey_spec).
Design & Architecture
Produce complete design documents with C4 models, ADRs, and API contracts (
sdd_write_design). Generate 17 types of Mermaid diagrams (sdd_generate_diagram) or all at once (sdd_generate_all_diagrams).
Task Planning & Implementation
Break down projects into sequenced tasks with dependency graphs and effort estimates (
sdd_write_tasks), then generate an ordered implementation roadmap (sdd_implement).
Quality, Analysis & Compliance
Run cross-artifact consistency checks (
sdd_cross_analyze), detect spec-to-code drift (sdd_check_sync), verify task completions (sdd_verify_tasks), and check compliance against HIPAA, SOC2, GDPR, PCI-DSS, and ISO 27001 (sdd_compliance_check).
Input & Document Import
Parse meeting transcripts (
sdd_import_transcript), convert PDF/DOCX/PPTX documents (sdd_import_document), extract Figma designs (sdd_figma_to_spec), or run the full pipeline automatically from a transcript (sdd_auto_pipeline).
Infrastructure as Code & Dev Environments
Generate Terraform/Bicep IaC (
sdd_generate_iac), Dockerfiles (sdd_generate_dockerfile), devcontainer configs (sdd_generate_devcontainer), and GitHub Codespaces setups (sdd_setup_codespaces).
Integration & Export
Export tasks to GitHub Issues, Azure Boards, or Jira (
sdd_export_work_items), create PR payloads (sdd_create_pr), and integrate with Figma, Docker, and Terraform MCP servers.
Documentation Generation
Auto-generate comprehensive docs, API docs, operational runbooks, and developer onboarding guides (
sdd_generate_all_docs).
Testing
Generate test stubs for 6 frameworks (vitest, jest, playwright, pytest, junit, xunit) (
sdd_generate_tests), verify test coverage against requirements (sdd_verify_tests), and create property-based tests (sdd_generate_pbt).
Checkpointing & Rollback
Create named snapshots of all artifacts (
sdd_checkpoint), list checkpoints (sdd_list_checkpoints), and restore previous states (sdd_restore).
Governance & Utilities
Generate a metrics dashboard (
sdd_metrics), assess context tiering (sdd_context_status), retrieve raw templates (sdd_get_template), write bugfix specs with root cause analysis (sdd_write_bugfix), and check RBAC access (sdd_check_access).
Integrates with GitHub Copilot through four custom agents—@spec-engineer, @design-architect, @task-planner, and @spec-reviewer—to orchestrate the full specification-driven development lifecycle.
Supports processing meeting transcripts in Markdown and generating a complete suite of structured specification documents, including project constitutions and task lists.
Automatically generates architectural diagrams, ADRs, and API contracts using Mermaid syntax within the DESIGN.md artifact.
Enables the transformation of Zoom meeting transcripts in SubRip (.srt) format into production-grade project specifications and requirements.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Speckyconvert meeting.vtt into a full project specification and task list"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Table of Contents
Section | Description | |
Start | Overview and ecosystem | |
Agents, prompts, skills, hooks, and MCP tools | ||
Vibe coding vs deterministic development | ||
Complete educational guide | ||
Use | Install via npm CLI | |
File structure and naming conventions | ||
6 ways to feed Specky | ||
Greenfield, Brownfield, Modernization | ||
Lifecycle, workload, mode, capabilities, evidence, migration | ||
Bump npm + refresh project assets (no | ||
Update notifications and opt-out | ||
Pipeline | Feature-specific phase graphs and configured review gates | |
Complete tool reference by category | ||
The 6 requirement patterns | ||
Enterprise | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 | |
Security, audit trail, quality gates | ||
Platform | Built on Spec-Kit, everything included | |
v3.13.0 current, future capabilities planned |
Related MCP server: Gigaspec
What is Specky?
Specky is a CLI toolkit for Spec-Driven Development — 13 specialized agents, 58 MCP tools, 22 prompts, 14 skills, and 16 automation hooks. Each feature selects an explicit lifecycle, workload, execution mode, and capability configuration; Specky persists the resolved phase graph and rejects missing identity, hidden defaults, unsupported capabilities, and ungrounded artifact evidence.
Powered by the Spec-Kit methodology. Install the specky CLI and it places agents, prompts, skills, hooks, and the MCP server registration into your project — for GitHub Copilot (VS Code), Claude Code, Cursor, or OpenCode.
What's Included
Specky is a complete AI development toolkit — not just an MCP server. The specky CLI installs everything your AI IDE needs into a single project:
Primitive | What it is | Specky includes |
Agents | Specialized AI personas with defined roles, tools, and guardrails | 13 agents — @specky-orchestrator (full pipeline), @specky-onboarding (wizard), @specky-spec-engineer, @specky-design-architect, @specky-task-planner, @specky-quality-reviewer, and 7 more |
Prompts | Slash commands that activate the right agent for a task | 22 prompts — |
Skills | Domain knowledge files loaded into agent context automatically | 14 skills — SDD pipeline rules, phase playbooks, EARS patterns, implementation patterns, test criteria, release gate protocol |
Hooks | Scripts that run before/after every tool call for validation | 16 hooks — specky-artifact-validator, specky-branch-validator, specky-phase-gate, specky-lgtm-gate, specky-security-scan, etc. |
MCP Server | The tool engine that validates, generates, and enforces | 58 tools via Model Context Protocol (the runtime underneath) |
Why not just an MCP server?
An MCP server gives you tools. The CLI toolkit gives you the experience:
Tools alone: You must provide exact feature identity, use-case selection, capability parameters, and evidence.
CLI toolkit: You invoke
@specky-orchestrator; it loads the feature's signed contract, follows its persisted graph, delegates to lean agents that read rich skills, and applies configured gates.
The MCP engine is the runtime. The agents + hooks + skills are the product.
How to install
Specky ships as a single npm package with a unified specky CLI. Works on macOS, Linux, Windows, and WSL.
# 1. Install the CLI globally (once per machine)
npm install -g specky-sdd@latest
# 2. Bootstrap your project — choose your target harness:
cd your-project
specky install --target=copilot # VS Code + GitHub Copilot (recommended)
specky install --target=claude # Claude Code
specky install --target=cursor # Cursor
specky install --target=opencode # OpenCode
specky install --target=agent-skills # Skills-only shared .agents/skills bundleImportant: Prefer
--target=.... The legacy--ideflag still works forcopilot,claude,both, andauto, but it is deprecated in favor of APM-style targets. Copilot + Claude in the same workspace is supported (--target=bothorall); Specky strips Claude hooks from.claude/settings.jsonso Copilot cannot cross-read them. Prefer a single target if you need Claude lifecycle hooks. See docs/INSTALL.md for details.
Or per-project (for teams — pins version in package.json, run via npx):
cd your-project
npm install --save-dev specky-sdd@latest
npx specky install --target=copilotThe CLI installs 13 agents, 22 prompts, 14 skills, 16 hooks, and target-local MCP registration pinned to the installed version. Canonical agent capabilities compile to the selected harness's native tools; they are not inferred from workflow prose. Use --permission-profile=scoped (default) for narrow Claude pre-authorization, or --permission-profile=prompt to leave every approval with the host. Specky does not pre-authorize arbitrary shell, rm, network access, or credentials. Add --integration=github only when GitHub MCP routing is required. Run specky doctor anytime to validate integrity and configuration.
Generated assets are platform-native. specky install --target=copilot writes GitHub Copilot agents/prompts with VS Code tool names such as search, agent, and specky/sdd_get_status, plus prompt agent: agent frontmatter. specky install --target=claude writes Claude Code agents/commands with Read, Glob, Grep, Task, and mcp__specky__sdd_get_status, with Copilot-only prompt metadata removed. Cursor and OpenCode receive their own native vocabulary. agent-skills is intentionally skills-only. See Target Capabilities for the full capability matrix, GitHub MCP opt-in, and host approval boundaries.
Specky also has an APM governance layer for enterprise package control. apm.yml declares the package primitives, targets, and MCP runtime; apm.lock.yaml pins primitive hashes; apm-policy.yml enforces MCP and tool-name policy. Maintainers and CI can run specky apm validate, specky apm policy, specky apm verify-lock, and specky apm sbom before publishing or installing. See Uso do APM pelo Specky for the detailed model, including why APM is not a runtime proxy and why users do not need to install the Microsoft APM CLI.
Full walkthroughs per OS, offline install, and CLI reference: docs/INSTALL.md · docs/CLI.md.
How to upgrade
When a new Specky version is out (banner from specky doctor / specky status, or GitHub Releases):
# Global CLI (most users)
npm install -g specky-sdd@latest
cd your-project
specky upgrade# Per-project pin (teams)
npm install --save-dev specky-sdd@latest
npx specky upgradeYou do not need --target on upgrade. specky upgrade reads the harness you already installed from .specky/install.json and refreshes the same targets — agents, prompts, skills, hooks, and MCP registration (.mcp.json, .vscode/mcp.json, .cursor/mcp.json, or opencode.json). It preserves .specs/ (pipeline artifacts) and .specky/profile.json (onboarding answers).
The two commands have separate responsibilities: npm install ...@latest installs dependency and security fixes; specky upgrade then migrates supported legacy workspace configs atomically and refreshes assets and MCP pins. Running only specky upgrade does not update the installed npm package. Running only the npm update can leave project MCP pins on the old server version.
Use --target only for a first install or when switching harness (e.g. Copilot → Cursor):
specky install --target=cursor # new target set
specky install --force --target=copilot # reinstall / repair one targetSee also Staying up to date for update notifications and opt-out.
Why Specifications Matter in the AI Era
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
A["Raw intent"] --> B["Vibe coding<br/>direct prompt to code"]
B --> C["Guessing<br/>implicit requirements"]
C --> D["Rework<br/>drift and missing acceptance criteria"]
A --> E["Specky SDD<br/>validated specification first"]
E --> F["EARS requirements<br/>measurable acceptance criteria"]
F --> G["Deterministic delivery<br/>traceable design, tasks, tests, release"]
classDef node fill:#f8fafc,stroke:#9ca3af,color:#111827,stroke-width:1px;
classDef risk fill:#f3f4f6,stroke:#6b7280,color:#111827,stroke-width:1px;
class A,E,F,G node;
class B,C,D risk;The Problem: Vibe Coding
AI coding assistants are fast but chaotic. You say "build me a login system" and the AI generates code immediately, skipping requirements, guessing architecture, and producing something that works but doesn't match what anyone actually needed. This is vibe coding: generating code based on vibes instead of validated specifications.
The result is avoidable rework: requirements, acceptance criteria, design decisions, tasks, tests, and release evidence cannot be traced to one reviewed contract.
The Solution: Deterministic Development
Specifications are structured documents that describe what the system must do before anyone writes code. They've existed for decades in engineering, but AI development mostly ignores them. Specky brings them back, with AI enforcement.
Key concepts you should know:
Concept | What it is | Why it matters |
Markdown | The universal language that both humans and AI read fluently | All spec artifacts are |
MCP | Model Context Protocol — an open standard that lets AI assistants call external tools | Specky is an MCP server; any AI IDE can connect to it |
EARS Notation | A method for writing requirements that forces precision with 6 patterns | Eliminates vague statements like "the system should be fast" |
Agents and Skills | Specialized AI roles that invoke Specky tools with domain expertise | 13 agents + 14 skills orchestrate the full pipeline |
CLI Toolkit | A complete AI development package: agents + prompts + skills + hooks + MCP server | Installed via npm: |
How Specky Enforces Determinism
Specky adds a deterministic engine between your intent and your code:
State Machine: signed per-feature phase graphs for full, rapid, and emergency execution modes.
EARS Validator: Every requirement validated against 6 patterns. No vague statements pass.
Cross-Artifact Analysis: Automatic alignment checking between spec, design, and tasks. Orphaned requirements are flagged instantly.
MCP-to-MCP Architecture: Specky outputs structured JSON that your AI client routes to GitHub, Azure DevOps, Jira, Terraform, Figma, and Docker MCP servers. No vendor lock-in.
The AI is the operator; Specky is the engine. The AI's creativity is channeled through a validated pipeline instead of producing unstructured guesswork. For a complete educational walkthrough, see GETTING-STARTED.md.
What Makes Specky Different
Capability | Specky |
Complete CLI toolkit | 13 agents, 22 prompts, 14 skills, 16 hooks + 58 MCP tools |
Pipeline orchestrator | @specky-orchestrator follows the selected feature's signed phase graph |
Onboarding wizard | @specky-onboarding detects context and guides setup |
Explicit input contracts | Document, transcript, and Figma tools require enabled capabilities and complete parameters |
EARS validation (programmatic, not AI guessing) | 6 patterns enforced at schema level |
Enforced pipeline (not suggestions) | Contract-specific phases, central analysis gate, optional configured LGTM blocking |
Pre/post hooks on every phase | specky-artifact-validator, specky-branch-validator, specky-phase-gate, specky-lgtm-gate |
Workload-specific diagrams | Explicit evidence validation or deterministic auto-generation from specification/design content |
Infrastructure as Code | DESIGN.md-driven Terraform with exact resource templates and fail-fast preflight |
Work item export | GitHub Issues, Azure Boards, Jira via MCP-to-MCP routing |
5 compliance frameworks | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 with explicit control-ID evidence |
Cross-artifact traceability | Requirement to design to task to test to code |
Explicit release policy | Branch prefix, base, draft, and checkpoint choices persisted per feature |
Unified CLI distribution |
|
First-class harness targets | VS Code + Copilot, Claude Code, Cursor, OpenCode, plus shared |
Zero outbound calls from the MCP server | Air-gap friendly; code never leaves your machine. The CLI's once-daily update check is opt-out |
MIT open source | Fork it, extend it, audit it. No vendor lock, no seat pricing |
Quick Start
Prerequisites
Node.js 20+: Download here (Node 20 LTS recommended)
An AI IDE or agent CLI: VS Code with Copilot, Claude Code, Cursor, or OpenCode
Install the Plugin
One-time CLI install:
npm install -g specky-sdd@latestBootstrap each project:
cd your-project
specky installThat's it. The CLI auto-detects supported harnesses or uses the explicit target and installs the 13 agents, 22 prompts, 14 skills, 16 hooks, and MCP server registration with least-privilege tool scope for the selected harness.
Other install modes:
# Per-project (teams — pins version in package.json)
cd your-project
npm install --save-dev specky-sdd@latest
npx specky install
# Zero-install (one command, no persistent CLI)
cd your-project
npx -y specky-sdd@latest installFull per-OS walkthrough: docs/INSTALL.md · CLI reference: docs/CLI.md.
Verify
specky doctor # validates integrity + configuration
specky status # shows active features and pipeline phaseThen open your IDE and type:
@specky-onboardingThe onboarding wizard detects your project context (greenfield/brownfield/modernization) and guides you through setup.
Try It Now
@specky-orchestrator run the pipeline for a todo APIThe orchestrator resolves the selected feature contract and follows its full, rapid, or emergency phase graph. Specify, Design, and Tasks require lgtm: true only when workspace configuration enables LGTM enforcement.
Your situation | Guide |
Building something new | |
Adding features to existing code | |
Upgrading a legacy system |
Tip: New to Spec-Driven Development? Specky already includes all the SDD methodology from Spec-Kit. Just install Specky and the pipeline guides you through every phase with educative outputs that explain the concepts as you work.
Where Specifications Live
Every feature gets its own numbered directory inside .specs/. This keeps specifications, design documents, and quality reports together as a self-contained package.
your-project/
├── src/ ← Your application code
├── .specs/ ← All Specky specifications
│ ├── 001-user-authentication/ ← Feature #1
│ │ ├── CONSTITUTION.md ← Project principles and governance
│ │ ├── SPECIFICATION.md ← EARS requirements with acceptance criteria
│ │ ├── DESIGN.md ← Architecture, data model, API contracts
│ │ ├── RESEARCH.md ← Resolved unknowns and technical decisions
│ │ ├── TASKS.md ← Implementation breakdown with dependencies
│ │ ├── ANALYSIS.md ← Quality gate report
│ │ ├── CHECKLIST.md ← Domain-specific quality checklist
│ │ ├── CROSS_ANALYSIS.md ← Spec-design-tasks alignment score
│ │ ├── COMPLIANCE.md ← Regulatory framework validation
│ │ ├── VERIFICATION.md ← Drift and phantom task detection
│ │ └── .sdd-state.json ← Pipeline state (current phase, history)
│ ├── 002-payment-gateway/ ← Feature #2
│ └── 003-notification-system/ ← Feature #3
├── reports/ ← Cross-feature analysis reports
└── .specky/config.yml ← Required schema-versioned workspace contractNaming convention: NNN-feature-name, zero-padded number + kebab-case name. Each directory is independent; you can work on multiple features simultaneously.
Input Methods: 6 Ways to Start
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart TB
P["Natural language prompt"] --> I["Specky input layer"]
T["Meeting transcript"] --> I
D["Documents<br/>PDF, DOCX, PPTX, MD"] --> I
F["Figma or FigJam"] --> I
C["Existing codebase"] --> I
R["Raw pasted text"] --> I
I --> S["sdd_init + sdd_discover"]
S --> A[".specs/NNN-feature<br/>research, requirements, design, tasks"]
classDef input fill:#ffffff,stroke:#9ca3af,color:#111827,stroke-width:1px;
classDef engine fill:#f3f4f6,stroke:#6b7280,color:#111827,stroke-width:1px;
classDef output fill:#f8fafc,stroke:#374151,color:#111827,stroke-width:1px;
class P,T,D,F,C,R input;
class I,S engine;
class A output;Specky accepts multiple input types. Choose the one that matches your starting point:
1. Natural Language Prompt (simplest)
Type your idea directly into the AI chat. No files needed.
> I need a feature for user authentication with email/password login,
password reset via email, and JWT session managementThe AI calls sdd_init + sdd_discover to structure your idea into a spec project.
Best for: Quick prototyping, brainstorming, greenfield projects.
2. Meeting Transcript (VTT / SRT / TXT / MD)
Import a transcript from Teams, Zoom, or Google Meet. Specky extracts topics, decisions, action items, and requirements automatically.
> Import the requirements meeting transcript and create a specificationThe AI calls sdd_import_transcript → extracts:
Participants and speakers
Topics discussed with summaries
Decisions made
Action items
Raw requirement statements
Constraints mentioned
Open questions
Supported formats: .vtt (WebVTT), .srt (SubRip), .txt, .md
Pro tip: Use sdd_auto_pipeline to go from transcript to complete spec in one step:
> Run the auto pipeline from this meeting transcript: /path/to/meeting.vttGot multiple transcripts? Use batch processing:
> Batch import all transcripts from the meetings/ folderThe AI calls sdd_batch_transcripts → processes every .vtt, .srt, .txt, and .md file in the folder.
3. Existing Documents (PDF / DOCX / PPTX)
Import requirements documents, RFPs, architecture decks, or any existing documentation.
> Import this requirements document and create a specification:
/path/to/requirements.pdfThe AI calls sdd_import_document → converts to Markdown, extracts sections, and feeds into the spec pipeline.
Supported formats: .pdf, .docx, .pptx, .txt, .md
Batch import from a folder:
> Import all documents from the docs/ folder into specsThe AI calls sdd_batch_import → processes every supported file in the directory.
Honest note on binary formats: the built-in extractor fully handles
md/txtand simple uncompressed files. Real-world (compressed) PDF/DOCX/PPTX need one of: the optionalmammoth/pdfjs-distpackages, or the recommended MarkItDown MCP integration. Since 3.6, unsupported binaries fail with clear guidance instead of silently importing garbage.
4. Figma Design (design-to-spec)
Convert Figma designs into requirements specifications. Works with the Figma MCP server.
> Convert this Figma design into a specification:
https://figma.com/design/abc123/my-appThe AI calls sdd_figma_to_spec → extracts components, layouts, and interactions, then routes to the Figma MCP server for design context.
Best for: Design-first workflows, UI-driven projects.
5. Codebase Scan (brownfield / modernization)
Scan an existing codebase to detect tech stack, frameworks, structure, and patterns before writing specs.
> Scan this codebase and tell me what we're working withThe AI calls sdd_scan_codebase → detects:
Detected | Examples |
Language | TypeScript, Python, Go, Rust, Java |
Framework | Next.js, Express, React, Django, FastAPI, Gin |
Package Manager | npm, pip, poetry, cargo, maven, gradle |
Runtime | Node.js, Python, Go, JVM |
Directory Tree | Full project structure with file counts |
Best for: Understanding an existing project before adding features or modernizing.
6. Raw Text (paste anything)
No file? Just paste the content directly. Every import tool accepts a raw_text parameter as an alternative to a file path.
> Here's the raw requirements from the client email:
The system needs to handle 10,000 concurrent users...
Authentication must support SSO via Azure AD...
All data must be encrypted at rest and in transit...
Import this and create a specification.Three Project Types, One Pipeline
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
G["Greenfield<br/>new product idea"] --> D["Discover"]
B["Brownfield<br/>existing codebase"] --> D
M["Modernization<br/>legacy migration"] --> D
D --> S["Specify"] --> A["Analyze"] --> I["Implement"] --> V["Verify"] --> R["Release"]
classDef start fill:#ffffff,stroke:#9ca3af,color:#111827,stroke-width:1px;
classDef phase fill:#f8fafc,stroke:#6b7280,color:#111827,stroke-width:1px;
class G,B,M start;
class D,S,A,I,V,R phase;Specky adapts to any project type. The pipeline is the same; the starting point is what changes.
Greenfield Project: Start from Scratch
Scenario: You're building a new application with no existing code.
Step 1: Initialize and discover
> I'm building a task management API. Initialize a Specky project and help
me define the scope.The AI calls sdd_init → creates .specs/001-task-management/CONSTITUTION.md
Then calls sdd_discover → asks you 7 structured questions:
Scope: What problem does this solve? What are the boundaries of v1?
Users: Who are the primary users? What are their skill levels?
Constraints: Language, framework, hosting, budget, timeline?
Integrations: What external systems, APIs, or services?
Performance: Expected load, concurrent users, response times?
Security: Authentication, authorization, compliance requirements?
Deployment: CI/CD, monitoring, rollback strategy?
Answer each question. Your answers feed directly into the specification.
Step 2: Write the specification
> Write the specification based on my discovery answersThe AI calls sdd_write_spec → creates SPECIFICATION.md with EARS requirements:
## Requirements
REQ-001 [Ubiquitous]: The system shall provide a REST API for task CRUD operations.
REQ-002 [Event-driven]: When a user creates a task, the system shall assign
a unique identifier and return it in the response.
REQ-003 [State-driven]: While a task is in "in-progress" state, the system
shall prevent deletion without explicit force confirmation.
REQ-004 [Unwanted]: If the API receives a malformed request body, then the
system shall return a 400 status with a descriptive error message.The AI pauses here. Review .specs/001-task-management/SPECIFICATION.md and reply LGTM when satisfied.
Step 3: Design the architecture
> LGTM.proceed to designThe AI calls sdd_write_design → creates DESIGN.md with:
System architecture diagram (Mermaid)
Data model / ER diagram
API contracts with endpoints, request/response schemas
Sequence diagrams for key flows
Technology decisions with rationale
Review and reply LGTM.
Step 4: Break into tasks
> LGTM.create the task breakdownThe AI calls sdd_write_tasks → creates TASKS.md with implementation tasks mapped to acceptance criteria, dependencies, and estimated complexity.
Step 5: Quality gates
> Run analysis, submit SOC2 control evidence, and validate the workload-required diagram setThe AI calls:
sdd_run_analysis→ completeness audit, orphaned criteria detectionsdd_compliance_check→ evaluates the persisted SOC2 pack using evidence keyed by control IDsdd_generate_all_diagrams→ validates explicit Mermaid payloads or usesmode: "auto"to derive the complete supported set from source evidence before an atomic write
Step 6: Generate infrastructure and tests
> Generate the persisted Azure Terraform resources, Docker environment, and executable Vitest bindingsThe AI calls:
sdd_generate_iac→ Terraform for the exact cloud/resources grounded in the relevantDESIGN.mdsections; excluded or unsupported resources fail before files are writtensdd_generate_dockerfile→ Dockerfile/compose from the persisted development stacksdd_generate_tests→ executable tests from fingerprinted requirement bindings
Step 7: Export and ship
> Export tasks to GitHub Issues and create a PRThe AI calls sdd_export_work_items + sdd_create_pr → generates work item payloads and PR body with full spec traceability.
Next: Learn about EARS notation to understand the requirement patterns, or see All 58 Tools for a complete reference.
Brownfield Project: Add Features to Existing Code
Scenario: You have a running application and need to add a new feature with proper specifications.
Step 1: Scan the codebase first
> Scan this codebase so Specky understands what we're working withThe AI calls sdd_scan_codebase → detects tech stack, framework, directory structure. This context informs all subsequent tools.
Detected: TypeScript + Next.js + npm + Node.js
Files: 247 across 32 directoriesStep 2: Initialize with codebase context
> Initialize a feature for adding real-time notifications to this Next.js app.
Use the codebase scan results as context.The AI calls sdd_init → creates .specs/001-real-time-notifications/CONSTITUTION.md
Then calls sdd_discover with the codebase summary → the 7 discovery questions now include context about your existing tech stack:
"What technical constraints exist? Note: This project already uses TypeScript, Next.js, npm, Node.js. Consider compatibility with the existing stack."
Step 3: Import existing documentation
If you have existing PRDs, architecture docs, or meeting notes:
> Import the PRD for notifications: /docs/notifications-prd.pdfThe AI calls sdd_import_document → converts to Markdown and adds to the spec directory. The content is used as input when writing the specification.
Step 4: Write spec with codebase awareness
> Write the specification for real-time notifications. Consider the existing
Next.js architecture and any patterns already in the codebase.The specification references existing components, APIs, and patterns from the codebase scan.
Step 5: Check for drift
After implementation, verify specs match the code:
> Check if the implementation matches the specificationThe AI calls sdd_check_sync → generates a drift report flagging any divergence between spec and code.
Step 6: Cross-feature analysis
If you have multiple features specified:
> Run cross-analysis across all features to find conflictsThe AI calls sdd_cross_analyze → checks for contradictions, shared dependencies, and consistency issues across .specs/001-*, .specs/002-*, etc.
Next: Next: See compliance frameworks for regulatory validation, or MCP integration for routing to external tools.
Modernization Project: Assess and Upgrade Legacy Systems
Scenario: You have a legacy system that needs assessment, documentation, and incremental modernization.
Step 1: Scan and document the current state
> Scan this legacy codebase and help me understand what we haveThe AI calls sdd_scan_codebase → maps the technology stack, directory tree, and file counts.
Step 2: Import all existing documentation
Gather everything you have.architecture documents, runbooks, meeting notes about the system:
> Batch import all documents from /docs/legacy-system/ into specsThe AI calls sdd_batch_import → processes PDFs, DOCX, PPTX, and text files. Each becomes a Markdown reference in the spec directory.
Step 3: Import stakeholder meetings
If you have recorded meetings with stakeholders discussing the modernization:
> Batch import all meeting transcripts from /recordings/The AI calls sdd_batch_transcripts → extracts decisions, requirements, constraints, and open questions from every transcript.
Step 4: Create the modernization specification
> Write a specification for modernizing the authentication module.
Consider the legacy constraints from the imported documents and
meeting transcripts.The specification accounts for:
Current system behavior (from codebase scan)
Existing documentation (from imported docs)
Stakeholder decisions (from meeting transcripts)
Migration constraints and backward compatibility
Step 5: Compliance assessment
Legacy systems often need compliance validation during modernization:
> Run compliance checks against HIPAA and SOC2 for the modernized auth moduleThe AI calls sdd_compliance_check → validates the specification against regulatory controls and flags gaps.
Step 6: Generate migration artifacts
> Generate the implementation plan, Terraform for the new infrastructure,
and a runbook for the migrationThe AI calls:
sdd_implement→ phased implementation plan with checkpointssdd_generate_iac→ infrastructure configuration for the target environmentsdd_generate_runbook→ operational runbook with rollback procedures
Step 7: Generate onboarding for the team
> Generate an onboarding guide for developers joining the modernization projectThe AI calls sdd_generate_onboarding → creates a guide covering architecture decisions, codebase navigation, development workflow, and testing strategy.
Next: See compliance frameworks for regulatory validation during modernization, or project configuration to customize Specky for your team.
Pipeline and LGTM Gates
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
I["Init"] --> D["Discover"] --> S["Specify"] --> G1{"LGTM gate"}
G1 -->|approved| C["Clarify"] --> A["Design"] --> G2{"LGTM gate"}
G2 -->|approved| T["Tasks"] --> G3{"LGTM gate"}
G3 -->|approved| N["Analyze"] --> P["Implement"] --> V["Verify"] --> R["Release"]
G1 -->|changes requested| S
G2 -->|changes requested| A
G3 -->|changes requested| T
V -->|drift detected| S
classDef phase fill:#f8fafc,stroke:#6b7280,color:#111827,stroke-width:1px;
classDef gate fill:#f3f4f6,stroke:#374151,color:#111827,stroke-width:1px;
class I,D,S,C,A,T,N,P,V,R phase;
class G1,G2,G3 gate;This diagram is the full execution-mode graph. Rapid and emergency contracts persist smaller ordered graphs. The state machine blocks transitions outside the selected feature's graph.
LGTM gates: Specify, Design, and Tasks can require lgtm: true when .specky/config.yml enables LGTM enforcement. When disabled, review remains useful but is not a hidden blocking default.
Feedback loop: If sdd_verify_tasks detects drift between specification and implementation, Specky routes you back to the Specify phase to correct the divergence before proceeding.
Advancing phases: If you need to manually advance:
> Advance to the next phaseThe AI calls sdd_advance_phase → moves the pipeline forward if all prerequisites are met.
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
P0["0 Init"] --> P1["1 Discover"] --> P2["2 Specify"] --> P3["3 Clarify"] --> P4["4 Design"] --> P5["5 Tasks"] --> P6["6 Analyze"] --> P7["7 Implement"] --> P8["8 Verify"] --> P9["9 Release"]
classDef phase fill:#ffffff,stroke:#9ca3af,color:#111827,stroke-width:1px;
class P0,P1,P2,P3,P4,P5,P6,P7,P8,P9 phase;Phase | What Happens | Required Output |
Init | Create project structure, constitution, scan codebase | CONSTITUTION.md |
Discover | Interactive discovery: 7 structured questions about scope, users, constraints | Discovery answers |
Specify | Write EARS requirements with acceptance criteria | SPECIFICATION.md |
Clarify | Resolve ambiguities, generate decision tree | Updated SPECIFICATION.md |
Design | Architecture, data model, API contracts, research unknowns | DESIGN.md, RESEARCH.md |
Tasks | Implementation breakdown by user story, dependency graph | TASKS.md |
Analyze | Cross-artifact analysis, quality checklist, compliance check | ANALYSIS.md, CHECKLIST.md, CROSS_ANALYSIS.md |
Implement | Ordered execution with checkpoints per user story | Implementation progress |
Verify | Drift detection, phantom task detection | VERIFICATION.md |
Release | PR generation, work item export, documentation | Complete package |
All artifacts are saved in .specs/NNN-feature/. See Input Methods for how to feed data into the pipeline.
All 58 Tools
Input and Conversion (6)
Tool | Description |
| Convert PDF, DOCX, PPTX, TXT, MD to Markdown |
| Parse meeting transcripts (Teams, Zoom, Google Meet) |
| Any input to complete spec pipeline (all documents) |
| Process folder of mixed documents |
| Scan folder of transcripts and run full auto-pipeline for each |
| Figma design to requirements specification |
Pipeline Core (8)
Tool | Description |
| Initialize project with constitution and scope diagram |
| Interactive discovery with stakeholder mapping |
| Write EARS requirements with flow diagrams |
| Resolve ambiguities with decision tree |
| 12-section system design (C4 model) with sequence diagrams, ERD, API flow |
| Task breakdown with dependency graph |
| Quality gate analysis with coverage heatmap |
| Move to next pipeline phase |
Quality and Validation (6)
Tool | Description |
| Mandatory quality checklist (security, accessibility, etc.) |
| Detect phantom completions |
| HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 validation |
| Spec-design-tasks alignment with consistency score |
| Batch EARS requirement validation |
| Spec-vs-implementation drift detection report |
Diagrams and Visualization (4) — Workload-Contracted Payloads
Tool | Description |
| Explicit Mermaid validation by default, or evidence-grounded auto-generation for supported types |
| Explicit validation or atomic auto-generation of the complete supported contracted set |
| User stories with flow diagrams (web-application workload) |
| FigJam-ready diagram via Figma MCP |
mode: "explicit" remains the compatibility default and requires caller-supplied Mermaid plus evidence references. mode: "auto" derives C4 context, sequence, ER, and deployment diagrams from SPECIFICATION.md and DESIGN.md; unsupported contracted types fail before any file is written.
Infrastructure as Code (3)
Tool | Description |
| Terraform from canonical |
| Validation via Terraform MCP + Azure MCP |
| Dockerfile + docker-compose from tech stack |
Dev Environment (3)
Tool | Description |
| Docker-based local dev environment |
| GitHub Codespaces configuration |
| .devcontainer/devcontainer.json generation |
Integration and Export (5)
Tool | Description |
| Git branch naming convention |
| Tasks to GitHub Issues, Azure Boards, or Jira |
| PR payload with spec summary |
| Ordered implementation plan with checkpoints |
| Resolve unknowns in RESEARCH.md |
Documentation (5)
Tool | Description |
| Complete auto-documentation |
| API documentation from design |
| Operational runbook |
| Developer onboarding guide |
| Generate all documentation types in parallel (docs, API, runbook, onboarding, journey) |
Utility (6)
Tool | Description |
| Pipeline status with guided next action |
| Get any template |
| Detect tech stack and structure |
| Project metrics dashboard |
| Amend project constitution and optionally replace signed TDD bindings |
| Generate bugfix spec with root cause analysis and test plan |
Testing (3)
Tool | Description |
| Assemble executable tests from persisted requirement bindings (vitest/jest/playwright/pytest/junit/xunit) |
| Verify test results against requirements, report traceability coverage |
| Assemble executable fast-check or Hypothesis properties from persisted requirement bindings; no generated model stubs |
Turnkey Specification (1)
Tool | Description |
| Assemble caller-authored EARS requirements, criteria, evidence, discovery context, and clarification responses for an initialized feature; never infers requirements or creates state |
Checkpointing (3)
Tool | Description |
| Create a named snapshot of all spec artifacts and pipeline state |
| Restore spec artifacts from a previous checkpoint (auto-creates backup before restoring) |
| List all available checkpoints for a feature with labels, dates, and phases |
Ecosystem (1)
Tool | Description |
| Report recommended MCP servers with install commands |
Governance (3)
Tool | Description |
| Capability-class routing guidance for the phase vocabulary; the selected feature graph controls applicable phases |
| Context tier assignment (Hot/Domain/Cold) for spec artifacts with token savings |
| RBAC access check for current role with per-tool permissions summary |
Security and Audit (1)
Tool | Description |
| Verify the hash-chained audit trail ( |
The Spec-Driven Development Platform
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
C4Context
title Specky C4 Context
Person(dev, "Developer / AI operator", "Uses an AI IDE to deliver features through SDD")
System_Boundary(specky, "Specky SDD Platform") {
System(cli, "specky CLI", "Installs target-native agents, prompts, skills, hooks, and MCP registration")
System(mcp, "Specky MCP Server", "Executes 58 validated SDD tools and the 10-phase state machine")
System(apm, "APM Primitive Source", "Canonical .apm agents, prompts, skills, instructions, and hooks")
}
System_Ext(specKit, "Spec-Kit", "Methodology and prompt patterns")
System_Ext(aiIde, "AI IDE", "GitHub Copilot, Claude Code, Cursor, OpenCode")
System_Ext(externalMcp, "External MCP ecosystem", "GitHub, Azure DevOps, Jira, Terraform, Figma, Docker")
Rel(dev, aiIde, "asks for feature delivery")
Rel(aiIde, cli, "installs assets with")
Rel(cli, apm, "compiles from")
Rel(aiIde, mcp, "calls SDD tools through MCP")
Rel(mcp, externalMcp, "returns routing payloads for")
Rel(specKit, apm, "informs methodology encoded in")
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")How Spec-Kit and Specky Complement Each Other
Spec-Kit — the open-source SDD methodology from github/spec-kit, extended in paulasilvatech/spec-kit — provides a constitution model, gated workflow phases expressed as prompt templates, and broad coding-assistant support. It defines what to do. (Upstream Spec-Kit's phases are advisory prompts; the EARS requirements notation and programmatic enforcement below are Specky's additions — EARS was popularized for AI specs by AWS Kiro and originates in the Mavin/Rolls-Royce EARS approach.)
Specky is the CLI toolkit that reimplements that methodology as 58 enforceable MCP tools with 13 agents, 22 prompts, 14 skills, and 16 hooks. It enforces how to do it.
Spec-Kit (Methodology) | Specky (Plugin) | |
What it is | Prompt templates + agent definitions | CLI toolkit: 13 agents + 58 MCP tools + 22 prompts + 14 skills + 16 hooks |
How it works | AI reads | AI calls agents that orchestrate tools with hook validation |
Validation | AI tries to follow the prompts | State machine, EARS regex, Zod schemas, pre/post hooks |
Install | Copy |
|
Works standalone | Yes, in any AI IDE | Yes, includes all Spec-Kit patterns |
Best for | Learning SDD, lightweight adoption | Production enforcement, enterprise, compliance |
Together: The Complete SDD Layer
When you install Specky, you get the full Spec-Kit methodology reimplemented as validated MCP tools. No separate installation of Spec-Kit needed. But Spec-Kit remains available as a standalone learning tool for teams that want to adopt SDD concepts before using the engine.
Together they form the SDD layer of the GitHub + Microsoft enterprise platform. Specky reimplements the Spec-Kit methodology as enforceable MCP tools with compliance, traceability, and automation built in.
{
"servers": {
"specky": {
"command": "specky-sdd"
}
}
}Note: This example assumes Specky is installed via
specky install --target=copilot(afternpm install -g specky-sdd@latest). See Quick Start for details.
Project Configuration
specky install creates the complete .specky/config.yml; edit that generated file to customize Specky. Do not start from a partial document because runtime validation is strict. This is a minimal complete example with one enabled contract:
# .specky/config.yml
schema_version: 1
profile: standard
spec_root: .specs
numbering:
strategy: explicit
contracts:
require_explicit_selection: true
enabled:
- greenfield-api-full
templates_path: ""
update_check: true
audit_enabled: false
rate_limit:
enabled: false
max_requests_per_minute: 60
burst: 10
audit:
export_format: jsonl
max_file_size_mb: 10
fail_closed: false
rbac:
enabled: false
default_role: contributor
installation:
permission_profile: scoped
integrations: []
pipeline:
require_lgtm: falseWhen templates_path is set, Specky uses your custom templates instead of the built-in ones. When audit_enabled is true, tool invocations are logged locally. profile: enterprise turns audit, RBAC, rate limiting, and fail-closed auditing on by default (explicit values win) — see docs/ENTERPRISE-DEPLOYMENT.md. With pipeline.require_lgtm: true, the LGTM quality gates become server-enforced instead of an agent convention: advancing past Specify/Design/Tasks requires the explicit lgtm: true input on sdd_advance_phase.
Staying up to date
Specky tells you about new versions in two ways:
Version drift warning (always on, zero network):
specky doctorandspecky statuswarn when the assets installed in your project differ from the version of the CLI running them, and suggestspecky upgrade. The MCP server prints the same warning at startup. This is a local file comparison — no network involved.Update banner (once daily): after
install,doctor,status,upgrade, or--version, the CLI checks the npm registry at most once per day and printsUpdate available: vX → vYwhen a newer release exists. This is a single GET toregistry.npmjs.org— no telemetry, nothing sent beyond the request itself. It fails silently offline, is disabled in CI (CI=true), and never runs inspecky serve— the MCP server itself never phones home.
Upgrading is two steps — bump the package, then refresh the project:
npm install -g specky-sdd@latest && cd your-project && specky upgradePer-project installs: npm install --save-dev specky-sdd@latest && npx specky upgrade.
No --target on upgrade — Specky reuses the targets recorded in .specky/install.json. See How to upgrade for the full flow and when --target is still required (first install or harness switch).
specky upgrade matters: it refreshes the installed agents, prompts, skills, and hooks and re-pins .mcp.json / .vscode/mcp.json to the new version — updating the npm package alone leaves the MCP registration pointing at the old pinned server.
It also migrates Specky 3.x configs: workspaces without a config are bootstrapped, strict allowlisted unversioned 3.x configs preserve recognized settings, v3.4.0–v3.11.0 generated package catalogs are reduced to validated runtime settings, and v3.11.1–v3.12.0 package-versioned runtime configs move to independent schema_version: 1. Unsupported or ambiguous documents remain unchanged and produce an actionable error. Successful migrations retain the original config as a .bak file in .specky/.
Teams pinning per-project (npm install --save-dev specky-sdd) should let Renovate or Dependabot propose the package.json bump. For release emails, use Watch → Custom → Releases on the GitHub repo.
Opt out of the registry check with SPECKY_NO_UPDATE_CHECK=1 in the environment or update_check: false in .specky/config.yml. The drift warning stays on — it never touches the network.
MCP Integration Architecture
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart TB
User["Developer / AI operator"] --> Client["AI client<br/>Copilot, Claude, Cursor, OpenCode"]
Client --> Specky["Specky MCP Server<br/>58 SDD tools"]
Specky --> Payload["Structured routing payload<br/>JSON, artifacts, next actions"]
Payload --> Client
Client --> GitHub["GitHub MCP<br/>issues, PRs, repos"]
Client --> AzureBoards["Azure DevOps MCP<br/>work items, boards"]
Client --> Jira["Jira MCP<br/>issues, projects"]
Client --> Terraform["Terraform MCP<br/>plan, validate, apply"]
Client --> Figma["Figma MCP<br/>design context"]
Client --> Docker["Docker MCP<br/>local dev environments"]
classDef core fill:#f8fafc,stroke:#374151,color:#111827,stroke-width:1px;
classDef mcp fill:#ffffff,stroke:#9ca3af,color:#111827,stroke-width:1px;
classDef payload fill:#f3f4f6,stroke:#6b7280,color:#111827,stroke-width:1px;
class User,Client,Specky core;
class Payload payload;
class GitHub,AzureBoards,Jira,Terraform,Figma,Docker mcp;Specky outputs structured JSON with routing instructions. Your AI client calls the appropriate external MCP server:
Specky --> sdd_export_work_items(platform: "azure_boards") --> JSON payload
--> AI Client --> Azure DevOps MCP --> create_work_item()
Specky --> sdd_validate_iac(provider: "terraform") --> validation payload
--> AI Client --> Terraform MCP --> plan/validate
Specky --> sdd_figma_to_spec(file_key: "abc123") --> Figma request
--> AI Client --> Figma MCP --> get_design_context()Supported External MCP Servers
MCP Server | Integration |
GitHub MCP | Issues, PRs, Codespaces |
Azure DevOps MCP | Work Items, Boards |
Jira MCP | Issues, Projects |
Terraform MCP | Plan, Validate, Apply |
Azure MCP | Template validation |
Figma MCP | Design context, FigJam diagrams |
Docker MCP | Local dev environments |
EARS Notation
Every requirement in Specky follows EARS (Easy Approach to Requirements Syntax):
Pattern | Format | Example |
Ubiquitous | The system shall... | The system shall encrypt all data at rest |
Event-driven | When [event], the system shall... | When a user submits login, the system shall validate credentials |
State-driven | While [state], the system shall... | While offline, the system shall queue requests |
Optional | Where [condition], the system shall... | Where 2FA is enabled, the system shall require OTP |
Unwanted | If [condition], then the system shall... | If session expires, the system shall redirect to login |
Complex | While [state], when [event]... | While in maintenance, when request arrives, queue it |
The EARS validator programmatically checks every requirement against these 6 patterns. Vague terms like "fast", "good", "easy" are flagged automatically.
Compliance Frameworks
Built-in compliance checking against:
HIPAA: Access control, audit, encryption, PHI protection
SOC 2: Logical access, monitoring, change management, incident response
GDPR: Lawful processing, right to erasure, data portability, breach notification
PCI-DSS: Firewall, stored data protection, encryption, user identification
ISO 27001: Security policies, access control, cryptography, incident management
Educative Outputs
Every tool response includes structured guidance:
{
"explanation": "What was done and why",
"next_steps": "Guided next action with command suggestion",
"learning_note": "Educational context about the concept",
"diagram": "Mermaid diagram relevant to the output"
}Complete Pipeline Flow
%%{init: {"theme":"base","themeVariables":{"background":"#ffffff","primaryColor":"#f8fafc","primaryBorderColor":"#9ca3af","primaryTextColor":"#111827","secondaryColor":"#f3f4f6","tertiaryColor":"#e5e7eb","lineColor":"#6b7280","fontFamily":"Segoe UI, Arial, sans-serif"}}}%%
flowchart LR
Input["Any input"] --> Research["Discover<br/>research and constraints"]
Research --> Spec["Specify<br/>EARS requirements"]
Spec --> Design["Design<br/>architecture, APIs, data"]
Design --> Tasks["Tasks<br/>dependency-ordered work"]
Tasks --> Build["Implement<br/>code, IaC, tests"]
Build --> Verify["Verify<br/>drift and phantom task checks"]
Verify --> Release["Release<br/>PR, work items, runbook"]
Release --> Ops["Production-ready package"]
Verify -->|drift found| Spec
classDef step fill:#ffffff,stroke:#9ca3af,color:#111827,stroke-width:1px;
classDef terminal fill:#f3f4f6,stroke:#374151,color:#111827,stroke-width:1px;
class Input,Research,Spec,Design,Tasks,Build,Verify,Release step;
class Ops terminal;From any input to production -- fully automated, MCP-orchestrated, with artifacts and diagrams generated at every step. All artifacts are saved in .specs/NNN-feature/.
Enterprise Ready
Specky is built with enterprise adoption in mind.
Enterprise profile (opt-in)
Specky is 100% open source (MIT) — enterprise mode is just an opt-in configuration profile of the same package: profile: enterprise (or SPECKY_PROFILE=enterprise, or specky serve --profile=enterprise) flips the governance defaults ON — hash-chained audit trail (fail-closed), RBAC, and HTTP rate limiting — while explicit config values still win. Add SDD_HTTP_TOKENS_FILE for identity-based roles (each bearer token maps to a named principal + role; audit entries record who did what) and SDD_AUDIT_HMAC_KEY[_FILE] for a tamper-evident audit log signed with a key the workspace never sees. The standard profile is untouched — all of this stays off unless you opt in.
→ Full guide: docs/ENTERPRISE-DEPLOYMENT.md (hosted HTTP, tokens, HMAC audit, air-gapped installs, containers, CI gates)
Security Posture
3 direct runtime dependencies — minimal direct surface (
@modelcontextprotocol/sdk,zod,yaml), with transitives covered by audit and SBOMZero outbound network requests from the MCP server — all data stays local; the CLI's optional once-daily update check is the only network touch (opt-out)
Strict template rendering — missing variables/loops raise
TemplateRenderError; no TODO substitution or dynamic template executionPath traversal prevention: FileManager sanitizes all paths, blocks
..sequencesZod
.strict()validation — every tool input is schema-validated; unknown fields rejectedspecky-security-scan hook blocks commits containing hardcoded secrets (exit code 2)
See SECURITY.md for full OWASP Top 10 coverage
See docs/SYSTEM-DESIGN.md for complete security architecture
See docs/ENTERPRISE-CONTROLS.md for RBAC, audit trail, and tool-enforcement controls
See docs/ENTERPRISE-DEPLOYMENT.md for the enterprise profile, identity tokens, HMAC audit, and hosted/air-gapped deployment
See docs/DETERMINISM.md for reproducible-output guarantees
See docs/BRANCH-GOVERNANCE.md for branch and release governance
See docs/EVIDENCE.md for the validation evidence pack
Security Best Practices
When using Specky, follow these practices to protect your data:
Practice | Why | How |
Use stdio mode for local development | No network exposure |
|
Never expose HTTP mode to public networks without TLS | HTTP has optional bearer-token auth but no TLS |
|
Protect the | Contains your specification artifacts (architecture, API contracts, business logic) | Add |
Protect checkpoints |
| Same as above — treat checkpoints like source code |
Review source-backed artifacts before committing | Transcript/document inputs and explicit source quotes may contain sensitive details | Review SPECIFICATION.md, DESIGN.md, and TRANSCRIPT.md before |
Keep the specky-security-scan hook enabled | Detects API keys, passwords, tokens in staged files | Comes pre-configured; don't disable |
Use environment variables for secrets | Specky never stores credentials, but your specs might reference them | Write |
Run dependency audits regularly | Catches runtime and toolchain vulnerabilities |
|
Data Sensitivity Guide
What Specky creates | Contains | Sensitivity | Recommendation |
| Project scope, principles | Low | Safe to commit |
| Requirements, acceptance criteria | Medium | Review before committing — may contain business logic details |
| Architecture, API contracts, security model | High | May contain infrastructure details, auth flows, data schemas |
| Implementation plan, effort estimates | Low | Safe to commit |
| Quality gate results, coverage | Low | Safe to commit |
| Pipeline phase timestamps | Low | Safe to commit |
| Full copies of all artifacts | High | Protect like source code — contains everything above |
| Complete SDD audit trail with timestamps | Medium | Review before sharing externally |
Routing payloads | Branch names, PR bodies, work items | Transient (memory only) | Never persisted by Specky; forwarded to external MCPs by the AI client |
Key principle: Specky creates files only on your local filesystem. Nothing is sent to any cloud service unless you push to git or the AI client routes a payload to an external MCP server. You are always in control.
Compliance Validation
Built-in compliance checking validates your specifications against industry frameworks:
Framework | Controls | Use Case |
HIPAA | 6 controls | Healthcare applications |
SOC 2 | 6 controls | SaaS and cloud services |
GDPR | 6 controls | EU data processing |
PCI-DSS | 6 controls | Payment card handling |
ISO 27001 | 6 controls | Enterprise security management |
Audit Trail
Every pipeline phase produces a traceable artifact in .specs/NNN-feature/. The complete specification-to-code journey is documented in the SDD Journey document (docs/journey-{feature}.md) with phase timestamps, gate decisions, and traceability metrics.
Quality Gates
Phase Validation — every tool validates it's being called in the correct pipeline phase
Gate Enforcement —
advancePhase()blocks if gate decision is BLOCK or CHANGES_NEEDEDEARS Validator — programmatic requirement quality enforcement
Cross-Artifact Analysis — automatic alignment checking between spec, design, and tasks
Phase Enforcement — state machine blocks phase-skipping; required files gate advancement
Unit tests — CI enforces thresholds on every push
Development
# Clone and setup
git clone https://github.com/paulasilvatech/specky.git
cd specky
npm install
# Build
npm run build
# Run the full test suite
npm test
# Run tests with coverage report
npm run test:coverage
# Lint and format with Biome
npm run lint
npm run format
# Development mode (auto-reload on file changes)
npm run dev
# Verify MCP handshake (quick smoke test)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | node dist/index.js 2>/dev/null
# Run the published image from GHCR (multi-arch: linux/amd64 + linux/arm64)
docker pull ghcr.io/paulasilvatech/specky:latest # or pin a release: :3.13.0
docker run --rm -p 3200:3200 ghcr.io/paulasilvatech/specky:latest
curl http://localhost:3200/health # -> {"status":"ok","version":"3.13.0"}
# Or build and run locally from source
docker build -t specky-sdd:dev .
docker run --rm -p 3200:3200 specky-sdd:dev
curl http://localhost:3200/healthThe published image binds 0.0.0.0:3200 inside the container (so -p works)
and includes an ephemeral standard workspace contract so an unmounted container
can serve the unauthenticated GET /health. Mounting /workspace replaces that
internal directory; initialize the mounted workspace with specky install so it
contains .specky/config.yml. For hardened/authenticated deployments (enterprise
profile, token auth, TLS proxy, private packages) see
docs/ENTERPRISE-DEPLOYMENT.md.
Roadmap
v3.13.0 (current)
Capability | Status |
58 MCP tools driven by signed per-feature use-case contracts | Stable |
Independent workspace config schema with guarded Specky 3.x migration | Stable |
Atomic config backup and concurrent-edit conflict preservation | Stable |
Feature-scoped task IDs ( | Stable |
Signed TDD binding amendments on existing v5 features | Stable |
Unified | Stable |
Target-specific install: | Stable |
Copilot-safe hook manifests (no lifecycle event cross-read) | Stable |
Phase validation on every tool with gate enforcement | Stable |
Evidence-grounded diagram generation with explicit and auto modes | Stable |
DESIGN.md-driven Terraform with unsupported-resource preflight | Stable |
12-section system design template (C4 model, security, infrastructure) | Stable |
Enriched interactive responses on all tools (progress, handoff, education) | Stable |
Parallel documentation generation (5 types via Promise.all) | Stable |
Explicit turnkey specification assembly ( | Stable |
Property-based testing with fast-check and Hypothesis ( | Stable |
Checkpoint/restore for spec artifacts | Stable |
Intelligence layer: model routing hints on all tools | Stable |
Context tiering: Hot/Domain/Cold with token savings | Stable |
Cognitive debt metrics at LGTM gates | Stable |
Test traceability: REQ-ID → test coverage mapping | Stable |
Intent drift detection with amendment suggestions | Stable |
16 automation hooks (advisory-default, strict opt-in via SPECKY_GUARD) | Stable |
13 specialized agents + 22 prompts + 14 skills | Stable |
5 compliance frameworks (HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001) with explicit control evidence | Stable |
6 input types (transcript, PDF, DOCX, Figma, codebase, raw text) | Stable |
Test generation for 6 frameworks (vitest, jest, playwright, pytest, junit, xunit) | Stable |
MCP-to-MCP routing (GitHub, Azure DevOps, Jira, Terraform, Figma, Docker) | Stable |
CycloneDX SBOM artifact + optional Cosign signing on Docker image | Stable |
JSONL audit logger (optional) | Stable |
RBAC foundation (opt-in role-based access control) | Stable |
Rate limiting for HTTP transport (opt-in) | Stable |
HTTP transport: loopback bind by default, bearer-token auth ( | Stable |
Enterprise profile ( | Stable |
Identity-based RBAC over HTTP ( | Stable |
Tamper-evident audit trail (HMAC-signed entries, fail-closed mode, | Stable |
Server-enforced analysis gate on implement tools | Stable |
Strict phase bookkeeping ( | Stable |
Stale gate invalidation on artifact rewrite | Stable |
Strict multi-feature resolution | Stable |
OpenCode two-step bootstrap ( | Stable |
VS Code MCP dual schema ( | Stable |
Future capabilities (planned)
Feature | Description |
Observability | OpenTelemetry metrics and structured logging |
Internationalization | Spec templates in PT-BR, ES, FR, DE, JA |
Automated shrinking | fast-check/Hypothesis shrinking feedback into spec refinement |
Centralized audit log | SIEM export (syslog shipping, OTLP) of the tamper-evident audit trail |
Multi-tenant | Isolated workspaces for multiple teams |
SSO / SAML | Federated identity for enterprise auth (beyond the static token table) |
Have a feature request? Open an issue.
Examples
See examples/ for a complete, real spec package generated by
running the pipeline end-to-end — examples/todo-api/
is a greenfield REST API taken from sdd_init all the way to an APPROVE
quality gate at 100% traceability. examples/specky-verify.example.yml is a
drop-in GitHub Action that verifies EARS + the quality gate on every PR.
Contributing
See CONTRIBUTING.md for architecture details and how to add tools, templates, or services.
Links
docs/README.md: Documentation index
docs/GETTING-STARTED.md: Complete educational guide
CHANGELOG.md: Version history and release notes
SECURITY.md: Vulnerability disclosure policy and OWASP Top 10 coverage
docs/CONTRIBUTING.md: How to add tools, templates, or services
Spec-Kit: The SDD methodology foundation
npm package:
specky-sddon npm
License
MIT. Created by Paula Silva | Americas Software GBB, Microsoft
Available Tools
58 toolssdd_advance_phaseAdvance Pipeline PhaseA
Validates that the current phase's required files exist, then transitions the state machine to the next phase. When pipeline.require_lgtm is enabled, completing the specify/design/tasks quality gates requires lgtm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| lgtm | No | Explicit human approval (LGTM) for the phase being completed. Required at the specify/design/tasks gates when pipeline.require_lgtm is enabled in .specky/config.yml. | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries full burden. It discloses that validation and transition occur, and the lgtm condition, but omits important behavioral details such as what happens on validation failure, reversibility, or permission requirements. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core action and follow with a conditional nuance. Every word contributes meaning, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple phase advancement tool, the description covers the key functionality and a notable conditional. However, it lacks explanation of what constitutes the 'current phase,' required files, or return behavior, leaving some gaps for new users. Still adequate for familiar users.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the conditional requirement for the 'lgtm' parameter, which is not fully captured in the schema description alone. Other parameters are sufficiently documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates required files and transitions the state machine, with a specific condition about lgtm. It effectively distinguishes this phase-advancement tool from its many siblings (e.g., sdd_checkpoint, sdd_implement) by naming the exact action and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you want to advance a phase) but does not specify when not to use it or suggest alternatives. Given the large sibling list, explicit guidance on when to prefer this tool over others would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_amendAmend ConstitutionA
Appends an amendment entry to CONSTITUTION.md's changelog and updates the amendment_count in frontmatter.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| rationale | Yes | Why this amendment is needed | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| articles_affected | Yes | Which Constitution articles are affected | |
| changes_description | Yes | Description of the changes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly states that the tool modifies CONSTITUTION.md by appending a changelog entry and updating frontmatter. With annotations all set to false, the description adequately conveys the write behavior without destructive side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core action, no filler. Every word provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the output behavior is clear, the description omits prerequisites (e.g., whether CONSTITUTION.md must exist) and does not mention return values (no output schema). Given the tool's role in a workflow, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are described in the input schema (100% coverage). The tool description does not add new meaning beyond the schema, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('appends', 'updates') and identifies the exact resource ('CONSTITUTION.md'). It clearly distinguishes this tool from its many siblings by focusing on constitutional amendments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., sdd_write_spec). The description is purely functional, leaving the agent to infer context from the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_auto_pipelineAuto Pipeline from TranscriptA
FULLY AUTOMATED: Reads a meeting transcript, extracts requirements, and runs the complete SDD pipeline in one call. Creates CONSTITUTION.md, SPECIFICATION.md, DESIGN.md, TASKS.md, and ANALYSIS.md from a single transcript file. Supports VTT (Teams), SRT (Zoom), TXT, and MD formats.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing spec files | |
| format | No | Transcript format | auto |
| raw_text | No | Raw transcript text (alternative to file_path — paste directly) | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| file_path | No | Path to transcript file (.vtt, .srt, .txt, .md) relative to workspace root | |
| principles | No | Override project principles (auto-extracted from transcript if omitted) | |
| project_name | Yes | Project name in kebab-case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool creates multiple files and lists them, which adds behavioral context beyond annotations. Annotations indicate non-destructive and non-idempotent, which aligns. No contradiction detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two short paragraphs, front-loading the key purpose and listing outputs in a clear structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema and annotations, the description covers the main purpose, outputs, and formats. It could mention the pipeline steps or output structure, but for an AI agent, the description is sufficient to understand what the tool achieves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context to parameters beyond the schema, such as associating file formats with source applications (Teams, Zoom) and clarifying that raw_text is an alternative to file_path. With 100% schema coverage, the description still provides value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (reads, extracts, runs), the resource (meeting transcript), and the output (complete SDD pipeline with five files). It distinguishes from siblings by emphasizing full automation and end-to-end pipeline, unlike more specific tools like sdd_import_transcript or sdd_generate_all_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use: when you have a transcript and want all SDD documents generated. It does not explicitly state when not to use or provide alternatives, but the context of siblings makes the differentiation implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_batch_importBatch Import DocumentsARead-onlyIdempotent
Scans a directory for supported documents (PDF, DOCX, PPTX, TXT, MD, VTT, SRT) and converts each to Markdown. Returns an array of conversion results with total count and per-file metadata. Compressed PDF/DOCX/PPTX files (what Office/PDF exporters typically produce) are counted as failed with the reason — only uncompressed ones convert natively; use the MarkItDown MCP integration (uvx markitdown-mcp) for full Office/PDF support.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| documents_dir | Yes | Directory containing documents to import (PDF, DOCX, PPTX, TXT, MD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds behavior context: compressed files are counted as failed with reason, and only uncompressed ones convert natively. No contradiction detected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and moderate complexity, the description is complete. It covers input format support, a known limitation, and an alternative tool. No gaps remain for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no additional meaning beyond the schema for parameters, but the provided context about compression is relevant to tool behavior, not parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans a directory for supported documents and converts each to Markdown, returning conversion results. It uses specific verbs ('scans', 'converts', 'returns') and distinguishes from sibling tools like sdd_import_document via the batch nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when not to use it: compressed files are not supported natively and provides an alternative (MarkItDown MCP integration) for full Office/PDF support. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_batch_transcriptsBatch Process Transcript FolderA
Scans a folder for transcript files (.vtt, .srt, .txt, .md) and runs the full SDD auto-pipeline for each one. Designed for Power Automate + OneDrive workflows where meeting transcripts are saved automatically to a shared folder. Each transcript becomes its own feature spec package.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing spec files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| transcripts_dir | Yes | Path to folder containing transcript files (.vtt, .srt, .txt, .md) relative to workspace root. Example: 'transcripts' or 'OneDrive/Meeting Transcripts' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate potential state changes (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description adds that it runs an 'auto-pipeline' and creates 'feature spec packages' but does not detail side effects, resource usage, or error behavior. The description adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function followed by context. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description hints at output ('each transcript becomes its own feature spec package') but does not explain return format, error handling, or limitations. For a batch tool, more details on concurrency or file size limits would improve completeness. The description is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with clear parameter descriptions. The description adds no further parameter meaning beyond stating that each transcript becomes a spec package. Baseline 3 is appropriate as schema already provides sufficient semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scans a folder for transcript files and runs the full SDD auto-pipeline for each, with specific file types listed. It provides context about Power Automate and OneDrive workflows, making the purpose clear. However, it does not explicitly distinguish from sibling tools like sdd_auto_pipeline, though 'batch' implies multiple files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a typical use case (Power Automate + OneDrive workflows) but does not specify when to avoid using this tool or mention alternatives. It implies batch processing but lacks explicit guidance on prerequisites or when to choose batch over single-file tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_check_accessA
Check RBAC access for the current caller. Returns the active role (authenticated token role > SDD_ROLE > default_role), whether a specific tool is accessible, and a summary of what each role can do. Useful for diagnosing permission issues in enterprise deployments.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | No | Check access for a specific tool. If omitted, returns a summary of all role permissions. | |
| role_override | No | Override the active role for this check (for testing access). Defaults to the authenticated token role, then SDD_ROLE env var, then the configured default_role. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the output (role, tool access, summary) and the role priority order, which implies it is a read-only diagnostic tool. However, it does not explicitly state that it is non-destructive or require authentication, leaving some behavioral aspects implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the purpose and output, with no redundant or irrelevant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, no output schema), the description is complete: it explains what the tool returns, the role priority, and the use case. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds context by explaining the overall behavior and the role priority order, but it does not provide significant additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Check RBAC access' and the resource 'current caller', specifying what is returned (role, tool access, summary). It distinguishes itself from sibling tools like sdd_check_ecosystem or sdd_check_sync by focusing on access control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions it is 'useful for diagnosing permission issues in enterprise deployments', providing clear context. However, it does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_check_ecosystemCheck MCP EcosystemARead-onlyIdempotent
Reports which external MCP servers are recommended for the full Specky experience. Shows what each server does, which Specky tools it enhances, and how to install it. Run this first to understand what integrations are available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive. The description adds functional behavior (what it reports) but no new behavioral traits beyond the annotations. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with main action 'Reports which external MCP servers', each sentence adds value without redundancy. Highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers what the tool reports but lacks details on the output format or structure. For a discovery tool, it is adequate but could be more complete by hinting at the list nature of the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is 100%. The description adds no parameter details because none exist. Baseline 4 is appropriate as no compensation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports recommended MCP servers, their functions, enhancements, and installation steps. It explicitly says 'Run this first' which distinguishes it from sibling check tools like sdd_check_access and sdd_check_sync that focus on different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to run this first to understand integrations, providing clear when-to-use guidance. However, it does not explicitly state when not to use it or mention alternatives, though for a discovery tool the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_checklistGenerate Quality ChecklistA
Generates a domain-specific quality checklist (security, accessibility, performance, etc.) by analyzing SPECIFICATION.md and DESIGN.md. Writes CHECKLIST.md.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| domain | Yes | Quality domain for the checklist | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool reads SPECIFICATION.md and DESIGN.md and writes CHECKLIST.md. Annotations (readOnlyHint false) are consistent with writing behavior. The force parameter is covered in schema but not in description, but overall transparency is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action, no redundant information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main inputs (domain, files) and output (CHECKLIST.md). It lacks mention of prerequisites (e.g., existence of SPECIFICATION.md) or error conditions, but for a checklist generation tool with clear schema, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with descriptions for all 4 parameters. The description does not add additional parameter semantics beyond mentioning domains. Baseline 3 is appropriate as schema already documents parameters sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates a domain-specific quality checklist by analyzing SPECIFICATION.md and DESIGN.md and writes CHECKLIST.md. The verb 'generates' and resource 'quality checklist' are specific, and the tool differentiates from siblings by focusing on checklists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to generate quality checklists, but it does not provide explicit guidance on when to use this tool versus alternatives like sdd_generate_all_docs or sdd_generate_docs. No exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_checkpointCreate CheckpointA
Creates a named snapshot of all spec artifacts (CONSTITUTION.md, SPECIFICATION.md, DESIGN.md, TASKS.md, etc.) and the current pipeline state. Use before making major changes so you can rollback if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Human-readable label for this checkpoint (e.g. 'before-redesign', 'v1-approved') | |
| spec_dir | No | Spec directory path | .specs |
| feature_number | No | Feature number (e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, and description states it creates a snapshot (mutation). It does not disclose whether overwriting occurs if a checkpoint with the same label exists, nor does it detail side effects like pipeline state changes. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage. Every word earns its place — no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return values. It adequately covers what is captured and when to use it, but lacks details on rollback mechanism or pipeline state components. Sufficient for a simple snapshot tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description only adds minimal context (e.g., label examples) beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Creates a named snapshot of all spec artifacts... and the current pipeline state', using a specific verb and resource. It distinguishes from sibling tools like sdd_restore (rollback) and sdd_list_checkpoints (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use before making major changes so you can rollback if needed', providing clear context for when to use. However, it does not mention when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_check_syncCheck Spec-Code SyncARead-onlyIdempotent
Compares specification requirements against implementation files and returns a drift report showing which requirements are implemented and which are missing.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| code_paths | No | Paths to implementation files to check against spec | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context that output is a drift report, consistent with annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is clear and to the point. No wasted words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description mentions drift report. Additional detail about report format or contents would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have schema descriptions (100% coverage). Description does not add new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool compares specification requirements against implementation files and returns a drift report. This specific verb+resource combination distinguishes it from sibling check tools like sdd_check_access or sdd_check_ecosystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for checking spec-code sync, but no explicit guidance on when to use vs alternatives like sdd_scan_codebase or sdd_run_analysis. No when-not-to-use conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_clarifyClarify RequirementsAIdempotent
Reads SPECIFICATION.md and returns up to 5 disambiguation questions targeting ambiguous or incomplete requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true, and description confirms it only reads and returns questions. It adds 'up to 5' limit and targeting ambiguity, which is helpful but minimal beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, 14 words, front-loaded with action and output. Very concise and clear, though could include brief usage hint without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with full schema descriptions and annotations, the description adequately covers purpose, input, and output. It could mention no side effects, but annotations already cover idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). The description adds no additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads SPECIFICATION.md and returns disambiguation questions. It uniquely targets ambiguous or incomplete requirements, distinguishing it from siblings like sdd_figma_to_spec or sdd_generate_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for clarifying ambiguous requirements but does not explicitly state when to use vs. alternatives or provide exclusions. Sibling tools exist for other spec stages, but no direct alternative is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_compliance_checkRun Compliance CheckBRead-onlyIdempotent
Validates specification and design against a compliance framework (HIPAA, SOC2, GDPR, PCI-DSS, ISO27001, or general). Writes COMPLIANCE.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| framework | Yes | Compliance framework to validate against | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool writes COMPLIANCE.md, which contradicts the annotation readOnlyHint=true. This is a serious inconsistency, as a write operation cannot be read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key action and scope. It is efficient but could be slightly more structured without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action but does not explain the return value, error handling, or prerequisites (e.g., existence of spec files). Given the absence of an output schema, more information would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description does not add additional meaning beyond what the schema already provides for each parameter. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool validates specification and design against specified compliance frameworks and writes a COMPLIANCE.md file. This clearly distinguishes it from other sibling tools like generic validation or generation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for compliance checking but does not specify when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_context_statusContext Tier StatusARead-onlyIdempotent
Return the context tier assignment (Hot/Domain/Cold) for all spec artifacts in the active feature. Includes estimated token load for current session vs universal loading, and savings percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readonly, nondestructive, and idempotent behavior. The description adds valuable context: it specifies the output includes Hot/Domain/Cold tiers and token load savings. It does not contradict annotations (annotation_contradiction is false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose and includes all key outputs. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully explains what is returned: context tier assignments (Hot/Domain/Cold), token load estimates for current session vs universal loading, and savings percentage. This is complete for a status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as both parameters have descriptions. The description does not add meaning beyond the schema beyond mentioning 'active feature' which implies a default behavior. Per guidelines, with high schema coverage baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly says 'Return the context tier assignment and token load estimates'. The verb is specific ('Return'), the resource is well-defined ('context tier assignment' and 'token load estimates'), and it distinguishes from siblings by focusing on context management, which is unique among the many sdd_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for checking context tiers, but it lacks explicit guidance on when to use it versus alternatives or when not to use it. Given the large number of siblings, more context (e.g., 'Use this to check the performance impact of context loading') would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_create_branchCreate Feature BranchARead-onlyIdempotent
Generates a branch name following SDD conventions and returns a command_hint for creating the branch. Does not execute git commands — the AI client or user runs the command.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| base_branch | No | Base branch to create from | main |
| branch_prefix | No | Branch name prefix (e.g., 'feature/', 'feat/', 'spec/') | feature/ |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description confirms non-execution and adds that it returns a command_hint, providing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded with the core purpose, followed by a critical usage caveat. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and the absence of an output schema, the description sufficiently explains what the tool does and what it returns. Complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all 4 parameters. The description does not add any additional semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a branch name following SDD conventions and returns a command_hint. It differentiates from sibling tools like sdd_create_pr by focusing on branch naming rather than PR creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it does not execute git commands, guiding the AI to use it for generating commands rather than executing. Could be improved by mentioning when to use this versus other branching tools, but still clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_create_prCreate Pull Request PayloadARead-onlyIdempotent
Generates a pull request payload from SPECIFICATION.md and TASKS.md with spec summary, requirements covered, and task progress. Returns routing_instructions for GitHub MCP's create_pull_request tool.
| Name | Required | Description | Default |
|---|---|---|---|
| draft | No | Create as draft PR | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| base_branch | No | Target branch for the PR | main |
| head_branch | No | Source branch for the PR. Auto-generated from feature number if omitted | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds transparency by naming the input files (SPECIFICATION.md, TASKS.md) and the output's contents (spec summary, requirements, task progress), which aligns with annotations and provides valuable context without contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action, and every word is necessary. No redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose (generating a payload for another tool), the description provides complete context: input files, output nature (routing_instructions), and the intended downstream use. No gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description does not add additional meaning beyond what the schema provides, as the schema already documents all five parameters with descriptions and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a pull request payload from SPECIFICATION.md and TASKS.md and returns routing_instructions for another tool. It distinctly specifies the verb (generates) and resource (PR payload), differentiating it from sibling tools like sdd_create_branch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning the routing_instructions for GitHub's create_pull_request tool, but it does not explicitly state when to use this tool versus alternatives or provide when-not guidance. This leaves room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_cross_analyzeCross-Artifact AnalysisARead-onlyIdempotent
Cross-artifact consistency analysis: checks alignment between SPECIFICATION.md, DESIGN.md, and TASKS.md. Finds orphaned requirements, missing designs, and untraced tasks. Writes CROSS_ANALYSIS.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims 'Writes CROSS_ANALYSIS.md', indicating a file creation side effect, which contradicts the readOnlyHint=true annotation. This is a serious inconsistency. Additionally, no further behavioral traits (e.g., permissions, rate limits) are disclosed, and annotations already cover safety but are contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with direct, front-loaded content: purpose, artifacts checked, findings, and output file. No redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain what the tool returns or how to interpret the analysis result. It only says 'Writes CROSS_ANALYSIS.md' but does not describe the tool's return value or behavior if files are missing. Adequate for core function but incomplete on response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents both parameters. The description does not add any extra meaning beyond the schema (e.g., no usage tips or format details), resulting in baseline value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'checks alignment' and identifies the specific resources (SPECIFICATION.md, DESIGN.md, TASKS.md) along with the outcomes (orphaned requirements, missing designs, untraced tasks) and output file (CROSS_ANALYSIS.md). This distinguishes it from sibling tools like sdd_verify_tasks or sdd_validate_ears.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when cross-artifact consistency is needed, but does not explicitly state when to use vs alternatives or when not to use. The context is clear enough for an agent to infer typical use cases, but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_discoverDiscover Project RequirementsAIdempotent
Returns 7 structured discovery questions tailored to your project idea. Covers: scope, users, constraints, integrations, performance, security, and deployment.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| project_idea | Yes | Description of the project idea | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| codebase_summary | No | Output from sdd_scan_codebase for context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, but readOnlyHint=false, which is ambiguous. The description does not clarify side effects (e.g., whether it modifies state or is purely read). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key purpose, no redundant information. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the output structure but lacks details on how auxillary parameters (spec_dir, codebase_summary, feature_number) influence the questions or behavior. With no output schema, more context on return value could improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The tool description adds context about output categories but does not elaborate how each parameter affects the questions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 7 structured discovery questions tailored to the project idea, covering specific categories. This distinguishes it from siblings that handle later phases or different tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use during initial project discovery but does not explicitly state when to use it versus alternatives like sdd_clarify or sdd_research. No exclusions or when-not-to-use guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_export_work_itemsExport Work ItemsARead-onlyIdempotent
Transforms TASKS.md into platform-specific work item payloads: GitHub Issues {title, body, labels}, Jira {fields: {project.key, summary, description, issuetype}} (project_key required), or Azure Boards {work_item_type, fields: System.Title/System.Description/System.AreaPath/System.IterationPath}. Honors include_subtasks and preserves REQ/task traceability in every shape. Returns routing_instructions for the AI client to create items via the appropriate MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | Yes | Target platform for work item export | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| area_path | No | Azure DevOps area path (optional for Azure Boards) | |
| project_key | No | Jira project key (required for Jira platform) | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| iteration_path | No | Azure DevOps iteration path (optional for Azure Boards) | |
| include_subtasks | No | Include subtasks for each top-level work item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: it honors include_subtasks, preserves traceability, and importantly returns routing_instructions rather than creating items directly. This goes beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences. The first sentence immediately states the primary functionality and output shapes, front-loading critical information. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (three platforms with different structures), the description provides complete context: input source, output shapes for each platform, key parameter behavior, and return value. Since no output schema exists, the description adequately explains what the tool returns (routing_instructions).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explicitly noting that 'project_key' is required for Jira (even though not marked required in schema) and that 'include_subtasks' is honored. This provides necessary linkage between parameters and platform-specific behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (transforms TASKS.md), the specific outputs (platform-specific payloads for GitHub, Jira, Azure Boards), and distinguishes it from sibling tools (no other export tool). The verb 'transforms' and resource 'TASKS.md' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use the tool (when needing to export work items to one of the listed platforms). It provides detailed output shapes, but does not explicitly exclude scenarios or mention alternatives. However, given no sibling tools perform a similar function, the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_figma_diagramGenerate Figma Diagram PayloadARead-onlyIdempotent
Generates a FigJam-ready diagram payload from DESIGN.md. Returns structured data with routing_instructions for the AI client to call Figma MCP's generate_diagram tool.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| diagram_type | Yes | Type of diagram to generate for FigJam. | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only and idempotent behavior. The description adds value by specifying the output contains routing_instructions, which is beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but could be clearer about the 'routing_instructions' concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description partially explains the return value (structured data with routing_instructions), but remains somewhat vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add parameter-specific details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a FigJam-ready diagram payload from DESIGN.md with routing_instructions, which distinguishes it from sibling tools like sdd_generate_diagram (likely direct generation) and sdd_figma_to_spec (reverse).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use as a preparatory step for calling Figma MCP's generate_diagram tool, but lacks explicit when-to-use directives or exclusions compared to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_figma_to_specFigma to SpecARead-onlyIdempotent
Prepares a structured payload for extracting design context from a Figma file. The AI client should use the returned routing_instructions to call Figma MCP's get_design_context tool with the provided file key and node ID.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| project_name | Yes | Kebab-case project name for the generated spec. | |
| figma_node_id | No | Specific Figma node ID to extract. If omitted, extracts entire file. | |
| figma_file_key | Yes | Figma file key extracted from the Figma URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds that it produces routing_instructions but does not elaborate on side effects or what the payload contains. With annotations present, the bar is lower, but the description could add context about file creation (given spec_dir and force parameters) which is absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the purpose, the second provides usage instructions. It is appropriately sized, front-loaded, and every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with full schema coverage and annotations, the description is somewhat complete but lacks explanation of the tool's output format and the fact that it likely generates files (given spec_dir and force parameters). No output schema exists, so the description should provide more behavioral context. Adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The description does not add significant meaning beyond the schema; it mentions the concept of routing_instructions but doesn't tie into specific parameters. Baseline 3 is appropriate since the schema covers most details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it prepares a structured payload for extracting design context from Figma, which is a specific verb+resource. It distinguishes itself from siblings by mentioning the production of routing_instructions for another tool, though it doesn't explicitly contrast with similar tools like sdd_figma_diagram.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is a preparatory step before calling Figma MCP's get_design_context, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. Context is provided but lacks exclusions or conditional logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_all_diagramsGenerate All DiagramsAIdempotent
Generates ALL diagram types for a feature in one call. Produces architecture, sequence, ERD, flow, dependency, and traceability diagrams from all available artifacts, and writes the full set to DIAGRAMS.md in the feature directory, grouped by source artifact.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it 'writes the full set to DIAGRAMS.md' and groups by source artifact. Annotations already indicate idempotency and non-destructiveness, and description adds meaningful output context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. Main action in first sentence, output detail in second. No filler, front-loaded, easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 params, no output schema, and safe annotations, description is complete. It explains output file and diagram types. Minor gaps: doesn't explicitly state dependency on existing artifacts or batch behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both params documented). Description does not add additional parameter-level meaning, but baseline 3 is appropriate as schema provides sufficient detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it generates ALL diagram types for a feature, listing specific types (architecture, sequence, ERD, flow, dependency, traceability). Distinguishes from sibling tools like sdd_generate_diagram by emphasizing the 'all' aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context ('Generates ALL diagram types for a feature in one call') implying use when complete set is needed. However, does not explicitly state when not to use, nor mention alternatives like sdd_generate_diagram for single diagrams.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_all_docsGenerate All DocumentationA
Generates ALL documentation types in parallel: full docs, API docs, runbook, onboarding guide, and SDD journey. All documents are written to docs/ directory. This is the fastest way to generate complete project documentation.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory. | .specs |
| feature_number | Yes | Zero-padded feature number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are uninformative (all false). Description adds context: parallel generation and output to docs/ directory. However, it does not disclose idempotency, overwrite behavior, or resource usage beyond 'fastest'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no fluff. First sentence states core purpose and lists types, second specifies output location, third gives value proposition. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides key expectations: parallel generation, output directory, coverage of all doc types. However, lacks details on error handling, prerequisites, or whether files are overwritten. Given simplicity, still adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters documented. The tool description adds no additional parameter information beyond the schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates 'ALL documentation types in parallel' and lists specific types: full docs, API docs, runbook, onboarding guide, and SDD journey. It distinguishes from siblings like sdd_generate_api_docs by emphasizing 'ALL' and 'parallel'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for comprehensive doc generation ('fastest way to generate complete project documentation'), but does not explicitly state when to avoid or prefer alternatives. Sibling tools for individual doc types exist without exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_api_docsGenerate API DocumentationA
Extracts API endpoints from DESIGN.md and generates structured API documentation with request/response examples. Writes to docs/api-{feature}.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory. | .specs |
| feature_number | Yes | Zero-padded feature number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly states that the tool writes to a file (side effect) and specifies the input source (DESIGN.md). Annotations are all false, so the description adds behavioral context beyond annotations. However, it does not discuss error handling or prerequisites beyond the input file existence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, front-loading the core action and then specifying the output. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 parameters (both documented in schema) and no output schema, the description adequately explains what the tool produces (structured API documentation with examples) and where it writes the output. It is sufficiently complete for an agent to use without confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description provides no additional meaning for the parameters beyond what the schema already provides (feature_number pattern and spec_dir default).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool extracts API endpoints from DESIGN.md and generates structured API documentation. It specifies the output file pattern (docs/api-{feature}.md), which distinguishes it from sibling tools like sdd_generate_docs and sdd_generate_all_docs that generate more general documentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when API documentation needs to be generated from DESIGN.md), but it does not explicitly provide guidance on when not to use it or suggest alternatives such as sdd_generate_docs for non-API documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_devcontainerGenerate Devcontainer ConfigAIdempotent
Generates .devcontainer/devcontainer.json from the detected tech stack (codebase manifests, falling back to DESIGN.md). Writes the file to disk for local use with VS Code Dev Containers or GitHub Codespaces.
| Name | Required | Description | Default |
|---|---|---|---|
| features | No | Devcontainer features to include (e.g., 'ghcr.io/devcontainers/features/node:1'). | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| base_image | No | Base Docker image for the devcontainer. Auto-detected from tech stack if omitted. | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false. The description adds that the tool 'writes the file to disk', which is consistent with a non-destructive write. However, it does not mention overwrite behavior or potential side effects like modifying existing configs without confirmation. Given annotations cover safety profile, the description provides adequate but not exceptional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary action and source. Every sentence adds value without redundancy. It is concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the output file's contents (base image, features, extensions, port forwarding) and the detection mechanism. Without an output schema, this is sufficient for an agent to understand what the tool produces. However, it could mention that the tool creates the .devcontainer directory if missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as all four parameters have descriptions in the input schema. The description adds minimal extra meaning beyond the schema, only implying that features and base_image are configurable. Baseline 3 is appropriate since the description does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates .devcontainer/devcontainer.json from the detected tech stack. It specifies the verb 'generates', the resource 'devcontainer config', and the source 'codebase manifests, falling back to DESIGN.md'. This is specific and distinct from sibling tools like sdd_generate_dockerfile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the output is for local use with VS Code Dev Containers or GitHub Codespaces, which implies usage context. However, it does not explicitly state when to use this tool versus alternatives (e.g., sdd_generate_dockerfile) or when not to use it. No comparison or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_diagramGenerate Mermaid DiagramBRead-onlyIdempotent
Generates a single Mermaid diagram from a specification artifact. Supports 17 diagram types: flowchart, sequence, class, ER, state machine, C4 context, C4 container, C4 component, C4 code, activity, use case, DFD (data flow), deployment, network topology, Gantt, pie chart, and mind map.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Which artifact to generate the diagram from. | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| diagram_type | Yes | Type of Mermaid diagram to generate. 17 types covering all software engineering diagram categories. | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey read-only, non-destructive, idempotent behavior. The description does not contradict annotations but adds minimal behavioral context beyond what annotations provide. It does not disclose any side effects or additional constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, no unnecessary words. However, could be slightly more concise by integrating diagram types list into sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description could mention return value. It adequately covers purpose and diagram types but lacks guidance on usage and output. Adequate for a 4-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself documents parameters well. The description lists diagram types but adds no new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a single Mermaid diagram from a specification artifact, and lists all 17 supported diagram types. It distinguishes from sibling tools like sdd_generate_all_diagrams which generates all diagrams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. There is no mention of when to use a single diagram vs generating all diagrams, or when to use different source artifacts. Missing context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_dockerfileGenerate DockerfileAIdempotent
Reads DESIGN.md or uses sdd_scan_codebase results to detect the tech stack, then generates a Dockerfile and optionally a docker-compose.yml. Supports multi-stage builds for smaller production images.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| multi_stage | No | Use multi-stage build for smaller production images | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| include_compose | No | Also generate docker-compose.yml alongside Dockerfile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent (idempotentHint=true), non-destructive (destructiveHint=false), and modifying (readOnlyHint=false). The description adds context that the tool uses multi-stage builds for smaller production images, which is beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with action (Reads... generates...). Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generation tool without output schema, the description covers inputs (DESIGN.md or scan results), output (Dockerfile, optionally compose), and key feature (multi-stage). Missing details like format of output or idempotency behavior, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, explaining all four parameters. The description does not add significant meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads DESIGN.md or uses sdd_scan_codebase results to detect tech stack and generates a Dockerfile (optionally docker-compose.yml). This distinguishes it from sibling generate tools like sdd_generate_devcontainer or sdd_generate_iac.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies prerequisites (DESIGN.md or sdd_scan_codebase results) but does not explicitly state when to use this tool versus alternatives. No exclusion criteria are provided, and the alternatives are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_docsGenerate Full DocumentationB
Generates comprehensive feature documentation from SPECIFICATION.md, DESIGN.md, TASKS.md, and ANALYSIS.md. Writes a combined Markdown file to docs/ with all sections.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory. | .specs |
| feature_number | Yes | Zero-padded feature number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations lack behavioral hints (readOnlyHint=false, destructiveHint=false, etc.), so the description must carry the burden. It mentions writing a file but does not disclose overwrite behavior, failure conditions if input files are missing, or error handling. The agent cannot infer side-effect risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. The first sentence states the purpose and inputs, the second the output location. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 parameters and no output schema, the description covers inputs and output location adequately but lacks details on side effects (overwrite, error on missing files). It is minimally complete but leaves behavioral gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds little beyond what the schema provides; 'feature_number' pattern and 'spec_dir' default are already clear. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generates' and the resource 'comprehensive feature documentation', listing specific input files and output location. It distinguishes from sibling doc generation tools by specifying the exact inputs and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus other doc generation siblings like sdd_generate_api_docs or sdd_generate_all_docs. The description implies a context but does not provide explicit when/when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_iacGenerate Infrastructure as CodeAIdempotent
Reads DESIGN.md to detect infrastructure needs and generates Terraform or Bicep files. Returns generated file contents, variables, and a Mermaid diagram of the infrastructure topology.
| Name | Required | Description | Default |
|---|---|---|---|
| cloud | No | Target cloud provider | azure |
| modules | No | Specific infrastructure modules to generate (e.g., 'networking', 'compute', 'database'). If omitted, generates all detected from DESIGN.md | |
| provider | No | IaC provider to use | terraform |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
IdempotentHint clarifies safe to retry; description details output (files, variables, diagram) aligning with read-only generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff; front-loaded verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers input source, output contents, and diagram generation; lacks error conditions but adequate for generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameter descriptions; description adds no extra parameter meaning beyond existing schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool reads DESIGN.md and generates Terraform or Bicep files, distinguishing it from siblings like sdd_validate_iac.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use after DESIGN.md exists, but no explicit guidance on when to use vs alternatives like sdd_generate_all_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_onboardingGenerate Onboarding GuideA
Generates a developer onboarding guide with feature overview, architecture summary, getting started steps, key concepts, and file locations. Writes to docs/onboarding-{feature}.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory. | .specs |
| feature_number | Yes | Zero-padded feature number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate not read-only and not destructive. The description adds that it writes to a specific file path, implying a side effect, but does not disclose overwrite behavior or permissions. Minimal additional context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the tool's purpose and output. Every word adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 params, no output schema), the description covers the core functionality and output location. However, it lacks details on input sources (e.g., whether it requires an existing spec) and file handling behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The tool description adds no extra semantic meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool generates a developer onboarding guide with specific content (feature overview, architecture summary, etc.) and writes to a file. It distinguishes itself from sibling tools like sdd_generate_docs and sdd_generate_runbook by specifying its unique output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or conditions. Siblings like sdd_generate_docs and sdd_generate_runbook exist but no differentiation is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_pbtGenerate Property-Based TestsA
Extracts universal properties (invariants, round-trips, idempotence) from EARS requirements and generates property-based tests using fast-check (TypeScript) or hypothesis (Python). Unlike example-based tests, PBT uses random input generation to discover edge cases that manual tests miss.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| framework | Yes | Property-based testing framework: fast-check (TypeScript/JS) or hypothesis (Python) | |
| output_dir | No | Output directory for generated PBT files | tests |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not destructive, and not idempotent, which aligns with generating test files. The description adds that it extracts properties and generates files, but doesn't mention file overwrite behavior or output structure, so it adds modest value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core action and differentiation, with no wasted words. It efficiently conveys the purpose and key distinction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and the complexity of PBT generation, the description covers the essential purpose, source (EARS), and output (test files with specific frameworks). It could mention where files are created or that output_dir is used, but the schema covers that; overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
100% schema coverage means the schema already describes each parameter. The description does not add further explanation or usage hints for parameters, so it meets the baseline without additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it extracts universal properties from EARS requirements and generates PBT files using fast-check or hypothesis, and explicitly differentiates from example-based tests, distinguishing it from sibling tools like sdd_generate_tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contrasts PBT with example-based tests and specifies the applicable frameworks, giving context for when to use this tool. However, it does not explicitly list when not to use it or mention any prerequisites like the presence of EARS requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_runbookGenerate Operational RunbookB
Generates an operational runbook with deployment, monitoring, troubleshooting, and rollback procedures. Writes to docs/runbook-{feature}.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory. | .specs |
| feature_number | Yes | Zero-padded feature number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so description carries full burden. It mentions generating and writing a file but lacks details on idempotency (overwrite vs. append), side effects, or prerequisites. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys purpose and output. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not clarify what the tool returns (e.g., confirmation, file path). It also omits behavior when the target file already exists. Incomplete for a file-generating tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the schema. The description adds no extra semantic information beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates an operational runbook with specific sections (deployment, monitoring, troubleshooting, rollback) and specifies the output file pattern. This distinguishes it from sibling generation tools like sdd_generate_docs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating runbooks for features but provides no explicit guidance on when to use this tool versus alternatives like sdd_generate_docs or sdd_generate_api_docs. No when-not or alternative examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_testsGenerate Test StubsA
Generate test stubs from acceptance criteria in SPECIFICATION.md and TASKS.md. Supports 6 frameworks: vitest, jest, playwright, pytest, junit, xunit. Each test stub traces to a requirement ID for full traceability.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| framework | Yes | Test framework to generate stubs for | |
| output_dir | No | Output directory for generated test files (e.g. 'tests', 'src/__tests__') | tests |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) provide no safety info. The description mentions 'generates', implying file creation, but does not disclose potential side effects like overwriting existing files, or permissions needed. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first defines action and source, second adds frameworks and traceability. No wasted words; ideal length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core purpose and framework support, but lacks details on output format, when to use relative to siblings like sdd_generate_pbt, and expected behavior when spec files are missing. Given no output schema, more context would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds 'traces to a requirement ID', which is not in the schema, but this is marginal. The parameter descriptions in the schema already adequately convey meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate test stubs from acceptance criteria in SPECIFICATION.md and TASKS.md.', which provides a specific verb and resource. It distinguishes from siblings by focusing on test stubs and mentioning traceability, making it clear what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when test stubs are needed, but does not explicitly guide when to use this tool vs alternatives like sdd_generate_pbt or sdd_verify_tests. No exclusions or conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_generate_user_storiesGenerate User StoriesARead-onlyIdempotent
Generates user stories with acceptance criteria and flow diagrams from SPECIFICATION.md. Each story includes a Mermaid flowchart of the user journey.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| max_stories | No | Maximum number of user stories to generate. | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, destructiveHint, idempotentHint) already cover behavioral safety. Description adds no further behavioral details (e.g., output format, side effects). With rich annotations, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action verb, no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and rich annotations, description is nearly complete. It specifies input and output (user stories, acceptance criteria, Mermaid diagrams). Minor gap: does not clarify whether output is returned directly or written to disk, but annotations imply read-only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; each parameter already has clear description. The tool description adds no additional parameter semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'generates' and resource 'user stories with acceptance criteria and flow diagrams' and specifies input file 'SPECIFICATION.md'. It distinguishes from sibling tools like sdd_generate_docs and sdd_generate_diagram by focusing on user stories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides context by specifying input from SPECIFICATION.md, implying use when generating user stories from that file. However, no explicit when-to-use or when-not-to-use guidance, nor alternatives cited amidst many sibling 'generate' tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_get_statusGet Pipeline StatusARead-onlyIdempotent
Returns the current pipeline status including: current phase, completed phases, files on disk, completion percentage, and recommended next action.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, establishing it as a safe, read-only operation. The description adds value by detailing the return content (phases, files, percentage, next action), but does not disclose any additional behavioral traits (e.g., whether it requires a running pipeline, rate limits, or side effects). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that lists key return fields. No redundant or extraneous information. It is front-loaded with the core purpose ('Returns the current pipeline status') and efficiently details the content. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional params, no output schema), the description adequately covers the return fields and intended use. It could be more complete by noting the return format (e.g., JSON) or potential error conditions, but for a basic status query, it provides sufficient context for an AI agent to use it correctly. Annotations cover safety fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters (spec_dir and feature_number), each with clear, self-explanatory descriptions. The tool description does not add any further semantic information beyond what the schema already provides. Baseline score of 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns 'current pipeline status' and lists specific fields (current phase, completed phases, etc.). It clearly distinguishes this from siblings like sdd_advance_phase (which advances the pipeline) and sdd_context_status (which might return context rather than pipeline status), making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., sdd_checkpoint, sdd_context_status). It only states what it does, without mentioning preconditions, exclusion criteria, or when not to use it. This lack of usage context limits its utility for an AI agent choosing between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_get_templateGet Raw TemplateARead-onlyIdempotent
Returns the raw Markdown template for a given artifact type with {{placeholder}} variables intact. Does not write any files.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes | Name of the template to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint; the description adds that templates are returned with placeholders intact and that no files are written, reinforcing the safe, idempotent nature without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the core action, the second clarifies a key behavioral qualifier. It is front-loaded, efficient, and contains no superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description sufficiently conveys what is returned (raw Markdown with placeholders) and what is not done (file writes). It is complete enough for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter (template_name) with an enum and description. The tool description adds no additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a raw Markdown template with placeholders intact and explicitly notes it does not write files. It uses a specific verb (returns) and resource (template), distinguishing it from sibling tools that generate or write content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for previewing templates without side effects via 'Does not write any files,' but lacks explicit when-to-use or when-not-to-use guidance or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_implementGenerate Implementation PlanARead-onlyIdempotent
Reads TASKS.md and produces an ordered implementation roadmap with phases, parallel groups, dependency resolution, and checkpoints. Does NOT write code — it generates the plan the developer or AI agent follows.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| task_ids | No | Specific task IDs to implement. If omitted, generates plan for all tasks | |
| checkpoint | No | Insert checkpoints between user story phases for manual review | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description reinforces that it reads a file and generates a plan, which is consistent. No additional behavioral traits beyond what annotations indicate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action and outcome. Every phrase adds essential information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description effectively communicates what the tool produces (ordered implementation roadmap with details). The constraints (reads a specific file, does not write code) are clear, making the tool's function fully understandable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 4 parameters. The description adds context about the output (phases, parallel groups, dependency resolution, checkpoints), which relates to the 'checkpoint' parameter and overall purpose, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it reads TASKS.md and produces an ordered implementation roadmap, and clearly distinguishes itself from code generation. Among 50+ sibling tools, this purpose is unique and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states what the tool does and does not (does not write code), providing usage context. However, it does not explicitly mention when to use versus alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_import_documentImport DocumentARead-onlyIdempotent
Imports a document (PDF, DOCX, PPTX, TXT, MD, VTT, SRT) or raw text and converts it to Markdown for SDD processing. Returns the converted content, metadata, and word count. Native support: MD, TXT, VTT, SRT, and raw text are fully supported; PDF/DOCX/PPTX are natively readable only when UNCOMPRESSED — typical real-world (compressed) Office/PDF files fail with an actionable error. For those, install the MarkItDown MCP integration (uvx markitdown-mcp) or convert to md/txt first.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Document format. Use 'auto' for automatic detection from file extension. | auto |
| raw_text | No | Raw text content to process directly instead of reading from file. | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| file_path | No | Absolute or relative path to the document file (PDF, DOCX, PPTX, TXT, MD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnly and idempotent. Description adds key behavioral info: converts to Markdown, returns content/metadata/word count, and crucially notes that compressed Office/PDF files fail with an actionable error. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with front-loaded main action and subsequent details. Every sentence adds value. Slightly long due to full format list and error advice, but efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description covers all needed context: what it does, return values (content, metadata, word count), format support nuances, and failure handling. Complete for a read-only import tool with multiple file types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. Description adds significant meaning beyond schema: explains format support levels ('fully supported' vs. 'fail'), clarifies error behavior for compressed files, and connects raw_text and file_path usage. This justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (import document), resource (document formats and raw text), and outcome (converts to Markdown for SDD processing). Distinguishes from siblings like sdd_batch_import and sdd_import_transcript by focusing on single document import and conversion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context on when to use (for importing and converting documents) and notes limitations (compressed Office/PDF fail) with workarounds (install MarkItDown or convert). However, does not explicitly contrast with sibling import tools like sdd_batch_import.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_import_transcriptImport Meeting TranscriptARead-onlyIdempotent
Parses a meeting transcript (VTT, SRT, TXT, or MD) and extracts structured data: participants, topics, decisions, action items, raw requirements, constraints, and open questions. Supports Teams, Zoom, Google Meet, and Otter.ai transcripts.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Transcript format. Use 'auto' to detect from file extension or content. | auto |
| raw_text | No | Raw transcript text (alternative to file_path — paste directly) | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| file_path | Yes | Path to transcript file (.vtt, .srt, .txt, .md) relative to workspace root |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a read-only, idempotent operation. The description adds extraction details but does not disclose additional behavioral traits such as whether results are stored or returned. It aligns with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states core action and outputs, second adds supported tools. No unnecessary words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains purpose and input thoroughly. It lists extracted data fields, partially compensating for the lack of an output schema. However, it does not explicitly state the return format or structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description lists supported formats and tools but does not add significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool parses meeting transcripts and extracts structured data (participants, topics, decisions, etc.), specifying supported formats and tools. It distinguishes itself from siblings like sdd_import_document and sdd_batch_transcripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you have a meeting transcript) and lists supported tools, but does not explicitly state when not to use or provide alternatives. Given sibling tools, the purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_initInitialize SDD PipelineA
Creates .specs/ directory, writes CONSTITUTION.md skeleton, and initializes the state machine. Call this first before any other SDD tool.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| principles | No | Project guiding principles | |
| constraints | No | Project constraints | |
| project_name | Yes | Project name in kebab-case |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so description carries burden. It discloses creation/writes but does not specify if overwriting occurs, idempotency, or required permissions. This is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence for action plus a short usage note. No unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple init operation, the description covers core actions. Missing return value info, but not critical for comprehension. Adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with adequate descriptions for all 4 parameters. The tool description does not add additional parameter meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates .specs/ directory, writes CONSTITUTION.md skeleton, and initializes state machine. It distinguishes from 50+ sibling tools by being the only init tool, and explicitly says 'Call this first before any other SDD tool.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this first before any other SDD tool,' providing clear usage context. It does not mention when not to use or alternatives, but the instruction is sufficient for an init tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_list_checkpointsList CheckpointsARead-onlyIdempotent
Lists all available checkpoints for a feature with their labels, dates, and phases.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path | .specs |
| feature_number | No | Feature number (e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. Description adds value by specifying the returned information (labels, dates, phases), which helps set expectations beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste. Front-loaded verb 'Lists' and resource 'checkpoints'. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description hints at the return structure (labels, dates, phases). Parameter count is low, all documented. Adequate for a simple read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (feature_number, spec_dir) are fully described in the input schema with defaults and patterns. The description does not add further meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool 'lists all available checkpoints for a feature' with specific output fields (labels, dates, phases). Distinguishes from sibling tools like sdd_checkpoint (likely singular) and sdd_checklist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but the context is clear from the description that it's for listing all checkpoints for a feature. Lacks exclusions or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_metricsGenerate Metrics DashboardAIdempotent
Generate a self-contained HTML metrics dashboard for a feature. Reads SPECIFICATION.md, ANALYSIS.md, VERIFICATION.md, CHECKLIST.md and .sdd-state.json. Produces metrics-dashboard.html with: requirement count, task coverage, compliance score, checklist pass rate, and a phase timeline with durations.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and not destructive. Description adds concrete details about reading specific files and producing a dashboard, which aligns with annotations. No contradictions. It goes beyond annotations by listing exact files read and metrics generated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single dense paragraph that conveys all necessary information without fluff. Every sentence adds value, and the key points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema and presence of annotations, the description adequately covers the tool's function. It could mention that the required files must exist, but overall it is complete enough for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters. The tool description does not add significant semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it generates a self-contained HTML metrics dashboard for a feature, specifying the exact files read and the metrics computed. This is highly specific and distinguishes it from sibling tools, none of which produce dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description clearly explains the inputs and output, making it easy to understand when to invoke. However, it does not provide explicit when-not-to-use or alternative tool recommendations, though siblings are quite distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_model_routingModel Routing Decision TableARead-onlyIdempotent
Return the full model routing decision table for all 10 SDD pipeline phases. Includes the optimal model, chat mode, extended thinking setting, rationale, evidence arXiv ID, and cost savings vs Opus-for-everything for your team size.
| Name | Required | Description | Default |
|---|---|---|---|
| team_size | No | Number of developers on the team (used for cost savings calculation) | |
| requests_per_day | No | Estimated tool calls per developer per day |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that the tool returns specific content (model, mode, cost savings) but does not disclose additional behavioral traits like rate limits or side effects, which are unnecessary given the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main action and lists what is included. It is concise with no wasted words, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description sufficiently explains the return value, including the 10 phases and specific details (optimal model, rationale, cost savings). This is complete for a read-only informational tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a baseline of 3. The description adds meaning by linking team_size to cost savings calculation and implying requests_per_day is used, enhancing understanding beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns the full model routing decision table for all 10 SDD pipeline phases, listing the specific details included. This distinguishes it from sibling tools that are action-oriented (e.g., sdd_advance_phase, sdd_implement).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is so clearly defined that usage is obvious, but explicit guidance on when to use versus alternatives or when not to use is missing. The tool's read-only nature is implied but not contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_researchResearch QuestionsA
Takes an array of research questions, generates RESEARCH.md with structured entries (question, findings placeholder, sources, recommendation, status), and writes it to the feature directory.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| questions | Yes | Array of research questions to investigate and resolve | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only and non-destructive behavior, and the description adds that the tool writes a file. However, it does not specify whether it overwrites existing RESEARCH.md or appends, nor does it disclose any side effects. This is adequate but leaves ambiguity about file creation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the input, output, and action without redundancy. Every word is functional, and the most critical information is front-loaded. No wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the output structure (question, findings placeholder, etc.) but does not map 'feature directory' to the spec_dir parameter or mention prerequisites like existing directory. Given the tool's simplicity and no output schema, the description is minimally complete but lacks contextual details for error handling or path resolution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all three parameters (feature_number, spec_dir, questions) with descriptions, achieving 100% coverage. The description adds no new meaning beyond stating that questions are an array, which is already in the schema. While consistent, it does not enhance the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool takes an array of research questions, generates a RESEARCH.md file with structured entries, and writes it to the feature directory. It specifies the verb ('takes', 'generates', 'writes'), the resource (RESEARCH.md with specific fields), and the action, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention when not to use it. Without any usage context or exclusions, agents may misuse the tool for tasks better suited to siblings like sdd_write_spec or sdd_generate_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_restoreRestore from CheckpointADestructive
Restores all spec artifacts to a previous checkpoint snapshot. Overwrites current files with the checkpoint versions. Creates an automatic backup checkpoint of current state before restoring.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path | .specs |
| checkpoint_id | Yes | Checkpoint ID to restore (e.g. 'CP-001' or the label) | |
| feature_number | No | Feature number (e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds valuable behavior: it overwrites current files and creates an automatic backup checkpoint before restoring. This goes beyond annotations by disclosing the safety net, though it doesn't detail permissions or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no filler. The first sentence states the core action, the second explains the risk (overwrite), and the third mentions the safety feature. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and moderate complexity (3 params, 1 required), the description covers the tool's effect (restore, overwrite, backup). It might lack detail on what 'spec artifacts' include, but sibling context and overall clarity make it sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add additional meaning beyond the schema's parameter descriptions. It mentions restoring from checkpoint which is the purpose, but no extra parameter-level detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'restores' with the resource 'spec artifacts to a previous checkpoint snapshot', clearly distinguishing it from sibling tools like sdd_checkpoint (create) and sdd_list_checkpoints (list). It also explains overwriting and automatic backup, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly states when to use (restore from checkpoint) by describing the action, but it does not explicitly name alternatives or when not to use. The automatic backup mention provides a safety guideline, but explicit exclusion of other scenarios is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_run_analysisRun Specification AnalysisA
Reads all spec files, generates ANALYSIS.md with traceability matrix and coverage report, and returns a gate decision (APPROVE, CHANGES_NEEDED, or BLOCK).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are mostly false, so the description must add behavioral context. It discloses that the tool reads files, generates a file (ANALYSIS.md), and returns a gate decision, which is clear. It does not contradict annotations (e.g., destructiveHint false is consistent with generating a non-destructive file). The description adds value beyond annotations by explaining the output and side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the tool's purpose, actions, and output. No redundant words or fluff; every clause contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 optional parameters, no output schema, and no nested objects. The description explains the return value (gate decision) and the file generated (ANALYSIS.md), though it does not detail the traceability matrix or coverage report content. Still, it is fairly complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters, so baseline is 3. The description does not add significant parameter-specific meaning beyond what the schema already provides (e.g., spec_dir path, feature_number pattern, force overwrite).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it reads spec files, generates ANALYSIS.md with traceability matrix and coverage report, and returns a gate decision. The verb 'reads', 'generates', and 'returns' are specific to the resource (spec files, ANALYSIS.md, gate decision), and the tool is distinguishable from siblings like sdd_check_sync or sdd_validate_ears.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used for analysis and gate decision, but it does not explicitly state when to use this tool versus alternatives. No guidance on prerequisites or when not to use is provided, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_scan_codebaseScan CodebaseARead-onlyIdempotent
Scans the workspace project structure and returns auto-steering context: detected language, framework, package manager, folder structure, and key files.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Scan depth (1-5, default 3) | |
| exclude | No | Glob patterns to exclude (defaults to node_modules, .git, dist) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, already indicating safe read behavior. The description adds value by specifying the output content (language, framework, etc.), which is transparent about what the tool returns. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and output. Every word is necessary, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two well-described parameters, no output schema, and annotations present, the description is fairly complete. It explains what the tool scans and returns. A minor gap is not mentioning that it operates on the current workspace or that it is fast, but overall it's sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (depth and exclude) have descriptions in the input schema, covering 100%. The description does not add additional meaning beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans workspace project structure and returns auto-steering context including language, framework, package manager, folder structure, and key files. This verb and resource are specific and distinguish it from siblings like sdd_discover or sdd_check_ecosystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for obtaining project structure context but provides no explicit guidance on when to use this tool versus alternatives such as sdd_discover, sdd_check_ecosystem, or sdd_cross_analyze. Given many sibling tools, lacking differentiation is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_setup_codespacesSetup GitHub CodespacesAIdempotent
Detects the project tech stack (codebase manifests, falling back to DESIGN.md) and generates a devcontainer configuration suitable for GitHub Codespaces. Returns the devcontainer.json payload with routing_instructions to commit it via GitHub MCP, plus the GitHub UI/CLI/API steps to create the Codespace (the official GitHub MCP does not expose Codespace creation).
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| extensions | No | VS Code extensions to install. Auto-detected from tech stack if omitted. | |
| machine_type | No | GitHub Codespaces machine type. | standardLinux32gb |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it explains tech stack detection with fallback to DESIGN.md, and that it returns instructions rather than directly creating the Codespace. Annotations already indicate idempotent and non-destructive behavior, so the description's additional details are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the key action, and every sentence adds essential information without redundancy. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains the return payload (devcontainer.json, routing instructions, setup steps) and covers input parameters implicitly. It provides sufficient context for an AI agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining that extensions are auto-detected if omitted, which clarifies parameter behavior beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: detecting the project tech stack and generating a devcontainer configuration for GitHub Codespaces. It specifies the output (devcontainer.json, routing instructions, and setup steps), which distinguishes it from sibling tools like sdd_generate_devcontainer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that the official GitHub MCP does not expose Codespace creation, implying this tool fills a gap. However, it does not explicitly provide guidance on when to use this tool versus alternatives, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_setup_local_envSetup Local Dev EnvironmentBIdempotent
Detects the project tech stack (codebase manifests, falling back to DESIGN.md) and generates a Docker-based local development environment (Dockerfile + docker-compose.yml with auto-detected sidecar services). Returns a payload with routing_instructions for Docker MCP to create and manage containers.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Primary application port to expose. | |
| services | No | Additional services to include (e.g., 'postgres', 'redis', 'rabbitmq'). Auto-detected from DESIGN.md if omitted. | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and idempotency; description adds context on auto-detection and output routing but does not specify if files are created or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, but the first sentence is somewhat dense; still efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks details about output payload structure and idempotency behavior; without an output schema, the description should more thoroughly explain return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions; description adds value by explaining auto-detection of services from DESIGN.md and format of feature_number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool detects tech stack and generates Docker-based environment, but does not differentiate from siblings like sdd_generate_devcontainer or sdd_generate_dockerfile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives; the description only implies usage for setting up a local dev environment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_turnkey_specTurnkey Specification from DescriptionA
Generates a complete EARS specification from a natural language feature description. Automatically extracts requirements, classifies into EARS patterns (ubiquitous, event-driven, state-driven, optional, unwanted), generates acceptance criteria, and identifies areas needing clarification. This is the fastest way to go from idea to spec.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path | .specs |
| description | Yes | Natural language description of the feature. Can be a paragraph, bullet points, or a meeting summary. The tool will extract EARS requirements automatically. | |
| feature_name | Yes | Human-readable feature name (e.g. 'user-authentication') | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| clarification_responses | No | Answers to clarification questions from a previous turnkey run. Keys are question IDs (CQ-001), values are answers. When provided, the tool refines the existing specification instead of generating from scratch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral info (no readOnly, destructive, idempotent hints). The description adds context: it generates files (spec_dir), can overwrite (force), supports iterative refinement via clarification_responses, and automatically extracts requirements. However, it does not detail behavior when force=false or output specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states core action, second lists key features, third sells value. No filler, front-loaded with the most important information. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal annotations, the description covers the main workflow (generation, refinement) and side effects (file overwrite). It lacks exact output format or file naming, but is sufficient for understanding tool behavior. Slight gap in output details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter, giving baseline 3. The description adds process context: how description is processed (extracts, classifies, generates criteria) and how clarification_responses enables refinement. This extra meaning justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a complete EARS specification from natural language, enumerates specific outputs (requirements, patterns, criteria, clarifications), and distinguishes from siblings by emphasizing speed ('fastest way'). The verb 'Generates' and resource 'EARS specification' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for rapid spec creation ('fastest way to go from idea to spec') but does not explicitly state when to avoid or compare to siblings like sdd_write_spec. Usage guidance is implied but limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_validate_earsValidate EARS RequirementsARead-onlyIdempotent
Validates requirement statements against EARS notation patterns (ubiquitous, event-driven, state-driven, optional, unwanted, complex). Accepts a direct list of requirements OR reads from SPECIFICATION.md. Returns per-requirement compliance results with actionable suggestions.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| requirements | No | Array of requirement statements to validate directly. If omitted, reads requirements from SPECIFICATION.md | |
| feature_number | No | Feature number whose SPECIFICATION.md will be scanned for requirements (e.g. '001'). Required when requirements is not provided |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds that the tool returns per-requirement compliance with actionable suggestions, but does not disclose any behavioral traits beyond what annotations provide. It is consistent and adds marginal context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the purpose with specific patterns, and efficiently explains input modes and output. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a validation tool with 3 parameters and no output schema, the description covers purpose, input modes, and output summary (per-requirement compliance with suggestions). It is sufficiently complete for an agent to use correctly, though the return format could be more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The tool description summarizes the input modes but adds no new semantic information beyond what the schema provides. Baseline 3 is appropriate as the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates requirement statements against EARS notation patterns and lists the patterns. It distinguishes itself from sibling tools like sdd_validate_iac by focusing specifically on EARS requirements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two input modes (direct list vs. SPECIFICATION.md) but does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. While the context signals show siblings for different validations, the description itself lacks this differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_validate_iacValidate Infrastructure as CodeARead-onlyIdempotent
Generates a validation payload for Terraform MCP (plan/validate) or Azure MCP (template validation). The AI client routes this payload to the appropriate MCP server for execution.
| Name | Required | Description | Default |
|---|---|---|---|
| cloud | No | Target cloud provider | azure |
| iac_dir | No | Directory containing IaC files to validate. Defaults to feature directory | |
| provider | No | IaC provider to use | terraform |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, indicating a safe, non-destructive operation. The description adds that the tool generates a payload and does not execute validation, which is consistent but only marginally extends transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the core purpose, and contains no redundant information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool generates a payload for external execution, the description covers the essential purpose and routing. However, it lacks hints about the output format (e.g., JSON structure) since no output schema is provided, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 5 parameters with descriptions and defaults, achieving 100% coverage. The description does not add any additional meaning beyond what the schema provides, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generates a validation payload') and clearly identifies the resource and purpose, distinguishing it from sibling tools like sdd_generate_iac (which creates IaC) and sdd_validate_ears.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that the payload is routed to a specific MCP server but does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. It implies usage context but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_verify_auditVerify Audit TrailARead-onlyIdempotent
Verifies the hash-chain integrity of the Specky audit log for a spec directory. When an HMAC key is configured (SDD_AUDIT_HMAC_KEY / SDD_AUDIT_HMAC_KEY_FILE), also verifies each entry's HMAC-SHA256 signature (tamper evidence). Returns whether the chain is valid, entry count, current hash, hmac_checked/signed_entries, and any mismatch errors.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds valuable behavioral context: it verifies hash-chain integrity, checks HMAC signatures if configured, and lists return values (chain validity, entry count, current hash, hmac info, errors). This goes beyond annotations and fully informs the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused sentences: core action, conditional behavior, and return values. It is front-loaded and every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter with full schema, rich annotations, and no output schema, the description covers the tool's action, conditions, and return details comprehensively. The agent has all needed context to call and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single well-described parameter ('spec_dir'). The description adds no additional meaning beyond the schema's description, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool verifies hash-chain integrity of the Specky audit log, with additional HMAC verification when configured. This uniquely identifies its purpose among siblings, as no other sibling tool performs audit verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use: to verify audit trail integrity. It explains conditional behavior (HMAC key). However, it does not explicitly exclude alternative tools or state prerequisites, leaving some implicit understanding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_verify_tasksVerify Task CompletionsBRead-onlyIdempotent
Reads TASKS.md and checks code_paths for implementation evidence. Detects phantom completions — tasks marked [x] but with no corresponding code. Writes VERIFICATION.md.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| code_paths | Yes | Array of code file/directory paths to check for task implementation evidence | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool writes VERIFICATION.md, which is a write operation, contradicting the annotation readOnlyHint=true. This is a clear annotation contradiction. The description does not disclose the side effect of file writing beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff. Each sentence adds distinct information: reading TASKS.md, checking code paths, detecting phantom completions, and writing output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided. The description mentions writing VERIFICATION.md but does not explain its content or format. Given the tool's verification purpose, more detail on the output would be beneficial. Annotations partially fill gaps but not completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds context about TASKS.md but does not significantly enhance parameter understanding beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads TASKS.md, checks code paths for implementation evidence, detects phantom completions, and writes VERIFICATION.md. The verb-resource combination is specific and distinguishes it from siblings like sdd_verify_tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when tasks need verification after implementation, but does not explicitly state when to use or not use it compared to alternatives. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_verify_testsVerify Test Coverage Against RequirementsARead-onlyIdempotent
Reads test results JSON and cross-references with requirement IDs from SPECIFICATION.md. Reports requirement coverage percentage, uncovered requirements, and a traceability matrix.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| test_results_json | Yes | JSON string containing test results. Supports formats: [{name, status}], {testResults: [{name, status}]}, or {tests: [{name, status}]}. Status values: 'passed'/'pass' or 'failed'/'fail'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true, and the description adds that the tool reads files and reports outputs, confirming no destructive actions. It specifies the output structure (coverage percentage, uncovered requirements, traceability matrix), which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each earning its place: the first states the input and operation, the second states the output. No fluff or repetition. It is front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully covers return values (coverage percentage, uncovered requirements, traceability matrix). Input parameters are well-documented in schema. The tool's moderate complexity is adequately addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema thoroughly documents all three parameters. The tool description does not add further parameter-level semantics but competently wraps the schema's information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads test results JSON and cross-references with requirement IDs, reporting coverage and traceability. It uses a specific verb ('reads' plus 'cross-references') and resource ('test results', 'SPECIFICATION.md'), which distinguishes it from sibling tools like sdd_verify_tasks or sdd_compliance_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when test results are available and requirement coverage needs checking. It does not explicitly state when not to use or mention alternatives, but the context of requiring test results JSON makes it clear. However, some guidance on prerequisites or assumptions would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_write_bugfixWrite Bugfix SpecificationB
Generates and writes BUGFIX_SPEC.md with current behavior, expected behavior, unchanged behavior, root cause analysis, and test plan. Not gated by the state machine.
| Name | Required | Description | Default |
|---|---|---|---|
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| bug_title | Yes | Short title describing the bug | |
| test_plan | No | How to verify the fix | |
| root_cause | No | Root cause analysis (if known) | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| current_behavior | Yes | What currently happens (the bug) | |
| expected_behavior | Yes | What should happen instead | |
| unchanged_behavior | No | Behaviors that must remain unchanged after the fix |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (no readOnly, destructive, idempotent hints). Description adds that the tool produces a file and is not gated by state machine. However, it does not disclose whether it overwrites existing files or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the main action and output file name. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and only 3 required, the description could explain the return format or file path behavior more explicitly. It covers the 'what' but not the 'how' of output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description summarizes the output sections, but does not add meaning beyond the parameter names and schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates and writes a BUGFIX_SPEC.md file with specific sections. It is distinct from sibling write tools (e.g., sdd_write_design) through the bugfix context, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like sdd_write_spec or sdd_write_design. The only added info is 'Not gated by the state machine,' which is a constraint but not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_write_designWrite Design DocumentB
Generates and writes DESIGN.md with architecture overview, Mermaid diagrams, ADRs, and API contracts.
| Name | Required | Description | Default |
|---|---|---|---|
| adrs | No | Architecture Decision Records | |
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| data_models | No | Data model: entities, relationships, and storage strategy | |
| api_contracts | No | API contracts | |
| cross_cutting | No | Cross-cutting concerns: logging, monitoring, caching, configuration | |
| error_handling | No | Error handling: detection, logging, propagation, and recovery | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| infrastructure | No | Infrastructure: deployment, scaling, monitoring, and operations | |
| system_context | No | System context: who uses the system and what external systems it integrates with (C4 Level 1) | |
| component_design | No | Component design: internal modules/services and responsibilities (C4 Level 3) | |
| mermaid_diagrams | Yes | Mermaid diagrams | |
| code_level_design | No | Code-level design: key classes, interfaces, and patterns (C4 Level 4) | |
| architecture_overview | Yes | High-level architecture description | |
| security_architecture | No | Security: authentication, authorization, encryption, and threat model | |
| container_architecture | No | Container architecture: deployable units and communication patterns (C4 Level 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety info (readOnlyHint false, no destructiveHint). Description mentions writing a file, but does not disclose overwrite behavior (though force param exists), naming conventions, or side effects (e.g., file creation in .specs dir). For a write operation, more behavioral context is needed beyond 'generates and writes.' No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Lists key output contents. Appropriate length given complexity. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 parameters (2 required), no output schema, and no additional context, the description is too brief. It lacks explanation of default directory (.specs), feature_number naming, and how optional parameters combine. Agents need more context to invoke correctly, especially for a design document generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, with each parameter described. Description adds no extra meaning beyond that. Baseline 3 is appropriate as schema does the work, and description does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool generates and writes DESIGN.md with specific content (architecture overview, Mermaid diagrams, ADRs, API contracts). Verb 'writes' is specific, and resource 'DESIGN.md' is explicit. This distinguishes it from siblings like sdd_write_spec (which likely writes spec docs) and sdd_generate_docs (which may generate multiple docs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., sdd_write_spec, sdd_implement). No prerequisites mentioned, no conditions for use. Agents must infer usage from context. Lack of when-not-to-use or alternative references limits effective selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_write_specWrite SpecificationB
Generates and writes SPECIFICATION.md with all requirements in EARS notation. Validates each requirement against EARS patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_name | Yes | Human-readable feature name | |
| requirements | Yes | Requirements in EARS notation | |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| discovery_answers | Yes | Answers to discovery questions (question_id → answer) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are not contradictory, but lack detail. Description mentions file generation and validation, but does not disclose side effects (e.g., overwriting via force parameter) or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 15 words, no fluff. Front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a tool with 6 parameters and no output schema. Covers main function but does not explain return values, validation details, or file behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds value by specifying that requirements must be in EARS notation and that validation occurs, which is not fully captured in schema descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool generates and writes SPECIFICATION.md with EARS notation requirements and validates them. Distinguishes from siblings like sdd_validate_ears, but does not explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like sdd_turnkey_spec or sdd_write_design. No context on prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdd_write_tasksWrite Task BreakdownB
Generates and writes TASKS.md with pre-implementation gates, sequenced tasks with [P] parallel markers, effort estimates, and requirement traceability.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite existing files if true | |
| tasks | Yes | Implementation tasks | |
| spec_dir | No | Spec directory path (relative to workspace root) | .specs |
| feature_number | No | Feature number (zero-padded, e.g. '001') | 001 |
| pre_impl_gates | No | Pre-implementation gates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral detail beyond what annotations (all false) imply. It says 'writes' but does not clarify side effects (e.g., file creation, overwriting behavior, error handling). With destructiveHint false, the absence of explanation about controlled overwriting (via force parameter) is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 20 words that covers the main purpose. It is concise but could be more structured (no bullet points or sections). However, the brevity does not sacrifice clarity significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no explicit success/error descriptions, the description leaves gaps. It does not explain what the tool returns (e.g., path of written file) or behavior when file exists. The description is incomplete for an agent to fully understand the tool's effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions 'pre-implementation gates' and 'parallel markers' which map to schema parameters, but it does not add extra meaning beyond the schema definitions. The parameter semantics are adequately explained in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool generates and writes TASKS.md with specific content (gates, parallel markers, effort estimates, traceability). It uses a specific verb+resource combination and distinguishes from sibling tools like sdd_verify_tasks or sdd_write_spec by focusing on writing the task breakdown file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., sdd_verify_tasks, sdd_write_spec). It does not mention prerequisites or scenarios where this tool is appropriate. An AI agent would need to infer context from the tool name and siblings alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v3.7.0- Changed
sdd_advance_phase1 field changed- added
Input schema / properties / lgtmAdded value: +{ + "description": "Explicit human approval (LGTM) for the phase being completed. Required at the specify/design/tasks gates when pipeline.require_lgtm is enabled in .specky/config.yml.", + "type": "boolean" +}
- Changed
sdd_check_access1 field changed- changed
Input schema / properties / role_override / descriptionPrevious value: -"Override the active role for this check (for testing access). Defaults to SDD_ROLE env var or the configured default_role."New value: +"Override the active role for this check (for testing access). Defaults to the authenticated token role, then SDD_ROLE env var, then the configured default_role."
- Changed
sdd_get_template1 field changed- changed
Input schema / properties / template_name / enumPrevious value: -[ - "constitution", - "specification", - "design", - "tasks", - "analysis", - "bugfix", - "sync_report", - "research", - "data_model", - "checklist", - "cross_analysis", - "work_items", - "verification", - "compliance", - "user_stories", - "api_docs", - "runbook", - "onboarding", - "terraform", - "dockerfile", - "devcontainer", - "journey" -]New value: +[ + "constitution", + "specification", + "design", + "tasks", + "analysis", + "bugfix", + "sync_report", + "research", + "data_model", + "checklist", + "cross_analysis", + "work_items", + "verification", + "compliance", + "user_stories", + "api_docs", + "runbook", + "test_stub", + "terraform", + "dockerfile", + "devcontainer", + "journey" +]
- Added
sdd_verify_audit
57 tool updates
v3.4.0-rc.14- First observed
sdd_advance_phase - First observed
sdd_amend - First observed
sdd_auto_pipeline - First observed
sdd_batch_import - First observed
sdd_batch_transcripts - First observed
sdd_check_access - First observed
sdd_check_ecosystem - First observed
sdd_check_sync - First observed
sdd_checklist - First observed
sdd_checkpoint - First observed
sdd_clarify - First observed
sdd_compliance_check - First observed
sdd_context_status - First observed
sdd_create_branch - First observed
sdd_create_pr - First observed
sdd_cross_analyze - First observed
sdd_discover - First observed
sdd_export_work_items - First observed
sdd_figma_diagram - First observed
sdd_figma_to_spec - First observed
sdd_generate_all_diagrams - First observed
sdd_generate_all_docs - First observed
sdd_generate_api_docs - First observed
sdd_generate_devcontainer - First observed
sdd_generate_diagram - First observed
sdd_generate_dockerfile - First observed
sdd_generate_docs - First observed
sdd_generate_iac - First observed
sdd_generate_onboarding - First observed
sdd_generate_pbt - First observed
sdd_generate_runbook - First observed
sdd_generate_tests - First observed
sdd_generate_user_stories - First observed
sdd_get_status - First observed
sdd_get_template - First observed
sdd_implement - First observed
sdd_import_document - First observed
sdd_import_transcript - First observed
sdd_init - First observed
sdd_list_checkpoints - First observed
sdd_metrics - First observed
sdd_model_routing - First observed
sdd_research - First observed
sdd_restore - First observed
sdd_run_analysis - First observed
sdd_scan_codebase - First observed
sdd_setup_codespaces - First observed
sdd_setup_local_env - First observed
sdd_turnkey_spec - First observed
sdd_validate_ears - First observed
sdd_validate_iac - First observed
sdd_verify_tasks - First observed
sdd_verify_tests - First observed
sdd_write_bugfix - First observed
sdd_write_design - First observed
sdd_write_spec - First observed
sdd_write_tasks
TDQS
Most tools have distinct purposes, but there is some overlap among similar actions like generate_diagram vs generate_all_diagrams, and multiple 'check' tools. Detailed descriptions help resolve ambiguity.
All tools follow a consistent 'sdd_<verb>_<noun>' pattern using snake_case. Verbs are uniform and predictable across the entire set.
With 58 tools, the count is high for a typical MCP server but may be justified by the comprehensive SDD pipeline it supports. Still borders on being overwhelming.
The tool surface covers the full SDD lifecycle from initialization to testing and documentation generation. Only minor gaps exist (e.g., direct artifact deletion), but the core workflow is well-covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Official DevSpeak MCP server — translate technical text into formal specs from any AI IDE or agent
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseBqualityFmaintenanceAn intelligent MCP server that helps development teams maintain high-quality project documentation by providing an AI-powered workflow for creating comprehensive specifications through requirements, design, and implementation documents.150127MIT
- AlicenseNot gradedqualityDmaintenanceAn AI-native specification framework that enables deep requirements analysis and structured project planning through intelligent Q\&A workflows. The MCP server provides tools for project initialization, requirement analysis, and the generation of living documentation like development plans and architecture specs.16Apache 2.0
- FlicenseAqualityDmaintenanceAn MCP server that automates the full software development lifecycle through an AI-driven TDD state machine. It handles everything from task decomposition and test-driven development to integration testing and automated pull request creation.4-
- AlicenseCqualityAmaintenanceAn MCP server implementing Spec-Driven Development workflows for AI-agent CLIs and IDEs like Claude Code and Cursor, enabling spec-first development with automated workflow guidance and quality checks.167851MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulasilvatech/specky'
If you have feedback or need assistance with the MCP directory API, please join our Discord server