{"id":49805065,"url":"https://github.com/amarbel-llc/purse-first","last_synced_at":"2026-05-27T23:00:59.254Z","repository":{"id":338465163,"uuid":"1157987066","full_name":"amarbel-llc/purse-first","owner":"amarbel-llc","description":"Nix-based package framework for Claude Code: bundles CLIs, MCP servers, and skills into composable plugins; ships go-mcp/rust-mcp libraries and a marketplace CLI","archived":false,"fork":false,"pushed_at":"2026-05-24T00:58:31.000Z","size":3876,"stargazers_count":0,"open_issues_count":45,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-24T02:27:03.754Z","etag":null,"topics":["claude-code","golang","mcp","nix-flake","package-framework","plugin-system","rust"],"latest_commit_sha":null,"homepage":null,"language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amarbel-llc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-14T16:09:44.000Z","updated_at":"2026-05-24T00:58:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/amarbel-llc/purse-first","commit_stats":null,"previous_names":["amarbel-llc/purse-first"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/amarbel-llc/purse-first","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amarbel-llc%2Fpurse-first","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amarbel-llc%2Fpurse-first/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amarbel-llc%2Fpurse-first/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amarbel-llc%2Fpurse-first/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amarbel-llc","download_url":"https://codeload.github.com/amarbel-llc/purse-first/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amarbel-llc%2Fpurse-first/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33586821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","golang","mcp","nix-flake","package-framework","plugin-system","rust"],"created_at":"2026-05-12T18:21:28.543Z","updated_at":"2026-05-27T23:00:59.248Z","avatar_url":"https://github.com/amarbel-llc.png","language":"MDX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# purse-first\n\nA package framework for bundling CLIs, MCP servers, and skills into composable, Nix-built packages for humans and agents like Claude Code.\n\n## Architecture\n\npurse-first has three layers:\n\n| Layer | Description |\n|-------|-------------|\n| **Protocol** | A convention for Nix derivations to declare Claude Code capabilities via well-known paths under `share/purse-first/` |\n| **CLI** | The `purse-first` binary — implements tool routing (hooks), marketplace generation, installation, and validation |\n| **Libraries** | `go-mcp` and `rust-mcp` — building blocks for creating MCP servers that conform to the protocol |\n\n## Package Flavors\n\nPackages come in three flavors:\n\n| Flavor | Description | Examples |\n|--------|-------------|----------|\n| **MCP package** | Ships an MCP server with optional tool mappings | grit, get-hubbed, lux |\n| **Skill package** | Ships skills only | robin, tap-dancer, bob |\n| **MCP + Skill package** | Ships both MCP server and skills | chix |\n\n## Current Packages\n\n- **grit** (MCP) — Git operations via MCP: stage, commit, push, log, blame, and more\n- **get-hubbed** (MCP) — GitHub CLI wrapper via MCP: issues, pull requests, and repos\n- **lux** (MCP) — LSP multiplexer via MCP: hover, definitions, references, and symbols\n- **chix** (MCP + Skill) — Nix MCP server and skills for Claude Code: build, evaluate, search, and manage flakes\n- **robin** (Skill) — BATS integration testing skill with bundled assertion libraries, sandcastle isolation, and justfile patterns\n- **tap-dancer** (Skill) — TAP-14 writer libraries (Go + Rust) and skill for producing spec-compliant TAP output\n- **bob** (Skill) — purse-first's own skill package: plugin-mcp, context-saving, and go-cli-framework skills\n\n## Getting Started\n\npurse-first packages are built with Nix and installed via the `purse-first` CLI. A **marketplace** is an aggregation of packages into a single Claude Code plugin (the `.claude-plugin/` output).\n\n### Installation\n\n```sh\n# Install purse-first CLI\nnix profile install github:friedenberg/purse-first\n\n# Generate a marketplace from packages\npurse-first marketplace generate --config marketplace-config.json --output ~/.claude/plugins/marketplace\n```\n\nFor the complete protocol specification, see [docs/purse-first-protocol.md](docs/purse-first-protocol.md).\n\n## Development\n\nThis is a Nix-based project. See the project-specific CLAUDE.md for build commands and architecture details.\n\n```sh\n# Build the project\njust build\n\n# Run tests\njust test\n\n# Format code\njust fmt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famarbel-llc%2Fpurse-first","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famarbel-llc%2Fpurse-first","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famarbel-llc%2Fpurse-first/lists"}