Repository navigation
Conversation
Proposes the skill-script model as the solution for pluggable backends. Backend skills are directories in `.squad/skills/` containing handler scripts that replace built-in markdown tool handlers in ToolRegistry. Covers: filesystem audit of swappable vs. non-swappable paths, config surfaces (config.json + squad.config.ts), skill directory contract, handler/lifecycle types, SkillScriptLoader, ToolRegistry changes, HookPipeline prerequisite, CLI commands, error handling, authoring guide, and distribution options.
|
closing as #162 has been cancelled |
|
@EmmittJ i actually really liked this idea a lot, and the Squad seemed jazzed about it as well. I'm not sure we didn't do some work inspired by this, I'll check on it. @tamirdresher and got an amazing amount done over the weekend. |
|
Hey @EmmittJ — wanted to circle back on this. Even though the PR wasn't merged directly, your skill system design proposal had a real impact on what we built. Over the weekend the team shipped a knowledge-sharing skill system that's clearly inspired by your work here: What landed (v0.8.21–v0.8.25):
What we haven't built yet (and think would be great features):
The team agrees these remaining pieces — especially the executable skill-script layer and ToolRegistry integration — would be excellent features to implement. They'd take the skill system from knowledge-sharing to full extensibility. We're going to:
Thanks for the thoughtful design work. It made a difference. 🚀 |
Adds minimal source entry points, TypeScript build configs, and npm files lists to packages/squad-sdk and packages/squad-cli so the insider publish pipeline can produce valid packages. - squad-sdk: src/index.ts exports VERSION constant (placeholder) - squad-cli: src/cli.ts placeholder binary entry point - Both packages: tsconfig.json extending root, build scripts, files lists - Root: build script now chains workspace builds Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
@bradygaster I appreciate the credit here! I might have prematurely closed the pr after I saw the issue closed, but I am happy to see a good chunk of it was implemented. I can take a look at the new issue and see if there is anything I can help contribute towards! Again, thanks for the credit. |
…dlers Implements the executable skill handler layer from PR github#215 design proposal. Inspired by github#297. - handler-types.ts: full type system for skill-script model (SkillHandler<T>, HandlerLifecycle, concern interfaces, defineHandler() helper) - skill-script-loader.ts: SkillScriptLoader class, resolveSkillPath(), wrapSkillHandler(), CONCERN_TOOL_MAP - applySkillHandlers(): ToolRegistry integration for runtime handler replacement - test/skill-script-loader.test.ts: 33 tests covering load, execute, error paths Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dlers Implements the executable skill handler layer from PR github#215 design proposal. Inspired by github#297. - handler-types.ts: full type system for skill-script model (SkillHandler<T>, HandlerLifecycle, concern interfaces, defineHandler() helper) - skill-script-loader.ts: SkillScriptLoader class, resolveSkillPath(), wrapSkillHandler(), CONCERN_TOOL_MAP - applySkillHandlers(): ToolRegistry integration for runtime handler replacement - test/skill-script-loader.test.ts: 33 tests covering load, execute, error paths Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dlers Implements the executable skill handler layer from PR github#215 design proposal. Inspired by github#297. - handler-types.ts: full type system for skill-script model (SkillHandler<T>, HandlerLifecycle, concern interfaces, defineHandler() helper) - skill-script-loader.ts: SkillScriptLoader class, resolveSkillPath(), wrapSkillHandler(), CONCERN_TOOL_MAP - applySkillHandlers(): ToolRegistry integration for runtime handler replacement - test/skill-script-loader.test.ts: 33 tests covering load, execute, error paths Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dlers Implements the executable skill handler layer from PR github#215 design proposal. Inspired by github#297. - handler-types.ts: full type system for skill-script model (SkillHandler<T>, HandlerLifecycle, concern interfaces, defineHandler() helper) - skill-script-loader.ts: SkillScriptLoader class, resolveSkillPath(), wrapSkillHandler(), CONCERN_TOOL_MAP - applySkillHandlers(): ToolRegistry integration for runtime handler replacement - test/skill-script-loader.test.ts: 33 tests covering load, execute, error paths Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Summary
Adds the skill system design proposal for #162.
Defines the skill-script model — the mechanism for making Squad's storage layer pluggable without locking teams into the Squad CLI runtime. Backend skills are directories in
.squad/skills/containing handler scripts that replace built-in markdown tool handlers inToolRegistry.What's covered
node:fs-hardcoded tools are a structural problem; why npm packages fail the portability constraint; verdicts on prompt injection, platform adapters, MCP servers, and npm packages.squad/path, distinguishing backend-swappable from file-onlySKILL.mdfrontmatter, script naming convention, lifecycle hooks (init/dispose), and the case for skills over npm packagesconfig.json+squad.config.tssurfaces, resolution rules, noop semantics, path containment security, env var expansionSkillHandler,HandlerLifecycle, per-concern interfaces,ConcernMap,AllHandlers, disjoint-name compile-time assertion, tool argument typesSkillScriptLoaderalgorithm, startup pipeline, teardown, signal handling, Windows path normalizationToolRegistrychanges —applySkillHandlers(), handler wrapper,HookPipelineprerequisitesquad configusage, extendedsquad doctoroutput with per-skill validationWhat this is not
Design proposal only — no code changes. Implementation tracked in #162.