A collection of Claude Code plugins for enhanced development workflows with AI assistants.
Delegate tasks to external AI models and run autonomous maintenance loops.
- Type: Skill-based plugin
- Skills:
/delegate-to-ai,/auto-maintain - Purpose: Route tasks to Gemini, local Ollama, or other models via PAL MCP
Systematic CodeQL alert analysis and resolution for GitHub Actions workflows.
- Type: Command/Skill/Agent-based plugin
- Command:
/resolve-codeql - Purpose: Resolve CodeQL security alerts in GitHub Actions workflows
Sync AI tool permissions across repos and quickly add always-allow permissions.
- Type: Skill-based plugin
- Skills:
/sync-permissions,/quick-add-permission - Purpose: Manage Claude and Gemini permission configs across repositories
Combined content validation and guard plugin.
- Type: Pre/PostToolUse hook
- Tools: Bash, Write, Edit
- Purpose: Token limits, markdown/README validation, webfetch guard, issue/PR rate limiting
Combined git security and workflow protection via PreToolUse hooks.
- Type: PreToolUse hook
- Tools: Bash, Edit, Write, NotebookEdit
- Purpose: Blocks dangerous git/gh commands and file edits on main branch
Git main branch sync, repository refresh, and PR merge workflows.
- Type: Command/Skill-based plugin
- Skills:
/sync-main,/refresh-repo,/rebase-pr,/troubleshoot-rebase,/troubleshoot-precommit,/troubleshoot-worktree - Purpose: Maintain linear git history and keep branches in sync
PR finalization, squash-merge, review thread resolution, and issue shaping.
- Type: Command/Skill-based plugin
- Skills:
/finalize-pr,/squash-merge-pr,/resolve-pr-threads,/shape-issues,/trigger-ai-reviews - Purpose: GitHub PR/issue management workflows
Cross-repo infrastructure orchestration for Terraform and Ansible workflows.
- Type: Skill-based plugin
- Skills:
/orchestrate-infra,/sync-inventory,/test-e2e - Purpose: Coordinate infrastructure changes across multiple repositories
Cleanup orphaned MCP server processes on session exit.
- Type: PostToolUse hook
- Purpose: Workaround for upstream MCP orphan-process bug (#1935)
claude plugins add jacobpevans-cc-plugins/<plugin-name>Available plugins:
jacobpevans-cc-plugins/ai-delegationjacobpevans-cc-plugins/codeql-resolverjacobpevans-cc-plugins/config-managementjacobpevans-cc-plugins/content-guardsjacobpevans-cc-plugins/git-guardsjacobpevans-cc-plugins/git-workflowsjacobpevans-cc-plugins/github-workflowsjacobpevans-cc-plugins/infra-orchestrationjacobpevans-cc-plugins/process-cleanup
Clone this repository and link plugins:
git clone https://github.com/JacobPEvans/claude-code-plugins.git
cd claude-code-plugins
claude plugins link ./ai-delegation
claude plugins link ./codeql-resolver
claude plugins link ./config-management
claude plugins link ./content-guards
claude plugins link ./git-guards
claude plugins link ./git-workflows
claude plugins link ./github-workflows
claude plugins link ./infra-orchestration
claude plugins link ./process-cleanupEach plugin follows Claude Code official best practices. Most plugins use hook-based structure:
plugin-name/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata
├── hooks/
│ └── hooks.json # Hook configuration
├── scripts/
│ └── hook-script.py # Implementation
└── README.md # Plugin documentation
Command/skill-based plugins use a different structure:
plugin-name/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata
├── commands/
│ └── command.md # Command definition
├── skills/
│ └── skill-name/
│ └── SKILL.md # Skill documentation
└── README.md # Plugin documentation
See individual plugin READMEs for specific details. General contribution guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Follow conventional commits:
feat(plugin): description - Sign your commits (GPG required)
- Submit a pull request
- Claude Code CLI
- Python 3.10+ (for hook scripts)
- bats-core (for running tests)
- Tool-specific dependencies (see individual plugin READMEs)
# Link a plugin for testing
claude plugins link ./plugin-name
# Verify it loaded
claude plugins list
# Test functionality
# (trigger the hook conditions for the specific plugin)Run the shared test runner to execute all plugin tests:
# Run all tests
./scripts/run-tests.sh
# Run tests for a specific plugin
./scripts/run-tests.sh content-guards
# Alternative: run bats directly on a specific test file
bats tests/content-guards/**/*.batsEnable optional pre-push hooks that run tests before pushing:
# Enable git hooks
git config core.hooksPath .githooks
# Disable git hooks
git config --unset core.hooksPathThis repository automatically triggers Nix flake updates when changes are merged to main. This ensures downstream repositories (like nix-config) immediately pull in plugin updates instead of waiting for scheduled updates.
- Changes merged to
mainbranch trigger.github/workflows/trigger-nix-update.yml - Workflow sends a
repository_dispatchevent to the nix repository - Nix repository's
deps-update-flake.ymlworkflow updates theclaude-code-pluginsflake input - Automated PR created with the updated
flake.lock
The trigger workflow requires a GitHub Personal Access Token (PAT) stored as an organization secret:
Secret Name: GH_PAT_WORKFLOW_DISPATCH
Required Scopes:
repo- Full control of private repositoriesworkflow- Update GitHub Action workflows
Setup Instructions:
- Generate PAT: GitHub.com → Settings → Developer settings → Personal access tokens → Tokens (classic)
- Select required scopes:
repoandworkflow - Set expiration to 1 year
- Copy the token
- Add as organization secret: Organization Settings → Secrets and variables → Actions → New organization secret
- Name:
GH_PAT_WORKFLOW_DISPATCH - Paste token value
- Select repository access (all repositories or specific repos)
Security Notes:
- Token has minimal scopes (no admin, no packages)
- Rotate token annually before expiration
- Never expose token in logs or workflow outputs
- Organization-level secret is accessible to all repos
This pattern can be replicated to any JacobPEvans repository that's a flake input. Simply:
- Copy
.github/workflows/trigger-nix-update.ymlto the target repository - Update the
flake_input_namefield to match the flake input name innix/flake.nix - No changes needed to the nix repository workflow (uses generic event type)
Apache License 2.0 - See LICENSE for details.
JacobPEvans
- GitHub: @JacobPEvans
- Email: 20714140+JacobPEvans@users.noreply.github.com