@wenaixi/dsh-superpower 6.3.1 → 7.0.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 (93) hide show
  1. package/README.md +30 -24
  2. package/lib/catalog.d.ts +83 -0
  3. package/lib/catalog.d.ts.map +1 -0
  4. package/lib/catalog.js +231 -0
  5. package/lib/catalog.js.map +1 -0
  6. package/lib/document.d.ts +52 -0
  7. package/lib/document.d.ts.map +1 -0
  8. package/lib/document.js +196 -0
  9. package/lib/document.js.map +1 -0
  10. package/lib/superpowers.d.ts +9 -2
  11. package/lib/superpowers.d.ts.map +1 -1
  12. package/lib/superpowers.js +33 -253
  13. package/lib/superpowers.js.map +1 -1
  14. package/package.json +4 -4
  15. package/skills/{superpower-brainstorming → brainstorming}/SKILL.md +51 -35
  16. package/skills/{superpower-brainstorming → brainstorming}/scripts/server.cjs +6 -14
  17. package/skills/{superpower-brainstorming → brainstorming}/scripts/start-server.sh +1 -6
  18. package/skills/{superpower-brainstorming → brainstorming}/spec-document-reviewer-prompt.md +4 -4
  19. package/skills/{superpower-brainstorming → brainstorming}/visual-companion.md +8 -34
  20. package/skills/diagnosing-superpowers/SKILL.md +58 -0
  21. package/skills/diagnosing-superpowers/prompts/analyst-common.md +24 -0
  22. package/skills/diagnosing-superpowers/prompts/cost-and-time.md +12 -0
  23. package/skills/diagnosing-superpowers/prompts/plan-adherence.md +15 -0
  24. package/skills/diagnosing-superpowers/prompts/quality-evidence.md +11 -0
  25. package/skills/diagnosing-superpowers/prompts/repeated-work.md +19 -0
  26. package/skills/diagnosing-superpowers/prompts/request-conflicts.md +11 -0
  27. package/skills/diagnosing-superpowers/prompts/scrub-audit.md +20 -0
  28. package/skills/diagnosing-superpowers/prompts/scrub.md +16 -0
  29. package/skills/diagnosing-superpowers/prompts/similar-session.md +30 -0
  30. package/skills/diagnosing-superpowers/prompts/skill-timeline.md +16 -0
  31. package/skills/diagnosing-superpowers/prompts/stumbles.md +16 -0
  32. package/skills/diagnosing-superpowers/references/context-safety.md +14 -0
  33. package/skills/diagnosing-superpowers/references/github-issues.md +39 -0
  34. package/skills/diagnosing-superpowers/references/redaction-policy.md +22 -0
  35. package/skills/diagnosing-superpowers/references/session-discovery.md +20 -0
  36. package/skills/diagnosing-superpowers/templates/bundle-README.md +51 -0
  37. package/skills/diagnosing-superpowers/templates/case.md +57 -0
  38. package/skills/diagnosing-superpowers/templates/issue.md +45 -0
  39. package/skills/diagnosing-superpowers/templates/report.md +76 -0
  40. package/skills/{superpower-dispatching-parallel-agents → dispatching-parallel-agents}/SKILL.md +31 -31
  41. package/skills/executing-plans/SKILL.md +227 -0
  42. package/skills/executing-plans/scripts/task-done +52 -0
  43. package/skills/executing-plans/scripts/task-start +28 -0
  44. package/skills/{superpower-finishing-a-development-branch → finishing-a-development-branch}/SKILL.md +18 -18
  45. package/skills/{superpower-receiving-code-review → receiving-code-review}/SKILL.md +39 -39
  46. package/skills/{superpower-requesting-code-review → requesting-code-review}/SKILL.md +11 -11
  47. package/skills/{superpower-requesting-code-review → requesting-code-review}/code-reviewer.md +15 -7
  48. package/skills/subagent-driven-development/SKILL.md +355 -0
  49. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/implementer-prompt.md +10 -10
  50. package/skills/subagent-driven-development/re-review-prompt.md +83 -0
  51. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/scripts/review-package +8 -1
  52. package/skills/subagent-driven-development/scripts/sdd-workspace +82 -0
  53. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/scripts/task-brief +3 -1
  54. package/skills/{superpower-subagent-driven-development → subagent-driven-development}/task-reviewer-prompt.md +27 -27
  55. package/skills/{superpower-systematic-debugging → systematic-debugging}/CREATION-LOG.md +9 -9
  56. package/skills/{superpower-systematic-debugging → systematic-debugging}/SKILL.md +8 -8
  57. package/skills/{superpower-systematic-debugging → systematic-debugging}/condition-based-waiting.md +9 -9
  58. package/skills/{superpower-systematic-debugging → systematic-debugging}/defense-in-depth.md +1 -1
  59. package/skills/{superpower-systematic-debugging → systematic-debugging}/find-polluter.sh +4 -4
  60. package/skills/{superpower-systematic-debugging → systematic-debugging}/root-cause-tracing.md +2 -2
  61. package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-1.md +1 -1
  62. package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-3.md +1 -1
  63. package/skills/{superpower-test-driven-development → test-driven-development}/SKILL.md +16 -14
  64. package/skills/{superpower-test-driven-development → test-driven-development}/writing-good-tests.md +29 -29
  65. package/skills/{superpower-using-git-worktrees → using-git-worktrees}/SKILL.md +12 -12
  66. package/skills/{superpower-using-superpowers → using-superpowers}/SKILL.md +8 -12
  67. package/skills/{superpower-using-superpowers → using-superpowers}/references/dsh-tools.md +8 -8
  68. package/skills/{superpower-verification-before-completion → verification-before-completion}/SKILL.md +17 -17
  69. package/skills/writing-plans/SKILL.md +167 -0
  70. package/skills/{superpower-writing-skills → writing-skills}/SKILL.md +75 -73
  71. package/skills/{superpower-writing-skills → writing-skills}/persuasion-principles.md +10 -10
  72. package/skills/{superpower-writing-skills → writing-skills}/testing-skills-with-subagents.md +53 -53
  73. package/skills/superpower-executing-plans/SKILL.md +0 -64
  74. package/skills/superpower-subagent-driven-development/SKILL.md +0 -347
  75. package/skills/superpower-subagent-driven-development/re-review-prompt.md +0 -83
  76. package/skills/superpower-subagent-driven-development/scripts/sdd-workspace +0 -40
  77. package/skills/superpower-using-superpowers/references/antigravity-tools.md +0 -23
  78. package/skills/superpower-using-superpowers/references/codex-tools.md +0 -108
  79. package/skills/superpower-using-superpowers/references/gemini-tools.md +0 -63
  80. package/skills/superpower-using-superpowers/references/hermes-tools.md +0 -56
  81. package/skills/superpower-using-superpowers/references/pi-tools.md +0 -16
  82. package/skills/superpower-writing-plans/SKILL.md +0 -160
  83. package/skills/superpower-writing-plans/plan-document-reviewer-prompt.md +0 -49
  84. package/skills/superpower-writing-skills/anthropic-best-practices.md +0 -1146
  85. package/skills/superpower-writing-skills/examples/CLAUDE_MD_TESTING.md +0 -188
  86. /package/skills/{superpower-brainstorming → brainstorming}/scripts/frame-template.html +0 -0
  87. /package/skills/{superpower-brainstorming → brainstorming}/scripts/helper.js +0 -0
  88. /package/skills/{superpower-brainstorming → brainstorming}/scripts/stop-server.sh +0 -0
  89. /package/skills/{superpower-systematic-debugging → systematic-debugging}/condition-based-waiting-example.ts +0 -0
  90. /package/skills/{superpower-systematic-debugging → systematic-debugging}/test-academic.md +0 -0
  91. /package/skills/{superpower-systematic-debugging → systematic-debugging}/test-pressure-2.md +0 -0
  92. /package/skills/{superpower-writing-skills → writing-skills}/graphviz-conventions.dot +0 -0
  93. /package/skills/{superpower-writing-skills → writing-skills}/render-graphs.js +0 -0
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @wenaixi/dsh-superpower — SkillDocument 深度模块
3
+ *
4
+ * 封装单个技能文档的读取、BOM/CRLF 归一化、YAML frontmatter 解析、
5
+ * 规范字段与调用策略校验,以及向 SkillCandidate 和 SkillDefinition 的契约映射。
6
+ *
7
+ * 核心原则:
8
+ * - Depth: 将大量文件 I/O、边界扫描、YAML 解析与类型收敛封装在紧凑的小接口后;
9
+ * - Locality: 所有 frontmatter 规则与校验逻辑内聚于此;
10
+ * - Test Surface: 对外暴露规范接口,成为运行时与验证脚本的共同测试表面。
11
+ */
12
+ import { readFile } from 'node:fs/promises';
13
+ import { dirname } from 'node:path';
14
+ import { parse } from 'yaml';
15
+ import { isSkillName } from '@deepseek-ai/dsh-skill';
16
+ // ---------------------------------------------------------------------------
17
+ // 内部纯工具函数(封装在模块内部,不泄漏给外部调用方)
18
+ // ---------------------------------------------------------------------------
19
+ function stringField(data, key) {
20
+ const v = data[key];
21
+ return typeof v === 'string' && v.length > 0 ? v : undefined;
22
+ }
23
+ function optionalString(data, key) {
24
+ const v = data[key];
25
+ return typeof v === 'string' && v.length > 0 ? { [key]: v } : {};
26
+ }
27
+ function frontmatterBoolean(data, key) {
28
+ if (!Object.hasOwn(data, key))
29
+ return undefined;
30
+ const v = data[key];
31
+ if (typeof v === 'boolean')
32
+ return v;
33
+ if (v === 1 || v === '1')
34
+ return true;
35
+ if (v === 0 || v === '0')
36
+ return false;
37
+ if (typeof v === 'string') {
38
+ switch (v.toLowerCase()) {
39
+ case 'true':
40
+ case 'yes':
41
+ case 'on':
42
+ return true;
43
+ case 'false':
44
+ case 'no':
45
+ case 'off':
46
+ return false;
47
+ }
48
+ }
49
+ throw new TypeError(`frontmatter field "${key}" must be a boolean`);
50
+ }
51
+ function rejectLegacyKey(data, legacy, canonical) {
52
+ if (Object.hasOwn(data, legacy)) {
53
+ throw new Error(`frontmatter field "${legacy}" is unsupported; use "${canonical}"`);
54
+ }
55
+ }
56
+ function parseInvocationPolicy(data) {
57
+ rejectLegacyKey(data, 'disableModelInvocation', 'disable-model-invocation');
58
+ rejectLegacyKey(data, 'modelInvocable', 'disable-model-invocation');
59
+ rejectLegacyKey(data, 'userInvocable', 'user-invocable');
60
+ const disableModelInvocation = frontmatterBoolean(data, 'disable-model-invocation');
61
+ const userInvocable = frontmatterBoolean(data, 'user-invocable');
62
+ return {
63
+ modelInvocable: disableModelInvocation !== true,
64
+ userInvocable: userInvocable !== false,
65
+ };
66
+ }
67
+ function findClosingFrontmatter(raw, start) {
68
+ let lineStart = start;
69
+ while (lineStart <= raw.length) {
70
+ const nl = raw.indexOf('\n', lineStart);
71
+ const lineEnd = nl < 0 ? raw.length : nl;
72
+ if (raw.slice(lineStart, lineEnd).replace(/\r$/, '') === '---') {
73
+ return { start: lineStart, bodyStart: nl < 0 ? raw.length : nl + 1 };
74
+ }
75
+ if (nl < 0)
76
+ return undefined;
77
+ lineStart = nl + 1;
78
+ }
79
+ return undefined;
80
+ }
81
+ function extractFrontmatter(raw) {
82
+ // 去除 Windows 编辑器易带的 UTF-8 BOM 头
83
+ let content = raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
84
+ const firstNl = content.indexOf('\n');
85
+ if (firstNl < 0 || content.slice(0, firstNl).replace(/\r$/, '') !== '---') {
86
+ throw new Error('missing opening frontmatter delimiter "---"');
87
+ }
88
+ const start = firstNl + 1;
89
+ const closing = findClosingFrontmatter(content, start);
90
+ if (!closing) {
91
+ throw new Error('missing closing frontmatter delimiter "---"');
92
+ }
93
+ const parsed = parse(content.slice(start, closing.start));
94
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
95
+ throw new Error('frontmatter must be a YAML object mapping');
96
+ }
97
+ return {
98
+ data: parsed,
99
+ body: content.slice(closing.bodyStart),
100
+ };
101
+ }
102
+ // ---------------------------------------------------------------------------
103
+ // SkillDocument 深度模块
104
+ // ---------------------------------------------------------------------------
105
+ export class SkillDocument {
106
+ path;
107
+ name;
108
+ description;
109
+ whenToUse;
110
+ invocation;
111
+ metadata;
112
+ body;
113
+ rawFrontmatterData;
114
+ constructor(filePath, extracted) {
115
+ this.path = filePath;
116
+ this.rawFrontmatterData = extracted.data;
117
+ this.body = extracted.body;
118
+ const skillName = stringField(extracted.data, 'name');
119
+ if (!skillName) {
120
+ throw new Error(`skill at "${filePath}" is missing required frontmatter field "name"`);
121
+ }
122
+ if (!isSkillName(skillName)) {
123
+ throw new Error(`invalid skill name "${skillName}" at "${filePath}" (must be kebab-case)`);
124
+ }
125
+ this.name = skillName;
126
+ const desc = stringField(extracted.data, 'description');
127
+ if (!desc) {
128
+ throw new Error(`skill "${skillName}" at "${filePath}" is missing required frontmatter field "description"`);
129
+ }
130
+ this.description = desc;
131
+ this.whenToUse = stringField(extracted.data, 'whenToUse');
132
+ this.invocation = parseInvocationPolicy(extracted.data);
133
+ const meta = extracted.data['metadata'];
134
+ if (typeof meta === 'object' && meta !== null && !Array.isArray(meta)) {
135
+ this.metadata = meta;
136
+ }
137
+ }
138
+ /**
139
+ * 从指定文件路径异步解析 SkillDocument。
140
+ */
141
+ static async fromFile(filePath, signal) {
142
+ signal?.throwIfAborted();
143
+ const raw = await readFile(filePath, {
144
+ encoding: 'utf8',
145
+ signal,
146
+ });
147
+ signal?.throwIfAborted();
148
+ const extracted = extractFrontmatter(raw);
149
+ return new SkillDocument(filePath, extracted);
150
+ }
151
+ /**
152
+ * 从内存中的原始 markdown 字符串直接解析(用于测试或动态构建)。
153
+ */
154
+ static fromString(raw, filePath = 'SKILL.md') {
155
+ const extracted = extractFrontmatter(raw);
156
+ return new SkillDocument(filePath, extracted);
157
+ }
158
+ /**
159
+ * 映射为 DSH SkillCandidate 契约对象。
160
+ */
161
+ toCandidate(providerName, rank) {
162
+ const dir = dirname(this.path);
163
+ return {
164
+ name: this.name,
165
+ description: this.description,
166
+ ...(this.whenToUse ? { whenToUse: this.whenToUse } : {}),
167
+ invocation: this.invocation,
168
+ source: 'bundled',
169
+ provider: providerName,
170
+ rank,
171
+ locator: { path: this.path, directory: dir },
172
+ resourceBase: { kind: 'directory', path: dir },
173
+ path: this.path,
174
+ ...(this.metadata ? { metadata: this.metadata } : {}),
175
+ };
176
+ }
177
+ /**
178
+ * 映射为 DSH SkillDefinition 契约对象。
179
+ */
180
+ toDefinition(providerName) {
181
+ const dir = dirname(this.path);
182
+ return {
183
+ name: this.name,
184
+ description: this.description,
185
+ ...(this.whenToUse ? { whenToUse: this.whenToUse } : {}),
186
+ invocation: this.invocation,
187
+ source: 'bundled',
188
+ provider: providerName,
189
+ resourceBase: { kind: 'directory', path: dir },
190
+ path: this.path,
191
+ ...(this.metadata ? { metadata: this.metadata } : {}),
192
+ content: this.body.trim(),
193
+ };
194
+ }
195
+ }
196
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  /**
2
2
  * @wenaixi/dsh-superpower — DSH 移植版 Superpowers
3
3
  *
4
- * 将 obra/superpowers 的 14 个 skill 以 DSH 原生 SkillProvider 形式暴露,
5
- * 通过 ctx.skills.registerProvider 注入全局层,rank 550 使 project 级 skill 可覆盖。
4
+ * 将 obra/superpowers 的 15 个 skill 以 DSH 原生 SkillProvider 形式暴露,
5
+ * 通过 ctx.skills.registerProvider 注入全局层,rank 10 使本插件技能优先级最高:
6
+ * 小于 dsh-skill-filesystem 的项目/用户根(100–500)与官方 bundled(600)。
6
7
  */
7
8
  import type { Context } from '@deepseek-ai/cordis';
8
9
  import Schema from '@deepseek-ai/schemastery';
10
+ import { SkillCatalog } from './catalog.js';
11
+ import { SkillDocument } from './document.js';
12
+ export { SkillCatalog } from './catalog.js';
13
+ export { SkillDocument } from './document.js';
9
14
  export declare const Config: Schema<Schemastery.ObjectS<{
10
15
  /** 注册到 ctx.skills 的 provider 名称,默认为 superpowers;不可为保留名 runtime */
11
16
  providerName: Schema<string, string>;
@@ -39,6 +44,8 @@ declare const _default: {
39
44
  skillDir: Schema<string, string>;
40
45
  }>>;
41
46
  apply: typeof apply;
47
+ SkillDocument: typeof SkillDocument;
48
+ SkillCatalog: typeof SkillCatalog;
42
49
  };
43
50
  export default _default;
44
51
  //# sourceMappingURL=superpowers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AASlD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAM7C,eAAO,MAAM,MAAM;IACjB,kEAAkE;;IAElE,8CAA8C;;;IAF9C,kEAAkE;;IAElE,8CAA8C;;GAEF,CAAA;AAE9C,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,eAAO,MAAM,IAAI,gBAAgB,CAAA;AACjC,eAAO,MAAM,MAAM,qBAAsB,CAAA;AA0RzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAqBxD;;;;;QA/TC,kEAAkE;;QAElE,8CAA8C;;;QAF9C,kEAAkE;;QAElE,8CAA8C;;;;;AA+ThD,wBAA8C"}
1
+ {"version":3,"file":"superpowers.d.ts","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAM7C,eAAO,MAAM,MAAM;IACjB,kEAAkE;;IAElE,8CAA8C;;;IAF9C,kEAAkE;;IAElE,8CAA8C;;GAEF,CAAA;AAE9C,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,eAAO,MAAM,IAAI,gBAAgB,CAAA;AACjC,eAAO,MAAM,MAAM,qBAAsB,CAAA;AA6DzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA0BxD;;;;;QAvGC,kEAAkE;;QAElE,8CAA8C;;;QAF9C,kEAAkE;;QAElE,8CAA8C;;;;;;;AAuGhD,wBAA2E"}
@@ -1,15 +1,18 @@
1
1
  /**
2
2
  * @wenaixi/dsh-superpower — DSH 移植版 Superpowers
3
3
  *
4
- * 将 obra/superpowers 的 14 个 skill 以 DSH 原生 SkillProvider 形式暴露,
5
- * 通过 ctx.skills.registerProvider 注入全局层,rank 550 使 project 级 skill 可覆盖。
4
+ * 将 obra/superpowers 的 15 个 skill 以 DSH 原生 SkillProvider 形式暴露,
5
+ * 通过 ctx.skills.registerProvider 注入全局层,rank 10 使本插件技能优先级最高:
6
+ * 小于 dsh-skill-filesystem 的项目/用户根(100–500)与官方 bundled(600)。
6
7
  */
7
- import { readdir, readFile, stat } from 'node:fs/promises';
8
- import { dirname, join, resolve } from 'node:path';
8
+ import { dirname, resolve } from 'node:path';
9
9
  import { fileURLToPath } from 'node:url';
10
- import { parse } from 'yaml';
11
- import { isSkillName } from '@deepseek-ai/dsh-skill';
12
10
  import Schema from '@deepseek-ai/schemastery';
11
+ import { SkillCatalog } from './catalog.js';
12
+ import { SkillDocument } from './document.js';
13
+ // 具名导出深度模块,为验证治理与测试表面提供统一深度接口
14
+ export { SkillCatalog } from './catalog.js';
15
+ export { SkillDocument } from './document.js';
13
16
  // ---------------------------------------------------------------------------
14
17
  // Config — 默认值写在 schema 里;可选字段用可选属性声明
15
18
  // ---------------------------------------------------------------------------
@@ -25,101 +28,17 @@ export const Config = Schema.object({
25
28
  export const name = 'superpowers';
26
29
  export const inject = ['skills'];
27
30
  // ---------------------------------------------------------------------------
28
- // 工具函数
31
+ // 常量与校验
29
32
  // ---------------------------------------------------------------------------
30
- const SUPERPOWERS_RANK = 550;
33
+ // 本插件技能优先级最高:rank 值越小优先级越高(官方注册表升序裁决),
34
+ // 10 低于 filesystem 项目/用户根(100–500) 与官方 bundled(600)。
35
+ const SUPERPOWERS_RANK = 10;
31
36
  const RUNTIME_PROVIDER = 'runtime';
32
37
  function assertNotRuntimeProvider(providerName) {
33
38
  if (providerName === RUNTIME_PROVIDER) {
34
39
  throw new Error(`[superpowers] providerName "${RUNTIME_PROVIDER}" 为保留名,不可用`);
35
40
  }
36
41
  }
37
- function stringField(data, key) {
38
- const v = data[key];
39
- return typeof v === 'string' && v.length > 0 ? v : undefined;
40
- }
41
- function optionalString(data, key) {
42
- const v = data[key];
43
- return typeof v === 'string' && v.length > 0 ? { [key]: v } : {};
44
- }
45
- function frontmatterBoolean(data, key) {
46
- if (!Object.hasOwn(data, key))
47
- return undefined;
48
- const v = data[key];
49
- if (typeof v === 'boolean')
50
- return v;
51
- if (v === 1 || v === '1')
52
- return true;
53
- if (v === 0 || v === '0')
54
- return false;
55
- if (typeof v === 'string') {
56
- switch (v.toLowerCase()) {
57
- case 'true':
58
- case 'yes':
59
- case 'on':
60
- return true;
61
- case 'false':
62
- case 'no':
63
- case 'off':
64
- return false;
65
- }
66
- }
67
- throw new TypeError(`frontmatter field "${key}" must be a boolean`);
68
- }
69
- function rejectLegacyKey(data, legacy, canonical) {
70
- if (Object.hasOwn(data, legacy)) {
71
- throw new Error(`frontmatter field "${legacy}" is unsupported; use "${canonical}"`);
72
- }
73
- }
74
- function parseInvocationPolicy(data) {
75
- rejectLegacyKey(data, 'disableModelInvocation', 'disable-model-invocation');
76
- rejectLegacyKey(data, 'modelInvocable', 'disable-model-invocation');
77
- rejectLegacyKey(data, 'userInvocable', 'user-invocable');
78
- const disableModelInvocation = frontmatterBoolean(data, 'disable-model-invocation');
79
- const userInvocable = frontmatterBoolean(data, 'user-invocable');
80
- return {
81
- modelInvocable: disableModelInvocation !== true,
82
- userInvocable: userInvocable !== false,
83
- };
84
- }
85
- function optionalMetadata(data) {
86
- const v = data['metadata'];
87
- if (typeof v === 'object' && v !== null && !Array.isArray(v))
88
- return { metadata: v };
89
- return {};
90
- }
91
- function findClosingFrontmatter(raw, start) {
92
- let lineStart = start;
93
- while (lineStart <= raw.length) {
94
- const nl = raw.indexOf('\n', lineStart);
95
- const lineEnd = nl < 0 ? raw.length : nl;
96
- if (raw.slice(lineStart, lineEnd).replace(/\r$/, '') === '---') {
97
- return { start: lineStart, bodyStart: nl < 0 ? raw.length : nl + 1 };
98
- }
99
- if (nl < 0)
100
- return undefined;
101
- lineStart = nl + 1;
102
- }
103
- return undefined;
104
- }
105
- function parseFrontmatter(raw) {
106
- // 去 BOM:Windows 编辑器易带 \uFEFF,导致首行非 --- 而被静默跳过
107
- if (raw.charCodeAt(0) === 0xfeff)
108
- raw = raw.slice(1);
109
- const firstNl = raw.indexOf('\n');
110
- if (firstNl < 0)
111
- return undefined;
112
- if (raw.slice(0, firstNl).replace(/\r$/, '') !== '---')
113
- return undefined;
114
- const start = firstNl + 1;
115
- const closing = findClosingFrontmatter(raw, start);
116
- if (!closing)
117
- return undefined;
118
- const parsed = parse(raw.slice(start, closing.start));
119
- if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
120
- return undefined;
121
- return { data: parsed, body: raw.slice(closing.bodyStart) };
122
- }
123
42
  function resolveDefaultSkillDir(configSkillDir) {
124
43
  if (configSkillDir)
125
44
  return resolve(configSkillDir);
@@ -129,175 +48,32 @@ function resolveDefaultSkillDir(configSkillDir) {
129
48
  return resolve(dirname(here), '..', 'skills');
130
49
  }
131
50
  // ---------------------------------------------------------------------------
132
- // Provider
51
+ // Provider 实现 — 纯调度与生命周期治理,具体编目、快照与文档解析委托给 SkillCatalog 深度模块
133
52
  // ---------------------------------------------------------------------------
134
53
  class SuperpowersProvider {
135
54
  name;
136
- skillDir;
55
+ catalog;
137
56
  ctx;
138
57
  constructor(ctx, _control, config) {
139
58
  assertNotRuntimeProvider(config.providerName);
140
59
  this.ctx = ctx;
141
60
  this.name = config.providerName;
142
- this.skillDir = resolveDefaultSkillDir(config.skillDir);
61
+ const skillDir = resolveDefaultSkillDir(config.skillDir);
62
+ this.catalog = new SkillCatalog(skillDir);
143
63
  }
144
64
  async list(options) {
145
- options.signal?.throwIfAborted();
146
- const candidates = [];
147
- const seen = new Set();
148
- let entries;
149
- try {
150
- entries = await readdir(this.skillDir, { withFileTypes: true, signal: options.signal });
151
- }
152
- catch (err) {
153
- const code = err?.code;
154
- if (code === 'ENOENT' || code === 'ENOTDIR') {
155
- this.ctx.logger.warn(`[superpowers] skillDir not found: ${this.skillDir}`);
156
- return [];
157
- }
158
- throw err;
159
- }
160
- for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
161
- options.signal?.throwIfAborted();
162
- if (!entry.isDirectory())
163
- continue;
164
- if (entry.name.startsWith('.'))
165
- continue;
166
- const skillPath = join(this.skillDir, entry.name, 'SKILL.md');
167
- try {
168
- await stat(skillPath);
169
- }
170
- catch (err) {
171
- const code = err?.code;
172
- this.ctx.logger.debug(`[superpowers] skip ${entry.name}: no SKILL.md (${code ?? String(err)})`);
173
- continue;
174
- }
175
- let parsed;
176
- try {
177
- parsed = await parseSkillFile(skillPath);
178
- }
179
- catch (err) {
180
- this.ctx.logger.warn(`[superpowers] skip ${skillPath}: YAML 解析失败 — ${String(err)}`);
181
- continue;
182
- }
183
- if (!parsed) {
184
- this.ctx.logger.warn(`[superpowers] skip ${entry.name}: missing or invalid frontmatter`);
185
- continue;
186
- }
187
- const { data } = parsed;
188
- const skillName = stringField(data, 'name');
189
- const description = stringField(data, 'description');
190
- if (!skillName || !description) {
191
- this.ctx.logger.warn(`[superpowers] skip ${skillPath}: frontmatter requires name and description`);
192
- continue;
193
- }
194
- if (!isSkillName(skillName)) {
195
- this.ctx.logger.warn(`[superpowers] skip ${skillPath}: invalid skill name "${skillName}"`);
196
- continue;
197
- }
198
- if (seen.has(skillName)) {
199
- this.ctx.logger.warn(`[superpowers] skip ${skillPath}: duplicate skill name "${skillName}"`);
200
- continue;
201
- }
202
- // 目录名与 skill name 不一致时以 frontmatter 为准,但打印提示
203
- if (skillName !== entry.name) {
204
- this.ctx.logger.warn(`[superpowers] skill name "${skillName}" != directory "${entry.name}" (using frontmatter)`);
205
- }
206
- let invocation;
207
- try {
208
- invocation = parseInvocationPolicy(data);
209
- }
210
- catch (e) {
211
- this.ctx.logger.warn(`[superpowers] skip ${skillPath}: ${String(e)}`);
212
- continue;
213
- }
214
- seen.add(skillName);
215
- candidates.push({
216
- name: skillName,
217
- description,
218
- ...optionalString(data, 'whenToUse'),
219
- invocation,
220
- source: 'bundled',
221
- provider: this.name,
222
- rank: SUPERPOWERS_RANK,
223
- locator: { path: skillPath, directory: dirname(skillPath) },
224
- resourceBase: { kind: 'directory', path: dirname(skillPath) },
225
- path: skillPath,
226
- ...optionalMetadata(data),
227
- });
228
- }
229
- return candidates;
65
+ return this.catalog.listCandidates(this.name, SUPERPOWERS_RANK, {
66
+ signal: options.signal,
67
+ logger: this.ctx.logger,
68
+ });
230
69
  }
231
70
  async get(candidate, options) {
232
- options.signal?.throwIfAborted();
233
- const locator = candidate.locator;
234
- if (!locator?.path || !locator?.directory)
235
- return undefined;
236
- let raw;
237
- try {
238
- raw = await readFile(locator.path, {
239
- encoding: 'utf8',
240
- signal: options.signal,
241
- });
242
- }
243
- catch (err) {
244
- if (err?.name === 'AbortError')
245
- throw err;
246
- const code = err?.code;
247
- if (code === 'ENOENT')
248
- return undefined;
249
- this.ctx.logger.warn(`[superpowers] get ${candidate.name}: read failed (${code ?? String(err)})`);
250
- return undefined;
251
- }
252
- if (raw === undefined)
253
- return undefined;
254
- options.signal?.throwIfAborted();
255
- const parsed = parseFrontmatter(raw);
256
- if (!parsed) {
257
- this.ctx.logger.warn(`[superpowers] get ${candidate.name}: missing or invalid frontmatter`);
258
- return undefined;
259
- }
260
- const data = parsed.data;
261
- const skillName = stringField(data, 'name');
262
- const description = stringField(data, 'description');
263
- if (!skillName || !description) {
264
- this.ctx.logger.warn(`[superpowers] get ${candidate.name}: frontmatter requires name and description`);
265
- return undefined;
266
- }
267
- if (skillName !== candidate.name) {
268
- // 名称漂移视为失效,触发上层 invalidate
269
- this.ctx.logger.warn(`[superpowers] get ${candidate.name}: name drift "${skillName}" != "${candidate.name}"`);
270
- return undefined;
271
- }
272
- let invocation;
273
- try {
274
- invocation = parseInvocationPolicy(data);
275
- }
276
- catch (e) {
277
- this.ctx.logger.warn(`[superpowers] get ${candidate.name}: ${String(e)}`);
278
- return undefined;
279
- }
280
- return {
281
- name: skillName,
282
- description,
283
- ...optionalString(data, 'whenToUse'),
284
- invocation,
285
- source: 'bundled',
286
- provider: this.name,
287
- resourceBase: { kind: 'directory', path: locator.directory },
288
- path: locator.path,
289
- ...optionalMetadata(data),
290
- content: parsed.body.trim(),
291
- };
71
+ return this.catalog.getDefinition(candidate, this.name, {
72
+ signal: options.signal,
73
+ logger: this.ctx.logger,
74
+ });
292
75
  }
293
76
  }
294
- async function parseSkillFile(path) {
295
- const raw = await readFile(path, 'utf8');
296
- const parsed = parseFrontmatter(raw);
297
- if (!parsed)
298
- return undefined;
299
- return parsed;
300
- }
301
77
  // ---------------------------------------------------------------------------
302
78
  // 插件入口 — 所有副作用走 ctx 注册,随 fiber 卸载自动清理
303
79
  // ---------------------------------------------------------------------------
@@ -306,18 +82,22 @@ export function apply(ctx, config) {
306
82
  ctx.logger.info(`[superpowers] registering provider "${config.providerName}"`);
307
83
  // 将 provider 注册与事件监听放入同一个 effect,保证卸载时的清理顺序可控
308
84
  ctx.effect(() => {
85
+ let activeProvider;
309
86
  const disposeProvider = ctx.skills.registerProvider((control) => {
310
- return new SuperpowersProvider(ctx, control, config);
87
+ activeProvider = new SuperpowersProvider(ctx, control, config);
88
+ return activeProvider;
311
89
  });
312
- // skills/change 为 emit 模式(见 @deepseek-ai/dsh-skill Events 定义:@mode emit),非 waterfall,无需 next()
90
+ // skills/change 为 emit 模式,感知外部变更并精准失效内存快照
313
91
  const disposeListener = ctx.on('skills/change', () => {
314
- ctx.logger.debug('[superpowers] skills catalog changed');
92
+ ctx.logger.debug('[superpowers] skills catalog changed, invalidating snapshot');
93
+ activeProvider?.catalog.invalidate();
315
94
  });
316
95
  return () => {
317
96
  disposeListener();
318
97
  disposeProvider();
98
+ activeProvider?.catalog.invalidate();
319
99
  };
320
100
  });
321
101
  }
322
- export default { name, inject, Config, apply };
102
+ export default { name, inject, Config, apply, SkillDocument, SkillCatalog };
323
103
  //# sourceMappingURL=superpowers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"superpowers.js","sourceRoot":"","sources":["../src/superpowers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenaixi/dsh-superpower",
3
- "version": "6.3.1",
3
+ "version": "7.0.1",
4
4
  "description": "obra/superpowers 的 DSH 移植版 — 将完整的多智能体开发方法论以原生 DSH 技能开箱即用",
5
5
  "type": "module",
6
6
  "main": "lib/superpowers.js",
@@ -30,12 +30,12 @@
30
30
  },
31
31
  "peerDependencies": {
32
32
  "@deepseek-ai/cordis": "^4.0.1",
33
- "@deepseek-ai/dsh-skill": ">=0.0.1-rc.1 <0.1.0 || >=0.1.0-rc.1 <0.2.0-0",
33
+ "@deepseek-ai/dsh-skill": ">=0.1.0-rc.1 <0.3.0-0",
34
34
  "@deepseek-ai/schemastery": "^3.18.1"
35
35
  },
36
36
  "devDependencies": {
37
- "@deepseek-ai/cordis": "^4.0.1",
38
- "@deepseek-ai/dsh-skill": "0.1.1-rc.2",
37
+ "@deepseek-ai/cordis": "4.0.4",
38
+ "@deepseek-ai/dsh-skill": "0.2.0-rc.2",
39
39
  "@deepseek-ai/schemastery": "^3.18.1",
40
40
  "typescript": "^5.6.0",
41
41
  "@types/node": "^22.0.0"