ワンクリックで
release
Prepare a codegraph release — update CHANGELOG, ROADMAP, BACKLOG, README, create PR
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Prepare a codegraph release — update CHANGELOG, ROADMAP, BACKLOG, README, create PR
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Adopt extracted helpers — find dead symbols from forge, wire them into consumers, replace duplicated inline patterns, and gate on dead-symbol delta (Titan Paradigm Phase 4.5)
Adopt extracted helpers — find dead symbols from forge, wire them into consumers, replace duplicated inline patterns, and gate on dead-symbol delta (Titan Paradigm Phase 4.5)
Validate staged changes — codegraph checks + project lint/build/test, auto-rollback on failure, pass/fail commit gate (Titan Paradigm Phase 4)
Audit codebase files against the 4-pillar quality manifesto using RECON work batches, with batch processing and context budget management (Titan Paradigm Phase 2)
Map a codebase's dependency graph, identify hotspots, name logical domains, propose work batches, and produce a ranked priority queue for autonomous cleanup (Titan Paradigm Phase 1)
Local repo maintenance — clean stale worktrees, remove dirt files, sync with main, update codegraph, prune branches, and verify repo health
| name | release |
| description | Prepare a codegraph release — update CHANGELOG, ROADMAP, BACKLOG, README, create PR |
| argument-hint | [version e.g. 3.1.1] (optional — auto-detects from commits) |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep, Agent |
You are preparing a release for @optave/codegraph.
Version argument: $ARGUMENTS
3.1.1), use it as the target version.$ARGUMENTS), you will auto-detect it in Step 1b.Important: this skill does NOT bump versions. The publish workflow (publish.yml) handles version bumping in package.json, Cargo.toml, package-lock.json, and optionalDependencies atomically — after building native binaries and publishing to npm. Bumping versions in the release PR would cause CI failures because the native prebuilt binary wouldn't exist at the new version yet.
/worktree to get an isolated copy of the repo. All subsequent steps run inside the worktree.git fetch origin
git rev-list --count HEAD..origin/main
If the count is > 0 (behind main), detach to origin/main so all subsequent work starts from the latest main:
git checkout origin/main
Do not create the release/VERSION branch here — Step 7 creates it once VERSION is known.Run these in parallel:
git log --oneline v<previous-tag>..HEAD — all commits since the last release tag (use git describe --tags --match "v*" --abbrev=0 to find the previous tag)CHANGELOG.md (first 80 lines) — understand the formatpackage.json — current versiongit describe --tags --match "v*" --abbrev=0 — find the previous stable release tagIf $ARGUMENTS is empty or blank, determine the semver bump from the commits gathered in Step 1a.
The conventional commit prefix (feat:, fix:, perf:, etc.) is a hint, not the verdict. Contributors frequently use feat(scope): for internal refactors, perf improvements, or extractor/engine accuracy fixes that don't actually add any user-facing feature. The version bump is determined by what users observe, not by the commit prefix.
A commit only counts as minor if a user running codegraph could observe a genuinely new capability — specifically, one of:
cli.ts).codegraphrc.json field that changes behavior)index.tsThings that are NOT minor bumps even if prefixed feat::
Scan every commit between the last tag and HEAD. For each feat: or feat(scope): commit:
gh pr view <N> --json title,body) or the commit bodyApply these rules in priority order:
| Condition | Bump |
|---|---|
Any commit has a BREAKING CHANGE: / BREAKING-CHANGE: footer, or uses ! suffix (feat!:, fix!:, etc.) | major |
Any feat: commit passes the "real test" above (adds new CLI command/flag/MCP tool/output field/config/public API export) | minor |
Everything else — including feat: commits that are really accuracy fixes, perf refactors, or internal plumbing | patch |
Given the current version MAJOR.MINOR.PATCH from package.json, compute the new version:
(MAJOR+1).0.0MAJOR.(MINOR+1).0MAJOR.MINOR.(PATCH+1)When the detection lands on minor, state the specific new CLI surface before proceeding — e.g.:
Detected minor bump. New user-facing surface:
Version: 3.9.3 → 3.10.0
If you cannot name a specific new command/flag/tool/output/config/public API export, the bump is patch, not minor. Example:
Detected patch bump. The
feat(js-extractor)commit (#947) is an extractor accuracy improvement — it adds edges but no new CLI surface. Thefeat(native)commit (#937) is a perf refactor — no new commands or flags. Both belong under Bug Fixes / Performance in the CHANGELOG.Version: 3.9.3 → 3.9.4
Use the resolved version as VERSION for all subsequent steps.
If $ARGUMENTS was provided, use it directly as VERSION.
The CHANGELOG doubles as release notes — it's what users see on the GitHub release page. Write it for humans, not machines.
Add a new section at the top (below the header) following the existing format:
## [X.Y.Z](https://github.com/optave/ops-codegraph-tool/compare/vPREVIOUS...vX.Y.Z) (YYYY-MM-DD)
**One-line summary.** Expanded description of the release highlights — what's new, what's better, what's fixed. This paragraph should tell a user whether they should upgrade and why.
### Features
* **scope:** description ([#PR](url))
### Bug Fixes
* **scope:** description ([#PR](url))
### Performance
* **scope:** description ([#PR](url))
### Refactors
* description ([#PR](url))
### Chores
* **scope:** description ([#PR](url))
Rules:
Read docs/roadmap/ROADMAP.md and update:
Current version: X.Y.Z- ✅ for done, - 🔲 for remainingRead docs/roadmap/BACKLOG.md and check if any backlog items were completed or partially completed by commits in this release.
~~Title~~) and a **DONE** suffix with a description of what was shipped and PR links~~Title~~**DONE** — description of what shipped (PR links) at the end of the rowLast updated date at the top of the fileThis step runs every release regardless of whether features changed.
Read README.md and check if any new user-facing features from this release need to be documented:
docs/roadmap/ROADMAP.md in phase order, phase names, and phase count. ROADMAP.md is the source of truth. Specifically:
Fetch the current GitHub repository metadata and review whether it still accurately describes the project:
gh api repos/optave/ops-codegraph-tool --jq '{description: .description, homepage: .homepage, topics: .topics}'
Check:
cli, code-analysis, dependency-graph, tree-sitter, sqlite, mcp.If any field needs updating, apply it directly via the API (no file change needed — this is a GitHub metadata update, not a committed file):
# Update description and/or homepage
gh api --method PATCH repos/optave/ops-codegraph-tool \
-f description="NEW DESCRIPTION" \
-f homepage="https://..."
# Update topics — start from the fetched list above, then add/remove as needed.
# This PUT replaces ALL topics atomically; do NOT copy the example below verbatim —
# build the full list from the currently active topics first, then adjust.
gh api --method PUT repos/optave/ops-codegraph-tool/topics \
-f "names[]=cli" -f "names[]=code-analysis" -f "names[]=dependency-graph" -f "names[]=tree-sitter"
Note: "about" text changes are applied directly to GitHub — they don't require a commit. Record any changes made in the PR description so reviewers know what was updated.
libc fields in package-lock.jsonSome npm versions (notably v11+) silently strip the libc field from Linux entries in package-lock.json. Without libc, npm may install glibc binaries on musl systems (Alpine) and vice versa.
Even though this skill does not bump versions, check that libc fields are present — they can go missing after any npm install run:
grep -A12 'codegraph-linux' package-lock.json | grep -c libc
# Expected: ≥3 (one each for linux-arm64-gnu, linux-x64-gnu, linux-x64-musl)
If the count is less than 3, restore the missing fields in a separate commit:
-gnu packages: "libc": ["glibc"]-musl packages: "libc": ["musl"]Place the libc array after the cpu array in each entry.
git checkout -b release/VERSION (if on detached HEAD from Step 0, this creates the branch at the current commit)CHANGELOG.md, docs/roadmap/ROADMAP.md, docs/roadmap/BACKLOG.md if changed, README.md if changed, package-lock.json if libc fields were fixeddocs: prepare release notes for vVERSIONgit push -u origin release/VERSIONgh pr create --title "docs: prepare release notes for vVERSION" --body "$(cat <<'EOF'
## Summary
- Add CHANGELOG entry for vVERSION (all commits since previous release)
- Update ROADMAP progress
- Review README and repo "about" text for accuracy
- Repo "about" updated: <!-- describe what changed (description / homepage / topics), or "no changes needed" -->
**After merging:** create a GitHub Release with tag `vVERSION` to trigger the publish workflow, which handles version bumping, native binary builds, and npm publishing.
## Test plan
- [ ] CHANGELOG renders correctly on GitHub
- [ ] ROADMAP checklist items match actual codebase state
- [ ] README roadmap order matches ROADMAP.md
- [ ] Repo "about" description and topics are current
EOF
)"
After the PR is merged, remind the user:
Next step: Go to GitHub → Releases → "Draft a new release" → tag
vVERSION→ targetmain→ titlevVERSION→ auto-generate release notes or paste the CHANGELOG section → Publish.This triggers the publish workflow which will:
- Build native binaries for all 6 platforms with the correct version
- Publish platform packages and main package to npm
- Push a version bump PR (
package.json,Cargo.toml,package-lock.json) back to main
package.json, Cargo.toml, package-lock.json, and optionalDependencies atomically after building native binarieslibc field issues in package-lock.json, fix them in a separate commit with a descriptive message