project-version-workflow
Manage project's versions and iterations by a standard workflow on Claude Code. Generates a daily version tag (e.g. v260416), records the ch
Open source Repository Open in the app JSON README (API)
About
Manage project's versions and iterations by a standard workflow on Claude Code. Generates a daily version tag (e.g. v260416), records the changes in update_log.txt along with the git username when available, commits them, and optionally pushes to remote. It checks for a clean repo, asks you to confirm the change summary, warns about sensitive files, and never force-pushes.
Details
- Kind
- Plugins
- Topic
- Version control
- Publisher
- atreep
- Origin
- marketplace
- Category
- ferramentas
- Last push
- 2026-06-27T04:19:55Z
- Repository state
- ativo
- Added
- 2026-08-30 01:48:58
- Updated
- 2026-08-30 01:48:58
- Origin id
atreep/project-version-workflow/project-version-workflow
README
# Project Version Workflow (PVW)
A Claude Code plugin that automates dated version tagging, professional conventional commits, and git tag management through a deterministic, step-by-step workflow.
## Installation
### As a Plugin (Recommended)
```bash
/plugin marketplace add ATreep/project-version-workflow
/plugin install project-version-workflow
```
Invoke with the plugin namespace:
```
/project-version-workflow:update-commit
/project-version-workflow:update-commit-bypass
/project-version-workflow:view-update-log
```
### As a Standalone Skill
Copy the `skills` directory into your Claude Code skills folder:
```bash
cp -r skills/* ~/.claude/skills/
```
Then use the short-form commands:
```
/update-commit
/update-commit-bypass
/view-update-log
```
## Skills
### `/update-commit`
Interactive workflow that generates a dated version, drafts a professional commit message, creates an annotated git tag, and optionally pushes.
**Commit message format:**
```
v260503 feat. add macOS .DS_Store gitignore check
1. Add .DS_Store detection on macOS in Step 3
2. Create .gitignore automatically when missing
3. Stage .gitignore before committing
```
The subject line uses a conventional commit type (`feat.` / `fix.` / `docs.` / `refactor.` / `perf.` / `chore.` / `style.`), and the body lists each meaningful change as a numbered item.
**Workflow:**
```text
0. Preflight Verify git repo, check working tree state
1. Version Capture current date+time, form vYYMMDD-HHmmss (e.g., v260601-145633)
2. Draft message Classify change type, draft subject + body, confirm with user
3. .DS_Store Auto-ignore on macOS if not already ignored
4. Commit Stage files explicitly, sensitive-file check, commit
5. Git tag Create annotated tag matching the version
6. Push Ask user whether to push branch + tags to remote
```
```mermaid
flowchart TD
A[Check git repo] -->|Not a repo| B[Offer git init]
A -->|OK| C[Check working tree]
C -->|Clean| D[Stop — nothing to commit]
C -->|Dirty| E[Compute next version]
E --> F[Draft commit message]
F --> G{Confirm?}
G -->|Modify| F
G -->|Cancel| D
G -->|Use as-is| H[Ensure .DS_Store ignored]
H --> I[Stage files + sensitive check]
I --> J[Commit]
J -->|Fail| K[Stop — report error]
J -->|OK| L[Create git tag]
L --> M{Push?}
M -->|Yes| N[Push branch + tags]
N -->|Reject| K
M -->|No| O[Done]
N -->|OK| O
```
**Version numbering:**
- Each version uses the format `vYYMMDD-HHmmss` (e.g., `v260601-145633`).
- The suffix is a timestamp (HHmmss = hour, minute, second), not a sequential counter.
- Each invocation produces a unique version thanks to the timestamp.
- The date prefix resets each calendar day at midnight.
### `/update-commit-bypass`
Non-interactive variant of `/update-commit`. Resolves every confirmation prompt to its default. Never asks the user anything.
| Decision point | `/update-commit` | `/update-commit-bypass` |
|---|---|---|
| Not a git repo | Ask | Auto `git init` |
| Commit message | Confirm with user | Use draft as-is |
| Sensitive files | Ask | Auto-unstage + warn |
| Git tag | Create (same) | Create (same) |
| Push | Ask | Auto-push with tags |
Suitable for CI pipelines, automation loops, or hands-off workflows.
### `/view-update-log`
Read-only viewer for the project's update history, sourced from git commit messages.
| Invocation | Output |
|---|---|
| `/view-update-log` | Latest commit + hint about history |
| `/view-update-log history` | Last 10 commits |
| `/view-update-log history N` | Last N commits |
| `/view-update-log v260502` | Full details of a specific version |
| `/view-update-log today` | All commits from today |
| `/view-update-log week` | All commits from the past 7 days |
## Design Decisions
**Explicit staging.** Files are staged by name, never with `git add .` or `git add -A`. This prevents accidental inclusion of untracked or sensitive files.
**No force operations.** The workflow never uses `--force`, `--no-verify`, or `--no-gpg-sign`. If a push is rejected, the error is reported and execution stops.
**Deterministic versioning.** Version tags are computed from the current date and existing commit history. The algorithm is fully specified in the skill document — there is no ambiguity in version selection.
**Annotated git tags.** Every version is recorded as an annotated tag (`git tag -a`), not a lightweight tag. This preserves the version message in the repository's tag metadata.