mthli

Ccp — Development skill for Claude Code

Development community

Headless Claude Code automation without the headless mode 👀.

How to install Ccp

This entry records only its repository, not the path inside it, so there is no exact command to give. Open mthli/ccp and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Ccp does

Headless Claude Code automation without the headless mode 👀.

Alternatives in Development

  • Lamda — The most powerful Android RPA agent framework, next generation mobile automation 7.7k ★
  • Domxss — Confirm DOM XSS in a real headless browser — injects canary payloads into params + URL fragment and only repor 4.5k ★
  • Claude Code Everything You Need To Know — Ultimate all-in-one guide to mastering Claude Code 1.3k ★

README

ccp

[简体中文](README.zh-CN.md) · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · [한국어](README.ko.md)

Headless Claude Code automation without the headless mode 👀

What it is

`ccp` runs Claude Code like `claude -p` (feed a prompt, get the final answer on stdout), but **bills your subscription instead of the Agent SDK credit pool**.

It does this by driving a real *interactive* Claude Code TUI inside a detached [tmux](https://github.com/tmux/tmux) session: it launches Claude, types in your prompt, auto-answers the permission prompts, and scrapes the final reply. You get headless ergonomics; Claude thinks it's a normal interactive session.

claude -p     →  headless mode    →  Agent SDK credit pool
ccp.sh "..."  →  interactive TUI  →  subscription pool ✅

Requirements

Installation

Homebrew

brew install mthli/tap/ccp

This pulls in `tmux` and `jq` automatically and puts a `ccp` command on your `PATH` (use `ccp` wherever the examples below say `./ccp.sh`). You still need [`claude`](https://code.claude.com/docs#get-started) installed separately and logged in.

From source

git clone https://github.com/mthli/ccp.git
cd ccp
./ccp.sh "say hi"

Usage

./ccp.sh ""

The prompt goes in, the final answer comes out on stdout:

./ccp.sh "summarize README.md"
./ccp.sh "say hi" # quick end-to-end smoke test.

Permission mode

By default every tool call is auto-approved (`allow`). Choose how tool calls are handled with `-p`:

./ccp.sh -p allow "refactor utils.py" # auto-approve everything (default).
./ccp.sh -p deny  "scan the repo"     # reject every tool call.
./ccp.sh -p ask   "edit config"       # defer to the TUI's normal prompt.

Even under `allow`, a few irreversible Bash commands (`rm -rf`, `mkfs`, `dd if=`, fork bombs, …)