Skip to content

Commit fc505d3

Browse files
committed
Merge remote-tracking branch 'upstream/main' into add-spec-validate-extension
# Conflicts: # extensions/catalog.community.json
2 parents 472b7c8 + fc1cec9 commit fc505d3

File tree

9 files changed

+245
-36
lines changed

9 files changed

+245
-36
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ The following community-contributed extensions are available in [`catalog.commun
223223
| MAQA Jira Integration | Jira integration for MAQA — syncs Stories and Subtasks as features progress through the board | `integration` | Read+Write | [spec-kit-maqa-jira](https://github.com/GenieRobot/spec-kit-maqa-jira) |
224224
| MAQA Linear Integration | Linear integration for MAQA — syncs issues and sub-issues across workflow states as features progress | `integration` | Read+Write | [spec-kit-maqa-linear](https://github.com/GenieRobot/spec-kit-maqa-linear) |
225225
| MAQA Trello Integration | Trello board integration for MAQA — populates board from specs, moves cards, real-time checklist ticking | `integration` | Read+Write | [spec-kit-maqa-trello](https://github.com/GenieRobot/spec-kit-maqa-trello) |
226+
| Memory Loader | Loads .specify/memory/ files before lifecycle commands so LLM agents have project governance context | `docs` | Read-only | [spec-kit-memory-loader](https://github.com/KevinBrown5280/spec-kit-memory-loader) |
226227
| MemoryLint | Agent memory governance tool: Automatically audits and fixes boundary conflicts between AGENTS.md and the constitution. | `process` | Read+Write | [memorylint](https://github.com/RbBtSn0w/spec-kit-extensions/tree/main/memorylint) |
227228
| Onboard | Contextual onboarding and progressive growth for developers new to spec-kit projects. Explains specs, maps dependencies, validates understanding, and guides the next step | `process` | Read+Write | [spec-kit-onboard](https://github.com/dmux/spec-kit-onboard) |
228229
| Optimize | Audit and optimize AI governance for context efficiency — token budgets, rule health, interpretability, compression, coherence, and echo detection | `process` | Read+Write | [spec-kit-optimize](https://github.com/sakitA/spec-kit-optimize) |
@@ -239,10 +240,12 @@ The following community-contributed extensions are available in [`catalog.commun
239240
| Retro Extension | Sprint retrospective analysis with metrics, spec accuracy assessment, and improvement suggestions | `process` | Read+Write | [spec-kit-retro](https://github.com/arunt14/spec-kit-retro) |
240241
| Retrospective Extension | Post-implementation retrospective with spec adherence scoring, drift analysis, and human-gated spec updates | `docs` | Read+Write | [spec-kit-retrospective](https://github.com/emi-dm/spec-kit-retrospective) |
241242
| Review Extension | Post-implementation comprehensive code review with specialized agents for code quality, comments, tests, error handling, type design, and simplification | `code` | Read-only | [spec-kit-review](https://github.com/ismaelJimenez/spec-kit-review) |
243+
| Ripple | Detect side effects that tests can't catch after implementation — delta-anchored analysis across 9 domain-agnostic categories | `code` | Read+Write | [spec-kit-ripple](https://github.com/chordpli/spec-kit-ripple) |
242244
| SDD Utilities | Resume interrupted workflows, validate project health, and verify spec-to-task traceability | `process` | Read+Write | [speckit-utils](https://github.com/mvanhorn/speckit-utils) |
243245
| Security Review | Comprehensive security audit of codebases using AI-powered DevSecOps analysis | `code` | Read-only | [spec-kit-security-review](https://github.com/DyanGalih/spec-kit-security-review) |
244246
| SFSpeckit | Enterprise Salesforce SDLC with 18 commands for the full SDD lifecycle. | `process` | Read+Write | [spec-kit-sf](https://github.com/ysumanth06/spec-kit-sf) |
245247
| Ship Release Extension | Automates release pipeline: pre-flight checks, branch sync, changelog generation, CI verification, and PR creation | `process` | Read+Write | [spec-kit-ship](https://github.com/arunt14/spec-kit-ship) |
248+
| Spec Reference Loader | Reads the ## References section from the feature spec and loads only the listed docs into context | `docs` | Read-only | [spec-kit-spec-reference-loader](https://github.com/KevinBrown5280/spec-kit-spec-reference-loader) |
246249
| Spec Critique Extension | Dual-lens critical review of spec and plan from product strategy and engineering risk perspectives | `docs` | Read-only | [spec-kit-critique](https://github.com/arunt14/spec-kit-critique) |
247250
| Spec Diagram | Auto-generate Mermaid diagrams of SDD workflow state, feature progress, and task dependencies | `visibility` | Read-only | [spec-kit-diagram-](https://github.com/Quratulain-bilal/spec-kit-diagram-) |
248251
| Spec Refine | Update specs in-place, propagate changes to plan and tasks, and diff impact across artifacts | `process` | Read+Write | [spec-kit-refine](https://github.com/Quratulain-bilal/spec-kit-refine) |
@@ -257,6 +260,7 @@ The following community-contributed extensions are available in [`catalog.commun
257260
| V-Model Extension Pack | Enforces V-Model paired generation of development specs and test specs with full traceability | `docs` | Read+Write | [spec-kit-v-model](https://github.com/leocamello/spec-kit-v-model) |
258261
| Verify Extension | Post-implementation quality gate that validates implemented code against specification artifacts | `code` | Read-only | [spec-kit-verify](https://github.com/ismaelJimenez/spec-kit-verify) |
259262
| Verify Tasks Extension | Detect phantom completions: tasks marked [X] in tasks.md with no real implementation | `code` | Read-only | [spec-kit-verify-tasks](https://github.com/datastone-inc/spec-kit-verify-tasks) |
263+
| Version Guard | Verify tech stack versions against live npm registries before planning and implementation | `process` | Read-only | [spec-kit-version-guard](https://github.com/KevinBrown5280/spec-kit-version-guard) |
260264
| What-if Analysis | Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them | `visibility` | Read-only | [spec-kit-whatif](https://github.com/DevAbdullah90/spec-kit-whatif) |
261265
| Worktree Isolation | Spawn isolated git worktrees for parallel feature development without checkout switching | `process` | Read+Write | [spec-kit-worktree](https://github.com/Quratulain-bilal/spec-kit-worktree) |
262266
| Worktrees | Default-on worktree isolation for parallel agents — sibling or nested layout | `process` | Read+Write | [spec-kit-worktree-parallel](https://github.com/dango85/spec-kit-worktree-parallel) |
@@ -275,7 +279,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
275279
| AIDE In-Place Migration | Adapts the AIDE extension workflow for in-place technology migrations (X → Y pattern) — adds migration objectives, verification gates, knowledge documents, and behavioral equivalence criteria | 2 templates, 8 commands | AIDE extension | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
276280
| Canon Core | Adapts original Spec Kit workflow to work together with Canon extension | 2 templates, 8 commands || [spec-kit-canon](https://github.com/maximiliamus/spec-kit-canon) |
277281
| Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command || [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
278-
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations): features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose with 5 prose profiles. Supports interactive elements like brainstorming, interview, roleplay. | 21 templates, 26 commands || [spec-kit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
282+
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose. Supports interactive elements like brainstorming, interview, roleplay and extras like statistics, cover builder and bio command. Export with templates for KDP, D2D etc. | 22 templates, 27 commands || [spec-kit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
279283
| Multi-Repo Branching | Coordinates feature branch creation across multiple git repositories (independent repos and submodules) during plan and tasks phases | 2 commands || [spec-kit-preset-multi-repo-branching](https://github.com/sakitA/spec-kit-preset-multi-repo-branching) |
280284
| Pirate Speak (Full) | Transforms all Spec Kit output into pirate speak — specs become "Voyage Manifests", plans become "Battle Plans", tasks become "Crew Assignments" | 6 templates, 9 commands || [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
281285
| Table of Contents Navigation | Adds a navigable Table of Contents to generated spec.md, plan.md, and tasks.md documents | 3 templates, 3 commands || [spec-kit-preset-toc-navigation](https://github.com/Quratulain-bilal/spec-kit-preset-toc-navigation) |

extensions/catalog.community.json

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,6 +1167,37 @@
11671167
"created_at": "2026-03-26T00:00:00Z",
11681168
"updated_at": "2026-03-26T00:00:00Z"
11691169
},
1170+
"memory-loader": {
1171+
"name": "Memory Loader",
1172+
"id": "memory-loader",
1173+
"description": "Loads .specify/memory/ files before spec-kit lifecycle commands so LLM agents have project governance context",
1174+
"author": "KevinBrown5280",
1175+
"version": "1.0.0",
1176+
"download_url": "https://github.com/KevinBrown5280/spec-kit-memory-loader/archive/refs/tags/v1.0.0.zip",
1177+
"repository": "https://github.com/KevinBrown5280/spec-kit-memory-loader",
1178+
"homepage": "https://github.com/KevinBrown5280/spec-kit-memory-loader",
1179+
"documentation": "https://github.com/KevinBrown5280/spec-kit-memory-loader/blob/main/README.md",
1180+
"changelog": "https://github.com/KevinBrown5280/spec-kit-memory-loader/blob/main/CHANGELOG.md",
1181+
"license": "MIT",
1182+
"requires": {
1183+
"speckit_version": ">=0.6.0"
1184+
},
1185+
"provides": {
1186+
"commands": 1,
1187+
"hooks": 7
1188+
},
1189+
"tags": [
1190+
"context",
1191+
"memory",
1192+
"governance",
1193+
"hooks"
1194+
],
1195+
"verified": false,
1196+
"downloads": 0,
1197+
"stars": 0,
1198+
"created_at": "2026-04-20T00:00:00Z",
1199+
"updated_at": "2026-04-20T00:00:00Z"
1200+
},
11701201
"memorylint": {
11711202
"name": "MemoryLint",
11721203
"id": "memorylint",
@@ -1657,6 +1688,38 @@
16571688
"created_at": "2026-03-06T00:00:00Z",
16581689
"updated_at": "2026-04-09T00:00:00Z"
16591690
},
1691+
"ripple": {
1692+
"name": "Ripple",
1693+
"id": "ripple",
1694+
"description": "Detect side effects that tests can't catch after implementation — delta-anchored analysis across 9 domain-agnostic categories with fix-induced side effect detection",
1695+
"author": "chordpli",
1696+
"version": "1.0.0",
1697+
"download_url": "https://github.com/chordpli/spec-kit-ripple/archive/refs/tags/v1.0.0.zip",
1698+
"repository": "https://github.com/chordpli/spec-kit-ripple",
1699+
"homepage": "https://github.com/chordpli/spec-kit-ripple",
1700+
"documentation": "https://github.com/chordpli/spec-kit-ripple/blob/main/README.md",
1701+
"changelog": "https://github.com/chordpli/spec-kit-ripple/blob/main/CHANGELOG.md",
1702+
"license": "MIT",
1703+
"requires": {
1704+
"speckit_version": ">=0.2.0"
1705+
},
1706+
"provides": {
1707+
"commands": 3,
1708+
"hooks": 1
1709+
},
1710+
"tags": [
1711+
"side-effects",
1712+
"post-implementation",
1713+
"analysis",
1714+
"quality",
1715+
"risk-detection"
1716+
],
1717+
"verified": false,
1718+
"downloads": 0,
1719+
"stars": 0,
1720+
"created_at": "2026-04-20T00:00:00Z",
1721+
"updated_at": "2026-04-20T00:00:00Z"
1722+
},
16601723
"scope": {
16611724
"name": "Spec Scope",
16621725
"id": "scope",
@@ -1796,6 +1859,37 @@
17961859
"created_at": "2026-04-01T00:00:00Z",
17971860
"updated_at": "2026-04-01T00:00:00Z"
17981861
},
1862+
"spec-reference-loader": {
1863+
"name": "Spec Reference Loader",
1864+
"id": "spec-reference-loader",
1865+
"description": "Reads the ## References section from the current feature spec and loads the listed files into context",
1866+
"author": "KevinBrown5280",
1867+
"version": "1.0.0",
1868+
"download_url": "https://github.com/KevinBrown5280/spec-kit-spec-reference-loader/archive/refs/tags/v1.0.0.zip",
1869+
"repository": "https://github.com/KevinBrown5280/spec-kit-spec-reference-loader",
1870+
"homepage": "https://github.com/KevinBrown5280/spec-kit-spec-reference-loader",
1871+
"documentation": "https://github.com/KevinBrown5280/spec-kit-spec-reference-loader/blob/main/README.md",
1872+
"changelog": "https://github.com/KevinBrown5280/spec-kit-spec-reference-loader/blob/main/CHANGELOG.md",
1873+
"license": "MIT",
1874+
"requires": {
1875+
"speckit_version": ">=0.6.0"
1876+
},
1877+
"provides": {
1878+
"commands": 1,
1879+
"hooks": 6
1880+
},
1881+
"tags": [
1882+
"context",
1883+
"references",
1884+
"docs",
1885+
"hooks"
1886+
],
1887+
"verified": false,
1888+
"downloads": 0,
1889+
"stars": 0,
1890+
"created_at": "2026-04-20T00:00:00Z",
1891+
"updated_at": "2026-04-20T00:00:00Z"
1892+
},
17991893
"spec-validate": {
18001894
"name": "Spec Validate",
18011895
"id": "spec-validate",
@@ -2187,6 +2281,37 @@
21872281
"created_at": "2026-03-16T00:00:00Z",
21882282
"updated_at": "2026-03-16T00:00:00Z"
21892283
},
2284+
"version-guard": {
2285+
"name": "Version Guard",
2286+
"id": "version-guard",
2287+
"description": "Verify tech stack versions against live registries before planning and implementation",
2288+
"author": "KevinBrown5280",
2289+
"version": "1.0.0",
2290+
"download_url": "https://github.com/KevinBrown5280/spec-kit-version-guard/archive/refs/tags/v1.0.0.zip",
2291+
"repository": "https://github.com/KevinBrown5280/spec-kit-version-guard",
2292+
"homepage": "https://github.com/KevinBrown5280/spec-kit-version-guard",
2293+
"documentation": "https://github.com/KevinBrown5280/spec-kit-version-guard/blob/main/README.md",
2294+
"changelog": "https://github.com/KevinBrown5280/spec-kit-version-guard/blob/main/CHANGELOG.md",
2295+
"license": "MIT",
2296+
"requires": {
2297+
"speckit_version": ">=0.2.0"
2298+
},
2299+
"provides": {
2300+
"commands": 1,
2301+
"hooks": 2
2302+
},
2303+
"tags": [
2304+
"versioning",
2305+
"npm",
2306+
"validation",
2307+
"hooks"
2308+
],
2309+
"verified": false,
2310+
"downloads": 0,
2311+
"stars": 0,
2312+
"created_at": "2026-04-20T00:00:00Z",
2313+
"updated_at": "2026-04-20T00:00:00Z"
2314+
},
21902315
"whatif": {
21912316
"name": "What-if Analysis",
21922317
"id": "whatif",

presets/catalog.community.json

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,20 +108,21 @@
108108
"fiction-book-writing": {
109109
"name": "Fiction Book Writing",
110110
"id": "fiction-book-writing",
111-
"version": "1.5.0",
112-
"description": "Spec-Driven Development for novel and long-form fiction. Replaces software engineering terminology with storytelling craft: specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports 8 POV modes, all major plot structure frameworks, 5 humanized-AI prose profiles, and exports to DOCX/EPUB/LaTeX via pandoc.",
111+
"version": "1.6.0",
112+
"description": "Spec-Driven Development for novel and long-form fiction. 27 AI commands from idea to submission: story bible governance, 9 POV modes, all major plot structure frameworks, scene-by-scene drafting with quality gates, audiobook pipeline (SSML/ElevenLabs), cover design, sensitivity review, pacing and prose statistics, and pandoc-based export to DOCX/EPUB/LaTeX. Two style modes: author voice sample extraction or humanized-AI prose with 5 craft profiles. 12 languages supported.",
113113
"author": "Andreas Daumann",
114114
"repository": "https://github.com/adaumann/speckit-preset-fiction-book-writing",
115-
"download_url": "https://github.com/adaumann/speckit-preset-fiction-book-writing/archive/refs/tags/v1.5.0.zip",
115+
"download_url": "https://github.com/adaumann/speckit-preset-fiction-book-writing/archive/refs/tags/v1.6.0.zip",
116116
"homepage": "https://github.com/adaumann/speckit-preset-fiction-book-writing",
117117
"documentation": "https://github.com/adaumann/speckit-preset-fiction-book-writing/blob/main/fiction-book-writing/README.md",
118118
"license": "MIT",
119119
"requires": {
120120
"speckit_version": ">=0.5.0"
121121
},
122122
"provides": {
123-
"templates": 21,
124-
"commands": 26
123+
"templates": 22,
124+
"commands": 27,
125+
"scripts": 1
125126
},
126127
"tags": [
127128
"writing",
@@ -135,11 +136,12 @@
135136
"book",
136137
"brainstorming",
137138
"roleplay",
138-
"audiobook"
139+
"audiobook",
140+
"language-support"
139141
],
140142
"created_at": "2026-04-09T08:00:00Z",
141-
"updated_at": "2026-04-16T08:00:00Z"
142-
},
143+
"updated_at": "2026-04-19T08:00:00Z"
144+
},
143145
"multi-repo-branching": {
144146
"name": "Multi-Repo Branching",
145147
"id": "multi-repo-branching",
Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
"""Antigravity (agy) integration — skills-based agent.
22
3-
Antigravity uses ``.agent/skills/speckit-<name>/SKILL.md`` layout.
4-
Explicit command support was deprecated in version 1.20.5;
5-
``--skills`` defaults to ``True``.
3+
Antigravity uses ``.agents/skills/speckit-<name>/SKILL.md`` layout (enforced since v1.20.5).
64
"""
75

86
from __future__ import annotations
97

10-
from ..base import IntegrationOption, SkillsIntegration
8+
from pathlib import Path
9+
from typing import TYPE_CHECKING, Any
10+
11+
from ..base import SkillsIntegration
12+
13+
if TYPE_CHECKING:
14+
from ..manifest import IntegrationManifest
15+
1116

1217

1318
class AgyIntegration(SkillsIntegration):
@@ -16,26 +21,32 @@ class AgyIntegration(SkillsIntegration):
1621
key = "agy"
1722
config = {
1823
"name": "Antigravity",
19-
"folder": ".agent/",
24+
"folder": ".agents/",
2025
"commands_subdir": "skills",
2126
"install_url": None,
2227
"requires_cli": False,
2328
}
2429
registrar_config = {
25-
"dir": ".agent/skills",
30+
"dir": ".agents/skills",
2631
"format": "markdown",
2732
"args": "$ARGUMENTS",
2833
"extension": "/SKILL.md",
2934
}
3035
context_file = "AGENTS.md"
3136

32-
@classmethod
33-
def options(cls) -> list[IntegrationOption]:
34-
return [
35-
IntegrationOption(
36-
"--skills",
37-
is_flag=True,
38-
default=True,
39-
help="Install as agent skills (default for Antigravity since v1.20.5)",
40-
),
41-
]
37+
def setup(
38+
self,
39+
project_root: Path,
40+
manifest: IntegrationManifest,
41+
parsed_options: dict[str, Any] | None = None,
42+
**opts: Any,
43+
) -> list[Path]:
44+
import click
45+
46+
click.secho(
47+
"Warning: The .agents/ layout requires Antigravity v1.20.5 or newer. "
48+
"Please ensure your agy installation is up to date.",
49+
fg="yellow",
50+
err=True,
51+
)
52+
return super().setup(project_root, manifest, parsed_options=parsed_options, **opts)

src/specify_cli/integrations/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ def upsert_context_section(
482482
)
483483

484484
if ctx_path.exists():
485-
content = ctx_path.read_text(encoding="utf-8")
485+
content = ctx_path.read_text(encoding="utf-8-sig")
486486
start_idx = content.find(self.CONTEXT_MARKER_START)
487487
end_idx = content.find(
488488
self.CONTEXT_MARKER_END,
@@ -547,7 +547,7 @@ def remove_context_section(self, project_root: Path) -> bool:
547547
if not ctx_path.exists():
548548
return False
549549

550-
content = ctx_path.read_text(encoding="utf-8")
550+
content = ctx_path.read_text(encoding="utf-8-sig")
551551
start_idx = content.find(self.CONTEXT_MARKER_START)
552552
end_idx = content.find(
553553
self.CONTEXT_MARKER_END,

0 commit comments

Comments
 (0)