Skip to main content
Generalmarkus41

claude-code-automation

Universal reference for Claude Code automation surface — hooks, skills, plugins, sub-agents, agent teams, MCP, scheduled tasks, channels, routines, headless/SDK, checkpointing, permissions. Invoke when designing automations that leverage Claude Code features or when user asks "how do I automate X with Claude Code".

Stars
12
Source
markus41/claude
Updated
2026-05-11
Slug
markus41--claude--claude-code-automation
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/markus41/claude/HEAD/plugins/work-automation/skills/claude-code-automation/SKILL.md -o .claude/skills/claude-code-automation.md

Drops the SKILL.md into .claude/skills/claude-code-automation.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Claude Code Automation

Map of automation surfaces in Claude Code and which one to reach for. Internal-only — relies on what the user already has installed.

Decision matrix — which surface to use

Need Surface Lives in
Run shell command on every tool event Hook settings.json hooks:
Encapsulate domain knowledge + workflow Skill .claude/skills/<name>/SKILL.md
Deterministic multi-step flow the user invokes Slash command .claude/commands/<name>.md
Isolated worker spawned from main agent Sub-agent .claude/agents/<name>.md
Coordinated multi-agent pattern Agent team .claude/agent-teams/<name>.yaml
External tool surface (APIs, CLIs) MCP server .mcp.json or settings.json mcpServers:
Package the above for reuse Plugin plugins/<name>/.claude-plugin/plugin.json
Runs on a cron Scheduled task (Desktop) or Routine (CLI) Desktop MCP scheduled-tasks / ~/.claude/routines/
Non-interactive CI run Headless mode claude -p "..." --output-format stream-json
Programmatic embed Agent SDK @anthropic-ai/claude-agent-sdk (TS) or claude-agent-sdk (Python)
Structured cross-session chat Channel channels.json + channels-reference
Rich in-CLI UI Fullscreen mode claude --fullscreen or TUI extensions

Hooks — the three lifecycle events that matter most

  • PreToolUse — veto or mutate a tool call. {"decision":"block","reason":"..."} blocks.
  • PostToolUse — react to tool results (auto-format, audit logs).
  • Stop / SubagentStop — cleanup when work concludes.
{
  "hooks": {
    "PreToolUse": [{
      "matcher": {"tool_name": "Bash"},
      "command": "bash .claude/hooks/protect-sensitive-files.sh"
    }]
  }
}

Skills vs commands vs sub-agents

  • Skills are knowledge + procedure — auto-invoked by description match. Use for domain expertise.
  • Commands are deterministic invokable flows — user types /name. Use for repeatable operations.
  • Sub-agents are isolated workers — spawn for parallelism or to protect context window.

MCP — internal pattern

Prefer MCP tools over shell wrappers when available. Check tool surface first:

# From this session
mcp__harness__*           # Harness platform ops
mcp__kubernetes__*        # K8s resources
mcp__9c1c57f5_..._atlassian__*    # Jira + Confluence
mcp__384a610f_..._*       # M365: Outlook, SharePoint, Teams
mcp__MCP_DOCKER__azure_*  # Azure services
mcp__scheduled-tasks__*   # Desktop scheduled tasks

Plugins — what to bundle

A plugin is one coherent outcome: a marketplace item a user can install and get value from. Bundle:

  • .claude-plugin/plugin.json — metadata.
  • skills/ — auto-invoked knowledge.
  • commands/ — user-invoked flows.
  • agents/ — specialized workers.
  • hooks/ — lifecycle scripts.
  • rules/ — always-loaded instructions.
  • README.md — what it does + install.

Register in marketplace: edit <marketplace>/.claude-plugin/marketplace.json, add a plugins[] entry.

Scheduled tasks (Desktop)

mcp__scheduled-tasks__create_scheduled_task
  name: "harness-daily-health"
  cron: "0 9 * * *"
  prompt: "Run /wa-pipeline status for all thelobbi pipelines and post to Slack"

Headless mode — CI pattern

claude -p "run /wa-report for work-unit-14" \
  --output-format stream-json \
  --allowed-tools "Read,Bash" \
  --max-turns 10

Use in Harness CI steps where Claude runs a specific flow without TTY.

Permissions — the four-mode model

Mode When
default Interactive — user approves novel calls
acceptEdits File edits pre-approved, tools still ask
plan Read-only — for analysis
bypassPermissions CI / trusted automation only

Set in settings.json permissions.mode or per-invocation --permission-mode.

Memory (memory/ + MEMORY.md)

  • MEMORY.md is the always-loaded index. ≤150 chars per entry, one line.
  • Entries written to memory/<name>.md with frontmatter (type: user | feedback | project | reference).
  • Never write memory content into MEMORY.md directly.

Checkpointing

File checkpointing preserves state across sessions. Enable via settings.json "checkpointing": { "enabled": true }. Use for long-running analyses that must survive restarts.

Common automation recipes

  1. Auto-format on edit — PostToolUse hook on Edit/Write + per-language formatter.
  2. Protect secrets — PreToolUse hook on Bash matching .env|*.pem|*.pfx|*.key patterns.
  3. CI gatekeeper — headless Claude + --allowed-tools whitelist + stream-json output parsed by pipeline.
  4. Daily report — scheduled task runs /wa-report + posts to Slack/Teams via MCP.
  5. Work-unit close — SubagentStop hook emits audit event + triggers report generation.

Related

  • skills/harness-automation — CI/CD side.
  • skills/work-unit-protocol — the reporting contract this automates toward.
  • rules/ultra-mode.md — constraints every automation respects.