game-feel
Juice, feedback layering, screen shake/particles/sound timing, the perception-action cycle, and 'why does this feel bad?' diagnostics. Use when implementing player actions, combat hits, collectibles, UI transitions, weapon impacts, jumps, dashes, or any moment where the player should *feel* something; when a mechanic functionally works but feels mushy, slow, or unsatisfying; or when playtesters say 'it's missing something.' Covers timing reference numbers (frames per response phase), feedback channels (visual/audio/haptic/screen), and the diagnostic ladder for feel problems.
What this skill does
# Game Feel
**Purpose:** Make every player action feel responsive, satisfying, and communicative. Game feel is the difference between "it works" and "it feels great." These are the tools to close that gap.
**Influences:** Frameworks here draw on feedback layering theory, cognitive perception-action cycle research, and game design literature on "juice" and responsive design.
---
## When to Activate
Use this skill **proactively** when:
- Implementing any player action (attack, jump, dash, interact)
- Adding combat hits, impacts, or collisions
- Designing collectible/pickup feedback
- Building UI transitions and state changes
- Something is mechanically correct but feels "flat" or "floaty"
- A player or tester says "it feels wrong" but can't articulate why
---
## Core Framework: Three Feedback Layers
Every player action should produce feedback on three layers, and all three must align:
| Layer | What Changes | Example |
|-------|-------------|---------|
| **Mechanical** | Game state updates | HP decreases, score increases, position changes |
| **Audiovisual** | Sensory response | Screen shake, particles, sound effect, animation |
| **Emotional** | Player feeling | Satisfaction, tension, surprise, power |
**When layers misalign,** something feels "off" even if the player can't explain it:
- Mechanical hit + weak audiovisual = "it didn't feel like I hit them"
- Big audiovisual + no mechanical change = "all flash, no substance"
- Mechanical + audiovisual aligned but wrong emotion = "it feels weird"
---
## The Perception-Action Cycle
For feedback to register, it must pass three gates:
```
Action → [Perceivable?] → [Interpretable?] → [Timely?] → Registered
↓ ↓ ↓
"I didn't see it" "What happened?" "It feels laggy"
```
### Gate 1: Perceivable
Can the player actually detect the feedback?
- [ ] Does it have sufficient visual contrast against the current scene?
- [ ] Is it large enough / loud enough for the context?
- [ ] Does it use a channel the player is monitoring? (Don't put critical info in a corner during action)
- [ ] Does it work for players with visual/auditory limitations?
### Gate 2: Interpretable
Does the player understand what the feedback means?
- [ ] Does the feedback match the player's mental model? (Hit = damage, collect = got it)
- [ ] Is there a consistent language? (Red = damage, green = heal, across the whole game)
- [ ] Can a new player understand it without explanation?
- [ ] Does it distinguish between similar events? (Light hit vs. heavy hit, near miss vs. clean dodge)
### Gate 3: Timely
Is the feedback close enough in time to the action?
| Threshold | Feel |
|-----------|------|
| < 50ms | Instant — player perceives cause and effect as simultaneous |
| 50-100ms | Responsive — feels connected but has presence |
| 100-200ms | Noticeable — acceptable for weighty/heavy actions |
| > 200ms | Laggy — feels disconnected; only acceptable for explicitly slow/telegraphed actions |
**Rule:** Immediate visual feedback within 1-2 frames (16-33ms), even if the full animation plays out over longer. The *onset* must be instant.
---
## The Juice Checklist
"Juice" is small feedback amplification with outsized impact on feel. These techniques don't change game state — they change *experience*.
### Impact / Hit Juice
- [ ] **Screen shake** — intensity proportional to hit magnitude (2-5px for light hits, 8-15px for heavy)
- [ ] **Hit stop / freeze frame** — 2-5 frame pause on impact (30-80ms) sells the weight
- [ ] **Particle burst** — directional, from impact point
- [ ] **Sound effect** — layered (impact + reaction + environmental response)
- [ ] **Knockback / recoil** — both target and attacker react physically
- [ ] **Camera punch** — brief zoom or push toward impact point
- [ ] **Flash / color shift** — 1-2 frame white flash on the hit target
### Collection / Pickup Juice
- [ ] **Magnetism** — items drift toward player in the last few pixels
- [ ] **Pop animation** — item scales up briefly before disappearing
- [ ] **Sound** — pitch variation on rapid sequential pickups (ascending pitch = satisfying)
- [ ] **Number popup** — value floats up and fades
- [ ] **UI pulse** — the relevant counter/bar flashes or bounces
### Movement Juice
- [ ] **Squash and stretch** — character compresses on land, stretches on jump
- [ ] **Dust/particles** — on landing, on dash, on direction change
- [ ] **Trail effects** — afterimages, motion blur, speed lines
- [ ] **Camera lead** — camera slightly ahead of movement direction
- [ ] **Sound** — footsteps with surface-appropriate variation
### UI Transition Juice
- [ ] **Easing curves** — never linear; ease-out for appearing, ease-in for disappearing
- [ ] **Overshoot** — slight bounce past target position
- [ ] **Stagger** — sequential items animate with slight delay between each
- [ ] **Sound** — subtle confirmation sounds on state changes
---
## "Why Does This Feel Bad?" Diagnostic
When something feels wrong, diagnose systematically:
### Step 1: Identify the Symptom
| Player Says | Likely Layer | Start Here |
|-------------|-------------|------------|
| "It's laggy" | Timing | Check input-to-visual-response latency |
| "It feels weak" | Audiovisual | Add juice (hit stop, shake, sound) |
| "It didn't register" | Perception | Increase feedback visibility/contrast |
| "It's confusing" | Interpretation | Clarify feedback language, reduce noise |
| "It's floaty" | Timing + AV | Add gravity, weight, impact frames |
| "It's clunky" | Timing | Check cancel windows, input buffering |
| "It's boring" | Emotional | Layer isn't producing the intended feeling |
### Step 2: Check Timing
- Measure actual input-to-response latency (not estimated — use frame-by-frame analysis)
- Compare against the threshold table above
- Check if input buffering is working (player presses attack during recovery — does it queue?)
- Check cancel windows (can the player interrupt one action with another when expected?)
### Step 3: Check Proportionality
- Is feedback intensity proportional to action significance?
- Are trivial actions quiet and major actions loud?
- Is there dynamic range? (If everything shakes, nothing shakes)
### Step 4: Check Redundancy
Critical feedback should use 2+ channels:
```
Visual + Audio (minimum for any significant action)
Visual + Audio + Haptic (ideal for core loop actions)
Visual + Audio + Camera (for high-impact moments)
```
Relying on a single channel means some players will miss it.
### Step 5: Check for Feedback Lies
Does the feedback match what actually happened?
- Animation says "hit" but damage didn't register → trust gap
- Sound plays but no visual confirmation → feels ghostly
- Big particle effect on a weak attack → expectation violation
- Hit stop on a miss → false positive
**Feedback lies erode trust faster than missing feedback.**
---
## Timing Reference Card
All values below are **starting points** — tune through playtesting per the Numbers Policy in **game-design**.
| Action Type | Visual Onset | Full Duration | Sound Onset | Notes |
|-------------|-------------|---------------|-------------|-------|
| Light attack | 1-2 frames | 200-400ms | On contact frame | Quick, snappy |
| Heavy attack | 3-5 frame windup | 400-800ms | On contact + windup sound | Telegraphed weight |
| Jump | 1 frame | Duration of jump | On launch | Squash on takeoff, stretch at apex |
| Land | 1-2 frames | 100-200ms | On contact | Squash, particles, camera dip |
| Collect | Instant | 200-400ms fade | On contact | Magnet + pop + counter pulse |
| Damage taken | 1 frame flash | 200-500ms | On contact | Screen edge vignette, sound, shake |
| Death | 3-5 frame slow | 500ms-2s | Dramatic sting | Time slow, camera pull, fade |
---
## Anti-Patterns
- **Silent actions** — any player action with no perceivable response
- **Uniform intensity** — same screen shake for a poke and a meteor strike
- **Over-juicing** — so manyRelated in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.