Skip to content

User-global custom skills/commands (with override precedence, like schemas) #757

@askpatrickw

Description

@askpatrickw

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/skills or ~/.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-change and 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions