specky-sdd 3.2.0 → 3.2.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +126 -111
  3. package/SECURITY.md +4 -4
  4. package/dist/index.js +16 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/templates/templates/analysis.md +55 -0
  7. package/dist/templates/templates/api-docs.md +40 -0
  8. package/dist/templates/templates/bugfix.md +46 -0
  9. package/dist/templates/templates/checklist.md +29 -0
  10. package/dist/templates/templates/compliance.md +28 -0
  11. package/dist/templates/templates/constitution.md +57 -0
  12. package/dist/templates/templates/cross-analysis.md +46 -0
  13. package/dist/templates/templates/data-model.md +35 -0
  14. package/dist/templates/templates/design.md +104 -0
  15. package/dist/templates/templates/devcontainer.md +36 -0
  16. package/dist/templates/templates/dockerfile.md +34 -0
  17. package/dist/templates/templates/journey.md +73 -0
  18. package/dist/templates/templates/onboarding.md +49 -0
  19. package/dist/templates/templates/research.md +39 -0
  20. package/dist/templates/templates/runbook.md +40 -0
  21. package/dist/templates/templates/specification.md +50 -0
  22. package/dist/templates/templates/sync-report.md +44 -0
  23. package/dist/templates/templates/tasks.md +39 -0
  24. package/dist/templates/templates/terraform.md +38 -0
  25. package/dist/templates/templates/test-stub.md +34 -0
  26. package/dist/templates/templates/user-stories.md +39 -0
  27. package/dist/templates/templates/verification.md +33 -0
  28. package/dist/templates/templates/work-items.md +27 -0
  29. package/package.json +1 -1
  30. package/media/specky-icon-128.png +0 -0
  31. package/media/specky-icon-256.png +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,50 @@ All notable changes to Specky are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.2.2] - 2026-04-13
9
+
10
+ ### Documentation (npm republish)
11
+
12
+ - **Plugin-first Quick Start**: README now leads with plugin installation (`copilot plugin install`), MCP-only as alternative
13
+ - **`mcpServers` key**: All JSON config examples updated from `servers` to `mcpServers`
14
+ - **Stale counts fixed**: Tool count (53/55/56 → 57), hook count (7 → 10), agent count (5 → 7), skill count (6) across README, SECURITY, CONTRIBUTING
15
+ - **SDD Platform table**: Updated to 57 tools, plugin install command
16
+ - **GETTING-STARTED.md**: Full English rewrite with plugin-first installation, use cases, model routing, hooks, FAQ
17
+ - **CONTRIBUTING.md**: Added Plugin Structure section; version reference updated to v3.2.x
18
+ - **No runtime changes** — MCP server code is identical to v3.2.1
19
+
20
+ ## [3.2.1] - 2026-04-13
21
+
22
+ ### Plugin Marketplace
23
+
24
+ - **`marketplace.json`**: Added `.github/plugin/marketplace.json` — repo is now a valid GitHub Copilot plugin marketplace
25
+ - **`plugin.json`**: Added `plugins/specky-sdd/.github/plugin/plugin.json` in Claude Code spec format (7 agents, 19 commands, 6 skills)
26
+ - **`.mcp.json`**: Plugin ships its own MCP config with `mcpServers` key and `specky-sdd@latest`
27
+ - **`.claude-plugin/`**: Added symlink for Claude Code marketplace compatibility
28
+ - **Plugin README**: Full plugin documentation at `plugins/specky-sdd/README.md` with skills, agents, commands, MCP server, and installation instructions
29
+ - **Plugin install**: Users can now install via `copilot plugin marketplace add paulasilvatech/specky && copilot plugin install specky-sdd@specky`
30
+ - **Flat structure**: Restructured from versioned `specky-sdd-vscode-v1.2.1/.github/plugin/specky/` to flat `plugins/specky-sdd/`
31
+ - **MCP key fix**: All JSON configs now use `mcpServers` key (previously `servers` in some files)
32
+ - **Version sync**: All plugin files aligned to v3.2.1 (`config.yml`, `plugin.json`, `marketplace.json`)
33
+ - **Cleanup**: Removed duplicate directories, empty `.github/agents/`, `.github/prompts/`, `.github/instructions/`, `.github/hooks/`
34
+
35
+ ### MCP Server Metadata
36
+
37
+ - **Server title**: MCP panel now shows "Specky" with description instead of raw binary name
38
+ - **Server icon**: SVG + PNG icons served from GitHub raw content, visible in VS Code MCP panel
39
+ - **Website URL**: Links to [specky-site](https://paulasilvatech.github.io/specky-site/) from server metadata
40
+ - **Instructions**: AI clients receive pipeline guidance during MCP handshake
41
+ - **Template path fix**: Templates now resolve from `dist/templates/` (self-contained npm package)
42
+
43
+ ### Documentation
44
+
45
+ - **MCP config examples**: Added `"type": "stdio"` to all VS Code, Claude Code, and Claude Desktop config examples
46
+ - **Removed broken env vars**: Removed `SDD_WORKSPACE` / `${workspaceFolder}` that caused startup errors
47
+ - **Tool count**: Updated 56 → 57 across all documentation
48
+ - **EARS patterns**: Fixed 5 → 6 pattern count (includes Complex)
49
+ - **Broken links**: Fixed references to private files (CLAUDE.md, SYSTEM-DESIGN.md, ears-notation.md)
50
+ - **Site fixes**: Updated EARS count and footer links on [specky-site](https://paulasilvatech.github.io/specky-site/)
51
+
8
52
  ## [3.2.0] - 2026-04-12
9
53
 
10
54
  ### Enterprise Security Hardening
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
  <br>
3
3
  <img src="media/specky-brand-logo.svg" alt="Specky" height="80">
4
4
  <br><br>
5
- <p><strong>56 MCP tools. 10-phase pipeline. Works in any IDE.</strong></p>
5
+ <p><strong>57 MCP tools. 10-phase pipeline. Works in any IDE.</strong></p>
6
6
  <p>Agentic Spec-Driven Development</p>
7
7
 
8
8
  <p>
9
- <img src="https://img.shields.io/badge/tools-56_MCP-7c3aed?style=flat-square" alt="56 Tools"/>
9
+ <img src="https://img.shields.io/badge/tools-57_MCP-7c3aed?style=flat-square" alt="57 Tools"/>
10
10
  <img src="https://img.shields.io/badge/phases-10_enforced-6d28d9?style=flat-square" alt="10 Phases"/>
11
11
  <img src="https://img.shields.io/badge/diagrams-17_types-5b21b6?style=flat-square" alt="17 Diagrams"/>
12
12
  <img src="https://img.shields.io/badge/compliance-6_frameworks-4c1d95?style=flat-square" alt="6 Compliance"/>
@@ -23,6 +23,7 @@
23
23
  <p>
24
24
  <a href="https://paulasilvatech.github.io/specky-site/">Website</a> ·
25
25
  <a href="GETTING-STARTED.md">Getting Started</a> ·
26
+ <a href="plugins/specky-sdd/">Plugin</a> ·
26
27
  <a href="https://www.npmjs.com/package/specky-sdd">npm</a> ·
27
28
  <a href="SECURITY.md">Security</a>
28
29
  </p>
@@ -36,26 +37,28 @@
36
37
  | **Start** | [What is Specky?](#what-is-specky) | Overview and ecosystem |
37
38
  | | [Why Specifications Matter](#why-specifications-matter-in-the-ai-era) | Vibe coding vs deterministic development |
38
39
  | | [Getting Started](GETTING-STARTED.md) | Complete educational guide |
39
- | **Use** | [Quick Start](#quick-start) | Install via npm or Docker, connect to your IDE |
40
- | | [Where Specifications Live](#where-specifications-live) | File structure and naming conventions |
40
+ | **Install** | [Quick Start](#quick-start) | Install plugin or MCP server, connect to your IDE |
41
+ | | [Plugin (recommended)](#install-as-plugin-recommended) | Enterprise-grade: agents, skills, hooks, MCP — all in one |
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 |
41
44
  | | [Input Methods](#input-methods-6-ways-to-start) | 6 ways to feed Specky |
42
45
  | | [Three Project Types](#three-project-types-one-pipeline) | Greenfield, Brownfield, Modernization |
43
46
  | **Pipeline** | [Pipeline and LGTM Gates](#pipeline-and-lgtm-gates) | 10 phases with human review gates |
44
- | | [All 56 Tools](#all-56-tools) | Complete tool reference by category |
47
+ | | [All 57 Tools](#all-57-tools) | Complete tool reference by category |
45
48
  | | [EARS Notation](#ears-notation) | The 6 requirement patterns |
46
49
  | **Enterprise** | [Compliance Frameworks](#compliance-frameworks) | HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001 |
47
50
  | | [Enterprise Ready](#enterprise-ready) | Security, audit trail, quality gates |
48
51
  | **Platform** | [The SDD Platform](#the-spec-driven-development-platform) | Built on Spec-Kit, everything included |
49
- | | [Roadmap](#roadmap) | v3.0 current, v3.1+ planned |
52
+ | | [Roadmap](#roadmap) | v3.2 current, v3.3+ planned |
50
53
 
51
54
 
52
55
  ## What is Specky?
53
56
 
54
- Specky is an open-source **MCP server** that turns the [Spec-Kit](https://github.com/paulasilvatech/spec-kit) SDD methodology into a **programmable enforcement engine** with 56 validated tools. It provides a deterministic pipeline from **any input** (meeting transcripts, documents, Figma designs, or natural language prompts) through specifications, architecture, infrastructure as code, implementation, and deployment.
57
+ Specky is an open-source **MCP server** that turns the [Spec-Kit](https://github.com/paulasilvatech/spec-kit) SDD methodology into a **programmable enforcement engine** with 57 validated tools. It provides a deterministic pipeline from **any input** (meeting transcripts, documents, Figma designs, or natural language prompts) through specifications, architecture, infrastructure as code, implementation, and deployment.
55
58
 
56
59
  **Spec-Kit** provides the methodology: EARS notation, gated pipeline phases, constitution model, quality patterns. **Specky** reimplements all of it as MCP tools and adds programmatic enforcement: a state machine that blocks phase-skipping, an EARS validator, cross-artifact analysis, compliance engines, test generation, and MCP-to-MCP routing.
57
60
 
58
- **Install Specky and you get both.** The Spec-Kit methodology is already built in. It works inside any AI IDE that supports MCP, via `.github/agents/` or `.claude/commands/`, and natively in Cursor, Windsurf, or any MCP-compatible client. See how they [complement each other](#the-spec-driven-development-platform).
61
+ **Install the Specky plugin and you get everything.** The Spec-Kit methodology is built in. The plugin bundles 7 agents, 19 prompts, 6 skills, 10 automation hooks, and the MCP server — all configured automatically. It works inside VS Code with Copilot, Claude Code, Cursor, Windsurf, or any MCP-compatible client. See the [plugin documentation](plugins/specky-sdd/) or how Spec-Kit and Specky [complement each other](#the-spec-driven-development-platform).
59
62
 
60
63
 
61
64
  ## Why Specifications Matter in the AI Era
@@ -98,8 +101,8 @@ Specky adds a **deterministic engine** between your intent and your code:
98
101
 
99
102
  | Capability | Specky |
100
103
  |---|---|
101
- | Any input (PDF, DOCX, PPTX, transcript, Figma) to spec | 56 MCP tools handle all input formats |
102
- | EARS validation (programmatic, not AI guessing) | 5 patterns enforced at schema level |
104
+ | Any input (PDF, DOCX, PPTX, transcript, Figma) to spec | 57 MCP tools handle all input formats |
105
+ | EARS validation (programmatic, not AI guessing) | 6 patterns enforced at schema level |
103
106
  | Enforced pipeline (not suggestions) | 10 phases with actual gates that block advancement |
104
107
  | 17 diagram types generated automatically | C4 (4 levels), sequence, ER, activity, use case, DFD, deployment, network |
105
108
  | Infrastructure as Code | Terraform, Bicep, Dockerfile from DESIGN.md |
@@ -109,7 +112,7 @@ Specky adds a **deterministic engine** between your intent and your code:
109
112
  | Phantom task detection | Catches tasks marked done with no code evidence |
110
113
  | Property-based testing | fast-check (TypeScript) and Hypothesis (Python) |
111
114
  | Checkpoint/restore | Persistent snapshots of all spec artifacts |
112
- | 7 automation hooks | Tests, docs, security scan, spec sync, SRP, changelog, checkpoint |
115
+ | 10 automation hooks (2 blocking) | Security scan, release gate, spec sync, checkpoint, quality, EARS, task trace, drift, cognitive debt, metrics |
113
116
  | Works in any MCP host | VS Code + Copilot, Claude Code, Cursor, Windsurf, or any MCP client |
114
117
  | Zero outbound network calls | Fully air-gapped, code never leaves your machine |
115
118
  | MIT open source | Fork it, extend it, audit it. No vendor lock, no seat pricing |
@@ -122,33 +125,75 @@ Specky adds a **deterministic engine** between your intent and your code:
122
125
  - **Node.js 18+**: [Download here](https://nodejs.org/)
123
126
  - **An AI IDE**: VS Code with Copilot, Claude Code, Claude Desktop, Cursor, or Windsurf
124
127
 
125
- ### Step 1: Choose Your Installation Scope
128
+ ### Install as Plugin (recommended)
126
129
 
127
- | Scope | What it does | Best for |
128
- |-------|-------------|----------|
129
- | **Per workspace** (recommended) | Config file lives inside the repo, shared with the team via Git | Teams, open-source projects |
130
- | **Global (once)** | Installed on your machine, available in every repo automatically | Personal use, quick setup |
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
131
 
132
- ### Step 2: Install
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 | — | ✅ |
133
143
 
134
- <details open>
135
- <summary><strong>Global (recommended): Install once, use everywhere</strong></summary>
144
+ #### Via Copilot CLI
136
145
 
137
- Install globally so `specky-sdd` is always available — no re-download on every run:
146
+ ```bash
147
+ copilot plugin marketplace add paulasilvatech/specky
148
+ copilot plugin install specky-sdd@specky
149
+ ```
150
+
151
+ #### Manual Installation
138
152
 
139
153
  ```bash
140
- npm install -g specky-sdd
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
+
141
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
+ ```
174
+
175
+ > **Tip:** Commit `.github/plugin/` and `.vscode/` to Git so every team member gets Specky automatically on clone.
176
+
177
+ See the full [plugin documentation](plugins/specky-sdd/README.md) for details.
178
+
179
+ ### Install MCP Server Only
180
+
181
+ If you only need the 57 MCP tools without agents, skills, and hooks, install the MCP server directly.
142
182
 
143
- Then configure your IDE to use the global install:
183
+ <details>
184
+ <summary><strong>Global (npm)</strong></summary>
185
+
186
+ ```bash
187
+ npm install -g specky-sdd
188
+ ```
144
189
 
145
190
  **VS Code** (`.vscode/mcp.json`):
146
191
  ```json
147
192
  {
148
- "servers": {
149
- "specky": {
150
- "command": "specky-sdd",
151
- "env": { "SDD_WORKSPACE": "${workspaceFolder}" }
193
+ "mcpServers": {
194
+ "specky-sdd": {
195
+ "type": "stdio",
196
+ "command": "specky-sdd"
152
197
  }
153
198
  }
154
199
  }
@@ -156,23 +201,15 @@ Then configure your IDE to use the global install:
156
201
 
157
202
  **Claude Code**:
158
203
  ```bash
159
- claude mcp add specky -- specky-sdd
204
+ claude mcp add specky-sdd -- specky-sdd
160
205
  ```
161
206
 
162
207
  **Claude Desktop** (`claude_desktop_config.json`):
163
-
164
- | OS | Config location |
165
- |----|----------------|
166
- | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
167
- | Linux | `~/.config/Claude/claude_desktop_config.json` |
168
- | Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
169
-
170
208
  ```json
171
209
  {
172
210
  "mcpServers": {
173
- "specky": {
174
- "command": "specky-sdd",
175
- "env": { "SDD_WORKSPACE": "/path/to/your/project" }
211
+ "specky-sdd": {
212
+ "command": "specky-sdd"
176
213
  }
177
214
  }
178
215
  }
@@ -181,58 +218,37 @@ claude mcp add specky -- specky-sdd
181
218
  </details>
182
219
 
183
220
  <details>
184
- <summary><strong>Per Workspace (alternative): npx, no global install</strong></summary>
185
-
186
- Add a config file to the repo so teammates get Specky automatically on clone — no global install needed.
221
+ <summary><strong>Per Workspace (npx)</strong></summary>
187
222
 
188
223
  **VS Code** (`.vscode/mcp.json`):
189
224
  ```json
190
225
  {
191
- "servers": {
192
- "specky": {
226
+ "mcpServers": {
227
+ "specky-sdd": {
228
+ "type": "stdio",
193
229
  "command": "npx",
194
- "args": ["-y", "specky-sdd"],
195
- "env": { "SDD_WORKSPACE": "${workspaceFolder}" }
230
+ "args": ["-y", "specky-sdd@latest"]
196
231
  }
197
232
  }
198
233
  }
199
234
  ```
200
235
 
201
- **Claude Code**:
202
- ```bash
203
- claude mcp add specky -- npx -y specky-sdd
204
- ```
205
-
206
236
  > Commit `.vscode/mcp.json` to Git so every team member gets Specky automatically.
207
237
 
208
238
  </details>
209
239
 
210
240
  <details>
211
- <summary><strong>Docker: Docker (HTTP mode, no Node.js required)</strong></summary>
212
-
213
- Run Specky as an HTTP server in a container:
241
+ <summary><strong>Docker (HTTP mode, no Node.js required)</strong></summary>
214
242
 
215
243
  ```bash
216
244
  docker run -d --name specky -p 3200:3200 -v $(pwd):/workspace ghcr.io/paulasilvatech/specky:latest
217
245
  ```
218
246
 
219
- Verify it's running:
220
-
221
- ```bash
222
- curl http://localhost:3200/health
223
- ```
224
-
225
247
  Point any MCP client that supports HTTP to `http://localhost:3200/mcp`
226
248
 
227
- Stop when done:
228
-
229
- ```bash
230
- docker stop specky && docker rm specky
231
- ```
232
-
233
249
  </details>
234
250
 
235
- ### Step 3: Verify
251
+ ### Verify
236
252
 
237
253
  Open your AI IDE and type:
238
254
 
@@ -240,11 +256,11 @@ Open your AI IDE and type:
240
256
  > What tools does Specky have?
241
257
  ```
242
258
 
243
- The AI should list the 56 SDD tools. If you see them, Specky is working.
259
+ The AI should list the 57 SDD tools. If you see them, Specky is working.
244
260
 
245
261
  ### Try It Now
246
262
 
247
- Once connected, type this in your AI chat to see Specky in action:
263
+ Once connected, type this in your AI chat:
248
264
 
249
265
  ```
250
266
  > Initialize a Specky project for a todo API and help me define the scope
@@ -526,7 +542,7 @@ The AI calls:
526
542
 
527
543
  The AI calls `sdd_export_work_items` + `sdd_create_pr` → generates work item payloads and PR body with full spec traceability.
528
544
 
529
- > **Next:** **Next:** Learn about [EARS notation](#ears-notation) to understand the requirement patterns, or see [All 56 Tools](#all-56-tools) for a complete reference.
545
+ > **Next:** **Next:** Learn about [EARS notation](#ears-notation) to understand the requirement patterns, or see [All 57 Tools](#all-57-tools) for a complete reference.
530
546
 
531
547
 
532
548
  ## Brownfield Project: Add Features to Existing Code
@@ -719,9 +735,9 @@ The AI calls `sdd_advance_phase` → moves the pipeline forward if all prerequis
719
735
  All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live). See [Input Methods](#input-methods-6-ways-to-start) for how to feed data into the pipeline.
720
736
 
721
737
 
722
- ## All 56 Tools
738
+ ## All 57 Tools
723
739
 
724
- ### Input and Conversion (5)
740
+ ### Input and Conversion (6)
725
741
 
726
742
  | Tool | Description |
727
743
  |------|-------------|
@@ -729,9 +745,10 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
729
745
  | `sdd_import_transcript` | Parse meeting transcripts (Teams, Zoom, Google Meet) |
730
746
  | `sdd_auto_pipeline` | Any input to complete spec pipeline (all documents) |
731
747
  | `sdd_batch_import` | Process folder of mixed documents |
748
+ | `sdd_batch_transcripts` | Process folder of meeting transcripts |
732
749
  | `sdd_figma_to_spec` | Figma design to requirements specification |
733
750
 
734
- ### Pipeline Core (8)
751
+ ### Pipeline Core (9)
735
752
 
736
753
  | Tool | Description |
737
754
  |------|-------------|
@@ -741,6 +758,7 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
741
758
  | `sdd_clarify` | Resolve ambiguities with decision tree |
742
759
  | `sdd_write_design` | 12-section system design (C4 model) with sequence diagrams, ERD, API flow |
743
760
  | `sdd_write_tasks` | Task breakdown with dependency graph |
761
+ | `sdd_write_bugfix` | Bugfix specification from issue description |
744
762
  | `sdd_run_analysis` | Quality gate analysis with coverage heatmap |
745
763
  | `sdd_advance_phase` | Move to next pipeline phase |
746
764
 
@@ -779,7 +797,7 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
779
797
  | `sdd_setup_codespaces` | GitHub Codespaces configuration |
780
798
  | `sdd_generate_devcontainer` | .devcontainer/devcontainer.json generation |
781
799
 
782
- ### Integration and Export (5)
800
+ ### Integration and Export (7)
783
801
 
784
802
  | Tool | Description |
785
803
  |------|-------------|
@@ -788,17 +806,20 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
788
806
  | `sdd_create_pr` | PR payload with spec summary |
789
807
  | `sdd_implement` | Ordered implementation plan with checkpoints |
790
808
  | `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 |
791
811
 
792
- ### Documentation (4)
812
+ ### Documentation (5)
793
813
 
794
814
  | Tool | Description |
795
815
  |------|-------------|
796
816
  | `sdd_generate_docs` | Complete auto-documentation |
817
+ | `sdd_generate_all_docs` | Generate all documentation types in parallel |
797
818
  | `sdd_generate_api_docs` | API documentation from design |
798
819
  | `sdd_generate_runbook` | Operational runbook |
799
820
  | `sdd_generate_onboarding` | Developer onboarding guide |
800
821
 
801
- ### Utility (5)
822
+ ### Utility (8)
802
823
 
803
824
  | Tool | Description |
804
825
  |------|-------------|
@@ -807,6 +828,9 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
807
828
  | `sdd_scan_codebase` | Detect tech stack and structure |
808
829
  | `sdd_metrics` | Project metrics dashboard |
809
830
  | `sdd_amend` | Amend project constitution |
831
+ | `sdd_context_status` | Context tiering status (Hot/Domain/Cold) |
832
+ | `sdd_model_routing` | Model routing guidance for current task |
833
+ | `sdd_check_access` | RBAC access check for current role |
810
834
 
811
835
  ### Testing (3)
812
836
 
@@ -847,14 +871,14 @@ All artifacts are saved in [`.specs/NNN-feature/`](#where-specifications-live).
847
871
 
848
872
  **[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.
849
873
 
850
- **Specky** is the MCP engine that reimplements that methodology as 53 enforceable tools with programmatic validation. It enforces **how** to do it.
874
+ **Specky** is the MCP engine that reimplements that methodology as 57 enforceable tools with programmatic validation. It enforces **how** to do it.
851
875
 
852
876
  | | Spec-Kit (Methodology) | Specky (Engine) |
853
877
  |--|------------------------|-----------------|
854
- | **What it is** | Prompt templates + agent definitions | MCP server with 55 tools |
878
+ | **What it is** | Prompt templates + agent definitions | MCP server with 57 tools |
855
879
  | **How it works** | AI reads `.md` templates and follows instructions | AI calls tools that validate, enforce, and generate |
856
880
  | **Validation** | AI tries to follow the prompts | State machine, EARS regex, Zod schemas |
857
- | **Install** | Copy `.github/agents/` and `.claude/commands/` | `npx specky-sdd` (includes methodology built-in) |
881
+ | **Install** | Copy `.github/agents/` and `.claude/commands/` | `copilot plugin install specky-sdd@specky` or `npm install -g specky-sdd` |
858
882
  | **Works standalone** | Yes, in any AI IDE | Yes, includes all Spec-Kit patterns |
859
883
  | **Best for** | Learning SDD, lightweight adoption | Production enforcement, enterprise, compliance |
860
884
 
@@ -864,17 +888,27 @@ When you install Specky, you get the full Spec-Kit methodology reimplemented as
864
888
 
865
889
  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.
866
890
 
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
+
867
900
  ```json
868
901
  {
869
- "servers": {
870
- "specky": {
902
+ "mcpServers": {
903
+ "specky-sdd": {
904
+ "type": "stdio",
871
905
  "command": "specky-sdd"
872
906
  }
873
907
  }
874
908
  }
875
909
  ```
876
910
 
877
- > **Note:** This example assumes `specky-sdd` is installed globally (`npm install -g specky-sdd`). See the [Installation](#installation) section for per-workspace and Docker alternatives.
911
+ > **Note:** This example assumes `specky-sdd` is installed globally (`npm install -g specky-sdd`). See the [Quick Start](#quick-start) section for plugin installation, per-workspace, and Docker alternatives.
878
912
 
879
913
  ## Project Configuration
880
914
 
@@ -986,7 +1020,7 @@ Specky is built with enterprise adoption in mind.
986
1020
  - **Zod `.strict()` validation** — every tool input is schema-validated; unknown fields rejected
987
1021
  - **security-scan hook** blocks commits containing hardcoded secrets (exit code 2)
988
1022
  - See [SECURITY.md](SECURITY.md) for full OWASP Top 10 coverage
989
- - See [docs/SYSTEM-DESIGN.md](docs/SYSTEM-DESIGN.md) for complete security architecture
1023
+ - See [SECURITY.md](SECURITY.md) for complete security architecture
990
1024
 
991
1025
  ### Security Best Practices
992
1026
 
@@ -1042,46 +1076,29 @@ Every pipeline phase produces a traceable artifact in `.specs/NNN-feature/`. The
1042
1076
  - **EARS Validator** — programmatic requirement quality enforcement
1043
1077
  - **Cross-Artifact Analysis** — automatic alignment checking between spec, design, and tasks
1044
1078
  - **Phase Enforcement** — state machine blocks phase-skipping; required files gate advancement
1045
- - **507 unit tests** — CI enforces thresholds on every push
1079
+ - **Comprehensive test suite** — CI enforces thresholds on every push
1046
1080
 
1047
1081
 
1048
1082
  ## Development
1049
1083
 
1050
1084
  ```bash
1051
- # Clone and setup
1052
- git clone https://github.com/paulasilvatech/specky.git
1053
- cd specky
1054
- npm install
1055
-
1056
- # Build
1057
- npm run build
1058
-
1059
- # Run tests (507 tests)
1060
- npm test
1061
-
1062
- # Run tests with coverage report
1063
- npm run test:coverage
1064
-
1065
- # Development mode (auto-reload on file changes)
1066
- npm run dev
1085
+ # Install globally
1086
+ npm install -g specky-sdd
1067
1087
 
1068
1088
  # Verify MCP handshake (quick smoke test)
1069
- 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
1070
-
1071
- # Build and run with Docker locally
1072
- docker build -t specky-sdd:dev .
1073
- docker run -p 3200:3200 -v $(pwd):/workspace specky-sdd:dev
1074
- curl http://localhost:3200/health
1089
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | specky-sdd 2>/dev/null
1075
1090
  ```
1076
1091
 
1092
+ For contributors, see [CONTRIBUTING.md](CONTRIBUTING.md).
1093
+
1077
1094
 
1078
1095
  ## Roadmap
1079
1096
 
1080
- ### v3.1 (current)
1097
+ ### v3.2 (current)
1081
1098
 
1082
1099
  | Capability | Status |
1083
1100
  |------------|--------|
1084
- | 56 MCP tools across 10 enforced pipeline phases | Stable |
1101
+ | 57 MCP tools across 10 enforced pipeline phases | Stable |
1085
1102
  | Phase validation on every tool with gate enforcement | Stable |
1086
1103
  | 17 software engineering diagram types (C4, sequence, ER, DFD, deployment, network) | Stable |
1087
1104
  | 12-section system design template (C4 model, security, infrastructure) | Stable |
@@ -1096,16 +1113,16 @@ curl http://localhost:3200/health
1096
1113
  | Test traceability: REQ-ID → test coverage mapping | Stable |
1097
1114
  | Intent drift detection with amendment suggestions | Stable |
1098
1115
  | 10 automation hooks (2 blocking) | Stable |
1099
- | 12 Claude Code commands + 5 Copilot agents | Stable |
1116
+ | 7 Copilot agents + 19 prompts + 6 skills (via plugin) | Stable |
1100
1117
  | 6 compliance frameworks (HIPAA, SOC2, GDPR, PCI-DSS, ISO 27001) | Stable |
1101
1118
  | 6 input types (transcript, PDF, DOCX, Figma, codebase, raw text) | Stable |
1102
1119
  | Test generation for 6 frameworks (vitest, jest, playwright, pytest, junit, xunit) | Stable |
1103
1120
  | MCP-to-MCP routing (GitHub, Azure DevOps, Jira, Terraform, Figma, Docker) | Stable |
1104
1121
  | SBOM + cosign signing on Docker image | Stable |
1105
1122
  | JSONL audit logger (optional) | Stable |
1106
- | 507 unit tests | Stable |
1123
+ | Comprehensive test suite | Stable |
1107
1124
 
1108
- ### v3.2+ (planned)
1125
+ ### v3.3+ (planned)
1109
1126
 
1110
1127
  | Feature | Description |
1111
1128
  |---------|-------------|
@@ -1113,10 +1130,8 @@ curl http://localhost:3200/health
1113
1130
  | Observability | OpenTelemetry metrics and structured logging |
1114
1131
  | Internationalization | Spec templates in PT-BR, ES, FR, DE, JA |
1115
1132
  | Automated shrinking | fast-check/Hypothesis shrinking feedback into spec refinement |
1116
- | RBAC | Role-based access control for phase advancement |
1117
1133
  | Centralized audit log | SIEM-integrated tamper-evident audit trail |
1118
1134
  | Multi-tenant | Isolated workspaces for multiple teams |
1119
- | Rate limiting | Request throttling for HTTP transport |
1120
1135
  | SSO / SAML | Federated identity for enterprise auth |
1121
1136
 
1122
1137
  Have a feature request? [Open an issue](https://github.com/paulasilvatech/specky/issues).
package/SECURITY.md CHANGED
@@ -26,7 +26,7 @@ If you discover a security vulnerability in Specky, please report it responsibly
26
26
 
27
27
  ### Input Validation
28
28
 
29
- All 56 MCP tool inputs are validated using [Zod](https://zod.dev/) schemas with `.strict()` mode. No unknown fields are accepted. This prevents injection of unexpected parameters through the MCP JSON-RPC interface.
29
+ All 57 MCP tool inputs are validated using [Zod](https://zod.dev/) schemas with `.strict()` mode. No unknown fields are accepted. This prevents injection of unexpected parameters through the MCP JSON-RPC interface.
30
30
 
31
31
  ```
32
32
  AI Client → JSON-RPC → Zod .strict() validation → Service layer
@@ -193,15 +193,15 @@ Running `npx specky-sdd` without a pinned version downloads the latest package f
193
193
  | Approach | Risk reduction | Notes |
194
194
  |----------|---------------|-------|
195
195
  | `npm install -g specky-sdd` | **High** — fetches once, runs offline after | Recommended default |
196
- | `npm install -g specky-sdd@3.2.0` | **Higher** — version-pinned, no silent upgrades | Best for reproducible environments |
197
- | Docker (`ghcr.io/paulasilvatech/specky:3.2.0`) | **Highest** — immutable image by digest | Best for CI/CD and air-gapped |
196
+ | `npm install -g specky-sdd@3.2.1` | **Higher** — version-pinned, no silent upgrades | Best for reproducible environments |
197
+ | Docker (`ghcr.io/paulasilvatech/specky:3.2.1`) | **Highest** — immutable image by digest | Best for CI/CD and air-gapped |
198
198
  | `npx specky-sdd` (unversioned) | **Baseline** — re-downloads on each invocation | Avoid in production pipelines |
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.2.0 --prefix ./vendor --ignore-scripts
204
+ npm install specky-sdd@3.2.1 --prefix ./vendor --ignore-scripts
205
205
  ./vendor/node_modules/.bin/specky-sdd
206
206
  ```
207
207
 
package/dist/index.js CHANGED
@@ -71,6 +71,22 @@ if (config.audit_enabled)
71
71
  const server = new McpServer({
72
72
  name: SERVER_NAME,
73
73
  version: VERSION,
74
+ title: "Specky",
75
+ description: "57 MCP tools for Spec-Driven Development. 10-phase enforced pipeline, EARS notation, 17 diagram types, 6 compliance frameworks.",
76
+ websiteUrl: "https://paulasilvatech.github.io/specky-site/",
77
+ icons: [
78
+ {
79
+ src: "https://raw.githubusercontent.com/paulasilvatech/specky/main/media/specky-brand-icon.svg",
80
+ mimeType: "image/svg+xml",
81
+ },
82
+ {
83
+ src: "https://raw.githubusercontent.com/paulasilvatech/specky/main/media/specky-icon-128.png",
84
+ mimeType: "image/png",
85
+ sizes: ["128x128"],
86
+ },
87
+ ],
88
+ }, {
89
+ instructions: "Specky is a Spec-Driven Development engine. Start with sdd_init to create a project, then follow the 10-phase pipeline: Init → Discover → Specify → Clarify → Design → Tasks → Analyze → Implement → Verify → Release. Use sdd_get_status to check current phase. Reply LGTM at quality gates to advance.",
74
90
  });
75
91
  // Initialize services (v1)
76
92
  const fileManager = new FileManager(workspaceRoot);
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":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,iCAAiC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,yBAAyB;AACzB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACpE,OAAO,CAAC,KAAK,CAAC,4BAA4B,aAAa,EAAE,CAAC,CAAC;AAE3D,oDAAoD;AACpD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,MAAM,CAAC,cAAc;IAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AAChG,IAAI,MAAM,CAAC,aAAa;IAAE,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAEzE,wBAAwB;AACxB,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,iIAAiI;IAC9I,UAAU,EAAE,+CAA+C;IAC3D,KAAK,EAAE;QACL;YACE,GAAG,EAAE,0FAA0F;YAC/F,QAAQ,EAAE,eAAe;SAC1B;QACD;YACE,GAAG,EAAE,wFAAwF;YAC7F,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,CAAC,SAAS,CAAC;SACnB;KACF;CACF,EACD;IACE,YAAY,EAAE,2SAA2S;CAC1T,CACF,CAAC;AAEF,2BAA2B;AAC3B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,IAAI,SAAS,CAAC,CAAC;AAC3F,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAC1C,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AACzD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAE3D,2BAA2B;AAC3B,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAC7D,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;AACnD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AACrD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAChD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACjE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;AACnD,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,aAAa,EACb,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,KAAK,CAAC,aAAa,EAC1B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC9B,CAAC;AACF,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,EAC5B,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,aAAa,CAC1C,CAAC;AACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AACpD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AACxD,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AACtD,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAChD,MAAM,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAE5D,gCAAgC;AAChC,WAAW;AACX,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AACxF,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAC5F,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAC5G,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAE5G,YAAY;AACZ,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;AACzE,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACxH,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAChF,2BAA2B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAC7E,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAC3F,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AAC1G,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5E,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;AACjH,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC3D,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;AACvF,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAClE,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAClH,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACjD,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAC9E,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtC,oBAAoB;AACpB,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,+BAA+B,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AAEvD,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,EAAE,6BAA6B,EAAE,GAAG,MAAM,MAAM,CACpD,oDAAoD,CACrD,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;SACvC,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,iEAAiE;QACjE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO;YAC3C,CAAC,CAAC,IAAI,WAAW,CACb,MAAM,CAAC,UAAU,CAAC,uBAAuB,IAAI,EAAE,EAC/C,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAC9B;YACH,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CACX,mCAAmC,MAAM,CAAC,UAAU,CAAC,uBAAuB,eAAe,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CACrH,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACtD,IAAI,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBACvB,uDAAuD;gBACvD,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;oBACvD,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;oBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;wBACvE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;4BACjB,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;yBACrC,CAAC,CAAC;wBACH,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;4BACb,KAAK,EAAE,mBAAmB;4BAC1B,cAAc,EAAE,KAAK,CAAC,cAAc;yBACrC,CAAC,CACH,CAAC;wBACF,OAAO;oBACT,CAAC;gBACH,CAAC;gBACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,sCAAsC,OAAO,GAAG,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}