Skip to content

Commit 625ad19

Browse files
authored
Merge branch 'main' into feat/question-render-transformer
2 parents ce253be + 03a9163 commit 625ad19

24 files changed

+1600
-623
lines changed

AGENTS.md

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Each AI agent is a self-contained **integration subpackage** under `src/specify_
1717
```
1818
src/specify_cli/integrations/
1919
├── __init__.py # INTEGRATION_REGISTRY + _register_builtins()
20-
├── base.py # IntegrationBase, MarkdownIntegration, TomlIntegration, SkillsIntegration
20+
├── base.py # IntegrationBase, MarkdownIntegration, TomlIntegration, YamlIntegration, SkillsIntegration
2121
├── manifest.py # IntegrationManifest (file tracking)
2222
├── claude/ # Example: SkillsIntegration subclass
2323
│ ├── __init__.py # ClaudeIntegration class
@@ -48,6 +48,7 @@ The registry is the **single source of truth for Python integration metadata**.
4848
|---|---|
4949
| Standard markdown commands (`.md`) | `MarkdownIntegration` |
5050
| TOML-format commands (`.toml`) | `TomlIntegration` |
51+
| YAML recipe files (`.yaml`) | `YamlIntegration` |
5152
| Skill directories (`speckit-<name>/SKILL.md`) | `SkillsIntegration` |
5253
| Fully custom output (companion files, settings merge, etc.) | `IntegrationBase` directly |
5354

@@ -343,16 +344,82 @@ Command content with {SCRIPT} and {{args}} placeholders.
343344
"""
344345
```
345346

347+
### YAML Format
348+
349+
Used by: Goose
350+
351+
```yaml
352+
version: 1.0.0
353+
title: "Command Title"
354+
description: "Command description"
355+
author:
356+
contact: spec-kit
357+
extensions:
358+
- type: builtin
359+
name: developer
360+
activities:
361+
- Spec-Driven Development
362+
prompt: |
363+
Command content with {SCRIPT} and {{args}} placeholders.
364+
```
365+
346366
## Argument Patterns
347367
348368
Different agents use different argument placeholders. The placeholder used in command files is always taken from `registrar_config["args"]` for each integration — check there first when in doubt:
349369

350370
- **Markdown/prompt-based**: `$ARGUMENTS` (default for most markdown agents)
351371
- **TOML-based**: `{{args}}` (e.g., Gemini)
372+
- **YAML-based**: `{{args}}` (e.g., Goose)
352373
- **Custom**: some agents override the default (e.g., Forge uses `{{parameters}}`)
353374
- **Script placeholders**: `{SCRIPT}` (replaced with actual script path)
354375
- **Agent placeholders**: `__AGENT__` (replaced with agent name)
355376

377+
## Special Processing Requirements
378+
379+
Some agents require custom processing beyond the standard template transformations:
380+
381+
### Copilot Integration
382+
383+
GitHub Copilot has unique requirements:
384+
- Commands use `.agent.md` extension (not `.md`)
385+
- Each command gets a companion `.prompt.md` file in `.github/prompts/`
386+
- Installs `.vscode/settings.json` with prompt file recommendations
387+
- Context file lives at `.github/copilot-instructions.md`
388+
389+
Implementation: Extends `IntegrationBase` with custom `setup()` method that:
390+
1. Processes templates with `process_template()`
391+
2. Generates companion `.prompt.md` files
392+
3. Merges VS Code settings
393+
394+
### Forge Integration
395+
396+
Forge has special frontmatter and argument requirements:
397+
- Uses `{{parameters}}` instead of `$ARGUMENTS`
398+
- Strips `handoffs` frontmatter key (Forge-specific collaboration feature)
399+
- Injects `name` field into frontmatter when missing
400+
401+
Implementation: Extends `MarkdownIntegration` with custom `setup()` method that:
402+
1. Inherits standard template processing from `MarkdownIntegration`
403+
2. Adds extra `$ARGUMENTS` → `{{parameters}}` replacement after template processing
404+
3. Applies Forge-specific transformations via `_apply_forge_transformations()`
405+
4. Strips `handoffs` frontmatter key
406+
5. Injects missing `name` fields
407+
6. Ensures the shared `update-agent-context.*` scripts include a `forge` case that maps context updates to `AGENTS.md` and lists `forge` in their usage/help text
408+
409+
### Goose Integration
410+
411+
Goose is a YAML-format agent using Block's recipe system:
412+
- Uses `.goose/recipes/` directory for YAML recipe files
413+
- Uses `{{args}}` argument placeholder
414+
- Produces YAML with `prompt: |` block scalar for command content
415+
416+
Implementation: Extends `YamlIntegration` (parallel to `TomlIntegration`):
417+
1. Processes templates through the standard placeholder pipeline
418+
2. Extracts title and description from frontmatter
419+
3. Renders output as Goose recipe YAML (version, title, description, author, extensions, activities, prompt)
420+
4. Uses `yaml.safe_dump()` for header fields to ensure proper escaping
421+
5. Context updates map to `AGENTS.md` (shared with opencode/codex/pi/forge)
422+
356423
## Common Pitfalls
357424

358425
1. **Using shorthand keys for CLI-based integrations**: For CLI-based integrations (`requires_cli: True`), the `key` must match the executable name (e.g., `"cursor-agent"` not `"cursor"`). `shutil.which(key)` is used for CLI tool checks — mismatches require special-case mappings. IDE-based integrations (`requires_cli: False`) are not subject to this constraint.

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22

33
<!-- insert new changelog below this comment -->
44

5+
## [0.6.2] - 2026-04-13
6+
7+
### Changed
8+
9+
- feat: Register "What-if Analysis" community extension (#2182)
10+
- feat: add GitHub Issues Integration to community catalog (#2188)
11+
- feat(agents): add Goose AI agent support (#2015)
12+
- Update ralph extension to v1.0.1 in community catalog (#2192)
13+
- fix: skip docs deployment workflow on forks (#2171)
14+
- chore: release 0.6.1, begin 0.6.2.dev0 development (#2162)
15+
516
## [0.6.1] - 2026-04-10
617

718
### Changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ The following community-contributed extensions are available in [`catalog.commun
199199
| Fix Findings | Automated analyze-fix-reanalyze loop that resolves spec findings until clean | `code` | Read+Write | [spec-kit-fix-findings](https://github.com/Quratulain-bilal/spec-kit-fix-findings) |
200200
| FixIt Extension | Spec-aware bug fixing — maps bugs to spec artifacts, proposes a plan, applies minimal changes | `code` | Read+Write | [spec-kit-fixit](https://github.com/speckit-community/spec-kit-fixit) |
201201
| 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) |
202+
| GitHub Issues Integration | Generate spec artifacts from GitHub Issues - import issues, sync updates, and maintain bidirectional traceability | `integration` | Read+Write | [spec-kit-github-issues](https://github.com/Fatima367/spec-kit-github-issues) |
202203
| 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) |
203204
| 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) |
204205
| 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) |
@@ -227,6 +228,7 @@ The following community-contributed extensions are available in [`catalog.commun
227228
| Review Extension | Post-implementation comprehensive code review with specialized agents for code quality, comments, tests, error handling, type design, and simplification | `code` | Read-only | [spec-kit-review](https://github.com/ismaelJimenez/spec-kit-review) |
228229
| SDD Utilities | Resume interrupted workflows, validate project health, and verify spec-to-task traceability | `process` | Read+Write | [speckit-utils](https://github.com/mvanhorn/speckit-utils) |
229230
| Security Review | Comprehensive security audit of codebases using AI-powered DevSecOps analysis | `code` | Read-only | [spec-kit-security-review](https://github.com/DyanGalih/spec-kit-security-review) |
231+
| SFSpeckit | Enterprise Salesforce SDLC with 18 commands for the full SDD lifecycle. | `process` | Read+Write | [spec-kit-sf](https://github.com/ysumanth06/spec-kit-sf) |
230232
| Ship Release Extension | Automates release pipeline: pre-flight checks, branch sync, changelog generation, CI verification, and PR creation | `process` | Read+Write | [spec-kit-ship](https://github.com/arunt14/spec-kit-ship) |
231233
| Spec Critique Extension | Dual-lens critical review of spec and plan from product strategy and engineering risk perspectives | `docs` | Read-only | [spec-kit-critique](https://github.com/arunt14/spec-kit-critique) |
232234
| Spec Diagram | Auto-generate Mermaid diagrams of SDD workflow state, feature progress, and task dependencies | `visibility` | Read-only | [spec-kit-diagram-](https://github.com/Quratulain-bilal/spec-kit-diagram-) |
@@ -240,7 +242,9 @@ The following community-contributed extensions are available in [`catalog.commun
240242
| V-Model Extension Pack | Enforces V-Model paired generation of development specs and test specs with full traceability | `docs` | Read+Write | [spec-kit-v-model](https://github.com/leocamello/spec-kit-v-model) |
241243
| Verify Extension | Post-implementation quality gate that validates implemented code against specification artifacts | `code` | Read-only | [spec-kit-verify](https://github.com/ismaelJimenez/spec-kit-verify) |
242244
| Verify Tasks Extension | Detect phantom completions: tasks marked [X] in tasks.md with no real implementation | `code` | Read-only | [spec-kit-verify-tasks](https://github.com/datastone-inc/spec-kit-verify-tasks) |
245+
| What-if Analysis | Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them | `visibility` | Read-only | [spec-kit-whatif](https://github.com/DevAbdullah90/spec-kit-whatif) |
243246
| Worktree Isolation | Spawn isolated git worktrees for parallel feature development without checkout switching | `process` | Read+Write | [spec-kit-worktree](https://github.com/Quratulain-bilal/spec-kit-worktree) |
247+
| Worktrees | Default-on worktree isolation for parallel agents — sibling or nested layout | `process` | Read+Write | [spec-kit-worktree-parallel](https://github.com/dango85/spec-kit-worktree-parallel) |
244248

245249
To submit your own extension, see the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md).
246250

@@ -256,6 +260,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
256260
| AIDE In-Place Migration | Adapts the AIDE extension workflow for in-place technology migrations (X → Y pattern) — adds migration objectives, verification gates, knowledge documents, and behavioral equivalence criteria | 2 templates, 8 commands | AIDE extension | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
257261
| Canon Core | Adapts original Spec Kit workflow to work together with Canon extension | 2 templates, 8 commands || [spec-kit-canon](https://github.com/maximiliamus/spec-kit-canon) |
258262
| Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command || [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
263+
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes, author voice sample or humanized AI prose. | 21 templates, 17 commands || [spec-kit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
259264
| Multi-Repo Branching | Coordinates feature branch creation across multiple git repositories (independent repos and submodules) during plan and tasks phases | 2 commands || [spec-kit-preset-multi-repo-branching](https://github.com/sakitA/spec-kit-preset-multi-repo-branching) |
260265
| Pirate Speak (Full) | Transforms all Spec Kit output into pirate speak — specs become "Voyage Manifests", plans become "Battle Plans", tasks become "Crew Assignments" | 6 templates, 9 commands || [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
261266
| Table of Contents Navigation | Adds a navigable Table of Contents to generated spec.md, plan.md, and tasks.md documents | 3 templates, 3 commands || [spec-kit-preset-toc-navigation](https://github.com/Quratulain-bilal/spec-kit-preset-toc-navigation) |
@@ -310,6 +315,7 @@ Community projects that extend, visualize, or build on Spec Kit:
310315
| [Cursor](https://cursor.sh/) || |
311316
| [Forge](https://forgecode.dev/) || CLI tool: `forge` |
312317
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) || |
318+
| [Goose](https://block.github.io/goose/) || Uses YAML recipe format in `.goose/recipes/` with slash command support |
313319
| [GitHub Copilot](https://code.visualstudio.com/) || |
314320
| [IBM Bob](https://www.ibm.com/products/bob) || IDE-based agent with slash command support |
315321
| [Jules](https://jules.google.com/) || |
@@ -654,7 +660,7 @@ specify init . --force --ai claude
654660
specify init --here --force --ai claude
655661
```
656662

657-
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Forge, or Mistral Vibe installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
663+
The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Forge, Goose, or Mistral Vibe installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
658664

659665
```bash
660666
specify init <project_name> --ai claude --ignore-agent-tools

0 commit comments

Comments
 (0)