en un clic
production-release
// Preparing a production release, pushing a vX.Y.Z release tag, running scripts/release.sh, or updating CHANGELOG.md with the changes that are about to be deployed to production.
// Preparing a production release, pushing a vX.Y.Z release tag, running scripts/release.sh, or updating CHANGELOG.md with the changes that are about to be deployed to production.
apps/web UI — routes, @repo/ui, TanStack Start server functions and collections, navigation (Link vs useNavigate), forms (useForm + createFormSubmitHandler + fieldErrorsAsStrings for Zod field errors), Tailwind layout rules, design-system updates, and useEffect / useMountEffect policy.
Multi-channel notifications. Adding a new notification kind, group, or channel; in-app + email delivery; per-user prefs; project-level gates; idempotency.
Review the current conversation context and git changes, then persist durable repository knowledge into `dev-docs/*.md` by domain and into `AGENTS.md` for cross-cutting repo rules. Use after features, fixes, refactors, architecture changes, schema changes, or when the user mentions docs, documentation, design, architecture, business logic, conventions, or `AGENTS.md`.
ClickHouse queries, Goose migrations, chdb test schema, or telemetry storage paths.
Adding or changing routes in `apps/api`. One source of truth (`defineApiEndpoint` + a Zod schema) becomes an HTTP endpoint, an OpenAPI operation, an MCP tool, and a TS SDK method — descriptions and contracts must be written with all four readers in mind.
Drizzle schema, repositories, RLS, SqlClient wiring, Postgres migrations, psql / reset, or platform mappers (toDomain* / toInsertRow).
| name | production-release |
| description | Preparing a production release, pushing a vX.Y.Z release tag, running scripts/release.sh, or updating CHANGELOG.md with the changes that are about to be deployed to production. |
Use this skill when preparing a production deployment. If the skill is invoked
without additional context or constraints, assume the user wants the default
patch production release flow: update CHANGELOG.md, commit the changelog as
release: vX.Y.Z, push it to origin/development, and run the production tag
script for the next patch version. Production deploys are triggered by pushing a
vX.Y.Z tag; the changelog is updated at release time as a human-readable diff
of the code being pushed to production since the previous production deploy,
focused on the major aspects rather than every commit.
development is trunk and deploys to staging by default.vX.Y.Z tag that points at the
latest origin/development commit.development into main.origin/development before tagging.release: vX.Y.Z, for example release: v1.2.3.CHANGELOG.md during release preparation, before running the command
that pushes the production tag.When the user only invokes this skill (or says something like "production release") without specifying a version, dry run, changelog-only update, or other constraint:
vX.Y.Z tag.CHANGELOG.md for that next patch version using the production diff.release: vX.Y.Z and push to
origin/development.scripts/release.sh (without an explicit version) so it tags the latest
origin/development commit with the next patch version.Still obey all release invariants: never tag local-only commits, never promote
via main, and stop to ask if the working tree or branch state makes the
release unsafe or ambiguous.
origin/development; the release
script always tags the latest origin/development commit after fetching.git fetch origin development --tags
git tag -l 'v*' --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1
<latest-tag>..origin/development, or the initial
release range if no tag exists) as the production diff. Read the commits and changed files
enough to understand the main shipped behavior, not just the commit titles.CHANGELOG.md before deploying:
## Unreleased at the top;## v1.2.3 - 2026-05-27;release: vX.Y.Z (matching the
release version exactly) and push it to origin/development.scripts/release.sh [version]. Use --dry first when you want to preview
the release summary without tagging.Use concise, past-tense entries that describe the major shipped behavior. The changelog is not an exhaustive commit log; it is a readable summary of what will change in production compared with the previous deploy:
## v1.2.3 - 2026-05-27
### Traces
- Added hover popovers for histogram incidents (ref: #3252).
- Fixed native OAuth redirect URI handling (ref: #3254).
Prefer release accuracy over exhaustive commit transcription. If a PR was merged but is not part of the tagged range, it does not belong in that release section. If many commits contribute to one capability, write one entry for the capability instead of one entry per commit.