docs: add finish-up skill design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
61
docs/plans/2026-02-23-finish-up-skill-design.md
Normal file
61
docs/plans/2026-02-23-finish-up-skill-design.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# /finish-up Skill Design
|
||||||
|
|
||||||
|
**Date:** 2026-02-23
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
A Claude Code slash command (`/finish-up`) that scans git projects for uncommitted changes and unpushed commits, reports findings, then autonomously commits and pushes selected projects via parallel subagents.
|
||||||
|
|
||||||
|
## Behavior
|
||||||
|
|
||||||
|
### Context Detection
|
||||||
|
|
||||||
|
- If CWD is `C:\Users\aisaacs\Desktop\Projects` (or not inside a git repo), scan all subdirectories
|
||||||
|
- If CWD is inside a specific project, scan just that project
|
||||||
|
|
||||||
|
### Phase 1 - Scan
|
||||||
|
|
||||||
|
Run a `git-status-check.sh` script from the Projects directory that:
|
||||||
|
- Checks each git repo for uncommitted changes (`git status --porcelain`)
|
||||||
|
- Checks for unpushed commits (`git log @{u}..HEAD --oneline`)
|
||||||
|
- Outputs structured results (project name, has uncommitted, has unpushed, file count, commit count)
|
||||||
|
|
||||||
|
This replaces the existing `check_uncommitted.py` with a bash script that also covers unpushed commits.
|
||||||
|
|
||||||
|
### Phase 2 - Report
|
||||||
|
|
||||||
|
Present findings as a summary:
|
||||||
|
- Projects with uncommitted changes (file counts)
|
||||||
|
- Projects with unpushed commits (commit counts)
|
||||||
|
- Clean projects (brief list)
|
||||||
|
- If everything clean, say so and exit
|
||||||
|
|
||||||
|
### Phase 3 - Confirm
|
||||||
|
|
||||||
|
Ask which projects to process (default: all that need attention).
|
||||||
|
|
||||||
|
### Phase 4 - Parallel Subagents
|
||||||
|
|
||||||
|
Spawn a Bash subagent per selected project. Each autonomously:
|
||||||
|
1. Stages all changes (`git add -A`)
|
||||||
|
2. Reviews the diff (`git diff --cached`)
|
||||||
|
3. Crafts a conventional commit message based on the changes
|
||||||
|
4. Commits
|
||||||
|
5. Pushes to remote (with retry for Gitea cold-start)
|
||||||
|
|
||||||
|
### Phase 5 - Summary
|
||||||
|
|
||||||
|
Report what was committed and pushed across all projects.
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `~/.claude/commands/finish-up.md` | Claude Code skill file |
|
||||||
|
| `~/Desktop/Projects/project-scripts/git-status-check.sh` | Scan script (replaces check_uncommitted.py) |
|
||||||
|
|
||||||
|
## Commit Message Style
|
||||||
|
|
||||||
|
Subagents craft conventional commit messages (feat/fix/chore/refactor/docs/etc.) with:
|
||||||
|
- Short summary line
|
||||||
|
- Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
||||||
Reference in New Issue
Block a user