Communityライティング&編集github.com

yurgeno/taut-data-community

TAUT 用のコミュニティスターターデータパック:汎用的な開発フロー(分析/実装/レビュー)、workspace-init スキルと workspace-check スキル、あらゆる環境向けのスタック特化型スキルを提供します。

taut-data-community とは?

このスキルは、TAUT(Task-Aware Unified Tooling)フレームワークにおけるコードレビューの第3段階「dev-review」を実装したものです。開発者が生成した差分(DIFF)を、タスクと分析ドキュメントに基づいて評価し、変更が意図された目的を達成しているかを検証します。Node.js、JVM、Android、PHP、Pythonといった主要な技術スタックごとに特化したチェック項目を提供し、型安全性、リソース管理、ライフサイクル、テスト実行など、スタック固有の重要ポイントを網羅します。また、レビュアーは変更を直接マージせず、オーナーが最終判断を下す「オーナーゲート」方式を採用し、承認または変更要求の判定をレビュー結果として出力します。このスキールは、Claude Code、Cursor、CodexなどのAIエージェントと連携し、ワークスペースのgitルールに従って安全なコードレビューフローを実現します。

対応~Claude Code~Codex CLI~Cursor
npx skills add yurgeno/taut-data-community

Installed? Explore more ライティング&編集 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

dev-review — レビュアー(第3段階)

変更に対する独立した目。DIFF を TASK に対してレビューする — 無に対してではなく。

呼び出し方dev-review <TASK>
入力ワーキングツリーの差分 + memory/spec/<TASK>/analysis.md と implementation.md
出力memory/spec/<TASK>/review.md、status: draft、判定 approve / needs-changes
ゲートオーナーが判定を受け入れる — 下記の オーナーゲート を参照
次へneeds-changes → 再度 dev-implement <TASK>; approve → オーナーがマージする

0. 開始前チェック

  • <TASK> が指定されていない → 質問する。
  • implementation.md がないか空 → 停止: まだレビューするものはない。
  • implementation.md が status: draft のまま → その旨を伝え、オーナーが依頼すればレビューは行うが、判定には第2段階がゲートを通過していなかったことを記録する。
  • 分析を DIFF より先に読む。意図を知らずに変更を判断すると、スタイルコメントしか出せず、重要な指摘を見逃す。

プロセス(共通)

  1. タスクと分析から意図を再導出し、差分がそれを達成しているかを判断する。間違った場所への美しい変更は重大な指摘である。

  2. 正確性を最優先: エッジケース、エラーパス、並行処理、境界でのデータ構造。次に規約と明確さ。スタイルだけの細かい指摘は最後に、その旨を明示する。

  3. 実装者の証拠を信用せず、再現せよ。 決定的な検証は自分で再実行する(スイートが長い場合は dev-reviewer サブエージェントに委任)。実装ノートには実行された内容が書かれているが、それが依然として有効であり、正しいものが実行されたことを確認するのがあなたの仕事である。

  4. 影響範囲を確認する: 変更されたコードを他に誰が利用しているか?差分が触れていない使用箇所を grep する。意図しないロックファイル / 設定 / 生成ファイルの変更は指摘となる。

  5. 修正ではなく指摘を行う。 重要度(critical / should-fix / nit)とファイル・行番号を報告する。些細な機械的な修正は直接適用してもよいが、それ以外はすべて dev-implement に戻す。判定を memory/spec/<TASK>/review.md に書き、以下のように始める:

    ---
    task: <TASK>
    stage: review
    status: draft
    verdict: approve | needs-changes
    ---
    

スタック固有のレビューチェック

node: 差分で導入された型エスケープ(any、as、@ts-ignore);エラーハンドリングのない Promise チェーン;意図しない依存関係やロックファイルのずれ;プロジェクトグラフをバイパスするモノレポ編集(パッケージ間の深い相対インポート)。

jvm: 新しい境界での nullability(Kotlin プラットフォーム型、Optional の誤用);リソースハンドリング(try-with-resources / use);新しい Bean のトランザクションと DI スコープ;実際に実行されるテスト(正しいモジュール、正しい命名規則)。

android: ロジックだけでなくライフサイクルを確認する — Composable や Activity で開始された処理は、ローテーションに耐え、スコープが死んだ時に停止しなければならない(repeatOnLifecycle / collectAsStateWithLifecycle で収集し、正しいスコープでコルーチンをキャンセルする)。長命オブジェクトに保持された Context はリークである。AndroidManifest.xml への新しい権限追加にはランタイムリクエストパスも必要;minSdk より上の API には明示的なゲートが必要。リリースビルドはデバッグと異なる — リフレクション(シリアライゼーション、Room、DI)に関する R8/ProGuard ルールは変更の一部である。また、インストルメンテーションテストが実際に実行されたかどうかを確認する — CI で最もスキップされやすいテストである。

php: 新しいコードでの declare(strict_types=1) とパラメータ・戻り値の型;タッチされたパスでのインジェクション表面(生SQL、エスケープされていない出力);差分で導入されたエラー抑制(@);フレームワークの規約と一貫性のある設定/DI の変更。

python: 新しい境界での型付け(Any、戻り値の型の欠落、差分で導入された # type: ignore);可変なデフォルト引数と可変なクラスレベル状態;リソースのクローズ(ファイルと接続には with)と async 呼び出しの実際の待機;例外処理の飲み込み(except Exception: pass);マニフェストとロックの同時変更(pyproject.toml 対 uv.lock / poetry.lock)、またはどちらも変更しない;Django:モデル変更ごとにマイグレーション、リバーシブル;テストはランナーが見つける場所(tests/、test_*.py、conftest.py のフィクスチャ)に配置され、古いマーカーでスキップされていないこと。

オーナーゲート

ここで停止 — レビュアーは変更をマージせず、再実装もしない。判定を、それを裏付ける指摘とともに2文で報告する。

  • needs-changes → オーナーが判断する。その指示によりループは dev-implement <TASK> に戻り、implementation.md に追記される(最初からやり直しではない)。review.md は問題の記録として残る。
  • approve → オーナーが明示的に受け入れ、status: approved を設定する。変更のマージ(コミット、ブランチ、プッシュ)は、ワークスペースの git 法に基づくオーナーの行為であり、このスキルの責務ではない。

完了条件

review.md にフロントマターと、重要度別の指摘を含む判定が記載され、決定的な検証があなた自身によって再実行され、チャットサマリーが判定を2文で要約していること。他の誰かのポストモーテムで防御できるものだけを承認せよ。

関連スキル