version-management

All packages must have the same version. Use changesets for coordinated version bumps. Never version packages independently.

16 stars

Best use case

version-management is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

All packages must have the same version. Use changesets for coordinated version bumps. Never version packages independently.

Teams using version-management should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/version-management/SKILL.md --create-dirs "https://raw.githubusercontent.com/woojubb/robota/main/.agents/skills/version-management/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/version-management/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How version-management Compares

Feature / Agentversion-managementStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

All packages must have the same version. Use changesets for coordinated version bumps. Never version packages independently.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Version Management

## Rules (non-negotiable)

1. **All @robota-sdk/\* packages have the same version** — no exceptions. New packages start at the current monorepo version, not 0.1.0 or 1.0.0.
2. **Use changesets for version bumps** — `pnpm changeset` to create, `pnpm changeset version` to apply.
3. **Never edit version in package.json manually** — changesets manages this.
4. **Fixed versioning group** — all packages are in the same `fixed` group in `.changeset/config.json`. When any package changes, all get the same version.
5. **Prerelease requires `pre enter`** — before `changeset version` in beta, run `pnpm changeset pre enter beta` (only once per pre mode session).
6. **Both dist-tags must be set** — after publish, both `beta` and `latest` dist-tags must point to the newly published version.

## Workflow

### Publish (automated)

```bash
# 1. Create a changeset
pnpm changeset
# Write the .changeset/<name>.md file with affected packages + summary

# 2. Enter prerelease mode (if not already active — check .changeset/pre.json)
pnpm changeset pre enter beta

# 3. Apply version bump
pnpm changeset version

# 4. Commit version changes
git add -A && git commit -m "chore: release <version>"

# 5. Publish all packages + sync dist-tags (single command)
pnpm publish:beta
# Prompts for OTP after dry-run, publishes, syncs beta, and verifies beta + latest tags
```

### What `pnpm publish:beta` does

Runs `scripts/publish/publish-packages.sh`:

1. Reads version from `agent-core/package.json`
2. Runs `pnpm publish -r --dry-run` (all packages at once, ~4 seconds)
3. Prompts for OTP (after dry-run so it doesn't expire)
4. Runs `pnpm publish -r --otp <otp>` (all packages at once, ~4 seconds)
5. Syncs `beta` dist-tags for all published packages to the same version
6. Verifies both `latest` and `beta` dist-tags point to the published version

Key: uses `pnpm publish -r` (single command) not `--filter` per package (sequential, minutes).
No `--tag` flag on publish: npm automatically sets `latest` to the new version. The script explicitly syncs `beta` afterward.

### Adding a new package:

1. Set version to current monorepo version in package.json
2. Add package name to `.changeset/config.json` fixed group
3. Publish at the same version as all other packages

## Anti-patterns

- Never use `"version": "0.1.0"` for a new package (must match monorepo version)
- Never manually edit version field in package.json
- Never publish one package at a different version than others
- Never use `npm publish` — always `pnpm publish` (workspace:\* resolution)
- Never forget to set `latest` dist-tag after prerelease publish
- Never run `changeset version` without `pre enter beta` first (drops prerelease tag)

Related Skills

api-spec-management

16
from woojubb/robota

Manage API specifications for apps with external HTTP, WebSocket, gRPC, or other API endpoints, including endpoint additions, request or response shape changes, OpenAPI documentation, and schema synchronization.

web-design-guidelines

16
from woojubb/robota

Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".

vitest-testing-strategy

16
from woojubb/robota

Defines a practical testing strategy for TypeScript and JavaScript using Vitest across unit, integration, and type-level tests. Use when adding features, refactoring, or preventing regressions with fast feedback loops.

vercel-react-native-skills

16
from woojubb/robota

React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.

vercel-react-best-practices

16
from woojubb/robota

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

vercel-composition-patterns

16
from woojubb/robota

React composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.

user-request-gate

16
from woojubb/robota

Use immediately when the user requests any implementation, code change, feature addition, fix, or modification. Gates code writing behind a backlog draft document. Read-only exploration is always permitted.

type-boundary-and-ssot

16
from woojubb/robota

Applies Robota's preferred workflow for trust-boundary validation, strict typing, quality gates, and owner-based SSOT reuse. Use when adding or reviewing type contracts, boundary parsing, shared contract ownership, or running quality checks.

tdd-red-green-refactor

16
from woojubb/robota

Kent Beck's TDD workflow. Use when writing new code or modifying existing behavior. Enforces the Red-Green-Refactor cycle with small, verifiable steps.

task-tracking

16
from woojubb/robota

Track work using task files in .agents/tasks/. Use when starting, progressing, or completing a task to maintain a persistent record of work.

tailwind-truncation

16
from woojubb/robota

Provide Tailwind truncation patterns for single-line and multi-line text. Use when discussing text ellipsis, truncation, or line-clamp usage.

state-machine-design

16
from woojubb/robota

Designs finite state machines as pure, declarative transition tables with guards and actions. Use when modeling lifecycle states, status flows, or any system with discrete states and controlled transitions.