Skip to content

Commit 26aea27

Browse files
authored
Merge branch 'main' into osc/add-speckit-utils-to-community-catalog
2 parents ca89519 + 497b588 commit 26aea27

6 files changed

Lines changed: 126 additions & 17 deletions

File tree

README.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
- [🚶 Community Walkthroughs](#-community-walkthroughs)
2626
- [🤖 Supported AI Agents](#-supported-ai-agents)
2727
- [🔧 Specify CLI Reference](#-specify-cli-reference)
28+
- [🧩 Making Spec Kit Your Own: Extensions & Presets](#-making-spec-kit-your-own-extensions--presets)
2829
- [📚 Core Philosophy](#-core-philosophy)
2930
- [🌟 Development Phases](#-development-phases)
3031
- [🎯 Experimental Goals](#-experimental-goals)
@@ -326,6 +327,68 @@ Additional commands for enhanced quality and validation:
326327
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
327328
| `SPECIFY_FEATURE` | Override feature detection for non-Git repositories. Set to the feature directory name (e.g., `001-photo-albums`) to work on a specific feature when not using Git branches.<br/>\*\*Must be set in the context of the agent you're working with prior to using `/speckit.plan` or follow-up commands. |
328329

330+
## 🧩 Making Spec Kit Your Own: Extensions & Presets
331+
332+
Spec Kit can be tailored to your needs through two complementary systems — **extensions** and **presets** — plus project-local overrides for one-off adjustments:
333+
334+
```mermaid
335+
block-beta
336+
columns 1
337+
overrides["⬆ Highest priority\nProject-Local Overrides\n.specify/templates/overrides/"]
338+
presets["Presets — Customize core & extensions\n.specify/presets/<preset-id>/templates/"]
339+
extensions["Extensions — Add new capabilities\n.specify/extensions/<ext-id>/templates/"]
340+
core["Spec Kit Core — Built-in SDD commands & templates\n.specify/templates/\n⬇ Lowest priority"]
341+
342+
style overrides fill:transparent,stroke:#999
343+
style presets fill:transparent,stroke:#4a9eda
344+
style extensions fill:transparent,stroke:#4a9e4a
345+
style core fill:transparent,stroke:#e6a817
346+
```
347+
348+
**Templates** are resolved at **runtime** — Spec Kit walks the stack top-down and uses the first match. Project-local overrides (`.specify/templates/overrides/`) let you make one-off adjustments for a single project without creating a full preset. **Commands** are applied at **install time** — when you run `specify extension add` or `specify preset add`, command files are written into agent directories (e.g., `.claude/commands/`). If multiple presets or extensions provide the same command, the highest-priority version wins. On removal, the next-highest-priority version is restored automatically. If no overrides or customizations exist, Spec Kit uses its core defaults.
349+
350+
### Extensions — Add New Capabilities
351+
352+
Use **extensions** when you need functionality that goes beyond Spec Kit's core. Extensions introduce new commands and templates — for example, adding domain-specific workflows that are not covered by the built-in SDD commands, integrating with external tools, or adding entirely new development phases. They expand *what Spec Kit can do*.
353+
354+
```bash
355+
# Search available extensions
356+
specify extension search
357+
358+
# Install an extension
359+
specify extension add <extension-name>
360+
```
361+
362+
For example, extensions could add Jira integration, post-implementation code review, V-Model test traceability, or project health diagnostics.
363+
364+
See the [Extensions README](./extensions/README.md) for the full guide, the complete community catalog, and how to build and publish your own.
365+
366+
### Presets — Customize Existing Workflows
367+
368+
Use **presets** when you want to change *how* Spec Kit works without adding new capabilities. Presets override the templates and commands that ship with the core *and* with installed extensions — for example, enforcing a compliance-oriented spec format, using domain-specific terminology, or applying organizational standards to plans and tasks. They customize the artifacts and instructions that Spec Kit and its extensions produce.
369+
370+
```bash
371+
# Search available presets
372+
specify preset search
373+
374+
# Install a preset
375+
specify preset add <preset-name>
376+
```
377+
378+
For example, presets could restructure spec templates to require regulatory traceability, adapt the workflow to fit the methodology you use (e.g., Agile, Kanban, Waterfall, jobs-to-be-done, or domain-driven design), add mandatory security review gates to plans, enforce test-first task ordering, or localize the entire workflow to a different language. The [pirate-speak demo](https://github.com/mnriem/spec-kit-pirate-speak-preset-demo) shows just how deep the customization can go. Multiple presets can be stacked with priority ordering.
379+
380+
See the [Presets README](./presets/README.md) for the full guide, including resolution order, priority, and how to create your own.
381+
382+
### When to Use Which
383+
384+
| Goal | Use |
385+
| --- | --- |
386+
| Add a brand-new command or workflow | Extension |
387+
| Customize the format of specs, plans, or tasks | Preset |
388+
| Integrate an external tool or service | Extension |
389+
| Enforce organizational or regulatory standards | Preset |
390+
| Ship reusable domain-specific templates | Either — presets for template overrides, extensions for templates bundled with new commands |
391+
329392
## 📚 Core Philosophy
330393

331394
Spec-Driven Development is a structured process that emphasizes:

extensions/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,10 @@ The following community-contributed extensions are available in [`catalog.commun
7575
| Archive Extension | Archive merged features into main project memory. | [spec-kit-archive](https://github.com/stn1slv/spec-kit-archive) |
7676
| Azure DevOps Integration | Sync user stories and tasks to Azure DevOps work items using OAuth authentication | [spec-kit-azure-devops](https://github.com/pragya247/spec-kit-azure-devops) |
7777
| Cleanup Extension | Post-implementation quality gate that reviews changes, fixes small issues (scout rule), creates tasks for medium issues, and generates analysis for large issues | [spec-kit-cleanup](https://github.com/dsrednicki/spec-kit-cleanup) |
78-
| Cognitive Squad | 19-function cognitive agent squad for autonomous pre-code analysis — 7 core agents, 7 specialists, 4 learning functions with feedback loop | [cognitive-squad](https://github.com/Testimonial/cognitive-squad) |
79-
| DocGuard — CDD Enforcement | Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. Zero dependencies. | [spec-kit-docguard](https://github.com/raccioly/docguard) |
78+
| Cognitive Squad | Multi-agent cognitive system with Triadic Model: understanding, internalization, application — with quality gates, backpropagation verification, and self-healing | [cognitive-squad](https://github.com/Testimonial/cognitive-squad) |
79+
| DocGuard — CDD Enforcement | Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. Zero NPM runtime dependencies. | [spec-kit-docguard](https://github.com/raccioly/docguard) |
8080
| Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) |
81+
| Iterate | Iterate on spec documents with a two-phase define-and-apply workflow — refine specs mid-implementation and go straight back to building | [spec-kit-iterate](https://github.com/imviancagrace/spec-kit-iterate) |
8182
| Jira Integration | Create Jira Epics, Stories, and Issues from spec-kit specifications and task breakdowns with configurable hierarchy and custom field support | [spec-kit-jira](https://github.com/mbachorik/spec-kit-jira) |
8283
| Learning Extension | Generate educational guides from implementations and enhance clarifications with mentoring context | [spec-kit-learn](https://github.com/imviancagrace/spec-kit-learn) |
8384
| Project Health Check | Diagnose a Spec Kit project and report health issues across structure, agents, features, scripts, extensions, and git | [spec-kit-doctor](https://github.com/KhawarHabibKhan/spec-kit-doctor) |

extensions/catalog.community.json

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"schema_version": "1.0",
3-
"updated_at": "2026-03-18T00:00:00Z",
3+
"updated_at": "2026-03-18T19:53:31Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
55
"extensions": {
66
"archive": {
@@ -108,7 +108,7 @@
108108
"cognitive-squad": {
109109
"name": "Cognitive Squad",
110110
"id": "cognitive-squad",
111-
"description": "19-function cognitive agent squad for autonomous pre-code analysis — 7 core agents, 7 specialists, 4 learning functions with feedback loop",
111+
"description": "Multi-agent cognitive system with Triadic Model: understanding, internalization, application — with quality gates, backpropagation verification, and self-healing",
112112
"author": "Testimonial",
113113
"version": "0.1.0",
114114
"download_url": "https://github.com/Testimonial/cognitive-squad/archive/refs/tags/v0.1.0.zip",
@@ -133,29 +133,29 @@
133133
]
134134
},
135135
"provides": {
136-
"commands": 7,
136+
"commands": 10,
137137
"hooks": 1
138138
},
139139
"tags": [
140140
"ai-agents",
141141
"cognitive",
142-
"pre-code",
143-
"analysis",
142+
"full-lifecycle",
143+
"verification",
144144
"multi-agent"
145145
],
146146
"verified": false,
147147
"downloads": 0,
148148
"stars": 0,
149149
"created_at": "2026-03-16T00:00:00Z",
150-
"updated_at": "2026-03-16T00:00:00Z"
150+
"updated_at": "2026-03-18T00:00:00Z"
151151
},
152152
"docguard": {
153153
"name": "DocGuard \u2014 CDD Enforcement",
154154
"id": "docguard",
155-
"description": "Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. Zero dependencies.",
155+
"description": "Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. Zero NPM runtime dependencies.",
156156
"author": "raccioly",
157-
"version": "0.9.8",
158-
"download_url": "https://github.com/raccioly/docguard/releases/download/v0.9.8/spec-kit-docguard-v0.9.8.zip",
157+
"version": "0.9.11",
158+
"download_url": "https://github.com/raccioly/docguard/releases/download/v0.9.11/spec-kit-docguard-v0.9.11.zip",
159159
"repository": "https://github.com/raccioly/docguard",
160160
"homepage": "https://www.npmjs.com/package/docguard-cli",
161161
"documentation": "https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md",
@@ -189,7 +189,7 @@
189189
"downloads": 0,
190190
"stars": 0,
191191
"created_at": "2026-03-13T00:00:00Z",
192-
"updated_at": "2026-03-15T20:00:00Z"
192+
"updated_at": "2026-03-18T18:53:31Z"
193193
},
194194
"doctor": {
195195
"name": "Project Health Check",
@@ -253,6 +253,36 @@
253253
"created_at": "2026-03-06T00:00:00Z",
254254
"updated_at": "2026-03-06T00:00:00Z"
255255
},
256+
"iterate": {
257+
"name": "Iterate",
258+
"id": "iterate",
259+
"description": "Iterate on spec documents with a two-phase define-and-apply workflow — refine specs mid-implementation and go straight back to building",
260+
"author": "Vianca Martinez",
261+
"version": "2.0.0",
262+
"download_url": "https://github.com/imviancagrace/spec-kit-iterate/archive/refs/tags/v2.0.0.zip",
263+
"repository": "https://github.com/imviancagrace/spec-kit-iterate",
264+
"homepage": "https://github.com/imviancagrace/spec-kit-iterate",
265+
"documentation": "https://github.com/imviancagrace/spec-kit-iterate/blob/main/README.md",
266+
"changelog": "https://github.com/imviancagrace/spec-kit-iterate/blob/main/CHANGELOG.md",
267+
"license": "MIT",
268+
"requires": {
269+
"speckit_version": ">=0.1.0"
270+
},
271+
"provides": {
272+
"commands": 2,
273+
"hooks": 0
274+
},
275+
"tags": [
276+
"iteration",
277+
"change-management",
278+
"spec-maintenance"
279+
],
280+
"verified": false,
281+
"downloads": 0,
282+
"stars": 0,
283+
"created_at": "2026-03-17T00:00:00Z",
284+
"updated_at": "2026-03-17T00:00:00Z"
285+
},
256286
"jira": {
257287
"name": "Jira Integration",
258288
"id": "jira",

presets/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ When Spec Kit needs a template (e.g. `spec-template`), it walks a resolution sta
1313

1414
If no preset is installed, core templates are used — exactly the same behavior as before presets existed.
1515

16+
Template resolution happens **at runtime** — although preset files are copied into `.specify/presets/<id>/` during installation, Spec Kit walks the resolution stack on every template lookup rather than merging templates into a single location.
17+
1618
For detailed resolution and command registration flows, see [ARCHITECTURE.md](ARCHITECTURE.md).
1719

1820
## Command Overrides
1921

2022
Presets can also override the commands that guide the SDD workflow. Templates define *what* gets produced (specs, plans, constitutions); commands define *how* the LLM produces them (the step-by-step instructions).
2123

22-
When a preset includes `type: "command"` entries, the commands are automatically registered into all detected agent directories (`.claude/commands/`, `.gemini/commands/`, etc.) in the correct format (Markdown or TOML with appropriate argument placeholders). When the preset is removed, the registered commands are cleaned up.
24+
Unlike templates, command overrides are applied **at install time**. When a preset includes `type: "command"` entries, the commands are registered into all detected agent directories (`.claude/commands/`, `.gemini/commands/`, etc.) in the correct format (Markdown or TOML with appropriate argument placeholders). When the preset is removed, the registered commands are cleaned up.
2325

2426
## Quick Start
2527

scripts/bash/common.sh

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,21 @@ json_escape() {
171171
s="${s//$'\r'/\\r}"
172172
s="${s//$'\b'/\\b}"
173173
s="${s//$'\f'/\\f}"
174-
# Strip remaining control characters (U+0000–U+001F) not individually escaped above
175-
s=$(printf '%s' "$s" | tr -d '\000-\007\013\016-\037')
176-
printf '%s' "$s"
174+
# Escape any remaining U+0001-U+001F control characters as \uXXXX.
175+
# (U+0000/NUL cannot appear in bash strings and is excluded.)
176+
# LC_ALL=C ensures ${#s} counts bytes and ${s:$i:1} yields single bytes,
177+
# so multi-byte UTF-8 sequences (first byte >= 0xC0) pass through intact.
178+
local LC_ALL=C
179+
local i char code
180+
for (( i=0; i<${#s}; i++ )); do
181+
char="${s:$i:1}"
182+
printf -v code '%d' "'$char" 2>/dev/null || code=256
183+
if (( code >= 1 && code <= 31 )); then
184+
printf '\\u%04x' "$code"
185+
else
186+
printf '%s' "$char"
187+
fi
188+
done
177189
}
178190

179191
check_file() { [[ -f "$1" ]] && echo "$2" || echo "$2"; }

scripts/powershell/create-new-feature.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
param(
55
[switch]$Json,
66
[string]$ShortName,
7+
[Parameter()]
78
[int]$Number = 0,
89
[switch]$Help,
9-
[Parameter(ValueFromRemainingArguments = $true)]
10+
[Parameter(Position = 0, ValueFromRemainingArguments = $true)]
1011
[string[]]$FeatureDescription
1112
)
1213
$ErrorActionPreference = 'Stop'

0 commit comments

Comments
 (0)