Repository navigation
Conversation
…-AI#238) * fix: recreate missing openspec template files in extend mode The init command now checks for and recreates missing template files (like openspec/AGENTS.md and openspec/project.md) when running in extend mode, instead of skipping file generation entirely. Previously, if a user deleted openspec/AGENTS.md and ran init again, the file would not be recreated because the openspec/ directory existed, triggering extend mode which skipped all file generation. Changes: - Added ensureTemplateFiles() method to check and recreate missing files - Modified extend mode to call ensureTemplateFiles() instead of skipping - Updated message to "Checking for missing files..." for clarity - Added tests for recreating deleted openspec/AGENTS.md and project.md * refactor: consolidate duplicate logic in template file generation Extracted shared logic from generateFiles() and ensureTemplateFiles() into a new writeTemplateFiles() method with a skipExisting parameter. This eliminates code duplication while maintaining the same behavior. * test: improve extend mode test coverage and reduce duplication - Extracted testFileRecreationInExtendMode helper to reduce code duplication - Added test to verify existing files are preserved in extend mode - Ensures skipExisting behavior is properly tested
* docs: add optional project context setup instructions Add documentation for the optional step of populating project.md with project details, tech stack, and conventions after running openspec init. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: improve project context section formatting and clarity - Change heading to "Optional: Populate Project Context" for consistency - Fix double space typo in "After openspec init" - Explicitly reference openspec/project.md file - Enhance explanation of project.md purpose 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
* feat(ai-tools): add Costrict integration support Add support for Costrict AI tool with slash commands and configuration template. Includes configurator, registry entries, templates, and comprehensive test coverage. * feat(config): update branding from 'Costrict' to 'CoStrict'
…on-AI#261) Co-authored-by: pengjiahan.pjh <pengjiahan.pjh@antgroup.com>
This change adds the $ARGUMENTS property to the OpenCode apply slash command template, allowing users to pass arguments when invoking the apply command. The template now includes instructions for the agent to find and implement the change proposal, with guidance to ask for clarification when ambiguous.
…I#250) * feat: add Qwen Code support with slash command integration - Add QwenSlashCommandConfigurator for .qwen/commands/ structure - Add QwenConfigurator to main registry - Update README.md to include Qwen Code in supported tools list - Register Qwen in both slash command and main tool registries - Implement proper YAML frontmatter for Qwen command files - Follow OpenSpec's established patterns for AI tool integration Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * docs: add docstrings and fix review comments for Qwen Code support - Add comprehensive JSDoc comments to Qwen configurator files - Add Qwen Code entry to README_CN.md support table - Fix file ending newline in src/core/configurators/qwen.ts - Address CodeRabbit review suggestions for improved documentation coverage Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix: add language identifier to markdown code block in supportQwen.md Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix: address CodeRabbit review comments - parameter naming fix - Fix unused parameter naming convention (_openspecDir) - Keep only necessary changes for Qwen Code support Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * chore: add personal notes files to .gitignore Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * chore: remove personal notes files from git tracking - Remove README_CN.md and supportQwen.md from git tracking - These files are now ignored via .gitignore - Keep only necessary files for the OpenSpec project Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix: remove duplicate JSDoc comment in QwenConfigurator - Remove duplicate documentation comment for configure method - Keep only the updated comment that correctly documents the unused parameter Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * test: cover qwen configurators * chore: revert gitignore changes * test: extend qwen init coverage --------- Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> Co-authored-by: Tabish Bidiwale <tabishbidiwale@gmail.com>
* Version Packages * chore: trigger CI --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tabish Bidiwale <tabishbidiwale@gmail.com>
…AI#256) * feat: add Gemini CLI support with TOML-based slash commands - Add GeminiSlashCommandConfigurator for .gemini/commands/openspec/ - Register Gemini CLI in AI_TOOLS config and slash command registry - Generate TOML files with description and prompt fields - Add comprehensive test coverage for Gemini CLI integration - Update README to list Gemini CLI under Native Slash Commands - Remove Gemini CLI from AGENTS.md compatible list (now native) Implements GitHub issue Fission-AI#248 * [add] * feat: address PR feedback - remove changeset and add update test - Remove .changeset/add-gemini-cli-support.md as requested by maintainer - Add test for Gemini CLI TOML update/refresh path - Test verifies that existing TOML files are properly updated when running init again Addresses feedback from TabishB in PR Fission-AI#256 --------- Co-authored-by: Tabish Bidiwale <30385142+TabishB@users.noreply.github.com>
…-AI#283) * fix(cline): use workflows instead of rules for slash commands - Update ClineSlashCommandConfigurator to use .clinerules/workflows/ paths - Update tests to expect correct workflow file locations - Update README.md to reflect workflows instead of rules - Fixes Cline integration to match Cline's architecture per their blog post * Adds spec for fix-cline-workflows-implementation --------- Co-authored-by: didier <didier.boff@axess.fr> Co-authored-by: Tabish Bidiwale <30385142+TabishB@users.noreply.github.com>
… templates) (Fission-AI#288) * feat(roocode): Added RooCode tool support and related configurations Added RooCode tool integration, including: - Added RooCode configurator class - Registered RooCode to the tool registry - Implemented RooCode template files - Added RooCode slash command support - Updated README documentation - Added related test cases * Removed RooCode related configurations from the project. This includes deleting the RooCode configurator, its template, and associated tests.
* Version Packages * chore: trigger CI --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tabish Bidiwale <tabishbidiwale@gmail.com>
…#306) * Enhance proposal guidelines in slash-command-templates.ts - Added instructions to avoid writing code during the proposal stage and focus on creating design documents. - Emphasized the design phase by including a reminder not to implement code until the apply stage. - Updated validation steps to clarify the importance of confirming project conventions before proceeding with tasks. * Update proposal guidelines in slash-command-templates.ts to clarify that no implementation code should be written during the design phase. * Refine proposal and apply steps in slash-command-templates.ts - Removed redundant instruction in proposal steps to streamline the process. - Clarified the initial reading order for apply steps by omitting the project conventions document, focusing on the proposal and design documents instead.
* clarify scaffold proposal * Update scaffold command proposal to support idempotent execution
* support iflow-cli * docs: add iFlow to supported AI tools in README ([Fission-AI#268](Fission-AI#268)) Add iFlow to the Native Slash Commands table in the README. iFlow support was implemented but was missing from the documentation. * add UTs for iflow-cli
Add prominent restart instruction in success message to inform users they need to restart their IDE/coding tool for slash commands to appear. Applies to all tools when slash commands are created or refreshed. Also updates cli-init spec to document the restart instruction requirement.
* Add changeset for new features and improvements * Update .changeset/new-features-and-improvements.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Version Packages * chore: trigger CI --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tabish Bidiwale <tabishbidiwale@gmail.com>
…ion-AI#335) Remove the `agent: build` field from OpenCode slash command templates to allow OpenCode to use the current/custom agent instead of requiring the build agent to be available. Fixes Fission-AI#334
…-AI#343) - Sort supported AI tools alphabetically (A-Z) - Wrap both "Native Slash Commands" and "AGENTS.md Compatible" sections in collapsible <details> tags to reduce visual clutter
* shell completions for zsh * after code review changes * expose only postinstall.js script * Replace _openspec "$@" with compdef in zsh-generator.ts to prevent execution during load * Update test/commands/completion.test.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * - Fix dispatcher to use $words instead of $line for subcommand routing - Add __complete endpoint with tab-separated output for safe parsing - Replace brittle awk parsing with __complete in completion helpers - Add uninstall confirmation prompt with --yes flag to skip - Prefer $ZSH env var for Oh My Zsh detection before dir check - Add fpath verification guidance for OMZ installations - Update cli-completion spec to document generate subcommand * improve shell detection and installation handling - Return structured result from detectShell() with shell and detected name - Detect already-installed completions and skip reinstall - Add update detection with automatic backup of previous version - Add debug logging to silent catch blocks for diagnostics - Quote fpath directories to handle paths with spaces - Verify Oh My Zsh fpath configuration and add to .zshrc if needed - Show helpful error for detected but unsupported shells - Update all tests for new detection API --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Tabish Bidiwale <30385142+TabishB@users.noreply.github.com>
) Update the cli-completion spec to match the actual implementation: - Change `completion zsh` to `completion generate [shell]` command structure - Update uninstall behavior to reflect confirmation prompt cancels entire operation - Change "not installed" uninstall exit code from 0 to 1 - Update shell detection error message to match implementation - Replace Purpose placeholder with actual description
…er tests (Fission-AI#373) - Fix canWriteFile to use fs.access with W_OK flag instead of Unix-style permission bits (stats.mode & 0o222) which don't work on Windows - Update test paths to use platform-specific invalid paths that fail on both Unix and Windows - Use regex for path separator matching in test assertions
…als (Fission-AI#376) Create two OpenSpec change proposals: 1. add-global-config-dir: Foundation for user-level configuration following XDG Base Directory Specification with cross-platform support 2. add-config-command: User-facing CLI command for viewing and managing global settings Both proposals are minimal and focused on providing a clean, extensible base for OpenSpec settings and future feature flags.
…on-AI#377) * feat(core): implement global config directory with XDG support Add new global-config module following XDG Base Directory Specification with platform-specific fallbacks (Unix: ~/.config/openspec, Windows: %APPDATA%/openspec). Includes config loading with defaults, config saving with directory creation, and full test coverage. Archive add-global-config-dir change. * docs(spec): add Purpose section to global-config spec Replace placeholder text with a concise description of what the spec governs, its scope, and high-level objectives.
…-AI#378) Prioritize XDG_CONFIG_HOME on Windows to fix test environment overrides. Previously, Windows would always use APPDATA regardless of XDG_CONFIG_HOME, causing tests to fail. Now XDG_CONFIG_HOME is checked first on all platforms before falling back to platform-specific defaults. Also update the Windows APPDATA test to explicitly clear XDG_CONFIG_HOME when testing the fallback behavior.
…on-AI#1059) Changed description from 'Preview/spec-merge without archiving' to 'Merge delta specs into main specs' to match commands.md and workflows.md
* Propose workspace change planning * Implement workspace setup skills phase * Implement workspace skill updates * Handle config profile workspace apply * Implement workspace change creation phase * Enrich planning context for workspace changes * Update workflow skills for planning context * Add workspace planning verification coverage * Fix workspace update review issues * Fix workspace skill drift comparison * Clean up workspace change planning artifacts * Archive workspace change planning * Fix archived workspace planning spec purpose * Address workspace planning review comments
* fix: handle canonical workspace paths * docs: document path canonicalization pitfalls * docs: scope canonicalization notes to tests * docs: improve test agent guidance * docs: shorten test agent guidance
* Document initiative-led workspace direction * Add context stores and initiative change links * Let workspaces open initiative views * Add workspace root bundle artifacts * Support legacy workspace roots in planning resolution * Remove accidental workspace root bundle artifacts * Bundle workspace reimplementation docs into roadmap * Preserve workspace context store bindings * Address review feedback for context store initiatives * test: canonicalize context store path assertions * Refine context store and workspace core boundaries * Avoid initiative diagnostic regex backtracking
* Polish beta context workspace flow * Allow context-only initiative workspace open * Add workspace beta compatibility review item
* Improve context-store setup and cleanup UX * Address CodeRabbit context-store feedback * Canonicalize cleanup registry test assertion
…er (Fission-AI#1135) When a change delta has a requirement whose body is missing SHALL/MUST but whose header (the text after `### Requirement:`) already contains the keyword, the validator emitted the generic error "must contain SHALL or MUST". Authors then re-read the spec, see SHALL right there in the header, and have no idea what the validator wants. Per the OpenSpec conventions the keyword has to live on the requirement body line (the line immediately after the header). When the keyword is present in the header only, append guidance explaining exactly where to move it. The fix is scoped to the two `validateChangeDeltaSpecs` call sites (ADDED + MODIFIED) so behaviour for requirements that lack the keyword everywhere stays unchanged. Adds three vitest cases under `test/core/validation.test.ts`: - ADDED block with header-only SHALL → enriched hint - MODIFIED block with header-only MUST → enriched hint - Neither header nor body contain SHALL/MUST → generic message preserved Verified by reproducing the spec from Fission-AI#356, running `openspec validate <change>` against the rebuilt CLI, and confirming the new diagnostic guides the author to the fix. Reverting `validator.ts` makes the two enriched-hint cases fail, so the tests guard the regression. Fixes Fission-AI#356 Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Tabish Bidiwale <30385142+TabishB@users.noreply.github.com>
* feat: add mistral vibe support Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * feat: add mistral vibe support Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * chore: archive add-mistral-vibe-support change Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * chore: sync delta specs from add-mistral-vibe-support change Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * chore: fix archive directory date to match metadata Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * fix: correct vibe detection paths and alphabetical ordering - Remove detectionPaths from Mistral Vibe to prevent double-nested skills dir - Fix lingma alphabetical position in tool IDs list Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * chore: remove archived mistral vibe change files Remove archive directory per PR review feedback to keep PR minimal Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * chore: remove mistral vibe spec files per PR feedback Remove new spec corpus (vibe-tool-config + Mistral Vibe scenario in ai-tool-paths) Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * test: add Mistral Vibe detection regression test Add focused regression test that proves Vibe initializes and detects skills under .vibe/skills so the path semantics do not drift. Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai> * test: tolerate workspace update help wrapping --------- Co-authored-by: Thomas Betous <4435536+tbetous@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai> Co-authored-by: tbetous <thomas.betous@doctolib.com>
* docs: document cross-platform path assertions * docs: mention toPosixPath in path assertion guidance * chore: remove changeset --------- Co-authored-by: Alfred <alfred@Alfreds-Mac-mini.local>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix workspace.yaml collision detection * Store workspace view state under metadata * Keep top-level update out of workspace updates * Remove unused workspace root selector * Allow repo updates below workspace roots * Propagate repo state probe errors * Generalize workspace yaml collision coverage
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Adds a command adapter for Trae so that 'openspec init --tools trae' generates commands in .trae/commands/opsx/ directory. Per Trae's convention, the command name uses the bare ID (e.g., 'apply') instead of the prefixed format used by Claude (e.g., 'OPSX: Apply'). Fixes missing Trae adapter registration in CommandAdapterRegistry.init().
|
Important Review skippedToo many files! This PR contains 833 files, which is 683 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (7)
📒 Files selected for processing (833)
You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughAdds a Trae tool command adapter that emits markdown files at ChangesTrae Adapter Integration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/core/command-generation/adapters/trae.ts`:
- Around line 23-31: formatFile in adapters/trae.ts injects content.id and
content.description directly into YAML frontmatter causing invalid YAML when
values contain special characters; update formatFile to use the same
escapeYamlValue utility used by sibling adapters (e.g., claude.ts, cursor.ts) to
sanitize both the name and description before interpolation. Locate the
formatFile method and replace direct interpolation of content.id and
content.description with escaped values (call escapeYamlValue(content.id) and
escapeYamlValue(content.description)), ensuring description remains quoted in
the frontmatter as in other adapters.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 994aa242-f91e-4b26-80ad-06f65cd96244
📒 Files selected for processing (3)
src/core/command-generation/adapters/index.tssrc/core/command-generation/adapters/trae.tssrc/core/command-generation/registry.ts
alfred-openspec
left a comment
There was a problem hiding this comment.
Thanks for jumping on Trae support. I think this needs one more pass before merge: add focused adapter/registry/update tests, escape the YAML frontmatter values, and update the supported-tools docs or cite the verified Trae command contract, since trunk currently documents Trae as skills-only.
- Add escapeYamlValue to trae adapter for safe YAML frontmatter output - Add traeAdapter unit tests covering toolId, getFilePath, formatFile, and YAML escaping - Add trae registry tests for get/has/getAll - Update supported-tools.md: Trae command path from 'Not generated' to '.trae/commands/opsx/<id>.md'
|
Thanks for the review. All requested changes have been addressed and verified locally:
Lint, build, and all command-generation tests pass. |
alfred-openspec
left a comment
There was a problem hiding this comment.
Re-approved latest head 7b5b114. The requested Trae follow-ups are in: YAML escaping for name/description, focused adapter and registry tests, and supported-tools docs. I reran the focused command-generation tests and typecheck in a temp worktree, and they passed. The Trae + weak-model explore-mode behavior in #1203 is a separate prompt/model compliance issue, not a blocker for this adapter.
642e93b to
837e600
Compare
Summary
Fixes a bug where
openspec init --tools traedid not generate any commands because the Trae adapter was never registered inCommandAdapterRegistry.init().Changes
src/core/command-generation/adapters/trae.ts(new): Trae command adapter. Writes to.trae/commands/opsx/<id>.mdwith bare command ID as thenamefield (per Trae convention).src/core/command-generation/adapters/index.ts: ExporttraeAdapter.src/core/command-generation/registry.ts: RegistertraeAdapterinCommandAdapterRegistry.init().Root Cause
The adapter file and export were missing entirely —
CommandAdapterRegistry.init()had no entry for Trae, so the tool was silently skipped during init.Testing
All existing tests pass (
npm test). Thetest/core/command-generation/adapters.test.tssuite (92 tests) covers adapter formatting and confirms the fix works correctly.Summary by CodeRabbit
New Features
Documentation
Tests