feat: VS Code extension consuming the same core as the Obsidian plugin - #29
Merged
Conversation
New vscode/ package: activity bar TreeView of skills grouped by tool (18 tools, official SVG icons), click to open the file, refresh, and marketplace install via the skills CLI with an agent picker limited to installed tools. Isometric by construction: the extension imports src/scanner, tool-configs, tool-svgs, types and marketplace directly; the two obsidian APIs the core touches (parseYaml, requestUrl) resolve to a shim (js-yaml + fetch) through an esbuild alias, so src/ stays the single source of truth for both frontends. Only change to the plugin side: TOOL_SVGS moved to tool-svgs.ts (pure data) with a re-export from tool-icons.ts, so the vscode strict typecheck does not drag DOM globals; the 5 Obsidian consumers keep their imports unchanged. Plugin build and lint stay green. Verified: tsc strict clean, production bundle exports activate and deactivate, the real scanner runs in plain node through the shim (154 skills, 15 tools detected on this machine), vsce packages a 61 KB vsix, and the vsix installs into Cursor.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
installSkillAsync replaces the sync execSync path so the extension host never blocks on a 2 minute install. Tool icons are written to global storage during refresh (awaited) instead of fire-and-forget inside getTreeItem, so first render cannot race the file write.
This was referenced Jul 23, 2026
Railly
added a commit
that referenced
this pull request
Jul 24, 2026
…OpenHands, Goose) (#34) Bumps manifest, package, and versions.json to 0.8.0. Minor release: since 0.7.5 the plugin gained six new agents and Windsurf's skills dir (#28); the other merged PRs (#29-#31, #33) are the VS Code extension and shared-constant work that don't change plugin runtime. Tagging 0.8.0 triggers the release workflow (build + attestation + GitHub release with main.js, manifest.json, styles.css).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ports agentfiles to VS Code as a second frontend over the exact same core, per the autogrill decisions below.
What ships (slice 1)
skills addflow as the Obsidian install modalOut of slice 1 (deliberate): dashboard/analytics webview, conversation explorer, settings UI, marketplace browse.
Isometric by construction
The extension imports
src/scanner,tool-configs,tool-svgs,types,marketplacedirectly by path. The two obsidian APIs the core touches (parseYaml,requestUrl) resolve tovscode/src/obsidian-shim.ts(js-yaml + fetch) through an esbuild alias, sosrc/remains the single source of truth for both frontends and cannot drift.Only change to the plugin side:
TOOL_SVGSmoved tosrc/tool-svgs.ts(pure data) with a re-export fromtool-icons.ts, because the extension's strict tsc otherwise drags DOM globals fromrenderToolIcon. The 5 Obsidian view consumers keep their imports unchanged; plugin build + lint verified green after the split.No monorepo restructure: deliberately minimal blast radius on a published plugin. A proper packages/ split can come later as its own decision.
Verification
tsc --noEmitstrict: clean (browser-global files excluded from the vscode project, not from the plugin)activate/deactivatevsce packageproduces a 61 KB.vsix(7 files); installed into Cursor successfully (railly.agentfiles-vscodelisted)Not done on purpose
.vsixinstalls locally withcode --install-extension vscode/agentfiles-vscode-0.1.0.vsix