assembly-definitions
Assembly definition management — when to create asmdefs, reference rules, Editor/Runtime/Test separation, platform filters, compilation speed optimization.
Hyper-casual mobile game architecture — one-tap/swipe controls, instant onboarding, short sessions, ad monetization, minimalist visuals, level progression, score systems.
$ npx -y skills add XeldarAlz/everything-claude-unity --skill hyper-casual --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/hyper-casualContext preview
The summary Claude sees to decide when to auto-load this skill.
Hyper-casual mobile game architecture — one-tap/swipe controls, instant onboarding, short sessions, ad monetization, minimalist visuals, level progression, score systems.
name: hyper-casual description: "Hyper-casual mobile game architecture — one-tap/swipe controls, instant onboarding, short sessions, ad monetization, minimalist visuals, level progression, score systems." globs: ["**/HyperCasual*.cs", "**/Level*.cs", "**/GameManager*.cs"]
public sealed class TapController : MonoBehaviour
{
[Header("Input")]
[SerializeField] private float _tapForce = 10f;
[SerializeField] private float _holdForceMultiplier = 0.5f;
private Rigidbody _rb;
private bool _isTouching;
private void Awake()
{
_rb = GetComponent<Rigidbody>();
}
private void Update()
{
if (UnityEngine.InputSystem.Touchscreen.current == null) return;
UnityEngine.InputSystem.Controls.TouchControl touch =
UnityEngine.InputSystem.Touchscreen.current.primaryTouch;
if (touch.press.wasPressedThisFrame)
{
OnTap();
}
_isTouching = touch.press.isPressed;
}
private void FixedUpdate()
{
if (_isTouching)
{
_rb.AddForce(Vector3.up * _holdForceMultiplier, ForceMode.Acceleration);
}
}
private void OnTap()
{
_rb.linearVelocity = Vector3.zero;
_rb.AddForce(Vector3.up * _tapForce, ForceMode.Impulse);
}
}public sealed class SwipeController : MonoBehaviour
{
[SerializeField] private float _swipeThreshold = 50f;
[SerializeField] private float _moveSpeed = 10f;
[SerializeField] private float _laneSwitchDuration = 0.15f;
private Vector2 _touchStartPos;
private bool _isSwiping;
private void Update()
{
if (UnityEngine.InputSystem.Touchscreen.current == null) return;
UnityEngine.InputSystem.Controls.TouchControl touch =
UnityEngine.InputSystem.Touchscreen.current.primaryTouch;
if (touch.press.wasPressedThisFrame)
{
_touchStartPos = touch.position.ReadValue();
_isSwiping = true;
}
if (touch.press.wasReleasedThisFrame && _isSwiping)
{
Vector2 delta = touch.position.ReadValue() - _touchStartPos;
_isSwiping = false;
if (delta.magnitude > _swipeThreshold)
{
if (Mathf.Abs(delta.x) > Mathf.Abs(delta.y))
{
OnSwipeHorizontal(delta.x > 0f ? 1 : -1);
}
else
{
OnSwipeVertical(delta.y > 0f ? 1 : -1);
}
}
else
{
OnTap();
}
}
}
private void OnSwipeHorizontal(int direction) { /* lane switch or steer */ }
private void OnSwipeVertical(int direction) { /* jump or duck */ }
private void OnTap() { /* primary action */ }
}[CreateAssetMenu(menuName = "HyperCasual/Level Config")]
public sealed class LevelConfig : ScriptableObject
{
[SerializeField] private int _levelNumber;
[SerializeField] private float _speed = 5f;
[SerializeField] private float _obstacleFrequency = 0.5f;
[SerializeField] private Color _themeColor = Color.white;
[SerializeField] private int _targetScore;
public int LevelNumber => _levelNumber;
public float Speed => _speed;
public float ObstacleFrequency => _obstacleFrequency;
public Color ThemeColor => _themeColor;
public int TargetScore => _targetScore;
}
public sealed class LevelManager : MonoBehaviour
{
[SerializeField] private LevelConfig[] _levels;
private int _currentLevelIndex;
private const string LEVEL_KEY = "CurrentLevel";
private void Awake()
{
_currentLevelIndex = PlayerPrefs.GetInt(LEVEL_KEY, 0);
}
public LevelConfig GetCurrentLevel()
{
int index = _currentLevelIndex % _levels.Length;
return _levels[index];
}
public void CompleteLevel()
{
_currentLevelIndex++;
PlayerPrefs.SetInt(LEVEL_KEY, _currentLevelIndex);
PlayerPrefs.Save();
}
}Splash → Menu (one big PLAY button)
→ Playing (auto-forward, player reacts)
→ Game Over (score, best, retry/home)
→ Rewarded Ad (continue?) → resume or Menupublic interface IAdService
{
void ShowInterstitial(System.Action onComplete);
void ShowRewarded(System.Action<bool> onResult);
void ShowBanner();
void HideBanner();
}The ultimate Claude Code toolkit for Unity game development. A production-ready, plug-and-play system that gives Claude Code deep Unity expertise — from writing performant C# to building scenes, profiling performance, and triggering iOS/Android builds — all
Assembly definition management — when to create asmdefs, reference rules, Editor/Runtime/Test separation, platform filters, compilation speed optimization.
Structured commit trailers — adds Constraint, Rejected, Scope-risk, and Not-tested metadata to commit messages. Captures architectural decisions and known gaps…
Ambiguity gating — detects vague feature requests and forces structured requirements gathering with scoring across scope, platform, performance, integration,…
Event system patterns — C# events, UnityEvent, SO event channels, static EventBus. When to use each, zero-allocation patterns, memory leak prevention.
Configures Claude Code's statusline to display Unity workflow state — current phase, active agent, files modified, and session duration.
Post-debugging knowledge extraction — captures non-obvious, codebase-specific learnings that pass quality gates. Invoke after resolving tricky bugs or…