A Claude Code plugin marketplace.
한국어 문서는 README-ko.md를 참고하세요.
In Claude Code:
/plugin marketplace add somaz94/claude-plugins
/plugin install census@somaz94
Or from your shell, without an interactive session:
claude plugin marketplace add somaz94/claude-plugins
claude plugin install census@somaz94| Plugin | What it does |
|---|---|
census |
Read-only audit of scattered .claude/ configs — catalog what you have, detect drift, and triage which items are portable enough to share with a team |
atlas |
A browsable HTML map of everything a project can actually reach — commands, agents, skills, hooks, MCP servers and memory, across your user config, this repo, and every installed plugin |
doc-mirror |
Keeps translated documentation pairs from drifting apart — finds the README whose mirror was never written, the mirror whose source moved on without it, and the half that quietly lost a section |
shell-portability |
Reviews shell scripts for bash/zsh portability — the axis shellcheck does not cover, because it checks the shell the shebang declares, not the one the script gets run by |
session-continuity |
Carries long-running work across a context reset — keeps a plan file current as you go, and generates the handoff prompt a fresh session starts from |
release-guards |
Puts a confirmation in front of the release actions you cannot take back — tag create/delete, release publish, and edits to the automation that generates them |
sensitive-guard |
Stops a secret at the moment of commit — a last-mile gate over the lines a commit adds, plus an on-demand scan before you publish |
Each plugin's documentation, in both languages:
census— English · 한국어atlas— English · 한국어doc-mirror— English · 한국어shell-portability— English · 한국어session-continuity— English · 한국어release-guards— English · 한국어sensitive-guard— English · 한국어
Every plugin here addresses something that goes wrong quietly while an assistant works at speed. Not the failures that stop you — those announce themselves. The ones that pass every check and are wrong anyway:
- Your config drifts. The same agent exists twice with different content, and nothing reports which copy won. —
census - You install a plugin and cannot see what it added. A session resolves four layers at once, and nothing shows them together — so a hook whose script you deleted stays registered, looking configured while doing nothing. —
atlas - You update one README and not its translation. The build is green, the linter is quiet, the review sees one file, and the other language quietly becomes last quarter's instructions. —
doc-mirror - A script runs under the other shell.
shellcheckcleared it, because it checked the shell the shebang declares, not the one it got run by. —shell-portability - The context window compacts. Older turns are summarized, and the half-finished edit and the reason behind a decision blur away. —
session-continuity - A tag gets pushed because it looked like the next step after a green build. —
release-guards - A secret rides along in a diff nobody re-read. —
sensitive-guard
Each is a gate or a report at the point the mistake is cheap to catch, not a summary delivered after it landed. Where a better tool already exists — gitleaks for secret detection, shellcheck for shell linting — these do not replace it; they run where it does not, which is inside the session, before the commit returns.
Nothing here edits your work without asking. census is read-only by contract, the guards ask rather than block, and every hook fails open: a guard that breaks the workflow when it malfunctions gets switched off, and then it guards nothing.
.claude-plugin/marketplace.json catalog consumed by /plugin marketplace add
plugins/<name>/ one directory per plugin
.claude-plugin/plugin.json plugin manifest (name, version)
skills/<skill>/SKILL.md skills, invoked as /<plugin>:<skill>
agents/<agent>.md subagents, dispatched by their description
commands/<command>.md slash commands, invoked as /<plugin>:<command>
hooks/hooks.json hook registrations, rooted at ${CLAUDE_PLUGIN_ROOT}
scripts/ bundled executables, referenced via ${CLAUDE_PLUGIN_ROOT}
_shared.py helpers vendored identically into each plugin
_shared.py is vendored, not imported. A plugin is installed on its own, so at runtime nothing outside its own directory is on disk and there is no shared package to import from. Every copy is therefore byte-identical, and CI fails when they diverge.
That check is not ceremony. Before it existed these helpers were each written twice by hand and the copies had drifted: one frontmatter parser undid '' escaping and the other showed it as text, and one document-shape counter read a # inside a fenced shell block as a heading while the other did not. Two tools built to detect configuration drift had drifted from each other.
Edit plugins/census/scripts/_shared.py — the canonical copy — then run bash tests/sync-shared.sh to propagate it.
Every plugin here is versioned in two places that must agree — its own plugin.json and its entry in marketplace.json. The marketplace entry is the version users actually receive, so CI fails the build when the two disagree.
Plugins version independently, and so do their releases: a tag is <plugin>-v<X.Y.Z> — census-v0.3.1, shell-portability-v0.1.0. Pushing one releases that plugin alone, with notes built from the commits under its own directory since its own previous tag. A repo-wide tag would drag every plugin's version up whenever any one of them shipped. Tags of the retired repo-wide form (v0.3.0 and earlier) remain in history.
claude --plugin-dir ./plugins/census # load a plugin without installing it
claude plugin validate . # validate the marketplace
claude plugin validate ./plugins/census # validate one pluginRun /reload-plugins inside a session to pick up edits without restarting.
bash tests/run.sh # every check CI runs, before pushing
bash tests/release-status.sh # which plugins ship a version that was never taggedrelease-status exists because a forgotten tag is silent. The version users receive is the one in marketplace.json, so a bump that lands on main is already published — the tag only carries the history. Nothing complains until the next release of that plugin, whose notes then cover both ranges at once, because git-cliff starts from that plugin's previous tag. It never fails a build: the bump commit legitimately reaches main before the tag exists.
MIT — see LICENSE.