# claude-skills — a Claude Code plugin marketplace One repository, one marketplace, several plugins. Register it once and install whichever pieces you want; each plugin is independent and carries its own manifest, docs, and tests. ## Installation ``` /plugin marketplace add https://git.noodles.cam/claude-skills/marketplace.git ``` Working from a local clone? Point at the directory instead: ``` /plugin marketplace add /path/to/marketplace ``` Then install what you need: ``` /plugin install tea@claude-skills /plugin install tdl@claude-skills ``` Use `/plugin` to enable, disable, or update them later. ## What ships here | Plugin | Commands | What it does | |---|---|---| | [`tea`](plugins/tea) | `/tea:auth` `/tea:issue` `/tea:sync` `/tea:use` | Gitea issues as local markdown, cleanly layered. Issues are units of work offline first and tracker rows second; a PreToolUse hook blocks any `tea` command that would run under a login Claude picked instead of the operator | | [`tdl`](plugins/tdl) | `/tdl:audit` | Three Dots Labs Go conventions as an enforceable rule set — audits a Go project against 63 CQRS/DDD/Clean-Architecture rules by severity, or scaffolds services, handlers, entities, repositories and Watermill adapters from templates that already follow them | ## Layout ``` .claude-plugin/ marketplace.json the catalog — one entry per plugin, source is a path into plugins/ plugins/ tea/ .claude-plugin/plugin.json agents/ hooks/ skills/ tests/ README.md AGENTS.md tdl/ .claude-plugin/plugin.json skills/ ``` A plugin's root is its directory under `plugins/`, so `${CLAUDE_PLUGIN_ROOT}` resolves inside it and every path a plugin uses stays relative to itself. Adding a plugin means adding a directory here plus one entry in `marketplace.json` — nothing else in the repo needs to know about it. ## Development `tea` has a test suite; run it from its own directory so the tests resolve their root correctly: ``` cd plugins/tea && python3 -m unittest discover -s tests ```