Skip to content

feat: VS Code extension consuming the same core as the Obsidian plugin - #29

Merged
Railly merged 2 commits into
mainfrom
feat/vscode-extension
Jul 23, 2026
Merged

feat: VS Code extension consuming the same core as the Obsidian plugin#29
Railly merged 2 commits into
mainfrom
feat/vscode-extension

Conversation

@Railly

@Railly Railly commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Ports agentfiles to VS Code as a second frontend over the exact same core, per the autogrill decisions below.

What ships (slice 1)

  • Activity bar TreeView of skills grouped by tool: 18 tools, official SVG icons (rendered to per-tool SVG files in global storage), skill count per tool, only tools present on the machine appear
  • Click opens the skill file in the editor (VS Code IS a markdown editor; no custom editor needed)
  • Refresh command and view button
  • Install from GitHub: input owner/repo, QuickPick of agents limited to installed tools (mapped via TOOL_TO_AGENT), shells the same skills add flow as the Obsidian install modal

Out 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, marketplace directly by path. The two obsidian APIs the core touches (parseYaml, requestUrl) resolve to vscode/src/obsidian-shim.ts (js-yaml + fetch) through an esbuild alias, so src/ remains the single source of truth for both frontends and cannot drift.

Only change to the plugin side: TOOL_SVGS moved to src/tool-svgs.ts (pure data) with a re-export from tool-icons.ts, because the extension's strict tsc otherwise drags DOM globals from renderToolIcon. 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 --noEmit strict: clean (browser-global files excluded from the vscode project, not from the plugin)
  • Production bundle (83 KB) evaluates and exports activate/deactivate
  • The real scanner runs in plain Node through the shim: 154 skills, 15 tools detected on this machine, including the 6 agents added in feat: support 6 new agents matching skillkit's 14 connectors #28
  • vsce package produces a 61 KB .vsix (7 files); installed into Cursor successfully (railly.agentfiles-vscode listed)
  • Obsidian plugin: build + eslint green after the tool-svgs split; bundle contains the changes

Not done on purpose

  • No Marketplace publish: needs a publisher account and is an external, irreversible action; the .vsix installs locally with code --install-extension vscode/agentfiles-vscode-0.1.0.vsix
  • No plugin version bump (Obsidian release flow is manual)

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.
@vercel

vercel Bot commented Jul 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenfiles-web Ready Ready Preview, Comment Jul 23, 2026 6:33am

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.
@Railly
Railly merged commit 939001b into main Jul 23, 2026
3 checks passed
@Railly
Railly deleted the feat/vscode-extension branch July 23, 2026 06:34
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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant