📝

CursorでTsumikiの概念を応用する仕組みを作ってみた

に公開

Tsumikiとは

Tsumikiは、Claude Codeで提唱されているAITDD(AI-assisted Test-Driven Development)の概念を実現するための開発フレームワークです。従来のTDDにAIを組み込むことで、要件定義から実装までの各フェーズでAIが開発者を支援する仕組みを提供します。

Tsumikiの基本的な開発フローは以下の通りです。

  1. 要件定義(Requirements)
  2. 設計(Design)
  3. タスク分割(Tasks)
  4. 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