Commit Graph

38 Commits

Author SHA1 Message Date
Michal Bachorik
f14a47ea7d Add modular extension system (#1551)
* Add modular extension system for Spec Kit

Implement a complete extension system that allows third-party developers
to extend Spec Kit functionality through plugins.

## Core Features
- Extension discovery and loading from local and global directories
- YAML-based extension manifest (extension.yml) with metadata and capabilities
- Command extensions: custom slash commands with markdown templates
- Hook system: pre/post hooks for generate, task, and sync operations
- Extension catalog for discovering and installing community extensions
- SPECKIT_CATALOG_URL environment variable for catalog URL override

## Installation Methods
- Catalog install: `specify extension add <name>`
- URL install: `specify extension add <name> --from <url>`
- Dev install: `specify extension add --dev <path>`

## Implementation
- ExtensionManager class for lifecycle management (load, enable, disable)
- Support for extension dependencies and version constraints
- Configuration layering (global → project → extension)
- Hook conditions for conditional execution

## Documentation
- RFC with design rationale and architecture decisions
- API reference for extension developers
- Development guide with examples
- User guide for installing and managing extensions
- Publishing guide for the extension catalog

## Included
- Extension template for bootstrapping new extensions
- Comprehensive test suite
- Example catalog.json structure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update Jira extension to v2.1.0 in catalog

Adds 2-level mode support (Epic → Stories only).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Address PR review feedback

- Fix Zip Slip vulnerability in ZIP extraction with path validation
- Fix keep_config option to actually preserve config files on removal
- Add URL validation for SPECKIT_CATALOG_URL (HTTPS required, localhost exception)
- Add security warning when installing from custom URLs (--from flag)
- Empty catalog.json so organizations can ship their own catalogs
- Fix markdown linter errors (MD040: add language to code blocks)
- Remove redundant import and fix unused variables in tests
- Add comment explaining empty except clause for backwards compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add comprehensive organization catalog customization docs

- Explain why default catalog is empty (org control)
- Document how to create and host custom catalogs
- Add catalog JSON schema reference
- Include use cases: private extensions, curated catalogs, air-gapped environments
- Add examples for combining catalog with direct installation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Fix test assertions for extension system data structures

- Update test_config_backup_on_remove to use new subdirectory structure
  (.backup/test-ext/file.yml instead of .backup/test-ext-file.yml)
- Update test_full_install_and_remove_workflow to handle registered_commands
  being a dict keyed by agent name instead of a flat list

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Address Copilot review feedback

- Fix localhost URL check to use parsed.hostname instead of netloc.startswith()
  This correctly handles URLs with ports like localhost:8080
- Fix YAML indentation error in config-template.yml (line 57)
- Fix double space typo in example.md (line 172)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add catalog.example.json as reference for organizations

The main catalog.json is intentionally empty so organizations can ship
their own curated catalogs. This example file shows the expected schema
and structure for creating organization-specific catalogs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Address remaining Copilot security and logic review feedback

- Fix Zip Slip vulnerability by using relative_to() for safe path validation
- Add HTTPS validation for extension download URLs
- Backup both *-config.yml and *-config.local.yml files on remove
- Normalize boolean values to lowercase for hook condition comparisons
- Show non-default catalog warning only once per instance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Ignoring linter for extensions directory

---------

Co-authored-by: iamaeroplane <michal.bachorik@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Manfred Riem <manfred.riem@microsoft.com>
2026-02-10 14:27:20 -06:00
den (work)
960e4c0a32 Update CHANGELOG.md 2025-11-07 11:58:20 -08:00
den (work)
161a415274 Update agent configuration 2025-11-07 11:41:54 -08:00
den (work)
72cb885eb7 Update CHANGELOG.md 2025-10-21 16:22:40 -07:00
den (work)
a877af5575 Fixes #970 2025-10-21 16:21:15 -07:00
Benjamin Pahl
33a07969c3 feat(ci): add markdownlint-cli2 for consistent markdown formatting
Add automated markdown linting to ensure consistent formatting across
all markdown files in the repository.

Changes:
- Add .markdownlint-cli2.jsonc configuration
- Create .github/workflows/lint.yml for CI/CD integration
- Fix all 908 existing markdown errors across 27 files
- Enforce ATX-style headings and asterisk emphasis
- Set consistent 2-space list indentation

This prevents markdown errors after project initialization and
maintains high documentation quality standards.
2025-10-20 00:49:15 +02:00
den (work)
36ff7e6505 Update files 2025-10-14 11:52:26 -07:00
den (work)
36383b411f Update script logic 2025-10-14 10:55:54 -07:00
den (work)
058ee510a7 Update CHANGELOG.md 2025-10-10 11:35:48 -07:00
den (work)
199c63901f Update CHANGELOG.md 2025-10-10 11:04:25 -07:00
den (work)
07d506feb5 Update changelog 2025-10-10 10:53:21 -07:00
den (work)
2ab6e6590f Update CHANGELOG.md 2025-10-06 22:17:27 -07:00
den (work)
cde400f466 Package up VS Code settings for Copilot 2025-10-06 22:07:39 -07:00
den (work)
337e192abd Update CLI changes 2025-10-06 21:20:09 -07:00
den (work)
5499d157ab Update prompt prefix 2025-10-03 21:42:25 -07:00
den (work)
265534c5ad Update logs 2025-10-03 17:18:01 -07:00
Bruno Borges
68eba52a40 feat: support 'specify init .' for current directory initialization
Adds '.' as shorthand equivalent to --here flag while maintaining
full backward compatibility. Updates documentation and bumps to v0.0.18.
2025-09-24 22:41:50 -07:00
Den Delimarsky 🌺
c7b61f4bfd Update with extra commands 2025-09-22 19:35:45 -07:00
den (work)
9319f0425e Update with --force flag 2025-09-22 14:45:35 -07:00
Den Delimarsky 🌺
9348c45f9e Update with Roo Code support 2025-09-21 19:56:17 -07:00
Den Delimarsky 🌺
14ac43ba41 Update error messages 2025-09-21 13:12:49 -07:00
Den Delimarsky 🌺
ecf1757672 Cleanup the check command 2025-09-21 12:53:35 -07:00
Den Delimarsky 🌺
ceba130e52 Add support for Auggie 2025-09-21 12:48:58 -07:00
Den Delimarsky 🌺
dceb903804 Updates with Kilo Code support 2025-09-21 12:32:16 -07:00
Den Delimarsky 🌺
2d89075106 Update CHANGELOG.md 2025-09-21 01:28:59 -07:00
Den Delimarsky 🌺
a810b1bd1a Update CHANGELOG.md 2025-09-21 01:28:31 -07:00
Den Delimarsky 🌺
5243137f25 Update changelog 2025-09-21 01:28:23 -07:00
Den Delimarsky 🌺
6a3ff650f1 Remove Codex-specific logic in the initialization script 2025-09-20 09:09:24 -07:00
Den Delimarsky
8784f39755 Merge branch 'main' into feat/add-codex-support 2025-09-20 08:54:00 -07:00
Den Delimarsky 🌺
fbacd0b0df Update version rev 2025-09-20 08:49:44 -07:00
honjo-hiroaki-gtt
537332725b Resolve merge conflicts integrating Codexsupport with upstream Windsurf updates 2025-09-20 23:42:36 +09:00
Den Delimarsky 🌺
8c3e9db3bf Quick UI tweak 2025-09-19 18:24:29 -07:00
Den Delimarsky 🌺
d1d5c82a8e Update package release 2025-09-19 18:07:18 -07:00
Den Delimarsky 🌺
32c933c960 Update with support for /implement 2025-09-18 23:03:01 -07:00
honjo-hiroaki-gtt
286ad553fd Bump to 0.0.7 and document Codex support 2025-09-18 15:39:30 +09:00
Emre
c5f7582470 feat: Add opencode ai agent 2025-09-17 13:12:56 -07:00
Ahmet Çetinkaya
8b49d5d0fb chore(release): bump version to 0.0.5 and update changelog
Add entry for Qwen Code support as new AI assistant option
2025-09-17 11:39:03 +03:00
Den Delimarsky 🌺
70b3db27db Update Specify definition 2025-09-14 21:11:13 -07:00