9. Safe Change Rules
Core Architecture Protection
Prohibited Changes (Pre-approval Required)
Changes Requiring Caution (Must Verify Impact)
Public API Path Freeze
Since this repository is published to npm, public API paths exposed via the exports field must not be changed arbitrarily:
Renaming a
binentry also changes theskills/<bin>/SKILL.mddirectory name and every CLI command written inREADME.mdandSKILL.md.
Unauthorized Database Schema Changes
This project does not use a database. (No separate data storage.)
Authentication/Authorization
This project does not include its own authentication/authorization system. MCP server authentication is delegated to client environment variable configuration (Claude Desktop, Cursor, etc.).
Version Compatibility Rules
- Adding tools is freely allowed in minor versions (
featcommit) - Renaming existing tools is prohibited — add a new tool and have the old one output a deprecation message
- Removing existing tool inputSchema fields is prohibited — fields can only be added (as optional)
- Changing the return type of existing tool handlers is prohibited — must maintain
ToolResult({ content: [...] }) - Breaking changes are only allowed in major version changes
Pre-approval Required for Large Structural Changes
The following changes require team review or approval before execution:
- Repository structure changes (reshaping the
src/layout, splitting into packages, etc.) - Redesigning core interfaces in
src/common/kit/ - Build system changes (tsup → other bundler)
- CI/CD pipeline restructuring
- Conventional Commits policy changes
- Node.js/TypeScript major version upgrades
Release Branch Protection
mainis the only long-lived branch. Work happens on a short-lived branch and lands onmainthrough a pull request — no direct push.- CI (lint + format + type check + test + build) runs on every pull request targeting
mainand must pass before merge. - Merging into
maintriggers release-please, which opens/updates a release PR with version bumps + CHANGELOG; the actual tags, GitHub Releases, and npm publish happen only when that release PR is merged - Include
[skip ci]in commit messages to skip the push-triggered CI run (for release commits, etc.)