I'm using the finishing-grove-workspace skill to wrap up this Grove workspace.
Workflow
Step 1: Detect workspace
test -f "$(git rev-parse --show-toplevel)/.grove/workspace.json"
If .grove/workspace.json is not found: this is not a Grove workspace. Use superpowers:finishing-a-development-branch instead.
Step 2: Verify tests pass
Auto-detect the test command from marker files:
| Marker file | Test command |
|---|---|
go.mod | go test ./... |
package.json | npm test |
Cargo.toml | cargo test |
build.gradle / build.gradle.kts | ./gradlew test |
pyproject.toml / requirements.txt | pytest |
Makefile | make test |
If tests fail, stop. Do not present completion options.
Step 3: Read workspace metadata
cat .grove/workspace.json
Extract id, golden_copy, and branch from the JSON output.
Step 4: Present options
Present exactly these four options:
- Push branch and create a Pull Request
- Push branch and destroy workspace
- Keep workspace as-is
- Discard work and destroy workspace
Step 5: Execute choice
Option 1: Push + PR
Derive the PR title from the branch name and the body from a summary of commits since the golden copy.
git push -u origin <branch>
gh pr create --title "<title>" --body "<body>"
grove destroy <workspace-id>
cd <golden-copy-path>
Option 2: Push + destroy
git push -u origin <branch>
grove destroy <workspace-id>
cd <golden-copy-path>
Option 3: Keep as-is
Report: "Keeping workspace at <path>."
Option 4: Discard
Require the user to type "discard" before proceeding.
grove destroy <workspace-id>
cd <golden-copy-path>
Quick Reference
| Option | Push branch | Create PR | Keep workspace | Cleanup |
|---|---|---|---|---|
| 1. Push + PR | yes | yes | no | yes |
| 2. Push + destroy | yes | no | no | yes |
| 3. Keep as-is | no | no | yes | no |
| 4. Discard | no | no | no | yes |
Common Mistakes
- Skipping test verification — never present completion options before confirming tests pass.
- Open-ended questions — always present the structured four-option list; do not ask "what would you like to do?" in free form.
- Automatic workspace cleanup — if the user selects option 3, do not run
grove destroy. Respect the choice to keep the workspace. - No confirmation for discard — option 4 destroys uncommitted work; always require the user to type "discard" before executing.
Red Flags
.grove/workspace.jsonmissing but.grove/config.jsonpresent — the agent is on the golden copy, not in a workspace. Route tosuperpowers:finishing-a-development-branch.grove destroyfails — the workspace ID may be stale. Rungrove listto confirm the workspace exists before retrying.
Integration
- Replaces:
superpowers:finishing-a-development-branchwhen in a Grove workspace - Called by:
superpowers:subagent-driven-development(Step 7),superpowers:executing-plans(Step 5) - Pairs with:
grove:using-grove