Skip to content

feat(skills): inspector sync + endpoints for Shared Project Skills V1#2248

Draft
ignaciojimenezr wants to merge 1 commit into
mainfrom
worktree-project-skills-v1
Draft

feat(skills): inspector sync + endpoints for Shared Project Skills V1#2248
ignaciojimenezr wants to merge 1 commit into
mainfrom
worktree-project-skills-v1

Conversation

@ignaciojimenezr
Copy link
Copy Markdown
Collaborator

  • Adds a sync service that pulls active project-shared skills from Convex into a managed cache at `~/.mcpjam/projects//skills/` so the existing filesystem-backed loader/file-tree code keeps working unchanged.
  • Threads an optional `projectId` through `/list`, `/get`, `/files`, and `/read-file` and inserts the shared cache between global and project-local skills (first-match-wins, so a user's own global skill still overrides a shared one with the same name).
  • Adds 5 new endpoints — `/list-project`, `/sync-project`, `/publish-to-project`, `/update-published`, `/archive-published` — that proxy to the Convex `projectSkills` mutations. Publish surfaces a structured `nameCollision` 409 so the UI can offer rename-and-publish.
  • Mirrors the new endpoints in `mcp-skills-api.ts`.

UI (popover split, publish toggle, per-row actions) and inspector tests land in follow-up commits on this branch. Backend half: mcpjam-backend#326.

Inspector half of Shared Project Skills V1. Local/private skills under
~/.mcpjam/skills and friends keep their disk-native behavior. When the
caller supplies a projectId, the loader also reads from a managed cache
directory at ~/.mcpjam/projects/<projectId>/skills/ that mirrors active
rows from the projectSkills Convex table.

- Adds a sync service that materializes Convex rows into the cache dir,
  removes stale entries, and exposes a helper for reading a local skill
  bundle into the shape the publish/update mutations expect.
- Extends getSkillsDirs() in both the REST route and the AI SDK tool
  loader to insert the shared cache between global personal skills and
  project-local skills, preserving first-match-wins precedence.
- Threads an optional projectId through /list, /get, /files, and
  /read-file so cached shared skills participate in the existing flows.
- Adds /list-project, /sync-project, /publish-to-project,
  /update-published, and /archive-published endpoints that proxy to
  Convex. Publish surfaces the structured nameCollision error so the
  UI can offer a rename-and-publish path.
- Mirrors the new endpoints in the client API module.

UI (popover split, publish-to-project toggle, owner-aware actions) and
inspector tests land in follow-up commits on the same branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@chelojimenez
Copy link
Copy Markdown
Contributor

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

Internal preview

Preview URL: https://mcp-inspector-pr-2248.up.railway.app
Deployed commit: 262bf5b
PR head commit: d40135e
Backend target: staging fallback.
Health: ❌ Convex unreachable — see job logs (staging may need convex deploy)
Access is employee-only in non-production environments.

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.

2 participants