Skip to content

Commit 00e5dc1

Browse files
authored
Add AIDE, Extensify, and Presetify to community extensions (#1961)
* Add AIDE, Extensify, and Presetify to community extensions Add three extensions from the mnriem/spec-kit-extensions repository: - AI-Driven Engineering (AIDE): structured 7-step workflow for building new projects from scratch with AI assistants - Extensify: create and validate extensions and extension catalogs - Presetify: create and validate presets and preset catalogs Updates both the README community extensions table and catalog.community.json with entries in alphabetical order. * fix(tests): isolate preset search test from community catalog growth Mock get_active_catalogs to return only the default catalog entry so the test uses only its own cached data and won't break as the community preset catalog grows.
1 parent eeda669 commit 00e5dc1

File tree

3 files changed

+120
-17
lines changed

3 files changed

+120
-17
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,17 +168,20 @@ The following community-contributed extensions are available in [`catalog.commun
168168

169169
| Extension | Purpose | Category | Effect | URL |
170170
|-----------|---------|----------|--------|-----|
171+
| AI-Driven Engineering (AIDE) | A structured 7-step workflow for building new projects from scratch with AI assistants — from vision through implementation | `process` | Read+Write | [aide](https://github.com/mnriem/spec-kit-extensions/tree/main/aide) |
171172
| Archive Extension | Archive merged features into main project memory. | `docs` | Read+Write | [spec-kit-archive](https://github.com/stn1slv/spec-kit-archive) |
172173
| Azure DevOps Integration | Sync user stories and tasks to Azure DevOps work items using OAuth authentication | `integration` | Read+Write | [spec-kit-azure-devops](https://github.com/pragya247/spec-kit-azure-devops) |
173174
| Checkpoint Extension | Commit the changes made during the middle of the implementation, so you don't end up with just one very large commit at the end | `code` | Read+Write | [spec-kit-checkpoint](https://github.com/aaronrsun/spec-kit-checkpoint) |
174175
| 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 | `code` | Read+Write | [spec-kit-cleanup](https://github.com/dsrednicki/spec-kit-cleanup) |
175176
| Cognitive Squad | Multi-agent cognitive system with Triadic Model: understanding, internalization, application — with quality gates, backpropagation verification, and self-healing | `docs` | Read+Write | [cognitive-squad](https://github.com/Testimonial/cognitive-squad) |
176177
| Conduct Extension | Orchestrates spec-kit phases via sub-agent delegation to reduce context pollution. | `process` | Read+Write | [spec-kit-conduct-ext](https://github.com/twbrandon7/spec-kit-conduct-ext) |
177178
| 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. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
179+
| Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) |
178180
| Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | `process` | Read+Write | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) |
179181
| Iterate | Iterate on spec documents with a two-phase define-and-apply workflow — refine specs mid-implementation and go straight back to building | `docs` | Read+Write | [spec-kit-iterate](https://github.com/imviancagrace/spec-kit-iterate) |
180182
| Jira Integration | Create Jira Epics, Stories, and Issues from spec-kit specifications and task breakdowns with configurable hierarchy and custom field support | `integration` | Read+Write | [spec-kit-jira](https://github.com/mbachorik/spec-kit-jira) |
181183
| Learning Extension | Generate educational guides from implementations and enhance clarifications with mentoring context | `docs` | Read+Write | [spec-kit-learn](https://github.com/imviancagrace/spec-kit-learn) |
184+
| Presetify | Create and validate presets and preset catalogs | `process` | Read+Write | [presetify](https://github.com/mnriem/spec-kit-extensions/tree/main/presetify) |
182185
| Project Health Check | Diagnose a Spec Kit project and report health issues across structure, agents, features, scripts, extensions, and git | `visibility` | Read-only | [spec-kit-doctor](https://github.com/KhawarHabibKhan/spec-kit-doctor) |
183186
| Project Status | Show current SDD workflow progress — active feature, artifact status, task completion, workflow phase, and extensions summary | `visibility` | Read-only | [spec-kit-status](https://github.com/KhawarHabibKhan/spec-kit-status) |
184187
| Ralph Loop | Autonomous implementation loop using AI agent CLI | `code` | Read+Write | [spec-kit-ralph](https://github.com/Rubiss/spec-kit-ralph) |

extensions/catalog.community.json

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,39 @@
33
"updated_at": "2026-03-19T12:08:20Z",
44
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
55
"extensions": {
6+
"aide": {
7+
"name": "AI-Driven Engineering (AIDE)",
8+
"id": "aide",
9+
"description": "A structured 7-step workflow for building new projects from scratch with AI assistants — from vision through implementation.",
10+
"author": "mnriem",
11+
"version": "1.0.0",
12+
"download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/aide-v1.0.0/aide.zip",
13+
"repository": "https://github.com/mnriem/spec-kit-extensions",
14+
"homepage": "https://github.com/mnriem/spec-kit-extensions",
15+
"documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/aide/README.md",
16+
"changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/aide/CHANGELOG.md",
17+
"license": "MIT",
18+
"requires": {
19+
"speckit_version": ">=0.2.0"
20+
},
21+
"provides": {
22+
"commands": 7,
23+
"hooks": 0
24+
},
25+
"tags": [
26+
"workflow",
27+
"project-management",
28+
"ai-driven",
29+
"new-project",
30+
"planning",
31+
"experimental"
32+
],
33+
"verified": false,
34+
"downloads": 0,
35+
"stars": 0,
36+
"created_at": "2026-03-18T00:00:00Z",
37+
"updated_at": "2026-03-18T00:00:00Z"
38+
},
639
"archive": {
740
"name": "Archive Extension",
841
"id": "archive",
@@ -281,6 +314,37 @@
281314
"created_at": "2026-03-13T00:00:00Z",
282315
"updated_at": "2026-03-13T00:00:00Z"
283316
},
317+
"extensify": {
318+
"name": "Extensify",
319+
"id": "extensify",
320+
"description": "Create and validate extensions and extension catalogs.",
321+
"author": "mnriem",
322+
"version": "1.0.0",
323+
"download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/extensify-v1.0.0/extensify.zip",
324+
"repository": "https://github.com/mnriem/spec-kit-extensions",
325+
"homepage": "https://github.com/mnriem/spec-kit-extensions",
326+
"documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/extensify/README.md",
327+
"changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/extensify/CHANGELOG.md",
328+
"license": "MIT",
329+
"requires": {
330+
"speckit_version": ">=0.2.0"
331+
},
332+
"provides": {
333+
"commands": 4,
334+
"hooks": 0
335+
},
336+
"tags": [
337+
"extensions",
338+
"workflow",
339+
"validation",
340+
"experimental"
341+
],
342+
"verified": false,
343+
"downloads": 0,
344+
"stars": 0,
345+
"created_at": "2026-03-18T00:00:00Z",
346+
"updated_at": "2026-03-18T00:00:00Z"
347+
},
284348
"fleet": {
285349
"name": "Fleet Orchestrator",
286350
"id": "fleet",
@@ -373,6 +437,37 @@
373437
"created_at": "2026-03-05T00:00:00Z",
374438
"updated_at": "2026-03-05T00:00:00Z"
375439
},
440+
"presetify": {
441+
"name": "Presetify",
442+
"id": "presetify",
443+
"description": "Create and validate presets and preset catalogs.",
444+
"author": "mnriem",
445+
"version": "1.0.0",
446+
"download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/presetify-v1.0.0/presetify.zip",
447+
"repository": "https://github.com/mnriem/spec-kit-extensions",
448+
"homepage": "https://github.com/mnriem/spec-kit-extensions",
449+
"documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/presetify/README.md",
450+
"changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/presetify/CHANGELOG.md",
451+
"license": "MIT",
452+
"requires": {
453+
"speckit_version": ">=0.2.0"
454+
},
455+
"provides": {
456+
"commands": 4,
457+
"hooks": 0
458+
},
459+
"tags": [
460+
"presets",
461+
"workflow",
462+
"templates",
463+
"experimental"
464+
],
465+
"verified": false,
466+
"downloads": 0,
467+
"stars": 0,
468+
"created_at": "2026-03-18T00:00:00Z",
469+
"updated_at": "2026-03-18T00:00:00Z"
470+
},
376471
"ralph": {
377472
"name": "Ralph Loop",
378473
"id": "ralph",

tests/test_presets.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,8 @@ def test_clear_cache(self, project_dir):
11721172

11731173
def test_search_with_cached_data(self, project_dir):
11741174
"""Test search with cached catalog data."""
1175+
from unittest.mock import patch
1176+
11751177
catalog = PresetCatalog(project_dir)
11761178
catalog.cache_dir.mkdir(parents=True, exist_ok=True)
11771179

@@ -1200,23 +1202,26 @@ def test_search_with_cached_data(self, project_dir):
12001202
"cached_at": datetime.now(timezone.utc).isoformat(),
12011203
}))
12021204

1203-
# Search by query
1204-
results = catalog.search(query="agile")
1205-
assert len(results) == 1
1206-
assert results[0]["id"] == "safe-agile"
1207-
1208-
# Search by tag
1209-
results = catalog.search(tag="hipaa")
1210-
assert len(results) == 1
1211-
assert results[0]["id"] == "healthcare"
1212-
1213-
# Search by author
1214-
results = catalog.search(author="agile-community")
1215-
assert len(results) == 1
1216-
1217-
# Search all
1218-
results = catalog.search()
1219-
assert len(results) == 2
1205+
# Isolate from community catalog so results are deterministic
1206+
default_only = [PresetCatalogEntry(url=catalog.DEFAULT_CATALOG_URL, name="default", priority=1, install_allowed=True)]
1207+
with patch.object(catalog, "get_active_catalogs", return_value=default_only):
1208+
# Search by query
1209+
results = catalog.search(query="agile")
1210+
assert len(results) == 1
1211+
assert results[0]["id"] == "safe-agile"
1212+
1213+
# Search by tag
1214+
results = catalog.search(tag="hipaa")
1215+
assert len(results) == 1
1216+
assert results[0]["id"] == "healthcare"
1217+
1218+
# Search by author
1219+
results = catalog.search(author="agile-community")
1220+
assert len(results) == 1
1221+
1222+
# Search all
1223+
results = catalog.search()
1224+
assert len(results) == 2
12201225

12211226
def test_get_pack_info(self, project_dir):
12221227
"""Test getting info for a specific pack."""

0 commit comments

Comments
 (0)