-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Description
Feature: User-global custom skills/commands (override mechanism)
Summary
OpenSpec currently lets users customize project artifact workflows via schemas, but does not provide a way to add or override tool-specific commands/skills (such as /openspec-team-apply-change) without patching project code or package templates.
This feature would introduce OS-specific global directories (e.g. ~/.config/openspec/commands, ~/.config/openspec/skills), enabling a user to define custom commands/skills that OpenSpec overlays onto generated tool integrations. If a global version and a built-in version share a name, the user's version takes precedence. These global skills/commands would be placed in the appropriate tool-specific folders (.claude/commands, .claude/skills, etc.) when running openspec init or openspec update.
Motivation
- Teams and individuals often need new commands or workflow skills (e.g., a new team orchestration action) without modifying package code or copying project files.
- Built-in OpenSpec templates are not extensible, so custom commands/skills must be managed separately.
- A global override mechanism—mirroring schemas—lets users safely customize, share, and shadow built-in commands.
- This would improve portability, shareability, and maintainability for advanced workflows and integrations.
Acceptance Criteria
- User can define custom skills/commands in OS-specific global directories such as
~/.config/openspec/skillsor~/.config/openspec/commands. - Global custom skills/commands are automatically copied and overlaid on top of generated built-in commands during
openspec init/openspec update. - If a global skill/command matches the name of a built-in, the global version wins (shadowing).
- Skills/commands are validated before installation to avoid breaking tool integrations.
- CLI tooling supports listing, discovering, and editing global vs project vs package skills.
References & Design Details
- Precedence: project-local overrides (future), then user-global, then package built-in. Same name = override.
- Possible directory structure:
~/.config/openspec/skills/<name>~/.config/openspec/commands/<name>
- Would support use cases like
/openspec-team-apply-changeand user-specific customizations. - Background discussion (search for related issues)
Questions
- How should deletion/masking work? (Explicit tombstone file? DisabledSkills config?)
- Should future project-local overrides also exist, for even more granular control?
Request
Please consider implementing a user-global custom skills/commands mechanism for OpenSpec that overlays generated tool integrations, enabling extensible, maintainable customization for multi-tool teams.