mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-06-27 04:51:46 +00:00
Compare commits
5 Commits
v1.0.0-bet
...
a1697d670e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1697d670e | ||
|
|
9a4243b373 | ||
|
|
9ccc5440af | ||
|
|
666e0fcb5a | ||
|
|
dd2769a580 |
@@ -388,6 +388,16 @@ Do NOT rely on inline version claims in this file — they may be wrong. Always
|
|||||||
|
|
||||||
When in doubt, prefer the API documented in the reference files over your training data.
|
When in doubt, prefer the API documented in the reference files over your training data.
|
||||||
|
|
||||||
|
## Tooling — ripgrep File Filtering
|
||||||
|
|
||||||
|
**CRITICAL**: There is no `gdscript` type in ripgrep. `*.gd` files are registered
|
||||||
|
under the `gap` type (GAP programming language). Using `--type gdscript` or passing
|
||||||
|
`type: "gdscript"` to the Grep tool produces a hard error — the search never executes.
|
||||||
|
|
||||||
|
**Always use `glob: "*.gd"`** when filtering GDScript files:
|
||||||
|
- Grep tool: `glob: "*.gd"` ✓ | `type: "gdscript"` ✗
|
||||||
|
- Shell/CI: `rg --glob "*.gd"` ✓ | `rg --type gdscript` ✗
|
||||||
|
|
||||||
## Coordination
|
## Coordination
|
||||||
- Work with **godot-specialist** for overall Godot architecture and scene design
|
- Work with **godot-specialist** for overall Godot architecture and scene design
|
||||||
- Work with **gameplay-programmer** for gameplay system implementation
|
- Work with **gameplay-programmer** for gameplay system implementation
|
||||||
|
|||||||
@@ -298,6 +298,16 @@ that may affect native bindings.
|
|||||||
|
|
||||||
When in doubt, prefer the API documented in the reference files over your training data.
|
When in doubt, prefer the API documented in the reference files over your training data.
|
||||||
|
|
||||||
|
## Tooling — ripgrep File Filtering
|
||||||
|
|
||||||
|
**CRITICAL**: There is no `gdscript` type in ripgrep. `*.gd` files are registered
|
||||||
|
under the `gap` type (GAP programming language). Using `--type gdscript` or passing
|
||||||
|
`type: "gdscript"` to the Grep tool produces a hard error — the search never executes.
|
||||||
|
|
||||||
|
**Always use `glob: "*.gd"`** when filtering GDScript files:
|
||||||
|
- Grep tool: `glob: "*.gd"` ✓ | `type: "gdscript"` ✗
|
||||||
|
- Shell/CI: `rg --glob "*.gd"` ✓ | `rg --type gdscript` ✗
|
||||||
|
|
||||||
## Coordination
|
## Coordination
|
||||||
- Work with **godot-specialist** for overall Godot architecture
|
- Work with **godot-specialist** for overall Godot architecture
|
||||||
- Work with **godot-gdscript-specialist** for GDScript/native boundary decisions
|
- Work with **godot-gdscript-specialist** for GDScript/native boundary decisions
|
||||||
|
|||||||
@@ -254,6 +254,16 @@ for the full list.
|
|||||||
|
|
||||||
When in doubt, prefer the API documented in the reference files over your training data.
|
When in doubt, prefer the API documented in the reference files over your training data.
|
||||||
|
|
||||||
|
## Tooling — ripgrep File Filtering
|
||||||
|
|
||||||
|
**CRITICAL**: There is no `gdscript` type in ripgrep. `*.gd` files are registered
|
||||||
|
under the `gap` type (GAP programming language). Using `--type gdscript` or passing
|
||||||
|
`type: "gdscript"` to the Grep tool produces a hard error — the search never executes.
|
||||||
|
|
||||||
|
**Always use `glob: "*.gd"`** when filtering GDScript files:
|
||||||
|
- Grep tool: `glob: "*.gd"` ✓ | `type: "gdscript"` ✗
|
||||||
|
- Shell/CI: `rg --glob "*.gd"` ✓ | `rg --type gdscript` ✗
|
||||||
|
|
||||||
## Coordination
|
## Coordination
|
||||||
- Work with **godot-specialist** for overall Godot architecture
|
- Work with **godot-specialist** for overall Godot architecture
|
||||||
- Work with **gameplay-programmer** for gameplay system implementation
|
- Work with **gameplay-programmer** for gameplay system implementation
|
||||||
|
|||||||
@@ -246,6 +246,16 @@ stencil buffer (4.5), shader texture types changed from `Texture2D` to
|
|||||||
|
|
||||||
When in doubt, prefer the API documented in the reference files over your training data.
|
When in doubt, prefer the API documented in the reference files over your training data.
|
||||||
|
|
||||||
|
## Tooling — ripgrep File Filtering
|
||||||
|
|
||||||
|
**CRITICAL**: There is no `gdscript` type in ripgrep. `*.gd` files are registered
|
||||||
|
under the `gap` type (GAP programming language). Using `--type gdscript` or passing
|
||||||
|
`type: "gdscript"` to the Grep tool produces a hard error — the search never executes.
|
||||||
|
|
||||||
|
**Always use `glob: "*.gd"`** when filtering GDScript files:
|
||||||
|
- Grep tool: `glob: "*.gd"` ✓ | `type: "gdscript"` ✗
|
||||||
|
- Shell/CI: `rg --glob "*.gd"` ✓ | `rg --type gdscript` ✗
|
||||||
|
|
||||||
## Coordination
|
## Coordination
|
||||||
- Work with **godot-specialist** for overall Godot architecture
|
- Work with **godot-specialist** for overall Godot architecture
|
||||||
- Work with **art-director** for visual direction and material standards
|
- Work with **art-director** for visual direction and material standards
|
||||||
|
|||||||
@@ -173,6 +173,16 @@ introduced after May 2025, use WebSearch to verify it exists in the current vers
|
|||||||
|
|
||||||
When in doubt, prefer the API documented in the reference files over your training data.
|
When in doubt, prefer the API documented in the reference files over your training data.
|
||||||
|
|
||||||
|
## Tooling — ripgrep File Filtering
|
||||||
|
|
||||||
|
**CRITICAL**: There is no `gdscript` type in ripgrep. `*.gd` files are registered
|
||||||
|
under the `gap` type (GAP programming language). Using `--type gdscript` or passing
|
||||||
|
`type: "gdscript"` to the Grep tool produces a hard error — the search never executes.
|
||||||
|
|
||||||
|
**Always use `glob: "*.gd"`** when filtering GDScript files:
|
||||||
|
- Grep tool: `glob: "*.gd"` ✓ | `type: "gdscript"` ✗
|
||||||
|
- Shell/CI: `rg --glob "*.gd"` ✓ | `rg --type gdscript` ✗
|
||||||
|
|
||||||
## When Consulted
|
## When Consulted
|
||||||
Always involve this agent when:
|
Always involve this agent when:
|
||||||
- Adding new autoloads or singletons
|
- Adding new autoloads or singletons
|
||||||
|
|||||||
@@ -2,16 +2,21 @@
|
|||||||
# Claude Code SubagentStop hook: Log agent completion for audit trail
|
# Claude Code SubagentStop hook: Log agent completion for audit trail
|
||||||
# Tracks when agents finish and their outcome
|
# Tracks when agents finish and their outcome
|
||||||
#
|
#
|
||||||
# Input schema (SubagentStop):
|
# Input schema (SubagentStop) — per Claude Code hooks reference:
|
||||||
# { "agent_id": "agent-abc123", "agent_name": "game-designer", ... }
|
# { "session_id": "...", "agent_id": "agent-abc123", "agent_type": "Explore",
|
||||||
|
# "agent_transcript_path": "...", "last_assistant_message": "...", ... }
|
||||||
|
#
|
||||||
|
# The agent name is in `agent_type`, NOT `agent_name`. Reading `.agent_name`
|
||||||
|
# returns null on every invocation, so the fallback "unknown" is always used
|
||||||
|
# and the audit trail captures nothing useful.
|
||||||
|
|
||||||
INPUT=$(cat)
|
INPUT=$(cat)
|
||||||
|
|
||||||
# Parse agent name -- use jq if available, fall back to grep
|
# Parse agent name -- use jq if available, fall back to grep
|
||||||
if command -v jq >/dev/null 2>&1; then
|
if command -v jq >/dev/null 2>&1; then
|
||||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_name // "unknown"' 2>/dev/null)
|
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_type // "unknown"' 2>/dev/null)
|
||||||
else
|
else
|
||||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_name"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_name"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_type"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_type"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||||
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -2,16 +2,20 @@
|
|||||||
# Claude Code SubagentStart hook: Log agent invocations for audit trail
|
# Claude Code SubagentStart hook: Log agent invocations for audit trail
|
||||||
# Tracks which agents are being used and when
|
# Tracks which agents are being used and when
|
||||||
#
|
#
|
||||||
# Input schema (SubagentStart):
|
# Input schema (SubagentStart) — per Claude Code hooks reference:
|
||||||
# { "agent_id": "agent-abc123", "agent_name": "game-designer", ... }
|
# { "session_id": "...", "agent_id": "agent-abc123", "agent_type": "Explore", ... }
|
||||||
|
#
|
||||||
|
# The agent name is in `agent_type`, NOT `agent_name`. Reading `.agent_name`
|
||||||
|
# returns null on every invocation, so the fallback "unknown" is always used
|
||||||
|
# and the audit trail captures nothing useful.
|
||||||
|
|
||||||
INPUT=$(cat)
|
INPUT=$(cat)
|
||||||
|
|
||||||
# Parse agent name -- use jq if available, fall back to grep
|
# Parse agent name -- use jq if available, fall back to grep
|
||||||
if command -v jq >/dev/null 2>&1; then
|
if command -v jq >/dev/null 2>&1; then
|
||||||
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_name // "unknown"' 2>/dev/null)
|
AGENT_NAME=$(echo "$INPUT" | jq -r '.agent_type // "unknown"' 2>/dev/null)
|
||||||
else
|
else
|
||||||
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_name"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_name"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
AGENT_NAME=$(echo "$INPUT" | grep -oE '"agent_type"[[:space:]]*:[[:space:]]*"[^"]*"' | sed 's/"agent_type"[[:space:]]*:[[:space:]]*"//;s/"$//')
|
||||||
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
[ -z "$AGENT_NAME" ] && AGENT_NAME="unknown"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ if [ -f "$STATE_FILE" ]; then
|
|||||||
echo "A previous session left state at: $STATE_FILE"
|
echo "A previous session left state at: $STATE_FILE"
|
||||||
echo "Read this file to recover context and continue where you left off."
|
echo "Read this file to recover context and continue where you left off."
|
||||||
echo ""
|
echo ""
|
||||||
echo "Quick summary:"
|
echo "Quick summary (last 20 lines):"
|
||||||
head -20 "$STATE_FILE" 2>/dev/null
|
tail -20 "$STATE_FILE" 2>/dev/null
|
||||||
TOTAL_LINES=$(wc -l < "$STATE_FILE" 2>/dev/null)
|
TOTAL_LINES=$(wc -l < "$STATE_FILE" 2>/dev/null)
|
||||||
if [ "$TOTAL_LINES" -gt 20 ]; then
|
if [ "$TOTAL_LINES" -gt 20 ]; then
|
||||||
echo " ... ($TOTAL_LINES total lines — read the full file to continue)"
|
echo " ... ($TOTAL_LINES total lines — read the full file to continue)"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name: architecture-decision
|
|||||||
description: "Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR."
|
description: "Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR."
|
||||||
argument-hint: "[title] [--review full|lean|solo]"
|
argument-hint: "[title] [--review full|lean|solo]"
|
||||||
user-invocable: true
|
user-invocable: true
|
||||||
allowed-tools: Read, Glob, Grep, Write, Task, AskUserQuestion
|
allowed-tools: Read, Glob, Grep, Write, Edit, Task, AskUserQuestion
|
||||||
---
|
---
|
||||||
|
|
||||||
When this skill is invoked:
|
When this skill is invoked:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name: story-done
|
|||||||
description: "End-of-story completion review. Reads the story file, verifies each acceptance criterion against the implementation, checks for GDD/ADR deviations, prompts code review, updates story status to Complete, and surfaces the next ready story from the sprint."
|
description: "End-of-story completion review. Reads the story file, verifies each acceptance criterion against the implementation, checks for GDD/ADR deviations, prompts code review, updates story status to Complete, and surfaces the next ready story from the sprint."
|
||||||
argument-hint: "[story-file-path] [--review full|lean|solo]"
|
argument-hint: "[story-file-path] [--review full|lean|solo]"
|
||||||
user-invocable: true
|
user-invocable: true
|
||||||
allowed-tools: Read, Glob, Grep, Bash, Edit, AskUserQuestion, Task
|
allowed-tools: Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion, Task
|
||||||
---
|
---
|
||||||
|
|
||||||
# Story Done
|
# Story Done
|
||||||
|
|||||||
4
.github/FUNDING.yml
vendored
4
.github/FUNDING.yml
vendored
@@ -1,2 +1,2 @@
|
|||||||
ko_fi: donchitos
|
github: Donchitos
|
||||||
# github: Donchitos # Uncomment once GitHub Sponsors is approved
|
buy_me_a_coffee: donchitos3
|
||||||
|
|||||||
@@ -93,6 +93,12 @@ This supplements (not replaces) the agent's built-in knowledge.
|
|||||||
- Live preview in Quick Open dialog when "Live Preview" enabled
|
- Live preview in Quick Open dialog when "Live Preview" enabled
|
||||||
- New "Select Mode" (v key) prevents accidental transforms; old mode renamed "Transform Mode" (q key)
|
- New "Select Mode" (v key) prevents accidental transforms; old mode renamed "Transform Mode" (q key)
|
||||||
|
|
||||||
|
## Tooling
|
||||||
|
|
||||||
|
- **ripgrep has no `gdscript` type**: `*.gd` is registered under `gap` (GAP programming language).
|
||||||
|
`rg --type gdscript` is a hard error — the search never executes.
|
||||||
|
Always use `rg --glob "*.gd"` (shell) or `glob: "*.gd"` (Grep tool) to filter GDScript files.
|
||||||
|
|
||||||
## Platform (4.5+)
|
## Platform (4.5+)
|
||||||
|
|
||||||
- **visionOS export**: First new platform since open-sourcing (windowed app mode)
|
- **visionOS export**: First new platform since open-sourcing (windowed app mode)
|
||||||
|
|||||||
Reference in New Issue
Block a user