CursorでTsumikiの概念を応用する仕組みを作ってみた
Tsumikiとは
Tsumikiは、Claude Codeで提唱されているAITDD(AI-assisted Test-Driven Development)の概念を実現するための開発フレームワークです。従来のTDDにAIを組み込むことで、要件定義から実装までの各フェーズでAIが開発者を支援する仕組みを提供します。
Tsumikiの基本的な開発フローは以下の通りです。
- 要件定義(Requirements)
- 設計(Design)
- タスク分割(Tasks)
- TDD実装(Red→Green→Refactor)
各フェーズでMarkdown形式の文書を作成し、AIがその文書を基に次のフェーズの成果物を生成することで、一貫性のある開発を実現します。
なぜCursor版が必要か
TsumikiはClaude Code専用のフレームワークとして設計されており、Claude Codeの統合開発環境の機能に依存しています。しかし、多くの開発者がVSCodeベースのCursorを使用している現状を考えると、Cursorでシームレスに活用できるようになれば、より多くの開発者がAITDDの恩恵を受けられると考えます。
そこで、Tsumikiの概念をCursor環境で実現するための仕組みを構築しました。
Tsumiki for Cursorの構成
Tsumiki for Cursorは以下のディレクトリ構成で実装されています。
tsumiki-cursor/
├── templates/ # 文書テンプレート
│ ├── requirements/ # 要件定義
│ ├── design/ # 設計文書
│ ├── tasks/ # タスク管理
│ └── tests/ # テスト仕様
├── scripts/ # 自動化スクリプト
├── prompts/ # AIプロンプト集
└── docs/ # プロジェクト文書
導入手順
1. tsumiki-cursorのダウンロード
プロジェクトルートで以下のコマンドを実行します。
// すみません現在準備中となります
git clone https://github.com/your-repo/tsumiki-cursor.git
2. 初期化スクリプトの実行
./tsumiki-cursor/scripts/init.sh
このスクリプトにより、必要なディレクトリ構造が作成され、基本設定ファイル(.tsumiki-config.json)が生成されます。
3. 開発フローの選択
用途に応じて以下のスクリプトを実行します。
- Kairoフロー(包括的開発):
./tsumiki-cursor/scripts/kairo.sh - TDDフロー(テスト駆動開発):
./tsumiki-cursor/scripts/tdd.sh - リバースエンジニアリング:
./tsumiki-cursor/scripts/reverse.sh
プロジェクト固有の設定
ESLint設定の生成
以下のプロンプトをCursorのAIに投げることで、プロジェクトに適したESLint設定を生成できます。
もちろんすでに存在しているプロジェクトなら、それに追記してもらってもいいですし、biomeならそれ用の定義にアレンジも可能かと思います。
このプロジェクトに適したESLint設定を生成してください。
以下の要件を満たす設定をお願いします:
1. Next.js/TypeScript環境に対応
2. 既存コードでは警告のみ、新規・変更ファイルでは厳格なルール適用
3. ベース設定(.eslintrc.cjs)と厳格設定(.eslintrc.strict.cjs)の2つを作成
4. any/unknown型の使用を段階的に排除できる構成
ベース設定では既存の大量違反を考慮して以下をOFFにしてください:
- @typescript-eslint/no-explicit-any
- @typescript-eslint/ban-types
- @typescript-eslint/no-unused-vars
厳格設定(lint-staged用)では上記を全てERRORにしてください。
Husky/lint-staged設定の生成
ちなみに、pre-commitやpre-pushのトリガーを取りたいだけなら、.gitのhooksでも実施できますが、こちらは基本的にバージョン管理対象外なので、チームに共有できないという観点からHuskyを使った方が個人的には良いかと思います。同様のことができるならHuskyである必要はないです。
このプロジェクトにHuskyとlint-stagedを導入してください。
以下の要件を満たす設定をお願いします:
1. pre-commitフックでlint-stagedを実行
2. lint-stagedでは変更ファイルのみをチェック
3. ESLintは.eslintrc.strict.cjsを使用
4. Prettierも同時に実行
package.jsonのlint-staged設定:
- TypeScript/JavaScriptファイル: ESLint(厳格設定)→Prettier
- その他のファイル(JSON/MD/CSS): Prettierのみ
CI設定の生成
GitHub ActionsでCIパイプラインを設定してください。
以下の要件を満たす.github/workflows/ci.ymlを作成してください:
1. トリガー: PRとmainブランチへのpush
2. Node.js 20を使用
3. ジョブ内容:
- npm ci
- npm run typecheck
- npm run test
- npm run build
4. カバレッジレポート(coverage/coverage-summary.json)をアーティファクトとして保存
ただし、lintは既存の大量違反があるため、CIでは実行しないでください。
TypeScript設定の調整
プロジェクトのTypeScript設定を調整してください。
以下の要件を満たす設定をお願いします:
1. tsconfig.json: 既存設定を維持
2. tsconfig.build.json: ビルド専用設定を追加
- tsconfig.jsonを継承
- testsディレクトリを除外
- noEmit: true
package.jsonのtypecheckスクリプトも以下に変更:
"typecheck": "tsc -p tsconfig.build.json --noEmit"
これにより、テストの型エラーがビルドをブロックしなくなります。
実装のポイント
1. Markdownテンプレートの活用
各フェーズで使用するMarkdownテンプレートを用意することで、AIへの指示が明確になり、一貫性のある文書が生成されます。
2. シェルスクリプトによる自動化
開発フローの各ステップをシェルスクリプトで自動化することで、手順の抜け漏れを防ぎ、効率的な開発を実現します。
3. 段階的な品質向上
既存プロジェクトへの導入を考慮し、ESLintルールを段階的に適用する仕組みを実装しました。変更ファイルのみに厳格なルールを適用することで、既存コードを壊すことなく品質を向上させられます。
まとめ
Tsumiki for Cursorにより、Claude Code限定だった優れたAITDD概念を、Cursor環境でも活用できるようになりました。要件定義から実装までの各フェーズでAIの支援を受けながら、品質の高いコードを効率的に開発できます。
特に、既存プロジェクトへの導入を考慮した段階的なルール適用の仕組みは、実務での活用を容易にします。今後もAIを活用した開発手法は進化していくと考えられますが、その基盤となる仕組みを整備することで、より生産的な開発が可能になるでしょう。
Discussion