Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
Manage account auth and query usage/billing/subscription. An agent skill from QianWen-AI/qianwen-ai.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usage --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/usage/qianwen-usage .claude/skills/qianwen-usage && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .claude/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/usage/qianwen-usage .agents/skills/qianwen-usage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .agents/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/usage/qianwen-usage .cursor/skills/qianwen-usage && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .cursor/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/QianWen-AI/qianwen-ai.git --path skills/usage/qianwen-usage--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/usage/qianwen-usage .gemini/skills/qianwen-usage && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .gemini/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/usage/qianwen-usage .github/skills/qianwen-usage && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .github/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install QianWen-AI/qianwen-ai qianwen-usage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QianWen-AI/qianwen-ai.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/usage/qianwen-usage .opencode/skills/qianwen-usage && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "qianwen-usage" agent skill from https://github.com/QianWen-AI/qianwen-ai/tree/main/skills/usage/qianwen-usage into .opencode/skills/qianwen-usage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qianwen-usage", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
qianwen-usageManage account auth and query usage/billing/subscription. An agent skill from QianWen-AI/qianwen-ai.
Qianwen Usage is an agent skill from QianWen-AI/qianwen-ai. Manage account auth and query usage/billing/subscription. Use for: login, logout, check usage, view billing, free tier quota, Token Plan status, pay-as-you-go costs, billing summary, model cost breakdown, call logs (which requests failed, 4xx/5xx errors, request latency, recent models called, request-id lookup), subscription status, order history, team seats, PAYG spending limit. Skip for: model browsing, payment/recharge (use qianwen-payment), non-account tasks.
Its SKILL.md is about 6.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs. The repository describes itself as: 将 QianWen 的全套 AI 技能折叠进你的 Agent 里,你提需求就行。 The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 11b1805. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Qianwen Usage loads about 6.7k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 2,261 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
**Step 2 — IMMEDIATELY start polling (do NOT wait for user confirmation):**Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from QianWen-AI/qianwen-ai at commit 11b1805, republished under its Apache-2.0 licence (© QianWen-AI). 2,261 words, ~6,733 tokens.
.claude/skills/qianwen-usage/SKILL.md (or your agent's skills folder).Unified entry point for QianWenAI account, usage, billing, and subscription: auth status, usage summary, free tier quota, Token Plan, pay-as-you-go, billing summary, model cost breakdown, subscription status, order history, team seats, and PAYG spending limit.
qianwen versionIf not installed, run:
npm install -g @qianwenai/qianwen-cliNode.js >= 18 required.
These rules apply to every command in this skill:
qianwen version. If the installed version is below 1.3.0, do NOT invoke commands that may be missing (notably the billing and subscription groups); explain that the installed CLI predates the baseline and wait for the user to confirm an upgrade before proceeding. (This is a pre-execution check on every run — distinct from the "CLI Update Check" section below, which only applies when the user explicitly asks about CLI updates.)success / partial / empty / confirmation_required / error. Never fill in missing or failed results with mock data — report what actually happened.verification_url). Never fabricate a URL from a name or a guess.The CLI auto-detects non-TTY environments and degrades safely — no wrapper script needed.
qianwen auth status --format json → authenticated: true → skip to commandsqianwen auth login --init-only --format json → extract verification_url → open in browserqianwen auth login --complete --format json → poll until success eventqianwen auth status --format jsonIf authenticated: true and token is not expired, skip login entirely.
Works in all environments (desktop, headless, remote container).
Step 1 — Initialize login (non-blocking):
qianwen auth login --init-only --format jsonExits immediately. Parse the stdout JSON events array:
already_authenticated → user is logged in, skip to commandsdevice_code → extract verification_url and present it to the userOn desktop environments with a browser, open the URL for the user:
open "$VERIFICATION_URL" # macOS
xdg-open "$VERIFICATION_URL" # Linux
start "" "$VERIFICATION_URL" # WindowsStep 2 — IMMEDIATELY start polling (do NOT wait for user confirmation):
qianwen auth login --complete --format jsonParse the stdout JSON events array:
success → login complete, proceed to commandsexpired → device code expired, go back to Step 1error → report failureIf the agent is running in a TTY (e.g., user's terminal), simply run:
qianwen auth loginThe CLI will automatically open the browser and poll until authorization completes.
Both --init-only and --complete output a single JSON document:
{
"events": [
{"event": "device_code", "verification_url": "...", "expires_in": 300},
{"event": "success", "authenticated": true, "user": {"aliyunId": "..."}}
]
}Event types: already_authenticated, device_code, success, expired, error, pending.
--complete--complete immediately after presenting the URL--init-only without completing (this creates a new device code and invalidates the previous one)All commands support --format json for structured, machine-parseable output (recommended default), and --format text for clean plaintext output.
For agent use, always prefer --format json and parse the JSON response. Only fall back to --format text when the user explicitly requests human-readable plaintext.
Never parse table format programmatically — it contains ANSI codes and Unicode borders.
qianwen auth status — Check current authentication state
qianwen auth status --format jsonqianwen auth logout — Revoke session server-side and clear local credentials
⚠️ Confirmation required: logout is destructive to the current session. Always ask the user to confirm first (confirmation_required state); only run the command after explicit confirmation.
qianwen auth logoutqianwen usage summary — View usage summary (free tier, Token Plan, pay-as-you-go)
qianwen usage summary # Current month
qianwen usage summary --period last-month # Last month
qianwen usage summary --from 2026-03-01 --to 2026-03-31
qianwen usage summary --format json # JSON outputPeriod presets: today, yesterday, week, month (default), last-month, quarter, year, YYYY-MM
qianwen usage breakdown — View model usage breakdown
qianwen usage breakdown --model qwen3.6-plus --days 7
qianwen usage breakdown --model qwen3.5-plus --period 2026-03
qianwen usage breakdown --model qwen-plus --period 2026-03 --granularity month
qianwen usage breakdown --model qwen3.6-plus --format jsonNote: breakdown shows PAYG consumption only. Free tier usage is not included — use usage free-tier for current quota state.
qianwen usage free-tier — View free tier quota details
qianwen usage free-tier
qianwen usage free-tier --format jsonqianwen usage payg — View pay-as-you-go usage and costs by model
Shows pay-as-you-go consumption for the current period. For historical billing cycles, use qianwen billing summary (see Billing Commands below).
qianwen usage payg
qianwen usage payg --format json
qianwen usage payg --period month --format json # Recommended: current month PAYGqianwen usage logs — Browse paginated call logs (per-request history), filterable by time, model, and status
Use this for request-level questions — "which calls failed?", "show me the 4xx/5xx errors", "how long did those requests take?", "which models did I call recently?", "look up this request id". This is distinct from usage summary/breakdown (aggregate token/cost) — route failure-diagnosis, latency, and call-history questions here, not to summary/breakdown.
qianwen usage logs --period 7d --format json
qianwen usage logs --period 24h --status 4xx --status 5xx --format json # recent client/server errors
qianwen usage logs --model qwen-plus --page 2 --page-size 50 --format json
qianwen usage logs --from 2026-07-25 --to 2026-08-07 --format json # explicit range (must be ≤ 14 days)
qianwen usage logs --request-id 8c81644f-... --format json # exact lookupOptions:
--from / --to — date range (YYYY-MM-DD or RFC3339)--period <preset> — 1h, 24h, 7d, today, yesterday, week, month, … (same preset family as usage summary). ⚠️ The resolved range must be ≤ 14 days. Presets like month (after mid-month), last-month, quarter, and year will exceed the limit and return INVALID_ARGUMENT. Prefer short presets: 1h, 24h, 7d, today, yesterday, week.--model <id> — filter by model; repeatable (pass multiple --model flags to include several models)--status <type> — status filter: 0 (cancelled), 2xx (success), 4xx (client error), 5xx (server error); repeatable--request-id <id> — exact request id; when set, all other filters are ignored--page <n> (default 1) / --page-size <n> (1..100)⚠️ 14-day range limit: the resolved time range must be ≤ 14 days. Any range wider than 14 days (whether via --from/--to or a long --period) returns INVALID_ARGUMENT (exit 4, "Time range cannot be longer than 14 days."). To scan a longer history, slide a ≤14-day window with successive --from/--to calls. This differs from usage summary/breakdown, which accept multi-month ranges.
Pagination: results are paged. To walk the full history within a window, start at --page 1 --page-size 100, then keep incrementing --page while page × pageSize < totalCount, until all totalCount entries are retrieved.
JSON structure (per CLI source — top-level totalCount / page / pageSize / period / items; within items[], errorCode is present only for failed calls, and usages carries the per-request token/character consumption and is empty for failed/cancelled calls):
{
"totalCount": 4,
"page": 1,
"pageSize": 20,
"period": { "from": "2026-07-25", "to": "2026-08-07" },
"items": [
{ "requestId": "8c81644f-...", "model": "wan3.0-video", "statusCode": 403, "durationMs": 548, "errorCode": "Forbidden.NoPermission", "usages": [] },
{ "requestId": "8e3a2c02-...", "model": "qwen3.8-max", "statusCode": 200, "durationMs": 956, "usages": [ { "type": "tokens", "total": 1820 } ] }
]
}period.from / period.to echo the resolved window: calendar presets and explicit --from/--to dates render as YYYY-MM-DD, while rolling presets (1h, 24h, 7d) render as RFC3339 timestamps. When no calls match, the CLI returns totalCount: 0 with an empty items: [] — map this to the empty state (not an error).
Fields: requestId (correlate with server-side traces), model, statusCode (HTTP-style code — 2xx success, 4xx client error, 5xx server error, 0 cancelled), durationMs (call latency), errorCode (failure reason, present only on non-2xx), usages (per-request consumption; empty for failed/cancelled calls). Use statusCode + errorCode for failure triage and durationMs for latency analysis.
Three independent dimensions — combine them freely:
--model (required) + date range + granularity
Model scope:
--model <id> — single model (e.g. qwen3.5-plus); required for breakdownDate range — three patterns, pick by how the user described the period:
| Pattern | When to use | How it works |
|---|---|---|
--period YYYY-MM | User names a specific month ("March", "last April") | Exact calendar month, start to end |
--period <preset> | User describes a relative period | last-month = previous full month; month = this month so far; quarter = this calendar quarter so far |
--days N | User says "last N days" | Rolling window backwards from today, crosses month boundaries naturally |
--from YYYY-MM-DD --to YYYY-MM-DD | User gives explicit dates or a named quarter/range | Full control, use when other patterns don't fit |
Granularity — determines the grouping of results, not the range:
day (default) — one row per day; good for spotting usage spikesmonth — one row per calendar month; good for multi-month trendsquarter — one row per quarter; good for Q-over-Q comparisonClassic examples:
# Single model, single month, daily detail
qianwen usage breakdown --model qwen3.5-plus --period 2026-03
# Single model, last 3 months, monthly summary
qianwen usage breakdown --model qwen3.5-plus --days 90 --granularity month
# Single model, specific quarter, quarterly rollup
qianwen usage breakdown --model qwen3.5-plus --from 2026-01-01 --to 2026-03-31 --granularity quarter
# Single model, this month, daily breakdown
qianwen usage breakdown --model qwen3.6-plus --period monthqianwen billing summary — Bill totals for an inclusive YYYY-MM cycle window
qianwen billing summary --from 2026-05 --to 2026-07 --format json
qianwen billing summary --charge-type payg --format json # payg | subscription | all (default)cycles covers every month in the --from..--to window, in order, with no gaps. Each cycle carries billingCycle, aftertaxAmount, and a settled flag. chargeType is the internal value — all, prepaid for subscription, postpaid for payg; amounts are decimal strings.
If settled appears in the JSON output, it indicates whether bill data exists for that cycle (true = exists, false = none). When true, report aftertaxAmount as a real amount (including ¥0).
{
"period": { "from": "2026-05", "to": "2026-08" },
"chargeType": "all",
"currency": "CNY",
"cycles": [
{ "billingCycle": "202605", "aftertaxAmount": null, "settled": false },
{ "billingCycle": "202606", "aftertaxAmount": "3.710000", "settled": true },
{ "billingCycle": "202607", "aftertaxAmount": null, "settled": false },
{ "billingCycle": "202608", "aftertaxAmount": "0.000000", "settled": true }
],
"totals": { "aftertaxAmount": "3.71" }
}qianwen billing breakdown — Top-N consumption by model (or API key)
qianwen billing breakdown --period month --group-by model --top 10 --format json
qianwen billing breakdown --group-by api-key --top 10 --format jsonOptions: --group-by model|api-key (default model), --top <n> (default 10, max 100), --granularity day|month (default month), --charge-type all|subscription|payg, plus --period / --from / --to date range. Day granularity requires a range ≤ 31 days; month granularity ≤ 12 months.
JSON structure for a single-period query (per CLI source, the raw ConsumeBreakdown object):
{
"groupBy": "model",
"period": { "from": "2026-07-01", "to": "2026-07-29" },
"chargeType": "all",
"rows": [
{ "groupKey": "qwen3.6-plus", "groupLabel": "qwen3.6-plus", "amount": "5.20" },
{ "groupKey": "qwen-plus", "groupLabel": "qwen-plus", "amount": "1.80" }
],
"totalRows": 12,
"totalAmount": "9.80",
"currency": "CNY"
}When the range spans multiple periods (e.g. several months), the JSON is instead sliced per period: { "groupBy", "dateRange": { "from", "to" }, "granularity", "chargeType", "slices": [ { "period", "rows", "totalAmount" } ], "currency" }.
qianwen billing limit — Pay-as-you-go consumption limit and alert configuration
qianwen billing limit --format jsonRead-only — this command only displays the PAYG spending limit; the CLI does not support modifying it. Direct users to the console for changes.
JSON structure (per CLI source, the raw UsageLimit object; limitAmount may be null when no limit is set):
{
"status": "normal",
"limitAmount": "500.00",
"currency": "CNY",
"alertThreshold": "80"
}status values: normal / active / exceeded / warning / unknown.
qianwen subscription status — Aggregate subscription status across plans
qianwen subscription status --format json
qianwen subscription status --plan token --format jsonJSON structure (per CLI source: the SubscriptionStatus fields plus diagnostics; recentOrders[].orderType and .status are already mapped to display labels like Purchase / Paid; nullable fields may be null, arrays may be empty):
{
"isGray": false,
"plan": "Token Plan Team Edition",
"period": { "start": "2026-07-01", "end": "2026-08-01" },
"quota": { "remaining": 21000, "total": 25000, "usedPct": 16 },
"autoRenew": true,
"renewable": true,
"remainingDays": 3,
"seatTiers": [
{ "specType": "standard", "seats": 2, "totalCredits": 50000, "remainingCredits": 42000, "usedPct": 16, "nextCycleFlushTime": "2026-08-01" }
],
"creditPacks": [
{ "instanceId": "cp-xxxxxxxx", "totalCredits": 10000, "remainingCredits": 8000, "expiresAt": "2026-12-31" }
],
"recentOrders": [
{ "orderId": "20260701xxxx", "orderType": "Purchase", "orderTime": "2026-07-01 10:00:00", "amount": "199.00", "status": "Paid" }
],
"diagnostics": []
}Status is composed from multiple sub-calls; partial failures appear in diagnostics (each entry: api, errorCode, errorMessage) — map such results to the partial state. If data is null entirely, the command exits with code 1 (error state).
⚠️ nextCycleFlushTime only means a quota reset when autoRenew is true. The CLI returns nextCycleFlushTime: null for every seat tier when autoRenew is false (auto-renewal explicitly OFF), so a non-null value can be read as "credits reset to full on this date". If autoRenew is null (renewal state unknown), the field may still carry a date — do NOT present it as a guaranteed reset. Never tell the user "your credits will reset on <date>" unless autoRenew is true. When autoRenew is false, frame the period.end date as an expiry, e.g. "your subscription expires on <date>; auto-renew is off, so the plan will lapse unless you renew" — not as a reset.
qianwen subscription orders — Order history (purchase / renew / upgrade)
qianwen subscription orders --page 1 --page-size 100 --format json
qianwen subscription orders --from 2026-01-01 --to 2026-06-30 --type purchase --format jsonOptions: --page <n> (default 1), --page-size <n> (default 20, max 100), --type purchase|renew|upgrade, --from / --to (YYYY-MM-DD).
Pagination: results are paged. To fetch the full history, start at --page 1 --page-size 100, then keep incrementing --page while pagination.page × pagination.pageSize < pagination.total, until all pagination.total orders are retrieved.
JSON structure (per CLI source: orderType / status are display labels; amount is the display string with currency symbol):
{
"orders": [
{ "orderId": "20260701xxxx", "orderType": "Purchase", "orderTime": "2026-07-01 10:00:00", "amount": "¥199.00", "currency": "CNY", "status": "Paid" }
],
"pagination": { "page": 1, "pageSize": 100, "total": 231 },
"diagnostics": []
}qianwen subscription tokenplan status — Token Plan instance detail (period, auto-renew, seat summary)
qianwen subscription tokenplan status --format jsonJSON structure (per CLI source; period / autoRenew / renewable / seatSummary are null when the corresponding sub-call fails — check diagnostics; credit values are decimal strings):
{
"product": "Token Plan Team Edition",
"period": { "start": "2026-07-01", "end": "2026-08-01", "remainingDays": 3 },
"autoRenew": { "enabled": true, "period": 1, "periodUnit": "M" },
"renewable": { "canRenew": true, "interceptCode": null },
"seatSummary": {
"groups": [
{ "specType": "standard", "seats": 2, "assigned": 1, "totalValue": "50000", "surplusValue": "42000", "unit": "Credits", "nextCycleFlushTime": "2026-08-01" }
],
"total": { "seats": 2, "totalValue": "50000", "surplusValue": "42000", "unit": "Credits" }
},
"diagnostics": []
}If all four data fields are null, the command exits with code 1 (error state).
⚠️ seatSummary.groups[].nextCycleFlushTime only means a quota reset when autoRenew.enabled is true. The CLI returns nextCycleFlushTime: null for every group when autoRenew.enabled is false (auto-renewal explicitly OFF). If autoRenew itself is null (state unknown), a date may still be present — do NOT treat it as a guaranteed reset. Only say "credits reset on <date>" when autoRenew.enabled is true; when it is false, present period.end as the expiry date after which the plan lapses unless renewed.
qianwen subscription tokenplan seats — Per-seat detail and remaining credits (team seats)
qianwen subscription tokenplan seats --page 1 --page-size 100 --format json
qianwen subscription tokenplan seats --spec-type standard --format json # pro | standardOptions: --page <n> (default 1), --page-size <n> (default 20, max 100), --spec-type pro|standard. Same pagination rule as orders: keep incrementing --page while page.current × page.size < page.total.
JSON structure (per CLI source; cycle / config may be null; cycle.surplusValue is the seat's remaining credits for the current cycle):
{
"page": { "current": 1, "size": 100, "total": 2 },
"filter": { "specType": null },
"items": [
{
"instanceCode": "tp-xxxxxxxx",
"specType": "standard",
"status": "NORMAL",
"memberId": "12xxxxxxxxxxxx34",
"assignable": true,
"assignment": "assigned",
"payMode": "Subscription",
"productType": "TokenPlan",
"cycle": { "startTime": "2026-07-01", "endTime": "2026-08-01", "totalValue": "25000", "surplusValue": "21000", "unit": "Credits" },
"config": { "planType": "standard", "creditValue": 25000, "seatNum": 1, "quotaCycle": "MONTH" }
}
],
"diagnostics": []
}CLI commands return JSON by default in agent/pipe environments (auto format: TTY → table, pipe → json).
JSON is the primary output mode for agents — always pass --format json explicitly, parse the structured response, then present a human-readable summary to the user.
--format json)qianwen usage summary --period month --format jsonReturns structured JSON with three sections:
{
"period": { "from": "2026-04-01", "to": "2026-04-24" },
"free_tier": [
{ "model_id": "qwen3.6-plus", "quota": { "remaining": 850000, "total": 1000000, "unit": "tokens", "used_pct": 15 } }
],
"token_plan": {
"subscribed": true,
"planName": "Token Plan Team Edition",
"status": "valid",
"totalCredits": 25000,
"remainingCredits": 21000,
"usedPct": 16,
"resetDate": "2026-05-01",
"addonRemaining": 8000
},
"pay_as_you_go": {
"models": [
{ "model_id": "qwen3.6-plus", "usage": { "tokens_total": 480000 }, "cost": 0.38, "currency": "CNY" },
{ "model_id": "qwen-plus", "usage": { "tokens_total": 460000 }, "cost": 0.13, "currency": "CNY" }
],
"total": { "cost": 0.51, "currency": "CNY" }
}
}--format text)qianwen usage summary --period month --format textUsage Summary · 2026-04-10
-- Free Tier Quota -------------------------------------------------------
Model Remaining Total Progress
qwen3.6-plus 850K tokens 1M tokens 85% left
wan2.6-t2i 38 images 50 images 76% left
--------------------------------------------------------------------------
-- Token Plan · Token Plan Team Edition - Standard Seat · valid-------
Usage: 25K / 25K Credits
Quota Left: 100%
Status: valid
Resets: 2026-06-01
--------------------------------------------------------------------------
-- Pay-as-you-go · 2026-04-01 → 2026-04-10 -------------------------------
Model Usage Cost
qwen3.6-plus 480K tok ¥0.38
qwen-plus 460K tok ¥0.13
--------------------------------------------------------------------------
Total — ¥0.51When using --format json (recommended for agents):
---When using --format text:
---NEVER:
✅ CORRECT (JSON mode):
Your QianWen usage for April:
**Free Tier**: qwen3.6-plus has 85% remaining (850K / 1M tokens), wan2.6-t2i has 76% remaining (38 / 50 images).
**Token Plan**: 16% used (21K / 25K Credits remaining).
**Pay-as-you-go**: ¥0.51 total — qwen3.6-plus ¥0.38, qwen-plus ¥0.13.
---
**💡 Analysis**: Your qwen3.6-plus free tier is 85% remaining...✅ CORRECT (Text mode):
[CLI text output - exactly as-is]
---
**💡 Analysis**: Your qwen3.6-plus free tier is 85% remaining...❌ WRONG:
Here's your usage:
- qwen3.6-plus: 850K tokens remaining (85% left)| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General/usage error |
| 2 | Authentication error |
| 3 | Network error |
| 4 | Configuration error |
| 130 | Interrupted |
When the user explicitly asks to check for cli updates (e.g. "check for cli updates", "check cli version", "is there a new version cli"):
qianwen version --checkThe QianWen CLI handles update notifications natively; no additional stderr signal handling is required in this skill.
--model for breakdown. To query all models' usage, use qianwen usage summary instead.© QianWen-AI, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/usage/qianwen-usage of QianWen-AI/qianwen-ai.
Open the folder on GitHubat commit 11b1805
Qianwen Usage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Qianwen Usage this skillQianWen-AI/qianwen-ai | 105 | — | ~6.7k | Automated safety check: Warn | Apache-2.0 | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Nestjs Best Practicesrolling-scopes/rsschool-app | 10k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Sub2API AdminWei-Shaw/sub2api | 44k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Obsidian BasesAtmosphere/atmosphere | 3.8k | 22 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
rolling-scopes/rsschool-app
NestJS best practices and architecture patterns for building production-ready applications.
Wei-Shaw/sub2api
Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
Atmosphere/atmosphere
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
QianWen-AI/qianwen-ai
Synthesize speech from text with Qwen TTS models. An agent skill from QianWen-AI/qianwen-ai.
QianWen-AI/qianwen-ai
Generate and edit images using Wan and Qwen Image models. An agent skill from QianWen-AI/qianwen-ai.
QianWen-AI/qianwen-ai
Qwen AI Platform payment skill, used for account balance enquiries, fix-amount recharge, recharge page guidence, TokenPlan quotations, TokenPlan purchases and TokenPlan page guidence.
QianWen-AI/qianwen-ai
Generate text, have conversations, write code, reason, and call functions with Qwen models.
QianWen-AI/qianwen-ai
Generate videos using Wan and HappyHorse models. An agent skill from QianWen-AI/qianwen-ai.
QianWen-AI/qianwen-ai
Understand images and videos with Qwen vision models. An agent skill from QianWen-AI/qianwen-ai.
Categories
Manage account auth and query usage/billing/subscription. An agent skill from QianWen-AI/qianwen-ai. Qianwen Usage is an agent skill from QianWen-AI/qianwen-ai. Manage account auth and query usage/billing/subscription.
Qianwen Usage fits situations like: free tier quota; token Plan status; pay-as-you-go costs; billing summary.
Run `npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a claude-code`. Or copy the skill folder (skills/usage/qianwen-usage in QianWen-AI/qianwen-ai) into .claude/skills/qianwen-usage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a codex`. Or copy the skill folder (skills/usage/qianwen-usage in QianWen-AI/qianwen-ai) into .agents/skills/qianwen-usage in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add QianWen-AI/qianwen-ai --skill qianwen-usage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qianwen-usage, .gemini/skills/qianwen-usage, .github/skills/qianwen-usage and .opencode/skills/qianwen-usage in your project.
Going by SKILL.md and its folder, Qianwen Usage needs the command-line tools its instructions call (npm). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way.
Qianwen Usage is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.7k tokens (SKILL.md is roughly 27k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Qianwen Usage: Configuring Horizon (coollabsio/coolify, 63k stars), Nestjs Best Practices (rolling-scopes/rsschool-app, 10k stars), Sub2API Admin (Wei-Shaw/sub2api, 44k stars) and Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
QianWen-AI (a GitHub organization) maintains it in QianWen-AI/qianwen-ai, which has 105 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 10, 2026.
Source: QianWen-AI/qianwen-ai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.