
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)
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon