@icebreakers/monorepo-templates 0.1.15 → 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.
Files changed (80) hide show
  1. package/README.md +12 -0
  2. package/assets/.changeset/config.json +7 -2
  3. package/assets/.github/workflows/ci.yml +8 -2
  4. package/assets/.github/workflows/release.yml +2 -2
  5. package/assets/.husky/commit-msg +1 -1
  6. package/assets/.husky/pre-commit +1 -1
  7. package/assets/.husky/pre-push +5 -0
  8. package/assets/.vscode/settings.json +1 -6
  9. package/assets/AGENTS.md +8 -7
  10. package/assets/commitlint.config.ts +2 -2
  11. package/assets/eslint.config.js +2 -6
  12. package/assets/lint-staged.config.js +3 -0
  13. package/assets/package.json +39 -28
  14. package/assets/repoctl.config.ts +68 -0
  15. package/assets/stylelint.config.js +2 -2
  16. package/assets/tooling/ensure-tooling-built.mjs +24 -0
  17. package/assets/tooling/load-tooling-module.mjs +71 -0
  18. package/assets/tsconfig.json +1 -49
  19. package/assets/turbo.json +17 -6
  20. package/assets/vitest.config.ts +2 -125
  21. package/assets-data.mjs +4 -2
  22. package/dist/index.d.mts +22 -1
  23. package/dist/index.mjs +114 -30
  24. package/package.json +12 -8
  25. package/template-data.mjs +48 -8
  26. package/templates/client/eslint.config.js +6 -4
  27. package/templates/client/package.json +22 -22
  28. package/templates/client/vite.config.ts +4 -3
  29. package/templates/client/wrangler.jsonc +1 -6
  30. package/templates/server/package.json +4 -4
  31. package/templates/server/src/app.ts +4 -4
  32. package/templates/server/tsconfig.json +1 -2
  33. package/templates/server/vitest.config.ts +6 -5
  34. package/templates/server/wrangler.jsonc +1 -6
  35. package/templates/tsdown/package.json +2 -1
  36. package/templates/tsdown/test-d/index.test-d.ts +5 -0
  37. package/templates/tsdown/tsconfig.json +1 -2
  38. package/templates/tsdown/vitest.config.ts +6 -5
  39. package/templates/vitepress/.vitepress/config.ts +34 -36
  40. package/templates/vitepress/getting-started.md +243 -0
  41. package/templates/vitepress/gitignore +2 -1
  42. package/templates/vitepress/index.md +144 -79
  43. package/templates/vitepress/monorepo/commands.md +281 -0
  44. package/templates/vitepress/monorepo/index.md +103 -34
  45. package/templates/vitepress/monorepo/manage.md +181 -80
  46. package/templates/vitepress/monorepo/publish.md +128 -57
  47. package/templates/vitepress/monorepo/templates.md +67 -0
  48. package/templates/vitepress/monorepo/troubleshooting.md +207 -0
  49. package/templates/vitepress/package.json +5 -5
  50. package/templates/vitepress/thinking.md +1 -1
  51. package/templates/vitepress/tools/husky.md +7 -2
  52. package/templates/vitepress/tools/lint-staged.md +15 -1
  53. package/templates/vitepress/why/examples/usage-cjs/index.js +2 -6
  54. package/templates/vitepress/why/examples/usage-cjs/package-lock.json +7 -13
  55. package/templates/vitepress/why/examples/usage-cjs/package.json +2 -2
  56. package/templates/vitepress/why/examples/usage-esm/index.js +2 -2
  57. package/templates/vitepress/why/examples/usage-esm/package-lock.json +7 -13
  58. package/templates/vitepress/why/examples/usage-esm/package.json +2 -2
  59. package/templates/vitepress/why/modern/bundlers.md +8 -46
  60. package/templates/vue-lib/eslint.config.js +6 -4
  61. package/templates/vue-lib/package.json +17 -12
  62. package/templates/vue-lib/test-d/index.test-d.ts +6 -0
  63. package/templates/vue-lib/tsconfig.test.json +1 -1
  64. package/templates/vue-lib/vitest.config.ts +8 -5
  65. package/assets/monorepo.config.ts +0 -22
  66. package/assets/nano-staged.js +0 -18
  67. package/templates/tsup/build.config.ts +0 -24
  68. package/templates/tsup/package.json +0 -49
  69. package/templates/tsup/src/index.ts +0 -12
  70. package/templates/tsup/test/index.test.ts +0 -18
  71. package/templates/tsup/tsconfig.json +0 -15
  72. package/templates/tsup/tsup.config.ts +0 -18
  73. package/templates/tsup/vitest.config.ts +0 -15
  74. package/templates/unbuild/build.config.ts +0 -24
  75. package/templates/unbuild/package.json +0 -49
  76. package/templates/unbuild/src/index.ts +0 -9
  77. package/templates/unbuild/src/utils.ts +0 -5
  78. package/templates/unbuild/test/index.test.ts +0 -18
  79. package/templates/unbuild/tsconfig.json +0 -15
  80. package/templates/unbuild/vitest.config.ts +0 -15
@@ -4,124 +4,189 @@ layout: doc
4
4
 
5
5
  # icebreaker's monorepo 模板
6
6
 
7
- 整套模板围绕 **pnpm + Turborepo + TypeScript** 打造,帮助团队快速落地一个可维护、可编排、可持续迭代的 `monorepo` 工程。这里我们把使用方式拆成几个核心模块,方便你按需查阅。
7
+ 这套模板的目标很直接:用一套尽量短、尽量稳定的命令,把 `pnpm + Turborepo + TypeScript + 工程化校验 + changesets` 串成一个真正能落地的 monorepo 起步架子。
8
8
 
9
- ## 核心能力
9
+ 如果你只想知道最简单怎么用,先记住下面这 5 步。
10
10
 
11
- - **工作区管理**:`pnpm` workspace + Turborepo 任务编排,内置缓存和过滤能力。
12
- - **全链路 TypeScript**:所有模板(应用、类库、CLI)均使用 TS,并自带基础测试脚手架(`vitest`)。
13
- - **质量与规范**:集成 `eslint`、`stylelint`、`husky`、`commitlint`、`lint-staged`,开箱即用。
14
- - **自动化发布**:`changesets` + GitHub Actions + Dockerfile 模板,实现语义化发版和部署。
15
- - **命令行助手**:`@icebreakers/monorepo` CLI 提供创建、同步、升级、镜像等常用命令,可通过 `monorepo.config.ts` 自定义行为。
11
+ ## 先这样用
16
12
 
17
- ## 快速上手
13
+ ```bash
14
+ pnpm install
15
+ pnpm setup
16
+ pnpm doctor
17
+ pnpm new
18
+ pnpm check
19
+ ```
20
+
21
+ - `pnpm install`:安装整个 workspace 的依赖。
22
+ - `pnpm setup`:同步当前仓库推荐的基础元信息和工具链配置。
23
+ - `pnpm doctor`:检查你是不是站在正确的仓库根目录、Node 版本对不对、根脚本齐不齐、配置文件有没有冲突、提交链路是否完整。
24
+ - `pnpm new`:创建一个新的 package 或 app。
25
+ - `pnpm check`:执行推荐的本地校验,适合提交前快速确认。
26
+
27
+ > 模板生成后的仓库优先推荐使用这些根脚本;底层实际对应的还是 `repo` CLI。`repoctl` 和 `@icebreakers/monorepo` 继续兼容,但不再是主文档入口。
28
+
29
+ ## 最小心智模型
30
+
31
+ 这个模板故意只保留三层命令入口:
32
+
33
+ | 层级 | 推荐写法 | 适合什么场景 |
34
+ | -------- | -------------------------------------------------------- | ---------------------------------------- |
35
+ | 根脚本 | `pnpm setup` / `pnpm new` / `pnpm doctor` / `pnpm check` | 新人日常使用,最短、最不容易记错 |
36
+ | 主 CLI | `pnpm exec repo ...` | 需要明确调用 CLI,或仓库还没同步根脚本时 |
37
+ | 分组命令 | `repo ws up` / `repo tg init` / `repo skills sync` | 已经熟悉命令体系,想走更细粒度入口 |
38
+
39
+ 简单理解:
40
+
41
+ - 想上手,用 `pnpm ...`
42
+ - 想看清楚实际做的是哪个命令,用 `repo ...`
43
+ - 想做高级操作,再看分组命令
44
+
45
+ ## 最常用的命令
46
+
47
+ ### 1. 仓库初始化与新建
48
+
49
+ ```bash
50
+ pnpm setup
51
+ pnpm new my-package
52
+ pnpm new my-app --template client
53
+ ```
54
+
55
+ - `setup` 是老仓库接入模板标准资产的第一步。
56
+ - `new` 支持交互式选择,也支持 `--template` 直接指定模板。
57
+ - 如果在 `repoctl.config.ts` 中设置了 `commands.create.defaultTemplate`,那么 `repo new foo` 会直接创建,不再多问一次模板。
58
+
59
+ ### 2. 诊断、校验、同步
60
+
61
+ ```bash
62
+ pnpm doctor
63
+ pnpm check
64
+ pnpm exec repo upgrade
65
+ ```
18
66
 
19
- 1. **拉取模板**:[GitHub](https://github.com/sonofmagic/monorepo-template) 右上角 `Use this template`,或克隆源码。
20
- 2. **安装依赖**:在 `pnpm-workspace.yaml` 所在目录执行 `pnpm install`(需要 Node.js ≥ 20,推荐 `npm i -g pnpm`)。
21
- 3. **可选清理**:直接运行 `npx -y @icebreakers/monorepo@latest clean` 远程执行清理,移除演示包后再执行 `pnpm install`(避免依赖本地构建 `monorepo`);如已安装依赖,也可使用 `pnpm script:clean`。
22
- 4. **初始化元数据**:`pnpm script:init` 会批量更新 `package.json`、`README.md` 等公共信息。
67
+ - `doctor` 看“仓库能不能顺利开始使用”
68
+ - `check` 看“当前改动能不能顺利提交”
69
+ - `upgrade` 看“模板最新的标准资产要不要同步进来”
23
70
 
24
- ## 仓库结构速览
71
+ 这三个命令不要混着理解:
25
72
 
26
- | 目录 | 描述 |
27
- | --------------------- | -------------------------------- |
28
- | `templates/cli` | TypeScript 编写的 CLI 模板 |
29
- | `templates/client` | Vue 3 + Vite 客户端示例 |
30
- | `templates/server` | 基于 Hono 的服务端模板 |
31
- | `templates/vitepress` | VitePress 文档站(即本网站源码) |
32
- | `templates/tsup` | 使用 `tsup` 打包的库模板 |
33
- | `templates/unbuild` | 使用 `unbuild` 打包的库模板 |
34
- | `templates/vue-lib` | Vue 组件库模板 |
35
- | `packages/monorepo` | CLI 及配置同步工具,支持独立升级 |
73
+ | 命令 | 解决的问题 |
74
+ | --------- | ---------------------------------------------------- |
75
+ | `doctor` | 当前目录是不是一个正确、完整、可用的 monorepo 根目录 |
76
+ | `check` | 当前提交前校验是否能过 |
77
+ | `upgrade` | 我要不要把最新模板里的脚本、配置、工作流同步过来 |
36
78
 
37
- ## 常用脚本
79
+ ## 你现在拿到的基础架子
38
80
 
39
- | 命令 | 说明 |
40
- | -------------------- | --------------------------------------------------- |
41
- | `pnpm script:clean` | 清理演示仓库,保留最小模板 |
42
- | `pnpm script:init` | 同步初始化 `package.json`、`README.md` 等基础信息 |
43
- | `pnpm script:sync` | 使用 `cnpm` 同步所有包到 npmmirror(需预装 `cnpm`) |
44
- | `pnpm script:mirror` | 为 VS Code 终端写入国内镜像环境变量 |
81
+ | 目录 | 作用 |
82
+ | --------------------- | ---------------------------------------------- |
83
+ | `templates/cli` | TypeScript CLI 模板 |
84
+ | `templates/client` | Vue 3 + Vite 客户端模板 |
85
+ | `templates/server` | Hono 服务端模板 |
86
+ | `templates/tsdown` | 使用 `tsdown` 的 TypeScript 类库模板 |
87
+ | `templates/vue-lib` | Vue 组件库模板 |
88
+ | `templates/vitepress` | 文档站模板 |
89
+ | `packages/monorepo` | 真正的 CLI 核心实现、升级逻辑、tooling wrapper |
90
+ | `packages/repoctl` | 面向使用者的默认包名与入口封装 |
45
91
 
46
- 更多脚本可在根目录 `package.json` 中查看,命令介绍详见 [工具区](./tools/turborepo.md)。
92
+ ## 推荐上手路径
47
93
 
48
- ## CLI 命令概览
94
+ ### 场景 1:你刚用模板创建了一个新仓库
49
95
 
50
96
  ```bash
51
- npx monorepo new # 创建子包/应用
52
- npx -y @icebreakers/monorepo@latest clean # 远程清理已勾选的子项目,避免依赖本地构建
53
- npx monorepo sync # 同步所有包到 npmmirror
54
- npx monorepo mirror # 写入 VS Code 镜像配置
55
- npx monorepo up # 从最新模板同步配置文件
56
- npx monorepo ai create # 生成 Agentic 任务提示词模板(支持输出到文件,可用别名 ai new)
97
+ pnpm install
98
+ pnpm doctor
99
+ pnpm new
100
+ pnpm check
101
+ pnpm build
57
102
  ```
58
103
 
59
- 示例:`npx monorepo ai create -o agentic-task.md -f`,可直接生成 Markdown 模板并覆盖旧文件。默认会写入 `agentic/prompts/<timestamp>/prompt.md`,同时生成一个按时间排序的目录,并会提示你确认或修改目录名称,方便后续补充图片等素材;也可以用别名 `npx monorepo ai new`.
104
+ 这时通常不需要先跑 `upgrade`,因为模板本身已经是新生成的。
105
+
106
+ ### 场景 2:你把 `repoctl` 接进一个已有仓库
107
+
108
+ ```bash
109
+ pnpm install
110
+ pnpm exec repo setup
111
+ pnpm exec repo doctor
112
+ pnpm exec repo upgrade
113
+ pnpm exec repo doctor
114
+ ```
115
+
116
+ 这里先 `doctor` 一次,是为了看现在缺什么;`upgrade` 之后再跑一次,可以确认问题是不是已经被修平。
117
+
118
+ ## 配置文件约定
119
+
120
+ 推荐只使用一个配置文件:
121
+
122
+ ```txt
123
+ repoctl.config.ts
124
+ ```
60
125
 
61
- 多文件场景:
126
+ 兼容旧文件名:
62
127
 
63
- - `npx monorepo ai create --name checkout` 自动落盘到 `agentic/prompts/checkout.md`(默认目录可改)。
64
- - `npx monorepo ai create --tasks agentic/tasks.json -f` 读取 JSON 数组批量生成,适合多人协作收口任务。
128
+ ```txt
129
+ monorepo.config.ts
130
+ ```
65
131
 
66
- 所有命令都支持在 `monorepo.config.ts` 中覆写默认行为,例如新增模板、修改同步命令、跳过 README 初始化等。配置示例见下文和 [配置中心说明](./monorepo/manage.md#使用-monorepo-configts-定制命令行为)。
132
+ 但两者不能同时存在。现在 CLI 会明确拒绝加载冲突配置,`repo doctor` 也会直接把这个问题标红。
67
133
 
68
- ## 自定义配置:`monorepo.config.ts`
134
+ 最小示例:
69
135
 
70
136
  ```ts
71
- import { defineMonorepoConfig } from '@icebreakers/monorepo'
137
+ import { defineMonorepoConfig } from 'repoctl'
72
138
 
73
139
  export default defineMonorepoConfig({
74
140
  commands: {
75
- ai: {
76
- baseDir: 'agentic/custom-prompts',
77
- format: 'json',
78
- force: true,
79
- tasksFile: 'agentic/tasks.json',
80
- },
81
141
  create: {
82
- defaultTemplate: 'cli',
83
- renameJson: true,
84
- },
85
- clean: {
86
- autoConfirm: true,
87
- ignorePackages: ['docs'],
142
+ defaultTemplate: 'tsdown',
88
143
  },
89
144
  upgrade: {
90
145
  skipOverwrite: true,
91
- targets: ['.github', 'monorepo.config.ts'],
92
146
  },
93
147
  },
94
148
  })
95
149
  ```
96
150
 
97
- 更多可配置项详见 [管理指南](./monorepo/manage.md)。
151
+ ## 默认质量门禁
98
152
 
99
- ## 依赖与版本升级
153
+ 模板默认鼓励你走这条链路:
100
154
 
101
- ```bash
102
- pnpm up -rLi
103
- ```
155
+ 1. `pnpm build`
156
+ 2. `pnpm lint`
157
+ 3. `pnpm typecheck`
158
+ 4. `pnpm tsd`
159
+ 5. `pnpm test`
160
+
161
+ 如果仓库保留了默认的 `.husky` 与 `lint-staged.config.js`:
104
162
 
105
- - `-r`:递归遍历所有 workspace
106
- - `-L`:升级到最新版本
107
- - `-i`:交互式选择(推荐查看差异后再确认)
163
+ - `pre-commit` 会聚焦 staged 文件
164
+ - 样式文件会跑 `stylelint`
165
+ - JS / TS / Vue 会跑 `eslint`
166
+ - TS / Vue 相关文件会按 workspace 跑 `typecheck`
167
+ - `pre-push` 会补跑整仓的 `lint`、`typecheck`,以及受影响包的 `build` / `test` / `tsd`
108
168
 
109
- ## 自动化发布
169
+ ## 下一步看哪里
110
170
 
111
- 模板默认集成 [`changesets`](https://github.com/changesets/changesets) 与推荐的 GitHub Actions 工作流:
171
+ - 想理解为什么这套模板这样拆:[为什么往 monorepo 方向演进](./monorepo/index.md)
172
+ - 第一次接手仓库先看:[新手使用指南](./getting-started.md)
173
+ - 想看真实的日常管理方式:[如何管理 monorepo](./monorepo/manage.md)
174
+ - 想要最完整的命令速查:[命令速查](./monorepo/commands.md)
175
+ - 命令报错了怎么处理:[排障指南](./monorepo/troubleshooting.md)
176
+ - 要发包和生成 changelog:[发包与变更日志](./monorepo/publish.md)
112
177
 
113
- 1. 安装 [changeset-bot](https://github.com/apps/changeset-bot)。
114
- 2. 在仓库设置中开启 `Actions` 的 `Read and write permissions` 并勾选允许创建 PR。
115
- 3. 在 `Repository secrets` 中配置 `NPM_TOKEN`(若需要 Codecov 也可配置 `CODECOV_TOKEN`)。
116
- 4. 运行 `pnpm changeset`、`pnpm changeset version`、`pnpm changeset publish` 完成发布;或交由 CI 自动执行。
178
+ ## 兼容命令说明
117
179
 
118
- 具体操作指南参见 [发包流程](./monorepo/publish.md)。
180
+ 下面这些命令依然可用:
119
181
 
120
- ## 更多资源
182
+ ```bash
183
+ pnpm exec repoctl doctor
184
+ pnpm exec repoctl new
185
+ pnpm exec monorepo doctor
186
+ pnpm exec monorepo ws up
187
+ ```
121
188
 
122
- - [为什么选择 monorepo?](./monorepo/index.md)
123
- - [pnpm workspaces 与 Turborepo 组合的优势](./monorepo/manage.md)
124
- - [工具链介绍](./tools/turborepo.md)
125
- - [常见思考与 FAQ](./thinking.md)
189
+ 只是文档不再优先推荐它们。现在主入口统一收口到:
126
190
 
127
- > 欢迎结合自己的业务场景对模板做进一步裁剪与扩展,建议在自定义后保留 `monorepo.config.ts` 以便集中管理命令默认值。
191
+ - `repo`
192
+ - 以及生成仓库里的 `pnpm setup / pnpm new / pnpm doctor / pnpm check`
@@ -0,0 +1,281 @@
1
+ # 命令速查
2
+
3
+ 这一页只保留高频、实用、容易记错的命令。
4
+
5
+ ## 最推荐的入口
6
+
7
+ 在模板生成后的仓库里,优先使用根脚本:
8
+
9
+ ```bash
10
+ pnpm setup
11
+ pnpm doctor
12
+ pnpm new
13
+ pnpm check
14
+ ```
15
+
16
+ 对应关系如下:
17
+
18
+ | 根脚本 | 实际等价命令 |
19
+ | ------------- | ------------- |
20
+ | `pnpm setup` | `repo setup` |
21
+ | `pnpm doctor` | `repo doctor` |
22
+ | `pnpm new` | `repo new` |
23
+ | `pnpm check` | `repo check` |
24
+
25
+ ## 上手四连
26
+
27
+ ### 新仓库
28
+
29
+ ```bash
30
+ pnpm install
31
+ pnpm doctor
32
+ pnpm new
33
+ pnpm check
34
+ ```
35
+
36
+ ### 存量仓库接入
37
+
38
+ ```bash
39
+ pnpm install
40
+ pnpm exec repo setup
41
+ pnpm exec repo doctor
42
+ pnpm exec repo upgrade
43
+ pnpm exec repo doctor
44
+ ```
45
+
46
+ ## 顶层命令
47
+
48
+ ### `repo setup`
49
+
50
+ ```bash
51
+ repo setup
52
+ repo setup --preset minimal
53
+ repo setup --preset standard --force
54
+ ```
55
+
56
+ 用途:
57
+
58
+ - 初始化当前 workspace 的推荐默认值
59
+ - 同步 README / package.json / changeset / tooling 相关基础资产
60
+
61
+ ### `repo doctor`
62
+
63
+ ```bash
64
+ repo doctor
65
+ repo doctor --strict
66
+ repo doctor --json
67
+ repo doctor --json --out reports/doctor.json
68
+ repo doctor --markdown --out reports/doctor.md
69
+ repo doctor --markdown --redact --out reports/doctor.md
70
+ ```
71
+
72
+ 用途:
73
+
74
+ - 诊断当前目录是不是可直接开始使用的 monorepo 根目录
75
+ - 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、配置冲突、提交链路
76
+ - `--strict` 会把 warning 也视为失败,适合 CI 门禁或团队模板验收
77
+ - `--json` 只输出结构化报告,适合 CI、脚本和编辑器集成
78
+ - `--markdown` 输出适合贴到 issue / PR 的摘要报告
79
+ - `--redact` 会脱敏 workspace / cwd / home 绝对路径,适合发给外部协作者
80
+ - `--out <file>` 把文本、JSON 或 Markdown 报告写入文件,仍会按 blocking issue 返回非零状态
81
+
82
+ ### `repo new`
83
+
84
+ ```bash
85
+ repo new
86
+ repo new sdk --template tsdown
87
+ repo new docs --template vitepress
88
+ repo new docs --template vitepress --dry-run
89
+ repo new docs --template vitepress --json
90
+ repo new docs --template vitepress --json --out plans/docs.json
91
+ ```
92
+
93
+ 用途:
94
+
95
+ - 交互式或直接创建新的 package / app
96
+ - `--dry-run` 只预览模板、目标目录、package 名称和输出文件,不写入磁盘
97
+ - `--json` 以结构化数据输出创建预览,隐含 `--dry-run`
98
+ - `--out <file>` 把当前创建预览写入文件,也隐含 `--dry-run`
99
+ - 显式传入的 `--template` 会先校验,拼错时会失败并提示相近模板 key
100
+
101
+ ### `repo templates`
102
+
103
+ ```bash
104
+ repo templates
105
+ repo templates tsdown
106
+ repo templates --category library
107
+ repo templates --check
108
+ repo templates --check --json
109
+ repo templates --json
110
+ repo templates --markdown
111
+ repo templates tsdown --markdown
112
+ repo templates --markdown --out docs/templates.md
113
+ ```
114
+
115
+ 用途:
116
+
117
+ - 查看内置模板 key、分类、默认生成目录和用途
118
+ - 传入模板 key 时查看单个模板详情
119
+ - `--check` 检查内置模板元数据、目录、package.json 和临时文件
120
+ - 在写自动化脚本时用 `--json` 获取结构化输出
121
+ - 用 `--markdown` 生成可直接放进文档的模板表格或详情页
122
+ - 用 `--out <file>` 把当前 JSON、Markdown 或文本输出写入文件
123
+
124
+ ### `repo check`
125
+
126
+ ```bash
127
+ repo check
128
+ repo check --staged
129
+ repo check --full
130
+ repo check --edit-file .git/COMMIT_EDITMSG
131
+ repo check --dry-run
132
+ repo check --json --out reports/check-plan.json
133
+ repo check --markdown --out reports/check-plan.md
134
+ repo check --markdown --redact --out reports/check-plan.md
135
+ ```
136
+
137
+ 用途:
138
+
139
+ - 运行推荐的本地校验入口
140
+ - `--staged` 偏 pre-commit
141
+ - `--full` 偏 pre-push
142
+ - `--edit-file` 用于 commit message 校验
143
+ - `--dry-run` 只预览将要执行的校验
144
+ - `--json` / `--out <file>` 输出校验计划,适合 CI、脚本和编辑器集成
145
+ - `--markdown` 输出适合贴到 PR / issue 的校验计划摘要
146
+ - `--redact` 会脱敏 cwd / home 绝对路径,适合发给外部协作者
147
+
148
+ ### `repo upgrade`
149
+
150
+ ```bash
151
+ repo upgrade
152
+ repo upgrade --core
153
+ repo upgrade -i
154
+ repo upgrade -s
155
+ ```
156
+
157
+ 用途:
158
+
159
+ - 同步仓库标准资产与脚本
160
+
161
+ 常见参数:
162
+
163
+ - `--core`:只同步核心配置,跳过 GitHub 相关资产
164
+ - `-i`:交互式选择
165
+ - `-s`:跳过新增,只覆盖已存在文件
166
+
167
+ ### 兼容命令
168
+
169
+ ```bash
170
+ repo sync
171
+ repo clean --yes
172
+ repo mirror
173
+ ```
174
+
175
+ - `sync`:兼容入口,本质上仍是升级同步
176
+ - `clean`:清理选中的 workspace 包
177
+ - `mirror`:设置 VS Code 相关镜像环境变量
178
+
179
+ ## 分组命令
180
+
181
+ ### workspace / ws
182
+
183
+ ```bash
184
+ repo workspace upgrade
185
+ repo ws up
186
+ repo workspace init
187
+ repo ws ls
188
+ repo ws ls --json --out reports/workspaces.json
189
+ repo ws ls --markdown --redact --out reports/workspaces.md
190
+ repo workspace clean --yes
191
+ ```
192
+
193
+ ### tooling / tg
194
+
195
+ ```bash
196
+ repo tooling init eslint vitest
197
+ repo tg init --all --force
198
+ ```
199
+
200
+ ### package / pkg
201
+
202
+ ```bash
203
+ repo package create
204
+ repo pkg new
205
+ ```
206
+
207
+ ### verify / v
208
+
209
+ ```bash
210
+ repo verify pre-commit
211
+ repo verify pre-push
212
+ repo verify commit-msg .git/COMMIT_EDITMSG
213
+ repo verify staged-typecheck packages/app/src/main.ts
214
+ ```
215
+
216
+ ### env / e
217
+
218
+ ```bash
219
+ repo env info
220
+ repo e i --json --out reports/env.json
221
+ repo e i --markdown --redact --out reports/env.md
222
+ repo env snapshot --json --out reports/snapshot.json
223
+ repo env snapshot --markdown --redact --out reports/snapshot.md
224
+ repo env snapshot --markdown --redact --strict --out reports/snapshot.md
225
+ repo env paths --json --out reports/paths.json
226
+ repo env paths --markdown --redact --out reports/paths.md
227
+ repo env support --json --out reports/support.json
228
+ repo env support --json --redact --out reports/support.json
229
+ repo env support --markdown --redact --out reports/support.md
230
+ repo env support --markdown --redact --strict --out reports/support.md
231
+ repo env mirror
232
+ ```
233
+
234
+ ### config / cfg
235
+
236
+ ```bash
237
+ repo config inspect
238
+ repo cfg i --json --out reports/config.json
239
+ repo cfg i --markdown --redact --out reports/config.md
240
+ ```
241
+
242
+ ### skills / sk
243
+
244
+ ```bash
245
+ repo skills sync --codex
246
+ repo sk s --claude
247
+ ```
248
+
249
+ ### ai / ai p
250
+
251
+ ```bash
252
+ repo ai prompt create --name checkout
253
+ repo ai p new
254
+ repo ai prompt create --tasks agentic/tasks.json -f
255
+ ```
256
+
257
+ ## `repo`、`repoctl`、`monorepo` 的关系
258
+
259
+ 三者共用同一套 CLI 实现:
260
+
261
+ ```bash
262
+ repo doctor
263
+ repoctl doctor
264
+ monorepo doctor
265
+ ```
266
+
267
+ 都能用,但推荐顺序是:
268
+
269
+ 1. `pnpm setup / doctor / new / check`
270
+ 2. `repo ...`
271
+ 3. `repoctl ...` 或 `monorepo ...` 仅作为兼容入口
272
+
273
+ ## 什么时候用哪个命令
274
+
275
+ | 你的问题 | 先用什么 |
276
+ | -------------------------- | -------------- |
277
+ | 仓库是不是搭对了 | `repo doctor` |
278
+ | 我现在这次改动能不能过校验 | `repo check` |
279
+ | 我要补齐模板最新脚本和配置 | `repo upgrade` |
280
+ | 我要新增一个子包 | `repo new` |
281
+ | 我要直接操作更细的模块 | 分组命令 |