techstack について
ソフトウェアプロジェクト向けの技術スタックガイドです。フロントエンド、バックエンド、デスクトップ、エージェントアプリ、静的サイト、科学計算の選択肢と実践指針を示します。
主な機能
- 01領域別の技術選定案
- 02フロントエンド、バックエンド、デスクトップの指針
- 03エージェントアプリと静的サイトの構成案
- 04言語間契約と型付き境界の説明
- 05領域別ガイドとスキャフォールドへの案内
活用シーン
- 01新規プロジェクトの技術スタック選定
- 02エージェントアプリのアーキテクチャ設計
- 03言語間 API 契約の定義
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ keejkrej/ based-skills --skill techstackインストール後、Claude Code で/techstackを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
domains/agent.mdbackend.mdcontracts.mddesktop.mdfrontend.mdscientific.mdsecurity.mdstatic.md詳細
Techstack
全体ルール
- Effect は TS のドメイン/IO の基盤です。構造化エラー、DI、リソースの安全性、リトライを担い、場当たり的な Promise は使いません
- サービスごとに主要なサーバースタックを 1 つ選びます
- 既存リポジトリの規約が新規プロジェクト向けのデフォルトと矛盾する場合は、リポジトリの規約を優先します
- 境界ごとに型を付けます。信頼できない入力は実行時にデコード/検証します
- 新規プロジェクトのインストールでは、レジストリでのリリースから最低 7 日間経過したパッケージを使用します。domains/security.md を参照してください
- TS の相対インポート(すべてのアプリ、パッケージ、ルート、コンポーネント)では、常に拡張子を省略します。
from './module'とし、from './module.js'やfrom './module.ts'は使いません - Effect を使うリポジトリでの Effect 実装の詳細については、
effect-tsスキルを参照してください
デフォルトの概要
ライブラリと方向性を決めるための内容です。実装の詳細に進む前に、リンク先のファイルを読んでください。
フロントエンド
- Web SPA:React + Bun + Tailwind v4 + coss-ui + Effect Atom + TanStack Router
- クライアント IO は Effect プログラムで扱い、状態は atom に置きます。コンポーネント内で生の
fetchは使いません - モバイル:React Native + Expo + NativeWind + React Native Reusables(ファイルベースルーティングが適している場合は Expo Router も使用)
- モノレポ(SPA フロントエンド + Rust/Python バックエンド):Bun workspaces + Vite+ tasks(
vp run);contracts+client+utils+ui-headless+ui+web-app - モノレポ(Next.js/フルスタック Vercel):Bun workspaces + Turborepo(
turbo run) - ビルドツールチェーン、Lint/フォーマット、コンポーネントのインストールについては、
toolingスキルを参照してください - → domains/frontend.md
バックエンド
- TS API:Bun 上の
@effect/platform(HttpApiまたはHttpRouter)。別のルーターフレームワークは使いません - Python API/スクリプト:FastAPI + Pydantic v2 + uv
- Rust API:Axum + serde + utoipa
- Effect サービスでの WebSocket:Effect Platform
Socket - プロトタイプは Python で作成し、堅牢化して配布する場合は Rust を使います
- → domains/backend.md
デスクトップ
- UI 優先:同じ Web スタックをバンドルする Electron
- プロセスを分離:コンパニオンバックエンドを WebSocket 経由で
localhost上に置き、preload/IPC は OS API にのみ使います - ネイティブ UI:egui(Rust のツール/シミュレーション)または Qt 6(産業用ウィジェット)。ネイティブ性能が目的の場合は Electron を使いません
- → domains/desktop.md
エージェント
- Vercel 上の永続的なエージェントアプリ:Next.js + Eve(ファイルシステム優先)+ json-render(生成 UI)+ agent-browser + wterm/just-bash + Vercel Workflow/Sandbox/Drop
- Ollama(OpenAI 互換)経由でモデルを利用します。AI SDK の
openaiプロバイダーを使ってhttp://127.0.0.1:11434/v1に接続します。クラウドモデルは{model}:cloudとします - エージェントは
agent/配下のディレクトリです。instructions、tools、skills、channels、connections、sandbox、subagents、schedules を含みます - 制約付き json-render カタログを使って生成 UI を実現します
- 信頼できないコードはサンドボックスで実行します。影響の大きいアクションには
needsApprovalを使用します - プロトタイプは Vercel Drop で作成し、反復開発には git に移行します
- → domains/agent.md
静的サイト
- コンテンツ中心のサイト(ブログ、ドキュメント、マーケティング):Astro + 静的出力 + Tailwind v4 + Bun
- クライアント側のインタラクティブ性にはアイランドを使います。サイトが実際にアプリでない限り、SPA スタックは避けます
- 型付きの構造化コンテンツには Content Collections、リッチなレイアウトには MDX を使います
- → domains/static.md
科学技術
- C++ 画像処理:CMake + Qt 6 + VTK + ITK
- Rust の数値計算:
ndarrayエコシステムを使い、NumPy の移植版を手作業で作ることは避けます - → domains/scientific.md
コントラクト
- TS ↔ TS:モノレポ内で Effect の
Schema+HttpApiを共有します。アプリと API の間でコード生成は行いません - TS ↔ Python:FastAPI OpenAPI →
openapi-typescript;WebSocket → AsyncAPI - TS ↔ Rust:
utoipaOpenAPI →openapi-typescript;WebSocket → AsyncAPI またはasyncapi-rust - IPC(Electron/Tauri):Specta または pydantic-to-typescript
- → domains/contracts.md
ドメインで選ぶ
| ドメイン | 参照先 |
|---|---|
| ユーザー向け SPA またはモバイル UI | domains/frontend.md |
| API、サービス、スクリプト、またはデータジョブ | domains/backend.md |
| デスクトップアプリまたはネイティブアプリ | domains/desktop.md |
エージェント型アプリ(Eve + json-render + agent-browser + wterm + Vercel プリミティブ。モデルは Ollama を 127.0.0.1:11434/v1 で使用し、AI SDK openai + {model}:cloud 経由で利用) | domains/agent.md |
| 静的コンテンツ、ブログ、ドキュメント、またはマーケティングサイト | domains/static.md |
| 画像処理、数値計算、または科学技術計算 | domains/scientific.md |
| UI/サービス境界または言語間の型 | domains/contracts.md |
| サプライチェーン、インストールの強化、リリース経過期間のゲーティング | domains/security.md |
| 開発ツール、リンター/フォーマッター、CI、スキャフォールド | tooling スキル |
スキャフォールド
グリーンフィールド向けのスターター構成は tooling/scaffolds/ にあります。ファイルを生成する前に tooling/scaffolds/README.md をお読みください。
組み合わせ
- デスクトップ UI + ローカルバックエンド → domains/desktop.md + domains/backend.md + domains/contracts.md
- 完全なエージェント型スタック(Next.js + Eve + json-render + agent-browser + wterm + Vercel + AI SDK openai 経由の Ollama):domains/agent.md
- 新しいリポジトリのセットアップ → ドメインファイル(複数可)+
toolingスキル(tooling/domains/dev.md、tooling/scaffolds/)+ domains/security.md
コメント
Markdown 対応