@evo-dev/evodev 0.0.1-alpha.3 → 0.0.1-alpha.5

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.
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: evodev-release
3
+ description: Use this skill for EvoDev repository commit and release work: committing local changes, bumping to the next alpha or named version, creating and pushing release tags, triggering GitHub Actions release.yml, publishing @evo-dev/core and @evo-dev/evodev, fixing failed npm trusted-publishing runs, or checking npm dist-tags. Always use this skill when the user says to commit, push, tag, release, publish, bump alpha, or repair the EvoDev release workflow.
4
+ ---
5
+
6
+ # EvoDev Release
7
+
8
+ This skill captures the working EvoDev commit and release path for `/Users/bytedance/project/github/evodev`.
9
+
10
+ EvoDev releases are GitHub Actions driven. Do not run local `npm publish` or `bun publish` unless the user explicitly asks for a local experiment. The normal path is: inspect diff, verify, commit, sync version, commit release, push `main`, push or dispatch release, watch CI, then confirm npm registry state.
11
+
12
+ ## Current Release Model
13
+
14
+ - GitHub workflow: `.github/workflows/release.yml`.
15
+ - Publish target packages: `@evo-dev/core` and `@evo-dev/evodev`.
16
+ - Package inspected but not published to npm: `@evo-dev/plugin`.
17
+ - Version sync command: `bun run version:sync -- <version>`.
18
+ - Version check command: `bun run version:check`.
19
+ - Main quality gate: `bun run check`.
20
+ - Release package/smoke gate: `bun run release:dry-run`.
21
+ - Tag trigger: `v<semver>`, for example `v0.0.1-alpha.3`.
22
+ - npm dist-tag mapping:
23
+ - versions containing `-alpha` publish with npm dist-tag `alpha`;
24
+ - versions containing `-beta` publish with `beta`;
25
+ - other prereleases publish with `next`;
26
+ - stable versions publish with `latest`.
27
+
28
+ The release workflow uses npm Trusted Publisher / OIDC, not long-lived npm tokens.
29
+
30
+ Required npm Trusted Publisher settings for both `@evo-dev/core` and `@evo-dev/evodev`:
31
+
32
+ - repository: `limerickgds/evodev`
33
+ - workflow filename: `release.yml`
34
+ - environment: `npm-release`
35
+ - allowed action: `npm publish`
36
+
37
+ The publish job should have `id-token: write`, use `actions/setup-node` with `registry-url: https://registry.npmjs.org`, and run `npm publish` from `packages/core` and `packages/cli`. Do not reintroduce `NPM_CONFIG_TOKEN`, `NPM_TOKEN`, `.npmrc` token writes, `--auth-type=legacy`, or `bun publish` into the normal release path.
38
+
39
+ ## Before Changing Anything
40
+
41
+ Collect current evidence first:
42
+
43
+ ```bash
44
+ git status -sb
45
+ git diff --stat
46
+ git log --oneline --decorate -8
47
+ git fetch --tags --prune --quiet
48
+ git tag --sort=-v:refname | head -20
49
+ npm view @evo-dev/evodev versions --json
50
+ npm view @evo-dev/evodev dist-tags --json
51
+ npm view @evo-dev/core dist-tags --json
52
+ ```
53
+
54
+ Use registry state, not only local tags, to choose the next version. If npm already has `0.0.1-alpha.N`, the next alpha is normally `0.0.1-alpha.(N+1)` even if the matching git tag is missing.
55
+
56
+ ## Commit Flow
57
+
58
+ 1. Inspect local changes before staging:
59
+ ```bash
60
+ git diff --stat
61
+ git diff -- <relevant files>
62
+ ```
63
+ 2. Split commits by intent:
64
+ - functional or docs changes first, with a conventional message such as `feat(team): ...` or `fix(release): ...`;
65
+ - version sync as a separate release commit: `chore: release v<version>`.
66
+ 3. Stage only intended files. Preserve unrelated user changes.
67
+ 4. Use non-interactive git commands:
68
+ ```bash
69
+ git add <files>
70
+ git commit -m "<type>(<scope>): <summary>"
71
+ ```
72
+ 5. After every commit, check:
73
+ ```bash
74
+ git status -sb
75
+ git log --oneline --decorate -5
76
+ ```
77
+
78
+ ## Version Bump Flow
79
+
80
+ Use the repo script instead of editing versions by hand:
81
+
82
+ ```bash
83
+ bun run version:sync -- <version>
84
+ bun run version:check
85
+ ```
86
+
87
+ The sync script updates the root workspace package, core package, CLI package, plugin manifests, Claude marketplace metadata, Codex plugin metadata, and `CLI_VERSION`.
88
+
89
+ Before release commit, run:
90
+
91
+ ```bash
92
+ bun run check
93
+ bun run release:dry-run
94
+ git diff --check
95
+ ```
96
+
97
+ If any gate fails, fix the issue before committing the release. Do not report a release as ready if a gate failed or was skipped without explanation.
98
+
99
+ ## Tag-Driven Release Flow
100
+
101
+ For a committed version bump:
102
+
103
+ ```bash
104
+ git tag v<version>
105
+ git push origin main
106
+ git push origin v<version>
107
+ ```
108
+
109
+ The pushed tag must point at the release commit whose `package.json` version matches the tag. The workflow checks this on tag events.
110
+
111
+ Then watch the GitHub Actions run:
112
+
113
+ ```bash
114
+ gh run list --workflow Release --limit 5
115
+ gh run watch <run-id> --exit-status
116
+ ```
117
+
118
+ After CI finishes, verify registry state:
119
+
120
+ ```bash
121
+ npm view @evo-dev/evodev dist-tags --json
122
+ npm view @evo-dev/core dist-tags --json
123
+ npm view @evo-dev/evodev versions --json
124
+ npm view @evo-dev/core versions --json
125
+ ```
126
+
127
+ ## Workflow Dispatch Recovery
128
+
129
+ If a tag run used an old broken workflow, do not rewrite a pushed public tag by default.
130
+
131
+ Instead:
132
+
133
+ 1. Fix `.github/workflows/release.yml` on `main`.
134
+ 2. Commit and push the workflow fix.
135
+ 3. Dispatch the fixed workflow for the same version:
136
+ ```bash
137
+ gh workflow run release.yml --ref main \
138
+ -f target=both \
139
+ -f publish=true \
140
+ -f tag=alpha \
141
+ -f version=<version>
142
+ ```
143
+ 4. Watch the new run and confirm npm dist-tags.
144
+
145
+ Use `workflow_dispatch` only when it is clearly safer than mutating a pushed tag, or when the user explicitly asks for manual release.
146
+
147
+ ## Trusted Publishing Failure Handling
148
+
149
+ If publish fails with a token error such as missing `NPM_CONFIG_TOKEN` or `NPM_TOKEN`, do not add token checks back. For Trusted Publisher, fix the workflow and npm package configuration:
150
+
151
+ - workflow job needs `permissions.id-token: write`;
152
+ - publish job must use GitHub-hosted runners;
153
+ - npm package Trusted Publisher fields must exactly match repository, workflow filename, and environment;
154
+ - use npm CLI through `npm publish`, not `bun publish`;
155
+ - Node 24 from `actions/setup-node` already provides npm 11.x, which supports trusted publishing.
156
+
157
+ If `release:dry-run` fails only after changing npm versions, avoid unnecessary global npm upgrades. In the current workflow, `actions/setup-node@v6` with Node 24 provides a compatible npm version; keep the dry-run behavior stable.
158
+
159
+ If one package publishes and the second fails, check registry versions before retrying. npm versions are immutable, so rerunning `target=both` may fail on the already-published package. Use `target=core` or `target=cli` only for the missing package when appropriate.
160
+
161
+ ## Final Report
162
+
163
+ Report the release outcome with:
164
+
165
+ ```text
166
+ VERSION: <version>
167
+ COMMITS:
168
+ - <sha> <message>
169
+ TAG: v<version> pushed | not pushed
170
+ RUN: <GitHub Actions URL and status>
171
+ REGISTRY:
172
+ - @evo-dev/core alpha/latest: <version>
173
+ - @evo-dev/evodev alpha/latest: <version>
174
+ VERIFICATION:
175
+ - bun run version:check: PASS | FAIL | not-run
176
+ - bun run check: PASS | FAIL | not-run
177
+ - bun run release:dry-run: PASS | FAIL | not-run
178
+ WORKTREE: clean | dirty
179
+ FOLLOW-UP:
180
+ - <item or none>
181
+ ```
182
+
183
+ Be explicit about whether npm publication actually happened. A pushed git tag is not the same thing as a successful npm dist-tag update.
@@ -4,13 +4,13 @@
4
4
  "name": "EvoDev"
5
5
  },
6
6
  "description": "EvoDev Claude Code hook plugins for AI-assisted R&D workflows.",
7
- "version": "0.0.1-alpha.3",
7
+ "version": "0.0.1-alpha.5",
8
8
  "plugins": [
9
9
  {
10
10
  "name": "evodev",
11
11
  "source": "./packages/plugin",
12
12
  "description": "EvoDev hook integration for disciplined AI coding workflows.",
13
- "version": "0.0.1-alpha.3",
13
+ "version": "0.0.1-alpha.5",
14
14
  "author": {
15
15
  "name": "EvoDev"
16
16
  },