Use this skill for GitHits changelog maintenance, release work, version-bump PRs, release-readiness reviews, and release notes.
Human Merge Gate
- Release preparation ends with an open release PR. A request to audit, prepare, create, cut, or release a version does not authorize merging, enabling auto-merge, tagging, publishing, or waiting for publication.
- Merge a release PR only after receiving separate, explicit human approval given after the release PR exists. The approval must explicitly authorize merging and identify that PR by number, URL, or an otherwise unambiguous reference to the already-open PR.
- Earlier requests for an end-to-end release do not satisfy the merge gate. After opening the PR, report its URL and check status, then stop and ask for merge approval. Do not enable auto-merge as a substitute for approval.
- After the separate approval, merge only the approved PR. The successful
Mainworkflow will trigger publication, which may then be monitored to completion.
Release Checklist
- Root
githitsand@githits/mcphave separate release flows. Bump both only when both surfaces changed. - For root
githitsreleases, bumppackage.jsonandserver.json, then runbun run plugins:generateto update.plugin/plugin.json,.claude-plugin/plugin.json,.claude-plugin/marketplace.json,.codex-plugin/plugin.json,.cursor-plugin/plugin.json,gemini-extension.json, the versioned portable/Antigravityplugin.json, and the versionlessmcp_config.jsonadapter together. - For
@githits/mcpreleases, bumppackages/mcp/package.jsonand its workspace version inbun.lockonly when MCP package API, tool behavior, instructions, schemas, MCP auth/error behavior, or remote-server-facing public types changed. - For coordinated CLI and MCP releases, keep the MCP minor aligned with the CLI minor for discoverability. Start the first MCP release for a CLI minor at
X.Y.0, then bump MCP patch for later MCP-package-visible changes in that CLI minor. Do not bump MCP for CLI-only changes. - After merge, the root release workflow and MCP release workflow both run from the successful
Mainworkflow onmain. The MCP workflow publishes only when@githits/mcp@<version>is not already on npm; use its manualworkflow_dispatchpath only for recovery or explicit dry runs. - The root release workflow also publishes
server.jsonto the official MCP registry ascom.githits/githitsafter npm publishesgithits@<version>. Treat the MCP registry entry as part of the rootgithitsrelease, not the@githits/mcppackage release. - Keep
server.json.version, the npm package entry version inserver.json, and rootpackage.json.versionaligned. The release workflow rewrites a temporary registry manifest frompackage.json, but the committedserver.jsonshould still reflect the intended next root release for review and local validation. - Keep root
package.json#mcpNameequal tocom.githits/githits; npm registry ownership validation depends on the published package manifest matchingserver.json.name. - Run or rely on package-scoped version checks to verify root plugin versions stay aligned and MCP versions are intentionally independent.
- Reconcile the complete package-specific tag-to-HEAD delta with the files in
changes/. Every fragment must name every public artifact and an explicit pending bump, includingnonefor unaffected packages. - Run
bun run plugins:generate, inspect the generated diff, and runbun run plugins:checkbefore release-readiness signoff. Do not release with manually edited or stale generated assets. - Finalize the changelog before release. Group the fragments into a separate
## [<artifact> <version>] - YYYY-MM-DDsection for each released artifact, then delete every consumed fragment. - Review public skills before signoff whenever user-facing CLI/MCP behavior changed. After the behavior is released or included in the same release branch, update
skills/githits-code/SKILL.md,skills/githits-package/SKILL.md, and their references soskills.shusers get instructions that match the released surface. - Keep PR titles and labels release-note friendly; GitHub release notes are generated from merged PRs and
.github/release.ymlcategories. - Run
bun run buildbefore release-readiness signoff. Run targeted smoke/eval commands when MCP tools, CLI commands, shared formatters, auth/error envelopes, Agent Skills, or agent-facing instructions changed.
MCP Registry
- Registry name:
com.githits/githits. - Registry
server.jsonshould list both supported transports when available: hosted remote MCP athttps://mcp.githits.comand npm stdio via the rootgithitspackage withpackageArgumentsequivalent togithits mcp start. - Do not encode
npx githits@latestliterally inserver.json. The registry package entry usesruntimeHint: "npx",identifier: "githits", the exact releaseversion, and package arguments. This represents the pinned release artifact, while docs can continue to shownpx githits@latest mcp startfor manual setup. - Publish to the MCP registry only after
githits@<version>is published to npm, because registry validation checks the npm package metadata. - MCP registry publishing uses GitHub Actions OIDC, the
productionenvironment, and the Azure Key Vault-backed signer. Do not add an Azure client secret, Key Vault secret, exported signing key, npm token, or raw registry private key. - Required GitHub production environment secrets are identifiers used for masking and OIDC wiring:
AZURE_TENANT_ID,AZURE_SUBSCRIPTION_ID,AZURE_CLIENT_ID,MCP_REGISTRY_KEY_VAULT_NAME, andMCP_REGISTRY_SIGNING_KEY_NAME. Do not print them, dump environment variables, or enable shell tracing. - Before releasing a registry update, verify
mcp-publisher validate server.jsonlocally with the pinned publisher version when practical. - Before the first registry publish, verify the domain proof is deployed at
https://githits.com/.well-known/mcp-registry-auth. - For remote MCP auth, do not add static
Authorizationheader metadata toserver.json. The official registry remote transport schema supports URL, optional user-provided headers, and URL variables; OAuth is discovered from the remote MCP server through itsWWW-Authenticateresponse and/.well-known/oauth-protected-resourcemetadata. Validatehttps://mcp.githits.com/.well-known/oauth-protected-resourcereturns 200 and unauthenticated remote MCP requests return the expected 401 withresource_metadata.
Agent Skills Lifecycle
- User-facing skills under
skills/are picked up byskills.shfrommain, not from npm release artifacts. - Do not update
skills/to describe unreleased CLI/MCP behavior, except for the boundedgithits-mcpstable-guide rule below. A merge tomaincan expose those skill instructions immediately. - For the
githits-mcpstable guide, exact parity is a bounded exception: when backing stable behavior orbuildMcpQuickStart()changes, update the backing behavior, builder, and embedded terminal guide copy in the same PR, merge that PR tomain, and ship it in the next applicable release cycle. This accepts the bounded main-to-release window forskills.sh; it does not create a deploy-first or two-PR flow.buildLocalMcpQuickStart()runtime appendices remain excluded from the public copy. githits-onboardingkeeps its separate release-branch rule: update the public skill only on the release branch after the corresponding CLI behavior is included, soskills.shdoes not advertise unreleased onboarding behavior.- After the backing CLI/MCP behavior is released or part of the release being prepared, update
skills/so skill descriptions, decision flows, examples, detailed references, and command-to-MCP mappings match the released surface. - When MCP instructions, tool descriptions, or guardrails change, review
skills/githits-code/SKILL.md,skills/githits-package/SKILL.md, and their references for parity. Keep MCP instructions as the quality baseline; they are currently strong and should not be weakened casually. - After changing public skills or plugin-facing guidance, run
bun run plugins:generateandbun run plugins:checkso every host manifest remains aligned with the canonical root surface. - If a skill update is intentionally delayed until after release, note that in the release/change plan so it is not forgotten.
Changelog Fragments
- Follow
docs/implementation/release-process.mdandchanges/README.md; every notable change owns a new independent fragment underchanges/rather than editingCHANGELOG.md. - Use
git logand merged PRs since each package's previous tag to audit the fragments and find omissions before release; fragments do not replace range review. - Record the pending SemVer impact for
githits,@githits/mcp, and every future independently versioned public artifact in each fragment. Keep unaffected packages explicit asnone. - During release preparation, compute each artifact's aggregate bump from the highest impact in its fragments, group affected entries by category into that artifact's versioned section, and delete all consumed fragments. Never partially consume a cross-artifact fragment; leave unrelated fragments untouched. Consume all-
nonerepository entries with the next rootgithitsrelease. - Treat dated, versioned sections as immutable historical records. Change one only for a blatant, demonstrable factual error and make the smallest correction that restores accuracy; wording improvements and omitted minor details do not qualify.
- Exclude purely internal refactors unless they affect users, agent behavior, performance, or reliability.
- Call out changes that require users or agents to adjust commands, flags, config, auth setup, environment variables, MCP setup, or skill usage.
- Mention known limitations or intentionally deferred skill updates when they affect current users.
Guardrails
- Do not expose credentials while verifying release/auth flows.
- Do not force-push, amend, or rewrite release history unless explicitly requested.
- Refuse historical changelog cleanup or expansion unless the existing text is blatantly factually wrong.
- If fragment impacts, package manifests, or the verified package-visible delta disagree, stop and reconcile them before release signoff.
- If root package and plugin manifests disagree, stop and fix them before a root
githitsrelease. - If
@githits/mcpchanged but its package version did not, stop and either bump it or document why the change is not MCP-package-visible.