Claude code
Run or configure Claude Code against ppq.ai models (Kimi, DeepSeek, GLM, Qwen, Grok, Gemini, cheaper Claude…). Use when the user wants to launch Claude Code on a ppq model, create a claude-<model> launcher/fish function, pick or price ppq models, or troubleshoot a ppq-backed Claude Code setup.From its SKILL.md
npx -y skills add nikicat/claude-ppq --skill claude-codeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.8 KB, as published. Nobody here has run it
Claude Code on ppq.ai
ppq.ai exposes a native Anthropic /v1/messages endpoint, so Claude Code
talks to it directly — no proxy. Everything is driven by env vars scoped to the
launch:
| Env var | Meaning | Typical value |
|---|---|---|
ANTHROPIC_BASE_URL | point Claude Code at ppq | https://api.ppq.ai |
ANTHROPIC_AUTH_TOKEN | ppq API key | from ~/.config/ppq/api-key (none? → ppq:setup) |
ANTHROPIC_MODEL | main model | e.g. moonshotai/kimi-k3 |
ANTHROPIC_SMALL_FAST_MODEL | background tasks (titles, summaries) | cheap, e.g. mistralai/mistral-nemo |
ANTHROPIC_DEFAULT_OPUS_MODEL ANTHROPIC_DEFAULT_SONNET_MODEL | what tier-pinned subagents resolve to | e.g. claude-sonnet-5 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | haiku-pinned tasks | the cheap model |
DISABLE_PROMPT_CACHING | 1 — most ppq upstreams don't do Anthropic prompt caching | 1 |
Always pin the tier aliases: otherwise model-pinned subagents (code-review, etc.) fall through to real Opus via ppq at ~10.55/52.75 USD per 1M tokens. (Prices in this file are written without dollar signs deliberately: a literal dollar-digit sequence is a positional-argument placeholder in skill bodies and gets mangled at render time.)
Ready-made launcher
${CLAUDE_SKILL_DIR}/scripts/claude-ppq -m moonshotai/kimi-k3 [claude args…]
${CLAUDE_SKILL_DIR}/scripts/claude-ppq --models [filter] # catalog with prices/ctx/privacy (no key needed)
All model info comes from --models — id, in/out price per 1M, context
length, privacy level. Never hand-roll curl https://api.ppq.ai/… plus
python3/node parsing: stock Windows has no python3 (a Store stub that
errors), hand-rolled commands aren't pre-approved (permission prompt every
time), and the API key must never appear inside a command line.
Telling the user to launch it in their own terminal: on POSIX shells give
the bash script path as-is; on Windows the user's terminal is
PowerShell/cmd, where the bash script just opens in a text editor — give
them instead:
powershell -ExecutionPolicy Bypass -File "<skill dir>\scripts\claude-ppq.ps1" -m <model>
(same flags, including --models).
Run these exactly as shown (one command, full path copied byte-for-byte —
keep Windows backslashes as printed — nothing chained) — these shapes are
pre-approved via allowed-tools for as long as this turn lasts. If a
literal unsubstituted ${CLAUDE_SKILL_DIR} appears above (older harness),
build the path from this SKILL.md's own location instead — the "Base
directory for this skill" header, or the directory you read this SKILL.md
from — still the launcher, never curl. Your own
calls go through the Bash tool with the bash launcher on every OS,
including Windows — the .ps1 exists to hand to the user for their own
terminal; the only pre-approved way to run it yourself is its read-only
--models check, never a session launch.
Key hygiene & cross-skill calls: to check whether a key is configured,
run exactly test -r ~/.config/ppq/api-key (pre-approved; exit 0 = key
present); for masked config + balance, the setup skill's read-only
bash <plugin>/skills/setup/scripts/setup.sh status shape is pre-approved
too. NEVER open the key file with Read or cat — the key must never enter
the conversation. Anything that changes the account (new, from-*) goes
through invoking the ppq:setup skill (Skill(ppq:setup) is pre-approved),
not its script.
Mid-flow questions (model choice, pricing tradeoffs): use the AskUserQuestion
tool, not a turn-ending prose question — its answer returns as a tool result
and the grant stays armed. No key configured → invoke ppq:setup in this
same turn (Skill(ppq:setup) is pre-approved here).
Defaults (all env-overridable): model $PPQ_MODEL → moonshotai/kimi-k3, small
$PPQ_SMALL_MODEL → mistralai/mistral-nemo, subagent tier $PPQ_AGENT_MODEL →
claude-sonnet-5. Suggest symlinking it onto PATH if the user wants it
permanently: ln -s "${CLAUDE_SKILL_DIR}/scripts/claude-ppq" ~/.local/bin/.
Creating a per-model launcher
Match the user's shell and OS — your environment context usually names the
shell already; if not, echo $SHELL is pre-approved:
- fish: a function in
~/.config/fish/functions/claude-<name>.fishwith localset -lxexports so nothing leaks into the session; if one already exists (e.g.claude-kimi.fish), read it and copy its shape. - bash/zsh: a function in the rc file, or a
claude-ppqsymlink on PATH plusPPQ_MODEL=<model>. - Windows: a PowerShell function in
$PROFILEwrappingclaude-ppq.ps1 -m <model>.
Whatever the shell: key from $PPQ_API_KEY or ~/.config/ppq/api-key, model
overridable via $PPQ_MODEL, and for a new model reconsider the small/agent
models' prices.
Alternative: per-project settings.json
For a project that should always run on ppq, put the same vars in
.claude/settings.json instead of a launcher:
{ "env": {
"ANTHROPIC_BASE_URL": "https://api.ppq.ai",
"ANTHROPIC_MODEL": "moonshotai/kimi-k3",
"ANTHROPIC_SMALL_FAST_MODEL": "mistralai/mistral-nemo",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "mistralai/mistral-nemo",
"DISABLE_PROMPT_CACHING": "1"
} }
Never write the API key into a settings file that might be committed —
ANTHROPIC_AUTH_TOKEN belongs in the environment / launcher / key file.
Picking a model
Run --models [filter] — it prints price (in/out per 1M tokens), context
length, and privacyLevel (zdr zero-data-retention > e2e TEE > anon)
for every model, keyless. Check price and privacy before recommending.
--models is the ONLY way you fetch model data — never curl the API, on
any turn. On a turn where the grant has expired (any turn after the one that
invoked this skill) the launcher command simply asks for one approval — that
single familiar prompt always beats a hand-rolled curl chain, which prompts
too and then breaks on parsing. Reference points surveyed 2026-07, in/out
USD per 1M tokens: kimi-k3 3.17/15.82 (anon), claude-sonnet-5 2.11/10.55,
claude-haiku-4.5 1.05/5.28, deepseek-v4-pro 0.46/0.92 (zdr), glm-5.2
0.82/2.57 (zdr, 1M ctx), qwen3-coder-30b 0.07/0.28 (zdr), grok-4.20
1.32/2.64 (2M ctx).
Known quirks
- kimi-k3 latency can spike to minutes — don't assume a hang.
- Balance exhaustion mid-session returns 402 →
ppq:topupskill; keep headroom ≈ 2× the planned spend. - No Anthropic prompt caching on non-Claude upstreams — that's why
DISABLE_PROMPT_CACHING=1; expect full-price input tokens each turn.