agentsclimarketplace

Claude code

Skill nikicat/claude-ppq/skills/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

Install
npx -y skills add nikicat/claude-ppq --skill claude-code

Assembled 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 varMeaningTypical value
ANTHROPIC_BASE_URLpoint Claude Code at ppqhttps://api.ppq.ai
ANTHROPIC_AUTH_TOKENppq API keyfrom ~/.config/ppq/api-key (none? → ppq:setup)
ANTHROPIC_MODELmain modele.g. moonshotai/kimi-k3
ANTHROPIC_SMALL_FAST_MODELbackground tasks (titles, summaries)cheap, e.g. mistralai/mistral-nemo
ANTHROPIC_DEFAULT_OPUS_MODEL ANTHROPIC_DEFAULT_SONNET_MODELwhat tier-pinned subagents resolve toe.g. claude-sonnet-5
ANTHROPIC_DEFAULT_HAIKU_MODELhaiku-pinned tasksthe cheap model
DISABLE_PROMPT_CACHING1 — most ppq upstreams don't do Anthropic prompt caching1

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>.fish with local set -lx exports 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-ppq symlink on PATH plus PPQ_MODEL=<model>.
  • Windows: a PowerShell function in $PROFILE wrapping claude-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:topup skill; 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.

Keep looking

Skills are one crate of 627,559. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.