@wenaixi/dsh-superpower 7.4.1 → 7.5.2
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.
- package/README.md +112 -105
- package/README.zh.md +218 -0
- package/lib/catalog.d.ts +8 -2
- package/lib/catalog.d.ts.map +1 -1
- package/lib/catalog.js +64 -9
- package/lib/catalog.js.map +1 -1
- package/lib/client.js +68 -22
- package/lib/document.d.ts +8 -2
- package/lib/document.d.ts.map +1 -1
- package/lib/document.js +14 -4
- package/lib/document.js.map +1 -1
- package/lib/superpowers.d.ts +2 -0
- package/lib/superpowers.d.ts.map +1 -1
- package/lib/superpowers.js +32 -0
- package/lib/superpowers.js.map +1 -1
- package/lib/switches.d.ts +2 -10
- package/lib/switches.d.ts.map +1 -1
- package/lib/switches.js +33 -5
- package/lib/switches.js.map +1 -1
- package/package.json +3 -3
- package/skills/brainstorming/SKILL.md +235 -171
- package/skills/brainstorming/spec-document-reviewer-prompt.md +27 -25
- package/skills/brainstorming/visual-companion.md +65 -69
- package/skills/diagnosing-superpowers/SKILL.md +107 -43
- package/skills/diagnosing-superpowers/prompts/analyst-common.md +32 -18
- package/skills/diagnosing-superpowers/prompts/cost-and-time.md +25 -9
- package/skills/diagnosing-superpowers/prompts/plan-adherence.md +26 -12
- package/skills/diagnosing-superpowers/prompts/quality-evidence.md +23 -8
- package/skills/diagnosing-superpowers/prompts/repeated-work.md +25 -14
- package/skills/diagnosing-superpowers/prompts/request-conflicts.md +18 -9
- package/skills/diagnosing-superpowers/prompts/scrub-audit.md +23 -10
- package/skills/diagnosing-superpowers/prompts/scrub.md +25 -12
- package/skills/diagnosing-superpowers/prompts/similar-session.md +30 -22
- package/skills/diagnosing-superpowers/prompts/skill-timeline.md +26 -12
- package/skills/diagnosing-superpowers/prompts/stumbles.md +24 -12
- package/skills/diagnosing-superpowers/references/context-safety.md +15 -7
- package/skills/diagnosing-superpowers/references/github-issues.md +17 -9
- package/skills/diagnosing-superpowers/references/redaction-policy.md +27 -15
- package/skills/diagnosing-superpowers/references/session-discovery.md +31 -20
- package/skills/diagnosing-superpowers/templates/bundle-README.md +66 -40
- package/skills/diagnosing-superpowers/templates/case.md +49 -42
- package/skills/diagnosing-superpowers/templates/issue.md +32 -26
- package/skills/diagnosing-superpowers/templates/report.md +54 -48
- package/skills/dispatching-parallel-agents/SKILL.md +92 -90
- package/skills/executing-plans/SKILL.md +345 -197
- package/skills/finishing-a-development-branch/SKILL.md +107 -82
- package/skills/receiving-code-review/SKILL.md +129 -127
- package/skills/requesting-code-review/SKILL.md +52 -50
- package/skills/requesting-code-review/code-reviewer.md +132 -111
- package/skills/subagent-driven-development/SKILL.md +521 -298
- package/skills/subagent-driven-development/implementer-prompt.md +138 -117
- package/skills/subagent-driven-development/re-review-prompt.md +80 -48
- package/skills/subagent-driven-development/task-reviewer-prompt.md +189 -110
- package/skills/systematic-debugging/CREATION-LOG.md +85 -85
- package/skills/systematic-debugging/SKILL.md +221 -219
- package/skills/systematic-debugging/condition-based-waiting.md +48 -49
- package/skills/systematic-debugging/defense-in-depth.md +46 -46
- package/skills/systematic-debugging/root-cause-tracing.md +63 -63
- package/skills/systematic-debugging/test-academic.md +10 -10
- package/skills/systematic-debugging/test-pressure-1.md +40 -40
- package/skills/systematic-debugging/test-pressure-2.md +58 -58
- package/skills/systematic-debugging/test-pressure-3.md +48 -48
- package/skills/test-driven-development/SKILL.md +161 -153
- package/skills/test-driven-development/writing-good-tests.md +137 -84
- package/skills/using-git-worktrees/SKILL.md +74 -72
- package/skills/using-superpowers/SKILL.md +40 -39
- package/skills/using-superpowers/references/dsh-tools.md +36 -36
- package/skills/verification-before-completion/SKILL.md +85 -83
- package/skills/writing-plans/SKILL.md +123 -84
- package/skills/writing-skills/SKILL.md +419 -417
- package/skills/writing-skills/persuasion-principles.md +118 -118
- package/skills/writing-skills/testing-skills-with-subagents.md +190 -190
package/lib/superpowers.js
CHANGED
|
@@ -30,6 +30,12 @@ export const Config = Schema.object({
|
|
|
30
30
|
* 所以 profile 里最终只剩这一张表。
|
|
31
31
|
*/
|
|
32
32
|
disabled: Schema.dict(Schema.boolean()).default({}).volatile(),
|
|
33
|
+
/**
|
|
34
|
+
* 技能正文与描述的显示语言偏好:'zh' 中文(默认)或 'en' 英文。
|
|
35
|
+
* volatile 字段:面板可经 ConfigForm 通道写入,改后随 loader/volatile-update 事件
|
|
36
|
+
* 让 Provider 在下轮 list/get 读到新语言。
|
|
37
|
+
*/
|
|
38
|
+
language: Schema.union(['zh', 'en']).required(false).volatile(),
|
|
33
39
|
/**
|
|
34
40
|
* 已废弃的模型侧禁言表,面板不再写入,只在迁移批里被 unset 清空。
|
|
35
41
|
*
|
|
@@ -82,6 +88,7 @@ class SuperpowersProvider {
|
|
|
82
88
|
ctx;
|
|
83
89
|
control;
|
|
84
90
|
currentSwitches;
|
|
91
|
+
hostLanguageCache;
|
|
85
92
|
constructor(ctx, control, config) {
|
|
86
93
|
assertNotRuntimeProvider(config.providerName);
|
|
87
94
|
this.ctx = ctx;
|
|
@@ -92,6 +99,28 @@ class SuperpowersProvider {
|
|
|
92
99
|
// 每次调用重新解包 volatile 引用,保证开关在运行中被改后立即可见
|
|
93
100
|
this.currentSwitches = () => readSwitches(config);
|
|
94
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* 宿主界面语言:读 dsh-settings 的 locale 条目 preference(volatile)。
|
|
104
|
+
* settings 服务缺失(端到端 mock、纯 Registry 上下文)或 preference 缺省时返回 undefined,
|
|
105
|
+
* 由调用方回退到 zh。结果缓存,locale preference 变更经 loader/volatile-update 清空。
|
|
106
|
+
*/
|
|
107
|
+
hostLanguage() {
|
|
108
|
+
if (this.hostLanguageCache !== undefined)
|
|
109
|
+
return this.hostLanguageCache;
|
|
110
|
+
let locale;
|
|
111
|
+
try {
|
|
112
|
+
const forms = (this.ctx.get('settings')?.describe() ?? []);
|
|
113
|
+
const entry = forms.find((d) => d.ns === 'locale');
|
|
114
|
+
const preference = entry?.value?.preference;
|
|
115
|
+
locale = preference === 'en' ? 'en' : preference === 'zh' ? 'zh' : undefined;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
locale = undefined;
|
|
119
|
+
}
|
|
120
|
+
// ponytail: 结果缓存 + volatile-update 失效;describe 每次全量扫描,缓存避免每轮 list 重扫
|
|
121
|
+
this.hostLanguageCache = locale;
|
|
122
|
+
return locale;
|
|
123
|
+
}
|
|
95
124
|
/**
|
|
96
125
|
* 让宿主注册表丢弃本 provider 的编目缓存并广播 skills/change,
|
|
97
126
|
* 同时让本包自己的候选快照重算。缺任一方都会导致开关显示已更新而模型侧目录不变。
|
|
@@ -99,12 +128,14 @@ class SuperpowersProvider {
|
|
|
99
128
|
invalidate() {
|
|
100
129
|
this.control.invalidate();
|
|
101
130
|
this.catalog.invalidate();
|
|
131
|
+
this.hostLanguageCache = undefined;
|
|
102
132
|
}
|
|
103
133
|
async list(options) {
|
|
104
134
|
const switches = this.currentSwitches();
|
|
105
135
|
const candidates = await this.catalog.listCandidates(this.name, SUPERPOWERS_RANK, {
|
|
106
136
|
signal: options.signal,
|
|
107
137
|
logger: this.ctx.logger,
|
|
138
|
+
language: switches.language ?? this.hostLanguage(),
|
|
108
139
|
});
|
|
109
140
|
return candidates.map((candidate) => applySwitches(candidate, switches));
|
|
110
141
|
}
|
|
@@ -112,6 +143,7 @@ class SuperpowersProvider {
|
|
|
112
143
|
const definition = await this.catalog.getDefinition(candidate, this.name, {
|
|
113
144
|
signal: options.signal,
|
|
114
145
|
logger: this.ctx.logger,
|
|
146
|
+
language: this.currentSwitches().language ?? this.hostLanguage(),
|
|
115
147
|
});
|
|
116
148
|
// 加载路径同样套用:skill 工具在 get 之后二次校验 isModelInvocable,
|
|
117
149
|
// 只改 list 的候选会让模型目录消失但工具调用仍成功,语义撕裂。
|
package/lib/superpowers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AASxC,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAsB,MAAM,eAAe,CAAA;AAE/E,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAA4B,MAAM,cAAc,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAgC,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAmB1E,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IACpD,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;IACzB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9D;;;;;;;;OAQG;IACH,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnE,oCAAoC;IACpC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC;IACA,oEAAoE;IACpE,uDAAuD;IACvD,4DAA4D;IAC5D,sCAAsC;KACrC,WAAW,CAAC,8BAA8B,CAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"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"}
|
package/lib/switches.d.ts
CHANGED
|
@@ -24,17 +24,9 @@ import type { SkillInvocationPolicy } from '@deepseek-ai/dsh-skill';
|
|
|
24
24
|
export interface SkillSwitches {
|
|
25
25
|
/** 关闭的技能名集合,映射为 modelInvocable = userInvocable = false。 */
|
|
26
26
|
disabled: Record<string, boolean>;
|
|
27
|
+
/** 技能描述显示语言偏好:'zh'/'en' 显式固定;undefined 表示跟随宿主界面语言。 */
|
|
28
|
+
language: 'zh' | 'en' | undefined;
|
|
27
29
|
}
|
|
28
|
-
/**
|
|
29
|
-
* 读取禁言字典,兼容 volatile 引用与普通对象两种形态。
|
|
30
|
-
*
|
|
31
|
-
* 合并规则:disabled 非空时只认它(用户已经在新表上操作过,旧值即过期);
|
|
32
|
-
* disabled 为空时取两张旧表的并集——任一侧曾被关闭的技能都算关闭,
|
|
33
|
-
* 这与升级前的效果一致,不会让已关闭的技能重新冒出来。
|
|
34
|
-
*
|
|
35
|
-
* @param config - 插件配置容器,通常为 apply 收到的 config 对象
|
|
36
|
-
* @returns 已解包并浅拷贝的禁言字典;字段缺失或类型不符时为空字典
|
|
37
|
-
*/
|
|
38
30
|
export declare function readSwitches(config: unknown): SkillSwitches;
|
|
39
31
|
/**
|
|
40
32
|
* 用禁言表覆盖一个技能条目的 invocation 策略,返回新对象且不修改入参。
|
package/lib/switches.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switches.d.ts","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;
|
|
1
|
+
{"version":3,"file":"switches.d.ts","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnE,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,sDAAsD;IACtD,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;CAClC;AA8BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAS3D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,qBAAqB,CAAA;CAAE,EACzF,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,aAAa,GACtB,CAAC,CAMH;AAiBD;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;;;OAIG;gBACe,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CA4E3E,CAAA"}
|
package/lib/switches.js
CHANGED
|
@@ -29,16 +29,29 @@
|
|
|
29
29
|
* @param config - 插件配置容器,通常为 apply 收到的 config 对象
|
|
30
30
|
* @returns 已解包并浅拷贝的禁言字典;字段缺失或类型不符时为空字典
|
|
31
31
|
*/
|
|
32
|
+
function readLanguage(config) {
|
|
33
|
+
const source = (config ?? {});
|
|
34
|
+
const raw = unwrapValue(source['language']);
|
|
35
|
+
if (raw === 'en')
|
|
36
|
+
return 'en';
|
|
37
|
+
if (raw === 'zh')
|
|
38
|
+
return 'zh';
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
/** 解包单值 volatile 字段。 */
|
|
42
|
+
function unwrapValue(value) {
|
|
43
|
+
return typeof value?.get === 'function' ? value.get() : value;
|
|
44
|
+
}
|
|
32
45
|
export function readSwitches(config) {
|
|
33
46
|
const source = (config ?? {});
|
|
34
47
|
const disabled = unwrapDictionary(source['disabled']);
|
|
35
48
|
if (Object.keys(disabled).length > 0)
|
|
36
|
-
return { disabled };
|
|
49
|
+
return { disabled, language: readLanguage(config) };
|
|
37
50
|
const legacy = {
|
|
38
51
|
...unwrapDictionary(source['modelDisabled']),
|
|
39
52
|
...unwrapDictionary(source['userDisabled']),
|
|
40
53
|
};
|
|
41
|
-
return { disabled: legacy };
|
|
54
|
+
return { disabled: legacy, language: readLanguage(config) };
|
|
42
55
|
}
|
|
43
56
|
/**
|
|
44
57
|
* 用禁言表覆盖一个技能条目的 invocation 策略,返回新对象且不修改入参。
|
|
@@ -95,7 +108,7 @@ export const SkillSwitches = {
|
|
|
95
108
|
});
|
|
96
109
|
await run('禁用时两侧同时关闭且入参不变', () => {
|
|
97
110
|
const original = entry();
|
|
98
|
-
const out = applySwitches(original, { disabled: { 'switch-test': true } });
|
|
111
|
+
const out = applySwitches(original, { disabled: { 'switch-test': true }, language: 'zh' });
|
|
99
112
|
if (out.invocation.modelInvocable !== false)
|
|
100
113
|
throw new Error('modelInvocable 未被关闭');
|
|
101
114
|
if (out.invocation.userInvocable !== false)
|
|
@@ -104,13 +117,13 @@ export const SkillSwitches = {
|
|
|
104
117
|
throw new Error('入参被就地修改');
|
|
105
118
|
});
|
|
106
119
|
await run('字典缺项视为启用', () => {
|
|
107
|
-
const out = applySwitches(entry(), { disabled: {} });
|
|
120
|
+
const out = applySwitches(entry(), { disabled: {}, language: 'zh' });
|
|
108
121
|
if (!out.invocation.modelInvocable || !out.invocation.userInvocable) {
|
|
109
122
|
throw new Error('缺项被误判为禁用');
|
|
110
123
|
}
|
|
111
124
|
});
|
|
112
125
|
await run('无关技能名不影响他人', () => {
|
|
113
|
-
const out = applySwitches(entry(), { disabled: { 'other-skill': true } });
|
|
126
|
+
const out = applySwitches(entry(), { disabled: { 'other-skill': true }, language: 'zh' });
|
|
114
127
|
if (!out.invocation.modelInvocable)
|
|
115
128
|
throw new Error('无关键误伤了本技能');
|
|
116
129
|
});
|
|
@@ -124,6 +137,21 @@ export const SkillSwitches = {
|
|
|
124
137
|
throw new Error('disabled 非空却仍读到了旧表的键');
|
|
125
138
|
}
|
|
126
139
|
});
|
|
140
|
+
await run('默认语言为 undefined(跟随宿主)', () => {
|
|
141
|
+
const out = readSwitches({});
|
|
142
|
+
if (out.language !== undefined)
|
|
143
|
+
throw new Error('默认语言应为 undefined: ' + out.language);
|
|
144
|
+
});
|
|
145
|
+
await run('language=en 时正确返回', () => {
|
|
146
|
+
const out = readSwitches({ language: 'en' });
|
|
147
|
+
if (out.language !== 'en')
|
|
148
|
+
throw new Error('language 未读取为 en');
|
|
149
|
+
});
|
|
150
|
+
await run('language 不影响禁言表', () => {
|
|
151
|
+
const out = readSwitches({ language: 'en', disabled: { a: true } });
|
|
152
|
+
if (Object.keys(out.disabled).length !== 1)
|
|
153
|
+
throw new Error('language 读取影响禁言表');
|
|
154
|
+
});
|
|
127
155
|
await run('新表为空时并入两张旧表', () => {
|
|
128
156
|
const out = readSwitches({
|
|
129
157
|
disabled: {},
|
package/lib/switches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switches.js","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"switches.js","sourceRoot":"","sources":["../src/switches.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenaixi/dsh-superpower",
|
|
3
|
-
"version": "7.
|
|
4
|
-
"description": "obra/superpowers 的 DSH 移植版:15
|
|
3
|
+
"version": "7.5.2",
|
|
4
|
+
"description": "obra/superpowers 的 DSH 移植版:15 个工程纪律技能(中英双语正文)注入 ctx.skills,含技能开关与语言切换面板",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/superpowers.js",
|
|
7
7
|
"types": "lib/superpowers.d.ts",
|
|
@@ -90,4 +90,4 @@
|
|
|
90
90
|
"./package.json": "./package.json"
|
|
91
91
|
},
|
|
92
92
|
"icon": "./icon.png"
|
|
93
|
-
}
|
|
93
|
+
}
|