From hamster
Plans Hamster Studio briefs by reading tasks from .hamster/, building dependency graphs, detecting parallel execution waves, and generating read-only execution plans with optional CEO/Eng review modes. Use before executing tasks.
npx claudepluginhub gethamster/cli --plugin hamsterThis skill uses the workspace's default tool permissions.
Read-only analysis of a Hamster Studio brief. Reads all tasks from `.hamster/`, builds the dependency graph, detects parallel execution waves, maps overlapping tasks, and presents the execution plan — without making any changes. Optionally deep-dives with CEO Review (founder mode) or Eng Review (architecture mode).
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Read-only analysis of a Hamster Studio brief. Reads all tasks from .hamster/, builds the dependency graph, detects parallel execution waves, maps overlapping tasks, and presents the execution plan — without making any changes. Optionally deep-dives with CEO Review (founder mode) or Eng Review (architecture mode).
Argument: "$ARGUMENTS"
[ -d ".hamster" ] || { echo ".hamster/ not found. Run 'hamster sync' first."; exit 1; }
account=$(ls -d .hamster/*/ 2>/dev/null | head -1 | xargs basename)
echo "Account: $account"
Parse the argument — extract a brief slug from a URL, UUID, or use as-is. URLs use a brief UUID in the path:
arg="$ARGUMENTS"
arg="${arg%/}"
if echo "$arg" | grep -qE '^https?://'; then
identifier=$(echo "$arg" | sed -E 's|^https?://[^/]+/home/[^/]+/briefs/([^/]+)(/tasks)?$|\1|')
else
identifier="$arg"
fi
# If identifier is a UUID, resolve to slug via brief frontmatter
if echo "$identifier" | grep -qE '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'; then
slug=""
for brief_dir in .hamster/${account}/briefs/*/; do
bf="${brief_dir}brief.md"
[ -f "$bf" ] || continue
eid=$(awk -F'"' '/^---$/{n++; next} n==1 && /^entity_id:/ { print $2; exit }' "$bf")
if [ "$eid" = "$identifier" ]; then
slug=$(basename "$brief_dir")
break
fi
done
[ -z "$slug" ] && echo "No brief found with ID $identifier"
else
slug="$identifier"
fi
ls ".hamster/${account}/briefs/${slug}/brief.md" && echo "Found: $slug"
List actionable briefs (same picker as /ship):
account=$(ls -d .hamster/*/ 2>/dev/null | head -1 | xargs basename)
briefs_dir=".hamster/${account}/briefs"
last_status=""
index=0
for brief_dir in "${briefs_dir}"/*/; do
[ ! -d "$brief_dir" ] && continue
slug=$(basename "$brief_dir")
brief_file="${brief_dir}brief.md"
[ ! -f "$brief_file" ] && continue
tasks_dir="${brief_dir}tasks"
[ ! -d "$tasks_dir" ] && continue
brief_status=$(awk -F'"' '/^---$/{n++; next} n==1 && /^status:/ { print $2; exit }' "$brief_file")
case "$brief_status" in aligned|delivering|refining) ;; *) continue ;; esac
total=$(ls "$tasks_dir"/*.md 2>/dev/null | wc -l | tr -d ' ')
[ "$total" -eq 0 ] && continue
done_count=$(grep -l '^status: "done"' "$tasks_dir"/*.md 2>/dev/null | wc -l | tr -d ' ')
title=$(awk -F'"' '/^---$/{n++; next} n==1 && /^title:/ { print $2; exit }' "$brief_file")
echo "${brief_status}|${slug}|${title}|${done_count}|${total}"
done | sort -t'|' -k1,1 | while IFS='|' read -r bstatus bslug btitle bdone btotal; do
if [ "$bstatus" != "$last_status" ]; then
[ -n "$last_status" ] && echo ""
printf " %s:\n" "$(echo "$bstatus" | awk '{print toupper(substr($0,1,1)) substr($0,2)}')"
last_status="$bstatus"
fi
index=$((index + 1))
printf " %2d. %-55s (%s/%s tasks done) [%s]\n" "$index" "$btitle" "$bdone" "$btotal" "$bslug"
done
Use AskUserQuestion to let the user pick.
Launch the brief-planner agent with:
Display the full execution plan from the planner:
Wave 1 (parallel): HAM-100, HAM-300
Wave 2 (parallel): HAM-200 (conflicts with HAM-100: both mention auth)
After presenting the execution plan, use AskUserQuestion with 3 options:
Prime Directives:
Use AskUserQuestion to ask the user to pick a lens:
Work through each section. Use AskUserQuestion for any critical finding that needs user input:
1. Architecture Review
2. Error & Rescue Map
3. Security & Threat Model
4. Data Flow & Interaction Edge Cases
5. Code Quality
6. Test Review
7. Performance
8. Observability & Debuggability
9. Deployment & Rollout
10. Long-Term Trajectory
Produce a completion summary:
Use AskUserQuestion:
1. Architecture Lock-in
2. Code Quality
3. Test Strategy
.hamster/plans/{brief-slug}-test-plan.md4. Performance
For each issue found, use AskUserQuestion one at a time:
.hamster/plans/)After presenting the analysis (or completing a review mode), offer to transition to execution:
Use AskUserQuestion:
/ship {slug}, "No, just planning" → end| Error | Recovery |
|---|---|
.hamster/ missing | Stop — tell user to run hamster sync |
| Brief not found | Search for partial matches, suggest closest |
| brief-planner fails | Report error, suggest running hamster sync to refresh data |
| Malformed argument | Show usage examples, ask user to re-enter |