AGENTS.md · git:20251210.97cb85c · 2025-12-10 · sha256 2fd8490ffe2d007d

AGENTS.md git:20251210.97cb85cA

Immutable. This exact content is served forever at /api/v1/blob/2fd8490ffe2d007d.

# Agents Release Playbook

## Purpose
Capture fallback release steps for situations where a recent bug fix skipped automation because the commit missed the Conventional Commits format.

## ✅ Best Practice: Use Conventional Commits
Always use proper Conventional Commit messages to let semantic-release work automatically:
- `feat:` → MINOR version bump (e.g., 1.0.0 → 1.1.0)
- `fix:` → PATCH version bump (e.g., 1.0.0 → 1.0.1)
- `BREAKING CHANGE:` → MAJOR version bump (e.g., 1.0.0 → 2.0.0)

**Recent success example**: PR #7 used `feat: support token-only authentication without username` and automatically released v1.1.0 ✨

---

## Fallback Options (when automation fails)

### Option 1: Trigger semantic-release with an empty commit
1. Branch from the latest `main` or `beta`.
2. Confirm the fix is already on that branch and CI is green, then create the empty commit.
   ```bash
   git commit --allow-empty -m "fix: trigger release after hotfix"
   ```
3. Open a PR; once checks pass, merge into `main` or `beta`.
4. The merge runs the Release workflow and bumps the patch version.

## Option 2: Manual version bump (last resort)
1. Use when semantic-release fails or an emergency demands an immediate release.
2. Update the `version` field in both `package.json` and `package-lock.json`.
3. Commit the changes.
   ```bash
   git commit -am "chore(release): 1.0.1"
   ```
4. Tag and push.
   ```bash
   git tag v1.0.1
   git push origin HEAD --tags
   ```
5. Draft the GitHub release manually or run `gh release create`.
6. Publish to npm manually if required via `npm publish`.

---

## 📝 Summary

**Default approach**: Land real code changes with Conventional Commit messages so semantic-release keeps working automatically. Reserve manual steps above for break-glass moments only, and return to automated releases afterward.

**Commit Format Reference**:
- `feat: description` → new feature (MINOR bump)
- `fix: description` → bug fix (PATCH bump)
- `docs: description` → documentation only (no release)
- `chore: description` → maintenance (no release)
- Add `BREAKING CHANGE:` in body for MAJOR bump