You MUST use this skill at the end of any session, when the user says "land the plane", "wrap up", "done for the day", "finish up", "session complete", "push and close", or indicates work is complete. This is the arc-native session completion protocol that captures remaining work as arc issues, runs quality gates, updates arc issue statuses, commits, and pushes. Always prefer this over generic branch-finishing when the project uses arc issue tracking.
From arcnpx claudepluginhub sentiolabs/arc --plugin arcThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Benchmarks web page Core Web Vitals/bundle sizes, API latency under load, build times; detects regressions via before/after PR comparisons.
Complete the session: capture remaining work, pass quality gates, update arc, commit, push. One protocol for all contexts.
Work is NOT done until git push succeeds. No exceptions.
Uncommitted code doesn't exist. Unpushed commits are local fiction. The remote is the source of truth.
Create a TodoWrite checklist with all steps and work through them:
arc create "Remaining: <description>" --type=task
arc update <id> --description "CONTEXT: <what was done, what remains, any gotchas>"
Skip this phase if no code was changed in this session.
make test # or: go test ./..., npm test, etc.
make lint # or: golangci-lint run, eslint, etc.
make build
debug if needed.arc close <id> -r "Done: <summary of what was completed>"
arc update <id> --description "PROGRESS: <what's done>. NEXT: <what remains>"
Stage changed files (specific files, not git add -A):
git add <file1> <file2> ...
Commit with conventional commit message:
git commit -m "feat(scope): summary of changes"
Push:
git push
Verify push succeeded:
git status # Must show "up to date with origin"
If push fails → resolve the issue → retry → succeed. Do not leave unpushed commits.
Clean up worktrees:
git worktree list
If only the main working tree is listed, skip ahead. Otherwise, for each extra worktree:
a. Check for uncommitted work:
git -C <worktree-path> status
git -C <worktree-path> stash list
If there are uncommitted changes or stashes → do NOT remove. Create an arc issue to track the unmerged work:
arc create "Recover unmerged worktree work: <branch>" --type=task
b. Check if the branch was merged:
git branch --merged | grep <worktree-branch>
If merged (or if the worktree is clean with no unique commits), safe to remove:
git worktree remove <worktree-path>
git branch -d <worktree-branch> # Delete the merged branch
c. If the branch has unmerged commits but no uncommitted changes: Check whether the commits exist on a remote:
git log origin/<worktree-branch> 2>/dev/null
If pushed → safe to remove locally. If not pushed → do NOT remove; create an arc issue.
d. Prune stale worktree references:
git worktree prune
git log -1 # Verify latest commit is visible
arc prime
| Session Type | Behavior |
|---|---|
| Single-agent | Full protocol above |
| Team lead | Verify teammate work → close arc issues → team cleanup → commit → push |
| Teammate | Commit → push (team lead handles arc close and coordination) |
git stash clear, git remote prune origin — housekeeping, not gates.gitignore verification — assumed to be configured at project setuparc prime handles handoff contextgit add -A — stage specific filesarc prime at the end for next-session contextskills/arc/_formatting.md