skills/done/SKILL.md
Wrap up the current session — commits, pushes, creates PR, updates Linear. Detects worktree vs main branch context automatically.
npx skillsauth add team-plask/session-workflow doneInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run ALL of these commands:
echo "=== CONTEXT ==="
echo "Branch: $(git branch --show-current)"
echo "Is worktree: $([ -f .git ] && echo YES || echo NO)"
echo "Has session-state: $([ -f .claude/session-state.json ] && echo YES || echo NO)"
[ -f .claude/session-state.json ] && cat .claude/session-state.json
echo "=== END CONTEXT ==="
Read .claude/session-config.json if it exists, otherwise use these defaults:
Now decide:
linearIssueId → go to WORKTREE FLOW belowYou MUST complete ALL 9 steps below. Do NOT stop early. Do NOT skip any step.
git diff main --stat
git log main..HEAD --oneline
If entire is enabled in config:
entire explain --short 2>&1 || true
Write a concise summary of what changed.
Read supabaseBranchId and supabaseBranchProjectRef from .claude/session-state.json.
If a Supabase branch exists, set hasSupabaseBranch = true.
git status --porcelain
If there are uncommitted changes, ask the user whether to commit. If yes, stage all and commit with a descriptive message.
git push -u origin $(git branch --show-current)
THIS STEP IS MANDATORY. You MUST create a PR.
Build the PR body with your summary.
If hasSupabaseBranch:
Add to the PR body:
## Supabase Branch
This PR has an associated Supabase preview branch.
- Branch ID: `<supabaseBranchId>`
- Project Ref: `<supabaseBranchProjectRef>`
**After merging this PR**, merge the Supabase branch:
Use `mcp__claude_ai_Supabase__merge_branch` with branch_id: `<supabaseBranchId>`
Now create the PR:
gh pr create --title "<linearIssueIdentifier>: <short-title>" --body "<body>" --base main
Save the PR URL from the output.
THIS STEP IS MANDATORY. You MUST merge the PR.
Merge the PR:
gh pr merge <pr-number> --merge
If hasSupabaseBranch (from W2), merge the Supabase branch to production:
Use mcp__claude_ai_Supabase__merge_branch with:
supabaseBranchId from session-stateIf merge fails (e.g., migrations failed status), delete the branch instead:
Use mcp__claude_ai_Supabase__delete_branch with:
supabaseBranchIdNote: The GitHub integration will apply migration files from main automatically.
Extract linearIssueId from .claude/session-state.json.
First, add a comment with the PR URL and summary:
Use mcp__linear-server__create_comment (or mcp__claude_ai_Linear__create_comment):
Then, update the issue state to done:
Use mcp__linear-server__update_issue (or mcp__claude_ai_Linear__update_issue):
Update the main repo's worktree session file. The mainRepoPath and linearBranchName are in session-state.json. The file is at:
<mainRepoPath>/.claude/worktree-sessions/<linearBranchName with / replaced by ->.json
python3 -c "
import json
path = '<mainRepoPath>/.claude/worktree-sessions/<sanitized-branch>.json'
d = json.load(open(path))
d['status'] = 'done'
json.dump(d, open(path, 'w'), indent=2)
"
Also update local .claude/session-state.json status to "done".
Print:
hasSupabaseBranch: "Supabase branch merged to production"For sessions on the main branch without a worktree.
git branch --show-current
If entire is enabled:
entire status 2>&1
Extract session ID from output, then:
entire explain --session <session_id> --short 2>&1
Check .claude/session-state.json for a linked Linear issue.
Based on conversation history, write a concise summary:
If session-state has linearIssueId:
If no linked issue:
Write .claude/session-state.json with the issue details and current timestamp.
Print the Linear issue identifier and a one-line summary.
tools
Start a task session — creates a Linear issue, git worktree, and launches a new Claude session. Use when the user says /start or wants to begin a new isolated task.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.