Skip to content

Commit 3b6cbeb

Browse files
Timerclaude
andauthored
ci: add manifest-drift gate + correct stale generated artifacts (#103)
* ci: add manifest-drift gate and correct stale generated artifacts The committed skill-manifest.json had drifted from its source: the `workflow` skill carried 11 path patterns (**/chain-engine*, **/orchestrat*, **/escalation*, etc.) that were deliberately removed from skills/workflow/ SKILL.md in 498c263 ("fixing strict workflow skill detection"). They were silently reintroduced into the manifest in 5641bff (#94), which regenerated the manifest on a branch predating that removal. The skill-catalog.md had the same workflow drift plus a stale vercel-connect entry. Root cause: CI runs `bun run build` (which regenerates the manifest into the working tree) and then tests against that fresh copy — it never verifies the *committed* manifest matches source, so a stale committed manifest passes. Fix: - Add `--check` to scripts/build-manifest.ts: rebuilds in-memory and compares to the committed file (normalizing the volatile generatedAt timestamp), exiting non-zero on drift. Exposed as `bun run build:manifest:check`. - Wire build:manifest:check (and the existing build:from-skills:check) into CI *before* the build step, so they validate the committed artifacts on the pristine tree rather than after build clobbers them. - Regenerate skill-manifest.json and skill-catalog.md to heal the drift. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix: sort skill directory scan for deterministic manifest across platforms scanSkillsDir() iterated readdirSync() output directly, whose order is filesystem-dependent — roughly alphabetical on macOS/APFS but arbitrary on Linux/ext4. The committed manifest was therefore generated in macOS order, and build:manifest:check failed on the Linux CI runner because a fresh build produced the same skills in a different key order (CI run on #103). Sort the entries so manifest/catalog generation is byte-identical on every platform. Regenerates skill-manifest.json and skill-catalog.md into sorted order (one-time reordering churn; no semantic change). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 5f3f0ad commit 3b6cbeb

7 files changed

Lines changed: 3626 additions & 3602 deletions

File tree

.github/workflows/ci.yml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ jobs:
2020
- name: Install dependencies
2121
run: bun install --frozen-lockfile
2222

23+
# Verify committed generated artifacts match their sources BEFORE the
24+
# build step regenerates (and thus clobbers) them in the working tree.
25+
- name: Check committed manifest is up-to-date
26+
run: bun run build:manifest:check
27+
28+
- name: Check generated files are up-to-date
29+
run: bun run build:from-skills:check
30+
2331
- name: Build
2432
run: bun run build
2533

@@ -29,8 +37,5 @@ jobs:
2937
- name: Validate skills
3038
run: bun run validate
3139

32-
- name: Check generated files are up-to-date
33-
run: bun run build:from-skills:check
34-
3540
- name: Test
3641
run: bun test

generated/skill-catalog.md

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Skill Catalog
22

33
> Auto-generated by `scripts/generate-catalog.ts` — do not edit manually.
4-
> Generated: 2026-06-09T19:40:07.166Z
4+
> Generated: 2026-06-26T18:59:09.655Z
55
> Skills: 28
66
77
## Table of Contents
@@ -16,7 +16,7 @@
1616
| Skill | Priority | Path Patterns | Bash Patterns | Import Patterns |
1717
|-------|----------|---------------|---------------|-----------------|
1818
| `knowledge-update` | 10 | 1 | 0 | 0 |
19-
| `workflow` | 9 | 17 | 14 | 4 |
19+
| `workflow` | 9 | 6 | 14 | 4 |
2020
| `ai-sdk` | 8 | 27 | 11 | 2 |
2121
| `bootstrap` | 8 | 10 | 6 | 8 |
2222
| `chat-sdk` | 8 | 45 | 12 | 2 |
@@ -36,7 +36,7 @@
3636
| `runtime-cache` | 6 | 4 | 4 | 0 |
3737
| `shadcn` | 6 | 7 | 6 | 0 |
3838
| `nextjs` | 5 | 15 | 7 | 0 |
39-
| `vercel-connect` | 5 | 0 | 6 | 3 |
39+
| `vercel-connect` | 5 | 2 | 6 | 4 |
4040
| `react-best-practices` | 4 | 8 | 0 | 2 |
4141
| `turbopack` | 4 | 1 | 2 | 0 |
4242
| `vercel-agent` | 4 | 6 | 1 | 0 |
@@ -60,17 +60,6 @@
6060
- `src/lib/workflow.*`
6161
- `workflow.*`
6262
- `*workflow*`
63-
- `**/chain-engine*`
64-
- `**/chain_engine*`
65-
- `**/chainEngine*`
66-
- `**/pipeline-engine*`
67-
- `**/pipeline_engine*`
68-
- `**/pipelineEngine*`
69-
- `**/state-machine*`
70-
- `**/state_machine*`
71-
- `**/stateMachine*`
72-
- `**/orchestrat*`
73-
- `**/escalation*`
7463

7564
**Bash patterns:**
7665
- `\bnpm\s+(install|i|add)\s+[^\n]*@vercel/workflow\b`
@@ -764,6 +753,10 @@
764753

765754
#### `vercel-connect` (priority 5)
766755

756+
**Path patterns:**
757+
- `agent/connections/**`
758+
- `agent/channels/**`
759+
767760
**Bash patterns:**
768761
- `\bvercel\s+connect\b`
769762
- `\bvc\s+connect\b`
@@ -774,6 +767,7 @@
774767

775768
**Import patterns:**
776769
- `@vercel/connect`
770+
- `@vercel/connect/eve`
777771
- `@vercel/connect/authjs`
778772
- `@vercel/connect/betterauth`
779773

0 commit comments

Comments
 (0)