Create a new MCP plugin scaffold aligned to the homelab canonical plugin spec. Use when the user wants to create a new plugin repo, scaffold a plugin in Python, Rust, or TypeScript, choose manifests and runtime files, define commands/agents/skills, or turn docs and API references into an implementation plan for a new plugin.
From plugin-labnpx claudepluginhub jmagar/claude-homelab --plugin plugin-labThis skill uses the workspace's default tool permissions.
references/scaffold-plan-template.mdreferences/surface-to-template-map.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Calculates TAM/SAM/SOM using top-down, bottom-up, and value theory methodologies for market sizing, revenue estimation, and startup validation.
Create a new plugin scaffold that matches the current homelab canonical structure.
Collect these inputs before proposing structure or generating files:
python, rust, or typescriptIf any input is missing, ask for it before scaffolding.
Unless the user says otherwise, assume:
*_help companion tool/health.env as the runtime config sourceFor the exact template file that implements each assumption, see references/surface-to-template-map.md.
Do not scaffold blindly from memory when the plugin depends on an SDK, protocol, or API that may have changed.
Review the supplied docs or repo context first. If the request depends on current SDK or protocol behavior, browse primary sources before finalizing the scaffold plan.
Focus research on:
Always write a plan for net-new plugins. Skip it only for single-file additions to existing plugins where the scope is unambiguous.
The plan should cover:
Use the fill-in-the-blanks template in references/scaffold-plan-template.md to structure the plan output.
Generate or update the plugin to include these 15 baseline surfaces. Each surface has a brief description and a canonical template location — see references/surface-to-template-map.md for the full mapping.
pyproject.toml / Cargo.toml / package.json) — declares the package name, version, dependencies, and entry point for the chosen runtime.claude-plugin/plugin.json — Claude plugin manifest; defines name, description, userConfig, transport, and the tool list Claude exposes to users.codex-plugin/plugin.json — Codex plugin manifest; parallel to the Claude manifest for OpenAI Codex agent compatibility.mcp.json — MCP server declaration consumed by Claude Code; specifies command, args, and env for launching the server locally.app.json — application-level metadata used by the plugin marketplace and install toolingREADME.md — user-facing setup and usage guide; must cover install, env vars, tool reference, and examplesCLAUDE.md — Claude-facing development guide; covers repo layout, key conventions, and how to work on this plugin safelyCHANGELOG.md — version history in Keep a Changelog format; version must stay in sync with all manifestsDockerfile — container image definition; must not bake in env vars or secretsdocker-compose.yaml — local development and production Compose definition; wires env, ports, and volumesentrypoint.sh — container startup script; handles signal trapping, env validation, and process launchJustfile — task runner with canonical targets: dev, test, lint, build, docker-build, docker-up.env.example — credential and config template with placeholder values; tracked in git, never contains real secrets.gitignore, .dockerignore) — exclude secrets, build artifacts, caches, and runtime state.github/workflows/ci.yaml) — runs lint, type-check, tests, and Docker build on every PRPlus: live test scaffold — at least one test that hits the real service; includes a skip guard for environments without credentials.
The three language layers are ~/workspace/plugin-templates/py/ (Python), ~/workspace/plugin-templates/rs/ (Rust), and ~/workspace/plugin-templates/ts/ (TypeScript). Use the layer that matches the target language for runtime and toolchain files.
Add commands, agents, skills, hooks, resources (MCP protocol: data exposed to the model, such as file contents or API responses), and prompts (MCP protocol: reusable prompt templates registered with the server) only when they are justified by the plugin's actual scope.
Prefer the canonical shared template assets under ~/workspace/plugin-templates/ plus the selected language implementation layer over ad hoc file generation.
When both exist:
~/workspace/plugin-templates/ for shared plugin-contract files~/workspace/plugin-templates/<lang>/ directory for runtime and toolchain filesWhen writing plan documents or report files, use the timestamp format YYYYMMDD-HHMMSS in the path. Example:
docs/scaffold-plans/<YYYYMMDD-HHMMSS>-<plugin-name>.md
At minimum, provide:
If you do not scaffold immediately, make the next execution step obvious and specific.