Add skills/instructions/workflows support extensions to support project cross-cutting concerns #4291
AlexanderAshitkin
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem Overview
In the current design extensions are vertical - they add a command, a hook, a tool integration. SpecKit extensions can ship capability, but not the knowledge of how to use it. For example, all 152 extensions advertise exactly two things —
commandsandhooks. Nothing else.In reality capabilities inherently contain with a horizontal part - a reusable recipies for using that capability in this codebase. And that part currently has no convenient place to live inside the extension.
Consequently, extension installs the capability and after that the team separately hand-copies the guidance into every repo,
creating additional work and discrepancies.
Say I write an extension involving design of a specific database:
command.
to ship today.
This isn't specific to databases. It's the same for anything where "here's our rules" is only half of "here's how we
work with the tool." Also, please consider that many operations could be down through a pure vibe coding. Teams could
have reasonable expectations, that rules codified in extended spec-kit commands are not bypassed by general chat
sessions. The change also has a potential for context and tokens efficiency improvements.
Real life case
My team installs a secure-design extension alternating specify and some other commands. It contains skills for security
review in different subject areas (UI/Database/Backend).
Spec Kit can't install it, so we maintain a wrapper whose entire job is to reach into the installed extension, extract
the skill, and install it separately.
That wrapper is redundant and inconvenient:
specify extension removedoesn't clean it up).Why the existing layers don't cover it
I want to pre-empt the obvious "just use X" answers, because I went looking for X first.
Why not a preset? Presets override templates and commands.
Why not a bundle? A bundle contains pointers to an existing Spec Kit primitive a bundle installs, it cannot extend them.
Why not skills, they already exist? There's no way to declare a skill that could serve as a universally applicable rule
for a repository once extension installed.
Proposed solution
Extend
extension.ymland existing mechanisms to support installation of additional primitives:Instructions are harness-specific (Claude -
.claude/rules/*.md, Copilot -.github/instructions/*.instructions.md,Cursor-
.cursor/rules/*.mdc), and that's up to discussion. So this can't be one path — it has to be specificper-integration, and it has to degrade honestly on agents that can't do it rather than emulating something they'll
ignore.
Precedent
This wouldn't be a new kind of change to
provides::provides.memoryalongside commands and templates. Templatesshipped; memory was dropped during implementation without a recorded decision. I read this as descoped, not decided
against.
provides:withtemplatesfor a directly analogous reason: "the extension systemsupports commands and hooks but has no way to provide custom artifact templates."
So the mechanism has been extended before, for this exact class of reason. This would be the next instance rather than a
novel design.
Questions to discuss
I have a working prototype of the skills and instructions, but requesting a discussion as per
CONTRIBUTING.md.All reactions