Help us improve
Share bugs, ideas, or general feedback.
From retro
Retro interview standard for sprint agents. Use when an agent receives a "Shutdown imminent" message from team-lead, when manually triggering agent self-documentation before shutdown, or when verifying interview coverage after a sprint. Agents follow this skill to write their own interview file before confirming shutdown readiness to team-lead.
npx claudepluginhub cosmicdreams/claude-plugins --plugin retroHow this skill is triggered — by the user, by Claude, or both
Slash command
/retro:interviewsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Each sprint agent writes their own retro interview before shutting down. Team-lead sends a "Shutdown imminent" message, the agent follows this skill to self-document, then pings team-lead ready. Team-lead then sends `shutdown_request`.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Each sprint agent writes their own retro interview before shutting down. Team-lead sends a "Shutdown imminent" message, the agent follows this skill to self-document, then pings team-lead ready. Team-lead then sends shutdown_request.
Output: analysis-reports/retro-session/<YYYY-MM-DD>+<sprint-name>/interviews/<your-role>.md
Read by: retro:session Phase 2
When you receive a "Shutdown imminent" message from team-lead:
| Your role | Questions to answer |
|---|---|
| implementer | C1, C2, C3, D1, D2, D3 |
| qa-validator / reviewer | C1, C2, C3, V1, V2, V3 |
| process-engineer | C1, C2, C3, P1, P2, P3 |
| team-lead | C1, C2, C3, TL1, TL2, TL3 |
| any other role | C1, C2, C3 |
analysis-reports/retro-session/<YYYY-MM-DD>+<sprint-name>/interviews/<your-role>.md
Use today's date and the sprint name from your task context. If no sprint name is available, use the project name or unnamed-sprint. Create the directory if it does not exist.
Answer all 6 questions (3 common + 3 role-specific) using the formats in interview-templates.md. Answer from your session memory — you lived the session, you do not need to read your own transcript.
Use this file header:
# Retro Interview — <your-role>
Sprint: <sprint-name>
Date: <YYYY-MM-DD>
Agent: <your-name>
After writing the file, reply:
Retro interview complete. Written to analysis-reports/retro-session/<path>/interviews/<role>.md. Ready to shut down.
Team-lead sends this before every shutdown_request:
Shutdown imminent. Before we close out:
1. Follow `retro:interviews` — answer your 6 questions (3 common + 3 role-specific for your role)
2. Write your interview to: analysis-reports/retro-session/<YYYY-MM-DD>+<sprint-name>/interviews/<your-role>.md
3. Reply when the file is written and you are ready to shut down.
Team-lead waits for the "ready to shut down" reply, then sends shutdown_request.
After all agents have shut down:
ls analysis-reports/retro-session/<YYYY-MM-DD>+<sprint-name>/interviews/
Expected: one .md file per agent type active during the sprint.
retro:session can proceed with partial coverage — it flags missing files as a process gap.
The subagent-stop-interview.sh SubagentStop hook was the original automated path. It is unreliable — SubagentStop fires at agent idle, not at actual shutdown, and last_assistant_message is often absent from the payload. The team-lead driven approach above replaces it as the primary path.
The hook remains in place as a last-resort fallback for sessions where team-lead fails to send the shutdown imminent message.
interview-templates.md (this skill's directory)retro:session Phase 2After each interview file is saved to analysis-reports/, archive it to the Neurons vault. Obsidian is assumed to be running — if the write fails, run obsidian help to diagnose the connection.
Resolve the project slug in this order:
$OFFICE_PROJECT_NAME is set, slugify and use itproject-* label: bd list --json | jq -r '.[0].labels[]? | select(startswith("project-")) | ltrimstr("project-")'Slugify rule: lowercase, spaces → hyphens, remove all special characters except hyphens.
Example: "Same Page Preview" → same-page-preview
Resolve the project slug once per sprint (not once per agent). If collecting interviews across multiple agents in the same sprint, reuse the resolved slug.
Derived from the sprint folder name already established (the <sprint-name> segment of analysis-reports/retro-session/<YYYY-MM-DD>+<sprint-name>/). Slugify the same way.
# Resolve project slug (run once per sprint, reuse across agents)
if [ -n "$OFFICE_PROJECT_NAME" ]; then
PROJECT_SLUG=$(echo "$OFFICE_PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd '[:alnum:]-')
else
PROJECT_SLUG=$(bd list --json 2>/dev/null | jq -r '.[0].labels[]? | select(startswith("project-")) | ltrimstr("project-")' | head -1)
fi
# If still unset, ask the user (done interactively — not in this script block)
# USER_INPUT captured via AskUserQuestion: "What project is this retrospective for?"
# PROJECT_SLUG=$(echo "$USER_INPUT" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd '[:alnum:]-')
SPRINT_SLUG="<sprint-slug-from-session>" # e.g. sprint-1, jquery-fixes
AGENT_ROLE="<agent-role>" # e.g. implementer, reviewer, process-engineer
DATE=$(date +%Y-%m-%d)
VAULT_PATH="Retrospectives/${DATE}+${PROJECT_SLUG}+${SPRINT_SLUG}/interviews/${AGENT_ROLE}.md"
VAULT_ROOT="$HOME/Vaults/${OBSIDIAN_VAULT_NAME:-Neurons}"
mkdir -p "$VAULT_ROOT/$(dirname "$VAULT_PATH")"
cat > "$VAULT_ROOT/$VAULT_PATH" << 'EOF'
<interview-file-content>
EOF
Each interview file stored at Retrospectives/<YYYY-MM-DD>+<project-slug>+<sprint-slug>/interviews/<agent-role>.md must begin with this YAML frontmatter block:
---
project: <project-slug>
sprint: <sprint-slug>
agent_role: <agent-role>
date: <YYYY-MM-DD>
tags: [retro, interview]
---
The frontmatter project: field enables cross-project Obsidian queries:
tag:interview — see all agent interviews across all projectsproject: same-page-preview — see one project's agent interview historyagent_role: implementer — see all implementer interviews across all projects and sprintsProject isolation guarantee: Because project-slug is embedded in both the vault path and the project: frontmatter field, interviews for Project A will never surface as context for Project B in a filtered query.