Skip to content

Commit 0093497

Browse files
committed
feat: The version synchronization and skills generation are executed in the pre-commit hook
1 parent d75ddb4 commit 0093497

10 files changed

Lines changed: 34 additions & 16 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,9 @@ jobs:
2525

2626
- run: pnpm install --frozen-lockfile
2727

28-
- run: pnpm -r --filter "./packages/*" build
28+
- run: pnpm run sync:skill-assets
2929

30-
- name: Verify generated skill assets are committed
31-
run: |
32-
if ! git diff --exit-code -- skills/bailian-cli/SKILL.md skills/bailian-cli/reference/; then
33-
echo "::error::skills/bailian-cli/SKILL.md or reference/ differs from build output."
34-
echo "Run: pnpm --filter bailian-cli run build"
35-
echo "Then commit the updated files."
36-
exit 1
37-
fi
30+
- run: pnpm -r --filter "./packages/*" build
3831

3932
- run: pnpm run check
4033

.vite-hooks/pre-commit

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
1+
#!/usr/bin/env sh
2+
set -eu
3+
4+
# Regenerate skill reference + SKILL metadata (needs bailian-cli-core dist).
5+
pnpm run sync:skill-assets
6+
7+
# Stage generator output so it is included in this commit.
8+
git add skills/bailian-cli/reference skills/bailian-cli/SKILL.md
9+
110
vp staged

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ packages/cli/
2525
└── tests/e2e/
2626
```
2727

28-
Skill / 命令手册随 `skills/bailian-cli/``npx skills add modelstudioai/cli` 安装。`tools/generate-reference.ts``catalog.ts` 生成命令手册到 `skills/bailian-cli/reference/`(纳入 git)。
28+
Skill / 命令手册随 `skills/bailian-cli/``npx skills add modelstudioai/cli` 安装。`tools/generate-reference.ts``catalog.ts` 生成命令手册到 `skills/bailian-cli/reference/`(纳入 git);与 `tools/sync-skill-metadata.ts` 一起在 **pre-commit**`.vite-hooks/pre-commit`)及根脚本 `pnpm run sync:skill-assets` 中执行
2929

3030
非代码资产:
3131

3232
- `tools/release/` — 发版自动化(CI 驱动,见 `.github/workflows/publish.yml`
3333
- `tools/generate-reference.ts` — 从 `catalog.ts` 生成命令手册到 `skills/bailian-cli/reference/`
34-
- `tools/sync-skill-metadata.ts` — 从 `packages/cli/package.json` 同步 `skills/bailian-cli/SKILL.md``metadata.version``pnpm --filter bailian-cli run build` 时自动执行
34+
- `tools/sync-skill-metadata.ts` — 从 `packages/cli/package.json` 同步 `skills/bailian-cli/SKILL.md``metadata.version``generate:reference` 一并由根目录 `pnpm run sync:skill-assets` 及 pre-commit 执行
3535
- `README.md` / `README_CN.md` — npm 和 GitHub 主页
3636

3737
约定:

docs/agents/command-add-remove.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ registry.ts main.ts tools/generate-reference.ts export-schema.ts
4040
- **`packages/cli/src/commands/catalog.ts`**: `import` 命令模块 + `"<path>": handler` 映射;**** `import registry.ts`(避免构建时循环依赖)
4141
- **`packages/cli/src/commands/index.ts`**: `export { commands } from "./catalog.ts"`(给包内 re-export 用)
4242
- **`packages/cli/src/registry.ts`**: `import { commands } from "./commands/catalog.ts"`,建树、`resolve``printHelp`;Commands / Global Flags 从 `Command` 元数据与 `GLOBAL_OPTIONS` **动态生成**
43-
- **`tools/generate-reference.ts`**: build 前读 `catalog.ts`,写 `skills/bailian-cli/reference/index.md`(索引) + `skills/bailian-cli/reference/<一级命令>.md`(详情,勿手改)。该目录**纳入 git**,随 `npx skills add modelstudioai/cli` 分发
43+
- **`tools/generate-reference.ts`**: pre-commit / `pnpm run sync:skill-assets` 时读 `catalog.ts`,写 `skills/bailian-cli/reference/index.md`(索引) + `skills/bailian-cli/reference/<一级命令>.md`(详情,勿手改)。该目录**纳入 git**,随 `npx skills add modelstudioai/cli` 分发
4444

4545
已删除、勿再引用:`commands/help.ts``registry.ts` 内联 `new CommandRegistry({...})``printRootHelp` 手写命令行。
4646

@@ -59,7 +59,7 @@ registry.ts main.ts tools/generate-reference.ts export-schema.ts
5959

6060
### B. 文档层
6161

62-
- [ ] 运行 `pnpm --filter bailian-cli run generate:reference`(或 `build`),刷新 `skills/bailian-cli/reference/` 下生成文件并提交
62+
- [ ] 运行 `pnpm run sync:skill-assets`(或正常 `git commit` 走 pre-commit),刷新 `skills/bailian-cli/reference/` `SKILL.md``metadata.version` 并提交
6363
- [ ] `README.md` / `README_CN.md`: Quick Start、命令一览(用户向,与 help 对齐即可)
6464
- [ ] `skills/bailian-cli/SKILL.md`: 若安装说明或能力边界有变,同步更新
6565

@@ -80,7 +80,7 @@ registry.ts main.ts tools/generate-reference.ts export-schema.ts
8080
## 完成后自查
8181

8282
```sh
83-
pnpm --filter bailian-cli run generate:reference # reference/ 与 catalog 一致
83+
pnpm run sync:skill-assets # reference/ + SKILL metadata.version 与 catalog / package.json 一致
8484
node packages/cli/src/main.ts <new-command> --help
8585
node packages/cli/src/main.ts # 根 help 列表含新命令
8686
vp test packages/cli/tests/e2e/<topic>.e2e.test.ts # 相关 e2e

docs/agents/lint-toolchain.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
- [ ] `.vite-hooks/pre-commit` 改动后,`pnpm install` 重新软链(走 `prepare: vp config`)
4242
- [ ] 增加 hook 时,确认在干净 clone 后能自动激活
43+
- [ ] pre-commit 会跑 `pnpm run sync:skill-assets`(先 build core,再 `generate:reference` + `sync:skill-version`)并 `git add` skill 资产,最后 `vp staged`
4344

4445
### F. CI / 发版工具
4546

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"ready": "vp check && vp run -r test && vp run -r build",
1717
"prepare": "vp config",
1818
"check": "vp check",
19+
"sync:skill-assets": "pnpm --filter bailian-cli-core run build && pnpm --filter bailian-cli run generate:reference && pnpm --filter bailian-cli run sync:skill-version",
1920
"dev": "pnpm -F bailian-cli-core dev",
2021
"bl": "pnpm -F bailian-cli dev",
2122
"test": "vp test",

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"scripts": {
3939
"generate:reference": "node --experimental-strip-types ../../tools/generate-reference.ts && sh -c 'cd ../.. && vp check --fix skills/bailian-cli/reference'",
4040
"sync:skill-version": "node --experimental-strip-types ../../tools/sync-skill-metadata.ts",
41-
"build": "pnpm run generate:reference && pnpm run sync:skill-version && vp pack",
41+
"build": "vp pack",
4242
"dev": "node src/main.ts",
4343
"test": "vp test",
4444
"check": "vp check"

tools/generate-reference.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* Committed to git; consumed by the `bailian-cli` Agent Skill (`npx skills add modelstudioai/cli`).
77
*
88
* Run: pnpm --filter bailian-cli run generate:reference
9+
* (Also run via `pnpm run sync:skill-assets` or the repo pre-commit hook; requires built `bailian-cli-core`.)
910
*/
1011
import { mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
1112
import { dirname, join } from "node:path";

tools/release/check.mjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ export async function runCheck() {
3030
step("build bailian-cli-core");
3131
run("pnpm", ["--filter", "bailian-cli-core", "run", "build"]);
3232

33+
step("generate skill reference + sync SKILL.md version");
34+
run("pnpm", ["--filter", "bailian-cli", "run", "generate:reference"]);
35+
run("pnpm", ["--filter", "bailian-cli", "run", "sync:skill-version"]);
36+
37+
step("verify committed skill assets match generators");
38+
run("git", [
39+
"diff",
40+
"--exit-code",
41+
"--",
42+
"skills/bailian-cli/SKILL.md",
43+
"skills/bailian-cli/reference/",
44+
]);
45+
3346
step("build bailian-cli");
3447
run("pnpm", ["--filter", "bailian-cli", "run", "build"]);
3548

tools/sync-skill-metadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* `packages/cli/package.json` (single source of truth for CLI release version).
44
*
55
* Run: pnpm --filter bailian-cli run sync:skill-version
6-
* Invoked automatically by `pnpm --filter bailian-cli run build`.
6+
* Invoked via `pnpm run sync:skill-assets` or the repo pre-commit hook (see `.vite-hooks/pre-commit`).
77
*/
88
import { readFileSync, writeFileSync } from "node:fs";
99
import { dirname, join } from "node:path";

0 commit comments

Comments
 (0)