Agent skill

Build Plugin

by techwolf-ai in techwolf-ai/ai-first-toolkit

Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it.

MITAuto-check passedAgent Workflows

Install Build Plugin

skills CLI
$ npx skills add techwolf-ai/ai-first-toolkit --skill build-plugin -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install techwolf-ai/ai-first-toolkit build-plugin --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/techwolf-ai/ai-first-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/tool-build-kit/skills/build-plugin .claude/skills/build-plugin && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
build-plugin
GitHub stars
132
Token cost
~2.4k tokens
SKILL.md length
1,340 words
Files
5 (incl. references)
Skills in repo
29
Repo updated
First seen
Licence
MIT

At a glance

Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it.

  • Works in 5 steps: Establish context (AskUserQuestion, do… → Analyze → Assemble → …
  • Asked to bundle tools into one plugin
  • SKILL.md covers How this relates to build-mcp, The four phases, Phase 0: Establish context… and Branch table (the spine of…, plus 5 more sections
  • Calls claude; reaches gitlab.com

What it does

Build Plugin is an agent skill from techwolf-ai/ai-first-toolkit. Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it. Use when asked to bundle tools into one plugin, package tools for a colleague, publish a plugin to a marketplace, share my tools with my team, or ship a plugin. Asks who it's for and where it's hosted, then walks analyze, assemble, ship, and maintain, tailored to that answer. Sibling to build-mcp.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/assemble.md`, `references/maintain.md` and `references/marketplace.md`).

It sits in Agent Workflows, covering MCP servers and Hooks and plugins. It works with Model Context Protocol. The repository describes itself as: Open-source Claude Code skills and Codex skills for AI-first work. Audit, re-engineer, and bootstrap projects with AI-first design principles. The licence is MIT.

When your agent uses it

  • Asked to bundle tools into one plugin
  • Package tools for a colleague
  • Publish a plugin to a marketplace
  • Share my tools with my team

Example prompts

  • “s for and where it”
  • “/build-plugin”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Establish context (AskUserQuestion, do this first)
  2. Analyze
  3. Assemble
  4. Ship
  5. Maintain

What it can do on your machine

Read from SKILL.md and the folder at commit 2ee7841. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • gitlab.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Build Plugin loads about 2.4k tokens when it runs, and up to ~4.7k if it reads all its reference files. Until then it costs about 103 tokens; SKILL.md has 1,340 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from techwolf-ai/ai-first-toolkit at commit 2ee7841, republished under its MIT licence (© techwolf-ai). 1,340 words, ~2,447 tokens.

Download SKILL.mdSave it as .claude/skills/build-plugin/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
build-plugin
description
Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it. Use when asked to bundle tools into one plugin, package tools for a colleague, publish a plugin to a marketplace, share my tools with my team, or ship a plugin. Asks who it's for and where it's hosted, then walks analyze, assemble, ship, and maintain, tailored to that answer. Sibling to build-mcp.

Build Plugin

Bundle many tools (skills, hooks, agents, MCP servers) into one installable Claude Code plugin and distribute it. The defining move of this skill: establish who the plugin is for and where it will live with AskUserQuestion before assembling anything, then tailor every phase to that answer. A personal one-project bundle and a public team marketplace share almost nothing past "assemble", so branch early and commit to the branch.

How this relates to build-mcp

build-mcp builds one MCP server: analyze a service, implement the tools, deploy, scale. build-plugin bundles many tools (including MCP servers produced by build-mcp) into a single shareable unit and distributes it. When build-mcp reaches its Distribute phase for a team or public audience, it hands off here: packaging into a plugin and listing it on a marketplace is this skill's job. Use build-mcp to make a server, then build-plugin to ship it alongside your skills, hooks, and agents.

The four phases

  1. Analyze: decide what tools go in the bundle, and name it.
  2. Assemble: build the plugin folder and manifest, test it locally with claude --plugin-dir.
  3. Ship: put it on a marketplace repo, on the right git host, public or private, with one-click enablement for a team.
  4. Maintain: versions, updates, ownership, and admin controls.

Run them in order. The AskUserQuestion answers from Phase 0 gate Ship and Maintain.

Phase 0: Establish context (AskUserQuestion, do this first)

Before assembling anything, branch on the user's context. Ask the audience question first; it is the headline decision and it cascades into everything downstream. Then ask the git host only if it is still ambiguous. Ask one question at a time.

Question 1 (always, ask first): Audience:

Use AskUserQuestion:

  • header: "Audience"
  • question: "Who is this plugin for? This decides where it's hosted and how it's shared."
  • options:
    1. "Just me": personal bundle of my own tools, one machine or a couple of projects.
    2. "My team / org": shared internally, installed by colleagues.
    3. "Public / external": published openly for anyone to install.

Question 2 (conditional, skip for "Just me"): Git host:

Skip entirely for "Just me" (no remote needed). Ask for team or public:

  • header: "Git host"
  • question: "Where will the marketplace repo live?"
  • options:
    1. "GitHub": unlocks the owner/repo shorthand and Anthropic's public directory.
    2. "GitLab or other git host": works via the full https://...git URL, no GitHub mirror needed.
    3. "Not sure yet": decide during Ship; GitHub is the smoothest default.

Confirm the resolved tuple back to the user in one line before proceeding (e.g. "Bundling a team plugin of three skills plus one MCP server, hosted on a private GitHub marketplace repo"). That tuple drives the branch table below.

Branch table (the spine of this skill)

PhaseJust meTeam/org (GitHub)Team/org (GitLab/other)Public
ShipN/A, no marketplace. Load via claude --plugin-dir, or scaffold it in your skills dir (claude plugin init) to auto-load every session.Marketplace repo on GitHub; entry source: {source:"github", repo:"org/repo"} or a relative "./path". Private repo optional to keep it internal.Marketplace repo on GitLab/Bitbucket/self-hosted; entry source: {source:"url", url:"https://...git"}.Public marketplace repo; entry by host as above. Be deliberate: anyone who knows the repo can install, and plugins run arbitrary code.
EnableN/A, stop here. It is already loaded on your machine./plugin marketplace add org/repo then /plugin install name@marketplace; or auto-enable for the team via project .claude/settings.json./plugin marketplace add https://gitlab.com/team/plugins.git then /plugin install name@marketplace; same .claude/settings.json auto-enable.Same commands; owner/repo shorthand is GitHub-only, others use the full URL.
MaintainBump version in plugin.json for a clean update boundary; you are the only user./plugin marketplace update; one maintainer per plugin; fixes land via merge request. Org-wide enforcement via managed settings.Same, via the GitLab/other merge-request flow.Same, plus a public changelog and a clear versioning policy.

If a cell says "N/A, stop here" for the chosen branch, say so explicitly and move on. Do not pad it. The Enable row is the team-facing half of Ship (turning the marketplace on for colleagues), not a separate phase.

Reference files:

  • references/assemble.md: plugin folder layout, the manifest fields, moving existing ~/.claude/ tools in, local claude --plugin-dir testing, skill namespacing, claude plugin validate.
  • references/marketplace.md: the marketplace.json shape, per-host source types, add and install commands, public vs private and auth.
  • references/team-enablement.md: project .claude/settings.json auto-enable, org-wide managed-settings enforcement.
  • references/maintain.md: updates, version bumps, ownership, fixes via merge request.

Load only the references the current branch and phase need. Progressive disclosure.

Show full SKILL.md (605 more words)Show less

Phase 1: Analyze

Decide what goes in the bundle before you build the folder.

  1. Inventory the tools. List every skill, hook, agent, and MCP server the plugin should carry. A plugin can hold any mix; each type sits in its own place in the layout (see assemble.md).
  2. Draw the boundary. One plugin is one coherent unit that updates together. If two groups of tools serve different audiences or version on different clocks, that is two plugins.
  3. Name it. Kebab-case, distinct, describes the bundle not one tool inside it. The name becomes the skill namespace (/my-plugin:skill) and the marketplace entry key.
  4. Note what already exists loose. Tools sitting in ~/.claude/skills, ~/.claude/agents, or a personal settings.json will move into the plugin and the loose originals get deleted, so you do not run duplicates (assemble.md covers this).

Deliverable: the plugin name plus a list of what it will contain. Confirm with the user before assembling.

Phase 2: Assemble

Read references/assemble.md. Build the folder to the layout, write the manifest, then test locally.

  1. Create the plugin dir. Only plugin.json goes inside .claude-plugin/; skills/, agents/, hooks/hooks.json, and .mcp.json sit at the plugin ROOT.
  2. Write .claude-plugin/plugin.json with name, description, version, author.
  3. Move the inventoried tools in and delete the loose originals.
  4. Validate, then load-test. claude plugin validate . checks the manifest and layout with no login. claude plugin details <name> lists the skills, hooks, and servers it discovered, also login-free. claude --plugin-dir ./my-plugin (it also accepts a .zip) loads it into a live session so you can invoke a tool; that one needs you logged in.

For a "Just me" bundle this is the last substantive phase: it is loaded, it works, stop.

Phase 3: Ship

Only for team or public. Read references/marketplace.md, and references/team-enablement.md for the auto-enable path. Branch on the git-host answer.

  1. Create the marketplace repo, or reuse an existing one. Add .claude-plugin/marketplace.json at its root with name, owner, and a plugins[] entry for this plugin.
  2. Set the entry source by host: relative "./path" if the plugin lives in the same repo, {source:"github", repo:"owner/repo"} for GitHub, or {source:"url", url:"https://...git"} for GitLab, Bitbucket, or self-hosted. There is no gitlab source type.
  3. Choose public vs private to match the audience. A private repo keeps a team plugin internal; a public repo is installable by anyone who knows it, running arbitrary code with the user's privileges, so make that choice deliberately.
  4. Confirm the install path a colleague runs: /plugin marketplace add owner/repo (GitHub shorthand) or the full https://...git URL for any other host, then /plugin install name@marketplace.

Phase 4: Maintain

Read references/maintain.md. Branch lightly; the mechanics are the same across hosts.

  1. Updates. Users pull new versions with /plugin marketplace update or at startup.
  2. Version boundary. Bump version in plugin.json so users get a clean update boundary; omit it and Claude Code treats every commit SHA as a new version.
  3. Ownership. One maintainer per plugin. Fixes land via merge request, since the source is a git repo.
  4. Org controls (team/public, admin job). Force-install, an allowlist (strictKnownMarketplaces), or a denylist (blockedMarketplaces) live in a managed-settings file, set by an admin, not per user (team-enablement.md).

Done criteria

  • The plugin validates (claude plugin validate) and its tools show up (claude plugin details); loading it via claude --plugin-dir in a session invokes at least one.
  • It is on a marketplace repo the resolved audience can reach, public or private matching that audience (or, for "Just me", it is loaded locally and there is no marketplace).
  • The user can name exactly how a colleague installs it, two-command or one-click, matching the audience answer.

© techwolf-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in plugins/tool-build-kit/skills/build-plugin of techwolf-ai/ai-first-toolkit.

  • SKILL.md
  • references/assemble.md
  • references/maintain.md
  • references/marketplace.md
  • references/team-enablement.md

Open the folder on GitHubat commit 2ee7841

Compare with similar skills

Build Plugin next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Build Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Build Plugin this skilltechwolf-ai/ai-first-toolkit132—~2.4kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official37k11 repos~3.1kAutomated safety check: PassApache-2.0
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence
OpenpetsOpenPetsHQ/openpets1.3k—~2.1kAutomated safety check: PassMIT
Claude Automation Recommenderanthropics/claude-plugins-official37k3 repos~2.7kAutomated safety check: NotesApache-2.0
Mistral Vibe Plugin Creatormistralai/mistral-vibe5.1k—~3.1kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    37k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Openpets

    OpenPetsHQ/openpets

    A skill your agent uses whenever the user wants to build, extend, debug, test, validate, locally load, package, or publish an OpenPets plugin; work with the OpenPets Plugin SDK v3, plugin manifest…

    1.3k GitHub stars~2.1k tokensUpdated 10 days ago
    Agent WorkflowsAuto-check passed
  • Claude Automation Recommender

    anthropics/claude-plugins-official

    Official

    Scans a codebase and suggests which Claude Code hooks, subagents, skills, plugins and MCP servers fit its stack, without changing any files.

    37k GitHub starsUsed in 3 repos~2.7k tokens
    Agent WorkflowsAuto-check: notes
  • Mistral Vibe Plugin Creator

    mistralai/mistral-vibe

    Official

    Shows how to build a Vibe plugin package in the Agent Plugins 1.0 format, with a plugin.json manifest and optional skills, MCP servers, hooks and other components.

    5.1k GitHub stars~3.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Audits a project's agent configuration, instruction drift, hooks, MCP and AI maintainability, then reports prioritized findings with evidence and next actions.

    7.2k GitHub stars~5.2k tokensUpdated yesterday
    Agent WorkflowsAuto-check: notes

More from techwolf-ai/ai-first-toolkit

All 29 skills in this repo
  • Task Profile

    techwolf-ai/ai-first-toolkit

    Mine the user's Claude Code + Cowork session history into a structured task profile, what they do with AI, how often, how successfully where friction lives, then propose atomic skills that would…

    132 GitHub stars~3.6k tokensUpdated 8 days ago
    Auto-check passed
  • Token Doctor

    techwolf-ai/ai-first-toolkit

    Personal diagnosis of where your Claude Code + Cowork spend goes.

    132 GitHub stars~4.1k tokensUpdated 8 days ago
    Auto-check passed
  • Session Search

    techwolf-ai/ai-first-toolkit

    Find context from past Claude Code (CLI) and Claude Cowork (desktop) sessions on this Mac.

    132 GitHub stars~1.1k tokensUpdated 8 days ago
    Auto-check passed
  • Write Blog Post

    techwolf-ai/ai-first-toolkit

    Write or develop a blog post. An agent skill from techwolf-ai/ai-first-toolkit.

    132 GitHub stars~1.1k tokensUpdated 8 days ago
    Auto-check passed
  • Write Opinion

    techwolf-ai/ai-first-toolkit

    Write or develop an opinion piece (opiniestuk/op-ed). An agent skill from techwolf-ai/ai-first-toolkit.

    132 GitHub stars~695 tokensUpdated 8 days ago
    Auto-check passed
  • AI Firstify

    techwolf-ai/ai-first-toolkit

    Analyze, re-engineer, or bootstrap projects to align with AI-first design principles.

    132 GitHub stars~646 tokensUpdated 8 days ago
    Auto-check passed

Categories

Questions about Build Plugin

What does Build Plugin do?

Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it. Build Plugin is an agent skill from techwolf-ai/ai-first-toolkit. Bundle skills, hooks, agents, or an MCP server into one installable Claude Code plugin and ship it.

When should I use Build Plugin?

Build Plugin fits situations like: asked to bundle tools into one plugin; package tools for a colleague; publish a plugin to a marketplace; share my tools with my team.

How do I install Build Plugin in Claude Code?

Run `npx skills add techwolf-ai/ai-first-toolkit --skill build-plugin -a claude-code`. Or copy the skill folder (plugins/tool-build-kit/skills/build-plugin in techwolf-ai/ai-first-toolkit) into .claude/skills/build-plugin in your project. Claude Code loads it when a task matches its description.

How do I install Build Plugin in Codex?

Run `npx skills add techwolf-ai/ai-first-toolkit --skill build-plugin -a codex`. Or copy the skill folder (plugins/tool-build-kit/skills/build-plugin in techwolf-ai/ai-first-toolkit) into .agents/skills/build-plugin in your project. Codex loads it when a task matches its description.

Can I use Build Plugin in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add techwolf-ai/ai-first-toolkit --skill build-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/build-plugin, .gemini/skills/build-plugin, .github/skills/build-plugin and .opencode/skills/build-plugin in your project.

What does Build Plugin need to run?

Going by SKILL.md and its folder, Build Plugin needs the command-line tools its instructions call (claude).

Does Build Plugin access the network?

SKILL.md names 1 domain. In commands or code: gitlab.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Build Plugin safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Build Plugin use?

Build Plugin is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Build Plugin use?

About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.3k tokens, read only when the agent opens those files.

What are the alternatives to Build Plugin?

Skills that share tags, products or a category with Build Plugin: MCP Integration for Plugins (anthropics/claude-plugins-official, 37k stars), Crush Configuration (charmbracelet/crush, 29k stars), Openpets (OpenPetsHQ/openpets, 1.3k stars) and Claude Automation Recommender (anthropics/claude-plugins-official, 37k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Build Plugin?

techwolf-ai (a GitHub organization) maintains it in techwolf-ai/ai-first-toolkit, which has 132 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on September 29, 2026.

Source: techwolf-ai/ai-first-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.