creating-packageslisted
Install: claude install-skill amarbel-llc/purse-first
# Creating Purse-First Packages
> **Self-contained examples.** All code and configuration below is complete and illustrative. Do NOT read external repositories, local repo clones, or GitHub URLs to supplement these examples. Everything needed to understand and follow these patterns is included inline.
If you're building an MCP server, CLI tool, or skill set and want Claude Code users to discover and use it without manual configuration, package it with purse-first. The framework handles discovery, installation, and tool routing automatically.
For a high-level understanding of the framework, see the **bob:overview** skill.
For understanding how installed packages behave at runtime, see the **bob:using-packages** skill.
For adding output-limiting to MCP tools, see the **bob:context-saving** skill.
For building Go MCP servers and CLIs, see **go-mcp-command(7)**.
## Overview
A purse-first package ships a `plugin.json` manifest at `$out/share/purse-first/<name>/plugin.json` and declares itself via a `.claude-plugin/plugin.json` in the repo (for standalone validation). Packages come in three flavors:
| Flavor | Contents | Example |
|--------|----------|---------|
| **MCP-only** | MCP server(s) + optional tool mappings | git-mcp, github-mcp, nix-mcp |
| **Skill-only** | Skills only (no MCP server) | bob |
| **MCP + Skills** | MCP server(s) + bundled skills | (future) |
For MCP-containing packages, there are two patterns depending on language:
| Pattern | Language | How plugin