Skip to content

Conversation

@ajuan-muchen
Copy link
Contributor

@ajuan-muchen ajuan-muchen commented Dec 24, 2025

OpenSpec Supports Continue, the open source IDE plugin and Cli, which support slash commands.

Summary by CodeRabbit

  • New Features

    • Added Continue tool support with native OpenSpec slash commands (/openspec-proposal, /openspec-apply, /openspec-archive). Prompts are generated during initialization and refreshed on update.
  • Documentation

    • Updated README and changelog to list the Continue tool and its slash commands.
  • Tests

    • Added tests for Continue prompt generation, extend-mode behavior, update/refresh behavior, and non-creation of missing prompt files.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 24, 2025

📝 Walkthrough

Walkthrough

Adds Continue as a new AI tool with a ContinueSlashCommandConfigurator, registers it in the slash registry, generates three .continue/prompts/openspec-*.prompt files during init, refreshes those files on update, updates docs, and adds init/update tests.

Changes

Cohort / File(s) Summary
Configuration
src/core/config.ts
Adds Continue entry to AI tools with value 'continue', isAvailable = true, and a success label.
New Slash Configurator
src/core/configurators/slash/continue.ts
Adds ContinueSlashCommandConfigurator implementing mappings for three slash commands and providing relative paths and YAML frontmatter for each prompt.
Configurator Registry
src/core/configurators/slash/registry.ts
Imports, instantiates, and registers the new Continue configurator in the SlashCommandRegistry.
Init/Update Specs
openspec/specs/cli-init/spec.md, openspec/specs/cli-update/spec.md
Adds scenarios for generating .continue/prompts/openspec-*.prompt during init and refreshing existing Continue prompt files on update.
Documentation
CHANGELOG.md, README.md
Documents Continue slash command support and adds Continue entries to the Native Slash Commands table and changelog.
Tests
test/core/init.test.ts, test/core/update.test.ts
Adds tests asserting generation of proposal/apply/archive prompt files, extend-mode behavior, refresh semantics, and non-creation of missing files on update.

Sequence Diagram

sequenceDiagram
    actor User as User/CLI
    participant Init as InitCommand
    participant Registry as SlashCommandRegistry
    participant Config as ContinueSlashCommandConfigurator
    participant FS as FileSystem

    User->>Init: run "openspec init"
    Init->>Registry: list available tools
    Registry->>Config: query toolId/isAvailable
    Config-->>Registry: "continue" / true

    note right of Init: Generate Continue prompts
    Init->>Config: request generation
    Config->>FS: write `.continue/prompts/openspec-proposal.prompt`
    Config->>FS: write `.continue/prompts/openspec-apply.prompt`
    Config->>FS: write `.continue/prompts/openspec-archive.prompt`

    User->>Init: run "openspec update"
    Init->>Registry: list configured tools
    Init->>Config: request refresh
    note right of Config: Refresh existing prompts only
    Config->>FS: read `.continue/prompts/*`
    Config->>FS: overwrite marker sections with templates
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • Israel-Laguan

Poem

🐰 Hopping through prompts with cheer,
Three Continue files now appear.
Proposal, Apply, Archive in tune,
Init plants seeds, update keeps them new.
A rabbit taps keys — delights at noon!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add Continue support' directly and concisely summarizes the main objective of the pull request, which is to introduce support for the Continue IDE plugin and CLI with slash command integration.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b3a157e and 9a1ec01.

📒 Files selected for processing (5)
  • README.md
  • openspec/specs/cli-init/spec.md
  • src/core/configurators/slash/continue.ts
  • test/core/init.test.ts
  • test/core/update.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • README.md
  • openspec/specs/cli-init/spec.md
  • src/core/configurators/slash/continue.ts
🧰 Additional context used
🧬 Code graph analysis (1)
test/core/init.test.ts (1)
src/utils/file-system.ts (1)
  • fileExists (84-94)
🔇 Additional comments (4)
test/core/init.test.ts (2)

1197-1207: LGTM!

The test correctly verifies that Continue is marked as already configured during extend mode, following the established pattern used for other tools.


1154-1195: Add description field check to proposal test for consistency.

The Continue prompt file format (.prompt extension, .continue/prompts/ directory, and frontmatter with name, description, and invokable fields) is correctly implemented.

However, there is a test coverage inconsistency: the proposal test only checks for name, invokable, and markers, while the apply and archive tests also verify the description field. Add an assertion to the proposal test to check for description: Generate an OpenSpec proposal to improve systems. (or similar) to match the coverage of the apply and archive tests.

test/core/update.test.ts (2)

371-407: LGTM!

The test correctly verifies that existing Continue prompt files are refreshed during update, preserving frontmatter fields while updating the content between OpenSpec markers. The assertions for console logging are also appropriate.


409-443: LGTM!

The test correctly verifies that the update command only refreshes existing Continue prompt files and does not create missing ones, following the established pattern for other tools. This ensures proper separation between init (creates files) and update (refreshes existing files) behaviors.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c2599b and b295c22.

📒 Files selected for processing (9)
  • CHANGELOG.md
  • README.md
  • openspec/specs/cli-init/spec.md
  • openspec/specs/cli-update/spec.md
  • src/core/config.ts
  • src/core/configurators/slash/continue.ts
  • src/core/configurators/slash/registry.ts
  • test/core/init.test.ts
  • test/core/update.test.ts
🧰 Additional context used
📓 Path-based instructions (1)
openspec/specs/**/spec.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Use SHALL/MUST for normative requirements in spec files; avoid should/may unless intentionally non-normative

Files:

  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
🧠 Learnings (12)
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/*/proposal.md : Ensure `proposal.md` includes sections: Why (1-2 sentences), What Changes (bullet list with breaking change markers), and Impact (affected specs and code)

Applied to files:

  • README.md
  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/*.md : Scaffold proposal using `proposal.md`, `tasks.md`, optional `design.md`, and delta specs under `openspec/changes/<id>/`

Applied to files:

  • README.md
  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:02.839Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Use `@/openspec/AGENTS.md` to learn how to create and apply change proposals, spec format and conventions, and project structure and guidelines

Applied to files:

  • README.md
  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Check `openspec/project.md` for project conventions before creating specs

Applied to files:

  • README.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:02.839Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Always open `@/openspec/AGENTS.md` when the request mentions planning or proposals (words like proposal, spec, change, plan), introduces new capabilities, breaking changes, architecture shifts, or performance/security work, or sounds ambiguous and needs the authoritative spec before coding

Applied to files:

  • README.md
  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Search existing work using `openspec spec list --long`, `openspec list` for enumerating changes; use `rg` only for full-text search

Applied to files:

  • README.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/specs/**/spec.md : Use `## ADDED|MODIFIED|REMOVED|RENAMED Requirements` headers in spec delta files

Applied to files:

  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/specs/**/spec.md : Use `## ADDED Requirements` for new orthogonal capabilities that can stand alone; use `## MODIFIED Requirements` for behavior changes of existing requirements

Applied to files:

  • CHANGELOG.md
  • openspec/specs/cli-update/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Use `openspec archive <change-id> --skip-specs --yes` for tooling-only changes

Applied to files:

  • CHANGELOG.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/specs/**/spec.md : Include at least one `#### Scenario:` per requirement in spec delta files

Applied to files:

  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/specs/**/spec.md : Use `#### Scenario: Name` format (4 hashtags) for scenario headers, not bullets or bold text

Applied to files:

  • openspec/specs/cli-update/spec.md
  • openspec/specs/cli-init/spec.md
📚 Learning: 2025-11-25T01:08:19.004Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:19.004Z
Learning: Applies to openspec/changes/**/specs/**/spec.md : When using MODIFIED Requirements, paste the full requirement block including header and all scenarios

Applied to files:

  • openspec/specs/cli-update/spec.md
🧬 Code graph analysis (3)
test/core/init.test.ts (1)
src/utils/file-system.ts (1)
  • fileExists (76-86)
src/core/configurators/slash/registry.ts (1)
src/core/configurators/slash/continue.ts (1)
  • ContinueSlashCommandConfigurator (31-42)
test/core/update.test.ts (1)
src/utils/file-system.ts (1)
  • FileSystemUtils (44-187)
🔇 Additional comments (14)
src/core/config.ts (1)

27-27: LGTM!

The Continue tool entry is correctly formatted and properly positioned alphabetically between CodeBuddy and CoStrict.

README.md (1)

101-101: LGTM!

The Continue documentation entry follows the established table format and correctly references the .continue/prompts/ location.

CHANGELOG.md (1)

20-21: LGTM!

The changelog entry clearly documents the Continue integration, including the file location (.continue/prompts/), file extension (.prompt), and frontmatter format.

openspec/specs/cli-init/spec.md (1)

208-213: LGTM!

The scenario correctly specifies .prompt file extensions that match the Continue configurator implementation. The pattern is consistent with other slash command generation scenarios.

src/core/configurators/slash/registry.ts (3)

22-22: LGTM!

The Continue configurator is properly imported and will be registered in the static initialization block.


48-48: LGTM!

The Continue configurator is instantiated following the naming convention used for other tools.


70-70: LGTM!

The Continue configurator is registered in the map, completing the integration into the slash command system.

test/core/init.test.ts (2)

1154-1192: LGTM!

The test comprehensively verifies that Continue slash command files are created with the correct paths (.continue/prompts/openspec-*.prompt), frontmatter format, and content. The assertions check for proper YAML frontmatter structure, OpenSpec markers, and workflow instructions.


1194-1204: LGTM!

The extend mode test correctly verifies that Continue is marked as configured when running openspec init a second time, ensuring proper state tracking across repeated initialization runs.

src/core/configurators/slash/continue.ts (3)

4-8: LGTM!

The file paths are correctly defined with the .prompt extension that Continue expects, placed under .continue/prompts/ for the three OpenSpec commands.


10-29: LGTM!

The frontmatter format is well-documented and follows Continue's expected structure with name, description, and a --- separator. The command names will become /openspec-proposal, /openspec-apply, and /openspec-archive as intended.


31-42: LGTM!

The configurator class correctly extends SlashCommandConfigurator and implements the required methods to integrate Continue into the OpenSpec slash command system. The toolId and isAvailable properties match the configuration in src/core/config.ts.

test/core/update.test.ts (2)

371-404: LGTM! Well-structured test for Continue prompt refresh.

The test correctly verifies that:

  1. Existing Continue prompt files at .continue/prompts/ are refreshed
  2. Content between OpenSpec markers is updated
  3. Frontmatter (name:) is preserved
  4. Console output contains expected log messages

The test follows the established pattern used by other AI tool tests in this file.


406-438: LGTM! Correct test for update-only behavior.

The test properly validates that the update command only refreshes existing Continue prompt files without creating missing ones (openspec-proposal.prompt and openspec-archive.prompt), which is the expected behavior for the update flow.

@ajuan-muchen
Copy link
Contributor Author

@TabishB Please review. This is support for Continue which are open-source AI plugin and CLI.Continue is super useful and works with slash commands.

@TabishB
Copy link
Contributor

TabishB commented Jan 10, 2026

@ajuan-muchen I'll take a look today, thanks!

TabishB and others added 2 commits January 10, 2026 15:23
- Fix Continue frontmatter to use proper YAML format with opening `---`
  and required `invokable: true` field for slash command availability
- Fix README table ordering: Continue should be after Codex alphabetically
- Remove unused TemplateManager import from continue.ts
- Fix trailing whitespace in update.test.ts
- Fix double blank line in init.test.ts
- Fix extra blank line in cli-init/spec.md
- Update tests to verify correct frontmatter format
@TabishB
Copy link
Contributor

TabishB commented Jan 10, 2026

@ajuan-muchen I'm gonna merge this in, mind testing it out for me on Continue when I release it?

@TabishB TabishB merged commit e987a5a into Fission-AI:main Jan 10, 2026
7 checks passed
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.

2 participants