specdo 1.0.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.
Files changed (161) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/README.md +308 -0
  3. package/README.zh-CN.md +306 -0
  4. package/bin/specdo.js +3 -0
  5. package/dist/cli/index.d.ts +15 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +297 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/commands/_shared.d.ts +45 -0
  10. package/dist/commands/_shared.d.ts.map +1 -0
  11. package/dist/commands/_shared.js +124 -0
  12. package/dist/commands/_shared.js.map +1 -0
  13. package/dist/commands/apply.d.ts +30 -0
  14. package/dist/commands/apply.d.ts.map +1 -0
  15. package/dist/commands/apply.js +393 -0
  16. package/dist/commands/apply.js.map +1 -0
  17. package/dist/commands/archive.d.ts +25 -0
  18. package/dist/commands/archive.d.ts.map +1 -0
  19. package/dist/commands/archive.js +362 -0
  20. package/dist/commands/archive.js.map +1 -0
  21. package/dist/commands/doctor.d.ts +21 -0
  22. package/dist/commands/doctor.d.ts.map +1 -0
  23. package/dist/commands/doctor.js +180 -0
  24. package/dist/commands/doctor.js.map +1 -0
  25. package/dist/commands/domains.d.ts +14 -0
  26. package/dist/commands/domains.d.ts.map +1 -0
  27. package/dist/commands/domains.js +107 -0
  28. package/dist/commands/domains.js.map +1 -0
  29. package/dist/commands/explore.d.ts +48 -0
  30. package/dist/commands/explore.d.ts.map +1 -0
  31. package/dist/commands/explore.js +378 -0
  32. package/dist/commands/explore.js.map +1 -0
  33. package/dist/commands/init.d.ts +45 -0
  34. package/dist/commands/init.d.ts.map +1 -0
  35. package/dist/commands/init.js +243 -0
  36. package/dist/commands/init.js.map +1 -0
  37. package/dist/commands/list.d.ts +23 -0
  38. package/dist/commands/list.d.ts.map +1 -0
  39. package/dist/commands/list.js +135 -0
  40. package/dist/commands/list.js.map +1 -0
  41. package/dist/commands/propose.d.ts +22 -0
  42. package/dist/commands/propose.d.ts.map +1 -0
  43. package/dist/commands/propose.js +316 -0
  44. package/dist/commands/propose.js.map +1 -0
  45. package/dist/commands/show.d.ts +15 -0
  46. package/dist/commands/show.d.ts.map +1 -0
  47. package/dist/commands/show.js +214 -0
  48. package/dist/commands/show.js.map +1 -0
  49. package/dist/commands/status.d.ts +17 -0
  50. package/dist/commands/status.d.ts.map +1 -0
  51. package/dist/commands/status.js +146 -0
  52. package/dist/commands/status.js.map +1 -0
  53. package/dist/commands/sync.d.ts +21 -0
  54. package/dist/commands/sync.d.ts.map +1 -0
  55. package/dist/commands/sync.js +113 -0
  56. package/dist/commands/sync.js.map +1 -0
  57. package/dist/commands/validate.d.ts +117 -0
  58. package/dist/commands/validate.d.ts.map +1 -0
  59. package/dist/commands/validate.js +446 -0
  60. package/dist/commands/validate.js.map +1 -0
  61. package/dist/core/apply-brief-renderer.d.ts +35 -0
  62. package/dist/core/apply-brief-renderer.d.ts.map +1 -0
  63. package/dist/core/apply-brief-renderer.js +242 -0
  64. package/dist/core/apply-brief-renderer.js.map +1 -0
  65. package/dist/core/config-store.d.ts +190 -0
  66. package/dist/core/config-store.d.ts.map +1 -0
  67. package/dist/core/config-store.js +280 -0
  68. package/dist/core/config-store.js.map +1 -0
  69. package/dist/core/context-store.d.ts +96 -0
  70. package/dist/core/context-store.d.ts.map +1 -0
  71. package/dist/core/context-store.js +426 -0
  72. package/dist/core/context-store.js.map +1 -0
  73. package/dist/core/json-schemas.d.ts +349 -0
  74. package/dist/core/json-schemas.d.ts.map +1 -0
  75. package/dist/core/json-schemas.js +125 -0
  76. package/dist/core/json-schemas.js.map +1 -0
  77. package/dist/core/skill-content/cross-domain.d.ts +12 -0
  78. package/dist/core/skill-content/cross-domain.d.ts.map +1 -0
  79. package/dist/core/skill-content/cross-domain.js +291 -0
  80. package/dist/core/skill-content/cross-domain.js.map +1 -0
  81. package/dist/core/skill-content/protocol-examples.d.ts +13 -0
  82. package/dist/core/skill-content/protocol-examples.d.ts.map +1 -0
  83. package/dist/core/skill-content/protocol-examples.js +190 -0
  84. package/dist/core/skill-content/protocol-examples.js.map +1 -0
  85. package/dist/core/skill-content/workflow-content.d.ts +25 -0
  86. package/dist/core/skill-content/workflow-content.d.ts.map +1 -0
  87. package/dist/core/skill-content/workflow-content.js +1572 -0
  88. package/dist/core/skill-content/workflow-content.js.map +1 -0
  89. package/dist/core/skill-exporter.d.ts +186 -0
  90. package/dist/core/skill-exporter.d.ts.map +1 -0
  91. package/dist/core/skill-exporter.js +922 -0
  92. package/dist/core/skill-exporter.js.map +1 -0
  93. package/dist/core/spec-sync.d.ts +65 -0
  94. package/dist/core/spec-sync.d.ts.map +1 -0
  95. package/dist/core/spec-sync.js +226 -0
  96. package/dist/core/spec-sync.js.map +1 -0
  97. package/dist/core/task-parser.d.ts +58 -0
  98. package/dist/core/task-parser.d.ts.map +1 -0
  99. package/dist/core/task-parser.js +244 -0
  100. package/dist/core/task-parser.js.map +1 -0
  101. package/dist/core/template-renderer.d.ts +51 -0
  102. package/dist/core/template-renderer.d.ts.map +1 -0
  103. package/dist/core/template-renderer.js +362 -0
  104. package/dist/core/template-renderer.js.map +1 -0
  105. package/dist/domains/architecture.d.ts +34 -0
  106. package/dist/domains/architecture.d.ts.map +1 -0
  107. package/dist/domains/architecture.js +341 -0
  108. package/dist/domains/architecture.js.map +1 -0
  109. package/dist/domains/backend.d.ts +35 -0
  110. package/dist/domains/backend.d.ts.map +1 -0
  111. package/dist/domains/backend.js +367 -0
  112. package/dist/domains/backend.js.map +1 -0
  113. package/dist/domains/frontend.d.ts +36 -0
  114. package/dist/domains/frontend.d.ts.map +1 -0
  115. package/dist/domains/frontend.js +373 -0
  116. package/dist/domains/frontend.js.map +1 -0
  117. package/dist/domains/index.d.ts +49 -0
  118. package/dist/domains/index.d.ts.map +1 -0
  119. package/dist/domains/index.js +255 -0
  120. package/dist/domains/index.js.map +1 -0
  121. package/dist/domains/operations.d.ts +37 -0
  122. package/dist/domains/operations.d.ts.map +1 -0
  123. package/dist/domains/operations.js +344 -0
  124. package/dist/domains/operations.js.map +1 -0
  125. package/dist/domains/pool-ranking.d.ts +43 -0
  126. package/dist/domains/pool-ranking.d.ts.map +1 -0
  127. package/dist/domains/pool-ranking.js +153 -0
  128. package/dist/domains/pool-ranking.js.map +1 -0
  129. package/dist/domains/quality.d.ts +45 -0
  130. package/dist/domains/quality.d.ts.map +1 -0
  131. package/dist/domains/quality.js +368 -0
  132. package/dist/domains/quality.js.map +1 -0
  133. package/dist/domains/security.d.ts +19 -0
  134. package/dist/domains/security.d.ts.map +1 -0
  135. package/dist/domains/security.js +364 -0
  136. package/dist/domains/security.js.map +1 -0
  137. package/dist/domains/signal-match.d.ts +25 -0
  138. package/dist/domains/signal-match.d.ts.map +1 -0
  139. package/dist/domains/signal-match.js +67 -0
  140. package/dist/domains/signal-match.js.map +1 -0
  141. package/dist/domains/types.d.ts +354 -0
  142. package/dist/domains/types.d.ts.map +1 -0
  143. package/dist/domains/types.js +12 -0
  144. package/dist/domains/types.js.map +1 -0
  145. package/dist/index.d.ts +9 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +9 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/protocols/index.d.ts +36 -0
  150. package/dist/protocols/index.d.ts.map +1 -0
  151. package/dist/protocols/index.js +85 -0
  152. package/dist/protocols/index.js.map +1 -0
  153. package/dist/protocols/review-to-solid.d.ts +32 -0
  154. package/dist/protocols/review-to-solid.d.ts.map +1 -0
  155. package/dist/protocols/review-to-solid.js +309 -0
  156. package/dist/protocols/review-to-solid.js.map +1 -0
  157. package/dist/utils/prompt.d.ts +37 -0
  158. package/dist/utils/prompt.d.ts.map +1 -0
  159. package/dist/utils/prompt.js +81 -0
  160. package/dist/utils/prompt.js.map +1 -0
  161. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-content.js","sourceRoot":"","sources":["../../../src/core/skill-content/workflow-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Skill Exporter — OpenSpec core-compatible progressive disclosure
3
+ *
4
+ * 把 specdo 的 core 工作流导出为 progressive-disclosure SKILL.md 包,
5
+ * 投递到各 AI 工具的 skill 目录。
6
+ *
7
+ * 每个 skill 包结构:
8
+ * <name>/
9
+ * ├── SKILL.md # 精炼指引(agent 默认加载)
10
+ * └── references/ # 按需加载的详细参考
11
+ * ├── REFERENCE.md # workflow / protocol
12
+ * ├── EXAMPLES.md # workflow / protocol
13
+ * ├── DOMAIN_*.md # specdo 增强的 domain guidance
14
+ * ├── PROTOCOL_*.md # specdo 增强的 protocol guidance
15
+ * └── ARCHIVE_*.md # 收尾/归档 gate
16
+ *
17
+ * 关键不变量:
18
+ * - 导出入口始终保持 OpenSpec core 范式:workflow skill 是一等公民,
19
+ * domain/protocol 仅作为 workflow references 的增强材料
20
+ * - 内容来源全部为运行时数据(DomainModule / Protocol / WORKFLOW_SKILLS
21
+ * + 手写的 CROSS_DOMAIN / PROTOCOL_EXAMPLES),不依赖模板文件
22
+ * - SKILL.md 严格遵循 Anthropic 标准:YAML frontmatter(name + description)
23
+ * + 正文 markdown
24
+ * - skill name ≤ 64 字符,仅 lowercase 字母数字短横线(Anthropic 规范)
25
+ * - SKILL.md 推荐 ≤ 500 行(agentskills.io);progressive disclosure 让
26
+ * 大量内容下沉 references/,单文件保持精炼
27
+ *
28
+ * 输出 5 个 core workflow skill:
29
+ * - specdo-explore
30
+ * - specdo-propose
31
+ * - specdo-apply
32
+ * - specdo-sync
33
+ * - specdo-archive
34
+ *
35
+ * domain / protocol 不再作为独立 skill 导出,避免 agent 从工作流主轴偏航。
36
+ */
37
+ import type { DomainModule, Protocol } from '../domains/types.js';
38
+ /**
39
+ * 支持的 AI agent 工具。每家都有自己的 canonical skill 目录约定。
40
+ *
41
+ * 来源(截至 2026-06):
42
+ * - claude → Anthropic 官方 SKILL.md 标准
43
+ * - qoder → docs.qoder.com/extensions/skills
44
+ * - cursor → cursor.com/docs/skills(2.4+ 原生)
45
+ * - cline → docs.cline.bot/customization/skills(experimental)
46
+ * - codex → developers.openai.com/codex/skills
47
+ * - goose → goose-docs.ai/.../using-skills
48
+ * - kilo → kilo.ai/docs/customize/skills
49
+ * - opencode → SKILL.md 标准;Claude Code 兼容
50
+ * - universal→ 社区开放标准 .agents/skills/(Cursor/Goose/Kilo/Roo 兼容)
51
+ *
52
+ * 排除项(已审计):
53
+ * - Continue.dev 不支持目录式 skill
54
+ * - Windsurf 仅有 .windsurfrules(rules 注入),与原则冲突
55
+ * - Aider 无明确目录约定
56
+ */
57
+ export type AgentName = 'claude' | 'qoder' | 'cursor' | 'cline' | 'codex' | 'goose' | 'kilo' | 'opencode' | 'universal';
58
+ export type ExportScope = 'project' | 'user';
59
+ export interface ExportOptions {
60
+ /** 项目级导出时的工作目录;用户级导出时仅用于日志显示 */
61
+ cwd: string;
62
+ /** 目标 agent 列表 */
63
+ agents: AgentName[];
64
+ /** 导出位置:project = <cwd>/.<agent>/skills,user = ~/.<agent>/skills */
65
+ scope: ExportScope;
66
+ }
67
+ export interface ExportResult {
68
+ /** 写入的绝对路径列表(按写入顺序;含 SKILL.md 与所有 references/*.md) */
69
+ filesWritten: string[];
70
+ /** 导出的 core workflow skill 包数量。agents 为空时返回 0 */
71
+ skillCount: number;
72
+ /** 实际命中的 agent(去重) */
73
+ agents: AgentName[];
74
+ /** 跳过原因(当前实现总是覆盖,保留扩展) */
75
+ skipped: string[];
76
+ /** 已清理的旧版 specdo-* skill 目录绝对路径(不再属于当前导出列表) */
77
+ pruned: string[];
78
+ }
79
+ interface AgentSpec {
80
+ name: AgentName;
81
+ homeSubdir: string;
82
+ projectSubdir: string;
83
+ }
84
+ /**
85
+ * 8 家 canonical AI 工具(不含 universal escape hatch)。
86
+ * 供文档、测试、拼写纠错限定在已审计的工具列表上。
87
+ */
88
+ export declare const ALL_AGENTS: AgentName[];
89
+ /** Universal escape hatch 单独曝露,需要与 ALL_AGENTS 区分对待。 */
90
+ export declare const UNIVERSAL_AGENT: AgentName;
91
+ export declare function isAgentName(value: string): value is AgentName;
92
+ /**
93
+ * 计算两个字符串的 Levenshtein 距离。用于拼写纠错提示。
94
+ */
95
+ export declare function levenshtein(a: string, b: string): number;
96
+ /**
97
+ * 在 ALL_AGENTS 中寻找与输入最接近的 canonical agent 名。
98
+ * 近似阈值:Levenshtein 距离 ≤ 1。
99
+ * 不返回 'universal':它是 escape hatch,不适合作为拼写纠错候选。
100
+ */
101
+ export declare function suggestAgents(input: string): AgentName[];
102
+ export interface SkillDoc {
103
+ /** kebab-case 名称,将作为目录名 */
104
+ name: string;
105
+ /** 用于 frontmatter;驱动 agent auto-invoke */
106
+ description: string;
107
+ /** SKILL.md 正文 markdown(不含 frontmatter) */
108
+ body: string;
109
+ /**
110
+ * 可选的 references 文件:键为文件名(如 'REFERENCE.md'),值为完整内容。
111
+ * 写入路径:<skillDir>/references/<filename>
112
+ */
113
+ references?: Record<string, string>;
114
+ }
115
+ /**
116
+ * 渲染 SKILL.md 完整内容(含 frontmatter)。
117
+ *
118
+ * description 内的双引号被替换为单引号,避免破坏 YAML 字符串;
119
+ * 空白序列被压缩,让 YAML 解析器 / agent 列表视图更友好。
120
+ */
121
+ export declare function renderSkillFile(doc: SkillDoc): string;
122
+ /** 构造工作流 skill 文档(直接取自 workflow-content.ts,并注入 core-compatible 增强 references) */
123
+ export declare function buildWorkflowSkill(slug: string): SkillDoc;
124
+ /**
125
+ * 构造领域 skill 文档(progressive disclosure)。
126
+ *
127
+ * SKILL.md:领域描述 + 全部 signals(agent auto-trigger 需要)+ 各阶段前若干条精华
128
+ * references/CHECKLIST.md:完整 design.checklist + implement.focusAreas + verify.checklist
129
+ * references/PATTERNS.md:完整 patterns / antiPatterns(设计阶段 + 实施阶段)
130
+ * references/CROSS_DOMAIN.md:手写的跨领域协同说明(取自 cross-domain.ts)
131
+ */
132
+ export declare function buildDomainSkill(domain: DomainModule): SkillDoc;
133
+ /**
134
+ * 构造协议 skill 文档(progressive disclosure)。
135
+ *
136
+ * SKILL.md:goal + trigger / suppression / doNotUseWhen + workflow step 标题 + stop conditions
137
+ * references/WORKFLOW.md:完整 workflow 各 step 的 actions / exitCriteria / loopBackTo
138
+ * references/OUTPUT_CONTRACT.md:outputContract + severityLevels + prohibitions + artifactChecklists + generalConstraints
139
+ * references/EXAMPLES.md:手写 do/don't 代码示例(取自 protocol-examples.ts)
140
+ */
141
+ export declare function buildProtocolSkill(protocol: Protocol): SkillDoc;
142
+ /** 返回所有应被导出的 SkillDoc */
143
+ export declare function collectAllSkills(): SkillDoc[];
144
+ declare function resolveAgentRoot(agent: AgentName, scope: ExportScope, cwd: string): string;
145
+ /**
146
+ * 把单个 SkillDoc 写入指定 agent 根目录。
147
+ *
148
+ * 落盘结构:
149
+ * <root>/<name>/SKILL.md
150
+ * <root>/<name>/references/<filename> (每个 references 条目一个文件)
151
+ *
152
+ * 写入语义:
153
+ * - 目录不存在则递归创建
154
+ * - 同名文件直接覆盖(specdo 视 skill 文件为派生产物)
155
+ */
156
+ declare function writeSkillDoc(doc: SkillDoc, root: string): string[];
157
+ /**
158
+ * 清理 agent skill 根目录下以 `specdo-` 开头但不再属于当前导出列表的旧目录。
159
+ *
160
+ * 场景:skill 从 12 个缩减为 5 个后,用户重新 `specdo init` 时,旧的
161
+ * `specdo-domain-*` 和 `specdo-protocol-*` 目录会残留,导致 AI 工具同时
162
+ * 加载新 workflow skill 和旧 domain/protocol skill,产生冲突指令。
163
+ *
164
+ * 安全约束:
165
+ * - 仅删除以 `specdo-` 开头的子目录(不碰用户自定义 skill)
166
+ * - 跳过当前导出列表中存在的目录名
167
+ * - 目录不存在时静默跳过
168
+ */
169
+ declare function removeOrphanSpecdoSkills(root: string, currentSkillNames: Set<string>): string[];
170
+ /**
171
+ * 主导出函数:把 5 个 core workflow skill 写到指定 agent 的指定 scope 目录。
172
+ *
173
+ * 写入前会清理 agent skill 根目录下以 `specdo-` 开头但不再属于当前导出列表
174
+ * 的旧目录避免 AI 工具加载冲突指令。
175
+ */
176
+ export declare function exportSkills(options: ExportOptions): ExportResult;
177
+ /** 导出供测试与命令层引用 */
178
+ export declare const __INTERNAL: {
179
+ AGENT_REGISTRY: Record<AgentName, AgentSpec>;
180
+ WORKFLOW_SKILL_NAMES: string[];
181
+ resolveAgentRoot: typeof resolveAgentRoot;
182
+ writeSkillDoc: typeof writeSkillDoc;
183
+ removeOrphanSpecdoSkills: typeof removeOrphanSpecdoSkills;
184
+ };
185
+ export {};
186
+ //# sourceMappingURL=skill-exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-exporter.d.ts","sourceRoot":"","sources":["../../src/core/skill-exporter.ts"],"names":[],"mappings":"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"}