claude-code-automation
Claude Code plugins for automation and structured development workflows.

This repository contains two plugins:
| Plugin | Command | Description |
|---|
| automate | /automate | Expert advisor that helps you decide and create the right Claude Code automation (skills, hooks, subagents, permissions, etc.) |
| develop-cycle | /develop-cycle | Structured development workflow with analysis, implementation, validation, and mandatory checkpoint before commit/push |
| plan-cycle | /plan-cycle | File-based planning with annotation cycles. Persistent markdown plans you can edit and refine iteratively |
Plugin 1: automate
An expert advisor that helps you decide and create the right automation for your needs.
Schemas updated: Mar 2026 — 25 hook events, MCP Servers, LSP Servers, Agent Teams, PowerShell tool, effort/paths/shell fields.
Why this plugin?
Claude Code is Anthropic's AI coding agent for the terminal. It offers multiple automation mechanisms: skills, hooks, subagents, permissions, CLAUDE.md, custom commands, MCP servers, LSP servers, and agent teams. Each serves a different purpose, but choosing the right one isn't always obvious.
Common questions:
- Should I use a hook or a skill?
- When do I need a subagent vs a regular skill?
- How do I enforce a rule that Claude MUST follow, not just "should" follow?
- What if I use
--dangerously-skip-permissions?
- When should I set up an MCP server vs a hook?
- Do I need an agent team or just a subagent?
This plugin acts as an expert advisor. You describe what you want to automate, it interviews you to understand your exact needs, then creates the right files in the right places.
Installation
/plugin marketplace add elmisi/claude-code-automation
/plugin install automate
Then restart Claude Code to activate the plugin.
Updating
Auto-update is disabled by default for third-party plugins. To enable automatic updates:
/plugin → Marketplaces tab → elmisi → Enable auto-update
Or update manually anytime:
/plugin marketplace update elmisi
/reload-plugins
Uninstallation
# 1. Clean up all automations created by the plugin (optional but recommended)
/automate-cleanup
# 2. Uninstall the plugin
/plugin uninstall automate
If you skip the cleanup step, your automations (skills, hooks, subagents, etc.) will continue to work independently — they don't depend on the plugin at runtime. If you reinstall the plugin later, it will automatically detect and re-register existing automations.
Usage
/automate <your topic>
Examples
/automate semantic versioning on every commit
/automate block push without explicit approval
/automate TUI project conventions
/automate security review for all PRs
/automate API design guidelines
/automate integrate GitHub tools via MCP
/automate set up TypeScript language server
See it in action
/automate run tests before every commit
The plugin interviews you to understand exactly what you need:
Q: When should this happen?
→ Always, on every commit
Q: Must it be guaranteed, or just a guideline?
→ Guaranteed — block the commit if tests fail
Q: Should Claude decide which tests to run?
→ Yes, based on the changed files
Decision: Hook + Skill
"A Skill alone won't work — Claude can skip skills. You need a Hook to guarantee tests run on every commit. But since Claude should intelligently pick which tests based on changed files, you also need a Skill for the logic. I'll create both."
Files created:
| File | Purpose |
|---|
~/.claude/settings.json | Hook: blocks git commit unless tests pass |
~/.claude/skills/test-runner/SKILL.md | Skill: analyzes changes, picks relevant tests |
Both files are validated against schemas and registered for easy management (/automate-list).
The twist: had you answered "just a guideline" instead, the plugin would create a single CLAUDE.md rule — no hooks, no skills. Same topic, different needs, completely different automation.
Managing Automations
All automations created by this plugin are tracked in a registry (~/.claude/automations-registry.json). Each management command is a separate skill for instant tab-completion and faster execution: