smithery.ai

tictactoe

Tic Tac Toe game development for Unity. Use for game logic, AI implementation, MVVM architecture, and UI development specific to this project.

First seen Mar 25, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,472 B
  • docs SUMMARY.md 159 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Tic Tac Toe Game Development Skill

Unity 6 での Tic Tac Toe(三目並べ)AI 対戦ゲーム開発のためのスキル定義。

When to Use This Skill

このスキルは以下の作業時にトリガーされる:

  • TicTacToe ゲームのロジック実装
  • 盤面管理、勝敗判定、ターン管理
  • AI 対戦ロジックの実装
  • MVVM + Clean Architecture に基づく UI 実装
  • VContainer/R3 を使用した DI・イベント実装

Project Overview

Game Specification

  • ゲームモード: AI 対戦オンリー(難易度なし)
  • 先手後手: ランダム決定
  • UI: 2D uGUI(PC 向け、マウス操作)
  • 演出: アニメーション、効果音あり
  • スコア/リプレイ: なし

Tech Stack

  • Engine: Unity 6000.3.2f1
  • DI: VContainer
  • Reactive: R3 (Reactive Extensions)
  • UI: uGUI (Canvas)
  • Architecture: MVVM + Clean Architecture
  • Deployment: WebGL → GitHub Pages

Quick Reference

Directory Structure

Assets/TicTacToe/
├── Scenes/
│   └── TicTacToeScene.unity
├── Prefabs/UI/
│   ├── BoardPanel.prefab
│   ├── CellButton.prefab
│   ├── ResultPanel.prefab
│   └── TurnIndicator.prefab
├── Scripts/
│   ├── Core/                    # Domain Layer
│   │   ├── Domain/              # Entities, Value Objects
│   │   ├── Repositories/        # Data Containers
│   │   ├── Services/            # Facades (Transaction Boundary)
│   │   └── Strategies/          # AI Algorithms
│   ├── Presentation/            # MVVM Layer
│   │   ├── Board/               # BoardView, BoardViewModel
│   │   ├── Cell/                # CellView, CellViewModel
│   │   ├── Result/              # ResultView, ResultViewModel
│   │   ├── TurnIndicator/       # TurnIndicatorView, TurnIndicatorViewModel
│   │   └── Mediators/           # GameMediator
│   ├── Infrastructure/          # DI, Factories
│   │   ├── Installers/
│   │   └── Factories/
│   └── EntryPoints/
├── Tests/
│   ├── EditMode/
│   └── PlayMode/
├── Audio/SE/
├── Art/Sprites/
└── Animations/

Namespace Convention

namespace TicTacToe.Core.Domain { }
namespace TicTacToe.Core.Repositories { }
namespace TicTacToe.Core.Services { }
namespace TicTacToe.Core.Strategies { }
namespace TicTacToe.Presentation.Board { }
namespace TicTacToe.Presentation.Cell { }
namespace TicTacToe.Presentation.Mediators { }
namespace TicTacToe.Infrastructure.Installers { }

Key Patterns

Domain Models

// CellState.cs
public enum CellState { Empty, X, O }

// PlayerType.cs
public enum PlayerType { Human, AI }

// BoardPosition.cs
public readonly struct BoardPosition
{
    public int Row { get; }
    public int Column { get; }
}

Service Pattern

// GameService.cs - Facade / Transaction Boundary
public class GameService
{
    private readonly BoardRepository _boardRepository;
    private readonly IAIStrategy _aiStrategy;

    public IObservable<GameResult> OnGameEnd { get; }
    public IObservable<PlayerType> OnTurnChanged { get; }

    public void PlaceMark(BoardPosition position) { }
    public void StartNewGame() { }
}

MVVM Pattern

// ViewModel
public class CellViewModel : IDisposable
{
    public IReadOnlyReactiveProperty<CellState> State { get; }
    public IObservable<Unit> OnClicked { get; }
}

// View
public class CellView : MonoBehaviour
{
    [Inject] private CellViewModel _viewModel;
    [SerializeField] private Button _button;
    [SerializeField] private Image _markImage;
}

AI Strategy

public interface IAIStrategy
{
    BoardPosition DecideMove(IReadOnlyList<CellState> board, CellState aiMark);
}

public class RandomAIStrategy : IAIStrategy { }
// Future: MinimaxAIStrategy, etc.

Reference Files

  • [architecture.md](references/architecture.md) - 設計方針・アーキテクチャ決定
  • [domainmodel.md](references/domainmodel.md) - ドメインモデル定義
  • [implementationguide.md](references/implementationguide.md) - 実装ガイド・手順

WebGL Deployment (GitHub Pages)

Build Settings

  • 圧縮形式: Disabled(GitHub Pages 互換)
  • 解像度: 960x600
  • メモリ: 256MB
  • Color Space: Linear

Build Helper

Assets/TicTacToe/Editor/WebGLBuildHelper.cs でビルド自動化:

TicTacToe/WebGL/1. Setup Build Settings     → シーン設定
TicTacToe/WebGL/2. Configure WebGL Player Settings → プレイヤー設定
TicTacToe/WebGL/3. Switch to WebGL Platform → プラットフォーム切替
TicTacToe/WebGL/4. Build WebGL              → ビルド実行

Deploy Workflow (git worktree)

# 1. worktree作成(gh-pagesブランチ用)
git worktree add ../UnityTest-gh-pages gh-pages

# 2. ビルドファイルをコピー
cd ../UnityTest-gh-pages
rm -rf Build TemplateData index.html
cp -r ../UnityTest/Build/WebGL/* .

# 3. コミット & プッシュ
git add -A
git commit -m "Deploy WebGL build"
git push origin gh-pages

# 4. worktree削除
cd ../UnityTest
git worktree remove ../UnityTest-gh-pages

Public URL

https://yuemori.github.io/UnityMCPTest/

WebGL Known Issues

問題 原因 解決策
AI turns not progressing Task.Delay() WebGL 非対応 Observable.Timer() (R3) 使用
Brotli decode error GitHub Pages Content-Encoding 未設定 圧縮形式 Disabled を使用

Integration with Other Skills

  • claudeskillunity: Unity 汎用パターン、MonoBehaviour ライフサイクル
  • Serena Memory: 実装進捗、セッション引き継ぎ

Notes

  • VContainer/R3 は要パッケージ追加
  • UI は全て Prefab 化(Scene に直接配置しない)
  • テストは Core 層を中心に作成
  • WebGL ではSystem.Threading.Tasksの使用を避け、R3 Observable を使用