@ultime/codecraft 0.0.0-stage → 1.0.0

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/CHANGELOG.md ADDED
@@ -0,0 +1,44 @@
1
+ # Changelog
2
+
3
+ ## 1.0.0 - 2026-10-26
4
+
5
+ 首个稳定版本。
6
+
7
+ ### 规则体系
8
+
9
+ - 代码宪法:五条元判据(M1–M5)+ 二十一条不变量(A1–A21),每条含理由与验收。
10
+ - 代码族卡:11 个代码族的职责、形状、命名、契约、状态与错误、测试、正反例、验收。
11
+ - AI 生成契约:先读顺序、禁止项、模式边界与安全红线。
12
+ - 风格总图:中性总览,用于跨项目复用。
13
+ - 设计模式工具箱:按「力」选型,不按模式名字选型。
14
+ - 架构设计方法:档位、七步法、C4 最小集、边界切分、依赖规则、ADR、反模式与评审清单。
15
+
16
+ ### CLI
17
+
18
+ - 命令:`check` / `audit` / `plan` / `init` / `version`。
19
+ - Rule Packs:`app` / `library` / `design-system` / `auto`。
20
+ - 内置检查:A2(包依赖方向)、A11(生成物标记)、A17(内部不 import external / generated)、A21(密钥扫描与公开文档路径)。
21
+ - `init` 默认 dry-run;`--apply --name <name>` 写入 app / library 骨架,已存在路径跳过、不覆盖。
22
+ - 输出 Markdown(默认)或 JSON;报告带版本号与规则 ID。
23
+ - 退出码:`0` 通过、`1` 有 error 或 gate 失败、`2` 用法 / 配置错误。
24
+ - 选项:`--root`、`--pack`、`--config`、`--format`、`--severity`、`--ci`、`--fail-fast`、`--no-gates`、`--with-gates`。
25
+
26
+ ### 门禁
27
+
28
+ - 两层模型:通用规则内置,业务门禁由项目实现、由 `codecraft.config.json` 编排。
29
+ - Gate Contract:非交互、幂等、只读、有超时(默认 120s)、失败输出下一步。
30
+ - `audit` 汇总内置规则与业务 gate;`plan` 默认只读,`--with-gates` 才执行门禁。
31
+ - `--fail-fast` 在第一个 gate 失败时停止。
32
+
33
+ ### 适配器与脚手架
34
+
35
+ - 适配器:generic(`AGENTS.md`)、Trae(`SKILL.md`)、Claude(`SKILL.md`)。
36
+ - 场景:新项目、旧项目审计、只出报告、重构评审。
37
+ - 统一输出格式:结论 / 证据 / 差距与风险 / 计划 / 验证 / 下一步。
38
+ - 模板:`app` 与 `library` 的 README、package.json、CHANGELOG、compat。
39
+
40
+ ### 工程
41
+
42
+ - MIT 许可;贡献流程与安全报告流程。
43
+ - `node:test` 用例覆盖内置规则、gates、CLI 与脚手架。
44
+ - golden tasks 用于人工回归。
@@ -0,0 +1,27 @@
1
+ # Contributing(贡献指南)
2
+
3
+ > 定位:给贡献者与 AI 的最短协作规则;规范正文在 `docs/`。
4
+ > 状态:现行(2026-10)。
5
+ > 关系:行为约束见 `docs/02-ai-contract.md`;门禁口径见 `docs/04-gates.md`。
6
+
7
+ ## 工作流
8
+
9
+ 1. 从 `main` 切分支:`feat/<主题>` / `fix/<主题>`。
10
+ 2. 开发完成后 `git rebase main`,再合并回 `main`;主分支不保留中间提交。
11
+ 3. 一次提交一件事;提交信息用 `type(scope): subject`,正文写「为什么」。
12
+
13
+ ## 改规则
14
+
15
+ - 先改本地底稿,确认后再改 `docs/`;不在本仓保留调研来源。
16
+ - 规则改动必须同时更新:规则正文、`evals/golden-tasks.md`、相关测试。
17
+ - 契约类改动(档位 / 命名 / 单位 / 角色)整族刷新,不做零散小改。
18
+
19
+ ## 验证
20
+
21
+ ```bash
22
+ node --test tests/*.test.mjs
23
+ node bin/codecraft.mjs check --root <项目>
24
+ ```
25
+
26
+ - 新增 / 修改规则必须补测试;没有反例的规则降级为「参考」。
27
+ - 不提交密钥、客户名、内部路径;发现疑似凭据立即停止并提示轮换。
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ultime contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,210 @@
1
- # Temporary Holding Version
1
+ # Codecraft(代码手艺)
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ > 语言无关的代码规范,作为可安装的 skill 包。
4
+ > 让 AI 和人在新项目、旧项目、评审中按同一套约束工作,并能按版本引入。
5
+
6
+ - 版本:`1.0.0`([VERSION](./VERSION))
7
+ - 许可:MIT([LICENSE](./LICENSE))
8
+ - 环境:Node.js >= 20;零运行时依赖
9
+ - 形态:规则文档 + 场景 + 适配器 + CLI + 脚手架
10
+
11
+ ## 这是什么
12
+
13
+ | 是 | 不是 |
14
+ |---|---|
15
+ | 一套可执行的代码宪法(A1–A21)与代码族卡 | 业务组件库 |
16
+ | 面向 AI 的固定入口与输出格式 | 某个框架的编码风格指南 |
17
+ | 通用规则的静态检查 + 项目门禁编排 | 替代 typecheck / 单测 / e2e |
18
+
19
+ 规则正文只在 [`docs/`](./docs/);其它位置只放入口与指针,避免第二份真源。
20
+
21
+ ## 快速开始
22
+
23
+ ### 1. 直接运行
24
+
25
+ ```bash
26
+ # 在 codecraft 目录内
27
+ node bin/codecraft.mjs check --root .
28
+
29
+ # 检查任意项目
30
+ node /path/to/codecraft/bin/codecraft.mjs check --root /path/to/project
31
+ ```
32
+
33
+ ### 2. 安装 / 运行
34
+
35
+ 包名 `@ultime/codecraft`,命令 `codecraft`。发布到 npm 后可直接运行:
36
+
37
+ ```bash
38
+ npx @ultime/codecraft check --root .
39
+ npx @ultime/codecraft@1.0.0 check --root .
40
+ ```
41
+
42
+ 安装为项目依赖:
43
+
44
+ ```bash
45
+ npm i -D @ultime/codecraft
46
+ npx codecraft check --root .
47
+ ```
48
+
49
+ 本地开发 / 未发布时用 tarball:
50
+
51
+ ```bash
52
+ npm pack
53
+ npm i -D /path/to/ultime-codecraft-1.0.0.tgz
54
+ npx codecraft check --root .
55
+ ```
56
+
57
+ 也可以直接 `pnpm link --global /path/to/codecraft`,之后在任意目录使用 `codecraft`。
58
+
59
+ ### 3. 接入 agent(作为 skill)
60
+
61
+ 适配器只做入口,不复制规则:
62
+
63
+ | 平台 | 入口文件 |
64
+ |---|---|
65
+ | 通用(读 `AGENTS.md`) | [`adapters/generic/AGENTS.md`](./adapters/generic/AGENTS.md) |
66
+ | Trae | [`adapters/trae/SKILL.md`](./adapters/trae/SKILL.md) |
67
+ | Claude | [`adapters/claude/SKILL.md`](./adapters/claude/SKILL.md) |
68
+
69
+ 推荐**指针式接入**——不复制规则,升级只需更新仓库:
70
+
71
+ - Trae:在项目 `.trae/rules/codecraft.md` 写一行「代码任务先读 `<本仓库绝对路径>/adapters/trae/SKILL.md`」。
72
+ - Claude:在 `~/.claude/CLAUDE.md` 或项目 `CLAUDE.md` 加同一行。
73
+ - 其他 agent:在项目 `AGENTS.md` 加同一行。
74
+
75
+ 如果确实要把 `SKILL.md` 复制到 agent 的 skills 目录,必须让 `docs/`、`scenarios/`、`prompts/` 与该文件保持 `../../` 的相对位置(符号链接即可),否则入口里的路径会失效。
76
+
77
+ ## 三种模式
78
+
79
+ | 模式 | 是否改文件 | 对应命令 |
80
+ |---|---|---|
81
+ | **Audit(审计)** | 否 | `check` / `audit` |
82
+ | **Plan(计划)** | 否 | `plan` |
83
+ | **Apply(执行)** | 是,需确认范围 | 人工按计划改;`init --apply` 只创建骨架 |
84
+
85
+ ## CLI
86
+
87
+ ```bash
88
+ codecraft <command> [options]
89
+ ```
90
+
91
+ | 命令 | 作用 |
92
+ |---|---|
93
+ | `check` | 只跑内置规则(默认命令) |
94
+ | `audit` | 内置规则 + `codecraft.config.json` 里的 gates,出只读报告 |
95
+ | `plan` | 把 findings 转成只读升级计划;默认不跑 gates |
96
+ | `init` | 生成 app / library 骨架;默认 dry-run |
97
+ | `version` | 输出版本号 |
98
+
99
+ ### 常用
100
+
101
+ ```bash
102
+ codecraft check --root .
103
+ codecraft check --pack library --root ../../packages/core
104
+ codecraft check --pack design-system
105
+ codecraft check --format json --ci
106
+ codecraft audit --severity error
107
+ codecraft audit --config codecraft.config.json --fail-fast
108
+ codecraft plan --root . --with-gates
109
+ codecraft init --root . --name demo # dry-run
110
+ codecraft init --root . --name demo --apply # 写盘
111
+ ```
112
+
113
+ ### 参数
114
+
115
+ | 参数 | 取值 | 默认 | 说明 |
116
+ |---|---|---|---|
117
+ | `--root <path>` | 目录 | `.` | 被检查的项目根 |
118
+ | `--pack <name>` | `app` / `library` / `design-system` / `auto` | `auto` | 规则包;CLI 优先于 config |
119
+ | `--config <path>` | 文件 | `codecraft.config.json` | 相对 `--root` |
120
+ | `--format <fmt>` | `md` / `json` | `md` | 输出格式 |
121
+ | `--severity <level>` | `warn` / `error` | `warn` | findings 的严重级别 |
122
+ | `--ci` | — | 关 | 等价于 `--severity error` |
123
+ | `--fail-fast` | — | 关 | gates 遇到第一个失败即停止 |
124
+ | `--no-gates` | — | 关 | `audit` 跳过 gates |
125
+ | `--with-gates` | — | 关 | `plan` 执行 gates |
126
+ | `--name <name>` | 字符串 | — | `init` 的 app / package 名称;`--apply` 时必填 |
127
+ | `--apply` | — | 关 | `init` 写盘;已存在路径跳过,不覆盖 |
128
+
129
+ ### 退出码
130
+
131
+ | 码 | 含义 |
132
+ |---|---|
133
+ | `0` | 通过;warning 不阻断 |
134
+ | `1` | 有 error findings,或有 gate 失败 |
135
+ | `2` | 用法错误、root 不存在、配置非法 |
136
+
137
+ ### 输出
138
+
139
+ - 默认 Markdown:头部元信息 + Findings 表 + Gates 表。
140
+ - `--format json`:包含 `version` / `mode` / `pack` / `rules` / `findings` / `plan` / `gates` / `summary`,用于 CI、趋势和两次运行 diff。
141
+ - 报告始终带版本号与规则 ID;`plan` 明确声明「No files were changed by this command.」。
142
+
143
+ ## Rule Packs
144
+
145
+ | Pack | 内置规则 | 检查范围 |
146
+ |---|---|---|
147
+ | `app` | A17 / A21 | `pages / components / behavior` 不 import `external/` / `generated/`;密钥扫描 |
148
+ | `library` | A2 / A11 / A21 | 包不 import app、相对路径不逃逸、workspace 依赖必须声明;生成物必须有“勿手改 / 派生”标记;密钥扫描 |
149
+ | `design-system` | A2 / A11 / A21 | library 规则 + 包内公开文档不得引用内部 `docs/` |
150
+
151
+ `--pack auto` 的判定顺序:
152
+
153
+ 1. 有 `apps/` 或 `src/pages` → `app`
154
+ 2. 有 `packages/` 或根 `package.json` → `library`
155
+ 3. 其余 → `app`
156
+
157
+ `design-system` 不参与自动判定,必须显式指定。
158
+
159
+ A4(单一收口)属于结构判断,由 review 与项目门禁负责,不由静态扫描替代。
160
+
161
+ ## 配置
162
+
163
+ 项目根放 `codecraft.config.json`(示例见 [`codecraft.config.example.json`](./codecraft.config.example.json)):
164
+
165
+ ```json
166
+ {
167
+ "pack": "auto",
168
+ "gates": [
169
+ { "name": "typecheck", "run": "pnpm typecheck", "timeoutMs": 120000 },
170
+ { "name": "kit", "run": "pnpm kit:check", "timeoutMs": 120000 }
171
+ ]
172
+ }
173
+ ```
174
+
175
+ - `pack`:`app` / `library` / `design-system` / `auto`。
176
+ - `gates`:数组;每项必须有一个非空的 `run` 字符串,可选 `name`、`timeoutMs`(默认 `120000`)。
177
+ - gate 在 `--root` 下通过 shell 执行,注入 `CI=1`;失败时报告尾部 40 行 / 4000 字符。
178
+ - `check` 不跑 gates;`audit` 默认跑;`plan` 只在 `--with-gates` 时跑。
179
+ - 通用规则内置,业务门禁只编排、不复制。构建指引见 [`docs/04-gates.md`](./docs/04-gates.md)。
180
+
181
+ ## 目录
182
+
183
+ ```text
184
+ docs/ 宪法、族卡、AI 契约、风格总图、模式、架构、门禁
185
+ scenarios/ 新项目 / 旧项目审计 / 只出报告 / 重构评审
186
+ adapters/ generic / Trae / Claude 入口
187
+ prompts/ 输出格式
188
+ src/ + bin/ CLI
189
+ tests/ node:test 用例
190
+ templates/ init --apply 的 app / library 骨架
191
+ evals/ golden tasks(人工回归)
192
+ ```
193
+
194
+ ## 版本与稳定承诺
195
+
196
+ - semver;当前 `1.0.0`。
197
+ - 规则 ID `A1–A21` 稳定;增删规则属于 minor 以上的变更。
198
+ - 报告始终携带版本号;跨版本对比以 JSON 为准。
199
+
200
+ ## 边界
201
+
202
+ - 静态检查是文本级:能覆盖高置信模式,可能漏报或误报;最终以项目门禁与 review 为准。
203
+ - 不内置任何业务规则、框架约定或公司内部门禁。
204
+ - 不读取、不上传代码;所有检查在本地完成。
205
+
206
+ ## 贡献与安全
207
+
208
+ - 贡献流程:[CONTRIBUTING.md](./CONTRIBUTING.md)
209
+ - 漏洞与密钥报告:[SECURITY.md](./SECURITY.md)
210
+ - 许可:MIT
package/SECURITY.md ADDED
@@ -0,0 +1,22 @@
1
+ # Security Policy(安全策略)
2
+
3
+ > 定位:漏洞与凭据泄露的报告方式;不在这里披露细节。
4
+ > 状态:现行(2026-10)。
5
+ > 关系:文档安全边界见 `docs/00-constitution.md` §3.6;AI 约束见 `docs/02-ai-contract.md`。
6
+
7
+ ## 报告
8
+
9
+ - 不要在公开 Issue 中粘贴密钥、令牌、客户数据或可利用细节。
10
+ - 通过仓库的私有安全通道联系维护者;没有通道时先开一个不含敏感信息的 Issue,说明「需要私下同步」。
11
+ - 报告请包含:受影响的版本、最小复现、影响面、建议修复方向。
12
+
13
+ ## 处理
14
+
15
+ 1. 维护者确认后先轮换已泄露的凭据,再修代码。
16
+ 2. 修复进入 `fix/<主题>` 分支,`rebase main` 后合并。
17
+ 3. 破坏性修复在 CHANGELOG 标注;需要时补回归测试。
18
+
19
+ ## 范围
20
+
21
+ - 本包是静态规则与 CLI,不执行网络请求;主要风险是密钥 / 隐私被写进规则、示例或报告。
22
+ - 依赖漏洞按 `npm audit` / 依赖升级处理,不在规则层重复实现。
package/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,10 @@
1
+ # Adapters(适配器)
2
+
3
+ Core 是 `docs/` + `scenarios/` + `scripts/`;adapters 只做入口,不复制规则。
4
+
5
+ - `generic/AGENTS.md`:任何读 `AGENTS.md` 的 agent
6
+ - `trae/SKILL.md`:Trae skill
7
+ - `claude/SKILL.md`:Claude skill
8
+ - 未来:Cursor / Copilot / Gemini 等
9
+
10
+ 规则:adapter 只写“读什么、按什么流程、输出什么”,规则正文留在 `docs/`。
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: codecraft
3
+ description: Language-agnostic code standard for designing, auditing, reviewing, and refactoring code. Use when the user asks to design a project architecture, audit an existing project, produce a code review, or scaffold code under a project's code constitution.
4
+ ---
5
+
6
+ # Codecraft(代码手艺)
7
+
8
+ ## 先读
9
+
10
+ 1. 项目 `AGENTS.md` / `rules/`
11
+ 2. `../../docs/00-constitution.md`
12
+ 3. 只读相关族卡:`../../docs/01-family-cards.md`
13
+ 4. 设计架构时:`../../docs/06-architecture.md`
14
+ 5. 需要选型时:`../../docs/05-patterns.md`
15
+ 6. 选场景:`../../scenarios/`
16
+
17
+ ## 模式
18
+
19
+ - **Audit(审计)**:只读,出报告。
20
+ - **Plan(计划)**:只读,出架构 / 升级计划。
21
+ - **Apply(执行)**:改代码 + 跑门禁。
22
+
23
+ ## 工作流
24
+
25
+ 1. 判定任务属于哪个场景。
26
+ 2. 只读相关族卡,不要一次加载全部。
27
+ 3. 先出计划;Apply 前确认范围。
28
+ 4. 跑项目验证命令;不能跑要说明原因。
29
+ 5. 按 `../../prompts/output.md` 输出。
30
+
31
+ ## 禁止
32
+
33
+ - Audit / Plan 模式改文件。
34
+ - 把业务逻辑放进 Transport 或 Page。
35
+ - 内部代码 import `external/` 或生成类型。
36
+ - 手改生成物。
37
+ - 写敏感信息;发现即停止、脱敏、提示轮换。
38
+ - 安全红线登记例外。
39
+
40
+ 规则正文只在 `docs/`;本文件只做入口。
@@ -0,0 +1,15 @@
1
+ # Codecraft Adapter(通用)
2
+
3
+ 当任务涉及写代码、重构、评审、审计或脚手架时:
4
+
5
+ 1. 读项目 `AGENTS.md` / `rules/`。
6
+ 2. 读 `../../docs/00-constitution.md`。
7
+ 3. 只读相关的族卡:`../../docs/01-family-cards.md`。
8
+ 4. 设计架构时读 `../../docs/06-architecture.md`。
9
+ 5. 需要选型时读 `../../docs/05-patterns.md`。
10
+ 6. 选一个场景:`../../scenarios/`。
11
+ 7. 按 `../../docs/02-ai-contract.md` 执行。
12
+ 8. 按 `../../prompts/output.md` 输出。
13
+ 9. Audit / Plan 模式禁止改文件;安全红线不可豁免。
14
+
15
+ 不要在这里复制规则;规则正文只在 `docs/`。
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: codecraft
3
+ description: Language-agnostic code standard for designing, auditing, reviewing, and refactoring code. Use when the user asks to design a project architecture, audit an existing project, produce a code review, or scaffold code under a project's code constitution.
4
+ ---
5
+
6
+ # Codecraft(代码手艺)
7
+
8
+ ## 先读
9
+
10
+ 1. 项目 `AGENTS.md` / `rules/`
11
+ 2. `../../docs/00-constitution.md`
12
+ 3. 只读相关族卡:`../../docs/01-family-cards.md`
13
+ 4. 设计架构时:`../../docs/06-architecture.md`
14
+ 5. 需要选型时:`../../docs/05-patterns.md`
15
+ 6. 选场景:`../../scenarios/`
16
+
17
+ ## 模式
18
+
19
+ - **Audit(审计)**:只读,出报告。
20
+ - **Plan(计划)**:只读,出架构 / 升级计划。
21
+ - **Apply(执行)**:改代码 + 跑门禁。
22
+
23
+ ## 工作流
24
+
25
+ 1. 判定任务属于哪个场景。
26
+ 2. 只读相关族卡,不要一次加载全部。
27
+ 3. 先出计划;Apply 前确认范围。
28
+ 4. 跑项目验证命令;不能跑要说明原因。
29
+ 5. 按 `../../prompts/output.md` 输出。
30
+
31
+ ## 禁止
32
+
33
+ - Audit / Plan 模式改文件。
34
+ - 把业务逻辑放进 Transport 或 Page。
35
+ - 内部代码 import `external/` 或生成类型。
36
+ - 手改生成物。
37
+ - 写敏感信息;发现即停止、脱敏、提示轮换。
38
+ - 安全红线登记例外。
39
+
40
+ 规则正文只在 `docs/`;本文件只做入口。
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { main } from '../src/cli.mjs'
3
+
4
+ process.exit(main(process.argv.slice(2)))
@@ -0,0 +1,15 @@
1
+ {
2
+ "pack": "auto",
3
+ "gates": [
4
+ {
5
+ "name": "typecheck",
6
+ "run": "pnpm typecheck",
7
+ "timeoutMs": 120000
8
+ },
9
+ {
10
+ "name": "kit",
11
+ "run": "pnpm kit:check",
12
+ "timeoutMs": 120000
13
+ }
14
+ ]
15
+ }