Claude Code Plugins
Extend Claude Code with 8 essential plugins: autonomous iteration (ralph-wiggum), custom rules (hookify), workflow automation, and more.
What are Claude Code Plugins?
Plugins extend Claude Code’s functionality by adding new commands, skills, agents, and hooks to your CLI experience. They’re modular extensions that integrate seamlessly into your workflow.
Plugin Types
Commands:
- Slash commands you can invoke directly
- Examples:
/commit,/ralph-loop,/hookify - Available via tab completion
Skills:
- Auto-invoked based on file patterns or user actions
- Examples:
frontend-design(triggers on frontend work) - Contextual assistance without manual activation
Agents:
- Specialized subprocesses for complex tasks
- Examples:
code-reviewer,comment-analyzer - Run in parallel for comprehensive analysis
Hooks:
- Lifecycle event handlers
- Examples: PreToolUse (security-guidance), SessionStart, Stop (ralph-wiggum)
- Automatic behavior modification
Benefits for Multi-Repo Workflows
If you’re managing multiple projects in a multi-repository setup, plugins provide:
- Consistency: Same workflows across all repos
- Automation: Reduce repetitive tasks (commits, reviews, refactoring)
- Enforcement: Prevent mistakes before they happen (hookify)
- Speed: Autonomous iteration loops (ralph-wiggum)
- Quality: Automated PR reviews with specialized agents
The 8 Essential Plugins
This guide covers the 8 plugins recommended for professional multi-repo development:
| Plugin | Type | Purpose |
|---|---|---|
| ralph-wiggum | Command + Hook | Autonomous iteration loops for complex tasks |
| commit-commands | Commands | Git workflow automation |
| frontend-design | Skill | Design system enforcement |
| pr-review-toolkit | Commands + Agents | Comprehensive code review |
| security-guidance | Hook | Security pattern monitoring |
| hookify | Commands | Custom rule enforcement |
| feature-dev | Command + Agents | 7-phase feature development |
| agent-sdk-dev | Commands + Agents | Agent development & validation |
Simple vs Complex: Some plugins work automatically (security-guidance, frontend-design), while others require understanding best practices (ralph-wiggum, hookify). This guide covers both.
What You’ll Learn
- Installation - How to discover, install, and manage plugins
- Essential Plugins - Quick-start commands for everyday use
- Ralph Wiggum - Master autonomous iteration loops
- Hookify - Build custom enforcement rules
- Frontend & Security - Automatic quality checks
- Agent Development - Validate and build custom agents
- Marketplace - Find and publish plugins
Ready to start? All 8 plugins are already installed and ready to use. Let’s explore how to leverage them for your workflow.
Plugin Management
Claude Code includes built-in commands for discovering, installing, and managing plugins.
Installing Plugins
Install from official marketplace:
claude plugin install <plugin-name>
Install from specific marketplace:
claude plugin install <plugin-name>@<marketplace-name>
Examples:
# Install ralph-wiggum from official marketplace
claude plugin install ralph-wiggum
# Install all 8 recommended plugins
claude plugin install ralph-wiggum
claude plugin install commit-commands
claude plugin install frontend-design
claude plugin install security-guidance
claude plugin install hookify
claude plugin install pr-review-toolkit
claude plugin install feature-dev
claude plugin install agent-sdk-dev
Installation Scope: By default, plugins install at user scope (~/.claude/plugins/), making them available across all projects.
Managing Installed Plugins
Enable a disabled plugin:
claude plugin enable <plugin-name>
Disable a plugin temporarily:
claude plugin disable <plugin-name>
Uninstall a plugin:
claude plugin uninstall <plugin-name>
# or
claude plugin remove <plugin-name>
Update a plugin:
claude plugin update <plugin-name>
Restart Required: After updating plugins, restart your Claude Code session for changes to take effect.
Plugin Commands
Once plugins are installed, their commands appear in tab completion:
claude <tab>
# Shows all available commands including plugin commands
claude /ralph<tab>
# Completes to /ralph-loop or /cancel-ralph
Check installed plugins’ commands:
- Use
/helpto see all available commands - Plugin commands are prefixed with
/(slash commands) - Tab completion works for all plugin commands
Marketplace Discovery
Official marketplace:
Browse plugins at: https://github.com/anthropics/claude-code/tree/main/plugins
Available official plugins (as of 2026-01):
- agent-sdk-dev
- claude-opus-4-5-migration
- code-review
- commit-commands
- explanatory-output-style
- feature-dev
- frontend-design
- hookify
- learning-output-style
- plugin-dev
- pr-review-toolkit
- ralph-wiggum
- security-guidance
Quick Start: The 8 essential plugins are already installed. Jump to the next section to start using them!
Plugin Validation
Check if a plugin is installed and enabled:
# List all plugin commands
/help
# Try invoking a plugin command
/commit --help
/ralph-loop --help
/hookify --help
If the command is recognized, the plugin is active.
Troubleshooting
Command not found:
- Ensure plugin is installed:
claude plugin install <name> - Check if it’s enabled (not disabled)
- Restart Claude Code session
- Verify plugin compatibility with your Claude Code version
Plugin conflicts:
- Some plugins may conflict (e.g., code-review vs pr-review-toolkit)
- Disable conflicting plugins:
claude plugin disable <name> - Only keep the one you prefer active
commit-commands
Streamline your Git workflow with one-command commits, pushes, and PRs.
Commands
/commit - Auto-generated commit message
/commit
Claude analyzes your staged changes and generates an appropriate commit message following your repository’s conventions.
Example workflow:
# Stage your changes
git add src/components/Button.tsx tests/Button.test.tsx
# Let Claude commit with auto-generated message
/commit
/commit-push-pr - One-command workflow
/commit-push-pr
Combines commit + push + PR creation into a single command. Claude:
- Analyzes changes
- Generates commit message
- Pushes to remote
- Creates pull request with summary
Perfect for sprint-based workflows where documentation → commit → PR is a regular pattern.
/clean_gone - Clean up merged branches
/clean_gone
Removes local branches that have been merged and deleted on the remote.
Sprint Protocol: Use /commit-push-pr at the end of sprint milestones to automatically document, commit, push, and create PR in one step.
pr-review-toolkit
Comprehensive PR review with 6 specialized agents running in parallel.
Command
/pr-review-toolkit:review-pr - Full PR analysis
/pr-review-toolkit:review-pr
Launches 6 specialized agents:
- comment-analyzer - Reviews code comment quality
- pr-test-analyzer - Analyzes test coverage
- silent-failure-hunter - Finds error handling gaps
- type-design-analyzer - Reviews TypeScript/type system design
- code-reviewer - General quality review
- code-simplifier - Identifies over-engineering
The code-simplifier Agent
Aligns with the “avoid over-engineering” principle:
- Flags unnecessary abstractions
- Identifies premature optimization
- Suggests simpler implementations
- Questions overly complex patterns
Example findings:
- “This helper function is only used once - inline it?”
- “Feature flag adds complexity - just change the code directly”
- “These 3 lines don’t need a utility function”
Multi-Repo Use: Run this on PRs across all your repositories for consistent review quality.
When to Use
- Before requesting human PR review
- On your own PRs before submitting
- When reviewing teammate PRs (supplement your review)
- For large refactoring PRs (catches issues early)
feature-dev
Structured 7-phase feature development workflow with automatic documentation.
Command
/feature-dev - Guided feature development
/feature-dev
Interactive workflow that guides you through:
Phase 1: Understand - Clarify requirements
- Asks questions to understand scope
- Identifies ambiguities
- Defines success criteria
Phase 2: Explore - Examine codebase
- Searches for existing patterns
- Identifies related code
- Maps dependencies
Phase 3: Design - Plan implementation
- Proposes architecture
- Considers trade-offs
- Outlines approach
Phase 4: Plan - Break down tasks
- Creates step-by-step plan
- Identifies files to modify
- Estimates complexity
Phase 5: Implement - Write code
- Implements feature
- Follows established patterns
- Maintains code quality
Phase 6: Test - Verify functionality
- Writes tests
- Runs test suite
- Validates coverage
Phase 7: Document - Update docs
- Updates
.claude/implementation_progress.md - Adds inline documentation
- Creates user-facing docs
Auto-Documentation: Phase 7 aligns with your “Documentation is Part of Done” protocol - the feature isn’t complete until docs are updated.
Perfect For
- Complex features requiring planning
- Cross-repo patterns (applying same feature to multiple repos)
- Features with unclear requirements
- Sprint-based development workflows
Example Use Case
# In your knowledge-base repository
/feature-dev
# Claude asks: "What feature would you like to develop?"
# You respond: "Add user authentication with session management"
# Claude then:
# - Explores existing auth patterns in your codebase
# - Proposes JWT vs session-based approach
# - Creates implementation plan
# - Implements with tests
# - Documents in .claude/implementation_progress.md
Agents Included: The feature-dev plugin includes code-explorer, code-architect, and code-reviewer agents that work together throughout the workflow.
When to Use Each
| Plugin | When to Use |
|---|---|
| commit-commands | Every commit, end of sprint milestones, PR creation |
| pr-review-toolkit | Before submitting PRs, reviewing others’ PRs, large refactors |
| feature-dev | Complex features, unclear requirements, cross-repo patterns |
All three plugins are self-guided - they prompt you for information and walk you through the process. No complex configuration needed!
The Game Changer
Ralph Wiggum enables autonomous iteration loops where Claude reads its own previous work and iteratively improves it until a task is complete. This is production-tested technology that has:
- Built entire repositories overnight
- Completed $50k contracts for $297 in API costs
- Created programming languages over months of iterations
Power Tool: Ralph Wiggum is powerful but requires understanding of prompting best practices. Read this entire section before using.
How It Works
Ralph uses a Stop hook that intercepts Claude’s exit attempts and re-feeds the same prompt automatically:
You run ONCE → /ralph-loop "task" --max-iterations 50
Then Claude:
1. Works on task
2. Tries to exit
3. Stop hook blocks exit
4. Re-feeds prompt
5. Claude reads own work
6. Improves it
7. Repeat until done
This creates a self-referential feedback loop where each iteration sees:
- File changes from previous iterations
- Git commit history
- Test results and build output
- The unchanged original prompt
Command Syntax
/ralph-loop "<task description>" \
--max-iterations <N> \
--completion-promise "<text>"
Parameters
<task description> (required)
- Clear description of what to accomplish
- Include success criteria
- Specify verification steps
--max-iterations <N> (required)
- Maximum number of iterations before stopping
- CRITICAL: Always set this as a safety net
- Start small (10-20) before overnight runs (50-100)
--completion-promise "<text>" (required)
- Exact phrase Claude outputs when done
- Typically:
COMPLETE,DONE,SUCCESS - Must appear in prompt so Claude knows what to output
Real Examples for Your Workflow
PREFIX Doc Compliance Sweep
/ralph-loop "Scan all docs/ folders across all repositories.
Find any PREFIX files not matching pattern: {PREFIX###} Descriptive Title.md.
Fix the filenames to include descriptive titles.
List all modified files.
When all PREFIX docs are compliant, output <promise>COMPLETE</promise>" \
--max-iterations 20 \
--completion-promise "COMPLETE"
Overnight Refactoring with Test Validation
/ralph-loop "Refactor audio-lib/apps/editor following patterns in ARCHITECTURE.md.
After EACH change:
1. Run tests with: cd audio-lib && npm test
2. If tests fail, debug and fix
3. Commit the change if tests pass
4. Move to next refactoring task
When all patterns are applied AND all tests pass, output <promise>COMPLETE</promise>" \
--max-iterations 50 \
--completion-promise "COMPLETE"
TDD Feature Development
/ralph-loop "Implement user authentication in knowledge-base with TDD approach:
1. Write failing test
2. Implement minimal code to pass test
3. Refactor if needed
4. Repeat for next feature
Requirements:
- Session-based auth (not JWT)
- Login, logout, session validation
- Test coverage must be >80%
- Update .claude/implementation_progress.md when done
Output <promise>COMPLETE</promise> when feature is complete with passing tests and docs updated." \
--max-iterations 60 \
--completion-promise "COMPLETE"
Cross-Repo Pattern Enforcement
/ralph-loop "Apply spacing standards from ~/workspace/docs/design-standards.md to frontend CSS.
Repos to update: dashboard-v2, dict-app, task-app, portfolio, data-viz.
For each repo:
1. Update CSS to match spacing standards
2. Run build: npm run build
3. Fix any build errors
4. Commit changes
5. Move to next repo
When all repos are updated with consistent spacing AND all builds pass, output <promise>COMPLETE</promise>" \
--max-iterations 40 \
--completion-promise "COMPLETE"
Best Practice: Include verification steps (run tests, run build) in your prompt. This allows Ralph to self-correct when tests fail.
Prompting Best Practices
1. Clear Completion Criteria
❌ Bad: “Build a todo API and make it good.”
✅ Good:
Build a REST API for todos.
When complete:
- All CRUD endpoints working
- Input validation in place
- Tests passing (coverage > 80%)
- README with API docs
- Output: <promise>COMPLETE</promise>
2. Incremental Goals
❌ Bad: “Create a complete e-commerce platform.”
✅ Good:
Phase 1: User authentication (JWT, tests)
Phase 2: Product catalog (list/search, tests)
Phase 3: Shopping cart (add/remove, tests)
Output <promise>COMPLETE</promise> when all phases done.
3. Self-Correction Loop
Include verification:
Implement feature X following TDD:
1. Write failing tests
2. Implement feature
3. Run tests
4. If any fail, debug and fix ← Self-correction
5. Refactor if needed
6. Repeat until all green
7. Output: <promise>COMPLETE</promise>
4. Safety Mechanisms
ALWAYS set --max-iterations:
/ralph-loop "Complex task" --max-iterations 20
# Not: /ralph-loop "Complex task" ← Will run indefinitely!
In your prompt, add fallback behavior:
After 15 iterations, if not complete:
- Document what's blocking progress
- List what was attempted
- Suggest alternative approaches
Safety Net: The --completion-promise uses exact string matching. ALWAYS rely on --max-iterations as your primary safety mechanism.
When to Use Ralph Wiggum
✅ Perfect For:
- Well-defined tasks with automatic verification (tests, builds)
- Refactoring with test suites
- Documentation compliance sweeps
- TDD workflows
- Overnight/weekend work sessions
❌ Avoid For:
- Unclear requirements or goals
- Tasks requiring human judgment
- Design decisions without clear criteria
- One-shot operations (just do them normally)
- Exploratory/research tasks
Monitoring Ralph Loops
While Ralph runs, you can:
- Watch file changes in your editor
- Monitor git commits (if you instructed commits)
- Check test output (if tests are running)
- Cancel anytime:
/cancel-ralph
Cancel Command
/cancel-ralph
Immediately stops the active Ralph loop.
Advanced: Pairing with Hookify
hookify prevents future violations, ralph fixes existing ones.
Example workflow:
# First: Create hook to prevent bad PREFIX files
/hookify
# Create rule: Block Write if filename matches docs/**/[A-Z]{3,4}\d{3,4}\.md$ without space
# Then: Use ralph to fix all existing violations
/ralph-loop "Fix all existing PREFIX files..." --max-iterations 20
This ensures:
- Ralph fixes all current violations
- Hookify prevents new violations going forward
Testing Your First Ralph Loop
Start small to learn the pattern:
/ralph-loop "Create a simple test file at /tmp/ralph-test.txt with the word 'Hello'.
Then read the file to verify it exists.
Output <promise>COMPLETE</promise> when file exists with correct content." \
--max-iterations 5 \
--completion-promise "COMPLETE"
Watch how Ralph:
- Creates the file
- Reads it back
- Verifies content
- Outputs COMPLETE
- Stops
Pro Tip: Start with --max-iterations 10-20 for first attempts. Once you trust your prompt, increase to 50-100 for overnight runs.
Custom Rule Enforcement
Hookify lets you create custom hooks that prevent unwanted behaviors before they happen. Think of it as “linting for Claude’s actions.”
Commands
/hookify - Interactive hook creation
/hookify
Launches an interactive workflow to create a new hook. Claude asks:
- What behavior to prevent or warn about
- When to trigger (file patterns, content patterns)
- What action to take (block, warn, allow with confirmation)
/hookify:list - Show active hooks
/hookify:list
Lists all hooks currently active in your project.
/hookify:configure - Edit hook settings
/hookify:configure
Modify existing hooks or their settings.
Your Use Case: PREFIX Naming Enforcement
Perfect example from your multi-repo workflow.
Problem
You have a strict naming convention:
- Pattern:
\{PREFIX###\} Descriptive Title.md - ✅ Good:
CGD001 Project Overview.md - ❌ Bad:
CGD001.md(missing title)
Claude might accidentally create files without titles.
Solution
Create a hook to block these:
/hookify
Interactive prompts:
-
What behavior to prevent?
“Prevent creating PREFIX files without descriptive titles”
-
Pattern to match:
docs/**/[A-Z]\{3,4\}\d\{3,4\}\.md$ -
Action:
“Block Write”
-
Error message:
“PREFIX files must follow pattern: {PREFIX###} Descriptive Title.md”
Result
Now when Claude tries:
/write docs/cgd/CGD042.md
Hookify blocks it with:
❌ Blocked: PREFIX files must follow pattern: {PREFIX###} Descriptive Title.md
Claude must use:
/write docs/cgd/CGD042 Sprint 7 Implementation.md
Pairs with Ralph: hookify prevents future violations, ralph-wiggum fixes existing violations. Perfect combo!
Hook Syntax Patterns
File Pattern Matching
Block writes to specific paths:
Pattern: src/components/legacy/**
Rule: Block Write
Message: "Do not modify legacy components - create new ones instead"
Warn on sensitive files:
Pattern: .env*
Rule: Warn Write
Message: "Be careful - this file may contain secrets"
Require specific file extensions:
Pattern: src/**/*.js
Rule: Block Write if new file
Message: "Use TypeScript (.ts/.tsx) for new files, not JavaScript"
Content Pattern Matching
Block specific code patterns:
if content contains "eval("
Rule: Block Write
Message: "eval() is dangerous - use safer alternatives"
Warn about TODO comments:
if content contains "TODO:"
Rule: Warn Write
Message: "TODO found - consider creating a GitHub issue instead"
Enforce import patterns:
if filename matches "src/components/**/*.tsx"
and content does not contain "import React"
Rule: Block Write
Message: "React components must import React"
Action Types
Block - Prevents the action entirely
- Use for: Rules that must never be broken
- Example: “Never modify production config directly”
Warn - Shows warning but allows action
- Use for: Soft guidelines
- Example: “Consider adding tests for new features”
Confirm - Asks user to confirm before proceeding
- Use for: Potentially dangerous but sometimes necessary
- Example: “Are you sure you want to delete this file?”
Common Hook Patterns
Documentation Standards
Pattern: docs/**/*.md
if content does not contain "## References"
and content contains "[1]"
Rule: Warn Write
Message: "Citations found but no References section - add ## References"
Code Quality
Pattern: src/**/*.ts
if content contains "any"
Rule: Warn Write
Message: "Avoid 'any' type - use specific types or 'unknown'"
Security
Pattern: **/*.{js,ts}
if content contains "process.env"
and not in file ".env.example"
Rule: Warn Write
Message: "Avoid hardcoding env vars - use config files"
Git Workflow
Pattern: .git/config
Rule: Block Write
Message: "Do not modify git config directly - use git commands"
Testing Hooks
After creating a hook, test it:
# Try to trigger the hook
# Example: Try creating a PREFIX file without title
# Should block:
/write docs/cgd/CGD999.md
# Error: ❌ Blocked: PREFIX files must follow pattern...
# Should allow:
/write docs/cgd/CGD999 Test Document.md
# Success: ✓ File created
Iterative Refinement: Start with Warn actions, observe what triggers, then upgrade to Block for critical rules.
Multi-Repo Hook Strategy
User-Level Hooks (Apply Everywhere)
Install at ~/.claude/hooks/ for all projects:
- Security patterns (no eval, no os.system)
- General coding standards (no console.log in production)
- Documentation requirements (PREFIX naming)
Repo-Level Hooks (Project-Specific)
Install at <repo>/.claude/hooks/ for specific repos:
- Project-specific patterns (content validation, audio processing)
- Tech stack rules (Rust in system-level apps, C++ in performance-critical code)
- Architecture enforcement (following ARCHITECTURE.md patterns)
Example: PREFIX Hook for All Repos
Create once, applies everywhere:
/hookify
# Pattern: docs/**/[A-Z]{3,4}\d{3,4}\.md$
# Rule: Block Write if filename matches pattern without space after number
# Message: "PREFIX files must follow pattern: {PREFIX###} Descriptive Title.md"
# Install at user level: ~/.claude/hooks/prefix-naming.json
Now works in:
- data-pipeline (DAT prefix)
- content-system (CNT prefix)
- audio-lib (AUD, EDI prefixes)
- dict-app (DIC prefix)
- knowledge-base (KBD prefix)
- analysis-tool (ANL prefix)
Disabling Hooks Temporarily
When you need to bypass a hook (rare):
claude plugin disable hookify
Do your work, then:
claude plugin enable hookify
Use Sparingly: Disabling hooks defeats their purpose. If you find yourself doing this often, the hook may be too strict - use /hookify:configure to adjust it.
Hook Development Workflow
- Identify pattern - Notice Claude making a mistake repeatedly
- Create hook - Use
/hookifyto prevent it - Test - Verify hook triggers correctly
- Refine - Adjust pattern or message as needed
- Fix existing violations - Use
/ralph-loopto clean up old instances - Monitor - Hook prevents future violations
Example: Fixing Existing + Preventing Future
# Step 1: Create hook (prevents future)
/hookify
# Rule: Block PREFIX files without titles
# Step 2: Fix existing violations (cleans past)
/ralph-loop "Fix all PREFIX files in all repos..." --max-iterations 20
Perfect combo for maintaining standards!
Automatic Plugins
These plugins work automatically - no commands to remember, just install and they activate when needed.
frontend-design
Auto-invoked skill that enforces your design system and prevents generic AI aesthetics.
How It Works
The plugin automatically activates when you’re working on frontend code. It references:
- Your design system documentation
- Shared font library
- Spacing standards
- Component patterns
Activation: The skill detects frontend work based on file patterns (.tsx, .jsx, CSS files, component directories) and activates contextually.
What It Enforces
Typography:
- Suggests fonts from your shared library
- Recommends: Satoshi, Cabinet Grotesk, General Sans, Switzer
- Prevents: Generic system fonts, Arial, Helvetica
Spacing:
- References design standards documentation
- Enforces app-type appropriate spacing:
- Dashboard: 4-8-12px gaps
- SaaS: 8-12-16px gaps
- Marketing: 16-24px+ gaps
- Prevents: Arbitrary spacing values, inconsistent gaps
Design Tokens:
- Encourages using design token systems
- Suggests Tailwind config integration
- Prevents: Hardcoded colors, magic numbers
Component Structure:
- Follows established patterns in your repos
- Maintains consistency across components
- Avoids generic AI component aesthetics
Active Repos
The plugin is particularly useful in:
- dashboard-v2 (most advanced frontend)
- audio-editor-app (C++ app with UI)
- task-app (task management UI)
- personal-portfolio (marketing site)
- data-dashboard (3D visualization)
- dictionary-app (reference UI)
Example Interaction
You: “Create a button component”
Claude (with frontend-design):
// Uses Cabinet Grotesk from your font library
// Applies 12px spacing from your standards
// Follows your existing component patterns
import { Button } from './components/Button';
export function PrimaryButton({ children }) {
return (
<button className="font-cabinet text-base px-4 py-3 rounded-lg">
{children}
</button>
);
}
Instead of generic:
<button style="font-family: Arial; padding: 10px;">Click me</button>
No Configuration Needed: Just install. The plugin reads your workspace-asset-standards.md and shared-fonts/ automatically.
security-guidance
PreToolUse hook that monitors for security vulnerabilities before code execution.
How It Works
Before Claude uses tools that could introduce security issues, this hook:
- Scans the planned action
- Checks against 9 security patterns
- Warns if dangerous patterns detected
- Allows you to approve or reject
Hook Type: PreToolUse - activates BEFORE potentially dangerous actions, giving you a chance to prevent them.
9 Security Patterns Monitored
1. Command Injection
// ❌ Dangerous
exec(`rm -rf ${userInput}`);
// Warning: "Potential command injection - sanitize userInput first"
2. XSS Vulnerabilities
// ❌ Dangerous
element.innerHTML = userContent;
// Warning: "XSS risk - use textContent or sanitize HTML"
3. eval() Usage
// ❌ Dangerous
eval(userCode);
// Warning: "eval() is dangerous - use safer alternatives like Function() or JSON.parse()"
4. Dangerous HTML
// ❌ Dangerous
dangerouslySetInnerHTML={{ __html: untrustedHTML }}
// Warning: "Sanitize HTML before using dangerouslySetInnerHTML"
5. Python Pickle Deserialization
# ❌ Dangerous
pickle.load(untrusted_file)
# Warning: "Pickle deserialization from untrusted sources is dangerous"
6. os.system() Calls
# ❌ Dangerous
os.system(f"process {user_input}")
# Warning: "os.system() with user input risks command injection - use subprocess with shell=False"
7. SQL Injection
# ❌ Dangerous
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")
# Warning: "SQL injection risk - use parameterized queries"
8. Path Traversal
// ❌ Dangerous
fs.readFile(`./files/${userFilename}`)
// Warning: "Path traversal risk - validate filename doesn't contain ../"
9. Unsafe Regex
// ❌ Dangerous (ReDoS vulnerability)
/^(a+)+$/
// Warning: "Regex may be vulnerable to ReDoS - test with long inputs"
Multi-Language Support
Security-guidance works across your entire stack:
- Python: data-pipeline (pandas, data processing)
- TypeScript/Node: content-system, knowledge-base, task-app
- Rust: dict-app (safer by default, but still monitors)
- C++: audio-lib (additional C++-specific checks)
What Happens When Triggered
Scenario: Claude tries to add code with potential SQL injection
security-guidance activates:
⚠️ Security Warning
Potential security issue detected:
Pattern: SQL Injection
Location: src/database/queries.py:42
Issue: String interpolation in SQL query
Suggested fix:
Use parameterized queries instead:
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))
Proceed anyway? [y/N]
You can:
- Reject: Claude will use the safer approach
- Approve: Claude proceeds with original code (if you have a good reason)
Learning Tool: Over time, you’ll learn to spot these patterns yourself. The warnings are educational, not just restrictive.
No Action Required
Both plugins work automatically:
frontend-design:
- Install: ✓
- Configure: Not needed (reads your workspace docs)
- Use: Automatic when working on frontend
security-guidance:
- Install: ✓
- Configure: Not needed (monitors all languages)
- Use: Automatic when potentially dangerous code is written
Verification
Test frontend-design:
# Create a new component in any frontend repo
cd ~/projects/task-app
# Ask Claude to create a button component
# Notice: Uses Cabinet Grotesk, proper spacing, no generic styles
Test security-guidance:
# Try adding code with potential security issue
cd ~/projects/data-pipeline
# Ask Claude to add database query with string interpolation
# Notice: Warning appears before code is written
Disabling If Needed
If a plugin becomes intrusive:
# Temporarily disable
claude plugin disable frontend-design
# or
claude plugin disable security-guidance
# Re-enable later
claude plugin enable <plugin-name>
But in practice, these plugins are non-intrusive:
- frontend-design just improves suggestions
- security-guidance only warns on actual security issues
Recommendation: Keep both enabled. They prevent mistakes without slowing you down.
Agent SDK Development Plugin
Tools for validating existing agents and building new ones following Agent SDK best practices.
Why This Matters
You already have custom agents in your repos:
data-pipeline/.claude/agents/content-system/.claude/agents/audio-lib/.claude/agents/dict-app/.claude/agents/knowledge-base/.claude/agents/analysis-tool/.claude/agents/
This plugin ensures they follow best practices and helps you build new ones correctly.
Commands
/new-sdk-app - Interactive SDK project setup
/new-sdk-app
Guides you through creating a new Agent SDK application:
- Choose language (Python or TypeScript)
- Select project template
- Configure dependencies
- Set up directory structure
- Generate boilerplate code
When to use:
- Building standalone agent applications
- Creating complex multi-agent systems
- Developing agents for distribution
SDK vs CLI Agents: See the Agent SDK guide for the difference between CLI agents (in .claude/agents/) and SDK applications (standalone programs).
Validators
agent-sdk-verifier-py
Validates Python Agent SDK applications.
What it checks:
- Correct import patterns
- Proper async/await usage
- Tool registration
- Error handling
- API usage patterns
- Type hints
Example validation:
cd ~/projects/data-pipeline/.claude/agents/data-analyzer
# If this is a Python SDK agent:
# The plugin validates it automatically
Common issues caught:
# ❌ Missing await
result = agent.run_tool("search")
# ✅ Correct
result = await agent.run_tool("search")
# ❌ Wrong import
from claude import Agent
# ✅ Correct
from claude_sdk import Agent
agent-sdk-verifier-ts
Validates TypeScript Agent SDK applications.
What it checks:
- TypeScript configuration
- Proper async patterns
- Tool type definitions
- Error boundaries
- Module exports
Example validation:
// ❌ Missing types
async function runAgent(input) {
return await agent.process(input);
}
// ✅ Correct
async function runAgent(input: string): Promise<AgentResult> {
return await agent.process(input);
}
Validating Your Existing Agents
Workflow
# Navigate to each repo
cd ~/projects/data-pipeline
# If you have Python agents in .claude/agents/:
# The validator runs automatically when you work with them
# Check for issues:
ls .claude/agents/
# agent-sdk-dev will flag any non-compliant agents
Common Issues & Fixes
Issue: Agent doesn’t follow SDK patterns
# Old pattern (CLI-only agent)
{
"name": "my-agent",
"description": "Does stuff",
"agent_type": "code-reviewer"
}
# SDK pattern (if converting to SDK)
# Needs proper Python/TS entry point with Agent SDK imports
Issue: Missing error handling
# ❌ No error handling
def process_data(data):
result = expensive_operation(data)
return result
# ✅ Proper error handling
async def process_data(data: Dict) -> Result:
try:
result = await expensive_operation(data)
return Result(success=True, data=result)
except Exception as e:
logger.error(f"Processing failed: {e}")
return Result(success=False, error=str(e))
Issue: Synchronous instead of async
# ❌ Synchronous (blocks)
def search_codebase(query):
return tool.search(query)
# ✅ Asynchronous (non-blocking)
async def search_codebase(query: str) -> SearchResults:
return await tool.search(query)
Auto-Fix: The validator often suggests fixes automatically. Follow the recommendations to bring agents up to best practices.
Building New Agents
Use Case Examples from Your Repos
data-pipeline: Data Pipeline Validator
/new-sdk-app
Language: Python
Purpose: Validate data pipelines before processing
Tools: File reading, schema validation, data quality checks
content-system: Content Validator
/new-sdk-app
Language: TypeScript
Purpose: Analyze content structure and metadata
Tools: File system, JSON parsing, content extraction
audio-lib: Audio Quality Checker
/new-sdk-app
Language: Python
Purpose: Verify audio files meet quality standards
Tools: Audio analysis, FFmpeg integration, report generation
dict-app: Dictionary Data Validator
/new-sdk-app
Language: Rust (or TypeScript)
Purpose: Validate database data integrity
Tools: Database queries, schema checks, consistency validation
Agent SDK Best Practices
1. Always Use Async/Await
# SDK agents should be async by default
async def main():
agent = Agent(name="my-agent")
result = await agent.run()
return result
2. Proper Error Handling
from typing import Result, Error
async def process(input: str) -> Result[str, Error]:
try:
output = await heavy_processing(input)
return Result.ok(output)
except ProcessingError as e:
return Result.err(Error(str(e)))
3. Type Hints (Python) / Types (TypeScript)
# ✅ Python with types
async def search(query: str, limit: int = 10) -> List[SearchResult]:
...
# ✅ TypeScript with types
async function search(query: string, limit: number = 10): Promise<SearchResult[]> {
...
}
4. Tool Registration
from claude_sdk import Agent, Tool
@Tool(name="search", description="Search codebase")
async def search_tool(query: str) -> str:
# Implementation
pass
agent = Agent(tools=[search_tool])
When to Use CLI Agents vs SDK Apps
CLI Agents (.claude/agents/*.json or .md):
- Simple, declarative agents
- Workflow automation
- Quick helpers for specific repos
- No programming needed
SDK Applications (built with /new-sdk-app):
- Complex multi-step logic
- External API integrations
- Advanced error handling
- Reusable across projects
- Requires programming
Most of your repos use CLI agents - simple JSON/MD files in .claude/agents/. SDK apps are for more complex needs. See the Agent SDK guide for details.
Validation Workflow Summary
# 1. Install plugin (already done)
claude plugin install agent-sdk-dev
# 2. Work with your agents
cd ~/projects/data-pipeline
# Edit agents in .claude/agents/
# 3. Validation happens automatically
# Any issues flagged with suggestions
# 4. Fix issues
# Follow validator recommendations
# 5. Test agent
# Verify it works as expected
# 6. Repeat for other repos
cd ~/projects/content-system
cd ~/projects/audio-lib
# etc.
Building vs Validating
Validating existing agents:
- Automatic when working with
.claude/agents/ - Flags issues, suggests fixes
- No command needed
Building new SDK apps:
- Use
/new-sdk-app - Interactive setup
- Generates compliant boilerplate
Most users: Validation is what you’ll use most. Building SDK apps is for advanced scenarios.
Pro Tip: Start by validating your existing agents. If the validator suggests converting to SDK app (for complexity reasons), then use /new-sdk-app.
Plugin Marketplace
Discover new plugins, evaluate their usefulness, and learn how to build your own.
Official Marketplace
Repository: https://github.com/anthropics/claude-code/tree/main/plugins
All officially supported plugins are hosted here.
Available Plugins (2026-01)
Installed (8 essential):
- ✅ ralph-wiggum - Autonomous iteration loops
- ✅ commit-commands - Git workflow automation
- ✅ frontend-design - Design system enforcement
- ✅ pr-review-toolkit - Comprehensive code review
- ✅ security-guidance - Security monitoring
- ✅ hookify - Custom rule enforcement
- ✅ feature-dev - 7-phase development workflow
- ✅ agent-sdk-dev - Agent development & validation
Not Installed:
- code-review - Alternative to pr-review-toolkit (different review agents)
- plugin-dev - For building distributable plugins
- explanatory-output-style - Adds educational context (token-heavy)
- learning-output-style - Interactive learning mode (asks user to code)
- claude-opus-4-5-migration - Model migration tool
code-review vs pr-review-toolkit: Both are PR review plugins. code-review focuses on CLAUDE.md compliance, pr-review-toolkit has 6 specialized agents including code-simplifier. You chose pr-review-toolkit.
Installing from Marketplace
Default (Official)
claude plugin install <plugin-name>
Installs from the official marketplace automatically.
Specific Marketplace
claude plugin install <plugin-name>@<marketplace-name>
For third-party or custom marketplaces.
Examples
# Official marketplace (default)
claude plugin install ralph-wiggum
# Specific marketplace (if you had one)
claude plugin install my-custom-plugin@company-marketplace
Evaluating New Plugins
Before installing a new plugin, consider:
1. What Problem Does It Solve?
- Does it automate something you do manually?
- Does it prevent mistakes you’ve made?
- Does it enforce standards you care about?
Example: hookify solves PREFIX naming violations
2. What’s the Token Cost?
High Cost:
- SessionStart hooks (run every session): explanatory-output-style
- Always-active skills: Some aggressive linters
Low Cost:
- Commands (only when invoked): commit-commands
- Conditional hooks (only when triggered): security-guidance
- PreToolUse hooks (only before dangerous actions): hookify
Token Budget: SessionStart hooks add overhead to EVERY session. Use sparingly. PreToolUse and command-based plugins are more efficient.
3. Does It Conflict?
Conflicting plugins:
- code-review ↔ pr-review-toolkit (both do PR review)
- Multiple commit automation plugins
- Overlapping security scanners
Check before installing:
# See what's installed
/help
# Look for similar functionality
4. Is It Maintained?
Check the official repo:
- Last updated date
- Number of issues/PRs
- Community activity
Building Your Own Plugins
When to Build a Plugin
Good reasons:
- Workflow specific to your multi-repository setup
- Enforcement rule unique to your conventions
- Integration with internal tools
- Pattern repeated across projects
Bad reasons:
- One-off task (just do it directly)
- Already exists in marketplace
- Workflow still evolving (standardize first)
Plugin Anatomy
Minimum structure:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Manifest
├── commands/ # Slash commands (optional)
│ └── my-command.sh
├── skills/ # Auto-invoked skills (optional)
│ └── my-skill.json
├── agents/ # Specialized agents (optional)
│ └── my-agent.py
├── hooks/ # Lifecycle hooks (optional)
│ └── pre-tool-use.sh
└── README.md
plugin.json example:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "Does something useful",
"commands": ["commands/my-command.sh"],
"skills": ["skills/my-skill.json"],
"hooks": {
"PreToolUse": "hooks/pre-tool-use.sh"
}
}
Using plugin-dev
For building distributable plugins:
# Install plugin-dev
claude plugin install plugin-dev
# Create new plugin
/plugin-dev:create-plugin
# Follow interactive workflow:
# 1. Choose plugin type
# 2. Select features
# 3. Generate structure
# 4. Implement functionality
# 5. Test locally
# 6. Package for distribution
plugin-dev vs agent-sdk-dev: plugin-dev builds entire plugins (commands, hooks, agents). agent-sdk-dev builds just agents. For most users, agent-sdk-dev is sufficient.
Custom Plugin Ideas for Your Workflow
1. Cross-Repo Documentation Syncer
Problem: CLAUDE.md files across 6 repos get out of sync
Solution: Plugin that:
- Scans all repos for CLAUDE.md changes
- Identifies drift from workspace standards
- Suggests syncs
- Auto-updates with approval
Type: Command + Agent
2. PREFIX Consistency Checker
Problem: Different PREFIX patterns across repos
Solution: Plugin that:
- Validates PREFIX files in all repos
- Checks sequential numbering
- Ensures title presence
- Reports violations
Type: Command (or use ralph-wiggum with hookify)
3. Multi-Repo Test Runner
Problem: Running tests across 6 repos manually
Solution: Plugin that:
- Detects test frameworks in each repo
- Runs tests in parallel
- Aggregates results
- Reports failures
Type: Command
4. Dependency Audit Reporter
Problem: Tracking outdated dependencies across repos
Solution: Plugin that:
- Scans package.json, Cargo.toml, pyproject.toml
- Checks for outdated deps
- Reports security vulnerabilities
- Suggests updates
Type: Skill (auto-invoked when dependencies change)
Most of these can be solved with ralph-wiggum + existing tools! Build custom plugins only if you need persistent automation.
Publishing Plugins
Internal Use (Your 6 Repos)
Option 1: User-level installation
# Copy plugin to:
~/.claude/plugins/my-plugin/
# Claude Code auto-detects it
Option 2: Repo-level installation
# Copy plugin to each repo:
~/projects/data-pipeline/.claude/plugins/my-plugin/
~/projects/content-system/.claude/plugins/my-plugin/
# etc.
Public Distribution
Steps:
- Create plugin following structure
- Test thoroughly
- Write comprehensive README
- Submit PR to official marketplace repo
- Wait for review and merge
Requirements:
- Clear documentation
- Test coverage
- Security review
- Maintainer commitment
Plugin Maintenance
Updating Your Installed Plugins
# Update all plugins
claude plugin update <plugin-name>
# Check for updates
# Visit: https://github.com/anthropics/claude-code/tree/main/plugins
Removing Unused Plugins
# Disable temporarily
claude plugin disable <plugin-name>
# Uninstall permanently
claude plugin uninstall <plugin-name>
Disable vs Uninstall: Disable keeps the plugin installed but inactive. Uninstall removes it completely. Use disable first to test if you miss it.
Integration with MCP Servers
MCP (Model Context Protocol) Servers provide external integrations:
- Database connections
- API access
- File system extensions
- Custom tools
Plugins vs MCP:
- Plugins: Extend Claude Code behavior (commands, hooks, agents)
- MCP Servers: Provide external data/tools to Claude
They work together:
Plugin (ralph-wiggum)
→ Calls MCP Server (database)
→ Retrieves data
→ Processes it iteratively
MCP documentation: See /help or Claude Code docs for MCP server setup.
Next Steps
Explore marketplace: Visit https://github.com/anthropics/claude-code/tree/main/plugins
Try other plugins:
- code-review (alternative PR review)
- plugin-dev (if building custom plugins)
Build your own:
Use /plugin-dev:create-plugin if you have a specific workflow to automate
Share feedback:
- GitHub issues for bug reports
- PRs for improvements
- Discussions for feature requests
You’re Ready! You have 8 powerful plugins installed and know how to use them. Start with ralph-wiggum for autonomous work, hookify for enforcement, and the essential plugins for daily workflows.