hatch3r 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +437 -0
- package/agents/hatch3r-a11y-auditor.md +126 -0
- package/agents/hatch3r-architect.md +160 -0
- package/agents/hatch3r-ci-watcher.md +123 -0
- package/agents/hatch3r-context-rules.md +97 -0
- package/agents/hatch3r-dependency-auditor.md +164 -0
- package/agents/hatch3r-devops.md +138 -0
- package/agents/hatch3r-docs-writer.md +97 -0
- package/agents/hatch3r-implementer.md +162 -0
- package/agents/hatch3r-learnings-loader.md +108 -0
- package/agents/hatch3r-lint-fixer.md +104 -0
- package/agents/hatch3r-perf-profiler.md +123 -0
- package/agents/hatch3r-researcher.md +642 -0
- package/agents/hatch3r-reviewer.md +81 -0
- package/agents/hatch3r-security-auditor.md +119 -0
- package/agents/hatch3r-test-writer.md +134 -0
- package/commands/hatch3r-agent-customize.md +146 -0
- package/commands/hatch3r-api-spec.md +49 -0
- package/commands/hatch3r-benchmark.md +50 -0
- package/commands/hatch3r-board-fill.md +504 -0
- package/commands/hatch3r-board-init.md +315 -0
- package/commands/hatch3r-board-pickup.md +672 -0
- package/commands/hatch3r-board-refresh.md +198 -0
- package/commands/hatch3r-board-shared.md +369 -0
- package/commands/hatch3r-bug-plan.md +410 -0
- package/commands/hatch3r-codebase-map.md +1182 -0
- package/commands/hatch3r-command-customize.md +94 -0
- package/commands/hatch3r-context-health.md +112 -0
- package/commands/hatch3r-cost-tracking.md +139 -0
- package/commands/hatch3r-dep-audit.md +171 -0
- package/commands/hatch3r-feature-plan.md +379 -0
- package/commands/hatch3r-healthcheck.md +307 -0
- package/commands/hatch3r-hooks.md +282 -0
- package/commands/hatch3r-learn.md +217 -0
- package/commands/hatch3r-migration-plan.md +51 -0
- package/commands/hatch3r-onboard.md +56 -0
- package/commands/hatch3r-project-spec.md +1153 -0
- package/commands/hatch3r-recipe.md +179 -0
- package/commands/hatch3r-refactor-plan.md +426 -0
- package/commands/hatch3r-release.md +328 -0
- package/commands/hatch3r-roadmap.md +556 -0
- package/commands/hatch3r-rule-customize.md +114 -0
- package/commands/hatch3r-security-audit.md +370 -0
- package/commands/hatch3r-skill-customize.md +93 -0
- package/commands/hatch3r-workflow.md +377 -0
- package/dist/cli/hooks-ZOTFDEA3.js +59 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +3584 -0
- package/github-agents/hatch3r-docs-agent.md +46 -0
- package/github-agents/hatch3r-lint-agent.md +41 -0
- package/github-agents/hatch3r-security-agent.md +54 -0
- package/github-agents/hatch3r-test-agent.md +66 -0
- package/hooks/hatch3r-ci-failure.md +10 -0
- package/hooks/hatch3r-file-save.md +11 -0
- package/hooks/hatch3r-post-merge.md +10 -0
- package/hooks/hatch3r-pre-commit.md +11 -0
- package/hooks/hatch3r-pre-push.md +10 -0
- package/hooks/hatch3r-session-start.md +10 -0
- package/mcp/mcp.json +62 -0
- package/package.json +84 -0
- package/prompts/hatch3r-bug-triage.md +155 -0
- package/prompts/hatch3r-code-review.md +131 -0
- package/prompts/hatch3r-pr-description.md +173 -0
- package/rules/hatch3r-accessibility-standards.md +77 -0
- package/rules/hatch3r-accessibility-standards.mdc +75 -0
- package/rules/hatch3r-agent-orchestration.md +160 -0
- package/rules/hatch3r-api-design.md +176 -0
- package/rules/hatch3r-api-design.mdc +176 -0
- package/rules/hatch3r-browser-verification.md +73 -0
- package/rules/hatch3r-browser-verification.mdc +73 -0
- package/rules/hatch3r-ci-cd.md +70 -0
- package/rules/hatch3r-ci-cd.mdc +68 -0
- package/rules/hatch3r-code-standards.md +102 -0
- package/rules/hatch3r-code-standards.mdc +100 -0
- package/rules/hatch3r-component-conventions.md +102 -0
- package/rules/hatch3r-component-conventions.mdc +102 -0
- package/rules/hatch3r-data-classification.md +85 -0
- package/rules/hatch3r-data-classification.mdc +83 -0
- package/rules/hatch3r-dependency-management.md +17 -0
- package/rules/hatch3r-dependency-management.mdc +15 -0
- package/rules/hatch3r-error-handling.md +17 -0
- package/rules/hatch3r-error-handling.mdc +15 -0
- package/rules/hatch3r-feature-flags.md +112 -0
- package/rules/hatch3r-feature-flags.mdc +112 -0
- package/rules/hatch3r-git-conventions.md +47 -0
- package/rules/hatch3r-git-conventions.mdc +45 -0
- package/rules/hatch3r-i18n.md +90 -0
- package/rules/hatch3r-i18n.mdc +90 -0
- package/rules/hatch3r-learning-consult.md +29 -0
- package/rules/hatch3r-learning-consult.mdc +27 -0
- package/rules/hatch3r-migrations.md +17 -0
- package/rules/hatch3r-migrations.mdc +15 -0
- package/rules/hatch3r-observability.md +165 -0
- package/rules/hatch3r-observability.mdc +165 -0
- package/rules/hatch3r-performance-budgets.md +109 -0
- package/rules/hatch3r-performance-budgets.mdc +109 -0
- package/rules/hatch3r-secrets-management.md +76 -0
- package/rules/hatch3r-secrets-management.mdc +74 -0
- package/rules/hatch3r-security-patterns.md +211 -0
- package/rules/hatch3r-security-patterns.mdc +211 -0
- package/rules/hatch3r-testing.md +89 -0
- package/rules/hatch3r-testing.mdc +87 -0
- package/rules/hatch3r-theming.md +51 -0
- package/rules/hatch3r-theming.mdc +51 -0
- package/rules/hatch3r-tooling-hierarchy.md +92 -0
- package/rules/hatch3r-tooling-hierarchy.mdc +79 -0
- package/skills/hatch3r-a11y-audit/SKILL.md +131 -0
- package/skills/hatch3r-agent-customize/SKILL.md +75 -0
- package/skills/hatch3r-api-spec/SKILL.md +66 -0
- package/skills/hatch3r-architecture-review/SKILL.md +96 -0
- package/skills/hatch3r-bug-fix/SKILL.md +129 -0
- package/skills/hatch3r-ci-pipeline/SKILL.md +76 -0
- package/skills/hatch3r-command-customize/SKILL.md +67 -0
- package/skills/hatch3r-context-health/SKILL.md +76 -0
- package/skills/hatch3r-cost-tracking/SKILL.md +65 -0
- package/skills/hatch3r-dep-audit/SKILL.md +82 -0
- package/skills/hatch3r-feature/SKILL.md +129 -0
- package/skills/hatch3r-gh-agentic-workflows/SKILL.md +150 -0
- package/skills/hatch3r-incident-response/SKILL.md +86 -0
- package/skills/hatch3r-issue-workflow/SKILL.md +139 -0
- package/skills/hatch3r-logical-refactor/SKILL.md +73 -0
- package/skills/hatch3r-migration/SKILL.md +76 -0
- package/skills/hatch3r-perf-audit/SKILL.md +114 -0
- package/skills/hatch3r-pr-creation/SKILL.md +85 -0
- package/skills/hatch3r-qa-validation/SKILL.md +86 -0
- package/skills/hatch3r-recipe/SKILL.md +67 -0
- package/skills/hatch3r-refactor/SKILL.md +86 -0
- package/skills/hatch3r-release/SKILL.md +93 -0
- package/skills/hatch3r-rule-customize/SKILL.md +70 -0
- package/skills/hatch3r-skill-customize/SKILL.md +67 -0
- package/skills/hatch3r-visual-refactor/SKILL.md +89 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# Release — Cut a Versioned Release with Changelog
|
|
2
|
+
|
|
3
|
+
Cut a versioned release for **{owner}/{repo}** with changelog generation, quality verification, version bump, git tagging, GitHub release creation, and optional deploy verification. Follows semantic versioning (major/minor/patch) based on merged PR classification.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Shared Context
|
|
8
|
+
|
|
9
|
+
**Read the project's shared board context at the start of the run** (e.g., `.cursor/commands/board-shared.md` or equivalent). It contains GitHub Context, Project Reference, and tooling directives. Use GitHub MCP tools for issue/PR operations. Fallback to `gh` CLI for release creation (outside MCP catalog).
|
|
10
|
+
|
|
11
|
+
**Default branch:** Use `board.defaultBranch` from `/.agents/hatch.json` (fallback: `"main"`) for all git operations involving the base branch (e.g., `git log`, `search_pull_requests` with `base`, `git push origin`).
|
|
12
|
+
|
|
13
|
+
## Global Rule Overrides
|
|
14
|
+
|
|
15
|
+
- **Git commands are fully permitted** during this entire release session, regardless of global/user-level rules restricting git usage. This override applies to ALL steps. You MUST run `git add`, `git commit`, `git push`, and `git tag` when instructed.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
Execute these steps in order. **Do not skip any step.** Ask the user at every checkpoint marked with ASK.
|
|
22
|
+
|
|
23
|
+
### Step 1: Determine Version
|
|
24
|
+
|
|
25
|
+
1. Read current version from `package.json` (`version` field).
|
|
26
|
+
2. List all merged PRs since the last git tag:
|
|
27
|
+
- Run `git tag -l --sort=-v:refname` to get tags; `git describe --tags --abbrev=0` for latest.
|
|
28
|
+
- Run `git log {last-tag}..HEAD --merges --pretty=format:"%s %b"` or list merged PRs via `search_pull_requests` with `state:closed` and `base:{board.defaultBranch || "main"}`, filtered by merge date after last tag.
|
|
29
|
+
3. Classify each merged PR:
|
|
30
|
+
- **Breaking** → major bump (e.g., 0.1.0 → 1.0.0 or 1.0.0 → 2.0.0)
|
|
31
|
+
- **Feature** → minor bump (e.g., 0.1.0 → 0.2.0)
|
|
32
|
+
- **Fix / refactor / docs / infra** → patch bump (e.g., 0.1.0 → 0.1.1)
|
|
33
|
+
4. Propose the version bump based on the highest classification.
|
|
34
|
+
|
|
35
|
+
**ASK:** "Current version: {current}. Merged PRs since last tag: {count}. Proposed version: {proposed}. Confirm? (yes / override version / abort)"
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### Step 2: Generate Changelog
|
|
40
|
+
|
|
41
|
+
1. Collect merged PR titles, authors, and issue links since last tag.
|
|
42
|
+
2. Group by type:
|
|
43
|
+
- **Features**
|
|
44
|
+
- **Fixes**
|
|
45
|
+
- **Refactors**
|
|
46
|
+
- **Docs**
|
|
47
|
+
- **Infra**
|
|
48
|
+
3. Format as a changelog entry:
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## v{version} ({date})
|
|
52
|
+
|
|
53
|
+
### Features
|
|
54
|
+
|
|
55
|
+
- {PR title} (#{PR number}) by @{author}
|
|
56
|
+
|
|
57
|
+
### Fixes
|
|
58
|
+
|
|
59
|
+
- {PR title} (#{PR number}) by @{author}
|
|
60
|
+
|
|
61
|
+
### Refactors
|
|
62
|
+
|
|
63
|
+
- ...
|
|
64
|
+
|
|
65
|
+
### Docs
|
|
66
|
+
|
|
67
|
+
- ...
|
|
68
|
+
|
|
69
|
+
### Infra
|
|
70
|
+
|
|
71
|
+
- ...
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**ASK:** "Changelog preview above. Confirm? (yes / edit / abort)"
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Step 3: Quality Verification
|
|
79
|
+
|
|
80
|
+
Run (adapt to project):
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm run lint && npm run typecheck && npm run test
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- **All must pass.** If any fail, **STOP** and report the failure.
|
|
87
|
+
- Do not proceed to the version bump until all checks pass.
|
|
88
|
+
|
|
89
|
+
**ASK:** "Quality checks passed. Proceed to version bump? (yes / abort)"
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### Step 4: Version Bump
|
|
94
|
+
|
|
95
|
+
1. Update `version` in `package.json` to the confirmed version.
|
|
96
|
+
2. If `functions/package.json` exists and tracks version, update it to the same version.
|
|
97
|
+
3. If other workspace packages track version, update them as needed.
|
|
98
|
+
|
|
99
|
+
**ASK:** "Version bump applied. Proceed to commit and tag? (yes / abort)"
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### Step 5: Stage Changes
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
git add package.json
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If other `package.json` files were changed:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
git add functions/package.json
|
|
113
|
+
# or other workspace packages
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Commit:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
git commit -m "chore: release v{version}"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**ASK:** "Commit created. Proceed to create tag? (yes / abort)"
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Step 6: Create Git Tag
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
git tag v{version}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
- If tag already exists: **WARN** and **ASK** "Tag v{version} already exists. (a) abort, (b) delete and recreate (requires force), (c) use different version"
|
|
133
|
+
- If user chooses (b): `git tag -d v{version}` then `git tag v{version}`. Note: pushing will require `--force` for tags.
|
|
134
|
+
|
|
135
|
+
**ASK:** "Tag created. Proceed to push? (yes / abort)"
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Step 7: Push
|
|
140
|
+
|
|
141
|
+
Use `{base}` = `board.defaultBranch` from `/.agents/hatch.json` (fallback: `"main"`).
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
git push origin {base} && git push origin v{version}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- If push fails: **STOP** and provide manual instructions:
|
|
148
|
+
- `git push origin {base}`
|
|
149
|
+
- `git push origin v{version}`
|
|
150
|
+
|
|
151
|
+
**ASK:** "Push complete. Proceed to create GitHub release? (yes / abort)"
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### Step 8: Create GitHub Release
|
|
156
|
+
|
|
157
|
+
GitHub releases are outside the MCP catalog. Use `gh` CLI:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
gh release create v{version} --title "v{version}" --notes "{changelog}"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- Use the confirmed changelog from Step 2. Escape any special characters in the notes for the shell.
|
|
164
|
+
- If `gh` is unavailable: provide manual instructions for creating the release via GitHub web UI.
|
|
165
|
+
|
|
166
|
+
**ASK:** "GitHub release created. Proceed to deploy verification? (yes / abort)"
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Step 9: Deploy Verification
|
|
171
|
+
|
|
172
|
+
**ASK:** "Deploy to production now? (yes / manual later)"
|
|
173
|
+
|
|
174
|
+
If **yes**:
|
|
175
|
+
|
|
176
|
+
- Provide deploy commands appropriate to the project. Examples:
|
|
177
|
+
- Static hosting: `npm run deploy` or `vercel --prod` or similar
|
|
178
|
+
- Serverless: `npm run deploy:functions` or equivalent
|
|
179
|
+
- Docker: `docker build` and push to registry
|
|
180
|
+
- Generic: "Run your project's deploy script (e.g., `npm run deploy`, CI/CD pipeline trigger)"
|
|
181
|
+
|
|
182
|
+
If **manual later**:
|
|
183
|
+
|
|
184
|
+
- Remind user to run deploy commands when ready.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### Step 10: Post-Release
|
|
189
|
+
|
|
190
|
+
1. Remind user to **monitor for 24h** after deployment.
|
|
191
|
+
2. Suggest creating a monitoring issue if the project has incident response processes.
|
|
192
|
+
3. Optionally: create a monitoring issue via `issue_write` with labels `type:infra`, `status:in-progress`, `executor:human`, title "Post-release monitoring: v{version}".
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Pre-Release Support
|
|
197
|
+
|
|
198
|
+
For pre-release versions (alpha, beta, release candidate):
|
|
199
|
+
|
|
200
|
+
### Version Format
|
|
201
|
+
- Alpha: `x.y.z-alpha.N` (e.g., `1.2.0-alpha.1`)
|
|
202
|
+
- Beta: `x.y.z-beta.N` (e.g., `1.2.0-beta.1`)
|
|
203
|
+
- Release Candidate: `x.y.z-rc.N` (e.g., `1.2.0-rc.1`)
|
|
204
|
+
|
|
205
|
+
### Pre-Release Workflow
|
|
206
|
+
1. **Tag**: Create pre-release tag (e.g., `v1.2.0-beta.1`)
|
|
207
|
+
2. **Publish**: Publish to npm with `--tag` flag (`npm publish --tag beta`)
|
|
208
|
+
3. **Validate**: Run smoke tests against pre-release package
|
|
209
|
+
4. **Promote**: When ready, publish stable version without pre-release suffix
|
|
210
|
+
5. **Clean up**: Deprecate pre-release versions after stable release
|
|
211
|
+
|
|
212
|
+
### npm Distribution Tags
|
|
213
|
+
- `latest` — stable releases only (default install)
|
|
214
|
+
- `beta` — beta pre-releases (`npm install package@beta`)
|
|
215
|
+
- `next` — release candidates (`npm install package@next`)
|
|
216
|
+
- `alpha` — alpha pre-releases
|
|
217
|
+
|
|
218
|
+
### Pre-Release in Step 1
|
|
219
|
+
|
|
220
|
+
When the user requests a pre-release, modify version determination:
|
|
221
|
+
|
|
222
|
+
**ASK:** "Pre-release type? (alpha / beta / rc). Current pre-release count for this version will be auto-incremented."
|
|
223
|
+
|
|
224
|
+
The proposed version becomes `{base}-{type}.{N}` where `N` is the next sequential number for that type/base combination. GitHub releases created for pre-releases use the `--prerelease` flag:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
gh release create v{version} --title "v{version}" --notes "{changelog}" --prerelease
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## CHANGELOG Management
|
|
233
|
+
|
|
234
|
+
### Auto-Generation
|
|
235
|
+
1. Parse conventional commits since last release tag
|
|
236
|
+
2. Group by type: Features, Bug Fixes, Breaking Changes, Performance, Documentation
|
|
237
|
+
3. Include PR references and contributor attribution
|
|
238
|
+
4. Generate entry under `## [x.y.z] - YYYY-MM-DD`
|
|
239
|
+
|
|
240
|
+
### Format
|
|
241
|
+
Follow Keep a Changelog format:
|
|
242
|
+
- `### Added` — new features
|
|
243
|
+
- `### Changed` — changes to existing functionality
|
|
244
|
+
- `### Deprecated` — soon-to-be removed features
|
|
245
|
+
- `### Removed` — removed features
|
|
246
|
+
- `### Fixed` — bug fixes
|
|
247
|
+
- `### Security` — vulnerability fixes
|
|
248
|
+
|
|
249
|
+
### Workflow Integration
|
|
250
|
+
- CHANGELOG entry generated as part of release PR
|
|
251
|
+
- User reviews and approves CHANGELOG before merge
|
|
252
|
+
- CHANGELOG committed alongside version bump
|
|
253
|
+
|
|
254
|
+
### Integration with Step 2
|
|
255
|
+
|
|
256
|
+
The changelog generated in Step 2 should also be written to `CHANGELOG.md` at the project root. If `CHANGELOG.md` exists, prepend the new entry after the file header. If it doesn't exist, create it with a standard header:
|
|
257
|
+
|
|
258
|
+
```markdown
|
|
259
|
+
# Changelog
|
|
260
|
+
|
|
261
|
+
All notable changes to this project will be documented in this file.
|
|
262
|
+
|
|
263
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
264
|
+
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
265
|
+
|
|
266
|
+
## [x.y.z] - YYYY-MM-DD
|
|
267
|
+
...
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
In Step 5, stage `CHANGELOG.md` alongside `package.json`:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
git add package.json CHANGELOG.md
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Rollback Procedure
|
|
279
|
+
|
|
280
|
+
If a release introduces critical issues:
|
|
281
|
+
|
|
282
|
+
### npm Rollback
|
|
283
|
+
1. **Deprecate**: `npm deprecate package@version "Critical issue — use version X instead"`
|
|
284
|
+
2. **Unpublish** (within 72h): `npm unpublish package@version` (only if within npm's unpublish window)
|
|
285
|
+
3. **Publish hotfix**: Increment patch version with fix, publish as new release
|
|
286
|
+
|
|
287
|
+
### Git Rollback
|
|
288
|
+
1. **Revert commit**: Create revert commit on default branch (`board.defaultBranch` or `main`)
|
|
289
|
+
2. **Tag hotfix**: Tag new patch version
|
|
290
|
+
3. **Trigger release**: Push tag to trigger release workflow
|
|
291
|
+
|
|
292
|
+
### Communication
|
|
293
|
+
- Update CHANGELOG with rollback notice
|
|
294
|
+
- Create GitHub issue documenting the incident
|
|
295
|
+
- Notify users via release notes / discussions
|
|
296
|
+
|
|
297
|
+
### Rollback in Post-Release (Step 10)
|
|
298
|
+
|
|
299
|
+
Add to the post-release step:
|
|
300
|
+
|
|
301
|
+
**ASK:** "If critical issues are found during monitoring, do you want me to initiate rollback? (yes / no — I'll handle manually)"
|
|
302
|
+
|
|
303
|
+
If yes, execute the rollback procedure above. Always create a GitHub issue documenting the incident regardless of rollback method.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Error Handling
|
|
308
|
+
|
|
309
|
+
- **Quality gate failure:** Stop release. Report failure. Do not proceed to version bump. User must fix and re-run.
|
|
310
|
+
- **Tag collision:** Warn and ask user (abort / delete and recreate / use different version).
|
|
311
|
+
- **Push failure:** Provide manual instructions. Do not force push.
|
|
312
|
+
- **`gh release create` failure:** Provide manual instructions. Do not skip the release.
|
|
313
|
+
- **Pre-release version conflict:** If pre-release tag already exists, increment the pre-release number automatically.
|
|
314
|
+
- **CHANGELOG parse failure:** If `CHANGELOG.md` has unexpected format, append entry at the top and warn user to verify.
|
|
315
|
+
- **Rollback failure:** Provide manual rollback instructions. Never force-unpublish without explicit user confirmation.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Guardrails
|
|
320
|
+
|
|
321
|
+
- **Never release with failing tests.** Quality verification must pass before any version bump.
|
|
322
|
+
- **Never skip changelog.** Every release must have a changelog entry and `CHANGELOG.md` must be updated.
|
|
323
|
+
- **Never force push tags** unless user explicitly requested deletion and recreation.
|
|
324
|
+
- **Always create a GitHub release with notes.** Do not skip release creation.
|
|
325
|
+
- **Pre-releases must use `--prerelease` flag** on GitHub releases and `--tag` on npm publish.
|
|
326
|
+
- **Never auto-rollback without user confirmation.** Always ASK before initiating rollback.
|
|
327
|
+
- **Never unpublish from npm without explicit confirmation.** Prefer deprecation over unpublish.
|
|
328
|
+
- **ASK at every checkpoint.** Do not proceed without user confirmation.
|