Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
Claude Code plugin marketplace for skills and hooks
This repository packages several Claude Code plugins as a marketplace, so you can install only the parts you want. The plugins cover skills, commands, hooks, and workflows for brainstorming, review, planning, releases, and session helpers.
Builders who use Claude Code and want reusable plugins for how they work with the agent.
You can add proven Claude Code workflows like review, planning, and release support without assembling them yourself.
What it does
Marketplace installation
Adds the repo as a Claude Code marketplace and installs individual plugins by name.
Brainstorm skill
Guides a four-phase design dialogue from understanding through next steps.
Review tools
Includes PR review, interactive git diff review, and a writing-style skill for concise comments.
Planning workflow
Provides a planning command, execution skill, plan annotation hook, and an automated plan review agent.
Release tools
Helps create versioned releases with auto-generated notes and last-tag summaries.
Thinking tools
Adds dialectic analysis, root-cause investigation, and codex consultation skills.
Skill evaluation hook
Forces skill evaluation before every response.
Workflow helpers
Adds session helpers for knowledge capture, confusion handling, clipboard copy, and backlog items.
How to get it
- 1Test a plugin locally
claude --plugin-dir plugins/brainstorm
- 2brainstorm — skill
cp -r plugins/brainstorm/skills/brainstorm ~/.claude/skills/ cp -r plugins/brainstorm/scripts/ ~/.claude/skills/brainstorm/scripts cp -r plugins/brainstorm/references/ ~/.claude/skills/brainstorm/references
- 3review — skills (review-pr + git-review + writing-style)
cp -r plugins/review/skills/pr ~/.claude/skills/ cp -r plugins/review/skills/git-review ~/.claude/skills/ cp -r plugins/review/skills/writing-style ~/.claude/skills/ chmod +x ~/.claude/skills/git-review/scripts/git-review.py
- 4planning — command + exec skill + hook
cp plugins/planning/commands/make.md ~/.claude/commands/ cp -r plugins/planning/skills/exec ~/.claude/skills/ cp -r plugins/planning/scripts/ ~/.claude/commands/scripts cp -r plugins/planning/references/ ~/.claude/commands/references cp plugins/planning/scripts/plan-annotate.py ~/.claude/scripts/ chmod +x ~/.claude/scripts/plan-annotate.py chmod +x ~/.claude/skills/exec/scripts/*.sh
- 5release-tools — skills + scripts
cp -r plugins/release-tools/skills/new ~/.claude/skills/ cp -r plugins/release-tools/skills/last-tag ~/.claude/skills/ chmod +x ~/.claude/skills/new/scripts/*.sh
- 6thinking-tools — skills
cp -r plugins/thinking-tools/skills/ask-codex ~/.claude/skills/ cp -r plugins/thinking-tools/skills/dialectic ~/.claude/skills/ cp -r plugins/thinking-tools/skills/root-cause-investigator ~/.claude/skills/
README
cc-thingz
Things to make Claude Code even better — hooks, skills, and commands, organized as a marketplace of independent plugins.
This is an unapologetically opinionated set. Every skill here is something I actually use — some multiple times a day (brainstorm, plan, review), others less often but worth having in the toolbox. There are plenty of plugin collections out there, from random grab-bags to well-organized catalogs. This one is mine, and it reflects how I work. Even if you don't need my particular toolbox, it might give you ideas for building your own and making Claude Code do what you want it to do.
Install
Add the marketplace, then install the plugins you want:
/plugin marketplace add umputun/cc-thingz
/plugin install brainstorm@umputun-cc-thingz
/plugin install review@umputun-cc-thingz
/plugin install planning@umputun-cc-thingz
/plugin install release-tools@umputun-cc-thingz
/plugin install thinking-tools@umputun-cc-thingz
/plugin install skill-eval@umputun-cc-thingz
/plugin install workflow@umputun-cc-thingz
Test a plugin locally:
claude --plugin-dir plugins/brainstorm
Manual install (alternative)
Copy the files you want to your Claude Code config directory manually.
brainstorm — skill:
cp -r plugins/brainstorm/skills/brainstorm ~/.claude/skills/
cp -r plugins/brainstorm/scripts/ ~/.claude/skills/brainstorm/scripts
cp -r plugins/brainstorm/references/ ~/.claude/skills/brainstorm/references
Note: when installed manually, update ${CLAUDE_PLUGIN_ROOT} references inside brainstorm/SKILL.md to use ~/.claude/skills/brainstorm instead.
review — skills (review-pr + git-review + writing-style):
cp -r plugins/review/skills/pr ~/.claude/skills/
cp -r plugins/review/skills/git-review ~/.claude/skills/
cp -r plugins/review/skills/writing-style ~/.claude/skills/
chmod +x ~/.claude/skills/git-review/scripts/git-review.py
Note: update the /review:writing-style reference inside pr/SKILL.md to /writing-style when installed manually.
planning — command + exec skill + hook:
cp plugins/planning/commands/make.md ~/.claude/commands/
cp -r plugins/planning/skills/exec ~/.claude/skills/
cp -r plugins/planning/scripts/ ~/.claude/commands/scripts
cp -r plugins/planning/references/ ~/.claude/commands/references
cp plugins/planning/scripts/plan-annotate.py ~/.claude/scripts/
chmod +x ~/.claude/scripts/plan-annotate.py
chmod +x ~/.claude/skills/exec/scripts/*.sh
Note: when installed manually, update ${CLAUDE_PLUGIN_ROOT} references inside exec/SKILL.md, make.md, and prompt files to use the appropriate local paths instead.
Add the plan-annotate hook to ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "ExitPlanMode",
"hooks": [{
"type": "command",
"command": "~/.claude/scripts/plan-annotate.py",
"timeout": 345600
}]
}]
}
}
release-tools — skills + scripts:
cp -r plugins/release-tools/skills/new ~/.claude/skills/
cp -r plugins/release-tools/skills/last-tag ~/.claude/skills/
chmod +x ~/.claude/skills/new/scripts/*.sh
Note: when installed manually, update the ${CLAUDE_PLUGIN_ROOT} references inside new/SKILL.md to use the appropriate local paths instead.
thinking-tools — skills:
cp -r plugins/thinking-tools/skills/ask-codex ~/.claude/skills/
cp -r plugins/thinking-tools/skills/dialectic ~/.claude/skills/
cp -r plugins/thinking-tools/skills/root-cause-investigator ~/.claude/skills/
skill-eval — hook:
cp plugins/skill-eval/hooks/skill-forced-eval-hook.sh ~/.claude/scripts/
chmod +x ~/.claude/scripts/skill-forced-eval-hook.sh
Add the skill-eval hook to ~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "~/.claude/scripts/skill-forced-eval-hook.sh"
}]
}]
}
}
workflow — skills:
cp -r plugins/workflow/skills/learn ~/.claude/skills/
cp -r plugins/workflow/skills/clarify ~/.claude/skills/
cp -r plugins/workflow/skills/wrong ~/.claude/skills/
cp -r plugins/workflow/skills/md-copy ~/.claude/skills/
cp -r plugins/workflow/skills/txt-copy ~/.claude/skills/
cp -r plugins/workflow/skills/backlog ~/.claude/skills/
Note: the slug form taught inside backlog/SKILL.md is /workflow:backlog <slug>; it is /backlog <slug> when installed manually.
Restart Claude Code for changes to take effect.
Updating plugins
The /plugin menu has two update paths, and they behave differently:
/plugin→ Marketplaces → Update marketplace — pulls the latest plugin catalog from the repo immediately. This is the reliable way to get updates./plugin→ Installed → Update now — uses a local cache that can be stale for a long time and may not reflect recent changes. Use this as a fallback after updating the marketplace.
To keep plugins current automatically, enable /plugin → Marketplaces → Enable auto-update. This updates the marketplace catalog on each session start.
Plugins
| Plugin | Description |
|---|---|
| brainstorm | Collaborative design dialogue — idea to approaches to design to plan |
| review | PR review + interactive git diff annotation review + writing style guide |
| planning | Structured implementation planning, interactive annotation review, and autonomous plan execution |
| release-tools | Release workflow — auto-versioning, release notes, changelog |
| thinking-tools | Analytical thinking — dialectic analysis, root cause investigation, codex consultation |
| skill-eval | Forces skill evaluation before every response |
| workflow | Session helpers and deferred-work backlog — knowledge capture, confusion handling, clipboard copy, backlog items |
brainstorm
Collaborative design skill. Invoke with /brainstorm:do or trigger phrases like "brainstorm", "let's brainstorm", "help me design", "explore options for", etc.
| Component | Trigger | Description |
|---|---|---|
| skill | /brainstorm:do | Collaborative design dialogue — idea → approaches → design → plan |
Guides a 4-phase dialogue to turn ideas into designs:
- Understand — gathers project context, asks questions one at a time (multiple choice preferred)
- Explore Approaches — proposes 2-3 options with trade-offs, leads with recommendation
- Present Design — breaks design into sections of 200-300 words, validates each incrementally
- Next Steps — offers to write a plan (
/planning:make), enter plan mode, or start implementing
review
PR review, interactive git diff annotation review, and writing style tools. Install together — review-pr uses writing-style for drafting comments.
| Component | Trigger | Description |
|---|---|---|
| skill | /review:pr <number> | PR review with architecture analysis, scope creep detection, and merge workflow |
| skill | /review:git-review [ref] | Interactive git diff annotation review — editor overlay with feedback loop |
| skill | /review:writing-style | Direct technical communication — anti-AI-speak, brevity, no filler |
review-pr — analyzes code quality, architecture, test coverage, and identifies scope creep:
- Phase 0 — detects PR vs issue (issues get a simpler comment-only flow)
- Phase 1 — fetches PR metadata, discussion history, merge status, and inline suggestions
- Phase 1.5 — asks review mode: Full (worktree + tests + linter + architecture) or Quick (diff-only)
- Phase 2 — sets up worktree and launches a subagent for deep analysis
- Phase 3-4 — presents findings, resolves open design questions
- Phase 5 — drafts review comment using
/review:writing-style, posts as formal review - Post-approve — recommends merge strategy (rebase vs squash vs merge)
Uses gh CLI for all GitHub operations and git worktrees to avoid disrupting the current checkout.
git-review — interactive annotation-based code review. Generates a cleaned-up diff, opens it in $EDITOR via agterm overlay, tmux popup, kitty overlay, or wezterm split-pane (agterm tried first). You annotate directly in the diff, and the script returns your changes as a git diff. Claude reads annotations, fixes code, regenerates the diff, and loops until you close the editor without changes. Supports auto-detection of uncommitted changes or branch diffs. Agterm users: needs agtermctl on PATH (bundled with agterm), no extra config; pane-scoped overlays need agterm 0.20.0+.
Run tests: python3 plugins/review/skills/git-review/scripts/git-review.py --test
writing-style — enforces direct, brief writing for tickets, PRs, code reviews, and commit messages. Core principles: brevity, honest feedback, problem-solution structure, technical precision, anti-AI-speak. Does NOT apply to README.md, public docs, or blog posts.
planning
Structured implementation planning with interactive annotation review and autonomous plan execution.
| Component | Trigger | Description |
|---|---|---|
| command | /planning:make <desc> | Structured implementation plan with interactive review loop |
| skill | /planning:exec [plan-file] | Autonomous plan executor — task loop, multi-phase review, optional finalize |
| hook | PreToolUse / CLI | Plan annotation in $EDITOR with diff-based feedback loop |
| agent | plan-review | Automated plan quality review — completeness, over-engineering, testing |
plan command — creates a plan file in docs/plans/yyyymmdd-<task-name>.md through interactive context gathering:
- Step 0 — parses intent and explores codebase for relevant context
- Step 1 — asks focused questions one at a time (goal, scope, constraints, testing approach, title)
- Step 1.5 — proposes 2-3 implementation approaches with trade-offs (skipped if obvious)
- Step 2 — creates the plan file with tasks, file lists, test requirements, and progress tracking
- Step 3 — offers interactive review (opens plan in
$EDITORvia plan-annotate), auto review, start implementation, or done
plan-annotate.py — interactive plan annotation tool. Opens plans in your $EDITOR via a terminal overlay (agterm overlay, tmux popup, kitty overlay, or wezterm split-pane), lets you annotate directly, and feeds a unified diff back to Claude so it revises the plan. Two modes:
- Hook mode (default) — intercepts
ExitPlanMode, opens plan in editor, denies tool call with diff if changes made, forcing revision loop - File mode (
plan-annotate.py <plan-file>) — outputs unified diff to stdout for integration with custom workflows
Requirements: agterm, tmux, kitty, or wezterm terminal (agterm tried first), $EDITOR (defaults to vi). Agterm users: needs agtermctl on PATH (bundled with agterm), no extra config; pane-scoped overlays need agterm 0.20.0+. Kitty users must enable remote control in kitty.conf:
allow_remote_control yes
listen_on unix:/tmp/kitty-$KITTY_PID
Note: when revdiff is installed, the ExitPlanMode hook and /planning:make interactive review both route through launch-plan-review.sh instead, which supports a wider set of overlays: agterm, tmux, zellij, herdr, orca, kitty, wezterm/kaku, cmux, ghostty, iTerm2, and emacs vterm. The 4-terminal list above applies only to the $EDITOR fallback when revdiff is not installed.
Disabling review: set PLANNING_DISABLE_REVDIFF=1 to skip interactive plan review entirely on both routes (revdiff and the $EDITOR fallback). No overlay opens and the plan proceeds to the normal ExitPlanMode confirmation. This exists for remote clients (claude /remote-control): the overlay always opens on the host terminal, which a mobile or web client cannot see or interact with, so review would otherwise block the session. The variable is read when review fires, so export it in your shell before starting a session you may later drive remotely.
The overlay popup size is configurable via env vars:
| Env var | Description | Default |
|---|---|---|
REVDIFF_POPUP_WIDTH | Tmux/Zellij popup width (e.g., 100%, 80%) | 90% |
REVDIFF_POPUP_HEIGHT | Tmux/Zellij popup height / wezterm split percent | 90% |
Run tests: python3 plugins/planning/scripts/plan-annotate.py --test
plan-review agent — automated plan quality reviewer. Analyzes plans for problem definition, solution correctness, scope creep, over-engineering, testing requirements, task granularity, and convention adherence. Used by the plan command's "Auto review" option. Outputs a structured report with severity-rated findings and an APPROVE/NEEDS REVISION verdict.
exec skill — autonomous plan executor. Takes a plan file (from /planning:make) and executes it task-by-task using isolated subagents. Execution phases:
- Task loop — one subagent per task section, commits after each, retries on failure
- Comprehensive review — 5 parallel agents (quality, implementation, testing, simplification, documentation) + fixer
- Code smells — smells agent checks conventions, CLAUDE.md rules, code style + fixer
- External review — always runs through
run-external-review.sh: the configuredexternal_review_cmd, orcodexwhen that is unset. Adversarial loop with severity-aware early exit (stops after the first iteration that finds no critical/major issues; minor findings are still fixed). A tool that is not installed makes the phase skip; a tool that runs and exits non-zero, or exits 0 with no output, is reported as a reviewer failure rather than a clean review - Critical-only review — 2 agents (quality + implementation), critical/major issues only + fixer
- Finalize — rebase, squash, verify (optional)
- Stats summary — single agent reads the session log + git state and reports total tokens / wall-clock / per-phase breakdown / branch churn / fixer iterations
- Completion — moves the finished plan into a
completed/subdirectory of its plans directory and commits the move (VCS-aware viamove-plan.sh, no push), so completed plans leave the active plans directory and stop showing up as candidates on the next run; also reports every judgment call the run made on its own and any deviations from the plan
Review agents are read-only reporters. The fixer agent evaluates each finding, fixes confirmed issues, rejects false positives, and reports back.
Autonomous by design — the run assumes no human is available, so subagents never stop to ask questions. They resolve judgment calls the plan does not settle from the project's lint rules, CLAUDE.md, and surrounding code, log each decision and any plan deviation, and the orchestrator reports them all to you at completion. When the worktree option is chosen the entire run is isolated in a git worktree; the main working directory is never checked out to the feature branch or otherwise touched.
VCS support — the exec helper scripts are VCS-aware and work in both git and Mercurial (hg) repositories. The finalize and external-review phases remain git-only, but their behaviour can be customised for hg via .claude/exec-plan/prompts/finalizer.md and .claude/exec-plan/prompts/codex-review.md overrides.
Customization — prompts and agent definitions use a three-layer override chain (checked in order, first match wins):
- Project:
.claude/exec-plan/prompts/and.claude/exec-plan/agents/ - User:
${CLAUDE_PLUGIN_DATA}/prompts/and${CLAUDE_PLUGIN_DATA}/agents/ - Bundled defaults (shipped with the plugin)
To customize, place your modified version in the override path. For example, to customize prompts/review.md at the project level:
.claude/exec-plan/prompts/review.md
Or at the user level (applies to all projects). To find <plugin-id>, run ls ~/.claude/plugins/data/ and look for the planning plugin entry:
~/.claude/plugins/data/<plugin-id>/prompts/review.md
Same pattern works for any prompt or agent file — just mirror the path under the override directory.
Nothing is copied into the override directories automatically. Installs before planning 3.10.0 did seed the user-level directory with copies of every bundled prompt and agent — those copies still shadow the bundled defaults and no longer track upgrades, so check ~/.claude/plugins/data/<plugin-id>/ and delete anything you did not deliberately edit.
To start from the bundled version of a file, use the customize-file.sh helper, which copies it into place and prints the destination. ${CLAUDE_PLUGIN_ROOT} and ${CLAUDE_PLUGIN_DATA} only expand inside plugin-loaded skill files, so spell both paths out when running this yourself:
# paths for a marketplace install; adjust if you installed the plugin some other way,
# and confirm the data dir against `ls ~/.claude/plugins/data/`
PLUGIN_ROOT=~/.claude/plugins/marketplaces/umputun-cc-thingz/plugins/planning
PLUGIN_DATA=~/.claude/plugins/data/planning-umputun-cc-thingz
# project level, writes .claude/exec-plan/prompts/review.md
bash "$PLUGIN_ROOT/skills/exec/scripts/customize-file.sh" prompts/review.md
# user level, applies to all projects
bash "$PLUGIN_ROOT/skills/exec/scripts/customize-file.sh" prompts/review.md "$PLUGIN_DATA"
An override shadows the bundled default permanently and will not pick up changes from later plugin upgrades, so copy only the files you intend to edit. Delete the override to return to the bundled version.
Bundled prompts: task.md, fixer.md, review.md, codex-review.md, finalizer.md, stats.md, progress-file.md
Bundled agents: quality.txt, implementation.txt, testing.txt, simplification.txt, documentation.txt, smells.txt
Customization patterns — two common shapes:
- Route the review fanout to named specialists. Override
prompts/review.mdto launch named Claude Code subagents (qa-expert,code-quality,go-test-expert,implementation-reviewer,documentation) instead of genericgeneral-purpose. The override controls thesubagent_typefor each parallel specialist. - Delegate to an existing skill. Override a prompt or agent file to instruct the spawned subagent to read another skill's
SKILL.mdand follow its workflow. Examples: overrideagents/smells.txtto delegate to a/smellsskill; overrideprompts/finalizer.mdto delegate to a/rebase-commitsskill. Useful when an installed skill captures the workflow better than the bundled default.
Constraint — subagents in current Claude Code do not have the Agent tool, so they cannot spawn other subagents. prompts/review.md is therefore read by the main session orchestrator directly (used as a playbook), not given to a subagent — that is how the 5-specialist fanout actually runs in parallel. Single-agent leaf work (task.md, fixer.md, finalizer.md, codex-review.md, agents/smells.txt) runs as a spawned subagent because no further fan-out is needed. Any custom override that needs to fan out must follow the same playbook pattern.
Configuration via userConfig (prompted at plugin install):
| Key | Default | Description |
|---|---|---|
external_review_cmd | (empty — falls back to codex) | Command for an external code review tool. See the contract below |
task_retries | 1 | Retries for failed tasks before stopping |
review_iterations | 5 | Max fix-and-recheck cycles during internal review |
external_review_iterations | 10 | Max iterations for external review adversarial loop |
finalize_enabled | true | Whether to run the finalize phase (rebase + squash) |
plans_dir | docs/plans | Directory where plan files are located |
External review contract — review phase 3 always runs through run-external-review.sh, which receives the external_review_cmd value and the resolved prompt. When the setting is empty it falls back to codex via run-codex.sh. A custom command must:
- be able to run shell commands and read files in the working tree — the prompt tells the reviewer to run a
git diff, then read the plan file, the progress file, and source files for context. A plain text-in/text-out LLM CLI satisfies every other bullet here and reviews nothing - accept the prompt as its final argument (the command string may carry flags, for example
mytool review --strict; arguments containing spaces are not supported, so wrap those in a script) - write findings to stdout, one per line, tagged
CRITICAL,MAJOR, orMINOR, and printNO ISSUES FOUNDwhen clean - sandbox itself — the reviewer must not modify the working tree, since fixes are applied by a separate fixer agent
- exit
0even when it reports findings - read nothing from stdin — the script redirects it from
/dev/null, so a tool that waits for input would hang the run rather than review it
The configured value is shell-parsed before the script sees it — Claude Code substitutes it into the command line that launches run-external-review.sh. It lands inside single quotes, so the shell passes it through as one argument and $, backtick, " and \ are inert, while spaces and ; are safe; the split into command and flags is done by the script's own read -ra. Only a literal ' cannot be expressed — wrap a command that needs one in a script and point the setting at that. Plugin config comes from user, flag, and policy settings only — never from project settings — so a checked-out repository cannot set this value.
Leaving the setting alone is supported and takes the codex fallback. Claude Code's skill-content substitution does not merge in the schema default the way the hook and MCP paths do: with no saved value it leaves the ${user_config.external_review_cmd} reference in the skill text verbatim. The script recognises that literal token as "not configured" and falls back to codex, printing a note on stderr — so a plugin that was never taken through /plugin configure still runs review phase 3.
The script exits 127 when the configured command (or codex) is not on PATH, which makes the run skip the phase instead of treating it as a review failure. Both such messages carry a run-external-review: marker on stderr, and the run requires that marker before it treats a 127 as a skip — so a 127 raised by the reviewer itself (a wrapper script whose own inner tool is missing) is reported as a reviewer failure rather than silently skipping the review.
The prompt reaches the tool as a single argv element read from a file, not pasted into the command line, since it contains backticks that a shell would otherwise run as command substitutions.
Environment variables read by run-codex.sh:
| Variable | Default | Description |
|---|---|---|
CODEX_MODEL | gpt-5.5 | Model name passed to codex exec via -c model=... |
CODEX_NO_OVERRIDES | (unset) | When set to the literal value 1, suppresses all -c overrides (model, model_reasoning_effort, stream_idle_timeout_ms). Useful for codex proxies / wrappers that reject -c model/provider overrides. Any other value (including 0, false, empty) leaves the overrides on. |
release-tools
Release workflow tools for creating versioned releases with auto-generated notes.
| Component | Trigger | Description |
|---|---|---|
| skill | /release-tools:new | Create GitHub/GitLab/Gitea release with auto-versioning and release notes |
| skill | /release-tools:last-tag | Show commits since the last tag in a formatted table |
release — full release workflow: asks release type (hotfix/minor/major), auto-detects platform (GitHub/GitLab/Gitea), calculates semantic version, generates release notes grouped by type (features/improvements/f
Files in the repo
- .claude-plugin
- .github
- .revmux
- docs
- plugins
- tests
- .gitignore
- CHANGELOG.md
- CLAUDE.md
- LICENSE
- README.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More plugins

Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
OmO: Just type "mass ulw" keyword with your prompt. Now you are the master of graph engineering.
Persistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Opinionated Oxlint rules for rejecting low-evidence TypeScript and JavaScript patterns
Teams-first Multi-agent orchestration for Claude Code