-
Notifications
You must be signed in to change notification settings - Fork 1.3k
feat: change the frontmatter of the Codebuddy Slash Commands #462
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
Merged
TabishB
merged 4 commits into
Fission-AI:main
from
neroyang22:feat/fix-codebuddy-frontmatter-fields
Jan 9, 2026
+169
−16
Merged
Changes from 1 commit
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
17 changes: 17 additions & 0 deletions
17
openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/proposal.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| ## Why | ||
|
|
||
| CodeBuddy slash command configurator currently uses inconsistent frontmatter fields compared to other tools. It uses `category` and `tags` fields (like Crush) but should use `argument-hint` field (like Factory, Auggie, and Codex) for better consistency. Additionally, the `proposal` command is missing frontmatter fields entirely. After reviewing CodeBuddy's official documentation, the correct format should use `description` and `argument-hint` fields with square bracket parameter format. | ||
|
|
||
| ## What Changes | ||
|
|
||
| - Replace `category` and `tags` fields with `argument-hint` field in CodeBuddy frontmatter | ||
| - Remove incorrect `name` field (not used by CodeBuddy) | ||
| - Add missing frontmatter fields to the `proposal` command | ||
| - Use correct square bracket format for `argument-hint` parameters (e.g., `[change-id]`) | ||
| - Ensure consistency with CodeBuddy's official documentation | ||
|
|
||
| ## Impact | ||
|
|
||
| - Affected specs: cli-init, cli-update | ||
| - Affected code: `src/core/configurators/slash/codebuddy.ts` | ||
| - CodeBuddy users will get proper argument hints in the correct format for slash commands | ||
75 changes: 75 additions & 0 deletions
75
...nges/archive/2026-01-09-fix-codebuddy-frontmatter-fields/specs/cli-init/spec.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| ## MODIFIED Requirements | ||
|
|
||
| ### Requirement: Slash Command Configuration | ||
|
|
||
| The init command SHALL generate slash command files for supported editors using shared templates. | ||
|
|
||
| #### Scenario: Generating slash commands for Antigravity | ||
| - **WHEN** the user selects Antigravity during initialization | ||
| - **THEN** create `.agent/workflows/openspec-proposal.md`, `.agent/workflows/openspec-apply.md`, and `.agent/workflows/openspec-archive.md` | ||
| - **AND** ensure each file begins with YAML frontmatter that contains only a `description: <stage summary>` field followed by the shared OpenSpec workflow instructions wrapped in managed markers | ||
| - **AND** populate the workflow body with the same proposal/apply/archive guidance used for other tools so Antigravity behaves like Windsurf while pointing to the `.agent/workflows/` directory | ||
|
|
||
| #### Scenario: Generating slash commands for Claude Code | ||
| - **WHEN** the user selects Claude Code during initialization | ||
| - **THEN** create `.claude/commands/openspec/proposal.md`, `.claude/commands/openspec/apply.md`, and `.claude/commands/openspec/archive.md` | ||
| - **AND** populate each file from shared templates so command text matches other tools | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for CodeBuddy Code | ||
| - **WHEN** the user selects CodeBuddy Code during initialization | ||
| - **THEN** create `.codebuddy/commands/openspec/proposal.md`, `.codebuddy/commands/openspec/apply.md`, and `.codebuddy/commands/openspec/archive.md` | ||
| - **AND** populate each file from shared templates that include CodeBuddy-compatible YAML frontmatter for the `description` and `argument-hint` fields | ||
| - **AND** use square bracket format for `argument-hint` parameters (e.g., `[change-id]`) | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Cline | ||
| - **WHEN** the user selects Cline during initialization | ||
| - **THEN** create `.clinerules/workflows/openspec-proposal.md`, `.clinerules/workflows/openspec-apply.md`, and `.clinerules/workflows/openspec-archive.md` | ||
| - **AND** populate each file from shared templates so command text matches other tools | ||
| - **AND** include Cline-specific Markdown heading frontmatter | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Crush | ||
| - **WHEN** the user selects Crush during initialization | ||
| - **THEN** create `.crush/commands/openspec/proposal.md`, `.crush/commands/openspec/apply.md`, and `.crush/commands/openspec/archive.md` | ||
| - **AND** populate each file from shared templates so command text matches other tools | ||
| - **AND** include Crush-specific frontmatter with OpenSpec category and tags | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Cursor | ||
| - **WHEN** the user selects Cursor during initialization | ||
| - **THEN** create `.cursor/commands/openspec-proposal.md`, `.cursor/commands/openspec-apply.md`, and `.cursor/commands/openspec-archive.md` | ||
| - **AND** populate each file from shared templates so command text matches other tools | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Factory Droid | ||
| - **WHEN** the user selects Factory Droid during initialization | ||
| - **THEN** create `.factory/commands/openspec-proposal.md`, `.factory/commands/openspec-apply.md`, and `.factory/commands/openspec-archive.md` | ||
| - **AND** populate each file from shared templates that include Factory-compatible YAML frontmatter for the `description` and `argument-hint` fields | ||
| - **AND** include the `$ARGUMENTS` placeholder in the template body so droid receives any user-supplied input | ||
| - **AND** wrap the generated content in OpenSpec managed markers so `openspec update` can safely refresh the commands | ||
|
|
||
| #### Scenario: Generating slash commands for OpenCode | ||
| - **WHEN** the user selects OpenCode during initialization | ||
| - **THEN** create `.opencode/commands/openspec-proposal.md`, `.opencode/commands/openspec-apply.md`, and `.opencode/commands/openspec-archive.md` | ||
| - **AND** populate each file from shared templates so command text matches other tools | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Windsurf | ||
| - **WHEN** the user selects Windsurf during initialization | ||
| - **THEN** create `.windsurf/workflows/openspec-proposal.md`, `.windsurf/workflows/openspec-apply.md`, and `.windsurf/workflows/openspec-archive.md` | ||
| - **AND** populate each file from shared templates (wrapped in OpenSpec markers) so workflow text matches other tools | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Kilo Code | ||
| - **WHEN** the user selects Kilo Code during initialization | ||
| - **THEN** create `.kilocode/workflows/openspec-proposal.md`, `.kilocode/workflows/openspec-apply.md`, and `.kilocode/workflows/openspec-archive.md` | ||
| - **AND** populate each file from shared templates (wrapped in OpenSpec markers) so workflow text matches other tools | ||
| - **AND** each template includes instructions for the relevant OpenSpec workflow stage | ||
|
|
||
| #### Scenario: Generating slash commands for Codex | ||
| - **WHEN** the user selects Codex during initialization | ||
| - **THEN** create global prompt files at `~/.codex/prompts/openspec-proposal.md`, `~/.codex/prompts/openspec-apply.md`, and `~/.codex/prompts/openspec-archive.md` (or under `$CODEX_HOME/prompts` if set) | ||
| - **AND** populate each file from shared templates that map the first numbered placeholder (`$1`) to the primary user input (e.g., change identifier or question text) | ||
| - **AND** wrap the generated content in OpenSpec markers so `openspec update` can refresh the prompts without touching surrounding custom notes |
56 changes: 56 additions & 0 deletions
56
...es/archive/2026-01-09-fix-codebuddy-frontmatter-fields/specs/cli-update/spec.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| ## MODIFIED Requirements | ||
|
|
||
| ### Requirement: Slash Command Updates | ||
|
|
||
| The update command SHALL refresh existing slash command files for configured tools without creating new ones, and ensure the OpenCode archive command accepts change ID arguments. | ||
|
|
||
| #### Scenario: Updating slash commands for Antigravity | ||
| - **WHEN** `.agent/workflows/` contains `openspec-proposal.md`, `openspec-apply.md`, and `openspec-archive.md` | ||
| - **THEN** refresh the OpenSpec-managed portion of each file so the workflow copy matches other tools while preserving the existing single-field `description` frontmatter | ||
| - **AND** skip creating any missing workflow files during update, mirroring the behavior for Windsurf and other IDEs | ||
|
|
||
| #### Scenario: Updating slash commands for Claude Code | ||
| - **WHEN** `.claude/commands/openspec/` contains `proposal.md`, `apply.md`, and `archive.md` | ||
| - **THEN** refresh each file using shared templates | ||
| - **AND** ensure templates include instructions for the relevant workflow stage | ||
|
|
||
| #### Scenario: Updating slash commands for CodeBuddy Code | ||
| - **WHEN** `.codebuddy/commands/openspec/` contains `proposal.md`, `apply.md`, and `archive.md` | ||
| - **THEN** refresh each file using the shared CodeBuddy templates that include YAML frontmatter for the `description` and `argument-hint` fields | ||
| - **AND** use square bracket format for `argument-hint` parameters (e.g., `[change-id]`) | ||
| - **AND** preserve any user customizations outside the OpenSpec managed markers | ||
|
|
||
| #### Scenario: Updating slash commands for Cline | ||
| - **WHEN** `.clinerules/workflows/` contains `openspec-proposal.md`, `openspec-apply.md`, and `openspec-archive.md` | ||
| - **THEN** refresh each file using shared templates | ||
| - **AND** include Cline-specific Markdown heading frontmatter | ||
| - **AND** ensure templates include instructions for the relevant workflow stage | ||
|
|
||
| #### Scenario: Updating slash commands for Crush | ||
| - **WHEN** `.crush/commands/` contains `openspec/proposal.md`, `openspec/apply.md`, and `openspec/archive.md` | ||
| - **THEN** refresh each file using shared templates | ||
| - **AND** include Crush-specific frontmatter with OpenSpec category and tags | ||
| - **AND** ensure templates include instructions for the relevant workflow stage | ||
|
|
||
| #### Scenario: Updating slash commands for Cursor | ||
| - **WHEN** `.cursor/commands/` 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 | ||
|
|
||
| #### 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 | ||
|
|
||
| #### Scenario: Updating slash commands for Windsurf | ||
| - **WHEN** `.windsurf/workflows/` 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 |
6 changes: 6 additions & 0 deletions
6
openspec/changes/archive/2026-01-09-fix-codebuddy-frontmatter-fields/tasks.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| ## 1. Implementation | ||
|
|
||
| - [x] 1.1 Update CodeBuddy frontmatter to use `argument-hint` instead of `category` and `tags` | ||
| - [x] 1.2 Add missing frontmatter fields to the `proposal` command | ||
| - [x] 1.3 Ensure all three commands (proposal, apply, archive) have consistent frontmatter structure | ||
| - [x] 1.4 Test the changes by running `openspec init` and `openspec update` |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.