specky-sdd 3.2.2 → 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -2
- package/README.md +133 -188
- package/SECURITY.md +7 -7
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/schemas/utility.js.map +1 -1
- package/dist/services/cognitive-debt-engine.js.map +1 -1
- package/dist/services/dependency-graph.d.ts.map +1 -1
- package/dist/services/dependency-graph.js.map +1 -1
- package/dist/services/diagram-generator.js +4 -4
- package/dist/services/diagram-generator.js.map +1 -1
- package/dist/services/doc-generator.js +1 -1
- package/dist/services/doc-generator.js.map +1 -1
- package/dist/services/document-converter.d.ts +1 -2
- package/dist/services/document-converter.d.ts.map +1 -1
- package/dist/services/document-converter.js +15 -8
- package/dist/services/document-converter.js.map +1 -1
- package/dist/services/git-manager.d.ts.map +1 -1
- package/dist/services/iac-generator.js +1 -1
- package/dist/services/iac-generator.js.map +1 -1
- package/dist/services/methodology.d.ts.map +1 -1
- package/dist/services/methodology.js.map +1 -1
- package/dist/services/pbt-generator.js +3 -3
- package/dist/services/pbt-generator.js.map +1 -1
- package/dist/services/rate-limiter.d.ts +1 -2
- package/dist/services/rate-limiter.d.ts.map +1 -1
- package/dist/services/rate-limiter.js +2 -4
- package/dist/services/rate-limiter.js.map +1 -1
- package/dist/services/state-machine.d.ts +1 -1
- package/dist/services/state-machine.d.ts.map +1 -1
- package/dist/services/state-machine.js +1 -1
- package/dist/services/state-machine.js.map +1 -1
- package/dist/services/template-engine.d.ts +1 -2
- package/dist/services/template-engine.d.ts.map +1 -1
- package/dist/services/template-engine.js +2 -4
- package/dist/services/template-engine.js.map +1 -1
- package/dist/services/test-generator.js +1 -1
- package/dist/services/test-generator.js.map +1 -1
- package/dist/services/transcript-parser.d.ts +1 -1
- package/dist/services/transcript-parser.d.ts.map +1 -1
- package/dist/services/transcript-parser.js +15 -8
- package/dist/services/transcript-parser.js.map +1 -1
- package/dist/services/work-item-exporter.d.ts +1 -1
- package/dist/services/work-item-exporter.d.ts.map +1 -1
- package/dist/services/work-item-exporter.js +1 -1
- package/dist/services/work-item-exporter.js.map +1 -1
- package/dist/tools/analysis.d.ts +1 -1
- package/dist/tools/analysis.d.ts.map +1 -1
- package/dist/tools/analysis.js +1 -1
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/checkpoint.d.ts.map +1 -1
- package/dist/tools/checkpoint.js.map +1 -1
- package/dist/tools/environment.d.ts.map +1 -1
- package/dist/tools/environment.js.map +1 -1
- package/dist/tools/infrastructure.d.ts.map +1 -1
- package/dist/tools/infrastructure.js +2 -3
- package/dist/tools/infrastructure.js.map +1 -1
- package/dist/tools/input.js +2 -2
- package/dist/tools/input.js.map +1 -1
- package/dist/tools/integration.d.ts +1 -1
- package/dist/tools/integration.d.ts.map +1 -1
- package/dist/tools/integration.js +1 -1
- package/dist/tools/integration.js.map +1 -1
- package/dist/tools/pipeline.js +3 -3
- package/dist/tools/pipeline.js.map +1 -1
- package/dist/tools/response-builder.d.ts.map +1 -1
- package/dist/tools/transcript.js +1 -1
- package/dist/tools/transcript.js.map +1 -1
- package/dist/tools/turnkey.d.ts +1 -1
- package/dist/tools/turnkey.d.ts.map +1 -1
- package/dist/tools/turnkey.js +2 -2
- package/dist/tools/turnkey.js.map +1 -1
- package/dist/tools/visualization.d.ts.map +1 -1
- package/dist/tools/visualization.js.map +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -2,28 +2,37 @@
|
|
|
2
2
|
<br>
|
|
3
3
|
<img src="media/specky-brand-logo.svg" alt="Specky" height="80">
|
|
4
4
|
<br><br>
|
|
5
|
-
<p><strong>57 MCP tools. 10-phase pipeline.
|
|
5
|
+
<p><strong>13 agents. 57 MCP tools. 10-phase pipeline. One plugin.</strong></p>
|
|
6
6
|
<p>Agentic Spec-Driven Development</p>
|
|
7
7
|
|
|
8
8
|
<p>
|
|
9
|
-
<img src="https://img.shields.io/badge/
|
|
10
|
-
<img src="https://img.shields.io/badge/
|
|
11
|
-
<img src="https://img.shields.io/badge/
|
|
12
|
-
<img src="https://img.shields.io/badge/
|
|
9
|
+
<img src="https://img.shields.io/badge/agents-13-7c3aed?style=flat-square" alt="13 Agents"/>
|
|
10
|
+
<img src="https://img.shields.io/badge/tools-57_MCP-6d28d9?style=flat-square" alt="57 Tools"/>
|
|
11
|
+
<img src="https://img.shields.io/badge/phases-10_enforced-5b21b6?style=flat-square" alt="10 Phases"/>
|
|
12
|
+
<img src="https://img.shields.io/badge/hooks-14-4c1d95?style=flat-square" alt="14 Hooks"/>
|
|
13
13
|
<img src="https://img.shields.io/badge/license-MIT-a78bfa?style=flat-square" alt="MIT"/>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p>
|
|
17
17
|
<a href="https://www.npmjs.com/package/specky-sdd"><img src="https://img.shields.io/npm/v/specky-sdd?style=flat-square&color=7c3aed" alt="npm"/></a>
|
|
18
|
+
<a href="https://www.npmjs.com/package/specky-sdd"><img src="https://img.shields.io/npm/dm/specky-sdd?style=flat-square&color=6d28d9" alt="npm downloads"/></a>
|
|
18
19
|
<a href="https://github.com/paulasilvatech/specky/actions/workflows/ci.yml"><img src="https://github.com/paulasilvatech/specky/actions/workflows/ci.yml/badge.svg" alt="CI"/></a>
|
|
19
20
|
<a href="https://securityscorecards.dev/viewer/?uri=github.com/paulasilvatech/specky"><img src="https://api.securityscorecards.dev/projects/github.com/paulasilvatech/specky/badge" alt="OpenSSF Scorecard"/></a>
|
|
20
21
|
<a href="https://github.com/paulasilvatech/specky"><img src="https://img.shields.io/github/stars/paulasilvatech/specky?style=flat-square&color=6d28d9" alt="Stars"/></a>
|
|
21
22
|
</p>
|
|
22
23
|
|
|
23
24
|
<p>
|
|
24
|
-
<
|
|
25
|
+
<img src="https://img.shields.io/badge/TypeScript-strict-3178c6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript Strict"/>
|
|
26
|
+
<img src="https://img.shields.io/badge/dependencies-2-green?style=flat-square" alt="2 Dependencies"/>
|
|
27
|
+
<img src="https://img.shields.io/badge/APM-compatible-7c3aed?style=flat-square" alt="APM Compatible"/>
|
|
28
|
+
<img src="https://img.shields.io/badge/OWASP_MCP-Top_10-green?style=flat-square" alt="OWASP MCP Top 10"/>
|
|
29
|
+
<img src="https://img.shields.io/node/v/specky-sdd?style=flat-square&color=5b21b6" alt="Node.js"/>
|
|
30
|
+
<a href="https://github.com/paulasilvatech/specky/issues"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square" alt="PRs Welcome"/></a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
<p>
|
|
34
|
+
<a href="https://getspecky.ai">Website</a> ·
|
|
25
35
|
<a href="GETTING-STARTED.md">Getting Started</a> ·
|
|
26
|
-
<a href="plugins/specky-sdd/">Plugin</a> ·
|
|
27
36
|
<a href="https://www.npmjs.com/package/specky-sdd">npm</a> ·
|
|
28
37
|
<a href="SECURITY.md">Security</a>
|
|
29
38
|
</p>
|
|
@@ -35,12 +44,11 @@
|
|
|
35
44
|
| | Section | Description |
|
|
36
45
|
|---|---------|-------------|
|
|
37
46
|
| **Start** | [What is Specky?](#what-is-specky) | Overview and ecosystem |
|
|
47
|
+
| | [What is a Plugin?](#what-is-a-plugin) | Agents, prompts, skills, hooks, and APM |
|
|
38
48
|
| | [Why Specifications Matter](#why-specifications-matter-in-the-ai-era) | Vibe coding vs deterministic development |
|
|
39
49
|
| | [Getting Started](GETTING-STARTED.md) | Complete educational guide |
|
|
40
|
-
| **
|
|
41
|
-
| | [
|
|
42
|
-
| | [MCP Server Only](#install-mcp-server-only) | Lightweight: just the 57 MCP tools |
|
|
43
|
-
| **Use** | [Where Specifications Live](#where-specifications-live) | File structure and naming conventions |
|
|
50
|
+
| **Use** | [Quick Start](#quick-start) | Install the plugin via APM, curl, or npm |
|
|
51
|
+
| | [Where Specifications Live](#where-specifications-live) | File structure and naming conventions |
|
|
44
52
|
| | [Input Methods](#input-methods-6-ways-to-start) | 6 ways to feed Specky |
|
|
45
53
|
| | [Three Project Types](#three-project-types-one-pipeline) | Greenfield, Brownfield, Modernization |
|
|
46
54
|
| **Pipeline** | [Pipeline and LGTM Gates](#pipeline-and-lgtm-gates) | 10 phases with human review gates |
|
|
@@ -49,16 +57,52 @@
|
|
|
49
57
|
| **Enterprise** | [Compliance Frameworks](#compliance-frameworks) | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 |
|
|
50
58
|
| | [Enterprise Ready](#enterprise-ready) | Security, audit trail, quality gates |
|
|
51
59
|
| **Platform** | [The SDD Platform](#the-spec-driven-development-platform) | Built on Spec-Kit, everything included |
|
|
52
|
-
| | [Roadmap](#roadmap) | v3.
|
|
60
|
+
| | [Roadmap](#roadmap) | v3.0 current, v3.1+ planned |
|
|
53
61
|
|
|
54
62
|
|
|
55
63
|
## What is Specky?
|
|
56
64
|
|
|
57
|
-
Specky is
|
|
65
|
+
Specky is a **complete Spec-Driven Development plugin** — 13 specialized agents, 57 MCP tools, 22 prompts, 8 skills, and 14 automation hooks — that enforces a deterministic 10-phase pipeline from **any input** (meeting transcripts, documents, Figma designs, or natural language prompts) through specifications, architecture, infrastructure as code, implementation, and deployment.
|
|
66
|
+
|
|
67
|
+
The plugin is powered by the [specky-sdd](https://www.npmjs.com/package/specky-sdd) MCP engine and the [Spec-Kit](https://github.com/paulasilvatech/spec-kit) methodology. Install Specky and you get **everything**: the agents orchestrate the pipeline, the tools enforce validation, the hooks guard every phase transition, and the skills provide domain knowledge.
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## What is a Plugin?
|
|
71
|
+
|
|
72
|
+
A plugin is a **complete AI development package** — not just a tool server. It bundles everything your AI IDE needs into a single installable unit:
|
|
73
|
+
|
|
74
|
+
| Primitive | What it is | Specky includes |
|
|
75
|
+
|-----------|-----------|------------------|
|
|
76
|
+
| **Agents** | Specialized AI personas with defined roles, tools, and guardrails | 13 agents — @specky-orchestrator (full pipeline), @specky-onboarding (wizard), @spec-engineer, @design-architect, @task-planner, @quality-reviewer, and 7 more |
|
|
77
|
+
| **Prompts** | Slash commands that activate the right agent for a task | 22 prompts — `/specky-greenfield`, `/specky-specify`, `/specky-release`, `/specky-orchestrate`, etc. |
|
|
78
|
+
| **Skills** | Domain knowledge files loaded into agent context automatically | 8 skills — SDD pipeline rules, EARS patterns, implementation patterns, test criteria, release gate protocol |
|
|
79
|
+
| **Hooks** | Scripts that run before/after every tool call for validation | 14 hooks — artifact-validator, branch-validator, phase-gate, lgtm-gate, security-scan, etc. |
|
|
80
|
+
| **MCP Server** | The tool engine that validates, generates, and enforces | 57 tools via Model Context Protocol (the runtime underneath) |
|
|
81
|
+
|
|
82
|
+
### Why not just an MCP server?
|
|
83
|
+
|
|
84
|
+
An MCP server gives you **tools**. A plugin gives you the **experience**:
|
|
85
|
+
|
|
86
|
+
- **Tools alone**: You call `sdd_write_spec` and hope you're in the right phase, with the right prerequisites, on the right branch.
|
|
87
|
+
- **Plugin**: You type `@specky-orchestrator` and the agent validates your phase, checks your branch, loads the right skill, calls the right tool, runs pre/post hooks, and pauses for LGTM before advancing.
|
|
58
88
|
|
|
59
|
-
|
|
89
|
+
The MCP engine is the runtime. The plugin is the product.
|
|
60
90
|
|
|
61
|
-
|
|
91
|
+
### How to install
|
|
92
|
+
|
|
93
|
+
Specky is distributed via [APM](https://microsoft.github.io/apm/) (Agent Package Manager) — Microsoft's open-source dependency manager for AI agents:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Install APM (one-time) — pick one:
|
|
97
|
+
curl -sSL https://aka.ms/apm-unix | sh # macOS / Linux
|
|
98
|
+
brew install microsoft/apm/apm # Homebrew
|
|
99
|
+
irm https://aka.ms/apm-windows | iex # Windows PowerShell
|
|
100
|
+
|
|
101
|
+
# Then install Specky:
|
|
102
|
+
apm install paulasilvatech/specky
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
This installs all 13 agents, 22 prompts, 8 skills, 14 hooks, configures the MCP server, and generates a lock file (`apm.lock.yaml`) for version reproducibility. No configuration drift across your team. See [APM installation docs](https://microsoft.github.io/apm/getting-started/installation/) for more options.
|
|
62
106
|
|
|
63
107
|
|
|
64
108
|
## Why Specifications Matter in the AI Era
|
|
@@ -84,7 +128,8 @@ The result? Teams spend 40% of their time on rework because requirements were ne
|
|
|
84
128
|
| **Markdown** | The universal language that both humans and AI read fluently | All spec artifacts are `.md` files in your repo, versioned with Git |
|
|
85
129
|
| **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 |
|
|
86
130
|
| **EARS Notation** | A method for writing requirements that forces precision with 6 patterns | Eliminates vague statements like "the system should be fast" |
|
|
87
|
-
| **Agents and Skills** | Specialized AI roles that invoke Specky tools with domain expertise |
|
|
131
|
+
| **Agents and Skills** | Specialized AI roles that invoke Specky tools with domain expertise | 13 agents + 8 skills orchestrate the full pipeline |
|
|
132
|
+
| **Plugins** | A complete AI development package: agents + prompts + skills + hooks + MCP server | Installed via [APM](https://microsoft.github.io/apm/) — Microsoft's dependency manager for AI agents |
|
|
88
133
|
|
|
89
134
|
### How Specky Enforces Determinism
|
|
90
135
|
|
|
@@ -101,18 +146,20 @@ Specky adds a **deterministic engine** between your intent and your code:
|
|
|
101
146
|
|
|
102
147
|
| Capability | Specky |
|
|
103
148
|
|---|---|
|
|
149
|
+
| Complete plugin experience | 13 agents, 22 prompts, 8 skills, 14 hooks + 57 MCP tools |
|
|
150
|
+
| Pipeline orchestrator | @specky-orchestrator coordinates all 10 phases end-to-end |
|
|
151
|
+
| Onboarding wizard | @specky-onboarding detects context and guides setup |
|
|
104
152
|
| Any input (PDF, DOCX, PPTX, transcript, Figma) to spec | 57 MCP tools handle all input formats |
|
|
105
153
|
| EARS validation (programmatic, not AI guessing) | 6 patterns enforced at schema level |
|
|
106
154
|
| Enforced pipeline (not suggestions) | 10 phases with actual gates that block advancement |
|
|
155
|
+
| Pre/post hooks on every phase | artifact-validator, branch-validator, phase-gate, lgtm-gate |
|
|
107
156
|
| 17 diagram types generated automatically | C4 (4 levels), sequence, ER, activity, use case, DFD, deployment, network |
|
|
108
157
|
| Infrastructure as Code | Terraform, Bicep, Dockerfile from DESIGN.md |
|
|
109
158
|
| Work item export | GitHub Issues, Azure Boards, Jira via MCP-to-MCP routing |
|
|
110
159
|
| 6 compliance frameworks | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 built-in |
|
|
111
160
|
| Cross-artifact traceability | Requirement to design to task to test to code |
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
| Checkpoint/restore | Persistent snapshots of all spec artifacts |
|
|
115
|
-
| 10 automation hooks (2 blocking) | Security scan, release gate, spec sync, checkpoint, quality, EARS, task trace, drift, cognitive debt, metrics |
|
|
161
|
+
| Gitflow-SDD branching | spec/NNN → develop → stage → main |
|
|
162
|
+
| APM distribution | `apm install paulasilvatech/specky` — one command (requires [APM](https://microsoft.github.io/apm/getting-started/installation/)) |
|
|
116
163
|
| Works in any MCP host | VS Code + Copilot, Claude Code, Cursor, Windsurf, or any MCP client |
|
|
117
164
|
| Zero outbound network calls | Fully air-gapped, code never leaves your machine |
|
|
118
165
|
| MIT open source | Fork it, extend it, audit it. No vendor lock, no seat pricing |
|
|
@@ -123,150 +170,35 @@ Specky adds a **deterministic engine** between your intent and your code:
|
|
|
123
170
|
### Prerequisites
|
|
124
171
|
|
|
125
172
|
- **Node.js 18+**: [Download here](https://nodejs.org/)
|
|
126
|
-
- **An AI IDE**: VS Code with Copilot, Claude Code,
|
|
127
|
-
|
|
128
|
-
### Install as Plugin (recommended)
|
|
129
|
-
|
|
130
|
-
The **Specky plugin** is the enterprise-grade installation method. It bundles everything your team needs: 7 agents, 19 prompts, 6 skills, 10 automation hooks, and the MCP server — configured automatically and version-controlled with your repo.
|
|
131
|
-
|
|
132
|
-
| What you get | MCP Server Only | Plugin |
|
|
133
|
-
|-------------|:-:|:-:|
|
|
134
|
-
| 57 MCP tools | ✅ | ✅ |
|
|
135
|
-
| 7 specialized agents | — | ✅ |
|
|
136
|
-
| 19 reusable prompts | — | ✅ |
|
|
137
|
-
| 6 domain skills (SKILL.md) | — | ✅ |
|
|
138
|
-
| 10 automation hooks (2 blocking) | — | ✅ |
|
|
139
|
-
| EARS notation reference | — | ✅ |
|
|
140
|
-
| Model routing guidance | — | ✅ |
|
|
141
|
-
| Pipeline config (config.yml) | — | ✅ |
|
|
142
|
-
| `copilot plugin install` ready | — | ✅ |
|
|
143
|
-
|
|
144
|
-
#### Via Copilot CLI
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
copilot plugin marketplace add paulasilvatech/specky
|
|
148
|
-
copilot plugin install specky-sdd@specky
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
#### Manual Installation
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
cd your-project/
|
|
155
|
-
bash <(curl -sL https://raw.githubusercontent.com/paulasilvatech/specky/main/plugins/specky-sdd/install.sh)
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
The installer creates:
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
your-project/
|
|
162
|
-
├── .github/plugin/specky/ ← Full plugin (agents, skills, hooks, prompts)
|
|
163
|
-
│ ├── agents/ ← 7 specialized Copilot agents
|
|
164
|
-
│ ├── prompts/ ← 19 reusable prompts
|
|
165
|
-
│ ├── skills/ ← 6 domain skills
|
|
166
|
-
│ ├── hooks/scripts/ ← 10 automation hooks
|
|
167
|
-
│ ├── instructions/ ← Copilot instructions
|
|
168
|
-
│ └── config.yml ← Pipeline configuration
|
|
169
|
-
├── .vscode/
|
|
170
|
-
│ ├── mcp.json ← MCP server configuration
|
|
171
|
-
│ └── settings.json ← Hook integration
|
|
172
|
-
└── GETTING-STARTED.md
|
|
173
|
-
```
|
|
173
|
+
- **An AI IDE**: VS Code with Copilot, Claude Code, Cursor, or Windsurf
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
### Install the Plugin
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
#### Via APM
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
If you only need the 57 MCP tools without agents, skills, and hooks, install the MCP server directly.
|
|
182
|
-
|
|
183
|
-
<details>
|
|
184
|
-
<summary><strong>Global (npm)</strong></summary>
|
|
179
|
+
[Install APM](https://microsoft.github.io/apm/getting-started/installation/) first, then:
|
|
185
180
|
|
|
186
181
|
```bash
|
|
187
|
-
|
|
182
|
+
apm install paulasilvatech/specky
|
|
188
183
|
```
|
|
189
184
|
|
|
190
|
-
**VS Code** (`.vscode/mcp.json`):
|
|
191
|
-
```json
|
|
192
|
-
{
|
|
193
|
-
"mcpServers": {
|
|
194
|
-
"specky-sdd": {
|
|
195
|
-
"type": "stdio",
|
|
196
|
-
"command": "specky-sdd"
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Claude Code**:
|
|
203
|
-
```bash
|
|
204
|
-
claude mcp add specky-sdd -- specky-sdd
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
**Claude Desktop** (`claude_desktop_config.json`):
|
|
208
|
-
```json
|
|
209
|
-
{
|
|
210
|
-
"mcpServers": {
|
|
211
|
-
"specky-sdd": {
|
|
212
|
-
"command": "specky-sdd"
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
</details>
|
|
219
|
-
|
|
220
|
-
<details>
|
|
221
|
-
<summary><strong>Per Workspace (npx)</strong></summary>
|
|
222
|
-
|
|
223
|
-
**VS Code** (`.vscode/mcp.json`):
|
|
224
|
-
```json
|
|
225
|
-
{
|
|
226
|
-
"mcpServers": {
|
|
227
|
-
"specky-sdd": {
|
|
228
|
-
"type": "stdio",
|
|
229
|
-
"command": "npx",
|
|
230
|
-
"args": ["-y", "specky-sdd@latest"]
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
> Commit `.vscode/mcp.json` to Git so every team member gets Specky automatically.
|
|
237
|
-
|
|
238
|
-
</details>
|
|
239
|
-
|
|
240
|
-
<details>
|
|
241
|
-
<summary><strong>Docker (HTTP mode, no Node.js required)</strong></summary>
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
docker run -d --name specky -p 3200:3200 -v $(pwd):/workspace ghcr.io/paulasilvatech/specky:latest
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
Point any MCP client that supports HTTP to `http://localhost:3200/mcp`
|
|
248
|
-
|
|
249
|
-
</details>
|
|
250
|
-
|
|
251
185
|
### Verify
|
|
252
186
|
|
|
253
|
-
Open
|
|
187
|
+
Open Copilot Chat and type:
|
|
254
188
|
|
|
255
189
|
```
|
|
256
|
-
|
|
190
|
+
@specky-onboarding
|
|
257
191
|
```
|
|
258
192
|
|
|
259
|
-
The
|
|
193
|
+
The onboarding wizard detects your project context (greenfield/brownfield/modernization) and guides you through setup.
|
|
260
194
|
|
|
261
195
|
### Try It Now
|
|
262
196
|
|
|
263
|
-
Once connected, type this in your AI chat:
|
|
264
|
-
|
|
265
197
|
```
|
|
266
|
-
|
|
198
|
+
@specky-orchestrator run the pipeline for a todo API
|
|
267
199
|
```
|
|
268
200
|
|
|
269
|
-
|
|
201
|
+
The orchestrator coordinates all 10 phases: Init → Research → Specify → Design → Tasks → Implement → Verify → Review → Release, with LGTM gates at Specify, Design, and Tasks.
|
|
270
202
|
|
|
271
203
|
| Your situation | Guide |
|
|
272
204
|
|---------------|-------|
|
|
@@ -745,10 +677,10 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
745
677
|
| `sdd_import_transcript` | Parse meeting transcripts (Teams, Zoom, Google Meet) |
|
|
746
678
|
| `sdd_auto_pipeline` | Any input to complete spec pipeline (all documents) |
|
|
747
679
|
| `sdd_batch_import` | Process folder of mixed documents |
|
|
748
|
-
| `sdd_batch_transcripts` |
|
|
680
|
+
| `sdd_batch_transcripts` | Scan folder of transcripts and run full auto-pipeline for each |
|
|
749
681
|
| `sdd_figma_to_spec` | Figma design to requirements specification |
|
|
750
682
|
|
|
751
|
-
### Pipeline Core (
|
|
683
|
+
### Pipeline Core (8)
|
|
752
684
|
|
|
753
685
|
| Tool | Description |
|
|
754
686
|
|------|-------------|
|
|
@@ -758,11 +690,10 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
758
690
|
| `sdd_clarify` | Resolve ambiguities with decision tree |
|
|
759
691
|
| `sdd_write_design` | 12-section system design (C4 model) with sequence diagrams, ERD, API flow |
|
|
760
692
|
| `sdd_write_tasks` | Task breakdown with dependency graph |
|
|
761
|
-
| `sdd_write_bugfix` | Bugfix specification from issue description |
|
|
762
693
|
| `sdd_run_analysis` | Quality gate analysis with coverage heatmap |
|
|
763
694
|
| `sdd_advance_phase` | Move to next pipeline phase |
|
|
764
695
|
|
|
765
|
-
### Quality and Validation (
|
|
696
|
+
### Quality and Validation (6)
|
|
766
697
|
|
|
767
698
|
| Tool | Description |
|
|
768
699
|
|------|-------------|
|
|
@@ -771,6 +702,7 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
771
702
|
| `sdd_compliance_check` | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 validation |
|
|
772
703
|
| `sdd_cross_analyze` | Spec-design-tasks alignment with consistency score |
|
|
773
704
|
| `sdd_validate_ears` | Batch EARS requirement validation |
|
|
705
|
+
| `sdd_check_sync` | Spec-vs-implementation drift detection report |
|
|
774
706
|
|
|
775
707
|
### Diagrams and Visualization (4) -- 17 Diagram Types
|
|
776
708
|
|
|
@@ -797,7 +729,7 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
797
729
|
| `sdd_setup_codespaces` | GitHub Codespaces configuration |
|
|
798
730
|
| `sdd_generate_devcontainer` | .devcontainer/devcontainer.json generation |
|
|
799
731
|
|
|
800
|
-
### Integration and Export (
|
|
732
|
+
### Integration and Export (5)
|
|
801
733
|
|
|
802
734
|
| Tool | Description |
|
|
803
735
|
|------|-------------|
|
|
@@ -806,20 +738,18 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
806
738
|
| `sdd_create_pr` | PR payload with spec summary |
|
|
807
739
|
| `sdd_implement` | Ordered implementation plan with checkpoints |
|
|
808
740
|
| `sdd_research` | Resolve unknowns in RESEARCH.md |
|
|
809
|
-
| `sdd_check_sync` | Detect drift between specification and implementation |
|
|
810
|
-
| `sdd_detect_drift` | Intent drift detection with amendment suggestions |
|
|
811
741
|
|
|
812
742
|
### Documentation (5)
|
|
813
743
|
|
|
814
744
|
| Tool | Description |
|
|
815
745
|
|------|-------------|
|
|
816
746
|
| `sdd_generate_docs` | Complete auto-documentation |
|
|
817
|
-
| `sdd_generate_all_docs` | Generate all documentation types in parallel |
|
|
818
747
|
| `sdd_generate_api_docs` | API documentation from design |
|
|
819
748
|
| `sdd_generate_runbook` | Operational runbook |
|
|
820
749
|
| `sdd_generate_onboarding` | Developer onboarding guide |
|
|
750
|
+
| `sdd_generate_all_docs` | Generate all documentation types in parallel (docs, API, runbook, onboarding, journey) |
|
|
821
751
|
|
|
822
|
-
### Utility (
|
|
752
|
+
### Utility (6)
|
|
823
753
|
|
|
824
754
|
| Tool | Description |
|
|
825
755
|
|------|-------------|
|
|
@@ -828,9 +758,7 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
828
758
|
| `sdd_scan_codebase` | Detect tech stack and structure |
|
|
829
759
|
| `sdd_metrics` | Project metrics dashboard |
|
|
830
760
|
| `sdd_amend` | Amend project constitution |
|
|
831
|
-
| `
|
|
832
|
-
| `sdd_model_routing` | Model routing guidance for current task |
|
|
833
|
-
| `sdd_check_access` | RBAC access check for current role |
|
|
761
|
+
| `sdd_write_bugfix` | Generate bugfix spec with root cause analysis and test plan |
|
|
834
762
|
|
|
835
763
|
### Testing (3)
|
|
836
764
|
|
|
@@ -860,6 +788,14 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
860
788
|
|------|-------------|
|
|
861
789
|
| `sdd_check_ecosystem` | Report recommended MCP servers with install commands |
|
|
862
790
|
|
|
791
|
+
### Governance (3)
|
|
792
|
+
|
|
793
|
+
| Tool | Description |
|
|
794
|
+
|------|-------------|
|
|
795
|
+
| `sdd_model_routing` | Model routing decision table for all 10 phases with cost analysis |
|
|
796
|
+
| `sdd_context_status` | Context tier assignment (Hot/Domain/Cold) for spec artifacts with token savings |
|
|
797
|
+
| `sdd_check_access` | RBAC access check for current role with per-tool permissions summary |
|
|
798
|
+
|
|
863
799
|
|
|
864
800
|
## The Spec-Driven Development Platform
|
|
865
801
|
|
|
@@ -871,14 +807,14 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
|
|
|
871
807
|
|
|
872
808
|
**[Spec-Kit](https://github.com/paulasilvatech/spec-kit)** is the open-source SDD methodology: EARS notation, gated pipeline phases, constitution model, 25+ specialized agents, and Markdown prompt templates. It defines **what** to do.
|
|
873
809
|
|
|
874
|
-
**Specky** is the
|
|
810
|
+
**Specky** is the complete plugin that reimplements that methodology as 57 enforceable MCP tools with 13 agents, 22 prompts, 8 skills, and 14 hooks. It enforces **how** to do it.
|
|
875
811
|
|
|
876
|
-
| | Spec-Kit (Methodology) | Specky (
|
|
812
|
+
| | Spec-Kit (Methodology) | Specky (Plugin) |
|
|
877
813
|
|--|------------------------|-----------------|
|
|
878
|
-
| **What it is** | Prompt templates + agent definitions |
|
|
879
|
-
| **How it works** | AI reads `.md` templates and follows instructions | AI calls
|
|
880
|
-
| **Validation** | AI tries to follow the prompts | State machine, EARS regex, Zod schemas |
|
|
881
|
-
| **Install** | Copy `.github/agents/` and `.claude/commands/` | `
|
|
814
|
+
| **What it is** | Prompt templates + agent definitions | Complete plugin: 13 agents + 57 MCP tools + 22 prompts + 8 skills + 14 hooks |
|
|
815
|
+
| **How it works** | AI reads `.md` templates and follows instructions | AI calls agents that orchestrate tools with hook validation |
|
|
816
|
+
| **Validation** | AI tries to follow the prompts | State machine, EARS regex, Zod schemas, pre/post hooks |
|
|
817
|
+
| **Install** | Copy `.github/agents/` and `.claude/commands/` | `apm install paulasilvatech/specky` |
|
|
882
818
|
| **Works standalone** | Yes, in any AI IDE | Yes, includes all Spec-Kit patterns |
|
|
883
819
|
| **Best for** | Learning SDD, lightweight adoption | Production enforcement, enterprise, compliance |
|
|
884
820
|
|
|
@@ -888,27 +824,17 @@ When you install Specky, you get the full Spec-Kit methodology reimplemented as
|
|
|
888
824
|
|
|
889
825
|
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.
|
|
890
826
|
|
|
891
|
-
The recommended way to adopt this stack is via the [Specky plugin](plugins/specky-sdd/), which bundles the MCP server, agents, skills, and hooks into a single installable package:
|
|
892
|
-
|
|
893
|
-
```bash
|
|
894
|
-
copilot plugin marketplace add paulasilvatech/specky
|
|
895
|
-
copilot plugin install specky-sdd@specky
|
|
896
|
-
```
|
|
897
|
-
|
|
898
|
-
Or configure the MCP server directly:
|
|
899
|
-
|
|
900
827
|
```json
|
|
901
828
|
{
|
|
902
|
-
"
|
|
903
|
-
"specky
|
|
904
|
-
"type": "stdio",
|
|
829
|
+
"servers": {
|
|
830
|
+
"specky": {
|
|
905
831
|
"command": "specky-sdd"
|
|
906
832
|
}
|
|
907
833
|
}
|
|
908
834
|
}
|
|
909
835
|
```
|
|
910
836
|
|
|
911
|
-
> **Note:** This example assumes
|
|
837
|
+
> **Note:** This example assumes Specky is installed via `apm install paulasilvatech/specky`. See the [Installation](#installation) section for details.
|
|
912
838
|
|
|
913
839
|
## Project Configuration
|
|
914
840
|
|
|
@@ -1020,7 +946,7 @@ Specky is built with enterprise adoption in mind.
|
|
|
1020
946
|
- **Zod `.strict()` validation** — every tool input is schema-validated; unknown fields rejected
|
|
1021
947
|
- **security-scan hook** blocks commits containing hardcoded secrets (exit code 2)
|
|
1022
948
|
- See [SECURITY.md](SECURITY.md) for full OWASP Top 10 coverage
|
|
1023
|
-
- See [
|
|
949
|
+
- See [docs/SYSTEM-DESIGN.md](docs/SYSTEM-DESIGN.md) for complete security architecture
|
|
1024
950
|
|
|
1025
951
|
### Security Best Practices
|
|
1026
952
|
|
|
@@ -1076,25 +1002,42 @@ Every pipeline phase produces a traceable artifact in `.specs/NNN-feature/`. The
|
|
|
1076
1002
|
- **EARS Validator** — programmatic requirement quality enforcement
|
|
1077
1003
|
- **Cross-Artifact Analysis** — automatic alignment checking between spec, design, and tasks
|
|
1078
1004
|
- **Phase Enforcement** — state machine blocks phase-skipping; required files gate advancement
|
|
1079
|
-
- **
|
|
1005
|
+
- **507 unit tests** — CI enforces thresholds on every push
|
|
1080
1006
|
|
|
1081
1007
|
|
|
1082
1008
|
## Development
|
|
1083
1009
|
|
|
1084
1010
|
```bash
|
|
1085
|
-
#
|
|
1086
|
-
|
|
1011
|
+
# Clone and setup
|
|
1012
|
+
git clone https://github.com/paulasilvatech/specky.git
|
|
1013
|
+
cd specky
|
|
1014
|
+
npm install
|
|
1015
|
+
|
|
1016
|
+
# Build
|
|
1017
|
+
npm run build
|
|
1018
|
+
|
|
1019
|
+
# Run tests (507 tests)
|
|
1020
|
+
npm test
|
|
1021
|
+
|
|
1022
|
+
# Run tests with coverage report
|
|
1023
|
+
npm run test:coverage
|
|
1024
|
+
|
|
1025
|
+
# Development mode (auto-reload on file changes)
|
|
1026
|
+
npm run dev
|
|
1087
1027
|
|
|
1088
1028
|
# Verify MCP handshake (quick smoke test)
|
|
1089
|
-
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' |
|
|
1090
|
-
```
|
|
1029
|
+
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
|
|
1091
1030
|
|
|
1092
|
-
|
|
1031
|
+
# Build and run with Docker locally
|
|
1032
|
+
docker build -t specky-sdd:dev .
|
|
1033
|
+
docker run -p 3200:3200 -v $(pwd):/workspace specky-sdd:dev
|
|
1034
|
+
curl http://localhost:3200/health
|
|
1035
|
+
```
|
|
1093
1036
|
|
|
1094
1037
|
|
|
1095
1038
|
## Roadmap
|
|
1096
1039
|
|
|
1097
|
-
### v3.
|
|
1040
|
+
### v3.3 (current)
|
|
1098
1041
|
|
|
1099
1042
|
| Capability | Status |
|
|
1100
1043
|
|------------|--------|
|
|
@@ -1112,17 +1055,19 @@ For contributors, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
|
1112
1055
|
| Cognitive debt metrics at LGTM gates | Stable |
|
|
1113
1056
|
| Test traceability: REQ-ID → test coverage mapping | Stable |
|
|
1114
1057
|
| Intent drift detection with amendment suggestions | Stable |
|
|
1115
|
-
|
|
|
1116
|
-
|
|
|
1058
|
+
| 14 automation hooks (4 blocking) | Stable |
|
|
1059
|
+
| 13 specialized agents + 22 prompts + 8 skills | Stable |
|
|
1117
1060
|
| 6 compliance frameworks (HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001) | Stable |
|
|
1118
1061
|
| 6 input types (transcript, PDF, DOCX, Figma, codebase, raw text) | Stable |
|
|
1119
1062
|
| Test generation for 6 frameworks (vitest, jest, playwright, pytest, junit, xunit) | Stable |
|
|
1120
1063
|
| MCP-to-MCP routing (GitHub, Azure DevOps, Jira, Terraform, Figma, Docker) | Stable |
|
|
1121
1064
|
| SBOM + cosign signing on Docker image | Stable |
|
|
1122
1065
|
| JSONL audit logger (optional) | Stable |
|
|
1123
|
-
|
|
|
1066
|
+
| RBAC foundation (opt-in role-based access control) | Stable |
|
|
1067
|
+
| Rate limiting for HTTP transport (opt-in) | Stable |
|
|
1068
|
+
| 507 unit tests | Stable |
|
|
1124
1069
|
|
|
1125
|
-
### v3.
|
|
1070
|
+
### v3.4+ (planned)
|
|
1126
1071
|
|
|
1127
1072
|
| Feature | Description |
|
|
1128
1073
|
|---------|-------------|
|
package/SECURITY.md
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| Version | Supported |
|
|
6
6
|
|---------|-----------|
|
|
7
|
-
| 3.
|
|
8
|
-
|
|
|
7
|
+
| 3.3.x | ✅ Active |
|
|
8
|
+
| 3.0.x–3.2.x | ✅ Security fixes only |
|
|
9
|
+
| 2.3.x | ❌ End of life |
|
|
9
10
|
| 2.0.x | ❌ End of life |
|
|
10
11
|
| 1.0.x | ❌ End of life |
|
|
11
12
|
|
|
@@ -192,16 +193,15 @@ Running `npx specky-sdd` without a pinned version downloads the latest package f
|
|
|
192
193
|
|
|
193
194
|
| Approach | Risk reduction | Notes |
|
|
194
195
|
|----------|---------------|-------|
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
197
|
-
| Docker (`ghcr.io/paulasilvatech/specky:3.
|
|
198
|
-
| `npx specky-sdd` (unversioned) | **Baseline** — re-downloads on each invocation | Avoid in production pipelines |
|
|
196
|
+
| `apm install paulasilvatech/specky` | **High** — fetches once, lock file pins version | Recommended default |
|
|
197
|
+
| `apm install paulasilvatech/specky@3.3.0` | **Higher** — version-pinned, no silent upgrades | Best for reproducible environments |
|
|
198
|
+
| Docker (`ghcr.io/paulasilvatech/specky:3.3.0`) | **Highest** — immutable image by digest | Best for CI/CD and air-gapped |
|
|
199
199
|
|
|
200
200
|
**Workspace isolation pattern** (CI/CD):
|
|
201
201
|
|
|
202
202
|
```bash
|
|
203
203
|
# Install into a local vendor directory — no global write permissions needed
|
|
204
|
-
npm install specky-sdd@3.
|
|
204
|
+
npm install specky-sdd@3.3.0 --prefix ./vendor --ignore-scripts
|
|
205
205
|
./vendor/node_modules/.bin/specky-sdd
|
|
206
206
|
```
|
|
207
207
|
|
package/dist/index.js
CHANGED
|
@@ -72,8 +72,8 @@ const server = new McpServer({
|
|
|
72
72
|
name: SERVER_NAME,
|
|
73
73
|
version: VERSION,
|
|
74
74
|
title: "Specky",
|
|
75
|
-
description: "
|
|
76
|
-
websiteUrl: "https://
|
|
75
|
+
description: "Agentic Spec-Driven Development plugin — 13 agents, 57 MCP tools, 10-phase enforced pipeline, EARS notation, 22 prompts, 8 skills, 14 hooks.",
|
|
76
|
+
websiteUrl: "https://getspecky.ai",
|
|
77
77
|
icons: [
|
|
78
78
|
{
|
|
79
79
|
src: "https://raw.githubusercontent.com/paulasilvatech/specky/main/media/specky-brand-icon.svg",
|
|
@@ -106,7 +106,7 @@ const docGenerator = new DocGenerator(fileManager, stateMachine);
|
|
|
106
106
|
const gitManager = new GitManager(fileManager);
|
|
107
107
|
const testGenerator = new TestGenerator(fileManager);
|
|
108
108
|
const pbtGenerator = new PbtGenerator(fileManager);
|
|
109
|
-
|
|
109
|
+
new AuditLogger(workspaceRoot, config.audit_enabled, config.audit.export_format, config.audit.max_file_size_mb);
|
|
110
110
|
const rbacEngine = new RbacEngine(config.rbac.enabled ?? false, config.rbac.default_role ?? "contributor");
|
|
111
111
|
const metricsGenerator = new MetricsGenerator(fileManager);
|
|
112
112
|
const modelRoutingEngine = new ModelRoutingEngine();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|