@wenaixi/dsh-superpower 7.4.1 → 7.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/README.md +110 -105
  2. package/README.zh.md +216 -0
  3. package/lib/catalog.d.ts +8 -2
  4. package/lib/catalog.d.ts.map +1 -1
  5. package/lib/catalog.js +64 -9
  6. package/lib/catalog.js.map +1 -1
  7. package/lib/client.js +68 -21
  8. package/lib/document.d.ts +8 -2
  9. package/lib/document.d.ts.map +1 -1
  10. package/lib/document.js +14 -4
  11. package/lib/document.js.map +1 -1
  12. package/lib/superpowers.d.ts +2 -0
  13. package/lib/superpowers.d.ts.map +1 -1
  14. package/lib/superpowers.js +8 -0
  15. package/lib/superpowers.js.map +1 -1
  16. package/lib/switches.d.ts +2 -10
  17. package/lib/switches.d.ts.map +1 -1
  18. package/lib/switches.js +29 -5
  19. package/lib/switches.js.map +1 -1
  20. package/package.json +3 -3
  21. package/skills/brainstorming/SKILL.md +235 -171
  22. package/skills/brainstorming/spec-document-reviewer-prompt.md +27 -25
  23. package/skills/brainstorming/visual-companion.md +65 -69
  24. package/skills/diagnosing-superpowers/SKILL.md +107 -43
  25. package/skills/diagnosing-superpowers/prompts/analyst-common.md +32 -18
  26. package/skills/diagnosing-superpowers/prompts/cost-and-time.md +25 -9
  27. package/skills/diagnosing-superpowers/prompts/plan-adherence.md +26 -12
  28. package/skills/diagnosing-superpowers/prompts/quality-evidence.md +23 -8
  29. package/skills/diagnosing-superpowers/prompts/repeated-work.md +25 -14
  30. package/skills/diagnosing-superpowers/prompts/request-conflicts.md +18 -9
  31. package/skills/diagnosing-superpowers/prompts/scrub-audit.md +23 -10
  32. package/skills/diagnosing-superpowers/prompts/scrub.md +25 -12
  33. package/skills/diagnosing-superpowers/prompts/similar-session.md +30 -22
  34. package/skills/diagnosing-superpowers/prompts/skill-timeline.md +26 -12
  35. package/skills/diagnosing-superpowers/prompts/stumbles.md +24 -12
  36. package/skills/diagnosing-superpowers/references/context-safety.md +15 -7
  37. package/skills/diagnosing-superpowers/references/github-issues.md +17 -9
  38. package/skills/diagnosing-superpowers/references/redaction-policy.md +27 -15
  39. package/skills/diagnosing-superpowers/references/session-discovery.md +31 -20
  40. package/skills/diagnosing-superpowers/templates/bundle-README.md +66 -40
  41. package/skills/diagnosing-superpowers/templates/case.md +49 -42
  42. package/skills/diagnosing-superpowers/templates/issue.md +32 -26
  43. package/skills/diagnosing-superpowers/templates/report.md +54 -48
  44. package/skills/dispatching-parallel-agents/SKILL.md +92 -90
  45. package/skills/executing-plans/SKILL.md +345 -197
  46. package/skills/finishing-a-development-branch/SKILL.md +107 -82
  47. package/skills/receiving-code-review/SKILL.md +129 -127
  48. package/skills/requesting-code-review/SKILL.md +52 -50
  49. package/skills/requesting-code-review/code-reviewer.md +132 -111
  50. package/skills/subagent-driven-development/SKILL.md +521 -298
  51. package/skills/subagent-driven-development/implementer-prompt.md +138 -117
  52. package/skills/subagent-driven-development/re-review-prompt.md +80 -48
  53. package/skills/subagent-driven-development/task-reviewer-prompt.md +189 -110
  54. package/skills/systematic-debugging/CREATION-LOG.md +85 -85
  55. package/skills/systematic-debugging/SKILL.md +221 -219
  56. package/skills/systematic-debugging/condition-based-waiting.md +48 -49
  57. package/skills/systematic-debugging/defense-in-depth.md +46 -46
  58. package/skills/systematic-debugging/root-cause-tracing.md +63 -63
  59. package/skills/systematic-debugging/test-academic.md +10 -10
  60. package/skills/systematic-debugging/test-pressure-1.md +40 -40
  61. package/skills/systematic-debugging/test-pressure-2.md +58 -58
  62. package/skills/systematic-debugging/test-pressure-3.md +48 -48
  63. package/skills/test-driven-development/SKILL.md +161 -153
  64. package/skills/test-driven-development/writing-good-tests.md +137 -84
  65. package/skills/using-git-worktrees/SKILL.md +74 -72
  66. package/skills/using-superpowers/SKILL.md +40 -39
  67. package/skills/using-superpowers/references/dsh-tools.md +36 -36
  68. package/skills/verification-before-completion/SKILL.md +85 -83
  69. package/skills/writing-plans/SKILL.md +123 -84
  70. package/skills/writing-skills/SKILL.md +419 -417
  71. package/skills/writing-skills/persuasion-principles.md +118 -118
  72. package/skills/writing-skills/testing-skills-with-subagents.md +190 -190
package/README.md CHANGED
@@ -1,209 +1,214 @@
1
1
  # dsh-superpower
2
2
 
3
+ [English](./README.md) | [中文](./README.zh.md)
4
+
3
5
  [![npm](https://img.shields.io/npm/v/@wenaixi%2Fdsh-superpower?label=npm)](https://www.npmjs.com/package/@wenaixi/dsh-superpower)
4
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)
5
7
  [![DSH](https://img.shields.io/badge/DSH-Plugin-7c3aed)](https://github.com/deepseek-ai/deepseek-harness)
6
8
 
7
9
  <img src="./icon.png" alt="@wenaixi/dsh-superpower" width="128" height="128">
8
10
 
9
- [obra/superpowers](https://github.com/obra/superpowers) 的 DSH 移植版。15 个技能注入 `ctx.skills`,装上就能用,正文全中文。
11
+ A DSH port of [obra/superpowers](https://github.com/obra/superpowers). 15 skills are injected into `ctx.skills`. Skill bodies are the official English originals; the panel switches each skill's name and description between Chinese and English.
10
12
 
11
- ## 安装
13
+ ## Install
12
14
 
13
- 需要 Node 20 以上、pnpm 11 以上,以及 dsh 本体(`npm i -g @deepseek-ai/dsh`)。下面以 `web` profile 为例,换个 profile 名字即可。
15
+ Node 20+, pnpm 11+, and the dsh runtime (`npm i -g @deepseek-ai/dsh`). Examples use the `web` profile; substitute your own profile name.
14
16
 
15
17
  ```bash
16
- # A — npm(推荐,自动装最新)
18
+ # A - npm (recommended, always latest)
17
19
  dsh plugin --profile web add @wenaixi/dsh-superpower
18
20
 
19
- # B — GitHub 直装(绕过镜像延迟)
21
+ # B - GitHub (bypasses mirror lag)
20
22
  dsh plugin --profile web add github:Wenaixi/dsh-superpower
21
23
 
22
- # 验证
24
+ # Verify
23
25
  dsh --profile web --dump-config | grep -A2 "@wenaixi/dsh-superpower"
24
26
  # # == @wenaixi/dsh-superpower / - id: superpowers
25
27
 
26
- dsh --profile web # 进会话,技能自动可用
28
+ dsh --profile web # skills are available immediately
27
29
  ```
28
30
 
29
- 要锁版本就在包名后加 `@<version>`(`@wenaixi/dsh-superpower@7.2.0`)或 `#v7.2.0`。
31
+ Pin a version by appending `@<version>` (`@wenaixi/dsh-superpower@7.5.1`) or `#v7.5.1`.
30
32
 
31
- 旧包名 `dsh-superpower`(不带 scope)已经废弃并 `npm deprecate`,请换成带 scope 的。
33
+ The old unscoped package name `dsh-superpower` is deprecated (`npm deprecate`); use the scoped one.
32
34
 
33
- 本地开发或离线安装:
35
+ Local development or offline install:
34
36
 
35
37
  ```bash
36
38
  git clone https://github.com/Wenaixi/dsh-superpower && cd dsh-superpower
37
- pnpm install && pnpm build && node scripts/verify.mjs # 15/15 PASS
38
- dsh plugin --profile web add ./ # 本地路径安装
39
+ pnpm install && pnpm build && node scripts/verify.mjs # ALL PASS
40
+ dsh plugin --profile web add ./ # install from local path
39
41
  pnpm pack && dsh plugin --profile web add ./wenaixi-dsh-superpower-*.tgz
40
42
 
41
- # 更新 / 卸载
43
+ # Update / remove
42
44
  dsh plugin --profile web add @wenaixi/dsh-superpower
43
45
  dsh plugin --profile web remove @wenaixi/dsh-superpower
44
46
  ```
45
47
 
46
- ## 是什么
47
-
48
- 一套强制的工程方法论,模型不按顺序走就会做错:先设计,再把计划切成可校验的小步,然后测试驱动,调试时先找根因,收尾前必须跑验证命令。装在 `dsh.bundle` 里,不往用户目录里写东西,卸载干净,HMR 会自动重建。
48
+ ## What it is
49
49
 
50
- ## 包含技能
50
+ A prescriptive engineering methodology: design first, slice the plan into verifiable steps, drive with tests, find the root cause before fixing, and run verification commands before claiming completion. It ships as a `dsh.bundle`, writes nothing into your home directory, uninstalls cleanly, and rebuilds itself through HMR.
51
51
 
52
- | 技能 | 什么时候用 |
53
- |---|---|
54
- | `using-superpowers` | 每次会话开头,先查有没有该用的技能 |
55
- | `brainstorming` | 新功能动手前,把需求和设计问清楚 |
56
- | `writing-plans` | 设计定了,拆成一项一项能验证的任务 |
57
- | `using-git-worktrees` | 需要和当前工作区隔离 |
58
- | `executing-plans` | 在当前会话里亲自把计划跑完 |
59
- | `subagent-driven-development` | 计划里有多件独立的事,交给 subagent 分头做 |
60
- | `dispatching-parallel-agents` | 两件以上互不依赖的事并行分发 |
61
- | `test-driven-development` | 先写测试再写实现 |
62
- | `systematic-debugging` | 出了 bug,先定位根因再改 |
63
- | `verification-before-completion` | 说「完成」之前必须跑验证命令 |
64
- | `requesting-code-review` | 任务做完、发 PR 前求评审 |
65
- | `receiving-code-review` | 收到评审意见,先技术核实再改 |
66
- | `diagnosing-superpowers` | 会话出问题或成本异常时定位原因 |
67
- | `finishing-a-development-branch` | 决定合并、发 PR 还是留着分支 |
68
- | `writing-skills` | 新建或改技能 |
52
+ Skill bodies are the upstream English originals (DSH-adapted: symbols, platform references, DSH-only sections). Each `SKILL.md` declares both an English `description` and a Chinese `description_zh`; the panel's language switch picks which one the model sees, without changing the body.
69
53
 
70
- 工具映射(`Bash` 到 `pwsh`、`Read/Write` 到 `fs` 等)在 `skills/using-superpowers/references/dsh-tools.md`。
54
+ ## Skills
71
55
 
72
- ### 同名技能谁生效
56
+ | Skill | When to use |
57
+ |---|---|
58
+ | `using-superpowers` | Start of every conversation: check for applicable skills before anything else |
59
+ | `brainstorming` | Before creative work: clarify intent, requirements, and design |
60
+ | `writing-plans` | Once the design is settled, slice it into verifiable tasks |
61
+ | `using-git-worktrees` | When work needs an isolated workspace |
62
+ | `executing-plans` | Execute the plan yourself in this session |
63
+ | `subagent-driven-development` | A plan with independent tasks, dispatched to subagents |
64
+ | `dispatching-parallel-agents` | Two or more independent tasks, dispatched in parallel |
65
+ | `test-driven-development` | Write the test before the implementation |
66
+ | `systematic-debugging` | A bug appeared: find the root cause before proposing fixes |
67
+ | `verification-before-completion` | Run verification commands before claiming completion |
68
+ | `requesting-code-review` | Request review after finishing work, before a PR |
69
+ | `receiving-code-review` | Verify review feedback technically before implementing it |
70
+ | `diagnosing-superpowers` | A session went wrong or cost too much: find out why |
71
+ | `finishing-a-development-branch` | Decide whether to merge, open a PR, or keep the branch |
72
+ | `writing-skills` | Create or edit a skill |
73
73
 
74
- 官方注册表在同层重名时按 `rank` 从小到大裁决。本包 rank 是 10,比 `dsh-skill-filesystem` 的项目级和用户级(100–500)以及官方内置 bundled(600)都小,所以只要有同名技能,本包这份生效,不会有两套规则打架。
74
+ Tool mapping (Bash to pwsh, Read/Write to fs, and so on) lives in `skills/using-superpowers/references/dsh-tools.md` and its English twin `dsh-tools.en.md`.
75
75
 
76
- ## 技能开关
76
+ ### Same-name precedence
77
77
 
78
- 插件管理页里点开 `@wenaixi/dsh-superpower` 卡片,详情页底部就是开关面板。每个技能一个开关,关掉即两侧同时不可见:
78
+ The official registry arbitrates same-layer name collisions by ascending `rank`. This bundle registers at rank 10, below `dsh-skill-filesystem` project and user roots (100-500) and official bundled skills (600). Whenever a same-name skill exists, this bundle's copy wins and the two rule sets never fight.
79
79
 
80
- - 模型不再在可用技能目录里看到它,`skill` 工具调用也会被拒;
81
- - 你也没法再从斜杠命令补全或命令行技能清单里调它。
80
+ ## Skill switches and language
82
81
 
83
- 面板上方还有全部开启、全部关闭、恢复默认三个批量操作和一个搜索框。页头标着本包的 `provider`、`rank`、`source`,排查同名覆盖时用得上。
82
+ Open the `@wenaixi/dsh-superpower` card in the plugin manager; the panel sits at the bottom of its detail page.
84
83
 
85
- - 拨动后立即生效,模型的下一轮对话就能看到新目录;当前这一轮不受影响。
86
- - 状态写在 profile 的 `cordis.patch.yml` 的 `disabled` 字段里,跟着 profile 一起备份迁移,重装插件不丢。
87
- - 只影响本包这 15 个技能,不碰官方和第三方插件提供的技能。
88
- - 语言边界:技能名与描述固定中文;面板 UI 文案跟随宿主界面语言(设置里切换语言即生效)。
84
+ - One switch per skill. Off means both sides lose it: the model no longer sees it in the available-skill catalog and `skill` tool calls are rejected; you can no longer reach it from slash-command completion or the CLI skill list.
85
+ - `中文 / English` per skill switches the display language of that skill's name and description (English `description` vs Chinese `description_zh`). The body is always the English original. Both descriptions start with `Superpower Skill:` / `Superpower Skill:`. The choice is stored per skill.
86
+ - The panel header also carries enable-all, disable-all, restore-defaults, and a search box. The head line shows this bundle's `provider`, `rank`, `source`, and panel build.
87
+ - Changes take effect immediately; the running turn is unaffected and the next turn sees the new catalog and language.
88
+ - State lives in the profile's `cordis.patch.yml` (`disabled` and `language` tables) and travels with the profile.
89
+ - Only this bundle's 15 skills are affected; official and third-party skills are untouched.
89
90
 
90
- 7.3.0 及更早版本用过两个开关(模型可调用 / 用户可调用),对应 `modelDisabled` 与 `userDisabled` 两张表。这两个字段已废弃:升级后旧值继续生效,你第一次拨动开关时它们会被清空,配置收敛到 `disabled` 一张表。
91
+ Before 7.4.0 there were two switches per skill (model-invocable / user-invocable) backed by `modelDisabled` and `userDisabled`. Both fields are deprecated: old values keep working after an upgrade, and your first panel interaction clears them, converging the config onto `disabled`.
91
92
 
92
- ## 使用
93
+ ## Usage
93
94
 
94
95
  ```
95
- 「帮我做 XXX」 → brainstorming → writing-plans → subagent-driven-development
96
- 「修这个缺陷」 → systematic-debugging
97
- 「帮我评审」 → requesting-code-review
98
- 「刚才会话出问题了」 → diagnosing-superpowers
96
+ "Build me X" -> brainstorming -> writing-plans -> subagent-driven-development
97
+ "Fix this bug" -> systematic-debugging
98
+ "Review this" -> requesting-code-review
99
+ "That session went wrong" -> diagnosing-superpowers
99
100
  ```
100
101
 
101
- 校验:`await ctx.skills.list({cwd})` 应该返回 15 条 `provider: superpowers`。
102
+ Check: `await ctx.skills.list({cwd})` should return 15 entries with `provider: superpowers`.
102
103
 
103
- ## 开发
104
+ ## Development
104
105
 
105
106
  ```bash
106
107
  pnpm install && pnpm build && pnpm typecheck && node scripts/verify.mjs
107
108
 
108
- # 同名优先实测一:自研桩对照,无外部依赖,任何环境可跑
109
+ # Same-name precedence, run one: self-built stub, no external dependency
109
110
  node scripts/check-same-name-priority.mjs
110
111
 
111
- # 同名优先实测二:加载官方 @deepseek-ai/dsh-skill-filesystem 做同层实测
112
- # 该包不在 profile 的直接依赖里,脚本会依次尝试 profile 入口、pnpm store
113
- # 内 .pnpm 真实目录、全局 dsh 本体三处候选路径。
114
- # 本机没装 dsh(比如纯 CI)就用上面的自研桩脚本做等价验证。
112
+ # Same-name precedence, run two: load the official @deepseek-ai/dsh-skill-filesystem
113
+ # That package is not a direct profile dependency; the script probes the profile
114
+ # entry, the real .pnpm store directory, and the global dsh installation.
115
+ # On a machine without dsh (plain CI), run the stub script above instead.
115
116
  node scripts/check-same-name-priority-fs.mjs
116
117
 
117
- # 技能开关端到端实测:真实 SkillRegistry 上验证默认全开、禁言生效、热失效闭环
118
+ # Skill switches end to end: real SkillRegistry, defaults, muting, hot invalidation
118
119
  node scripts/check-skill-switches.mjs
119
120
 
120
- # 上游同步全量复核(deep + tokens 双绿)
121
+ # Full upstream sync review (deep + tokens both green)
121
122
  node scripts/review-sync.mjs
122
123
 
123
- dsh --profile web --dump-config # 断言 "# == @wenaixi/dsh-superpower"
124
+ dsh --profile web --dump-config # assert "# == @wenaixi/dsh-superpower"
124
125
  ```
125
126
 
126
- ### 浏览器端验证
127
+ ### Browser verification
127
128
 
128
- 可选,需要本机装好 dsh 和 Python 的 playwright。两个脚本只做验证,地址和路径都从命令行传:
129
+ Optional. Needs dsh and Python playwright installed locally. Both scripts take every address and path from the command line:
129
130
 
130
- | 脚本 | 验什么 |
131
+ | Script | What it verifies |
131
132
  |---|---|
132
- | `scripts/browser/verify-switch-ui.py` | 真机 Web UI 里点开插件卡片,逐个拨开关、点批量按钮、搜索过滤,再回读 `cordis.patch.yml` 确认落盘 |
133
- | `scripts/browser/verify-model-perception.py` | 四阶段闭环:UI 写完用宿主真实 `SkillRegistry` 复核两侧可见性,并逐行比对 UI 显示与宿主目录 |
133
+ | `scripts/browser/verify-switch-ui.py` | Real Web UI: open the plugin card, flip switches, click bulk buttons, search-filter, then read `cordis.patch.yml` back |
134
+ | `scripts/browser/verify-model-perception.py` | Four-phase loop: after a UI write, re-check both visibility sides through the Host's real `SkillRegistry` and compare UI rows against the Host catalog |
134
135
 
135
136
  ```bash
136
- # 1. 起一个装了本插件的 profile 的 Web 服务,记下启动日志里的 token
137
+ # 1. Start a Web server on a profile that has this plugin; note the token in the startup log
137
138
  dsh --profile <profile> --no-open --port 3199
138
139
 
139
- # 2. 面板全量操作
140
+ # 2. Full panel pass
140
141
  python scripts/browser/verify-switch-ui.py \
141
142
  http://127.0.0.1:3199 <token> .verify-shots <profile>/cordis.patch.yml .verify-shots/expected.json
142
143
 
143
- # 3. UI 与宿主的四阶段闭环
144
+ # 3. UI and Host four-phase loop
144
145
  python scripts/browser/verify-model-perception.py \
145
- http://127.0.0.1:3199 <token> <profile 目录> <profile>/cordis.patch.yml .verify-shots
146
+ http://127.0.0.1:3199 <token> <profile dir> <profile>/cordis.patch.yml .verify-shots
146
147
  ```
147
148
 
148
- `expected.json` 是 15 个技能名的数组,用来断言 UI 行序和 `skills/` 目录一致:
149
+ `expected.json` is the array of 15 skill names, used to assert that UI row order matches the `skills/` directory:
149
150
 
150
151
  ```bash
151
152
  node -e "import('./lib/superpowers.js').then(async m=>{const c=await m.SkillCatalog.fromDirectory('skills');require('fs').writeFileSync('expected.json',JSON.stringify(c.verifyIntegrity().entries.map(e=>e.document.name)))})"
152
153
  ```
153
154
 
154
- 截图落在 `.verify-shots/`,已在 `.gitignore` 里。
155
+ Screenshots land in `.verify-shots/`, which is git-ignored.
155
156
 
156
- ## 目录
157
+ ## Layout
157
158
 
158
159
  ```
159
- src/superpowers.ts # 插件入口,SkillProvider rank 10
160
- src/catalog.ts # SkillCatalog:技能编目、三键聚合指纹探测、快照复用、规范自检
161
- src/document.ts # SkillDocument:frontmatter 解析、契约转换、内建 selfTest
162
- src/switches.ts # 技能开关:禁言表解包与 invocation 覆盖,内建 selfTest
163
- src/client.js # 浏览器半侧:插件卡片详情页的单开关面板,手写 CJS factory
164
- skills/ # 15 个技能正文与资源
165
- lib/ # 已提交的构建产物,GitHub 直装免构建
166
- locale/ # 插件卡片的标题与描述(中英);面板 UI 经官方 locale 注册表双语切换
167
- icon.png # 插件卡片、README 顶部、GitHub 头像共用
168
- scripts/ # 门禁、同名裁决实测、开关实测、上游同步复核、浏览器验证
169
- scripts/build-client.mjs # 复制客户端产物后校验内联清单与 skills/ 目录一致
160
+ src/superpowers.ts # plugin entry, SkillProvider rank 10
161
+ src/catalog.ts # SkillCatalog: catalog, three-key fingerprint probe, snapshot reuse, spec self-test
162
+ src/document.ts # SkillDocument: frontmatter parsing, contract mapping, built-in selfTest
163
+ src/switches.ts # skill switches and language preference, built-in selfTest
164
+ src/client.js # browser half: switch and language panel on the plugin card, hand-written CJS factory
165
+ skills/ # 15 skills, English bodies, bilingual frontmatter descriptions
166
+ lib/ # committed build artifacts so GitHub installs need no build
167
+ locale/ # plugin card title and description (zh/en); panel UI follows the Host locale
168
+ icon.png # plugin card, README header, GitHub avatar
169
+ scripts/ # gates, precedence runs, switch runs, upstream sync review, browser verification
170
+ scripts/build-client.mjs # copies the client artifact, then checks the inline catalog against skills/
170
171
  ```
171
172
 
172
- ## 版本沿革
173
+ ## Version history
174
+
175
+ Since `v7.0.0` skill names follow upstream naming (no `superpower-` prefix) and the bundle syncs upstream `obra/superpowers v6.4.2`; the plugin became DSH-only, dropping compatibility layers for Claude Code, Codex, Gemini CLI, and other hosts. npm `7.0.0` was published before that specialization and is deprecated.
176
+
177
+ `v7.1.0` extracted the `SkillCatalog` and `SkillDocument` deep modules and pushed boundary self-tests down into the modules themselves.
173
178
 
174
- `v7.0.0` 起技能名回归上游命名(去掉 `superpower-` 前缀)并整批同步上游 `obra/superpowers v6.4.2`;插件变成 DSH 专属,移除了 Claude Code、Codex、Gemini CLI 等其它宿主的兼容层。npm 上的 `7.0.0` 发布在专属化改造之前,已废弃。
179
+ `v7.1.1` fixed the official filesystem precedence script failing to locate `@deepseek-ai/dsh-skill-filesystem` under the pnpm isolated layout.
175
180
 
176
- `v7.1.0` 提炼 `SkillCatalog` 与 `SkillDocument` 两个深度模块,把边界自检下沉进模块自身。
181
+ `v7.2.0` added the skill switch panel, turning the plugin into a dual-face form (Host side registers skills, browser side renders the panel) and adding the icon and card metadata.
177
182
 
178
- `v7.1.1` 修复官方 filesystem 同名实测脚本在 pnpm isolated 布局下定位不到 `@deepseek-ai/dsh-skill-filesystem` 的问题。
183
+ `v7.3.0` upgraded snapshot invalidation to a three-key aggregate fingerprint (directory mtime + root directory names + per-skill SKILL.md mtime), closing two blind windows (content edits and incremental creation); the skill-count magic number became an exported constant; the bare-call guard regex was corrected against the real data domain and its self-test blind spot closed; client manifest comparison became name-keyed.
179
184
 
180
- `v7.2.0` 加入技能开关面板,插件升级为双面形态(宿主侧注册技能,浏览器侧渲染开关面板),并补上图标与插件卡片元数据。
185
+ `v7.2.1` fixed the panel's language boundary: skill content (names and descriptions) stayed Chinese with no per-skill translation; all panel UI copy (titles, buttons, hints, meta labels) moved into `zh`/`en` dictionaries and follows the Host UI language through the official locale registry. The provider/rank/source labels stopped being hardcoded English.
181
186
 
182
- `v7.3.0` 技能快照失效判据升级为三键聚合指纹(目录 mtime + 根级目录名集合 + 各 SKILL.md mtime),消除内容编辑与增量新建两类失明窗口;技能总数魔法数收敛为导出常量;裸调用守卫正则按真实数据域修正并补全自检盲区;客户端清单比对改按技能名建 Map。
187
+ `v7.4.0` merged each skill's two switches into one and converged configuration onto a single `disabled` table; brainstorming's visual collaboration moved to DSH's official document preview and the bundled HTTP server scripts were removed.
183
188
 
184
- `v7.2.1` 固化面板语言边界:技能内容(名称与描述)固定中文不做技能级翻译;面板 UI 文案(标题、按钮、提示、meta 标签)全部并入 `zh`/`en` 词典、经官方 locale 注册表随宿主界面语言切换。底部 `provider`/`rank`/`source` 三个标注不再硬编码英文。
189
+ `v7.4.1` fixed switch saves failing: the `dsh-settings` write gate validates every `op.path` against a volatile node, and dropping `.volatile()` from the two legacy fields made the whole `mutate` batch fail; restoring the marker fixed it. The panel header gained a panel-build label.
185
190
 
186
- `v7.4.0` 每个技能从两个开关合并为一个,配置收敛到单张 `disabled` 表;brainstorming 的可视化协作改用 DSH 官方文档预览,不再随包附带 HTTP 服务脚本。
191
+ `v7.5.0` shipped every skill with an English body (`SKILL.en.md`, upstream original adapted for DSH) beside the Chinese one, added a per-skill `中文 / English` switch, made English descriptions always start with `Superpower Skill: `, routed the same language preference to the model-side catalog and body, and made README.md English by default with a Chinese twin.
187
192
 
188
- `v7.4.1` 修复开关保存失败:`dsh-settings` 的写入闸门逐条校验 `op.path` 是否落在 volatile 节点下,两个旧字段去掉 `.volatile()` 会让整批 `mutate` 被拒,恢复标注即可;面板页头补「面板版本」标注。
193
+ `v7.5.1` makes skill bodies the official English originals (single `SKILL.md` per skill, DSH-adapted), keeps Chinese as the panel language via `description_zh`, so the language switch changes only the description the model sees. The `中文 / English` switch, the `Superpower Skill: ` prefixes, and the bilingual README remain.
189
194
 
190
- 完整变更见 [CHANGELOG.md](./CHANGELOG.md)。
195
+ Full history in [CHANGELOG.md](./CHANGELOG.md).
191
196
 
192
- ## 常见问题
197
+ ## FAQ
193
198
 
194
- **装完 404 或者版本不对?** 换 GitHub 形式安装,或者加 `--registry https://registry.npmjs.org` 走官方源。不需要配置白名单。查最新版本用 `npm view @wenaixi/dsh-superpower --registry https://registry.npmjs.org`。
199
+ **404 after install, or wrong version?** Install from GitHub instead, or add `--registry https://registry.npmjs.org`. No allowlist is needed. Check the latest version with `npm view @wenaixi/dsh-superpower --registry https://registry.npmjs.org`.
195
200
 
196
- **卡片标题、描述或图标是空的?** 根因通常是 `package.json` 的 `exports` 没放行 `./package.json` 和 `./locale/*.json`,或者 `icon` 指向了包外的绝对路径。`node scripts/verify.mjs` 会把这两类问题连同 `files` 是否放行图标一起断言掉。
201
+ **Empty card title, description, or icon?** Usually `package.json`'s `exports` does not expose `./package.json` and `./locale/*.json`, or `icon` points at an absolute path outside the package. `node scripts/verify.mjs` asserts both, plus whether `files` ships the icon.
197
202
 
198
- ## 协议
203
+ ## License
199
204
 
200
- MIT,与上游 [obra/superpowers](https://github.com/obra/superpowers) 一致。详见 [LICENSE](./LICENSE)。
205
+ MIT, same as upstream [obra/superpowers](https://github.com/obra/superpowers). See [LICENSE](./LICENSE).
201
206
 
202
- ## 贡献
207
+ ## Contributing
203
208
 
204
- Issue 和 PR 都欢迎。详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
209
+ Issues and PRs welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md).
205
210
 
206
- ## 致谢
211
+ ## Credits
207
212
 
208
- - 上游作者 [Jesse Vincent](https://blog.fsck.com) 与 [Prime Radiant](https://primeradiant.com)
209
- - [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的三角色插件架构
213
+ - Upstream author [Jesse Vincent](https://blog.fsck.com) and [Prime Radiant](https://primeradiant.com)
214
+ - [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) for the three-role plugin architecture
package/README.zh.md ADDED
@@ -0,0 +1,216 @@
1
+ # dsh-superpower
2
+
3
+ [English](./README.md) | [中文](./README.zh.md)
4
+
5
+ [![npm](https://img.shields.io/npm/v/@wenaixi%2Fdsh-superpower?label=npm)](https://www.npmjs.com/package/@wenaixi/dsh-superpower)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)
7
+ [![DSH](https://img.shields.io/badge/DSH-Plugin-7c3aed)](https://github.com/deepseek-ai/deepseek-harness)
8
+
9
+ <img src="./icon.png" alt="@wenaixi/dsh-superpower" width="128" height="128">
10
+
11
+ [obra/superpowers](https://github.com/obra/superpowers) 的 DSH 移植版。15 个技能注入 `ctx.skills`,装上就能用,正文全中文。
12
+
13
+ ## 安装
14
+
15
+ 需要 Node 20 以上、pnpm 11 以上,以及 dsh 本体(`npm i -g @deepseek-ai/dsh`)。下面以 `web` profile 为例,换个 profile 名字即可。
16
+
17
+ ```bash
18
+ # A — npm(推荐,自动装最新)
19
+ dsh plugin --profile web add @wenaixi/dsh-superpower
20
+
21
+ # B — GitHub 直装(绕过镜像延迟)
22
+ dsh plugin --profile web add github:Wenaixi/dsh-superpower
23
+
24
+ # 验证
25
+ dsh --profile web --dump-config | grep -A2 "@wenaixi/dsh-superpower"
26
+ # # == @wenaixi/dsh-superpower / - id: superpowers
27
+
28
+ dsh --profile web # 进会话,技能自动可用
29
+ ```
30
+
31
+ 要锁版本就在包名后加 `@<version>`(`@wenaixi/dsh-superpower@7.2.0`)或 `#v7.2.0`。
32
+
33
+ 旧包名 `dsh-superpower`(不带 scope)已经废弃并 `npm deprecate`,请换成带 scope 的。
34
+
35
+ 本地开发或离线安装:
36
+
37
+ ```bash
38
+ git clone https://github.com/Wenaixi/dsh-superpower && cd dsh-superpower
39
+ pnpm install && pnpm build && node scripts/verify.mjs # 15/15 PASS
40
+ dsh plugin --profile web add ./ # 本地路径安装
41
+ pnpm pack && dsh plugin --profile web add ./wenaixi-dsh-superpower-*.tgz
42
+
43
+ # 更新 / 卸载
44
+ dsh plugin --profile web add @wenaixi/dsh-superpower
45
+ dsh plugin --profile web remove @wenaixi/dsh-superpower
46
+ ```
47
+
48
+ ## 是什么
49
+
50
+ 一套强制的工程方法论,模型不按顺序走就会做错:先设计,再把计划切成可校验的小步,然后测试驱动,调试时先找根因,收尾前必须跑验证命令。装在 `dsh.bundle` 里,不往用户目录里写东西,卸载干净,HMR 会自动重建。
51
+
52
+ ## 包含技能
53
+
54
+ | 技能 | 什么时候用 |
55
+ |---|---|
56
+ | `using-superpowers` | 每次会话开头,先查有没有该用的技能 |
57
+ | `brainstorming` | 新功能动手前,把需求和设计问清楚 |
58
+ | `writing-plans` | 设计定了,拆成一项一项能验证的任务 |
59
+ | `using-git-worktrees` | 需要和当前工作区隔离 |
60
+ | `executing-plans` | 在当前会话里亲自把计划跑完 |
61
+ | `subagent-driven-development` | 计划里有多件独立的事,交给 subagent 分头做 |
62
+ | `dispatching-parallel-agents` | 两件以上互不依赖的事并行分发 |
63
+ | `test-driven-development` | 先写测试再写实现 |
64
+ | `systematic-debugging` | 出了 bug,先定位根因再改 |
65
+ | `verification-before-completion` | 说「完成」之前必须跑验证命令 |
66
+ | `requesting-code-review` | 任务做完、发 PR 前求评审 |
67
+ | `receiving-code-review` | 收到评审意见,先技术核实再改 |
68
+ | `diagnosing-superpowers` | 会话出问题或成本异常时定位原因 |
69
+ | `finishing-a-development-branch` | 决定合并、发 PR 还是留着分支 |
70
+ | `writing-skills` | 新建或改技能 |
71
+
72
+ 工具映射(`Bash` 到 `pwsh`、`Read/Write` 到 `fs` 等)在 `skills/using-superpowers/references/dsh-tools.md`。
73
+
74
+ ### 同名技能谁生效
75
+
76
+ 官方注册表在同层重名时按 `rank` 从小到大裁决。本包 rank 是 10,比 `dsh-skill-filesystem` 的项目级和用户级(100–500)以及官方内置 bundled(600)都小,所以只要有同名技能,本包这份生效,不会有两套规则打架。
77
+
78
+ ## 技能开关
79
+
80
+ 插件管理页里点开 `@wenaixi/dsh-superpower` 卡片,详情页底部就是开关面板。每个技能一个开关,关掉即两侧同时不可见:
81
+
82
+ - 模型不再在可用技能目录里看到它,`skill` 工具调用也会被拒;
83
+ - 你也没法再从斜杠命令补全或命令行技能清单里调它。
84
+
85
+ 面板上方还有全部开启、全部关闭、恢复默认三个批量操作和一个搜索框。页头标着本包的 `provider`、`rank`、`source`,排查同名覆盖时用得上。
86
+
87
+ - 拨动后立即生效,模型的下一轮对话就能看到新目录;当前这一轮不受影响。
88
+ - 状态写在 profile 的 `cordis.patch.yml` 的 `disabled` 字段里,跟着 profile 一起备份迁移,重装插件不丢。
89
+ - 只影响本包这 15 个技能,不碰官方和第三方插件提供的技能。
90
+ - 语言切换:每行有「中文 / English」按钮,切换该技能的名称与描述显示语言(英文 `description` 与中文 `description_zh`)。正文一律为英文原版。两种描述分别以 `Superpower Skill: ` / `Superpower Skill:` 开头,偏好按技能分别存储。
91
+ - 面板 UI 文案(标题、按钮、提示、meta 标签)跟随宿主界面语言(设置里切换语言即生效)。
92
+
93
+ 7.3.0 及更早版本用过两个开关(模型可调用 / 用户可调用),对应 `modelDisabled` 与 `userDisabled` 两张表。这两个字段已废弃:升级后旧值继续生效,你第一次拨动开关时它们会被清空,配置收敛到 `disabled` 一张表。
94
+
95
+ ## 使用
96
+
97
+ ```
98
+ 「帮我做 XXX」 → brainstorming → writing-plans → subagent-driven-development
99
+ 「修这个缺陷」 → systematic-debugging
100
+ 「帮我评审」 → requesting-code-review
101
+ 「刚才会话出问题了」 → diagnosing-superpowers
102
+ ```
103
+
104
+ 校验:`await ctx.skills.list({cwd})` 应该返回 15 条 `provider: superpowers`。
105
+
106
+ ## 开发
107
+
108
+ ```bash
109
+ pnpm install && pnpm build && pnpm typecheck && node scripts/verify.mjs
110
+
111
+ # 同名优先实测一:自研桩对照,无外部依赖,任何环境可跑
112
+ node scripts/check-same-name-priority.mjs
113
+
114
+ # 同名优先实测二:加载官方 @deepseek-ai/dsh-skill-filesystem 做同层实测
115
+ # 该包不在 profile 的直接依赖里,脚本会依次尝试 profile 入口、pnpm store
116
+ # 内 .pnpm 真实目录、全局 dsh 本体三处候选路径。
117
+ # 本机没装 dsh(比如纯 CI)就用上面的自研桩脚本做等价验证。
118
+ node scripts/check-same-name-priority-fs.mjs
119
+
120
+ # 技能开关端到端实测:真实 SkillRegistry 上验证默认全开、禁言生效、热失效闭环
121
+ node scripts/check-skill-switches.mjs
122
+
123
+ # 上游同步全量复核(deep + tokens 双绿)
124
+ node scripts/review-sync.mjs
125
+
126
+ dsh --profile web --dump-config # 断言 "# == @wenaixi/dsh-superpower"
127
+ ```
128
+
129
+ ### 浏览器端验证
130
+
131
+ 可选,需要本机装好 dsh 和 Python 的 playwright。两个脚本只做验证,地址和路径都从命令行传:
132
+
133
+ | 脚本 | 验什么 |
134
+ |---|---|
135
+ | `scripts/browser/verify-switch-ui.py` | 真机 Web UI 里点开插件卡片,逐个拨开关、点批量按钮、搜索过滤,再回读 `cordis.patch.yml` 确认落盘 |
136
+ | `scripts/browser/verify-model-perception.py` | 四阶段闭环:UI 写完用宿主真实 `SkillRegistry` 复核两侧可见性,并逐行比对 UI 显示与宿主目录 |
137
+
138
+ ```bash
139
+ # 1. 起一个装了本插件的 profile 的 Web 服务,记下启动日志里的 token
140
+ dsh --profile <profile> --no-open --port 3199
141
+
142
+ # 2. 面板全量操作
143
+ python scripts/browser/verify-switch-ui.py \
144
+ http://127.0.0.1:3199 <token> .verify-shots <profile>/cordis.patch.yml .verify-shots/expected.json
145
+
146
+ # 3. UI 与宿主的四阶段闭环
147
+ python scripts/browser/verify-model-perception.py \
148
+ http://127.0.0.1:3199 <token> <profile 目录> <profile>/cordis.patch.yml .verify-shots
149
+ ```
150
+
151
+ `expected.json` 是 15 个技能名的数组,用来断言 UI 行序和 `skills/` 目录一致:
152
+
153
+ ```bash
154
+ node -e "import('./lib/superpowers.js').then(async m=>{const c=await m.SkillCatalog.fromDirectory('skills');require('fs').writeFileSync('expected.json',JSON.stringify(c.verifyIntegrity().entries.map(e=>e.document.name)))})"
155
+ ```
156
+
157
+ 截图落在 `.verify-shots/`,已在 `.gitignore` 里。
158
+
159
+ ## 目录
160
+
161
+ ```
162
+ src/superpowers.ts # 插件入口,SkillProvider rank 10
163
+ src/catalog.ts # SkillCatalog:技能编目、三键聚合指纹探测、快照复用、规范自检
164
+ src/document.ts # SkillDocument:frontmatter 解析、契约转换、内建 selfTest
165
+ src/switches.ts # 技能开关:禁言表解包与 invocation 覆盖,内建 selfTest
166
+ src/client.js # 浏览器半侧:插件卡片详情页的单开关面板,手写 CJS factory
167
+ skills/ # 15 个技能正文与资源
168
+ lib/ # 已提交的构建产物,GitHub 直装免构建
169
+ locale/ # 插件卡片的标题与描述(中英);面板 UI 经官方 locale 注册表双语切换
170
+ icon.png # 插件卡片、README 顶部、GitHub 头像共用
171
+ scripts/ # 门禁、同名裁决实测、开关实测、上游同步复核、浏览器验证
172
+ scripts/build-client.mjs # 复制客户端产物后校验内联清单与 skills/ 目录一致
173
+ ```
174
+
175
+ ## 版本沿革
176
+
177
+ `v7.0.0` 起技能名回归上游命名(去掉 `superpower-` 前缀)并整批同步上游 `obra/superpowers v6.4.2`;插件变成 DSH 专属,移除了 Claude Code、Codex、Gemini CLI 等其它宿主的兼容层。npm 上的 `7.0.0` 发布在专属化改造之前,已废弃。
178
+
179
+ `v7.1.0` 提炼 `SkillCatalog` 与 `SkillDocument` 两个深度模块,把边界自检下沉进模块自身。
180
+
181
+ `v7.1.1` 修复官方 filesystem 同名实测脚本在 pnpm isolated 布局下定位不到 `@deepseek-ai/dsh-skill-filesystem` 的问题。
182
+
183
+ `v7.2.0` 加入技能开关面板,插件升级为双面形态(宿主侧注册技能,浏览器侧渲染开关面板),并补上图标与插件卡片元数据。
184
+
185
+ `v7.3.0` 技能快照失效判据升级为三键聚合指纹(目录 mtime + 根级目录名集合 + 各 SKILL.md mtime),消除内容编辑与增量新建两类失明窗口;技能总数魔法数收敛为导出常量;裸调用守卫正则按真实数据域修正并补全自检盲区;客户端清单比对改按技能名建 Map。
186
+
187
+ `v7.2.1` 固化面板语言边界:技能内容(名称与描述)固定中文不做技能级翻译;面板 UI 文案(标题、按钮、提示、meta 标签)全部并入 `zh`/`en` 词典、经官方 locale 注册表随宿主界面语言切换。底部 `provider`/`rank`/`source` 三个标注不再硬编码英文。
188
+
189
+ `v7.4.0` 每个技能从两个开关合并为一个,配置收敛到单张 `disabled` 表;brainstorming 的可视化协作改用 DSH 官方文档预览,不再随包附带 HTTP 服务脚本。
190
+
191
+ `v7.5.0` 每个技能新增英文正文(`SKILL.en.md`,取自上游原版并做 DSH 专属化),与中文 `SKILL.md` 并存;面板每行新增「中文 / English」切换,英文描述一律以 `Superpower Skill: ` 开头;同一语言偏好同时决定模型侧目录描述与加载正文;README.md 改为默认英文并新增中文版 README.zh.md。
192
+
193
+ `v7.5.1` 技能正文统一为上游英文原版(单份 `SKILL.md`,DSH 专属化),中文描述移入 frontmatter `description_zh`,面板语言切换只改变模型看到的描述、正文恒英文。`中文 / English` 切换、`Superpower Skill:` 前缀与双语 README 保持不变。
194
+
195
+ `v7.4.1` 修复开关保存失败:`dsh-settings` 的写入闸门逐条校验 `op.path` 是否落在 volatile 节点下,两个旧字段去掉 `.volatile()` 会让整批 `mutate` 被拒,恢复标注即可;面板页头补「面板版本」标注。
196
+
197
+ 完整变更见 [CHANGELOG.md](./CHANGELOG.md)。
198
+
199
+ ## 常见问题
200
+
201
+ **装完 404 或者版本不对?** 换 GitHub 形式安装,或者加 `--registry https://registry.npmjs.org` 走官方源。不需要配置白名单。查最新版本用 `npm view @wenaixi/dsh-superpower --registry https://registry.npmjs.org`。
202
+
203
+ **卡片标题、描述或图标是空的?** 根因通常是 `package.json` 的 `exports` 没放行 `./package.json` 和 `./locale/*.json`,或者 `icon` 指向了包外的绝对路径。`node scripts/verify.mjs` 会把这两类问题连同 `files` 是否放行图标一起断言掉。
204
+
205
+ ## 协议
206
+
207
+ MIT,与上游 [obra/superpowers](https://github.com/obra/superpowers) 一致。详见 [LICENSE](./LICENSE)。
208
+
209
+ ## 贡献
210
+
211
+ Issue 和 PR 都欢迎。详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
212
+
213
+ ## 致谢
214
+
215
+ - 上游作者 [Jesse Vincent](https://blog.fsck.com) 与 [Prime Radiant](https://primeradiant.com)
216
+ - [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的三角色插件架构
package/lib/catalog.d.ts CHANGED
@@ -65,6 +65,7 @@ export interface CatalogIntegrityReport {
65
65
  ok: boolean;
66
66
  }
67
67
  export declare class SkillCatalog {
68
+ #private;
68
69
  readonly skillDir: string;
69
70
  private readonly entriesByName;
70
71
  private readonly entriesByDir;
@@ -75,6 +76,7 @@ export declare class SkillCatalog {
75
76
  private fingerprint;
76
77
  private lastScanProviderName?;
77
78
  private lastScanRank?;
79
+ private lastScanLanguage?;
78
80
  constructor(skillDir: string);
79
81
  /**
80
82
  * 从指定目录异步扫描并构建已预热的 SkillCatalog 深度实例。
@@ -99,12 +101,16 @@ export declare class SkillCatalog {
99
101
  * 映射当前有效技能为 DSH SkillCandidate 快照。
100
102
  * 自动按 mtime 评估有效性,未变动时直接复用不可变快照,零重复读盘。
101
103
  */
102
- listCandidates(providerName: string, rank: number, options?: CatalogLookupOptions): Promise<readonly SkillCandidate[]>;
104
+ listCandidates(providerName: string, rank: number, options?: CatalogLookupOptions & {
105
+ language?: 'zh' | 'en';
106
+ }): Promise<readonly SkillCandidate[]>;
103
107
  /**
104
108
  * 根据候选技能的 locator 与名称解析出完整 SkillDefinition。
105
109
  * 优先命中内存缓存;若发生热重读,自动自愈更新回内存映射,消除状态撕裂缝隙。
106
110
  */
107
- getDefinition(candidate: SkillCandidate, providerName: string, options?: CatalogLookupOptions): Promise<SkillDefinition | undefined>;
111
+ getDefinition(candidate: SkillCandidate, providerName: string, options?: CatalogLookupOptions & {
112
+ language?: 'zh' | 'en';
113
+ }): Promise<SkillDefinition | undefined>;
108
114
  /**
109
115
  * 执行 SkillCatalog 自身边界契约自检(排重与漂移探测)。
110
116
  */
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}