👻

WEBアプリケーション開発の高速化するためのClaude Codeのカスタムスキルを作成した

に公開

はじめに

こんにちは、株式会社SasaTech 代表の佐々木です。
https://sasatech.co.jp/

会社説明(営業)

SasaTechは、テクノロジー領域における全てをワンストップで提供可能しています。

実績としては以下のようなものです。

  • 1年で数万MAUを超えるサービスの企画から開発、改善
  • 金融サービスの上流工程

興味があれば、佐々木のDMやホームページのお問い合わせにご相談ください!

https://x.com/Ryuki_Sasaki

社員も募集しています!カジュアル面談させてください!

AI活用の課題

SasaTechはバリバリにAIを活用して、開発の生産性をバリバリ上げようとしていますが、バリバリに課題を感じていました。

以下の課題により、AIを活用出来ているかでプロジェクトの生産性が30倍ほど違うと考えています。(冗談ではなく)

コンテクストのインプットコストが高い

  • 人間は過去の会話やプロジェクトの文脈を自然に保持しているが、AIはセッションごとにリセットされるため、同じ指摘を何回もする
  • コードを全て見ているわけではないので、車輪を再発明してくる

エンジニアによる生産性のバラツキ

  • AIに指示を出している人間のスキルや経験により、アウトプットの品質が変わる
  • エンジニアが細かくコードを見ないこと(Human in the Loopの欠如)により、技術負債が貯まる

解決策としてのskills

課題を解決するために、アーキテクチャレベルで情報を定義し、常にベストプラクティスを生成してくれることを期待して、Claude CodeのSkill機能を使って、カスタムスキルを作成しました。

精度はまだまだだと思いますが、ある程度のプラクティスに従った、人間フレンドリー / アーキテクチャフレンドリーなコードを書いてくれます。

技術スタック

このスキルでは、以下の技術スタックを使用することを前提としています。

カテゴリ 技術
フレームワーク Next.js (App Router)
データベース / 認証認可 Supabase
バリデーション Zod
テスト Vitest / PlaywRight(E2E)
ログ pino
データ取得 SWR
UI shadcn/ui

ダウンロード

以下のコマンドでスキルをダウンロードすることが出来ます。

npx skills add sasatech-labs/skills

Vercel社が開発しているSkillsというものを使用してインストールができます。
https://skills.sh/

Github
https://github.com/sasatech-labs/skills

免責事項

  • 破壊的な変更が発生する可能性があります。
  • SasaTechは、このスキルを使用したことによる一切の責任を負いません。

アーキテクチャ概要

ここからは、このスキルで作られるアーキテクチャの全体に踏み込みます。

Feature-based Layered Architecture

Feature-based Layered Architecture(機能単位の3層アーキテクチャ)を採用しています。

Clean Architecture のような依存性逆転は行わず、シンプルなHandler → Service → Repository / Adapter の3層構造を採用しています。

また、機能(Feature)単位でファイルを整理するアプローチを取ることで、AIの検索性をあげています。

クリーンアーキテクチャは、小規模 ~ 中規模の開発においては維持コストが上回ると判断し、3層に絞りました。

主なディレクトリ構造

src/
├── app/                    # Next.js App Router
│   ├── (auth)/            # 認証必要なルート
│   ├── (public)/          # 公開ルート
│   └── api/               # API Routes(Handler層)
│
├── features/              # 機能単位のモジュール
│   └── [feature]/
│       ├── index.ts       # 公開API
│       ├── core/
│       │   ├── schema.ts  # Zodスキーマ + 型
│       │   ├── service.ts # ビジネスロジック
│       │   └── repository.ts # データアクセス
│       ├── fetcher.ts     # クライアント用API
│       ├── hooks.ts       # React Hooks
│       └── components/    # UIコンポーネント
│
├── lib/                   # 共通ユーティリティ
│   ├── adapters/         # 外部サービス連携
│   ├── supabase/         # DBクライアント
│   └── ...

コントリビューティングについて

大歓迎です。PRください!

SasaTech Engineer Blog

Discussion