diff --git a/README.md b/README.md index ff909d7d2..1b866380a 100644 --- a/README.md +++ b/README.md @@ -168,6 +168,7 @@ The following community-contributed extensions are available in [`catalog.commun | Extension | Purpose | Category | Effect | URL | |-----------|---------|----------|--------|-----| +| 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) | | Archive Extension | Archive merged features into main project memory. | `docs` | Read+Write | [spec-kit-archive](https://github.com/stn1slv/spec-kit-archive) | | 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) | | 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) | @@ -175,10 +176,12 @@ The following community-contributed extensions are available in [`catalog.commun | 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) | | 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) | | 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) | +| Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) | | 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) | | 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) | | 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) | | 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) | +| Presetify | Create and validate presets and preset catalogs | `process` | Read+Write | [presetify](https://github.com/mnriem/spec-kit-extensions/tree/main/presetify) | | 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) | | 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) | | Ralph Loop | Autonomous implementation loop using AI agent CLI | `code` | Read+Write | [spec-kit-ralph](https://github.com/Rubiss/spec-kit-ralph) | diff --git a/extensions/catalog.community.json b/extensions/catalog.community.json index ce5b867f9..846254c48 100644 --- a/extensions/catalog.community.json +++ b/extensions/catalog.community.json @@ -3,6 +3,39 @@ "updated_at": "2026-03-19T12:08:20Z", "catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json", "extensions": { + "aide": { + "name": "AI-Driven Engineering (AIDE)", + "id": "aide", + "description": "A structured 7-step workflow for building new projects from scratch with AI assistants — from vision through implementation.", + "author": "mnriem", + "version": "1.0.0", + "download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/aide-v1.0.0/aide.zip", + "repository": "https://github.com/mnriem/spec-kit-extensions", + "homepage": "https://github.com/mnriem/spec-kit-extensions", + "documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/aide/README.md", + "changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/aide/CHANGELOG.md", + "license": "MIT", + "requires": { + "speckit_version": ">=0.2.0" + }, + "provides": { + "commands": 7, + "hooks": 0 + }, + "tags": [ + "workflow", + "project-management", + "ai-driven", + "new-project", + "planning", + "experimental" + ], + "verified": false, + "downloads": 0, + "stars": 0, + "created_at": "2026-03-18T00:00:00Z", + "updated_at": "2026-03-18T00:00:00Z" + }, "archive": { "name": "Archive Extension", "id": "archive", @@ -281,6 +314,37 @@ "created_at": "2026-03-13T00:00:00Z", "updated_at": "2026-03-13T00:00:00Z" }, + "extensify": { + "name": "Extensify", + "id": "extensify", + "description": "Create and validate extensions and extension catalogs.", + "author": "mnriem", + "version": "1.0.0", + "download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/extensify-v1.0.0/extensify.zip", + "repository": "https://github.com/mnriem/spec-kit-extensions", + "homepage": "https://github.com/mnriem/spec-kit-extensions", + "documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/extensify/README.md", + "changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/extensify/CHANGELOG.md", + "license": "MIT", + "requires": { + "speckit_version": ">=0.2.0" + }, + "provides": { + "commands": 4, + "hooks": 0 + }, + "tags": [ + "extensions", + "workflow", + "validation", + "experimental" + ], + "verified": false, + "downloads": 0, + "stars": 0, + "created_at": "2026-03-18T00:00:00Z", + "updated_at": "2026-03-18T00:00:00Z" + }, "fleet": { "name": "Fleet Orchestrator", "id": "fleet", @@ -373,6 +437,37 @@ "created_at": "2026-03-05T00:00:00Z", "updated_at": "2026-03-05T00:00:00Z" }, + "presetify": { + "name": "Presetify", + "id": "presetify", + "description": "Create and validate presets and preset catalogs.", + "author": "mnriem", + "version": "1.0.0", + "download_url": "https://github.com/mnriem/spec-kit-extensions/releases/download/presetify-v1.0.0/presetify.zip", + "repository": "https://github.com/mnriem/spec-kit-extensions", + "homepage": "https://github.com/mnriem/spec-kit-extensions", + "documentation": "https://github.com/mnriem/spec-kit-extensions/blob/main/presetify/README.md", + "changelog": "https://github.com/mnriem/spec-kit-extensions/blob/main/presetify/CHANGELOG.md", + "license": "MIT", + "requires": { + "speckit_version": ">=0.2.0" + }, + "provides": { + "commands": 4, + "hooks": 0 + }, + "tags": [ + "presets", + "workflow", + "templates", + "experimental" + ], + "verified": false, + "downloads": 0, + "stars": 0, + "created_at": "2026-03-18T00:00:00Z", + "updated_at": "2026-03-18T00:00:00Z" + }, "ralph": { "name": "Ralph Loop", "id": "ralph", diff --git a/tests/test_presets.py b/tests/test_presets.py index 2716b73dc..50f650216 100644 --- a/tests/test_presets.py +++ b/tests/test_presets.py @@ -1172,6 +1172,8 @@ class TestPresetCatalog: def test_search_with_cached_data(self, project_dir): """Test search with cached catalog data.""" + from unittest.mock import patch + catalog = PresetCatalog(project_dir) catalog.cache_dir.mkdir(parents=True, exist_ok=True) @@ -1200,23 +1202,26 @@ class TestPresetCatalog: "cached_at": datetime.now(timezone.utc).isoformat(), })) - # Search by query - results = catalog.search(query="agile") - assert len(results) == 1 - assert results[0]["id"] == "safe-agile" + # Isolate from community catalog so results are deterministic + default_only = [PresetCatalogEntry(url=catalog.DEFAULT_CATALOG_URL, name="default", priority=1, install_allowed=True)] + with patch.object(catalog, "get_active_catalogs", return_value=default_only): + # Search by query + results = catalog.search(query="agile") + assert len(results) == 1 + assert results[0]["id"] == "safe-agile" - # Search by tag - results = catalog.search(tag="hipaa") - assert len(results) == 1 - assert results[0]["id"] == "healthcare" + # Search by tag + results = catalog.search(tag="hipaa") + assert len(results) == 1 + assert results[0]["id"] == "healthcare" - # Search by author - results = catalog.search(author="agile-community") - assert len(results) == 1 + # Search by author + results = catalog.search(author="agile-community") + assert len(results) == 1 - # Search all - results = catalog.search() - assert len(results) == 2 + # Search all + results = catalog.search() + assert len(results) == 2 def test_get_pack_info(self, project_dir): """Test getting info for a specific pack."""