@zigrivers/scaffold 2.38.1 → 2.44.2
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/README.md +10 -7
- package/dist/cli/commands/build.js +4 -4
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/check.test.js +11 -8
- package/dist/cli/commands/check.test.js.map +1 -1
- package/dist/cli/commands/complete.d.ts.map +1 -1
- package/dist/cli/commands/complete.js +2 -1
- package/dist/cli/commands/complete.js.map +1 -1
- package/dist/cli/commands/complete.test.js +4 -1
- package/dist/cli/commands/complete.test.js.map +1 -1
- package/dist/cli/commands/dashboard.js +4 -4
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/knowledge.js +2 -2
- package/dist/cli/commands/knowledge.js.map +1 -1
- package/dist/cli/commands/knowledge.test.js +5 -12
- package/dist/cli/commands/knowledge.test.js.map +1 -1
- package/dist/cli/commands/list.d.ts +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +84 -3
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/list.test.js +82 -0
- package/dist/cli/commands/list.test.js.map +1 -1
- package/dist/cli/commands/next.test.js +4 -1
- package/dist/cli/commands/next.test.js.map +1 -1
- package/dist/cli/commands/reset.d.ts.map +1 -1
- package/dist/cli/commands/reset.js +5 -2
- package/dist/cli/commands/reset.js.map +1 -1
- package/dist/cli/commands/reset.test.js +4 -1
- package/dist/cli/commands/reset.test.js.map +1 -1
- package/dist/cli/commands/rework.d.ts.map +1 -1
- package/dist/cli/commands/rework.js +3 -2
- package/dist/cli/commands/rework.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +28 -13
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/run.test.js +1 -1
- package/dist/cli/commands/run.test.js.map +1 -1
- package/dist/cli/commands/skip.d.ts.map +1 -1
- package/dist/cli/commands/skip.js +2 -1
- package/dist/cli/commands/skip.js.map +1 -1
- package/dist/cli/commands/skip.test.js +4 -1
- package/dist/cli/commands/skip.test.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +88 -4
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +19 -3
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/version.test.js +41 -0
- package/dist/cli/commands/version.test.js.map +1 -1
- package/dist/cli/output/context.test.js +14 -13
- package/dist/cli/output/context.test.js.map +1 -1
- package/dist/cli/output/interactive.js +4 -4
- package/dist/cli/output/json.d.ts +1 -0
- package/dist/cli/output/json.d.ts.map +1 -1
- package/dist/cli/output/json.js +14 -1
- package/dist/cli/output/json.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +10 -3
- package/dist/config/loader.js.map +1 -1
- package/dist/config/loader.test.js +28 -0
- package/dist/config/loader.test.js.map +1 -1
- package/dist/core/assembly/engine.d.ts.map +1 -1
- package/dist/core/assembly/engine.js +6 -1
- package/dist/core/assembly/engine.js.map +1 -1
- package/dist/e2e/init.test.js +3 -0
- package/dist/e2e/init.test.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/project/adopt.test.js +3 -0
- package/dist/project/adopt.test.js.map +1 -1
- package/dist/project/claude-md.d.ts.map +1 -1
- package/dist/project/claude-md.js +2 -1
- package/dist/project/claude-md.js.map +1 -1
- package/dist/project/detector.js +3 -3
- package/dist/project/detector.js.map +1 -1
- package/dist/project/signals.d.ts +1 -0
- package/dist/project/signals.d.ts.map +1 -1
- package/dist/state/decision-logger.d.ts.map +1 -1
- package/dist/state/decision-logger.js +7 -4
- package/dist/state/decision-logger.js.map +1 -1
- package/dist/state/lock-manager.js +1 -1
- package/dist/state/lock-manager.js.map +1 -1
- package/dist/state/lock-manager.test.js +27 -3
- package/dist/state/lock-manager.test.js.map +1 -1
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +6 -0
- package/dist/state/state-manager.js.map +1 -1
- package/dist/state/state-manager.test.js +7 -0
- package/dist/state/state-manager.test.js.map +1 -1
- package/dist/types/assembly.d.ts +2 -0
- package/dist/types/assembly.d.ts.map +1 -1
- package/dist/utils/eligible.d.ts +8 -0
- package/dist/utils/eligible.d.ts.map +1 -0
- package/dist/utils/eligible.js +36 -0
- package/dist/utils/eligible.js.map +1 -0
- package/dist/validation/config-validator.test.js +15 -13
- package/dist/validation/config-validator.test.js.map +1 -1
- package/dist/validation/index.test.js +1 -1
- package/dist/wizard/wizard.d.ts.map +1 -1
- package/dist/wizard/wizard.js +1 -0
- package/dist/wizard/wizard.js.map +1 -1
- package/dist/wizard/wizard.test.js +2 -0
- package/dist/wizard/wizard.test.js.map +1 -1
- package/knowledge/core/automated-review-tooling.md +4 -4
- package/knowledge/core/eval-craft.md +44 -0
- package/knowledge/core/multi-model-review-dispatch.md +8 -0
- package/knowledge/core/system-architecture.md +39 -0
- package/knowledge/core/task-decomposition.md +53 -0
- package/knowledge/core/testing-strategy.md +160 -0
- package/knowledge/finalization/implementation-playbook.md +24 -7
- package/knowledge/product/prd-craft.md +41 -0
- package/knowledge/review/review-adr.md +1 -1
- package/knowledge/review/review-api-design.md +1 -1
- package/knowledge/review/review-database-design.md +1 -1
- package/knowledge/review/review-domain-modeling.md +1 -1
- package/knowledge/review/review-implementation-tasks.md +1 -1
- package/knowledge/review/review-methodology.md +1 -1
- package/knowledge/review/review-operations.md +1 -1
- package/knowledge/review/review-prd.md +1 -1
- package/knowledge/review/review-security.md +1 -1
- package/knowledge/review/review-system-architecture.md +1 -1
- package/knowledge/review/review-testing-strategy.md +1 -1
- package/knowledge/review/review-user-stories.md +1 -1
- package/knowledge/review/review-ux-specification.md +1 -1
- package/knowledge/review/review-vision.md +1 -1
- package/knowledge/tools/post-implementation-review-methodology.md +107 -0
- package/knowledge/validation/critical-path-analysis.md +13 -0
- package/knowledge/validation/implementability-review.md +14 -0
- package/package.json +2 -1
- package/pipeline/architecture/review-architecture.md +8 -5
- package/pipeline/architecture/system-architecture.md +9 -3
- package/pipeline/build/multi-agent-resume.md +21 -7
- package/pipeline/build/multi-agent-start.md +22 -7
- package/pipeline/build/new-enhancement.md +20 -12
- package/pipeline/build/quick-task.md +18 -11
- package/pipeline/build/single-agent-resume.md +20 -6
- package/pipeline/build/single-agent-start.md +24 -8
- package/pipeline/consolidation/claude-md-optimization.md +8 -4
- package/pipeline/consolidation/workflow-audit.md +9 -5
- package/pipeline/decisions/adrs.md +7 -3
- package/pipeline/decisions/review-adrs.md +8 -5
- package/pipeline/environment/ai-memory-setup.md +6 -2
- package/pipeline/environment/automated-pr-review.md +79 -12
- package/pipeline/environment/design-system.md +9 -6
- package/pipeline/environment/dev-env-setup.md +8 -5
- package/pipeline/environment/git-workflow.md +16 -13
- package/pipeline/finalization/apply-fixes-and-freeze.md +10 -5
- package/pipeline/finalization/developer-onboarding-guide.md +10 -3
- package/pipeline/finalization/implementation-playbook.md +13 -4
- package/pipeline/foundation/beads.md +8 -5
- package/pipeline/foundation/coding-standards.md +13 -10
- package/pipeline/foundation/project-structure.md +16 -13
- package/pipeline/foundation/tdd.md +9 -4
- package/pipeline/foundation/tech-stack.md +7 -5
- package/pipeline/integration/add-e2e-testing.md +12 -8
- package/pipeline/modeling/domain-modeling.md +9 -7
- package/pipeline/modeling/review-domain-modeling.md +8 -6
- package/pipeline/parity/platform-parity-review.md +9 -6
- package/pipeline/planning/implementation-plan-review.md +10 -7
- package/pipeline/planning/implementation-plan.md +41 -9
- package/pipeline/pre/create-prd.md +7 -4
- package/pipeline/pre/innovate-prd.md +12 -8
- package/pipeline/pre/innovate-user-stories.md +10 -7
- package/pipeline/pre/review-prd.md +12 -10
- package/pipeline/pre/review-user-stories.md +12 -9
- package/pipeline/pre/user-stories.md +7 -4
- package/pipeline/quality/create-evals.md +6 -3
- package/pipeline/quality/operations.md +7 -3
- package/pipeline/quality/review-operations.md +12 -5
- package/pipeline/quality/review-security.md +11 -6
- package/pipeline/quality/review-testing.md +11 -6
- package/pipeline/quality/security.md +6 -2
- package/pipeline/quality/story-tests.md +14 -9
- package/pipeline/specification/api-contracts.md +9 -3
- package/pipeline/specification/database-schema.md +8 -2
- package/pipeline/specification/review-api.md +10 -4
- package/pipeline/specification/review-database.md +8 -3
- package/pipeline/specification/review-ux.md +9 -3
- package/pipeline/specification/ux-spec.md +9 -4
- package/pipeline/validation/critical-path-walkthrough.md +10 -5
- package/pipeline/validation/cross-phase-consistency.md +9 -4
- package/pipeline/validation/decision-completeness.md +8 -3
- package/pipeline/validation/dependency-graph-validation.md +8 -3
- package/pipeline/validation/implementability-dry-run.md +9 -5
- package/pipeline/validation/scope-creep-check.md +11 -6
- package/pipeline/validation/traceability-matrix.md +10 -5
- package/pipeline/vision/create-vision.md +7 -4
- package/pipeline/vision/innovate-vision.md +11 -8
- package/pipeline/vision/review-vision.md +15 -12
- package/skills/multi-model-dispatch/SKILL.md +6 -5
- package/skills/scaffold-runner/SKILL.md +47 -3
- package/tools/dashboard.md +53 -0
- package/tools/post-implementation-review.md +655 -0
- package/tools/prompt-pipeline.md +160 -0
- package/tools/release.md +435 -0
- package/tools/review-pr.md +229 -0
- package/tools/session-analyzer.md +299 -0
- package/tools/update.md +113 -0
- package/tools/version-bump.md +290 -0
- package/tools/version.md +82 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: version-bump
|
|
3
|
+
description: Bump version and update changelog without tagging or releasing
|
|
4
|
+
phase: null
|
|
5
|
+
order: null
|
|
6
|
+
dependencies: []
|
|
7
|
+
outputs: []
|
|
8
|
+
conditional: null
|
|
9
|
+
stateless: true
|
|
10
|
+
category: tool
|
|
11
|
+
knowledge-base: [version-strategy]
|
|
12
|
+
argument-hint: "<major|minor|patch or --dry-run>"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Purpose
|
|
16
|
+
|
|
17
|
+
Bump the project version and update the changelog without tagging, pushing, or
|
|
18
|
+
creating a GitHub release. A lightweight companion to `/scaffold:release` for
|
|
19
|
+
marking development milestones — like completing a set of user stories or
|
|
20
|
+
reaching a pre-release checkpoint.
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
$ARGUMENTS — parsed as:
|
|
25
|
+
|
|
26
|
+
| Argument | Mode |
|
|
27
|
+
|----------|------|
|
|
28
|
+
| _(empty)_ | **Auto** — analyze commits, suggest bump |
|
|
29
|
+
| `major`, `minor`, or `patch` | **Explicit** — skip analysis, use specified bump |
|
|
30
|
+
| `--dry-run` | **Dry Run** — preview only, zero mutations |
|
|
31
|
+
|
|
32
|
+
Combine flags freely (e.g., `minor --dry-run`).
|
|
33
|
+
|
|
34
|
+
## Expected Outputs
|
|
35
|
+
|
|
36
|
+
- Version files updated to new version
|
|
37
|
+
- `CHANGELOG.md` updated (or created) with grouped commit entries
|
|
38
|
+
- Single commit with message `chore(version): vX.Y.Z`
|
|
39
|
+
|
|
40
|
+
No tags, no push, no GitHub release.
|
|
41
|
+
|
|
42
|
+
## Instructions
|
|
43
|
+
|
|
44
|
+
### Phase 0: Project Detection
|
|
45
|
+
|
|
46
|
+
Gather project context before proceeding.
|
|
47
|
+
|
|
48
|
+
#### 0.1 Git State
|
|
49
|
+
|
|
50
|
+
1. Record the current branch name (`git branch --show-current`).
|
|
51
|
+
2. Check if the working tree is clean (`git status --porcelain`). If dirty, **warn** (do not block): "Working tree has uncommitted changes. They will not be included in the version bump."
|
|
52
|
+
3. Fetch tags: `git fetch --tags`.
|
|
53
|
+
|
|
54
|
+
#### 0.2 Version File Detection
|
|
55
|
+
|
|
56
|
+
Scan the project root for version files. For each found file, record the current version:
|
|
57
|
+
|
|
58
|
+
| File | How to Read Version |
|
|
59
|
+
|------|-------------------|
|
|
60
|
+
| `package.json` | `.version` field |
|
|
61
|
+
| `pyproject.toml` | `[project].version` or `[tool.poetry].version` |
|
|
62
|
+
| `Cargo.toml` | `[package].version` |
|
|
63
|
+
| `.claude-plugin/plugin.json` | `.version` field |
|
|
64
|
+
| `pubspec.yaml` | `version:` field |
|
|
65
|
+
| `setup.cfg` | `[metadata].version` |
|
|
66
|
+
| `version.txt` | Entire file contents (trimmed) |
|
|
67
|
+
|
|
68
|
+
#### 0.3 Project Context
|
|
69
|
+
|
|
70
|
+
- Check for `.beads/` directory — enables Beads integration in changelog.
|
|
71
|
+
- Check for existing `CHANGELOG.md`.
|
|
72
|
+
- List existing `v*` tags: `git tag -l 'v*' --sort=-v:refname | head -5`.
|
|
73
|
+
|
|
74
|
+
#### 0.4 Mode Selection
|
|
75
|
+
|
|
76
|
+
Parse `$ARGUMENTS` to determine the mode:
|
|
77
|
+
|
|
78
|
+
| Argument | Mode |
|
|
79
|
+
|----------|------|
|
|
80
|
+
| _(empty)_ | **Auto** — analyze commits, suggest bump |
|
|
81
|
+
| `major`, `minor`, or `patch` | **Explicit** — skip analysis, use specified bump |
|
|
82
|
+
| `--dry-run` | **Dry Run** — preview only, zero mutations |
|
|
83
|
+
|
|
84
|
+
If `--dry-run` is combined with a bump type (e.g., `minor --dry-run`), use both: explicit bump + dry-run mode.
|
|
85
|
+
|
|
86
|
+
#### 0.5 First-Bump Detection
|
|
87
|
+
|
|
88
|
+
If **no** version files are found **and** no `v*` tags exist:
|
|
89
|
+
|
|
90
|
+
1. Detect project type from manifest files (`package.json`, `Cargo.toml`, `pyproject.toml`, etc.).
|
|
91
|
+
2. Offer to create the appropriate version file:
|
|
92
|
+
- `package.json` exists but has no `"version"` — add `"version": "0.1.0"` field.
|
|
93
|
+
- Python project — create `version.txt` with `0.1.0`.
|
|
94
|
+
- No manifest — create `version.txt` with `0.1.0`.
|
|
95
|
+
3. Ask the user: "No version files found. Create `<file>` with version `0.1.0`?" Confirm before proceeding.
|
|
96
|
+
|
|
97
|
+
If **no** `v*` tags exist but version files **do** exist, note the current version — commit analysis will use all commits.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Phase 1: Version Analysis
|
|
102
|
+
|
|
103
|
+
**Skip this phase if:** Explicit mode or first-bump mode (Phase 0.5 just created the version file).
|
|
104
|
+
|
|
105
|
+
#### 1.1 Collect Commits
|
|
106
|
+
|
|
107
|
+
Get commits since the last tag (or all commits if no tags):
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
git log <last-tag>..HEAD --oneline --no-merges
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
If no tags exist, use all commits: `git log --oneline --no-merges`.
|
|
114
|
+
|
|
115
|
+
#### 1.2 Parse Conventional Commits
|
|
116
|
+
|
|
117
|
+
Categorize each commit:
|
|
118
|
+
|
|
119
|
+
| Pattern | Bump |
|
|
120
|
+
|---------|------|
|
|
121
|
+
| `feat:` or `feat(scope):` | minor |
|
|
122
|
+
| `fix:` or `fix(scope):` | patch |
|
|
123
|
+
| `BREAKING CHANGE:` in body or `!:` suffix | major |
|
|
124
|
+
| `perf:`, `refactor:`, `docs:`, `chore:`, `style:`, `test:`, `build:`, `ci:` | patch (non-feature change) |
|
|
125
|
+
|
|
126
|
+
Apply the **highest-wins** rule.
|
|
127
|
+
|
|
128
|
+
#### 1.3 Present Analysis
|
|
129
|
+
|
|
130
|
+
Show the user:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Commits since <last-tag>: <count>
|
|
134
|
+
feat: <count> commits
|
|
135
|
+
fix: <count> commits
|
|
136
|
+
other: <count> commits
|
|
137
|
+
BREAKING: <yes/no>
|
|
138
|
+
|
|
139
|
+
Suggested bump: <major|minor|patch>
|
|
140
|
+
<current-version> → <new-version>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Ask: "Confirm this bump, or override? (major / minor / patch / confirm)"
|
|
144
|
+
|
|
145
|
+
If **no conventional commits** were found, fall back: "No conventional commits found. What type of bump? (major / minor / patch)"
|
|
146
|
+
|
|
147
|
+
Record the confirmed version.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### Phase 2: Changelog
|
|
152
|
+
|
|
153
|
+
**In dry-run mode:** Display the changelog preview but do not write to disk. Skip to Phase 4 (summary).
|
|
154
|
+
|
|
155
|
+
#### 2.1 Group Commits
|
|
156
|
+
|
|
157
|
+
Group commits since the last tag (or all commits for first bump) by type:
|
|
158
|
+
|
|
159
|
+
```markdown
|
|
160
|
+
## [vX.Y.Z] - YYYY-MM-DD
|
|
161
|
+
|
|
162
|
+
### Added
|
|
163
|
+
- feat: description (commit-hash)
|
|
164
|
+
|
|
165
|
+
### Fixed
|
|
166
|
+
- fix: description (commit-hash)
|
|
167
|
+
|
|
168
|
+
### Changed
|
|
169
|
+
- refactor: description (commit-hash)
|
|
170
|
+
- perf: description (commit-hash)
|
|
171
|
+
|
|
172
|
+
### Other
|
|
173
|
+
- chore: description (commit-hash)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Omit empty sections. Use the commit's first line (without the type prefix) as the description.
|
|
177
|
+
|
|
178
|
+
#### 2.2 Beads Integration (conditional)
|
|
179
|
+
|
|
180
|
+
If `.beads/` exists:
|
|
181
|
+
|
|
182
|
+
1. Run `bd list --status closed` (or parse `.beads/issues.jsonl` for closed issues).
|
|
183
|
+
2. Cross-reference closed tasks with the commit range (match task IDs like `BD-xxx` or `scaffold-xxx` in commit messages).
|
|
184
|
+
3. If matches found, append a section:
|
|
185
|
+
|
|
186
|
+
```markdown
|
|
187
|
+
### Completed Tasks
|
|
188
|
+
- [BD-xxx] Task title
|
|
189
|
+
- [BD-yyy] Task title
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
If `.beads/` does not exist or no tasks match, silently skip.
|
|
193
|
+
|
|
194
|
+
#### 2.3 Write Changelog
|
|
195
|
+
|
|
196
|
+
- If `CHANGELOG.md` exists: prepend the new entry after the `# Changelog` heading (or after any header block).
|
|
197
|
+
- If `CHANGELOG.md` does not exist: create it with:
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
# Changelog
|
|
201
|
+
|
|
202
|
+
All notable changes to this project will be documented in this file.
|
|
203
|
+
|
|
204
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
205
|
+
|
|
206
|
+
## [vX.Y.Z] - YYYY-MM-DD
|
|
207
|
+
...
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### Phase 3: Version Bump & Commit
|
|
213
|
+
|
|
214
|
+
**In dry-run mode:** Show which files would change and the commit message. Skip to Phase 4.
|
|
215
|
+
|
|
216
|
+
#### 3.1 Update Version Files
|
|
217
|
+
|
|
218
|
+
For each version file detected in Phase 0.2, update the version to the new value.
|
|
219
|
+
|
|
220
|
+
#### 3.2 Sync Lock Files
|
|
221
|
+
|
|
222
|
+
If applicable:
|
|
223
|
+
- `package-lock.json` exists — run `npm install --package-lock-only`
|
|
224
|
+
- `Cargo.lock` exists — run `cargo update -w`
|
|
225
|
+
|
|
226
|
+
#### 3.3 Commit
|
|
227
|
+
|
|
228
|
+
Stage all changed files and commit:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
git add <changed-files>
|
|
232
|
+
git commit -m "chore(version): vX.Y.Z"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
If Beads is configured (`.beads/` exists) and a task is active, include the task ID: `[BD-xxx] chore(version): vX.Y.Z`.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
### Phase 4: Summary
|
|
240
|
+
|
|
241
|
+
Show the final summary:
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
Version bump complete!
|
|
245
|
+
|
|
246
|
+
<current-version> → <new-version>
|
|
247
|
+
Version files updated: <list>
|
|
248
|
+
Changelog: CHANGELOG.md updated
|
|
249
|
+
|
|
250
|
+
This was a version bump only — no tags, no push, no GitHub release.
|
|
251
|
+
When ready for a formal release: /scaffold:release current
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
In dry-run mode:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
Dry-run complete — no changes were made.
|
|
258
|
+
|
|
259
|
+
Would bump: <current> → <new>
|
|
260
|
+
Would update: <version-files>
|
|
261
|
+
Would create/update: CHANGELOG.md entry
|
|
262
|
+
|
|
263
|
+
Run /scaffold:version-bump to execute.
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Process Rules
|
|
269
|
+
|
|
270
|
+
1. **No quality gates** — this is a lightweight milestone marker.
|
|
271
|
+
2. **No tags, no push, no GitHub release** — use `/scaffold:release` for the full ceremony.
|
|
272
|
+
3. **Dry-run: zero mutations** — no file writes, no git operations.
|
|
273
|
+
4. **Beads integration is optional** — silently skip if `.beads/` doesn't exist.
|
|
274
|
+
5. **Dirty working tree: warn only** — do not block.
|
|
275
|
+
6. **Commit prefix is `chore(version):`** — distinct from release's `chore(release):`.
|
|
276
|
+
|
|
277
|
+
## After This Step
|
|
278
|
+
|
|
279
|
+
When this step is complete, tell the user:
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
**Version bump complete** — version files updated, changelog written, commit created.
|
|
283
|
+
|
|
284
|
+
**Next (if applicable):**
|
|
285
|
+
- When ready for a formal release: Run `/scaffold:release current` — Tag, publish, and create a GitHub release for the version already in files.
|
|
286
|
+
- If follow-up tasks are needed: Run `/scaffold:quick-task` — Create a focused task for post-bump work.
|
|
287
|
+
|
|
288
|
+
**Pipeline reference:** `/scaffold:prompt-pipeline`
|
|
289
|
+
|
|
290
|
+
---
|
package/tools/version.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: version
|
|
3
|
+
description: Show installed and latest scaffold version
|
|
4
|
+
phase: null
|
|
5
|
+
order: null
|
|
6
|
+
dependencies: []
|
|
7
|
+
outputs: []
|
|
8
|
+
conditional: null
|
|
9
|
+
stateless: true
|
|
10
|
+
category: tool
|
|
11
|
+
knowledge-base: []
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
Show the installed scaffold version and check if a newer version is available.
|
|
17
|
+
A read-only diagnostic — no files are modified.
|
|
18
|
+
|
|
19
|
+
## Instructions
|
|
20
|
+
|
|
21
|
+
### Step 1 — Detect Installed Version
|
|
22
|
+
|
|
23
|
+
Determine the currently installed scaffold version using this detection cascade (stop at the first match):
|
|
24
|
+
|
|
25
|
+
1. **User-command install:** Run `cat ~/.claude/commands/.scaffold-version 2>/dev/null` to check for the user-command version marker.
|
|
26
|
+
- If the file exists, parse the version from it (format: `1.2.0 (abc1234)` — extract the version number before the space).
|
|
27
|
+
|
|
28
|
+
2. **Plugin install (clone):** Read the version from the marketplace clone's plugin manifest:
|
|
29
|
+
```bash
|
|
30
|
+
cat ~/.claude/plugins/marketplaces/zigrivers-scaffold/.claude-plugin/plugin.json 2>/dev/null
|
|
31
|
+
```
|
|
32
|
+
Extract the `version` field from the JSON.
|
|
33
|
+
|
|
34
|
+
3. **Plugin install (metadata fallback):** Read the version from Claude Code's plugin registry:
|
|
35
|
+
```bash
|
|
36
|
+
cat ~/.claude/plugins/installed_plugins.json 2>/dev/null
|
|
37
|
+
```
|
|
38
|
+
Find the entry for `scaffold@zigrivers-scaffold` and extract its `version` field.
|
|
39
|
+
|
|
40
|
+
4. **Final fallback:** If none of the above worked, report the installed version as "unknown".
|
|
41
|
+
|
|
42
|
+
Store the detected version for comparison.
|
|
43
|
+
|
|
44
|
+
### Step 2 — Fetch Latest Version
|
|
45
|
+
|
|
46
|
+
Check the latest available version from GitHub:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -sf https://raw.githubusercontent.com/zigrivers/scaffold/main/CHANGELOG.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
From the output, extract the version number from the **first** `## [X.Y.Z]` line. This is the latest released version.
|
|
53
|
+
|
|
54
|
+
If the `curl` command fails (non-zero exit, empty output), note that the remote check failed and skip to Step 3.
|
|
55
|
+
|
|
56
|
+
### Step 3 — Compare and Report
|
|
57
|
+
|
|
58
|
+
Display the results to the user:
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
**Scaffold version check**
|
|
63
|
+
|
|
64
|
+
- **Installed:** `<installed version>`
|
|
65
|
+
- **Latest:** `<latest version>` (or "couldn't reach GitHub" if the remote check failed)
|
|
66
|
+
- **Status:** one of:
|
|
67
|
+
- "Up to date" — if installed version matches latest
|
|
68
|
+
- "Update available" — if latest is newer than installed
|
|
69
|
+
- "Couldn't check remote" — if the fetch failed
|
|
70
|
+
|
|
71
|
+
If an update is available, suggest:
|
|
72
|
+
|
|
73
|
+
> Run `/scaffold:update` (or `/user:update` for user-command installs) to update.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Process Rules
|
|
78
|
+
|
|
79
|
+
1. **Read-only** — do NOT modify any files.
|
|
80
|
+
2. Run each step in order.
|
|
81
|
+
3. If the remote check fails, still report the installed version — don't treat it as an error.
|
|
82
|
+
4. Keep the output concise — no extra explanation beyond the version report.
|