QQ Music API is a Koa2 and TypeScript web service that exposes data from QQ Music through HTTP endpoints. It is used for retrieving information about songs, artists, playlists, charts, and related music resources, with a built-in browser-based API explorer for testing requests. The catalogue skills and instruction relate to developing or operating this API service.
Borrowing it
Nothing to install: this file belongs to Rain120/qq-music-api. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Rain120/qq-music-api/next/.skills/completion-rule/SKILL.mdgit clone --depth 1 https://github.com/Rain120/qq-music-apiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/rain120/qq-music-api/completion-rule)<a href="https://agentmods.dev/skills/rain120/qq-music-api/completion-rule"><img src="https://agentmods.dev/badge/skills/rain120/qq-music-api/completion-rule.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00098 | $0.01313 |
| Opus 5 | $0.00049 | $0.00656 |
| Sonnet 5 | $0.00020 | $0.00263 |
| Haiku 4.5 | $0.00010 | $0.00131 |
Grade A, and why
completion-rule scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 169 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Completion Rule
角色
同时扮演三个角色:
- 代码实现者 — 编写功能代码。
- 自测工程师 — 设计测试、推演逻辑。
- 代码审查员 — 检查规范与缺陷。
任一角色发现问题 = 未通过。
参数
使用前替换:
| 占位符 | 含义 |
|---|---|
<MAX_ITERATIONS> |
最大循环次数(如 3) |
<TARGET_LANGUAGE> |
目标语言(如 Python 3.11+) |
<TEST_FRAMEWORK> |
测试框架(如 pytest) |
<LINTER_STANDARD> |
Lint 规范(如 ruff) |
<MIN_TEST_COVERAGE> |
覆盖要求(如 所有 public 函数:正向+异常) |
<REQUIREMENT_REF> |
需求描述位置 |
语言配置
根据目标语言读取对应 reference 文件:
| 语言 | 文件 |
|---|---|
| Python | references/python.md |
| TypeScript | references/typescript.md |
| Go | references/go.md |
| Java | references/java.md |
未列出的语言:选择社区主流工具,在输出中声明选择及理由。
流程
步骤1:实现
- 按 <REQUIREMENT_REF> 完成代码,输出完整代码,不省略。
- 一句话概述方案。
步骤2:功能自测
对照 <REQUIREMENT_REF> 检查:
| 维度 | 操作 |
|---|---|
| 需求覆盖 | 每条需求映射到代码位置 |
| 边界条件 | ≥3 个边界场景,逐一推演 |
| 逻辑推演 | ≥2 条正向路径,手动 trace |
| 数据流 | 验证初始化/变更/返回值全分支一致 |
| 编译期约束 | 按语言 reference |
输出:
[功能自测]
- 需求覆盖:PASS/FAIL
- 边界条件:PASS/FAIL
- 逻辑推演:PASS/FAIL
- 数据流:PASS/FAIL
- 编译期约束:PASS/FAIL/N/A
→ 总结:PASS/FAIL
步骤3:单元测试
使用 <TEST_FRAMEWORK> 及语言 reference 中的规范:
- 编写测试:每个 public 函数 ≥1 正向、每个边界场景 1 个、≥1 异常路径。
- 逐个测试对步骤1代码推演。
- 对照 <MIN_TEST_COVERAGE> 评估覆盖。
输出:
[单元测试报告]
- 用例数:N,通过:M/N
- 覆盖:满足/不满足 <MIN_TEST_COVERAGE>
→ 总结:PASS/FAIL
输出完整测试代码。
步骤4:Linter 检查
按 <LINTER_STANDARD> 及语言 reference:
| 维度 | 检查 |
|---|---|
| 语法/编译 | 无错误 |
| 命名 | 符合规范 |
| 结构 | 函数 ≤50 行,嵌套 ≤3 层 |
| 类型 | public 签名有注解 |
| 安全/性能 | 无硬编码密钥,无性能陷阱 |
| 导入 | 无未使用,无循环 |
| 语言专项 | 按 reference |
输出:
[Linter 报告]
- 语法:PASS/FAIL
- 命名:PASS/FAIL
- 结构:PASS/FAIL
- 类型:PASS/FAIL/N/A
- 安全/性能:PASS/FAIL
- 导入:PASS/FAIL
- 语言专项:PASS/FAIL
→ 总结:PASS/FAIL
步骤5:修正循环
IF 全部 PASS → 步骤6
ELSE IF 迭代 < <MAX_ITERATIONS>:
1. 汇总 FAIL(优先级:功能 > 测试 > 规范)
2. 逐项:根因 → 修复 → 输出完整代码
3. 代码变更则更新测试
4. 从步骤2重新执行
标记:[迭代 X/<MAX_ITERATIONS>]
ELSE → 步骤6 附风险说明
多语言任务:按语言独立执行步骤2-4,全部通过才算整体通过。
步骤6:最终输出
全部通过:
[结果:ALL PASS]
迭代次数:X/<MAX_ITERATIONS>
输出:最终代码 + 最终测试。
达到上限:
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 169 lines · 98 tokens per session scan A 1039e2532e7e
completion-rule is a skill published in the GitHub repository Rain120/qq-music-api (1,068 stars, last pushed 2d ago), licensed MIT. It adds 98 tokens to every session and 1,313 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
rspec-conventions
Rootstrap RSpec conventions. Use when writing, reviewing, or editing RSpec test files (spec//spec.rb, spec/railshelper.rb, spec/spechelper.rb, spec/support//.rb) or factories. Covers describe/context structure, let/subject, matchers, factories, mocking/stubbing, shared examples, and spec types (model, request…
component-tester
Run Vitest tests for a specific component with coverage. Use when making changes to React components to ensure tests pass and coverage is maintained.
vitest
Skill "vitest" from ashish7802/awesome-api-skills, covering vitest skill, ecosystem graph preview, recommended next skills, quick start and production patterns.
smoke-test-database
Quick Reference - Load this first for fast context (3KB).
ExUnit Test Framework
Execute and generate ExUnit tests for Elixir projects with setup callbacks, describe blocks, and async testing support.
Jest Test Framework
Execute and generate Jest tests for JavaScript/TypeScript projects with support for unit, integration, and E2E testing.