game-development
Skill10 starsChanged 7 months agoApache-2.0View on GitHub
ACOS game development intelligence for high-quality browser game design and implementation.
We split this skill into the rules it gives an agent
8 rules. 0 are common, 5 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 82
Every game MUST pass ALL gates before deploy.
- Distinctive: line 85
Every visual change must be animated.
- Distinctive: line 88
Every primary player action has: anticipation (50-100ms buildup) → action (the actual change) → follow-through (100-300ms settle/overshoot).
- Distinctive: line 105
Every collision or significant event uses layered feedback:
- Very specific: line 113
All movement uses easing functions from effects.ts:
- Very specific: line 118
NEVER transition: all — always specify exact properties
- Very specific: line 119
NEVER animation: linear — always use cubic-bezier or named easings
- Distinctive: line 206
Anti-pattern: All letters revealed simultaneously
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ACOS Game Development Skill v1.0
Purpose
Intelligence layer for FrankX's Games Lab (frankx.ai/games). Encodes world-class browser game design principles — animation choreography, feedback systems, quality gates, and per-genre templates. Any agent loading this skill produces games at AAA studio quality, not "indie jam" quality.
Activation
Auto-activates when session involves: game development, Canvas2D rendering, game feel tuning, particle effects, game loop optimization, or any /games/ route work.
Triggers: game, canvas, particle, collision, sprite, dungeon, puzzle game, roguelike, game loop, game feel
Game Registry (7 Games)
1. Crystal Match
- Slug:
crystal-match - Engine: React DOM (CSS animations)
- Genre: Puzzle (match-3)
- Quality Baseline: Bejeweled 3, Candy Crush Saga
- Key Feel: Satisfying cascades, escalating combos, gems feel alive
- File:
app/games/crystal-match/page.tsx
2. Neon Depths
- Slug:
neon-depths - Engine: Canvas2D
- Genre: Roguelike (turn-based dungeon crawler)
- Quality Baseline: Brogue, Hoplite, Into the Breach
- Key Feel: Tense exploration, impactful combat, atmospheric dungeon
- File:
app/games/neon-depths/page.tsx
3. Neon Runner
- Slug:
neon-runner - Engine: Canvas2D
- Genre: Action (endless runner)
- Quality Baseline: Subway Surfers, Alto's Odyssey
- Key Feel: Speed sensation, near-miss drama, fluid lane changes
- File:
app/games/neon-runner/page.tsx
4. Snake Neon
- Slug:
snake-neon - Engine: Canvas2D
- Genre: Arcade (snake)
- Quality Baseline: Snake.io, Slither.io
- Key Feel: Fluid movement, satisfying growth, dramatic death
- File:
app/games/snake-neon/page.tsx
5. 2048 Neon
- Slug:
neon-2048 - Engine: React DOM (CSS animations)
- Genre: Puzzle (sliding tiles)
- Quality Baseline: Original 2048, Threes!
- Key Feel: Satisfying merges, tile weight, big-merge celebration
- File:
app/games/neon-2048/page.tsx
6. Word Forge
- Slug:
word-forge - Engine: React DOM (CSS animations)
- Genre: Word (Wordle-style)
- Quality Baseline: Wordle, Spelling Bee
- Key Feel: Letter reveal drama, keyboard feedback, win celebration
- File:
app/games/word-forge/page.tsx
7. Memory Match
- Slug:
memory-match - Engine: React DOM (Framer Motion)
- Genre: Puzzle (card matching)
- Quality Baseline: Concentration, Memrise
- Key Feel: Card flip satisfaction, match celebration, mismatch clarity
- File:
app/games/memory-match/page.tsx
10 Quality Gates (MANDATORY)
Every game MUST pass ALL gates before deploy. No exceptions.
Gate 1: No Instant State Changes
Every visual change must be animated. Position changes use eased interpolation. Color changes use transitions. Size changes use scale animations. If a value snaps from A to B without interpolation, the game fails this gate.
Gate 2: Three-Stage Feedback
Every primary player action has: anticipation (50-100ms buildup) → action (the actual change) → follow-through (100-300ms settle/overshoot). A swap in Crystal Match: gems lean toward target → cross positions → bounce into place. A move in Neon Depths: player leans → slides → settles.
Gate 3: Idle Animations
Nothing is ever static. Every visible entity has subtle movement when idle:
- Player characters: breathing glow, gentle scale oscillation (0.97-1.03, 2-3s)
- Items: floating hover (±2px, 2s sine), glow pulse
- Enemies: slow sway, faint glow flicker
- UI elements: subtle shimmer, particle drift
- Board/background: ambient dust motes, gradient shift
Gate 4: Environmental Depth
The world feels alive beyond the player's actions:
- Ambient particles (dust, energy motes, sparkles) — 1-3 per frame, capped at 30
- Background has subtle movement (gradient shift, star drift, grid pulse)
- Lighting responds to events (flash on impact, dim on death, warm on reward)
Gate 5: Impact Feedback (Hitstop + Layered Effects)
Every collision or significant event uses layered feedback:
- Hitstop: 2-5 frame freeze to emphasize the moment
- Particles: burst from impact point in relevant colors
- Screen shake: intensity proportional to significance
- Flash: brief color overlay (red=damage, gold=reward, white=hit)
- Sound hook: even if muted, the code path exists for future audio
Gate 6: Eased Movement (NEVER Linear)
All movement uses easing functions from effects.ts:
- Position changes: outCubic (smooth deceleration)
- Bouncy effects: outElastic or outBounce
- UI transitions: inOutCubic
- Decay effects: outQuad
- NEVER
transition: all— always specify exact properties - NEVER
animation: linear— always use cubic-bezier or named easings
Gate 7: Death/Failure Sequence
Failure is NEVER just a text overlay. Every game has a multi-stage death sequence:
- Freeze frame / hitstop (50-100ms)
- Dramatic visual (explosion, shatter, dim, collapse)
- Screen response (shake, flash, zoom)
- Particle aftermath (debris, fade, dissolve)
- Score/stats reveal with dramatic timing
- Retry prompt with clear call-to-action
Gate 8: Victory/Win Celebration
Winning is NEVER just a score display. Every game has:
- Moment of recognition (brief pause, glow)
- Celebration burst (confetti, particles, flash)
- Score dramatic count-up (not instant display)
- Achievement/stats with satisfying reveal timing
- Play-again prompt that feels inviting
Gate 9: Color Storytelling
Colors communicate game state consistently:
- Cyan/Blue (#43BFE3): Player, safe, neutral, UI
- Gold/Amber (#F59E0B): Reward, score, items, positive
- Red/Rose (#F43F5E): Danger, damage, error, negative
- Green/Emerald (#10B981): Health, success, growth
- Purple/Violet (#8B5CF6): Special, rare, magic, combo
- White/Silver (#E2E8F0): Impact, flash, emphasis Color intensity scales with significance (bigger combo = brighter).
Gate 10: Mobile-First Input
Touch controls must feel as good as keyboard:
- Touch targets minimum 48px (WCAG)
- Swipe dead zone 30px (prevent accidental)
- Visual feedback on touch (ripple, press state) within 16ms
- D-pad buttons for games needing directional input
- Input buffering (2 frames) — never drop player input
Animation Principles (Disney's 12, Adapted)
From Disney
- Squash & Stretch: Gems compress on impact, tiles stretch on fast moves
- Anticipation: Brief windup before every action (lean, glow, scale down)
- Follow-Through: Overshoot + settle after movement completes
- Slow In, Slow Out: Ease into and out of all movement (outCubic default)
- Arcs: Natural curved motion paths, not straight lines
- Secondary Action: Supporting animations reinforce primary (particles on move, glow on select)
- Staging: Draw player attention to what matters (dim background during key events)
- Appeal: Everything should look good. Clean shapes, consistent sizes, brand colors.
Game-Specific
- Hitstop: 2-5 frame pause on significant impacts. Makes hits feel powerful.
- Juice Escalation: Effects intensify with combos/streaks. 1x normal → 2x particles → 3x shake + flash.
- Telegraph: Enemies/hazards signal intent before acting. Red pulse = about to attack. Glow = about to move.
- Weight: Heavy objects move slowly with strong follow-through. Light objects move fast with minimal overshoot.
Genre Templates
Puzzle (Crystal Match, 2048)
- Primary loop: Select → action → cascade → score
- Key animation: Match celebration must escalate with chain length
- Idle: Board should ripple subtly, individual pieces shimmer
- Signature moment: Long cascade with escalating particles + screen shake
- Anti-pattern: Instant gem removal without pop animation
Action/Runner (Neon Runner)
- Primary loop: Dodge → collect → speed up → survive
- Key animation: Speed sensation through FOV, speed lines, ground acceleration
- Idle: N/A (always moving), but player character has micro-animations
- Signature moment: Near-miss with slow-motion + dramatic zoom
- Anti-pattern: Flat perspective with no depth cues
Roguelike (Neon Depths)
- Primary loop: Explore → encounter → combat → loot → descend
- Key animation: Combat hitstop is the most important single animation
- Idle: Dungeon atmosphere — dust, flicker, enemy sway
- Signature moment: Room reveal with radial light expansion
- Anti-pattern: Instant teleport between tiles, instant damage numbers
Word (Word Forge)
- Primary loop: Type → submit → reveal → learn
- Key animation: Sequential letter reveal with staggered timing
- Idle: Gentle keyboard glow, submitted rows have subtle shimmer
- Signature moment: Winning guess with all-green cascade + celebration
- Anti-pattern: All letters revealed simultaneously
Arcade (Snake)
- Primary loop: Move → grow → avoid → survive
- Key animation: Fluid interpolated movement (never grid-snap)
- Idle: Body segments sway slightly, head has directional lean
- Signature moment: Death sequence rippling from head to tail
- Anti-pattern: Stepped movement where snake teleports between cells
Technical Standards
Canvas Games (Neon Depths, Neon Runner, Snake)
- Game loop:
requestAnimationFramewith delta-time tracking - Rendering: Clear → draw background → draw entities → draw effects → draw HUD
- Effects pipeline:
ctx.save()→ apply shake offset → draw scene →ctx.restore()→ draw flash overlay - Particle budget: Mobile 100 max, desktop 200 max (enforced by ParticleSystem)
- State: Game state in
useRef(notuseState) to avoid React re-renders in loop - Resolution: Canvas sized to container, CSS handles responsive scaling
DOM Games (Crystal Match, 2048, Word Forge, Memory Match)
- Animations: CSS
@keyframesinjected via<style>tag, or Framer Motion - Timing: CSS
cubic-bezier(0.33, 1, 0.68, 1)= outCubic,cubic-bezier(0.34, 1.56, 0.64, 1)= outBack - Stagger: CSS custom property
--delaywithanimation-delay: var(--delay)for sequential reveals - State management: React useState for UI state, useRef for animation state
- Performance:
will-change: transformon animated elements,transformovertop/left
Shared Engine (lib/games/effects.ts)
- ParticleSystem: burst, sparkle, floatingText
- ScreenShake: intensity decay via outQuad
- FlashEffect: color overlay with fade
- AnimatedValue: smooth numeric transitions
- GameTimer: frame-based callbacks and sequences
- Hitstop: freeze-frame for impact emphasis
- GameAudio: Web Audio API oscillator stubs
- Easing: outQuad, outCubic, outElastic, outBounce, inOutCubic
- Colors: NEON brand palette, hexToRGBA, lerpColor, pulseAlpha
Anti-Patterns (NEVER DO)
| Anti-Pattern | Why It's Bad | Do This Instead |
| Instant state change | Feels like a bug, not a game | Animate everything with easing |
transition: all 0.3s | Transitions wrong properties, looks sloppy | Specify exact properties and durations |
animation: linear | Robotic, unnatural movement | Use cubic-bezier easing curves |
| Static entities | Dead, lifeless world | Add idle animations to everything |
| Text-only game over | Anticlimactic, cheap feeling | Multi-stage death sequence with effects |
| Score instant display | No satisfaction, no drama | Score count-up with accelerating pace |
| Uniform particle bursts | Looks like a default particle emitter | Vary size, speed, color, gravity per context |
| Grid-snap movement | Characters teleport, feels jarring | Interpolate position over 60-80% of tick |
| Same shake for everything | Loses meaning, becomes noise | Scale shake intensity to event significance |
| Ignoring mobile | Half the audience can't play | Touch-first, keyboard-enhanced |
Shared Resources
- Effects Engine:
lib/games/effects.ts— import { ParticleSystem, ScreenShake, FlashEffect, AnimatedValue, GameTimer, Hitstop, GameAudio, ease, NEON, NEON_BURST } - Game Registry:
lib/games/registry.ts— GameEntry, GameQualityMetrics, getGameBySlug, getQualityReport - Brand Colors: NEON object (cyan, violet, purple, amber, emerald, rose, fuchsia, lime, white)
- Production Path:
.worktrees/vercel-ui-ux/app/games/
Every frame is a chance to delight. Build like Supergiant, polish like Nintendo.
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- vudovn/ag-kit★ 8.2ksame name
- vudovn/antigravity-kit★ 8.2ksame name
- Mindrally/skills★ 275same name
- xenitV1/Antigravity-Workflows★ 130same name
- travisjneuman/.claude★ 106same name
- VoDaiLocz/kilo-kit-mcp★ 28same name
- xfstudio/skills★ 9same name
- SKB3002/agenthub★ 4same name
- ai4brands-design/claude-skills★ 2same name
- bcastelino/agent-skills-kit★ 2same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use intelligent-routing, nextjs-react-expert and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
SKB3002Skillintelligent-routing
Automatic agent selection and intelligent task routing. Analyzes user requests and automatically selects the best specialist agent(s) without requiring explicit user mentions.
Also in 5 projects that use this
SKB3002Skillnextjs-react-expert
React and Next.js performance optimization from Vercel Engineering. Use when building React components, optimizing performance, eliminating waterfalls, reducing bundle size, reviewing code for performance issues, or implementing server/client-side optimizations.
Also in 3 projects that use this
xfstudioSkillrust-pro
Master Rust 1.75+ with modern async patterns, advanced type system
Also in 5 projects that use this
jornalistainclusivoSkilldesign-spec
How to author a DESIGN.md file — the machine-readable design-token + human-rationale format that must exist before any UI is built. YAML front-matter token schema (colors, typography, spacing, rounded, components), type system, token references, and canonical section order.
Also in 3 projects that use this
zzfancitizenSkillverify-changes
Verify code changes do not break the project by running tests, linter checks, and import validation. Use after making any code changes, editing Python files, modifying imports, updating dependencies, or refactoring.
Also in 3 projects that use this
VercelSkillweb-design-guidelines
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
Also in 5 projects that use this
In this repository131 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/commands/monitoring/agents.mdAGENTS.md
- .claude/skills/gstack/AGENTS.mdAGENTS.md
- .claude/agents/CLAUDE.mdCLAUDE.md
- .claude/commands/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- .claude/skills/agentic-orchestration/CLAUDE.mdCLAUDE.md
- .claude/skills/cacos/CLAUDE.mdCLAUDE.md
- .claude/skills/CLAUDE.mdCLAUDE.md
- .claude/skills/frankx-daily-execution/CLAUDE.mdCLAUDE.md
- .claude/skills/gstack/CLAUDE.mdCLAUDE.md
- .claude/skills/memory-guardian/CLAUDE.mdCLAUDE.md
- .claude/skills/newsletter/CLAUDE.mdCLAUDE.md
- .claude/skills/oci-services-expert/CLAUDE.mdCLAUDE.md
- .claude/skills/oracle-ai-architect/CLAUDE.mdCLAUDE.md
- .claude/skills/oracle-diagram-generator/CLAUDE.mdCLAUDE.md
- .claude/skills/research/CLAUDE.mdCLAUDE.md
- .claude/skills/swarm-advanced/CLAUDE.mdCLAUDE.md
- docs/CLAUDE.mdCLAUDE.md
- drafts/CLAUDE.mdCLAUDE.md
- hub-generator/CLAUDE.mdCLAUDE.md
- instances/CLAUDE.mdCLAUDE.md
- mcp-servers/CLAUDE.mdCLAUDE.md
- outputs/CLAUDE.mdCLAUDE.md
- scripts/CLAUDE.mdCLAUDE.md
- skills/CLAUDE.mdCLAUDE.md
- templates/CLAUDE.mdCLAUDE.md
- workflows/CLAUDE.mdCLAUDE.md
- acos-metaSkill
- agentic-jujutsuSkill
- agentic-orchestrationSkill
- AI Architect NewsletterSkill
- ai-architectureSkill
- algorithmic-artSkill
- apod-to-shortSkill
- arxiv-space-paper-to-briefSkill
- book-publishingSkill
- brand-guidelinesSkill
- brand-voiceSkill
- cacosSkill
- canvas-designSkill
- Claude SDK ExpertSkill
- cosmic-mythic-overlaySkill
- creator-productivitySkill
- descript-operatorSkill
- doc-coauthoringSkill
- docxSkill
- excellence-book-writingSkill
- Framer ExpertSkill
- frankx-brandSkill
- FrankX Daily Execution SystemSkill
- frontend-designSkill
- github-code-reviewSkill
- github-multi-repoSkill
- github-project-managementSkill
- github-release-managementSkill
- github-workflow-automationSkill
- Greek PhilosopherSkill
- grok-harnessSkill
- gstackSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

