| name | save |
| description | Stage and commit at repo root and in nested work when work/.git exists; push only the nested work repo (Apply-Work), never the Apply root. Run only when user explicitly says "save", "commit", or /save. Never save otherwise. In Claude Code and Cursor, /skills lists all. |
Save
Never run save unless the user explicitly says "save", "commit", or /save. Do not commit or push as part of completing other tasks. Only run this skill when the user directly invokes it.
Stage everything since the last commit and create one or more commits, each with a title and description. If work/.git exists, also commit inside work so job folders are recorded in the Apply-Work repo.
After commits, push only the nested work repo (git -C work push origin HEAD). Never run git push at the Apply repo root; Apply stays local until the user pushes it themselves.
Inputs
Title and description: You must derive these from the work done (files changed, what was added or fixed).
Don't ask the user for them. If needed, inspect the diff or changed files to write them.
Scope: By default stage all changes (git add -A).
If the user asks to commit only specific file(s) or path(s), stage only those then commit
("save just README" → git add README.md then commit).
Paths under work/ that the root repo does not track apply only to the nested work repo: use git -C work add … and commit there.
Command
Root repo one commit: git add -A && git commit -m "Title" -m "Description".
Nested work repo (when work/.git exists): git -C work add -A && git -C work commit -m "Title" -m "Description" with messages derived from git -C work status and git -C work diff when the work tree has changes.
Push nested work only: git -C work push origin HEAD (after work commits, or when work is already ahead of origin and should be published).
For multiple commits, repeat with different staging and messages
(e.g. git add path1 && git commit -m "Title1" -m "Desc1" then git add path2 && git commit -m "Title2" -m "Desc2").
Steps
- Run
git status at repo root and inspect what changed. Decide one commit or multiple. Stage per Inputs. Paths under work/ that only exist in the nested repo: handle in step 3.
- For each root commit: stage the relevant changes at root, run
git commit -m "<title>" -m "<description>". Repeat until all root-tracked changes are committed.
- If
work/.git exists, run git -C work status. If there is anything to commit in work, stage per Inputs (default git -C work add -A), then git -C work commit -m "<title>" -m "<description>" derived from the work diff. Repeat if multiple logical commits are needed for work only.
- If
work/.git exists, run git -C work push origin HEAD. Do not run git push at the repo root.
- Report the result: commits (root only, work only, both, or nothing), whether work push ran and succeeded or failed. Remind that Apply was not pushed.
Error Handling
- Nothing to commit (both clean): If
work/.git exists and git -C work status shows ahead of origin, still run step 4 to publish pending work commits; otherwise report clean.
- Root clean but work dirty: Only commit and push in
work (steps 3 to 4).
- Push fails: Report the error; do not push the root repo.
- Cannot infer message: Only then ask the user for a title and description.