@speclife/cli 0.6.0 → 0.6.1
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/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/templates/commands/convert.md +165 -0
- package/templates/commands/implement.md +38 -0
- package/templates/commands/land.md +246 -0
- package/templates/commands/release.md +113 -0
- package/templates/commands/setup.md +292 -0
- package/templates/commands/ship.md +154 -0
- package/templates/commands/start.md +145 -0
- package/templates/commands/sync.md +170 -0
- package/templates/speclife-release.yml +96 -0
package/dist/index.js
CHANGED
|
@@ -102,30 +102,46 @@ git:
|
|
|
102
102
|
console.log(`✓ ${specDir}/commands/speclife/ already exists`);
|
|
103
103
|
}
|
|
104
104
|
// Copy slash command templates (from templates embedded in package)
|
|
105
|
-
const slashCommands = ['setup', 'start', 'implement', 'ship', 'land', 'release', 'sync'];
|
|
105
|
+
const slashCommands = ['setup', 'start', 'implement', 'ship', 'land', 'release', 'sync', 'convert'];
|
|
106
106
|
const templatesDir = join(__dirname, '..', 'templates', 'commands');
|
|
107
|
+
let copiedCount = 0;
|
|
108
|
+
let skippedCount = 0;
|
|
109
|
+
const errors = [];
|
|
107
110
|
for (const cmd of slashCommands) {
|
|
108
111
|
const destPath = join(commandsDir, `${cmd}.md`);
|
|
109
112
|
try {
|
|
110
113
|
await access(destPath);
|
|
111
114
|
if (!options.force) {
|
|
115
|
+
skippedCount++;
|
|
112
116
|
continue; // Skip existing
|
|
113
117
|
}
|
|
114
118
|
}
|
|
115
119
|
catch {
|
|
116
120
|
// File doesn't exist, create it
|
|
117
121
|
}
|
|
118
|
-
// Try to copy from templates
|
|
122
|
+
// Try to copy from templates
|
|
119
123
|
try {
|
|
120
124
|
const templatePath = join(templatesDir, `${cmd}.md`);
|
|
121
125
|
const content = await readFile(templatePath, 'utf-8');
|
|
122
126
|
await writeFile(destPath, content);
|
|
127
|
+
copiedCount++;
|
|
123
128
|
}
|
|
124
|
-
catch {
|
|
125
|
-
|
|
129
|
+
catch (err) {
|
|
130
|
+
errors.push(`${cmd}.md: ${err instanceof Error ? err.message : 'unknown error'}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (copiedCount > 0) {
|
|
134
|
+
console.log(`✓ Created ${copiedCount} slash command(s) in ${specDir}/commands/speclife/`);
|
|
135
|
+
}
|
|
136
|
+
if (skippedCount > 0) {
|
|
137
|
+
console.log(` (${skippedCount} existing command(s) skipped, use --force to overwrite)`);
|
|
138
|
+
}
|
|
139
|
+
if (errors.length > 0) {
|
|
140
|
+
console.log(`⚠️ Failed to copy ${errors.length} template(s):`);
|
|
141
|
+
for (const err of errors) {
|
|
142
|
+
console.log(` - ${err}`);
|
|
126
143
|
}
|
|
127
144
|
}
|
|
128
|
-
console.log(`✓ Slash commands available in ${specDir}/commands/speclife/`);
|
|
129
145
|
// Create speclife.md if it doesn't exist
|
|
130
146
|
const speclifeMdPath = join(cwd, specDir, 'speclife.md');
|
|
131
147
|
try {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclife/cli",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "CLI for SpecLife - for CI/scripts",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"vitest": "^2.0.0"
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
|
37
|
-
"dist"
|
|
37
|
+
"dist",
|
|
38
|
+
"templates"
|
|
38
39
|
],
|
|
39
40
|
"publishConfig": {
|
|
40
41
|
"access": "public"
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: /speclife/convert
|
|
3
|
+
id: speclife-convert
|
|
4
|
+
category: SpecLife
|
|
5
|
+
description: Switch between branch-only and worktree modes for current change.
|
|
6
|
+
---
|
|
7
|
+
# /speclife convert
|
|
8
|
+
|
|
9
|
+
Switch between branch-only and worktree modes for current change.
|
|
10
|
+
|
|
11
|
+
## ⚡ Execution
|
|
12
|
+
|
|
13
|
+
**When this command is invoked, IMMEDIATELY execute the workflow below.**
|
|
14
|
+
|
|
15
|
+
- Parse "to worktree" or "to branch" from the invocation
|
|
16
|
+
- Check prerequisites before proceeding
|
|
17
|
+
- Handle uncommitted changes (prompt to commit/stash)
|
|
18
|
+
- Complete the conversion and report next steps
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
/speclife convert to worktree # Branch → Worktree
|
|
24
|
+
/speclife convert to branch # Worktree → Branch
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## When to use
|
|
28
|
+
|
|
29
|
+
**To worktree:** You started simple but now need to work on something else in parallel.
|
|
30
|
+
|
|
31
|
+
**To branch:** Your IDE struggles with worktrees, or you want simpler setup.
|
|
32
|
+
|
|
33
|
+
## Steps
|
|
34
|
+
|
|
35
|
+
### Convert to Worktree
|
|
36
|
+
|
|
37
|
+
Prerequisites:
|
|
38
|
+
- Must be on a `spec/*` branch in main repo
|
|
39
|
+
- Cannot already be in a worktree
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 1. Check we're on a spec branch
|
|
43
|
+
BRANCH=$(git branch --show-current)
|
|
44
|
+
[[ ! "$BRANCH" =~ ^spec/ ]] && error "Not on a spec branch"
|
|
45
|
+
|
|
46
|
+
# 2. Extract change-id
|
|
47
|
+
CHANGE_ID=${BRANCH#spec/}
|
|
48
|
+
|
|
49
|
+
# 3. Check worktree doesn't already exist
|
|
50
|
+
[[ -d "worktrees/$CHANGE_ID" ]] && error "Worktree already exists"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Steps:
|
|
54
|
+
1. **Commit changes** if any uncommitted work exists (or ask user to stash)
|
|
55
|
+
2. **Create worktree** from current branch:
|
|
56
|
+
```bash
|
|
57
|
+
git worktree add worktrees/$CHANGE_ID $BRANCH
|
|
58
|
+
```
|
|
59
|
+
3. **Return to main** in original repo:
|
|
60
|
+
```bash
|
|
61
|
+
git checkout main
|
|
62
|
+
```
|
|
63
|
+
4. **Bootstrap environment** in worktree (symlink node_modules, etc.)
|
|
64
|
+
5. **Report:**
|
|
65
|
+
```
|
|
66
|
+
✓ Created worktree at worktrees/<change-id>/
|
|
67
|
+
✓ Main repo now on main branch
|
|
68
|
+
|
|
69
|
+
Next: cd worktrees/<change-id>/ to continue work
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Convert to Branch
|
|
73
|
+
|
|
74
|
+
Prerequisites:
|
|
75
|
+
- Must be in a worktree (not main repo)
|
|
76
|
+
- Must be on a `spec/*` branch
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Detect if we're in a worktree
|
|
80
|
+
WORKTREE_ROOT=$(git rev-parse --path-format=relative --git-common-dir)
|
|
81
|
+
[[ "$WORKTREE_ROOT" == ".git" ]] && error "Not in a worktree"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Steps:
|
|
85
|
+
1. **Commit changes** if any uncommitted work exists (or ask user to stash)
|
|
86
|
+
2. **Note current branch and worktree path**
|
|
87
|
+
3. **Go to main repo:**
|
|
88
|
+
```bash
|
|
89
|
+
cd $(git worktree list | grep -v '^\[' | head -1 | awk '{print $1}')
|
|
90
|
+
```
|
|
91
|
+
4. **Checkout the branch:**
|
|
92
|
+
```bash
|
|
93
|
+
git checkout $BRANCH
|
|
94
|
+
```
|
|
95
|
+
5. **Remove worktree** (keeps branch):
|
|
96
|
+
```bash
|
|
97
|
+
git worktree remove worktrees/$CHANGE_ID
|
|
98
|
+
```
|
|
99
|
+
6. **Report:**
|
|
100
|
+
```
|
|
101
|
+
✓ Removed worktree
|
|
102
|
+
✓ Now on <branch> in main repo
|
|
103
|
+
|
|
104
|
+
Next: Continue work here. Use /speclife convert to worktree if you need parallel work later.
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Examples
|
|
108
|
+
|
|
109
|
+
**Branch → Worktree:**
|
|
110
|
+
```
|
|
111
|
+
User: /speclife convert to worktree
|
|
112
|
+
|
|
113
|
+
Agent:
|
|
114
|
+
ℹ️ Current: spec/add-oauth on main repo
|
|
115
|
+
✓ Committed pending changes
|
|
116
|
+
✓ Created worktree at worktrees/add-oauth/
|
|
117
|
+
✓ Switched main repo to main branch
|
|
118
|
+
|
|
119
|
+
Next: cd worktrees/add-oauth/
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**Worktree → Branch:**
|
|
123
|
+
```
|
|
124
|
+
User: /speclife convert to branch
|
|
125
|
+
|
|
126
|
+
Agent:
|
|
127
|
+
ℹ️ Current: worktrees/add-oauth/ on spec/add-oauth
|
|
128
|
+
✓ Committed pending changes
|
|
129
|
+
✓ Checked out spec/add-oauth in main repo
|
|
130
|
+
✓ Removed worktree
|
|
131
|
+
|
|
132
|
+
Next: Continue in main repo
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Error Handling
|
|
136
|
+
|
|
137
|
+
**Not on a spec branch:**
|
|
138
|
+
```
|
|
139
|
+
❌ Not on a spec/* branch. This command only works with spec branches.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Already in target mode:**
|
|
143
|
+
```
|
|
144
|
+
ℹ️ Already in worktree mode. Nothing to convert.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Uncommitted changes:**
|
|
148
|
+
```
|
|
149
|
+
⚠️ You have uncommitted changes:
|
|
150
|
+
- src/auth.ts (modified)
|
|
151
|
+
- package.json (modified)
|
|
152
|
+
|
|
153
|
+
Options:
|
|
154
|
+
1. Commit now (recommended)
|
|
155
|
+
2. Stash and continue
|
|
156
|
+
3. Abort
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Notes
|
|
160
|
+
|
|
161
|
+
- Converting preserves all commits and history
|
|
162
|
+
- Branch name stays the same (`spec/<change-id>`)
|
|
163
|
+
- Spec files in `openspec/changes/<change-id>/` work in both modes
|
|
164
|
+
- You can convert back and forth as needed
|
|
165
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# /speclife implement
|
|
2
|
+
|
|
3
|
+
Convenience proxy to `/openspec-apply`.
|
|
4
|
+
|
|
5
|
+
## ⚡ Execution
|
|
6
|
+
|
|
7
|
+
**When this command is invoked, IMMEDIATELY invoke `/openspec-apply`.**
|
|
8
|
+
|
|
9
|
+
This is a thin proxy—do not add additional behavior.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/speclife implement
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Behavior
|
|
18
|
+
|
|
19
|
+
This command exists for users who expect a `/speclife implement` command. It simply proxies to the OpenSpec implementation command.
|
|
20
|
+
|
|
21
|
+
**Action**: Invoke `/openspec-apply`
|
|
22
|
+
|
|
23
|
+
## Why This Exists
|
|
24
|
+
|
|
25
|
+
SpecLife complements OpenSpec rather than duplicating it:
|
|
26
|
+
|
|
27
|
+
- **OpenSpec** handles spec management (proposals, implementation, archiving)
|
|
28
|
+
- **SpecLife** handles git/GitHub automation (worktrees, branches, PRs, releases)
|
|
29
|
+
|
|
30
|
+
For consistency, users should use `/openspec-apply` directly. This proxy exists only for discoverability.
|
|
31
|
+
|
|
32
|
+
## See Also
|
|
33
|
+
|
|
34
|
+
- `/openspec-apply` - The actual implementation command
|
|
35
|
+
- `/openspec-proposal` - Create a new proposal
|
|
36
|
+
- `/speclife start` - Create worktree and optionally scaffold proposal
|
|
37
|
+
|
|
38
|
+
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: /speclife/land
|
|
3
|
+
id: speclife-land
|
|
4
|
+
category: SpecLife
|
|
5
|
+
description: Merge an approved PR, clean up, and trigger auto-release if applicable.
|
|
6
|
+
---
|
|
7
|
+
# /speclife land
|
|
8
|
+
|
|
9
|
+
Merge a PR into main. Works with any PR - yours, team members', or external contributors'.
|
|
10
|
+
|
|
11
|
+
## ⚡ Execution
|
|
12
|
+
|
|
13
|
+
**When this command is invoked, IMMEDIATELY execute the workflow below.**
|
|
14
|
+
|
|
15
|
+
- Do NOT skip steps or ask for excessive confirmation
|
|
16
|
+
- If PR number is provided (#42), use that PR
|
|
17
|
+
- If on a feature branch, find the PR for that branch
|
|
18
|
+
- If on main, prompt for PR number
|
|
19
|
+
- **STOP after reporting—this is a terminal command in the workflow**
|
|
20
|
+
|
|
21
|
+
## TL;DR
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/speclife land # Land PR for current branch
|
|
25
|
+
/speclife land #42 # Land specific PR by number
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Quick flow:**
|
|
29
|
+
1. Find PR (from branch or number)
|
|
30
|
+
2. Verify ready (approved, CI passing)
|
|
31
|
+
3. Detect version bump type (feat → minor, fix → patch)
|
|
32
|
+
4. If major (breaking) → confirm with user
|
|
33
|
+
5. Bump version in feature branch, push
|
|
34
|
+
6. Squash merge PR (version included)
|
|
35
|
+
7. Cleanup (worktree if spec branch)
|
|
36
|
+
8. GitHub Actions auto-creates release
|
|
37
|
+
|
|
38
|
+
## Mode Detection
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
BRANCH=$(git branch --show-current)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
| Invocation | Mode |
|
|
45
|
+
|------------|------|
|
|
46
|
+
| `/speclife land` on feature branch | Land PR for current branch |
|
|
47
|
+
| `/speclife land #42` | Land specific PR |
|
|
48
|
+
| `/speclife land` on main | Prompt for PR number |
|
|
49
|
+
|
|
50
|
+
## Core Steps
|
|
51
|
+
|
|
52
|
+
### 1. Find PR
|
|
53
|
+
```bash
|
|
54
|
+
# By branch
|
|
55
|
+
gh pr view --json number,state,reviewDecision
|
|
56
|
+
|
|
57
|
+
# By number
|
|
58
|
+
gh pr view 42 --json number,state,reviewDecision
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Check Ready
|
|
62
|
+
Required:
|
|
63
|
+
- ✓ State: open
|
|
64
|
+
- ✓ Reviews: approved (or none required)
|
|
65
|
+
- ✓ CI: passing
|
|
66
|
+
- ✓ Mergeable: no conflicts
|
|
67
|
+
|
|
68
|
+
If not ready → report issues and stop.
|
|
69
|
+
|
|
70
|
+
### 3. Detect Version Bump
|
|
71
|
+
Analyze PR title/commits to determine version bump:
|
|
72
|
+
|
|
73
|
+
| Pattern | Bump | Example |
|
|
74
|
+
|---------|------|---------|
|
|
75
|
+
| `feat:` | minor | `feat: add OAuth login` |
|
|
76
|
+
| `fix:` | patch | `fix: correct redirect URL` |
|
|
77
|
+
| `feat!:` or `BREAKING CHANGE` | major | `feat!: redesign auth API` |
|
|
78
|
+
| `docs:`, `chore:`, `test:` | patch | `docs: update README` |
|
|
79
|
+
|
|
80
|
+
### 4. Confirm for Major (Breaking Changes)
|
|
81
|
+
If major bump detected:
|
|
82
|
+
```
|
|
83
|
+
⚠️ Breaking change detected in PR #42.
|
|
84
|
+
This will bump version to v2.0.0 (major).
|
|
85
|
+
|
|
86
|
+
Proceed? (y/n)
|
|
87
|
+
```
|
|
88
|
+
- If user confirms → continue
|
|
89
|
+
- If user declines → abort, suggest `/speclife release --major` for manual control
|
|
90
|
+
|
|
91
|
+
### 5. Bump Version in Feature Branch
|
|
92
|
+
**Do this BEFORE merging, in the feature branch:**
|
|
93
|
+
```bash
|
|
94
|
+
# Get current version
|
|
95
|
+
CURRENT=$(node -p "require('./package.json').version")
|
|
96
|
+
|
|
97
|
+
# Calculate new version
|
|
98
|
+
npm version <patch|minor|major> --no-git-tag-version
|
|
99
|
+
npm version <patch|minor|major> --no-git-tag-version --workspaces
|
|
100
|
+
|
|
101
|
+
# Commit and push to feature branch
|
|
102
|
+
git add -A
|
|
103
|
+
git commit -m "chore(release): v<new-version>"
|
|
104
|
+
git push origin <branch>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
This ensures the version bump is included in the squash merge.
|
|
108
|
+
|
|
109
|
+
### 6. Squash Merge PR
|
|
110
|
+
```bash
|
|
111
|
+
gh pr merge $PR --squash --delete-branch
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
The merged commit includes both the feature AND the version bump.
|
|
115
|
+
|
|
116
|
+
### 7. Update Local
|
|
117
|
+
```bash
|
|
118
|
+
git checkout main
|
|
119
|
+
git pull origin main
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 8. Cleanup
|
|
123
|
+
|
|
124
|
+
| Type | Action |
|
|
125
|
+
|------|--------|
|
|
126
|
+
| Spec branch with worktree | `speclife worktree rm <change-id>` |
|
|
127
|
+
| Spec branch (no worktree) | `git branch -d spec/<change-id>` |
|
|
128
|
+
| Ad-hoc branch | `git branch -d <branch>` (if local exists) |
|
|
129
|
+
| External PR | Nothing (no local branch) |
|
|
130
|
+
|
|
131
|
+
**Detection:**
|
|
132
|
+
```bash
|
|
133
|
+
CHANGE_ID=${BRANCH#spec/}
|
|
134
|
+
WORKTREE_PATH="worktrees/$CHANGE_ID"
|
|
135
|
+
if [[ -d "$WORKTREE_PATH" ]]; then
|
|
136
|
+
speclife worktree rm $CHANGE_ID # removes worktree + branch
|
|
137
|
+
else
|
|
138
|
+
git branch -d $BRANCH # just removes branch
|
|
139
|
+
fi
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 9. Report and STOP
|
|
143
|
+
```
|
|
144
|
+
✓ Bumped version to v1.3.0 (minor)
|
|
145
|
+
✓ Merged PR #42 (squash)
|
|
146
|
+
✓ Cleaned up worktree
|
|
147
|
+
ℹ️ GitHub Actions will create release automatically
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**⛔ STOP HERE.** GitHub Actions will handle tag/release creation.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
<!-- REFERENCE SECTIONS - Read only when needed -->
|
|
155
|
+
|
|
156
|
+
## Appendix: Error Handling
|
|
157
|
+
|
|
158
|
+
**PR not found:**
|
|
159
|
+
```
|
|
160
|
+
❌ No PR found for branch. Run /speclife ship first.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**PR not ready:**
|
|
164
|
+
```
|
|
165
|
+
❌ PR #42 not ready:
|
|
166
|
+
- Review: changes_requested
|
|
167
|
+
- CI: failing
|
|
168
|
+
Address issues and retry.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**Merge conflicts:**
|
|
172
|
+
```
|
|
173
|
+
❌ Merge conflicts detected.
|
|
174
|
+
Run /speclife sync, resolve, push, then retry.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**On main without PR number:**
|
|
178
|
+
```
|
|
179
|
+
ℹ️ On main. Which PR to land?
|
|
180
|
+
Recent PRs:
|
|
181
|
+
#45 - feat: dark mode (approved ✓)
|
|
182
|
+
#44 - fix: memory leak (needs review)
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Appendix: Examples
|
|
186
|
+
|
|
187
|
+
**Spec branch (minor):**
|
|
188
|
+
```
|
|
189
|
+
User: /speclife land
|
|
190
|
+
|
|
191
|
+
Agent:
|
|
192
|
+
✓ PR #42 approved, CI passing
|
|
193
|
+
ℹ️ Detected: feat: → minor bump
|
|
194
|
+
✓ Bumped version to v1.3.0
|
|
195
|
+
✓ Pushed version commit to feature branch
|
|
196
|
+
✓ Merged PR #42 (squash)
|
|
197
|
+
✓ Removed worktree
|
|
198
|
+
ℹ️ GitHub Actions will create release v1.3.0
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**By PR number (external):**
|
|
202
|
+
```
|
|
203
|
+
User: /speclife land #45
|
|
204
|
+
|
|
205
|
+
Agent:
|
|
206
|
+
ℹ️ PR #45 by @contributor
|
|
207
|
+
ℹ️ Detected: fix: → patch bump
|
|
208
|
+
✓ Bumped version to v1.2.4
|
|
209
|
+
✓ Merged PR #45 (squash)
|
|
210
|
+
ℹ️ GitHub Actions will create release v1.2.4
|
|
211
|
+
Thanks @contributor!
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Major version (confirmation required):**
|
|
215
|
+
```
|
|
216
|
+
User: /speclife land
|
|
217
|
+
|
|
218
|
+
Agent:
|
|
219
|
+
✓ PR #50 approved, CI passing
|
|
220
|
+
⚠️ Breaking change detected (feat!:)
|
|
221
|
+
This will bump to v2.0.0 (major).
|
|
222
|
+
Proceed? (y/n)
|
|
223
|
+
|
|
224
|
+
User: y
|
|
225
|
+
|
|
226
|
+
Agent:
|
|
227
|
+
✓ Bumped version to v2.0.0
|
|
228
|
+
✓ Merged PR #50 (squash)
|
|
229
|
+
ℹ️ GitHub Actions will create release v2.0.0
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Major version (user declines):**
|
|
233
|
+
```
|
|
234
|
+
User: /speclife land
|
|
235
|
+
|
|
236
|
+
Agent:
|
|
237
|
+
⚠️ Breaking change detected (feat!:)
|
|
238
|
+
This will bump to v2.0.0 (major).
|
|
239
|
+
Proceed? (y/n)
|
|
240
|
+
|
|
241
|
+
User: n
|
|
242
|
+
|
|
243
|
+
Agent:
|
|
244
|
+
ℹ️ Aborted. When ready, run:
|
|
245
|
+
/speclife release --major
|
|
246
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# /speclife release
|
|
2
|
+
|
|
3
|
+
Create a release with version bump. Used for manual releases (typically major versions).
|
|
4
|
+
|
|
5
|
+
## ⚡ Execution
|
|
6
|
+
|
|
7
|
+
**When this command is invoked, IMMEDIATELY execute the workflow below.**
|
|
8
|
+
|
|
9
|
+
- Check that we're on the main branch
|
|
10
|
+
- Analyze commits to determine version bump (or use explicit flag)
|
|
11
|
+
- Update version files and changelog
|
|
12
|
+
- Commit and push to trigger release workflow
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/speclife release # Auto-detect version bump
|
|
18
|
+
/speclife release --major # Force major version bump
|
|
19
|
+
/speclife release --minor # Force minor version bump
|
|
20
|
+
/speclife release --patch # Force patch version bump
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## When to Use
|
|
24
|
+
|
|
25
|
+
- **Major releases**: Breaking changes that require manual review
|
|
26
|
+
- **Forced releases**: When auto-release is disabled or skipped
|
|
27
|
+
- **Independent releases**: Creating a release without going through `/speclife land`
|
|
28
|
+
|
|
29
|
+
## Preconditions
|
|
30
|
+
|
|
31
|
+
- On `main` branch
|
|
32
|
+
- Working directory clean
|
|
33
|
+
- Changes merged since last release (for auto-detect)
|
|
34
|
+
|
|
35
|
+
## Steps
|
|
36
|
+
|
|
37
|
+
1. **Check branch**: Ensure on `main` branch
|
|
38
|
+
- If not, suggest switching or report error
|
|
39
|
+
|
|
40
|
+
2. **Analyze commits**: Determine suggested version bump
|
|
41
|
+
- Get commits since last tag
|
|
42
|
+
- `feat:` commits → minor
|
|
43
|
+
- `fix:` commits → patch
|
|
44
|
+
- `BREAKING CHANGE` or `!` → major
|
|
45
|
+
- Use explicit flag if provided (--major, --minor, --patch)
|
|
46
|
+
|
|
47
|
+
3. **Get current version**: Read from package.json (or equivalent)
|
|
48
|
+
|
|
49
|
+
4. **Calculate new version**: Apply bump to current version
|
|
50
|
+
- Major: 1.2.3 → 2.0.0
|
|
51
|
+
- Minor: 1.2.3 → 1.3.0
|
|
52
|
+
- Patch: 1.2.3 → 1.2.4
|
|
53
|
+
|
|
54
|
+
5. **Update version file**: Write new version to package.json
|
|
55
|
+
|
|
56
|
+
6. **Update CHANGELOG**: Add release notes
|
|
57
|
+
- Group commits by type (Features, Fixes, etc.)
|
|
58
|
+
- Include commit messages and PR references
|
|
59
|
+
|
|
60
|
+
7. **Commit**: `git commit -am "chore(release): vX.X.X"`
|
|
61
|
+
- This commit message triggers the release workflow
|
|
62
|
+
|
|
63
|
+
8. **Push**: `git push origin main`
|
|
64
|
+
|
|
65
|
+
9. **Create release PR** (optional, for review):
|
|
66
|
+
- If major release, create PR for review
|
|
67
|
+
- If patch/minor with auto-merge, push directly
|
|
68
|
+
|
|
69
|
+
10. **Report**: Show next steps
|
|
70
|
+
|
|
71
|
+
## Example
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
User: /speclife release --major
|
|
75
|
+
|
|
76
|
+
Agent:
|
|
77
|
+
Analyzing commits since v1.2.3...
|
|
78
|
+
- feat: add OAuth login (breaking: changes auth API)
|
|
79
|
+
- fix: correct redirect URL
|
|
80
|
+
- docs: update API documentation
|
|
81
|
+
|
|
82
|
+
Current version: 1.2.3
|
|
83
|
+
New version: 2.0.0 (major bump)
|
|
84
|
+
|
|
85
|
+
✓ Updated package.json to 2.0.0
|
|
86
|
+
✓ Updated CHANGELOG.md
|
|
87
|
+
✓ Committed: "chore(release): v2.0.0"
|
|
88
|
+
✓ Pushed to origin/main
|
|
89
|
+
|
|
90
|
+
Release workflow triggered. GitHub Actions will:
|
|
91
|
+
1. Create tag v2.0.0
|
|
92
|
+
2. Create GitHub Release with notes
|
|
93
|
+
3. Publish to npm (if configured)
|
|
94
|
+
|
|
95
|
+
Done! Release v2.0.0 is being created.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Release Workflow
|
|
99
|
+
|
|
100
|
+
When the `chore(release): vX.X.X` commit is pushed, the GitHub Actions workflow (`.github/workflows/speclife-release.yml`) automatically:
|
|
101
|
+
|
|
102
|
+
1. Extracts version from commit message
|
|
103
|
+
2. Creates git tag
|
|
104
|
+
3. Creates GitHub Release with auto-generated notes
|
|
105
|
+
4. Optionally publishes to package registry
|
|
106
|
+
|
|
107
|
+
## Notes
|
|
108
|
+
|
|
109
|
+
- For patch/minor releases, prefer using `/speclife land` which handles auto-release
|
|
110
|
+
- Major releases should go through this command for explicit control
|
|
111
|
+
- The release commit message format `chore(release): vX.X.X` is required for the workflow
|
|
112
|
+
|
|
113
|
+
|