release
Skill94 starsChanged 3 months agoApache-2.0View on GitHub
Prepare a codegraph release — update CHANGELOG, ROADMAP, BACKLOG, README, create PR
- Commits and pushes
196 other projects use a version of this.
Adopted by
Most recently taken up by
- zxcvbn-ts/zxcvbntheir own version, first seen Nov 9, 2026
- TechbeeAT/jtxBoardtheir own version, first seen Nov 9, 2026
- ddnexus/pagytheir own version, first seen Nov 9, 2026
- zerx-lab/FluxDowntheir own version, first seen Nov 9, 2026
- orioledb/orioledbtheir own version, first seen Nov 9, 2026
- AmruthPillai/Reactive-Resumetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use create-agent-adapter, changelog-style and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkillcreate-agent-adapter
Technical guide for creating a new Paperclip agent adapter. Use when building a new adapter package, adding support for a new AI coding tool (e.g. a new CLI agent, API-based agent, or custom process), or when modifying the adapter system. Covers the required interfaces, module structure, registration points, and conventions derived from the existing claude-local and codex-local adapters.
Also in 5 projects that use this
GrinvSkillchangelog-style
Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR or cutting a release, to write/fix the [Unreleased] section's entries — moving [Unreleased] under a new dated version heading is a separate, automated step (see the release skill / scripts/sync-version.ts), not this skill's job.
Also in 4 projects that use this
GrinvSkilldocs-consistency-check
Check README/manifest.json/server.json/CHANGELOG.md/AGENTS.md and docs/*.md for drift against the actual registered tools and source. Use after adding, renaming, or removing a tool, or as part of a live-audit pass.
Also in 4 projects that use this
Microsoft AzureSkillcomponent-release
Prepares a verifiable Agent Landing Zone UI release. Use for release branches, VERSION, changelog entries, tags, release notes, and compatibility evidence; never publish without explicit human approval.
Also in 4 projects that use this
Microsoft AzureSkilldocumentation-consistency
Keeps AI Landing Zone contributor, user, and operator documentation aligned with shipped Bicep behavior. Use for parameters, defaults, outputs, topology, deployment flow, operations, or releases.
Also in 8 projects that use this
rivet-devSkilllaunch-graphics
Generate agentOS marketing/launch graphics (launch & social heroes, code-snippet cards) from the committed generators in docs-internal/graphics. Use when asked to make, update, or render an agentOS launch image, social image, "agentOS Apps" graphic, or technical code-snippet image.
Also in 3 projects that use this
- +3 more from Grinv
Other versions196 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 196
- paperclipai/paperclip★ 112ksame name
- modelcontextprotocol/servers★ 92ksame name
- remotion-dev/remotion★ 72ksame name
- traefik/traefik★ 65ksame name
- usememos/memos★ 64ksame name
- tw93/Pake★ 63ksame name
- AmruthPillai/Reactive-Resume★ 45ksame name
- amruthpillai/reactive-resume★ 45ksame name
- reactive-resume/reactive-resume★ 45ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
186 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository22 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- architectSkill
- bench-checkSkill
- create-skillSkill
- deps-auditSkill
- dogfoodSkill
- fixerSkill
- housekeepSkill
- overseeSkill
- paritySkill
- resolveSkill
- sweepSkill
- test-healthSkill
- titan-closeSkill
- titan-forgeSkill
- titan-gateSkill
- titan-gauntletSkill
- titan-grindSkill
- titan-reconSkill
- titan-resetSkill
- titan-runSkill
- titan-syncSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
38 rules. 0 are common, 19 are distinctive, and 19 are very specific to this project.
0
Common
Most of the 186 edited versions we read keep these.
19
Distinctive
This author's own choices. Worth a look.
19
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
If a version was provided (e.g.
- Very specific: line 14
If no version was provided (empty or blank $ARGUMENTS), you will auto-detect it in Step 1b.
- Very specific: line 28
If the count is > 0 (behind main), detach to origin/main so all subsequent work starts from the latest main:
- Very specific: line 32
Do not create the release/VERSION branch here — Step 7 creates it once VERSION is known.
- Distinctive: line 36
Run these in parallel:
- Very specific: line 38
Read CHANGELOG.md (first 80 lines) — understand the format
- Very specific: line 39
Read package.json — current version
- Very specific: line 44
If $ARGUMENTS is empty or blank, determine the semver bump from the commits gathered in Step 1a.
- Very specific: line 68
Read the PR body (gh pr view <N> --json title,body) or the commit body
- Distinctive: line 69
Ask: *does this add a new command, flag, MCP tool, output format, config option, or public API export that didn't exist before?*
- Distinctive: line 70
If yes → counts toward minor
- Distinctive: line 71
If no → treat as patch (and re-categorize in the CHANGELOG: accuracy → Bug Fixes, speed → Performance, internals → Chores)
- Distinctive: line 88
When the detection lands on minor, state the specific new CLI surface before proceeding — e.g.:
- Very specific: line 96
If you cannot name a specific new command/flag/tool/output/config/public API export, the bump is patch, not minor.
- Very specific: line 102
Use the resolved version as VERSION for all subsequent steps.
- Very specific: line 104
If $ARGUMENTS was provided, use it directly as VERSION.
- Distinctive: line 110
Add a new section at the top (below the header) following the existing format:
- Distinctive: line 137
Use the conventional commit scope as the bold prefix
- Distinctive: line 140
Read previous CHANGELOG entries to match the tone and detail level
- Very specific: line 144
Read docs/roadmap/ROADMAP.md and update:
- Distinctive: line 148
Add a progress note with version and PR links
- Very specific: line 149
Add checklist items: - ✅ for done, - 🔲 for remaining
- Distinctive: line 150
Check actual code exists (glob/grep for new files/directories mentioned in PRs) before marking tasks complete
- Very specific: line 154
Read docs/roadmap/BACKLOG.md and check if any backlog items were completed or partially completed by commits in this release.
- Distinctive: line 158
If a feature in this release matches a backlog item:
- Very specific: line 160
Add DONE — description of what shipped (PR links) at the end of the row
- Distinctive: line 161
Check the "Depends on" column of other items — if they depended on the newly completed item, note that they are now unblocked
- Very specific: line 162
Update the Last updated date at the top of the file
- Distinctive: line 170
Read README.md and check if any new user-facing features from this release need to be documented:
- Distinctive: line 178
If any phases are reordered, missing, renamed, or merged in README relative to ROADMAP.md, fix README to match
- Distinctive: line 182
If nothing user-facing changed (pure refactors, bug fixes, internal improvements), no README content update is needed — but still run the …
- Distinctive: line 197
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):
- Distinctive: line 225
If the count is less than 3, restore the missing fields in a separate commit:
- Very specific: line 229
Place the libc array after the cpu array in each entry.
- Very specific: line 233
Create branch: git checkout -b release/VERSION (if on detached HEAD from Step 0, this creates the branch at the current commit)
- Distinctive: line 237
Create PR (include a note if repo "about" text was updated directly on GitHub):
- Distinctive: line 260
After the PR is merged, remind the user:
- Very specific: line 274
If you find libc field issues in package-lock.json, fix them in a separate commit with a descriptive message
“Common” is measured: kept by at least 6 in 10 of the 186 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Release
You are preparing a release for @optave/codegraph.
Version argument: $ARGUMENTS
- If a version was provided (e.g.
3.1.1), use it as the target version. - If no version was provided (empty or blank
$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.
Step 0: Isolate and sync
- Create a worktree — run
/worktreeto get an isolated copy of the repo. All subsequent steps run inside the worktree. - Sync with main — fetch origin and check how far behind the current branch is:
If the count is > 0 (behind main), detach togit fetch origin git rev-list --count HEAD..origin/mainorigin/mainso all subsequent work starts from the latest main:
Do not create thegit checkout origin/mainrelease/VERSIONbranch here — Step 7 creates it once VERSION is known.
Step 1a: Gather context
Run these in parallel:
git log --oneline v<previous-tag>..HEAD— all commits since the last release tag (usegit describe --tags --match "v*" --abbrev=0to find the previous tag)- Read
CHANGELOG.md(first 80 lines) — understand the format - Read
package.json— current version git describe --tags --match "v*" --abbrev=0— find the previous stable release tag
Step 1b: Determine version (if not provided)
If $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.
The real test for a minor bump
A commit only counts as minor if a user running codegraph could observe a genuinely new capability — specifically, one of:
- A new CLI command (new top-level subcommand registered in
cli.ts) - A new CLI flag on an existing command that unlocks behavior previously unavailable
- A new MCP tool (new entry in the MCP tool list)
- A new output format / field (new JSON schema field, new export format, new column in table output)
- A new configuration option (new
.codegraphrc.jsonfield that changes behavior) - A new public programmatic API export from
index.ts
Things that are NOT minor bumps even if prefixed feat::
- Extractor/parser accuracy improvements ("resolve named function references", "track class instantiation") — these make existing queries more accurate but add no new CLI surface. Classify as Bug Fixes in the CHANGELOG.
- Native/engine performance refactors ("port X to Rust", "move Y to native") — these are perf improvements. Classify as Performance.
- Internal plumbing changes (build pipeline, DB schema migrations, cache tuning) — patch.
Decision procedure
Scan every commit between the last tag and HEAD. For each feat: or feat(scope): commit:
- Read the PR body (
gh pr view <N> --json title,body) or the commit body - Ask: does this add a new command, flag, MCP tool, output format, config option, or public API export that didn't exist before?
- If yes → counts toward minor
- If no → treat as patch (and re-categorize in the CHANGELOG: accuracy → Bug Fixes, speed → Performance, internals → Chores)
Apply 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 →
(MAJOR+1).0.0 - minor →
MAJOR.(MINOR+1).0 - patch →
MAJOR.MINOR.(PATCH+1)
Before committing to the bump
When the detection lands on minor, state the specific new CLI surface before proceeding — e.g.:
Detected minor bump. New user-facing surface:
- New CLI command:
codegraph trends(#920)- New
--architectureflag oncodegraph check(#925)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.
Step 2: Update CHANGELOG.md
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:
- Write for users, not developers. Describe what changed from the user's perspective, not the implementation details. "MCP server connects reliably on first attempt" beats "defer heavy imports in MCP server"
- The bold summary paragraph at the top is the most important part — it's the TL;DR that appears in release notifications
- Categorize every commit since the last tag (skip docs-only and benchmark-only commits unless they're notable)
- Use the conventional commit scope as the bold prefix
- Link every PR number
- Include a Performance section if there are performance improvements
- Read previous CHANGELOG entries to match the tone and detail level
Step 3: Update ROADMAP.md
Read docs/roadmap/ROADMAP.md and update:
- Version header — update
Current version: X.Y.Z - Phase status table — if any phase moved from Planned to In Progress (or completed), update the status column
- Task-level progress — for any roadmap tasks that have been completed or partially completed by commits in this release:
- Add a progress note with version and PR links
- Add checklist items:
- ✅for done,- 🔲for remaining - Check actual code exists (glob/grep for new files/directories mentioned in PRs) before marking tasks complete
Step 4: Update BACKLOG.md
Read docs/roadmap/BACKLOG.md and check if any backlog items were completed or partially completed by commits in this release.
- Backlog items are organized into tiers (1, 1b–1g, 2, 3) with an ID, title, and description per row
- Completed items are marked with strikethrough title (
~~Title~~) and a**DONE**suffix with a description of what was shipped and PR links - If a feature in this release matches a backlog item:
- Strike through the title:
~~Title~~ - Add
**DONE** — description of what shipped (PR links)at the end of the row - Check the "Depends on" column of other items — if they depended on the newly completed item, note that they are now unblocked
- Strike through the title:
- Update the
Last updateddate at the top of the file
Step 5: Update README.md and repo "about" text
This step runs every release regardless of whether features changed.
README.md
Read README.md and check if any new user-facing features from this release need to be documented:
- Commands table — if a new CLI command was added, add it to the commands section
- MCP tools table — if new MCP tools were added, add them to the AI integration section
- Feature descriptions — if a major new capability was added (new analysis type, new output format, etc.), add it to the relevant section
- Roadmap section — if a phase status changed, update the roadmap summary at the bottom
- Roadmap ordering cross-check — verify the README roadmap list matches
docs/roadmap/ROADMAP.mdin phase order, phase names, and phase count. ROADMAP.md is the source of truth. Specifically:- Extract the phase sequence from both files
- If any phases are reordered, missing, renamed, or merged in README relative to ROADMAP.md, fix README to match
- Completed phases should keep their historical version markers (e.g., "Complete (v3.0.0)")
- This check runs every release, not only when phase status changes — drift accumulates silently
- Version references — only update version-specific references (e.g., install commands). Historical milestone markers like "Complete (v3.0.0)" should stay as-is
- If nothing user-facing changed (pure refactors, bug fixes, internal improvements), no README content update is needed — but still run the roadmap ordering cross-check (item 5)
Repo "about" text
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:
- Description — does the one-line repo description match what codegraph actually is and does today? Update if it's stale, vague, or missing newly supported languages/capabilities.
- Topics/tags — are the labels current? For example, if a new language was added this release, add it. Common topics to keep in sync: language names,
cli,code-analysis,dependency-graph,tree-sitter,sqlite,mcp. - Homepage — is the URL still correct?
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.
Step 6: Verify libc fields in package-lock.json
Some 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:
-gnupackages:"libc": ["glibc"]-muslpackages:"libc": ["musl"]
Place the libc array after the cpu array in each entry.
Step 7: Create branch, commit, push, PR
- Create branch:
git checkout -b release/VERSION(if on detached HEAD from Step 0, this creates the branch at the current commit) - Stage only the files you changed:
CHANGELOG.md,docs/roadmap/ROADMAP.md,docs/roadmap/BACKLOG.mdif changed,README.mdif changed,package-lock.jsonif libc fields were fixed - Commit:
docs: prepare release notes for vVERSION - Push:
git push -u origin release/VERSION - Create PR (include a note if repo "about" text was updated directly on GitHub):
gh 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
)"Step 8: Post-merge instructions
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
Important reminders
- No version bumps in this PR — the publish workflow handles
package.json,Cargo.toml,package-lock.json, andoptionalDependenciesatomically after building native binaries - No co-author lines in commit messages
- No Claude Code references in commit messages or PR descriptions
- If you find
libcfield issues in package-lock.json, fix them in a separate commit with a descriptive message
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

