Public
Like
1
claude-plugins-registry
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v62View latest version
A lightweight, serverless API for the Claude Code Plugins registry.
- Framework: Hono (lightweight web framework)
- Database: Val Town SQLite with Drizzle ORM
- Runtime: Val Town
claude-plugins-api/
├── backend/
│ ├── index.http.ts # Main Hono app entry point
│ ├── database/
│ │ ├── schema.ts # Drizzle schema definitions
│ │ └── db.ts # Database connection & migrations
│ └── routes/
│ ├── resolve.ts # Plugin resolution endpoint
│ ├── search.ts # Search & filter endpoint
│ └── plugins.ts # Plugin stats endpoint
└── shared/
└── types.ts # Shared TypeScript interfaces
GET /
Returns API status and available endpoints.
Response:
{ "name": "Claude Plugins API", "version": "1.0.0", "status": "healthy", "endpoints": { "resolve": "GET /api/resolve/:identifier", "search": "GET /api/search?q=query&category=cat&limit=20&offset=0", "stats": "GET /api/plugins/:namespace/:name/stats" } }
GET /api/resolve/:identifier
Resolves a plugin identifier to its git URL and metadata. Increments download statistics.
Parameters:
identifier- Plugin identifier in format@namespace/nameornamespace/name
Examples:
/api/resolve/@davila7/supabase-toolkit/api/resolve/wshobson/claude-code-essentials
Response:
{ "name": "supabase-toolkit", "namespace": "davila7", "gitUrl": "https://github.com/davila7/claude-code-templates.git", "metadata": { "description": "Complete Supabase workflow...", "version": "1.0.0", "author": { "name": "Daniel Avila", "url": null, "email": null }, "homepage": null, "repository": "https://github.com/davila7/claude-code-templates.git", "license": null, "keywords": ["supabase", "database", "postgresql"], "category": "database", "commands": [], "agents": [], "mcpServers": [] } }
GET /api/search?q=query&category=cat&limit=20&offset=0
Search and filter plugins with pagination.
Query Parameters:
q(optional) - Search query (searches name, description, keywords, namespace)category(optional) - Filter by categorylimit(optional) - Results per page (default: 20, max: 100)offset(optional) - Pagination offset (default: 0)
Response:
{ "plugins": [ { "id": "uuid", "name": "supabase-toolkit", "namespace": "davila7", "gitUrl": "https://github.com/davila7/claude-code-templates.git", "description": "Complete Supabase workflow...", "version": "1.0.0", "author": { "name": "Daniel Avila", "url": null, "email": null }, "homepage": null, "repository": "https://github.com/davila7/claude-code-templates.git", "license": null, "keywords": ["supabase", "database"], "category": "database", "commands": [], "agents": [], "mcpServers": [], "verified": false, "downloads": 42, "createdAt": "2025-01-15T10:00:00.000Z", "updatedAt": "2025-01-15T10:00:00.000Z" } ], "total": 150, "limit": 20, "offset": 0 }
GET /api/plugins/:namespace/:name/stats
Get download statistics for a specific plugin.
Parameters:
namespace- Plugin namespacename- Plugin name
Example:
/api/plugins/davila7/supabase-toolkit/stats
Response:
{ "downloads": { "total": 1234, "week": 56, "month": 234 }, "lastDownloaded": "2025-01-15T14:30:00.000Z" }