Awesome-omni-skill programmatic-claude
Run Claude Code programmatically via CLI (-p flag), Python SDK, or TypeScript SDK. For automation, CI/CD, session chaining, headless execution, and orchestrating multiple Claude instances. Triggers: programmatic, headless, CLI automation, session chaining, -p flag, Python SDK, orchestrate Claude, CI/CD Claude, run Claude automatically.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/cli-automation/programmatic-claude" ~/.claude/skills/diegosouzapw-awesome-omni-skill-programmatic-claude && rm -rf "$T"
manifest:
skills/cli-automation/programmatic-claude/SKILL.mdsafety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
- pip install
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content
Programmatic Claude Code
Run Claude non-interactively for automation workflows.
Three Interfaces
| Interface | Install | Best For |
|---|---|---|
CLI () | Built-in | Scripts, CI/CD, quick tasks |
| Python SDK | | Custom agents, hooks, multi-turn |
| TypeScript SDK | | Type-safe apps, Node.js |
Core Patterns
One-Shot Task
claude -p "Fix TypeScript errors in src/" \ --allowedTools "Read,Edit,Bash" \ --output-format json
Session Chaining
# Start task, capture session ID result=$(claude -p "Create auth system" --output-format json) session_id=$(echo "$result" | jq -r '.session_id') # Continue in same session claude -p "Add tests for auth" --resume "$session_id"
Structured Output
claude -p "List all API endpoints" \ --output-format json \ --json-schema '{"type":"object","properties":{"endpoints":{"type":"array"}}}'
Python Multi-Turn
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions options = ClaudeAgentOptions( allowed_tools=["Read", "Write", "Edit", "Bash"], permission_mode="acceptEdits" ) async with ClaudeSDKClient(options=options) as client: await client.query("Build the component") async for msg in client.receive_response(): print(msg) await client.query("Now add tests") async for msg in client.receive_response(): print(msg)
Key Flags
| Flag | Purpose |
|---|---|
| Non-interactive mode |
| Auto-approve tools (no prompts) |
| Structured output with session_id |
| Enforce response format |
| Continue specific session |
| Continue most recent session |
Files
- Overview and quick examplesREADME.md
- Website cloning automation pipelineharvest-and-build.md
Use Cases
- CI/CD - Run in GitHub Actions for automated fixes
- Orchestration - Chain multiple Claude sessions
- Pipelines - Harvest → Analyse → Build → Validate workflows
- Scheduled Tasks - Daily security scans, dependency updates