원클릭으로
pan-oversee
Test the Overdeck framework by supervising an agent through the full lifecycle, identifying and filing every bug encountered
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Test the Overdeck framework by supervising an agent through the full lifecycle, identifying and filing every bug encountered
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Add repositories to the current progressive polyrepo workspace
pan close <id> — close-out ceremony for a completed and merged issue
pan review <subcommand> — manage the code review lifecycle: list pending work, re-request review, heal status drift, reset/abort/restart review cycles
pan start <id> — spawn a work agent for an issue in its own tmux session and workspace
Maintain a project knowledge wiki in Open Knowledge Format with /okf init, open, author, convert, sync, study, retro, extract, validate, lint, and embed.
pan flywheel — start, pause, resume, complete, stop, inspect, emit, and report on the singleton Fix-All Flywheel orchestrator
| name | pan-oversee |
| description | Test the Overdeck framework by supervising an agent through the full lifecycle, identifying and filing every bug encountered |
| triggers | ["oversee issue","oversee agent","supervise agent","watch agent workflow","monitor issue lifecycle"] |
| allowed-tools | ["Bash","Read","Write","Edit","Grep","Glob","Task"] |
This skill exists to test the Overdeck framework itself. The issue being overseen is a test payload — the real goal is exercising the full agent lifecycle pipeline and identifying every bug, glitch, and rough edge along the way.
Supervise an agent working on an issue through the entire lifecycle:
spawn/resume → work → completion → review → feedback loop → test → merge-ready
This is NOT passive monitoring. You are actively:
Maintain a running bug log throughout the session. For each finding:
gh issue list --search "keyword" before filing duplicatesAt the end of the oversight session, report a summary to the user of all findings: what was filed, what was updated, what was fixed inline, and what needs follow-up.
/pan-oversee PAN-129
The argument is an issue ID (e.g. PAN-129). The skill handles the rest.
Before doing anything, detect what phase the issue is currently in. Do NOT assume the issue is at the beginning. Run all checks and jump to the correct phase.
ISSUE_ID="PAN-{ID}"
ISSUE_LOWER=$(echo "$ISSUE_ID" | tr '[:upper:]' '[:lower:]')
echo "=== Phase Detection for $ISSUE_ID ==="
# 1. Dashboard running?
DASHBOARD=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:3011/api/health 2>/dev/null)
echo "Dashboard: $DASHBOARD"
# 2. Workspace exists?
WS_PATH=""
for dir in ~/.overdeck/workspaces/feature-$ISSUE_LOWER ~/Projects/*/workspaces/feature-$ISSUE_LOWER; do
if [ -d "$dir" ]; then WS_PATH="$dir"; break; fi
done
echo "Workspace: ${WS_PATH:-NONE}"
# 3. Agent state?
AGENT_STATE=$(cat ~/.overdeck/agents/agent-$ISSUE_LOWER/state.json 2>/dev/null)
echo "Agent state: ${AGENT_STATE:-NONE}"
# 4. Tmux session?
TMUX_SESSION=$(tmux -L overdeck list-sessions 2>/dev/null | grep -i "$ISSUE_LOWER" | head -1)
echo "Tmux: ${TMUX_SESSION:-NONE}"
# 5. Completion marker?
COMPLETED=$(ls ~/.overdeck/agents/agent-$ISSUE_LOWER/completed 2>/dev/null)
echo "Completed: ${COMPLETED:-NO}"
# 6. Review/test/merge status?
REVIEW_STATUS=$(curl -s http://localhost:3011/api/review/$ISSUE_ID/status 2>/dev/null)
echo "Review status: $REVIEW_STATUS"
# 6b. Branch-portable xBRIEF pipeline mirror (corroborating, not authoritative)
PIPELINE_MIRROR=""
if [ -n "$WS_PATH" ] && [ -f "$WS_PATH/.pan/spec.vbrief.json" ]; then
PIPELINE_MIRROR=$(jq -c '.plan.metadata.pipeline // empty' "$WS_PATH/.pan/spec.vbrief.json" 2>/dev/null)
fi
echo "xBRIEF pipeline mirror: ${PIPELINE_MIRROR:-NONE}"
# 7. Specialist activity?
SPECIALISTS=$(curl -s http://localhost:3011/api/specialists 2>/dev/null)
echo "Specialists: $SPECIALISTS"
Based on the checks above, determine the current phase. Treat REVIEW_STATUS and other live SQLite-backed API status as authoritative; use the branch-portable xBRIEF plan.metadata.pipeline mirror as a corroborating signal when API status is missing, stale, or ambiguous. If the mirror disagrees with the API, log a bug and prefer the API.
| Condition | Current Phase | Jump To |
|---|---|---|
| No workspace, no agent state | Not started | Phase 0 → Phase 1 |
| Workspace exists, agent active + tmux running | Agent working | Phase 2 |
| Workspace exists, agent active, no tmux | Agent crashed/stuck | Phase 2 (recovery) |
| Workspace exists, agent stopped, no completion | Agent gave up or crashed | Phase 1 (resume) |
| Completion marker exists, reviewStatus = "pending" or "reviewing" | Awaiting review | Phase 4 |
| reviewStatus = "failed", work agent has feedback | Feedback loop | Phase 5 |
| reviewStatus = "passed", testStatus = "pending" or "testing" | Awaiting tests | Phase 6 |
| reviewStatus = "passed", testStatus = "passed" | Merge ready | Phase 7 |
| reviewStatus = "passed", testStatus = "failed" | Test failed | Phase 5 (test feedback) |
| mergeStatus = "merged" | Done | Report success |
Print which phase you're entering and why, e.g.:
"Issue PAN-129 is in Phase 4 (review pending) — reviewStatus is 'reviewing', skipping to monitor review agent."
Only needed if dashboard isn't running or Cloister isn't active.
# Dashboard running?
curl -s http://localhost:3011/api/health | jq .
# Cloister running? (needed for specialist handoffs)
curl -s http://localhost:3011/api/cloister/status | jq '{running, lastCheck}'
# Specialists initialized?
curl -s http://localhost:3011/api/specialists | jq '.[] | {name, state, isRunning}'
If workspace doesn't exist, create it:
pan workspace create PAN-{ID}
If Cloister isn't running, start it:
curl -s -X POST http://localhost:3011/api/cloister/start
Check if agent exists and resume or spawn:
# If agent state exists and has a session ID — resume
pan resume PAN-{ID}
# If no agent state — spawn fresh
curl -s -X POST http://localhost:3011/api/agents \
-H 'Content-Type: application/json' \
-d '{"issueId": "PAN-{ID}"}'
Or use the dashboard UI via Playwright:
https://overdeck.localhostPoll the agent's activity every 30-60 seconds. Watch for:
Signs of progress:
lastActivity timestamp in state.json is updating~/.overdeck/heartbeats/agent-pan-{ID}.jsonSigns of trouble:
Monitoring commands:
# Watch live output (non-blocking)
tmux -L overdeck capture-pane -t agent-pan-{ID} -p -S -30
# Check heartbeat freshness
cat ~/.overdeck/heartbeats/agent-pan-{ID}.json 2>/dev/null | jq '{timestamp, tool_name, current_task}'
# Check activity log
curl -s http://localhost:3011/api/agents/agent-pan-{ID}/activity | jq '.[-3:]'
If stuck: Poke the agent or send a message:
pan tell PAN-{ID} "Are you stuck? Please continue working on the task."
The agent should eventually run pan done PAN-{ID}. Watch for:
# Check if completed marker exists
ls -la ~/.overdeck/agents/agent-pan-{ID}/completed 2>/dev/null
# Check review status (set by `pan done`)
curl -s http://localhost:3011/api/review/PAN-{ID}/status | jq .
Expected state after completion:
completed file exists in agent state dir{ reviewStatus: "reviewing" | "pending", testStatus: "pending" }Common failures at this stage:
pan done — it just stopsIf review not triggered:
# Manually trigger review
curl -s -X POST http://localhost:3011/api/review/PAN-{ID}/trigger
Once review is triggered, the review-agent specialist should wake up:
# Check specialist status
curl -s http://localhost:3011/api/specialists | jq '.[] | select(.name == "review-agent")'
# Watch review agent output
tmux -L overdeck capture-pane -t specialist-review-agent -p -S -50 2>/dev/null
# Check review status progression
curl -s http://localhost:3011/api/review/PAN-{ID}/status | jq '{reviewStatus, reviewNotes}'
Expected outcomes:
reviewStatus: "passed" → proceeds to testreviewStatus: "failed" with reviewNotes → feedback sent to work agentCommon failures:
If review agent doesn't wake:
# Wake it manually
curl -s -X POST http://localhost:3011/api/specialists/review-agent/wake
# Or reset and re-trigger
curl -s -X POST http://localhost:3011/api/specialists/review-agent/reset
curl -s -X POST http://localhost:3011/api/review/PAN-{ID}/trigger
If review returned feedback, the work agent should receive it and fix issues:
# Check if work agent received feedback
tmux -L overdeck capture-pane -t agent-pan-{ID} -p -S -50 2>/dev/null | tail -20
# Check auto-requeue count (circuit breaker: max 3)
curl -s http://localhost:3011/api/review/PAN-{ID}/status | jq '.autoRequeueCount'
The work agent should:
pan review request PAN-{ID} -m "Fixed: ..."If feedback not delivered: This is a code bug to fix. Check:
send-feedback-to-agent skill~/.overdeck/agents/agent-pan-{ID}/mail/After review passes, test-agent should run:
# Check test status
curl -s http://localhost:3011/api/review/PAN-{ID}/status | jq '{testStatus, testNotes}'
# Watch test agent
tmux -L overdeck capture-pane -t specialist-test-agent -p -S -50 2>/dev/null
Expected: testStatus: "passed" → ready for merge
Common failures:
After tests pass:
# Final status check
curl -s http://localhost:3011/api/review/PAN-{ID}/status | jq .
Expected final state:
{
"reviewStatus": "passed",
"testStatus": "passed",
"readyForMerge": true
}
At this point, the user clicks MERGE in the dashboard.
When you find a bug in the Overdeck infrastructure:
gh issue list --state open --search "keyword" to avoid duplicatesnpx tsup or restart dashboard), resume the agent, continue testingBe thorough. All of these are findings worth logging:
| Endpoint | Method | Purpose |
|---|---|---|
/api/health | GET | Dashboard health |
/api/agents | GET | List all agents |
/api/agents/:id/output | GET | Agent terminal output |
/api/agents/:id/activity | GET | Agent activity log |
/api/review/:id/status | GET | Review/test/merge status |
/api/review/:id/trigger | POST | Trigger review |
/api/review/:id/request | POST | Re-request review |
/api/issues/:id/approve | POST | Approve & merge |
/api/specialists | GET | List specialists |
/api/specialists/:name/wake | POST | Wake specialist |
/api/cloister/status | GET | Cloister status |
/api/cloister/start | POST | Start Cloister |
| Phase | Expected Duration |
|---|---|
| Work phase | 5-30 min (depends on complexity) |
| Review | 2-5 min |
| Feedback fix | 5-15 min per round |
| Testing | 1-3 min |
| Total (no issues) | 10-40 min |
| Total (with 1 feedback round) | 20-60 min |