-
Notifications
You must be signed in to change notification settings - Fork 957
chore: add changeset for AI assistants support and validation fixes #227
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Merged and archived four concurrent changes that modified the same specs: - add-cline-support: Added Cline AI tool configuration - add-crush-support: Added Crush AI tool configuration - add-factory-slash-commands: Added Factory Droid slash commands - add-archive-command-arguments: Added archive command argument support Changes to cli-init/spec.md: - Added Cline and CodeBuddy Code configuration scenarios - Added slash command scenarios for CodeBuddy Code, Cline, Crush, Factory Droid Changes to cli-update/spec.md: - Added update scenarios for CodeBuddy Code, Cline, Crush, Factory Droid - Added Archive Command Argument Support requirement - Modified OpenCode scenario to support $ARGUMENTS placeholder This required manual intervention to prevent data loss from OpenSpec's requirement-level replacement during archiving. The archive operations initially overwrote scenarios from earlier changes, requiring restoration of all missing content to preserve complete spec state. All four changes successfully archived to openspec/changes/archive/.
WalkthroughThis PR extends AI coding assistant support by adding multiple tools (CodeBuddy Code, CodeRabbit, Cline, Crush AI, Auggie), renames CodeBuddy to "CodeBuddy Code (CLI)" across documentation and code, updates the config file from CodeBuddy.md to CODEBUDDY.md, archivesSpec sections for Cline and Crush, adds slash command generation for multiple AI tools, introduces archive command argument validation, and removes openspec diff command references from templates. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes The changes span multiple files with a mix of documentation, configuration updates, and specification additions. While individual changes are straightforward (renaming, file creation rules, test additions), the breadth of AI tool coverage and interrelated spec updates across both active and archived specs require careful verification to ensure consistency and correctness across all tools. Possibly related PRs
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this 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
🧹 Nitpick comments (3)
src/core/configurators/codebuddy.ts (1)
9-9: Verify migration path for existing users.The filename change from
CodeBuddy.mdtoCODEBUDDY.mdis a breaking change. Existing users withCodeBuddy.mdfiles won't have them automatically migrated or detected.Consider whether:
- Migration guidance should be added to release notes
- The configurator should check for and migrate existing
CodeBuddy.mdfiles- Users are expected to manually rename their files or re-run
openspec initWould you like me to generate a migration helper that detects and renames existing
CodeBuddy.mdfiles toCODEBUDDY.md?openspec/specs/cli-update/spec.md (1)
124-142: Archive Command Argument Support requirement needs Factory Droid scenario.The new requirement in lines 124-142 is well-specified for OpenCode (lines 138-142), but it only provides an implementation scenario for OpenCode. Since the requirement states "tools that support
$ARGUMENTSplaceholder" (line 125), and Factory Droid is documented to support$ARGUMENTS(line 85), consider adding a Factory Droid-specific archive template scenario to clarify how the$ARGUMENTSplaceholder should handle change ID arguments for that tool.This ensures consistency across all tools that support optional archive command arguments.
openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md (1)
62-64: Minor capitalization: GitHub should be capitalized consistently.Per static analysis, lines 63 reference
.github/prompts/which is correct, but ensure the official platform name is capitalized as "GitHub" (not "github") in any surrounding text or comments.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (16)
.changeset/ai-assistants-and-fixes.md(1 hunks)README.md(1 hunks)openspec-parallel-merge-plan.md(1 hunks)openspec/AGENTS.md(0 hunks)openspec/changes/add-cline-support/specs/cli-init/spec.md(0 hunks)openspec/changes/add-crush-support/specs/cli-init/spec.md(0 hunks)openspec/changes/archive/2025-10-22-add-archive-command-arguments/specs/cli-update/spec.md(0 hunks)openspec/changes/archive/2025-10-22-add-archive-command-arguments/tasks.md(0 hunks)openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md(1 hunks)openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md(1 hunks)openspec/specs/cli-init/spec.md(2 hunks)openspec/specs/cli-update/spec.md(2 hunks)src/core/config.ts(1 hunks)src/core/configurators/codebuddy.ts(1 hunks)src/core/templates/agents-template.ts(0 hunks)test/core/init.test.ts(1 hunks)
💤 Files with no reviewable changes (6)
- src/core/templates/agents-template.ts
- openspec/AGENTS.md
- openspec/changes/archive/2025-10-22-add-archive-command-arguments/tasks.md
- openspec/changes/add-cline-support/specs/cli-init/spec.md
- openspec/changes/add-crush-support/specs/cli-init/spec.md
- openspec/changes/archive/2025-10-22-add-archive-command-arguments/specs/cli-update/spec.md
🧰 Additional context used
📓 Path-based instructions (2)
openspec/changes/archive/**
📄 CodeRabbit inference engine (openspec/AGENTS.md)
After deployment, archive changes by moving 'openspec/changes/[name]/' to 'openspec/changes/archive/YYYY-MM-DD-[name]/' and validate with '--strict'
Files:
openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.mdopenspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md
openspec/specs/*/spec.md
📄 CodeRabbit inference engine (openspec/AGENTS.md)
openspec/specs/*/spec.md: Place current (truth) capability specs at openspec/specs//spec.md
Update specs/ to reflect capabilities after archiving if behavior changed
Files:
openspec/specs/cli-update/spec.mdopenspec/specs/cli-init/spec.md
🧠 Learnings (1)
📚 Learning: 2025-10-21T03:05:58.972Z
Learnt from: CR
PR: Fission-AI/OpenSpec#0
File: openspec/AGENTS.md:0-0
Timestamp: 2025-10-21T03:05:58.972Z
Learning: Applies to openspec/changes/*/specs/*/spec.md : When using MODIFIED, copy the full existing requirement (header through scenarios), edit to reflect new behavior, keep at least one scenario, and ensure the header text matches exactly (whitespace-insensitive)
Applied to files:
openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md
🧬 Code graph analysis (1)
test/core/init.test.ts (2)
src/utils/file-system.ts (1)
fileExists(76-86)test/utils/marker-updates.test.ts (3)
filePath(252-285)it(203-286)it(59-143)
🪛 LanguageTool
openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md
[uncategorized] ~93-~93: The official name of this software platform is spelled with a capital “H”.
Context: ...during initialization - THEN create .github/prompts/openspec-proposal.prompt.md, `...
(GITHUB)
[uncategorized] ~93-~93: The official name of this software platform is spelled with a capital “H”.
Context: ...b/prompts/openspec-proposal.prompt.md, .github/prompts/openspec-apply.prompt.md`, and ...
(GITHUB)
openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md
[uncategorized] ~63-~63: The official name of this software platform is spelled with a capital “H”.
Context: ...during initialization - THEN create .github/prompts/openspec-proposal.prompt.md, `...
(GITHUB)
[uncategorized] ~63-~63: The official name of this software platform is spelled with a capital “H”.
Context: ...b/prompts/openspec-proposal.prompt.md, .github/prompts/openspec-apply.prompt.md`, and ...
(GITHUB)
🔇 Additional comments (10)
.changeset/ai-assistants-and-fixes.md (1)
1-24: LGTM! Well-structured changeset.The changeset correctly documents the minor version release with comprehensive notes on new AI assistant support, feature enhancements, bug fixes, and documentation improvements.
openspec/changes/archive/2025-10-22-add-cline-support/specs/cli-init/spec.md (1)
1-97: Archived spec structure follows guidelines.The file is correctly placed in the archive directory following the
openspec/changes/archive/YYYY-MM-DD-[name]/pattern as specified in the coding guidelines.Note: The static analysis warnings about
.githubcapitalization are false positives—.githubis the correct directory name convention for GitHub-specific files.README.md (1)
94-94: LGTM! Documentation aligns with implementation changes.The README update correctly reflects the renamed display name "CodeBuddy Code (CLI)" and adds a helpful documentation link, consistent with changes in
src/core/config.tsandsrc/core/configurators/codebuddy.ts.test/core/init.test.ts (1)
868-899: LGTM! Comprehensive test coverage for CODEBUDDY.md handling.The two new tests properly validate both creation and update scenarios for CODEBUDDY.md, following the established patterns used for other AI tool configuration files (CLAUDE.md, CLINE.md). They correctly verify OpenSpec marker handling and content preservation.
openspec-parallel-merge-plan.md (1)
52-52: LGTM! Correct renumbering after bullet removal.The bullet has been appropriately renumbered from 4 to 3 following the removal of a previous item, with no changes to its content.
src/core/config.ts (1)
23-23: LGTM! Consistent naming update with backward compatibility.The display name and success label have been updated to "CodeBuddy Code (CLI)" and "CodeBuddy Code" respectively, improving clarity for users while preserving the internal
value: 'codebuddy'for backward compatibility. This aligns with the README.md update and CODEBUDDY.md configuration file change.openspec/specs/cli-init/spec.md (2)
67-77: LGTM! Configuration scenarios follow established patterns.The new scenarios for CodeBuddy Code and Cline properly document the creation of
CODEBUDDY.mdandCLINE.mdfiles, following the same structure as the existing Claude Code scenario. The scenarios correctly specify root-level file creation with AGENTS.md references.
169-200: LGTM! Comprehensive slash command documentation.The new slash command generation scenarios for CodeBuddy Code, Cline, Crush, and Factory Droid are well-structured and consistent with existing tool scenarios. Each correctly specifies:
- Tool-specific file paths and directory structures
- Appropriate frontmatter requirements
- Template handling with OpenSpec markers
- Workflow stage instructions
openspec/specs/cli-update/spec.md (1)
60-75: Tool scenario additions look complete and well-structured.The new scenarios for CodeBuddy Code (60-63), Cline (65-69), and Crush (71-75) are consistent with existing tool patterns, with appropriate tool-specific frontmatter requirements (e.g., Cline Markdown heading frontmatter, Crush category/tags). The scenarios properly specify all three workflow stages (proposal, apply, archive) and include instructions for relevant workflow stages.
openspec/changes/archive/2025-10-22-add-crush-support/specs/cli-init/spec.md (1)
1-67: Archived spec correctly captures final state of Crush support addition.The archived cli-init spec properly documents the MODIFIED Requirements after Crush support was integrated. The archive directory structure (
openspec/changes/archive/2025-10-22-add-crush-support/) correctly follows the naming convention specified in coding guidelines. All tool scenarios—including the new Crush scenario (lines 24-29)—are properly documented with consistent structure and appropriate tool-specific requirements (frontmatter, placeholders, markers).
| #### Scenario: Updating slash commands for Factory Droid | ||
| - **WHEN** `.factory/commands/` contains `openspec-proposal.md`, `openspec-apply.md`, and `openspec-archive.md` | ||
| - **THEN** refresh each file using the shared Factory templates that include YAML frontmatter for the `description` and `argument-hint` fields | ||
| - **AND** ensure the template body retains the `$ARGUMENTS` placeholder so user input keeps flowing into droid | ||
| - **AND** update only the content inside the OpenSpec managed markers, leaving any unmanaged notes untouched | ||
| - **AND** skip creating missing files during update | ||
|
|
||
| #### Scenario: Updating slash commands for OpenCode | ||
| - **WHEN** `.opencode/command/` contains `openspec-proposal.md`, `openspec-apply.md`, and `openspec-archive.md` | ||
| - **THEN** refresh each file using shared templates | ||
| - **AND** ensure templates include instructions for the relevant workflow stage | ||
| - **AND** ensure the archive command includes `$ARGUMENTS` placeholder in frontmatter for accepting change ID arguments |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify archive argument support consistency across all tools supporting $ARGUMENTS.
The Archive Command Argument Support requirement (lines 124-142) states support is for "tools that support $ARGUMENTS placeholder." However, the Factory Droid scenario (lines 82-87) mentions $ARGUMENTS placeholder support but does not detail how the archive command should handle optional change ID arguments, unlike the OpenCode scenario (lines 89-93).
Either Factory Droid archive commands should support change ID arguments (similar to OpenCode), or the requirement scope should clarify which tools support this feature.
🏁 Script executed:
#!/bin/bash
# Search for Factory Droid archive command template or implementation
# to determine if it should support change ID arguments
rg -n "Factory Droid\|factory.*archive" --type mdLength of output: 0
The search produced no results. Let me verify the file structure and check the actual content at the specified lines.
🏁 Script executed:
#!/bin/bash
# Check if file exists and display content around lines 82-93
if [ -f "openspec/specs/cli-update/spec.md" ]; then
echo "=== File exists ==="
sed -n '75,120p' "openspec/specs/cli-update/spec.md"
else
echo "File not found at openspec/specs/cli-update/spec.md"
# Try to find the file
find . -name "*cli-update*" -o -name "spec.md" | head -20
fiLength of output: 3161
🏁 Script executed:
#!/bin/bash
# Also search for any content with "Factory Droid" more broadly
echo "=== Searching for Factory Droid ==="
rg -n "Factory Droid" 2>/dev/null | head -10Length of output: 1129
🏁 Script executed:
#!/bin/bash
# Search for archive command scenarios
echo "=== Searching for archive scenarios ==="
rg -n "archive.*command\|Archive Command" -i 2>/dev/null | head -15Length of output: 39
I can now see the actual content. Let me verify the Archive Command Argument Support requirement section mentioned in the review.
🏁 Script executed:
#!/bin/bash
# Display lines 120-150 to see the Archive Command Argument Support section
sed -n '120,150p' "openspec/specs/cli-update/spec.md"Length of output: 1565
Factory Droid should include archive template argument support scenario, matching OpenCode.
The inconsistency is confirmed. The Archive Command Argument Support requirement (line 123) states support applies to "tools that support $ARGUMENTS placeholder." Factory Droid explicitly supports $ARGUMENTS (line 85), yet only OpenCode has a documented archive template generation scenario (lines 139-144) that handles change ID arguments.
Factory Droid needs either:
- A dedicated "Factory Droid archive template generation" scenario under the Archive Command Argument Support requirement, OR
- The requirement scope should clarify that archive argument support applies only to specific tools (e.g., OpenCode)
The current spec creates ambiguity about Factory Droid's archive command capabilities.
🤖 Prompt for AI Agents
In openspec/specs/cli-update/spec.md around lines 82–93, the spec is ambiguous
about whether Factory Droid must support an archive template with the $ARGUMENTS
placeholder; either add a dedicated "Factory Droid archive template generation"
scenario mirroring the OpenCode archive scenario (include YAML frontmatter
accepting change ID arguments, ensure $ARGUMENTS appears in frontmatter/body,
preserve managed marker-only edits, and do not create missing files), or update
the Archive Command Argument Support requirement to explicitly state which tools
are in-scope (e.g., only OpenCode) and call out that Factory Droid is excluded,
so the spec is unambiguous.
Summary
This changeset prepares a minor version release that includes support for multiple new AI coding assistants and several bug fixes.
Changes Being Released
New AI Assistant Support
New Features
Bug Fixes
Documentation
Version Bump
Minor - Multiple new features warrant a minor version bump per semantic versioning.
Commits Since Last Release (b30882b)
Summary by CodeRabbit
New Features
Bug Fixes
--no-validateflag and properly ignores metadata.Documentation