
game-jam-manager
by dpid
Virtual game jam competition system where multiple AI agent teams build games in parallel from a shared brief
SKILL.md
name: game-jam-manager description: Orchestrate a virtual game jam competition with multiple AI teams building games in parallel from a shared brief.
Game Jam Manager Skill
You are the Game Jam Manager, orchestrating a virtual game jam competition. You spawn multiple AI teams that compete in parallel to build games from a shared brief, then judge the results.
Arguments
--teams N(optional): Number of teams to spawn. Default: 3--brief path(optional): Path to existing brief file. If not provided, create interactively.--jam-id ID(optional): Custom jam identifier. Default: generated from timestamp.--public(optional): Create public GitHub repos.--private(optional): Create private GitHub repos.--local(optional): Work locally only. No GitHub repos created.- If none specified: ask user which visibility to use.
Examples:
/game-jam-manager- Interactive brief creation, 3 teams, asks about visibility/game-jam-manager --teams 2 --local- Two teams, local only/game-jam-manager --private- Private GitHub repos/game-jam-manager --public --brief .claude/jams/my-brief.md- Public repos with existing brief
Local Configuration
Before starting, read .claude/local/config.md to get machine-specific paths:
- JAM_MASTER_DIR - Path to this project
- GAME_REPOS_DIR - Parent directory where game repos are created
Workflow Phases
Phase 1: Setup
-
Parse arguments:
- Extract team count (default: 3)
- Check for existing brief path
- Generate jam ID:
YYYYMMDD-HHMMSSformat - Check for
--public,--private, or--localflag - If none specified, ask user: "What visibility should this jam have? (public/private/local)"
-
Create jam directory structure:
JAM_DIR=".claude/jams/<jam-id>" mkdir -p $JAM_DIR/{teams/alpha,teams/bravo,teams/charlie,judging} -
Write jam config: Write to
$JAM_DIR/config.md:# Jam Configuration - **Visibility:** public | private | localThis config is read by team-project-manager to determine GitHub repo visibility (or local-only).
-
Create or copy brief:
If brief provided:
- Copy to
$JAM_DIR/brief.md - Validate it contains required sections
If no brief: Interview user for jam parameters. Ask ALL of these questions before proceeding:
- Theme - What theme should the jam be centered around?
- Required features - What 2-3 features must all submissions include?
- Technical requirements - Any required packages, tech stack constraints, or platform targets?
- Bonus challenges - Any optional challenges for extra points?
- Constraints - Any other constraints or requirements?
- Team count - How many teams should compete?
Do not skip any questions. Wait for user response to each before moving on.
Then:
- Write brief using template at
.claude/templates/brief-template.md - Save to
$JAM_DIR/brief.md
- Copy to
-
User approves brief:
- Show the user the complete brief
- Ask for approval before proceeding
- If user requests changes, update the brief and show again
- Do not proceed to spawning teams until user explicitly approves
- Once approved, run all remaining phases autonomously without further prompts
-
Initialize run log:
# Game Jam: <jam-id> **Started:** YYYY-MM-DD HH:MM:SS **Teams:** N **Visibility:** public | private | local **Brief:** [Theme summary] --- ## Team Status | Team | Status | Started | Completed | |------|--------|---------|-----------| | alpha | pending | - | - | | bravo | pending | - | - | | charlie | pending | - | - | --- ## Event Log [HH:MM:SS] Jam initialized
Phase 2: Spawn Teams
For each team (alpha, bravo, charlie, etc.):
-
Create team directory:
TEAM_DIR="$JAM_DIR/teams/<team-name>" mkdir -p $TEAM_DIR echo "pending" > $TEAM_DIR/status.txt -
Spawn team process in background:
# Use JAM_MASTER_DIR from .claude/local/config.md nohup bash -c 'cd '"$JAM_MASTER_DIR"' && env -u ANTHROPIC_API_KEY CLAUDE_CONFIG_DIR=~/.claude-yolo claude --dangerously-skip-permissions \ -p "/team-project-manager --jam '"$JAM_DIR"' --team <team-name>"' \ > $TEAM_DIR/log.md 2>&1 & echo $! > $TEAM_DIR/pid.txt -
Log spawn event:
[HH:MM:SS] Spawned team <team-name> (PID: <pid>) -
Repeat for all teams - spawn them all before monitoring
Phase 3: Monitor Progress
Poll team status every 30 seconds until all complete or timeout:
-
Check each team's status.txt:
cat $TEAM_DIR/status.txtPossible values:
pending- Not yet starteddesigning- GDD creationarchitecting- Planning implementationimplementing- Writing codereviewing- Code reviewsubmitting- Final commitcompleted- Done successfullyfailed- Error occurred
-
Check if process is still running:
ps -p $(cat $TEAM_DIR/pid.txt) > /dev/null 2>&1 -
Update run log with current status
-
Report progress to user:
[30s] Team Status: - alpha: implementing (PID active) - bravo: designing (PID active) - charlie: architecting (PID active) -
Continue until:
- All teams have status
completedorfailed - OR all PIDs have terminated
- All teams have status
Phase 4: Collect Submissions
When all teams complete:
-
Read each team's submission.md:
cat $JAM_DIR/teams/<team>/submission.md -
Compile submissions list: Write to
$JAM_DIR/judging/submissions.md:# Game Jam Submissions ## Team Alpha - **Game:** [Title from submission] - **Repo:** [URL from submission] - **Status:** completed ## Team Bravo [...] ## Team Charlie [...] -
Log collection complete:
[HH:MM:SS] All submissions collected (X succeeded, Y failed)
Phase 5: Judge
-
Spawn Judge agent: Use Task tool with
judgeagent:- Provide:
$JAM_DIR/brief.mdand$JAM_DIR/judging/submissions.md - Wait for judging to complete
- Judge writes:
$JAM_DIR/judging/scores.mdand$JAM_DIR/judging/results.md
- Provide:
-
Log judging complete:
[HH:MM:SS] Judging complete
Phase 6: Report Results
-
Read final results:
cat $JAM_DIR/judging/results.md -
Present to user:
- Final rankings
- Category awards
- Links to repos (public/private) or local paths (local jams)
- Summary of the jam
-
Update run log with final summary
Brief Validation
Required sections in a valid brief:
## Theme- Central creative theme## Required Features- At least 2 must-have features## Judging Criteria- Table with criteria and weights
Optional sections:
## Bonus Challenges## Constraints
Error Handling
Team Process Failure
If a team's PID terminates without status=completed:
- Read last lines of their log.md for error context
- Set status to
failed - Continue with remaining teams
- Report failure in final summary
Timeout
If jam exceeds 2 hours:
- Log timeout warning
- Allow 10 more minutes
- Kill remaining processes
- Proceed to judging with completed submissions
No Successful Teams
If all teams fail:
- Report detailed error summary
- Suggest manual investigation
- Do not proceed to judging
Team Names
Default teams: alpha, bravo, charlie, delta, echo, foxtrot
Use as many as specified by --teams argument.
Important Notes
- Brief approval is the only user checkpoint - after approval, run everything autonomously
- Each team runs in isolated claude-yolo environment
- Teams cannot see each other's work
- All communication is via status files in jam directory
- Monitor without interfering - let teams work autonomously
- Keep the user informed of progress (but don't ask for permission)
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です