Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/pingfanfan/hello-dsh/pr-descriptionnpx skills add pingfanfan/hello-dsh --skill pr-descriptiongit clone --depth 1 https://github.com/pingfanfan/hello-dshWrote 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/pingfanfan/hello-dsh/pr-description)<a href="https://agentmods.dev/skills/pingfanfan/hello-dsh/pr-description"><img src="https://agentmods.dev/badge/skills/pingfanfan/hello-dsh/pr-description.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 | $0.00047 | $0.00914 |
| Opus 5 | $0.00023 | $0.00457 |
| Sonnet 5 | $0.00009 | $0.00183 |
| Haiku 4.5 | $0.00005 | $0.00091 |
Grade A, and why
pr-description 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 5d 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.
What it actually says
写 PR 描述
PR 描述的读者是评审者,目标是让他用最少的时间做出正确判断。
diff 已经说清楚改了什么。描述要回答 diff 回答不了的:为什么、有什么风险、怎么确认它是对的。
结构
## 为什么
<触发这个改动的问题。有 issue 就链上。>
## 改了什么
<按逻辑分组,不是按文件列举。三五条就够。>
## 怎么验证的
<你实际跑了什么。不是"应该没问题"。>
## 评审重点
<最该被仔细看的地方,以及你自己不确定的地方。>
不是每个 PR 都需要四节。小改动一句话就够。但**「怎么验证的」这节不能省**。
标题
跟提交信息一个标准:祈使句、说清影响、不超过一行。
✗ 修复了一些问题
✗ feat: 更新 session.ts
✓ fix(session): 会话恢复时跳过已失效的工具调用记录
「为什么」这节
这是整个描述里价值最高的部分。回答:
- 什么问题触发了这个改动
- 不改会怎样
- 为什么选这个方案,有没有更直接的方案被否决了
被否决的方案尤其值得写。它挡住评审者「为什么不直接 xxx」的疑问,也挡住三个月后有人重新提出同一个方案。
「怎么验证的」这节
写你实际做了什么,不写你打算做什么。
✗ 应该不影响现有功能
✗ 已测试
✓ 跑了 packages/session 的全部单测(142 个通过)
✓ 手动验证:造了一个含已失效工具记录的会话,恢复前打不开,
恢复后能正常打开且历史完整
✓ 没有覆盖到的:多用户并发恢复同一会话的情况
最后那条「没有覆盖到的」是加分项,不是减分项。它告诉评审者该往哪儿看。
不要写"实测"但实际没测。 这比不写更糟。
「评审重点」这节
主动指出该被仔细看的地方:
- 你自己不确定的设计选择
- 有安全或性能影响的部分
- 跟评审者可能有不同看法的地方
- 大段的机械改动(明确说"这部分是重命名,可以快速扫过")
主动暴露弱点会加快评审,不会让你显得不专业。 藏起来的问题会在评审中被发现,那时成本更高。
大 PR 的处理
如果 diff 超过几百行且不是机械改动,先问:能不能拆?
能拆就拆。评审质量随 PR 大小急剧下降,一个 800 行的 PR 大概率会被草草放过。
确实拆不了(比如一次必须完整的迁移),那就在描述里给一条阅读路径:
建议阅读顺序:
1. src/types.ts —— 新的类型定义,理解这个再看别的
2. src/migrate.ts —— 核心逻辑
3. 其余是调用方适配,模式一致,扫一遍即可
不要做的事
- 不要逐文件复述 diff
- 不要写「优化了一些代码」这类没信息量的描述
- 不要把调试心路历程写进去,写结论
- 不要说「应该没问题」,说你验证了什么
- 不要在描述里跟未来的评审者提前争论
- 不要把破坏性变更藏在正文中间,要显著标出并给迁移方法
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.
- 5d ago First seen · 106 lines · 47 tokens per session scan A b5267b80bc9a
pr-description is a skill published in the GitHub repository pingfanfan/hello-dsh (88 stars, last pushed 21d ago), licensed MIT. It adds 47 tokens to every session and 914 once invoked, about $0.0002 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
dsh-plugin-guide
Use when developing, reviewing, packaging, debugging, or answering questions about DeepSeek Harness (DSH) plugins — the plugin-based agent harness on vendored Cordis. Applies the official plugin-development constraints (plugin contract, cordis.yml layers, services/events/effects, tool DSL, bundles/profiles) backed by…
dsh-web-release
Release and publish the dsh-web monorepo (DSH Web GUI plugin family + skin collection) — bump all packages to one unified version, commit and tag (tags are cut from main after dev integration; dev is the integration branch), push the vX.Y.Z tag that triggers the GitHub Actions publish pipeline, and verify the npm…
dsh-web-community-plugin-developer
Develop a DSH community plugin and register it in the dsh-web Community Plugins index — author the plugin in the contributor's own repository following the official cordis bundle standard, add its entry to packages/dsh-community-plugins/community.json, regenerate the index with scripts/community-index, rebuild and…
dsh-web-skin-developer
Build a new skin for the dsh-web skin collection (DSH Web GUI) and publish it into the Skin Center — the first-level settings section — scaffold with scripts/dsh-skin-new, author the v2 skin.json manifest plus skin.css token remap (pure asset directory, no package.json, no build step), validate with scripts/dsh-skin…
dsh-web-pre-push-checks
Use before pushing, opening or updating a pull request, or claiming dsh-web checks pass. Selects the required repository gates and diff-specific generation, build, and GUI evidence.
dsh-web-documentation
Use when adding or editing dsh-web README files, docs, AGENTS.md instructions, user-facing configuration text, or bilingual documentation pairs.