Add com.gorlix.project-skills to the catalog - #31
Draft
gorlix wants to merge 3 commits into
Draft
Conversation
Lets a Paca project register its own Agent Skills (agentskills.io format) via a dedicated plugin, backed by a project-scoped Postgres table and served over the plugin's own HTTP routes. Implements point 3 of Paca-AI/paca#453. Backend-only in this first release (no frontend/mcp/skills sections in the manifest, so those artifact URLs are omitted per the catalog's own per-surface-optional convention). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gorlix
marked this pull request as draft
September 2, 2026 14:23
Skill bodies now link to real project Documents instead of storing plain text, and the plugin ships a frontend (sidebar tree + metadata page) for the first time — adds frontend_tar_gz_url.
Adds mcp_tar_gz_url — the plugin now ships MCP tools (project_skills_list, project_skills_get).
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.
Summary
Adds
com.gorlix.project-skillstocatalog/plugins.json— a plugin that lets a Paca project register its own Agent Skills (agentskills.io format: SKILL.md, YAML frontmatter + body) via a dedicated CRUD HTTP API, backed by a project-scoped Postgres table.Implements point 3 of Paca-AI/paca#453 ("a Paca project can register its own skills, as a plugin, zero core changes"), per the maintainer's explicit go-ahead on that issue.
frontend/mcp/skillssections in the manifest, so those artifact URLs are omitted (this catalog's own README documents each artifact URL as optional per-surface).Notable design decision (documented in full in the plugin's README)
Skill names created through this plugin are prefixed with the ecosystem's
paca-convention, but are not wired into the plugin manifest's ownskills.baseUrl/namesmechanism. That mechanism is populated once, at install time, from a static tarball extracted to disk byservices/api's Installer — a WASM plugin has no filesystem access at runtime, so there's no way to keep it in sync with skills a project's members create or edit live. This plugin instead serves its skills from its own/api/v1/plugins/com.gorlix.project-skills/projects/:projectId/skillsroutes.Testing
go test -race ./...— 86.5% coverage, all passing.golangci-lint run— clean.wasip1/wasm build (1.9MB).docker compose -f deploy/docker-compose.dev.ymlinstance: full CRUD cycle over real HTTP (create with autopaca-prefix, 409 on duplicate, 400 on a reservedpaca-trigger-name, list, get, patch, delete, 404 after delete) against the real Postgres-backed plugin schema. Also confirmed empirically that a skill created here does not leak intoGET /api/v1/skills.manifest.tar.gz,backend.tar.gz,migrations.tar.gz) verified to return HTTP 200 and correct byte sizes before opening this PR.catalog/plugins.jsonvalidated withjqafter the edit.Type of Change
New catalog entry (marketplace listing) for a new third-party plugin.
Checklist
namefollows reverse-DNS notation and is stable.versionis semver and matches the release tag.