semver-api-surface
Manages semantic versioning and public API surfaces for multi-package monorepos. Use when adding, changing, or removing exported interfaces, types, or functions to determine version impact and maintain compatibility.
Best use case
semver-api-surface is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manages semantic versioning and public API surfaces for multi-package monorepos. Use when adding, changing, or removing exported interfaces, types, or functions to determine version impact and maintain compatibility.
Teams using semver-api-surface 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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/semver-api-surface/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How semver-api-surface Compares
| Feature / Agent | semver-api-surface | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manages semantic versioning and public API surfaces for multi-package monorepos. Use when adding, changing, or removing exported interfaces, types, or functions to determine version impact and maintain compatibility.
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
# Semantic Versioning & API Surface Management
## Rule Anchor
- `AGENTS.md` > "Project Structure"
- `AGENTS.md` > "Type System (Strict)"
## Use This Skill When
- Changing a package's barrel export (index.ts).
- Adding, removing, or modifying public interfaces or types.
- Deciding whether a change is major, minor, or patch.
- Planning a deprecation-to-removal lifecycle.
- Coordinating version bumps across dependent packages.
## Core Principles
1. **semver contract**: major = breaking, minor = additive, patch = fix.
2. **Public surface = barrel export**: only what index.ts exports is public API.
3. **Additive is safe**: new exports and optional properties are minor.
4. **Removal is breaking**: removing or renaming an export is major.
5. **Deprecate before remove**: mark deprecated for at least one minor version before removing.
## Breaking Change Criteria
| Change | Impact | Version |
| --------------------------------------- | ------------------ | --------- |
| Remove exported type/interface/function | consumers break | **major** |
| Rename exported symbol | consumers break | **major** |
| Change required parameter type | consumers break | **major** |
| Add required property to interface | implementers break | **major** |
| Add optional property to interface | compatible | minor |
| Add new export | compatible | minor |
| Fix bug without API change | compatible | patch |
| Internal refactor (no export change) | compatible | patch |
## Workflow
1. Before making a change, check if the affected symbol is in barrel export.
2. If public: classify the change using the table above.
3. If breaking: consider deprecation path (add new, deprecate old, remove later).
4. Update CHANGELOG or ADR with the change and version impact.
5. Coordinate dependent package version bumps.
## Deprecation Lifecycle
```ts
// Step 1: Add new API alongside old (minor version bump)
/** @deprecated Use `executeTask` instead. Will be removed in next major. */
export function runTask(input: TaskInput): Promise<TaskResult> {
return executeTask(input);
}
export function executeTask(input: TaskInput): Promise<TaskResult> {
/* ... */
}
// Step 2: Remove old API (major version bump)
// export function runTask — removed
export function executeTask(input: TaskInput): Promise<TaskResult> {
/* ... */
}
```
## Monorepo Coordination
- Use `workspace:*` protocol for internal dependencies.
- When an exported owner package has a breaking change, all dependent workspace packages must be
included in the coordinated bump.
- Use pnpm catalog for shared external dependency versions.
- Run `pnpm --filter @robota-sdk/* build` to verify no cross-package breakage.
## Checklist
- [ ] Changed symbol is classified as public (in barrel export) or internal.
- [ ] Breaking changes have a deprecation step or documented justification.
- [ ] Version bump matches the change classification.
- [ ] Dependent packages are updated and build successfully.
- [ ] CHANGELOG or ADR records the change.
## Anti-Patterns
- Removing public exports without a major version bump.
- Adding required properties to public interfaces as a minor change.
- Skipping deprecation and jumping straight to removal.
- Independent package versions that drift without coordination.
- Exporting internal implementation details in barrel exports.Related Skills
web-design-guidelines
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
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.
version-management
All packages must have the same version. Use changesets for coordinated version bumps. Never version packages independently.
vercel-react-native-skills
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
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
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
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
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
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
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
Provide Tailwind truncation patterns for single-line and multi-line text. Use when discussing text ellipsis, truncation, or line-clamp usage.
state-machine-design
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.