Contributing Integrations
This guide covers built-in integrations, external adapter development, and community catalog submissions.
Start with the integration API reference for the supported adapter contract, rendering hooks, runtime dispatch, and file ownership.
Adding a Built-In Integration
Built-in integrations are maintained by the Spec Kit core team and ship with the CLI.
For checkout setup, see local development. Follow the contributor testing guidance and validation flow, then the integration PR requirements.
Implement the adapter against the public API, add positive and
negative tests, and document agent-specific setup, invocation, and limitations
in docs/integrations/<key>.md. Link that page from the
integration index, not the navigation dropdown, and add discovery
metadata using the catalog schema below.
Built-in source registration and changes to private implementation contracts follow the repository's contributor guidance; they are not required for installing an external adapter.
Use the catalog schema for the built-in entry format.
Developing an External Adapter
Implement and package your adapter using the external adapter contract. The descriptor reference documents package metadata; the catalog schema documents published entries.
For local installation and trust decisions, follow catalog-installed external adapters. See upgrading an integration for update behavior.
Validate Your Adapter
Test your package through the public path: register a local loopback test catalog, install its neutral adapter, start a fresh CLI process, register extension/preset contributions, and exercise command/prompt workflow dispatch with a harmless process double.
Cover the lifecycle guarantees and file ownership requirements, including:
- Invalid metadata/classes, trust denial, unsafe archives, setup errors, and upgrade/uninstall failures.
- Package code kept separate from generated agent files; rollback and cleanup that preserve modified files, unrelated user files, independent workflow progress, and concurrent edits.
- Metadata-only commands without import side effects; forced recovery of damaged packages using local ownership proof, and manual-cleanup warnings when that proof is absent.
- Symlinked write destinations, reserved roots, unsafe legacy paths, and case-insensitive overlap between primary and legacy output paths.
- Concurrent dispatch across projects, including package-relative imports that continue to use the correct adapter.
- For event-capable adapters, event-only extension add/remove and enable/disable in fresh CLI processes, including explicit errors when installed code cannot load.
Submitting to the Community Catalog
External developers can list integrations in integrations/catalog.community.json
for discovery. Catalog maintainers review listing metadata, not adapter
implementations; users must vet the code. A listing does not grant installation
permission.
Prerequisites
- Working external adapter — packaged and validated as described above.
- Public repository — hosted on GitHub or similar.
- Documentation — README with usage instructions.
- License — open source license file.
Prepare your entry using the catalog schema. Metadata must match the packaged descriptor. Publish a pinned archive URL; an archive SHA-256 digest is recommended.
Submission
Fork the spec-kit repository
Add your entry under the
integrationskey inintegrations/catalog.community.json:{ "schema_version": "1.0", "integrations": { "sample-agent": { "id": "sample-agent", "name": "Sample Agent", "version": "1.0.0", "description": "Adapter for Sample Agent", "author": "your-name", "repository": "https://github.com/your-name/speckit-sample-agent", "download_url": "https://github.com/your-name/speckit-sample-agent/releases/download/v1.0.0/sample-agent.zip", "tags": ["cli"] } } }Open a pull request with:
- Your catalog entry
- Link to your integration repository
- Confirmation that
integration.ymlis valid
Version Updates
To update your integration version in the catalog:
- Release a new version of your integration
- Open a PR updating the version, pinned archive URL, and digest (if provided)
- Ensure backward compatibility or document breaking changes