Files
Tabish Bidiwale 810f12fd43 feat: add argument support to archive slash command
Add $ARGUMENTS placeholder to the /openspec:archive slash command to allow explicit change ID specification, improving safety and matching CLI behavior.

Changes:
- Add $ARGUMENTS to archive command frontmatter in OpenCode configurator
- Update archive command template with argument validation steps
- Add rewriteArchiveFile method to handle managed section updates
- Update AGENTS.md documentation for archive command usage

This change makes it possible for users to run `/openspec:archive <change-id>` instead of relying on context inference, reducing the risk of archiving the wrong change.
2025-10-15 15:20:36 +11:00

2.0 KiB

CLI Update Specification Delta

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 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

ADDED Requirements

Requirement: Archive Command Argument Support

The archive slash command template SHALL support optional change ID arguments for tools that support $ARGUMENTS placeholder.

Scenario: Archive command with change ID argument

  • WHEN a user invokes /openspec:archive <change-id> with a change ID
  • THEN the template SHALL instruct the AI to validate the provided change ID against openspec list
  • AND use the provided change ID for archiving if valid
  • AND fail fast if the provided change ID doesn't match an archivable change

Scenario: Archive command without argument (backward compatibility)

  • WHEN a user invokes /openspec:archive without providing a change ID
  • THEN the template SHALL instruct the AI to identify the change ID from context or by running openspec list
  • AND proceed with the existing behavior (maintaining backward compatibility)

Scenario: OpenCode archive template generation

  • WHEN generating the OpenCode archive slash command file
  • THEN include the $ARGUMENTS placeholder in the frontmatter
  • AND wrap it in a clear structure like <ChangeId>\n $ARGUMENTS\n</ChangeId> to indicate the expected argument
  • AND include validation steps in the template body to check if the change ID is valid