@bovinphang/craft-common 0.0.0-stage → 1.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.
- package/LICENSE +21 -0
- package/README.md +12 -2
- package/dist/content/catalog.d.ts +4 -0
- package/dist/content/resources.d.ts +2 -0
- package/dist/content/types.d.ts +21 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +668 -0
- package/dist/install/identity.d.ts +5 -0
- package/dist/install/planner.d.ts +6 -0
- package/dist/install/transaction.d.ts +7 -0
- package/dist/install/types.d.ts +44 -0
- package/docs/consuming-common.md +33 -0
- package/localized/zh-CN/methods/debug.md +13 -0
- package/localized/zh-CN/methods/doc-sync.md +12 -0
- package/localized/zh-CN/methods/refactoring.md +16 -0
- package/localized/zh-CN/methods/source-driven-development.md +19 -0
- package/localized/zh-CN/methods/tdd.md +13 -0
- package/localized/zh-CN/skills/cc-debug-methodology/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-debug-methodology/references/method.md +13 -0
- package/localized/zh-CN/skills/cc-doc-sync-core/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-doc-sync-core/references/method.md +12 -0
- package/localized/zh-CN/skills/cc-drawio-studio/SKILL.md +73 -0
- package/localized/zh-CN/skills/cc-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
- package/localized/zh-CN/skills/cc-drawio-studio/data/brand-icons.json +878 -0
- package/localized/zh-CN/skills/cc-drawio-studio/data/shape-index.json +83570 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/data-residency.md +27 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/diagram-patterns.md +60 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/flowchart-quality.md +49 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/layout-and-export.md +72 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/troubleshooting.md +29 -0
- package/localized/zh-CN/skills/cc-drawio-studio/references/xml-and-mermaid.md +58 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/brand-symbols.mjs +99 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/diagram-lint.mjs +205 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/diagram-url.mjs +102 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/drawio-export.mjs +134 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/layout-graph.mjs +107 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/png-embed-fix.mjs +26 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-go-packages.mjs +36 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-js-modules.mjs +52 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-python-classes.mjs +30 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-python-modules.mjs +55 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/shape-query.mjs +121 -0
- package/localized/zh-CN/skills/cc-drawio-studio/scripts/studio-core.mjs +139 -0
- package/localized/zh-CN/skills/cc-drawio-studio/styles/built-in/corporate.json +49 -0
- package/localized/zh-CN/skills/cc-drawio-studio/styles/built-in/default.json +49 -0
- package/localized/zh-CN/skills/cc-drawio-studio/styles/built-in/handdrawn.json +49 -0
- package/localized/zh-CN/skills/cc-drawio-studio/styles/schema.json +112 -0
- package/localized/zh-CN/skills/cc-refactoring-core/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-refactoring-core/references/method.md +16 -0
- package/localized/zh-CN/skills/cc-source-driven-development/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-source-driven-development/references/method.md +19 -0
- package/localized/zh-CN/skills/cc-tdd-methodology/SKILL.md +8 -0
- package/localized/zh-CN/skills/cc-tdd-methodology/references/method.md +13 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/SKILL.md +34 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/interactive-diagram.html +371 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/README.md +14 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/architecture.json +121 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/invalid-explicit.json +41 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/sequence.json +53 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/sequence.mmd +21 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/workflow.json +98 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/assets/quality-examples/workflow.mmd +7 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/references/diagram-workflows.md +81 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/references/html-technical-diagrams.md +243 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/diagram-browser.mjs +153 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/export-diagram.mjs +332 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/interactive-diagram-server.mjs +654 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/mermaid-render.mjs +64 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
- package/localized/zh-CN/skills/cc-technical-diagrams/scripts/tech-diagram-render.mjs +1537 -0
- package/localized/zh-CN/skills/eval_queries.json +160 -0
- package/localized/zh-CN/skills/metadata.json +223 -0
- package/localized/zh-CN/skills/relations.json +53 -0
- package/methods/debug.md +13 -0
- package/methods/doc-sync.md +12 -0
- package/methods/refactoring.md +16 -0
- package/methods/source-driven-development.md +19 -0
- package/methods/tdd.md +13 -0
- package/package.json +51 -4
- package/skills/cc-debug-methodology/SKILL.md +8 -0
- package/skills/cc-debug-methodology/references/method.md +13 -0
- package/skills/cc-doc-sync-core/SKILL.md +8 -0
- package/skills/cc-doc-sync-core/references/method.md +12 -0
- package/skills/cc-drawio-studio/SKILL.md +73 -0
- package/skills/cc-drawio-studio/data/THIRD_PARTY_NOTICES.md +10 -0
- package/skills/cc-drawio-studio/data/brand-icons.json +878 -0
- package/skills/cc-drawio-studio/data/shape-index.json +83570 -0
- package/skills/cc-drawio-studio/references/data-residency.md +27 -0
- package/skills/cc-drawio-studio/references/diagram-patterns.md +60 -0
- package/skills/cc-drawio-studio/references/flowchart-quality.md +49 -0
- package/skills/cc-drawio-studio/references/layout-and-export.md +72 -0
- package/skills/cc-drawio-studio/references/troubleshooting.md +29 -0
- package/skills/cc-drawio-studio/references/xml-and-mermaid.md +58 -0
- package/skills/cc-drawio-studio/scripts/brand-symbols.mjs +99 -0
- package/skills/cc-drawio-studio/scripts/diagram-lint.mjs +205 -0
- package/skills/cc-drawio-studio/scripts/diagram-url.mjs +102 -0
- package/skills/cc-drawio-studio/scripts/drawio-export.mjs +134 -0
- package/skills/cc-drawio-studio/scripts/layout-graph.mjs +107 -0
- package/skills/cc-drawio-studio/scripts/png-embed-fix.mjs +26 -0
- package/skills/cc-drawio-studio/scripts/scan-go-packages.mjs +36 -0
- package/skills/cc-drawio-studio/scripts/scan-js-modules.mjs +52 -0
- package/skills/cc-drawio-studio/scripts/scan-python-classes.mjs +30 -0
- package/skills/cc-drawio-studio/scripts/scan-python-modules.mjs +55 -0
- package/skills/cc-drawio-studio/scripts/scan-rust-modules.mjs +35 -0
- package/skills/cc-drawio-studio/scripts/scan-ts-modules.mjs +7 -0
- package/skills/cc-drawio-studio/scripts/shape-query.mjs +121 -0
- package/skills/cc-drawio-studio/scripts/studio-core.mjs +139 -0
- package/skills/cc-drawio-studio/styles/built-in/corporate.json +49 -0
- package/skills/cc-drawio-studio/styles/built-in/default.json +49 -0
- package/skills/cc-drawio-studio/styles/built-in/handdrawn.json +49 -0
- package/skills/cc-drawio-studio/styles/schema.json +112 -0
- package/skills/cc-refactoring-core/SKILL.md +8 -0
- package/skills/cc-refactoring-core/references/method.md +16 -0
- package/skills/cc-source-driven-development/SKILL.md +8 -0
- package/skills/cc-source-driven-development/references/method.md +19 -0
- package/skills/cc-tdd-methodology/SKILL.md +8 -0
- package/skills/cc-tdd-methodology/references/method.md +13 -0
- package/skills/cc-technical-diagrams/SKILL.md +34 -0
- package/skills/cc-technical-diagrams/assets/interactive-diagram.html +371 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/README.md +14 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/architecture.json +121 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/invalid-explicit.json +41 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/sequence.json +53 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/sequence.mmd +21 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/workflow.json +98 -0
- package/skills/cc-technical-diagrams/assets/quality-examples/workflow.mmd +7 -0
- package/skills/cc-technical-diagrams/references/diagram-workflows.md +81 -0
- package/skills/cc-technical-diagrams/references/html-technical-diagrams.md +243 -0
- package/skills/cc-technical-diagrams/references/png-qa-autofix.md +37 -0
- package/skills/cc-technical-diagrams/scripts/diagram-browser.mjs +153 -0
- package/skills/cc-technical-diagrams/scripts/diagram-layout.mjs +176 -0
- package/skills/cc-technical-diagrams/scripts/export-diagram.mjs +332 -0
- package/skills/cc-technical-diagrams/scripts/interactive-diagram-server.mjs +654 -0
- package/skills/cc-technical-diagrams/scripts/mermaid-render.mjs +64 -0
- package/skills/cc-technical-diagrams/scripts/png-qa.mjs +462 -0
- package/skills/cc-technical-diagrams/scripts/tech-diagram-render.mjs +1537 -0
- package/skills/eval_queries.json +160 -0
- package/skills/metadata.json +223 -0
- package/skills/relations.json +53 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ContentCatalog, InstallLanguage } from "../content/types.js";
|
|
2
|
+
export type Consumer = {
|
|
3
|
+
product: string;
|
|
4
|
+
manifestPath: string;
|
|
5
|
+
scope: "local" | "global";
|
|
6
|
+
};
|
|
7
|
+
export type SharedRequest = {
|
|
8
|
+
action: "install" | "update" | "uninstall";
|
|
9
|
+
skillsDir: string;
|
|
10
|
+
consumer: Consumer;
|
|
11
|
+
catalog?: ContentCatalog;
|
|
12
|
+
retainConsumer?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type FileMutation = {
|
|
15
|
+
path: string;
|
|
16
|
+
beforeHash: string | null;
|
|
17
|
+
after: Buffer | null;
|
|
18
|
+
};
|
|
19
|
+
export type CommonPlan = {
|
|
20
|
+
schemaVersion: 1;
|
|
21
|
+
target: string;
|
|
22
|
+
stateDigest: string;
|
|
23
|
+
mutations: FileMutation[];
|
|
24
|
+
conflicts: string[];
|
|
25
|
+
};
|
|
26
|
+
export type CommonManifest = {
|
|
27
|
+
schemaVersion: 1;
|
|
28
|
+
target: string;
|
|
29
|
+
packageVersion: string;
|
|
30
|
+
language: InstallLanguage;
|
|
31
|
+
sourceDigest: string;
|
|
32
|
+
files: Record<string, string>;
|
|
33
|
+
residual: boolean;
|
|
34
|
+
};
|
|
35
|
+
export type DependencyLock = {
|
|
36
|
+
schemaVersion: 1;
|
|
37
|
+
target: string;
|
|
38
|
+
consumers: Record<string, {
|
|
39
|
+
consumer: Consumer;
|
|
40
|
+
requiredVersion: string;
|
|
41
|
+
language: InstallLanguage;
|
|
42
|
+
digest: string;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 消费 craft-common
|
|
2
|
+
|
|
3
|
+
公共包当前修复版为 `@bovinphang/craft-common@1.0.1`(首版 1.0.0),要求 Node >=22、ESM。1.0.1 修复较大事务日志恢复的正则栈溢出及 Windows 等价大小写路径的遍历挂起,并固定分发文本换行。消费者精确固定版本,公共内容在本仓库维护,产品只维护自动生成的分发副本。公共源码不依赖 frontend-craft。
|
|
4
|
+
|
|
5
|
+
## 内容与分发
|
|
6
|
+
|
|
7
|
+
`readContentCatalog(packageRoot, language)` 显式接收包根,返回 `en` 或 `zh-CN` 的七个入口、完整文件哈希、来源版本和摘要;不要依赖 bundle 后的 import.meta.url 定位内容。
|
|
8
|
+
|
|
9
|
+
`readMethodResource(packageRoot, method, language)` 提供源码核验、文档同步、诊断、重构、TDD 的通用方法字节。领域 Skill 将方法内嵌为本地 references,独立发布时不依赖相邻 Skill。修改 methods 后运行 `pnpm run sync:methods` 更新公共入口引用;评估样例独立维护。
|
|
10
|
+
|
|
11
|
+
frontend-craft / backend-craft 的 `pnpm run sync:common` 生成中英文公共快照、领域方法副本和来源锁;`pnpm run check:common` 只读比对。Git 原生插件也携带这些生成快照,不要求用户执行构建。禁止手工修改生成文件。公共独立包用 1.0.1,领域独立包跟随其产品版本。两个消费者需使用相同版本、语言及精确内容摘要;升级前先通过旧产品卸载退出旧公共引用并处理保留的用户修改。
|
|
12
|
+
|
|
13
|
+
检查覆盖完整公共文件集合;同步仅清理旧锁认领且哈希未变的过期文件。额外未知文件和手工修改会阻断同步并保留原文件。组合索引中的产品自有条目仍在产品维护,公共条目来自本包。
|
|
14
|
+
|
|
15
|
+
## 安装契约
|
|
16
|
+
|
|
17
|
+
`resolveSharedIdentity(skillsDir)` 规范化真实目标及现存祖先路径,将状态放在父目录 `craft-manifests/<目标路径摘要>/` 中。配置目录不同但真实 Skill 目录相同时复用;同一父目录的不同目标互相隔离。
|
|
18
|
+
|
|
19
|
+
`planSharedDeployment(request)` 只读生成变更和冲突。消费者由产品名、真实产品清单路径和作用域标识。初版要求版本、语言和内容摘要精确一致,拒绝未知同名文件及用户修改。不要让产品清单再次认领 cc 文件。
|
|
20
|
+
|
|
21
|
+
`executeSharedPlan(request, { dryRun, productMutations, allowedProductRoots })` 在排他锁内重新规划,协调资源、公共账本与产品文件。产品先生成 `{ path, beforeHash, after }` 变更;公共与产品重复认领、哈希变化或越界均拒绝。部分卸载时使用 `retainConsumer: true` 保留依赖;完全卸载才释放引用。
|
|
22
|
+
|
|
23
|
+
`recoverSharedTransaction(skillsDir, allowedProductRoots?)` 在确认本地进程已退出时恢复。产品根边界必须由调用方提供,不信任日志自称的任意路径;上下文不匹配时安全拒绝。提交前回滚,提交后验证并清理记录,外部修改保留现场。
|
|
24
|
+
|
|
25
|
+
允许产品声明的根目录本身是 junction;根内部的符号链接仍拒绝。事务写入、日志及恢复使用规范化真实路径。协议保证本地主机并发和进程中断恢复,不保证断电级持久性或多主机共享文件系统协调。
|
|
26
|
+
|
|
27
|
+
消费者测试使用 frontend/backend 夹具验证,不代表 backend-craft 产品已经实现。原生插件双产品发现和去重需要 Runtime 专项验证,不能用 CLI 测试替代。
|
|
28
|
+
|
|
29
|
+
## 开发与发布边界
|
|
30
|
+
|
|
31
|
+
未公开发布时,通过 `pnpm pack` 产物和 `scripts/local-registry.ts` 临时本地服务联调;只给当前 pnpm 进程指定临时 npmrc,不修改用户全局 registry。同一个开发版本的 tarball 变化后重新安装并更新真实完整性摘要。
|
|
32
|
+
|
|
33
|
+
先发布公共包,再发布依赖它的产品;发布属于独立操作。本次不实际发布。发布前必须将产品锁中的开发服务地址清理为标准来源,并在公共包真实可下载后重新做公开 registry 的 frozen 安装校验。不能把本地缓存成功当作公开可下载。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 证据驱动诊断
|
|
2
|
+
|
|
3
|
+
通过五步流程确认根因后再修复。
|
|
4
|
+
|
|
5
|
+
1. **分类:** 描述可观察故障、影响、版本、环境和最小复现,以项目证据确定相关子系统;跨层问题从表面症状逐层追踪。
|
|
6
|
+
2. **收集:** 使用最小失败命令或操作复现,收集必要日志、trace、状态、配置和近期变更;隐藏凭证和敏感载荷。领域适配层提供技术栈专属诊断入口。
|
|
7
|
+
3. **假设:** 最多保留三个按证据排序的假设,每个说明“X 导致 Y,可由 Z 证实或证伪”;不把症状或猜测性修复当作根因。
|
|
8
|
+
4. **验证:** 一次改变一个变量,从最强假设开始,记录已证实/已证伪/待确认。全部失败则重新收集证据;同一假设连续三次失败时报告阻塞,不反复重试。
|
|
9
|
+
5. **修复与校验:** 实施已确认根因的最小修复,保留回归复现,先运行受影响校验再扩大。已有失败单独记录,不关闭测试或削弱校验来宣称成功。
|
|
10
|
+
|
|
11
|
+
依赖或环境故障先对比精确工具链、依赖版本、锁文件和本地/CI 差异,再决定是否升级。迁移与普通缺陷修复分开;没有证据时不先加重试、调超时或吞掉异常。
|
|
12
|
+
|
|
13
|
+
交付 `reports/debug-YYYY-MM-DD-HHmmss.md`,包含症状与复现、证据、假设/结果表、根因、修改文件和行为、实际验证、剩余风险及下一步。没有观察到结果时不宣称修复或测试全绿。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 文档事实同步
|
|
2
|
+
|
|
3
|
+
从实现事实同步公共文档,不把期望设计写成既有能力。
|
|
4
|
+
|
|
5
|
+
1. 明确技术栈、文档入口和本次范围,覆盖根 README、嵌套包/应用/Runtime README 和部署指南;排除依赖、构建产物和第三方目录。
|
|
6
|
+
2. 收集权威事实:清单和锁文件、配置、环境变量示例、命令、schema、公共 API、测试、CI、构建与部署文件。使用实际技术栈的来源,不强制某一种语言的项目清单。
|
|
7
|
+
3. 对照命令、环境变量名、路径、版本、API 行为、能力、安装和部署说明。只写稳定公共事实,不将提案和实验设计描述为已支持行为。
|
|
8
|
+
4. 检查全部已有语言入口。公共标识、命令、版本范围、支持矩阵、报告路径和示例必须一致;文案遵循现有翻译约定,明确需要人工复核的内容。
|
|
9
|
+
5. 同步相关 README/docs/ADR/changelog 和用户可见元数据。ADR 记录背景、决定、备选、影响、验证和回退线索,不写成完整评审报告。
|
|
10
|
+
6. 执行项目已有一致性、相关类型/测试/构建/打包检查和旧引用搜索。记录每份已查文档、事实源、已同步语言、不需修改的入口和未决问题。
|
|
11
|
+
|
|
12
|
+
不虚构命令或环境变量,不越界修改用户私有文档,不用内部实现细节淹没 README。文案编辑成功不等于事实一致性已经验证。
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# 保持行为的重构
|
|
2
|
+
|
|
3
|
+
重构改变内部组织并保持可观察契约,使用 GREEN → REFACTOR → GREEN,不为结构变换制造失败的行为需求。
|
|
4
|
+
|
|
5
|
+
1. 区分结构调整、新行为、缺陷修复和依赖迁移;行为变化进入独立流程。
|
|
6
|
+
2. 阅读实现、调用方、导出、注册、持久化与测试;改动前定义结果、错误、副作用及顺序、状态变换、公共名称和协议。
|
|
7
|
+
3. 建立绿色基线,或记录已有失败。关键行为缺少覆盖时补充描述当前行为的特征测试,可以从绿色开始。
|
|
8
|
+
4. 诊断结构证据并排除误判。行数或复杂度指标本身不足以证明应当重写;优先选择最小安全、可回退的变换。
|
|
9
|
+
5. 规划前置步骤;每步记录目标、结构意图、手法、风险、预计文件/函数、公共 API/行为变化(纯重构为零)、验证和回退边界。
|
|
10
|
+
6. 一次只改一个主要结构问题,立即运行最近的有效校验并检查差异;实际范围超出预算时停止并重新评估。
|
|
11
|
+
7. 新回归使当前步骤失效:只撤回当前结构步骤,验证前一基线,再缩小或调整顺序;不撤销无关用户改动,不跨无关模块扩散修复。
|
|
12
|
+
8. 按受影响契约扩展验证:本地/静态、单元/集成、完整 lint/类型/测试、构建和相关专项。使用现有工具,不强制引入框架。
|
|
13
|
+
|
|
14
|
+
风险依上下文判断:SAFE 为证据充分的局部私有变换,CAUTION 为跨模块/共享状态/生命周期变换,DANGER 为公共 API、schema、持久化、鉴权、权限、协议或架构级变化。手法名称不自动决定安全等级。
|
|
15
|
+
|
|
16
|
+
给出证明结论:PASS 表示相关行为充分覆盖且校验通过;PARTIAL 表示已执行检查通过但仍有重要覆盖缺口;NOT PROVEN 表示证据或环境不足以证明行为保持。附实际命令、回退决定和剩余风险。
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# 以事实来源驱动开发
|
|
2
|
+
|
|
3
|
+
使用项目事实、权威资料和对应版本的证据做工程决策。
|
|
4
|
+
|
|
5
|
+
1. 明确问题、版本和本地契约。先读项目清单、配置、实现、调用方和测试;稳定的本地变换可依赖这些事实,运行时、依赖和公共 API 的变化假设需要权威核验。
|
|
6
|
+
2. 收集实际版本的官方文档、源码、类型定义、发布记录、规范和迁移指南。第三方讨论只作线索。记录路径或链接、版本、日期和相关结论。
|
|
7
|
+
3. 对照运行中的项目说明兼容性、维护成本、迁移范围和回退。通过小的适配边界隔离易变化的外部假设,不为追新直接推翻稳定约定。
|
|
8
|
+
4. 使用项目现有校验或最小复现证明关键假设,按实际技术栈选择工具。记录命令和结果;无法验证时明确不确定性,不宣称支持。
|
|
9
|
+
5. 公共接口、依赖或团队约定改变时同步轻量 ADR、迁移记录或事实文档,不复制大段外部资料。
|
|
10
|
+
|
|
11
|
+
## 本地知识请求
|
|
12
|
+
|
|
13
|
+
用户将来源限制在本地仓库或知识目录时,先检索指定来源,不用网络猜测补齐。使用明确路径,否则检查 `knowledge/` 是否存在;不存在则说明缺失来源,不虚构目录。
|
|
14
|
+
|
|
15
|
+
有 `data_structure.md` 时先读导航并选择相关分支,渐进搜索而不加载全库。默认最多五轮关键词调整;记录文件、章节/页码/工作表、版本范围与证据缺口。PDF 和表格先选择合适提取工具。只有用户范围允许时才使用外部来源。
|
|
16
|
+
|
|
17
|
+
## 证据优先级与交付
|
|
18
|
+
|
|
19
|
+
实现、配置和测试确定本地契约;官方版本化文档与源码确定外部行为;规范确定平台约束;Issue 和文章仅作辅助。交付决策、来源、实现影响、验证结果及剩余不确定性,不能只说“已查文档”。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 测试驱动开发
|
|
2
|
+
|
|
3
|
+
新增行为和改变行为的缺陷修复使用 RED → GREEN → REFACTOR,测试描述可观察契约,不锁死内部实现结构。
|
|
4
|
+
|
|
5
|
+
1. 确定一个行为:输入、输出/错误、状态变换或外部可观察副作用。沿用项目现有工具,选择最接近风险且有效的测试层。
|
|
6
|
+
2. 先写能区分缺失或错误行为的最小测试并运行,观察预期行为导致的失败,不将语法、导入或环境错误当成红灯。缺陷测试必须在原缺陷存在时失败。
|
|
7
|
+
3. 只实现足以通过测试的最少代码。红灯阶段不重构,不增加无关功能。
|
|
8
|
+
4. 重跑测试及相关周边测试,再在保持绿色的前提下整理命名和结构;新需求进入下一轮。
|
|
9
|
+
5. 报告实际红绿命令、覆盖行为和未测边界,不根据差异或未执行的测试推断成功。
|
|
10
|
+
|
|
11
|
+
纯结构重构使用另一条契约:以已有测试或特征覆盖建立当前行为,保持 GREEN → REFACTOR → GREEN,不为流程形式制造失败。
|
|
12
|
+
|
|
13
|
+
逻辑就近测试;真实边界用集成测试,需要完整旅程时才用端到端测试。不默认上 E2E,不断言脆弱私有状态,不仅为 TDD 引入新框架。项目缺少测试设施时先说明最小搭建方案,并在获得决定后引入;按实际技术栈选择工具,不要求前端测试工具。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 证据驱动诊断
|
|
2
|
+
|
|
3
|
+
通过五步流程确认根因后再修复。
|
|
4
|
+
|
|
5
|
+
1. **分类:** 描述可观察故障、影响、版本、环境和最小复现,以项目证据确定相关子系统;跨层问题从表面症状逐层追踪。
|
|
6
|
+
2. **收集:** 使用最小失败命令或操作复现,收集必要日志、trace、状态、配置和近期变更;隐藏凭证和敏感载荷。领域适配层提供技术栈专属诊断入口。
|
|
7
|
+
3. **假设:** 最多保留三个按证据排序的假设,每个说明“X 导致 Y,可由 Z 证实或证伪”;不把症状或猜测性修复当作根因。
|
|
8
|
+
4. **验证:** 一次改变一个变量,从最强假设开始,记录已证实/已证伪/待确认。全部失败则重新收集证据;同一假设连续三次失败时报告阻塞,不反复重试。
|
|
9
|
+
5. **修复与校验:** 实施已确认根因的最小修复,保留回归复现,先运行受影响校验再扩大。已有失败单独记录,不关闭测试或削弱校验来宣称成功。
|
|
10
|
+
|
|
11
|
+
依赖或环境故障先对比精确工具链、依赖版本、锁文件和本地/CI 差异,再决定是否升级。迁移与普通缺陷修复分开;没有证据时不先加重试、调超时或吞掉异常。
|
|
12
|
+
|
|
13
|
+
交付 `reports/debug-YYYY-MM-DD-HHmmss.md`,包含症状与复现、证据、假设/结果表、根因、修改文件和行为、实际验证、剩余风险及下一步。没有观察到结果时不宣称修复或测试全绿。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 文档事实同步
|
|
2
|
+
|
|
3
|
+
从实现事实同步公共文档,不把期望设计写成既有能力。
|
|
4
|
+
|
|
5
|
+
1. 明确技术栈、文档入口和本次范围,覆盖根 README、嵌套包/应用/Runtime README 和部署指南;排除依赖、构建产物和第三方目录。
|
|
6
|
+
2. 收集权威事实:清单和锁文件、配置、环境变量示例、命令、schema、公共 API、测试、CI、构建与部署文件。使用实际技术栈的来源,不强制某一种语言的项目清单。
|
|
7
|
+
3. 对照命令、环境变量名、路径、版本、API 行为、能力、安装和部署说明。只写稳定公共事实,不将提案和实验设计描述为已支持行为。
|
|
8
|
+
4. 检查全部已有语言入口。公共标识、命令、版本范围、支持矩阵、报告路径和示例必须一致;文案遵循现有翻译约定,明确需要人工复核的内容。
|
|
9
|
+
5. 同步相关 README/docs/ADR/changelog 和用户可见元数据。ADR 记录背景、决定、备选、影响、验证和回退线索,不写成完整评审报告。
|
|
10
|
+
6. 执行项目已有一致性、相关类型/测试/构建/打包检查和旧引用搜索。记录每份已查文档、事实源、已同步语言、不需修改的入口和未决问题。
|
|
11
|
+
|
|
12
|
+
不虚构命令或环境变量,不越界修改用户私有文档,不用内部实现细节淹没 README。文案编辑成功不等于事实一致性已经验证。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cc-drawio-studio
|
|
3
|
+
description: 用于创建带 draw.io / diagrams.net 源文件的可编辑技术图,包括架构图、ERD、UML、序列图、流程图、ML 模型图、官方形状检索、品牌符号、Graphviz 自动布局、代码结构图、.drawio 校验或 draw.io CLI 导出兜底。不要用于普通位图生成、手绘草图、交互式 Canvas/Three.js 场景或装饰性 SVG 动画;中文触发词包括 draw.io、diagrams.net、可编辑架构图、.drawio、ER 图、UML、序列图、自动布局、形状检索、代码结构图。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 可编辑技术图表工作流
|
|
7
|
+
|
|
8
|
+
## 用途
|
|
9
|
+
|
|
10
|
+
生成、校验和导出可继续编辑的 draw.io / diagrams.net 技术图表。
|
|
11
|
+
|
|
12
|
+
## 流程
|
|
13
|
+
|
|
14
|
+
1. 判断图表路线
|
|
15
|
+
- 需要长期维护在 Markdown 中的简单图,优先 Mermaid。
|
|
16
|
+
- 需要官方图标、泳道、复杂布局、层/标签/元数据、可编辑 PNG/SVG/PDF 或 `.drawio` 源时,使用本工作流。
|
|
17
|
+
- 需要快速浏览器打开或分享时,用 [diagram-url.mjs](scripts/diagram-url.mjs) 生成 URL;需要本地可审计交付时,始终保存 `.drawio` 源。
|
|
18
|
+
- 用户已经有 Mermaid 或 CSV 内容时,可用 `diagram-url.mjs --create --type mermaid|csv` 交给 diagrams.net 导入;需要长期维护或精确形状时,再转成 XML。
|
|
19
|
+
- 如果当前宿主已经配置 draw.io MCP App/Tool,可把它作为预览或编辑入口;本 skill 不要求安装 MCP server。
|
|
20
|
+
- 需要照片、海报、视觉概念或位图编辑时,走图片生成路线。
|
|
21
|
+
|
|
22
|
+
2. 建立图表规格
|
|
23
|
+
- 明确图表类型、受众、输出格式、节点清单、关系、层级分组和保存位置。
|
|
24
|
+
- 用户指定 Flowchart、Architecture、Sequence、UML Class、ERD、Mindmap、Network Topology 或 ML/DL 图表时,读取 [diagram-patterns.md](references/diagram-patterns.md)。
|
|
25
|
+
- 对需要在 diagrams.net 中清晰打开的流程、工作流、审批、发布或事故响应流程图,还要读取 [flowchart-quality.md](references/flowchart-quality.md)。
|
|
26
|
+
- 需要选择 XML、Mermaid、CSV、容器、层、标签、metadata 或暗色模式策略时,读取 [xml-and-mermaid.md](references/xml-and-mermaid.md)。
|
|
27
|
+
- 需要特定厂商/云/网络/流程图形状时,运行 [shape-query.mjs](scripts/shape-query.mjs);需要 AI、数据库或基础设施品牌符号时,运行 [brand-symbols.mjs](scripts/brand-symbols.mjs)。
|
|
28
|
+
|
|
29
|
+
3. 生成 `.drawio` 源
|
|
30
|
+
- 小图可手工生成 draw.io XML;当直接推理节点坐标、尺寸和连线更清楚时,优先保持显式布局。
|
|
31
|
+
- 超过约 15 个节点、依赖图或代码结构图时,先生成 graph JSON,再用 [layout-graph.mjs](scripts/layout-graph.mjs) 自动布局。
|
|
32
|
+
- 手工摆放 XML 时,将坐标对齐到 10px 网格,保持同级节点之间有充足间距,使用 `whiteSpace=wrap;html=1`,默认优先 `fontSize=14`,强制换行写作 `
`,并让容器按内容收紧,避免单侧大面积空白。
|
|
33
|
+
- 手工流程图保持 `pageWidth` 在易读的 600-800 范围内,除非明确是横向跨职能表;真实阶段使用泳道容器,循环或回滚边通过边距和显式 waypoint 绕行。
|
|
34
|
+
- 代码结构图可先用 [scan-js-modules.mjs](scripts/scan-js-modules.mjs)、[scan-ts-modules.mjs](scripts/scan-ts-modules.mjs)、[scan-python-modules.mjs](scripts/scan-python-modules.mjs)、[scan-go-packages.mjs](scripts/scan-go-packages.mjs)、[scan-rust-modules.mjs](scripts/scan-rust-modules.mjs) 或 [scan-python-classes.mjs](scripts/scan-python-classes.mjs) 生成 graph JSON。
|
|
35
|
+
|
|
36
|
+
4. 校验和预览
|
|
37
|
+
- 每次生成 `.drawio` 后运行:
|
|
38
|
+
```bash
|
|
39
|
+
node skills/cc-drawio-studio/scripts/diagram-lint.mjs diagram.drawio --format markdown
|
|
40
|
+
```
|
|
41
|
+
- 若本机有 draw.io desktop CLI,导出预览 PNG 时不要嵌入 XML,并控制宽度:
|
|
42
|
+
```bash
|
|
43
|
+
node skills/cc-drawio-studio/scripts/drawio-export.mjs diagram.drawio --format png --output diagram.png --width 2000
|
|
44
|
+
```
|
|
45
|
+
- 若 CLI 不可用,用 [diagram-url.mjs](scripts/diagram-url.mjs) 生成 diagrams.net viewer/editor URL;严格离线或数据驻留敏感时先读取 [data-residency.md](references/data-residency.md)。
|
|
46
|
+
|
|
47
|
+
5. 交付最终产物
|
|
48
|
+
- 保存 `.drawio` 源文件和用户需要的 PNG/SVG/PDF/JPG。
|
|
49
|
+
- 最终 PNG 若使用 draw.io `-e` 嵌入 XML,导出后运行:
|
|
50
|
+
```bash
|
|
51
|
+
node skills/cc-drawio-studio/scripts/drawio-export.mjs diagram.drawio --format png --output diagram.drawio.png --scale 2 --embed
|
|
52
|
+
node skills/cc-drawio-studio/scripts/png-embed-fix.mjs diagram.drawio.png
|
|
53
|
+
```
|
|
54
|
+
- 报告源文件、导出文件、校验结果和无法自动验证的外部依赖。
|
|
55
|
+
|
|
56
|
+
## 工具资源
|
|
57
|
+
|
|
58
|
+
工具脚本共享 [studio-core.mjs](scripts/studio-core.mjs)。离线查询使用 [shape-index.json](data/shape-index.json) 与 [brand-icons.json](data/brand-icons.json),样式预设资源包括 [schema.json](styles/schema.json)、[default.json](styles/built-in/default.json)、[corporate.json](styles/built-in/corporate.json) 和 [handdrawn.json](styles/built-in/handdrawn.json)。
|
|
59
|
+
|
|
60
|
+
## 约束
|
|
61
|
+
|
|
62
|
+
- 不把 draw.io 用作普通图片模型;文本密集或结构化图必须保留可编辑源。
|
|
63
|
+
- 不猜测复杂 `shape=mxgraph.*` 样式;优先用形状查询工具获取官方样式。
|
|
64
|
+
- 不为 draw.io 工作流引入 MCP server 运行时依赖;MCP App/Tool 只作为用户环境已有时的可选互操作入口。
|
|
65
|
+
- Mermaid/CSV URL 是导入捷径,不替代 `.drawio` 源文件、lint 和可编辑交付。
|
|
66
|
+
- 不在预览 PNG 中嵌入 XML;嵌入只用于最终交付。
|
|
67
|
+
- Graphviz、draw.io desktop 和联网品牌图标都是可选外部能力;缺失时必须降级而不是反复重试。`drawio-export.mjs` 可以探测本地 draw.io 路径并输出安装建议,但不得自动安装 draw.io。
|
|
68
|
+
- 品牌图标和第三方形状索引遵循 [THIRD_PARTY_NOTICES.md](data/THIRD_PARTY_NOTICES.md) 中的来源与许可说明。
|
|
69
|
+
- 参考外部 draw.io MCP 生态时,只吸收路线、约束和互操作经验,不复制其服务实现或长篇提示词。
|
|
70
|
+
|
|
71
|
+
## 预期输出
|
|
72
|
+
|
|
73
|
+
交付可编辑 `.drawio` 源和所需导出格式,并给出结构校验结果。图表应节点完整、连线可追踪、标签不截断、布局不重叠,外部工具缺失时提供可打开的 diagrams.net fallback。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 第三方声明
|
|
2
|
+
|
|
3
|
+
此 skill 包含用于生成可编辑图表的精简索引和 manifest。
|
|
4
|
+
|
|
5
|
+
- `shape-index.json` 包含用于本地样式检索的 draw.io 图形元数据。图形名称、尺寸和 style 字符串来自 draw.io / diagrams.net 图形生态,并继续受其上游条款约束。
|
|
6
|
+
- `brand-icons.json` 是 lobe-icons CDN 资产的 manifest。lobe-icons 使用 MIT 许可;各个 logo 和名称可能是其各自所有者的商标。
|
|
7
|
+
- `brand-symbols.mjs` 可能为部分基础设施和数据库符号引用 simple-icons CDN slug。simple-icons 元数据和图标遵循其上游许可;品牌商标仍归各自权利人所有。
|
|
8
|
+
- 工作流文档提到可选地与外部 draw.io MCP App/Tool 部署互操作。这些服务未被本包打包、内置或设为必需。
|
|
9
|
+
|
|
10
|
+
这些资源仅用于识别和渲染图表符号。重新分发包时,请保留此声明。
|