Skip to content

Integrate extension system from upstream#16

Merged
brianluby merged 13 commits intomainfrom
integrate-extension-system
Mar 5, 2026
Merged

Integrate extension system from upstream#16
brianluby merged 13 commits intomainfrom
integrate-extension-system

Conversation

@brianluby
Copy link
Copy Markdown
Owner

Summary

  • Cherry-picks the modular extension system from github/spec-kit PR #1551 plus all 10 follow-up commits through upstream/main
  • Adds plugin architecture: manifest validation, CLI commands (specify extension add/remove/list/search/update/enable/disable), catalog system, hook executor, multi-agent command registration, and layered config
  • Includes extension docs (RFC, API reference, user/dev/publishing guides), template for creating extensions, community catalog entries, and test suites

Commits integrated (11 total)

Upstream SHA Description
f14a47e Add modular extension system (github#1551)
12405c0 refactor: remove OpenAPI/GraphQL bias from templates (github#1652)
aeed11f Add V-Model Extension Pack to catalog (github#1640)
07077d0 Update V-Model Extension Pack to v0.2.0 (github#1656)
68d1d3a feat: add GitHub issue templates (github#1655)
6f523ed Fix github#1658: Add commands_subdir field (github#1660)
cee4f26 Update V-Model Extension Pack to v0.3.0 (github#1661)
c1034f1 docs: Fix doc missing step (github#1496)
6cc6102 Update V-Model Extension Pack to v0.4.0 (github#1665)
3040d33 Fix parameter ordering issues in CLI (github#1669)
f444ccb Add Cleanup Extension to catalog (github#1617)

Conflict resolutions

  • .gitignore: Kept local entries + upstream extension entries
  • CHANGELOG.md: Merged both local (0.0.23 worktree support) and upstream (0.1.0+ extension system) entries
  • pyproject.toml: Kept local force-include config + upstream test config and deps
  • templates/commands/tasks.md: Kept local PRD/AR/SEC discovery logic, accepted upstream interface contracts terminology
  • src/specify_cli/init.py: Accepted upstream new agents, ensure_constitution_from_template(), install_ai_skills(), and extension CLI commands

New dependencies

  • pyyaml>=6.0
  • packaging>=23.0

Test plan

  • Python syntax validation passes for extensions.py and init.py
  • No conflict markers remain in any tracked file
  • Run pytest tests/ to verify extension and AI skills test suites
  • Run python3 -m src.specify_cli --help to verify CLI loads with extension subcommand
  • Test specify extension list in a spec-kit project

🤖 Generated with Claude Code

brianluby and others added 11 commits February 23, 2026 18:30
Cherry-pick of github/spec-kit@f14a47e with conflict resolution.
Adds modular extension architecture: manifest validation, CLI commands
(add/remove/list/search/update/enable/disable), catalog system,
hook executor, multi-agent command registration, and config layers.

Conflicts resolved:
- .gitignore: kept local entries + upstream extension entries
- CHANGELOG.md: kept both local 0.0.23 and upstream 0.1.0 entries
- pyproject.toml: kept local force-include + upstream test config
Cherry-pick of upstream 12405c0. Kept local PRD/AR/SEC discovery
logic in tasks.md while accepting upstream's interface contracts
terminology change.
* Add V-Model Extension Pack to catalog

Second community extension: V-Model paired dev-spec and test-spec
generation with regulatory-grade traceability.

- 3 commands: requirements, acceptance, trace
- Deterministic coverage validation (regex-based, not AI)
- Targets: IEC 62304, ISO 26262, DO-178C, FDA 21 CFR Part 820
- Repository: https://github.com/leocamello/spec-kit-v-model
- Release: v0.1.0

* Fix catalog entry: provides as number, add timestamps and statistics

Address review feedback:
- provides.commands: array → number (3), add hooks (1)
- Add created_at and updated_at timestamps
- Add statistics block (downloads: 0, stars: 0)

* Address review: use catalog.community.json and add extensions README

Per maintainer feedback:
- Revert catalog.json to its original empty state (empty by design)
- Rename catalog.example.json → catalog.community.json
- Replace example entries with real V-Model Extension Pack entry
- Add extensions/README.md with community extensions table
…1656)

- Version: 0.1.0 → 0.2.0
- Download URL updated to v0.2.0 tag
- Commands: 3 → 5 (added system-design, system-test)
* feat: add issue templates for agent requests, bug reports, feature requests, extension submissions, and configuration

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/agent_request.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/config.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/bug_report.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/feature_request.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ent directory structures (github#1660)

- Added commands_subdir field to AGENT_CONFIG for all agents
- Updated install_ai_skills() to use commands_subdir instead of hardcoded 'commands'
- Fixed --ai-skills flag for copilot, opencode, windsurf, codex, kilocode, q, and agy
- Bumped version to 0.1.5
- Updated AGENTS.md documentation with new field

Affected agents now correctly locate their command templates:
- copilot: .github/agents/
- opencode: .opencode/command/ (singular)
- windsurf: .windsurf/workflows/
- codex: .codex/prompts/
- kilocode: .kilocode/workflows/
- q: .amazonq/prompts/
- agy: .agent/workflows/

All 51 tests pass.
- Version: 0.2.0 → 0.3.0
- Commands: 5 → 7 (architecture-design, integration-test)
- Download URL updated to v0.3.0 tag
* docs: Fix doc missing step

* docs: Update steps for generating technical plan and defining tasks
- Version: 0.2.0 → 0.4.0
- Commands: 5 → 9 (new: architecture-design, integration-test, module-design, unit-test)
- Download URL: updated to v0.4.0 tag
* chore: bump version to v0.0.6 [skip ci]

* Fix parameter ordering issues in CLI (github#1641)

- Add validation to detect when option flags are consumed as values
- Provide clear error messages with helpful hints and examples
- Add 5 comprehensive tests to prevent regressions
- Update CODEOWNERS to @mnriem
- Bump version to 0.1.6 with changelog entry

Fixes: github#1641

* Fix ruff linting errors: remove f-string prefix from strings without placeholders

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
**Repository**: https://github.com/dsrednicki/spec-kit-cleanup
**Version**: 1.0.0
**License**: MIT
**Author**: @dsrednicki

Adds catalog entry for the Cleanup Extension - a post-implementation
quality gate that fixes small issues (scout rule), creates tasks for
medium issues, and generates analysis for large issues.
Copilot AI review requested due to automatic review settings February 24, 2026 05:19
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Integrates the upstream Spec Kit extension system into this repo, adding a full plugin architecture (manifests, install/remove, catalog/search, hooks, multi-agent command registration) plus supporting docs, templates, and tests.

Changes:

  • Adds extension CLI subcommands and AI-skills generation logic to the main specify_cli entrypoint.
  • Introduces extension catalogs + an extension authoring template and comprehensive extension documentation.
  • Adds pytest-based test suites and pytest/coverage configuration.

Reviewed changes

Copilot reviewed 37 out of 38 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
src/specify_cli/__init__.py Adds agent commands_subdir, AI skills installation, init validation improvements, and specify extension ... subcommands.
src/specify_cli/extensions.py (Referenced by tests/tools) Core extension system implementation (catalog, config layering, install/remove, etc.).
pyproject.toml Bumps version and adds pyyaml/packaging plus pytest/coverage config.
CHANGELOG.md Documents extension system releases and CLI fixes.
AGENTS.md Documents commands_subdir for agents.
tests/test_extensions.py New unit tests for extension manifest/registry/manager/catalog.
tests/test_ai_skills.py New unit tests for AI skills installation and CLI flag validation.
tests/__init__.py Adds tests package marker docstring.
templates/plan-template.md Updates “Project Type” prompt text.
templates/commands/specify.md Generalizes integration-pattern guidance beyond REST-only.
templates/commands/plan.md Updates plan template to “interface contracts” guidance.
templates/commands/tasks.md Updates terminology from endpoints/contracts to interface contracts.
docs/quickstart.md Adds phased implementation tips and inserts explicit /speckit.tasks step.
.gitignore Ignores extension cache/backup/local-config artifacts.
.github/workflows/lint.yml Excludes extensions/**/*.md from markdownlint run.
.github/CODEOWNERS Updates global code owner.
.github/ISSUE_TEMPLATE/config.yml Adds contact links for discussions/docs/dev guide/etc.
.github/ISSUE_TEMPLATE/bug_report.yml Adds bug report issue template.
.github/ISSUE_TEMPLATE/feature_request.yml Adds feature request issue template.
.github/ISSUE_TEMPLATE/agent_request.yml Adds agent support request template.
.github/ISSUE_TEMPLATE/extension_submission.yml Adds extension submission template.
spec-kit.code-workspace Adds VS Code workspace file.
extensions/catalog.json Adds (empty) org catalog placeholder.
extensions/catalog.community.json Adds community catalog entries (cleanup, v-model).
extensions/README.md Adds extensions directory readme.
extensions/EXTENSION-USER-GUIDE.md Adds end-user docs for extensions.
extensions/EXTENSION-API-REFERENCE.md Adds API + schema reference docs.
extensions/EXTENSION-DEVELOPMENT-GUIDE.md Adds extension authoring guide.
extensions/EXTENSION-PUBLISHING-GUIDE.md Adds catalog submission/publishing guide.
extensions/template/README.md Adds extension template readme.
extensions/template/extension.yml Adds extension manifest template.
extensions/template/config-template.yml Adds extension config template.
extensions/template/commands/example.md Adds example extension command template.
extensions/template/CHANGELOG.md Adds template changelog.
extensions/template/LICENSE Adds template license.
extensions/template/EXAMPLE-README.md Adds example readme for extension authors.
extensions/template/.gitignore Adds gitignore for extension template repo.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/specify_cli/__init__.py
Comment thread CHANGELOG.md
Comment thread .github/ISSUE_TEMPLATE/config.yml Outdated
Comment thread extensions/template/config-template.yml Outdated
Comment thread src/specify_cli/__init__.py Outdated
Comment thread src/specify_cli/__init__.py
Comment thread extensions/EXTENSION-USER-GUIDE.md
Comment thread extensions/template/.gitignore
Comment thread extensions/template/commands/example.md
Comment thread src/specify_cli/__init__.py
install_ai_skills() uses yaml.safe_load/yaml.safe_dump but the module
was never imported, causing NameError at runtime.
@brianluby brianluby merged commit 0803905 into main Mar 5, 2026
@brianluby brianluby deleted the integrate-extension-system branch March 5, 2026 00:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: --ai-skills does not generate skill files with --ai copilot.

6 participants