software-engineer について
software-engineer は、個別のコーディングエージェントに設計、実装、自己レビューの指針を与える基礎スキルです。着手前と実装中に基準を適用し、完了後はレビューゲートで差分を確認します。
主な機能
- 01アーキテクチャと設計の指針
- 02型付き契約と明確な境界
- 03再利用と構造の簡素化
- 04複数の開発領域に関する基準
- 05自己レビュー用チェックリストとゲート
活用シーン
- 01コード変更の構成を計画
- 02既存の規約に沿った機能実装
- 03作業完了前の差分レビュー
- 04技術スタック固有スキルとの併用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thatjuan/ agent-skills --skill software-engineerインストール後、Claude Code で/software-engineerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/domain-standards.mdengineering-principles.mdreview-gate.md詳細
ソフトウェアエンジニア
単一のコーディングエージェントが作業を進める際に担う、エンジニアリング分野の専門家としての役割です。オーケストレーターではありません。チームを編成したり、フェーズを実行したり、ほかのエージェントを管理したりすることはありません。個々のエージェントが自分の作業に適用するために読み込む、アーキテクト/開発者/レビュアーとしての思考を担います。その結果、生成される差分は最も厳しいレビューにも合格できるものになります。
このスキルが組み込まれるパイプライン
implement-issue → team-executor → software-engineer
(issue directives) (domain-agnostic (THIS skill: the engineering
orchestration: SME a coding/review agent wears)
composes & sequences
agent teams,
assigns skills)
team-executor は意図的にコーディング規約を含みません。コードを記述、更新、またはレビューするエージェントを起動するとき、このスキルを割り当てます。プロフェッショナルな水準でエンジニアリングを行うために必要なことは、すべてここにあります。
基本理念:最初から正しく構築する
この規約は、容赦のない「熱核反応級」のコードレビュー基準を凝縮し、それをレビュー時だけでなく、設計および記述の段階で適用できるよう反転させたものです。優れたレビュアーが完成した差分に対して行うのと同じ精査を、変更を記述する前から、記述している間にも行います。
これらの原則を最初から適用すれば、新しいコードの品質は大幅に向上します。レビュアーに削除を求められるような複雑さは、そもそも記述しなければよいのです。レビュアーに抽象化を求められるなら、記述する段階からその抽象化を使いましょう。
これは、新規コードにも既存コードの変更にも等しく当てはまります。更新も例外ではありません。ファイルの拡張、分岐の追加、新しい経路の接続にも、新規モジュールと同じ基準が適用されます。
基本のエンジニアリング層(および唯一認められたスキルの組み合わせ)
software-engineer は、あらゆるコーディングエージェントの基本のエンジニアリング層です。アーキテクチャ、シンプルさ、型、分割、再利用、レビューなど、エンジニアリングの進め方を定義します。ライブラリや SDK 固有の API 知識は含みません。
スタック固有のスキルは、この上に重ねて適用します。heroui は HeroUI コンポーネントの API を、drizzle-orm は Drizzle のクエリー構文を、temporal はワークフロー/アクティビティのセマンティクスを扱います。それぞれが固有の知識を提供し、software-engineer はその知識をどう適用するかを判断するエンジニアリング上の判断力を提供します。
そのため、コーディングエージェントは**software-engineer とスタックのスキルを1つ**組み合わせて使用できます。つまり、基本層とオーバーレイを1つずつ組み合わせます。これは「エージェントごとにスキルを1つ」というルールに対して唯一認められた例外です。基本のエンジニアリング層は、何のライブラリを使って構築するかではなく、どう構築するかを定めるため、常に組み合わせて使用できます。
3つの視点
エンジニアリングは3つの段階で進みます。8つの原則は3つすべてに共通して適用され、変わるのは適用するタイミングだけです。
アーキテクトの視点(記述前)
変更の枠組みを定め、分岐やモード、レイヤーをそもそも作らずに済むようにします。コードを書く前に、次のことを行います。
- 境界をあらかじめ決める — モジュールの境界、この概念を担う正規のレイヤー、UI やワイヤーフォーマットではなくドメインを反映したデータモデルを決めます。
- 複雑さを取り除くよう捉え直す — 動作を維持しながら実装を大幅に小さく、より直接的にできる「コード柔術」の一手を探します。最善の単純化とは、コードの一群をまるごと書かずに済ませるものです。
- 構築する前に再利用する — 既存のパターン、ヘルパー、コンポーネント、正規のユーティリティを探します。自分で作る類似コードは、プロジェクトが永続的に抱える負債です。
- アトミックなフローを設計する — 関連する更新はまとめて適用されるようにし、不要に直列化せず並列実行できる独立した作業を特定します。
- 分割を計画する — 変更によってファイルが約1000行に近づく、または超える場合は、巨大ファイルができる前に抽出を計画します。
開発者の視点(執筆中)
原則を作成時に適用し、後からきれいにするのではなく、最初からクリーンな差分を作りましょう。
- 無難で直接的な実装を選びましょう。 単純なデータ形状を隠す汎用的な仕組み、薄いラッパーや同一性ラッパー、明確さをもたらさず間接性を増すだけの中継ヘルパーには懐疑的になりましょう。
- ロジックは専用の抽象化に移しましょう。 既存のフローに場当たり的な条件分岐をもう一つ追加するのではなく、ヘルパー、ステートマシン、ポリシーオブジェクト、ディスパッチャー、モジュールなどに移します。
- 契約を明示し、型を付けましょう。 形状の曖昧な場当たり的オブジェクトより、共有の型付きモデルを優先します。すべての
any、unknown、不要なオプショナル、型キャストを問い直しましょう。曖昧な不変条件を暗黙のフォールバックで取り繕わず、境界を明示します。ドメインの概念にはプリミティブ型をそのまま使わず、専用の型を与えましょう。常に一緒に使われるパラメーターはまとめます。 - 名前は実態を正直に表すようにしましょう。 名前から対象の動作や保持するものが分かる必要があります。正直な名前を付けられないなら、設計が曖昧です。設計を見直しましょう。
- ロジックは本来あるべきレイヤーに置きましょう。 機能ロジックを共有パスに漏らしたり、実装の詳細を API に露出させたりしてはいけません。
- プレースホルダー、TODO、スタブは使いません。 すべての行を完成させ、本番環境で使える状態にします。
- 既存のプロジェクト規約に合わせましょう。 スタイル、構成、命名、エラー処理など、あらゆる点で合わせます。
レビュアーの視点(完了を宣言する前に)
レビューゲートを自分の差分に対して実行し、完了の定義としましょう。コードが動けば終わりではありません。レビューに耐えられる状態になって初めて完了です。診断のための問いを順に確認し、推定されるブロッカーと照らし合わせます。複雑さを取り除ける妥当なコードジャドーの手法を見落としているなら、戻ってその手法を適用しましょう。references/review-gate.mdを参照してください。
8 つの標準(概要)
それぞれの標準に関する作成・レビュー時の詳細な指針、診断、改善策、アンチパターンはreferences/engineering-principles.mdにあります。要約は次のとおりです。
- 構造の簡素化には積極的に取り組みましょう。 全体の分岐、ヘルパー、モード、レイヤーをなくせるように設計を見直します。複雑さを並べ替えるのではなく、削除しましょう。
- ファイルの約 1000 行という境界を守りましょう。 非常に強い理由がない限り、1000 行未満のファイルを約 1000 行超にしてはいけません。ヘルパー、サブコンポーネント、モジュールを切り出しましょう。
- 既存コードをスパゲッティ状に増やさないようにしましょう。 無関係なフローに場当たり的な条件分岐や一度きりの分岐を追加するのは危険信号です。専用の抽象化を使いましょう。
- 単に動くコードより、クリーンな設計を優先しましょう。 動作を変えずに構造を大きくきれいにできるなら、よりクリーンな実装を書きましょう。
- ハックや魔法のような仕組みより、直接的で無難、保守しやすい実装を選びましょう。 巧妙な汎用的な仕組み、薄い抽象化、同一性ラッパーには懐疑的になりましょう。
- 型と境界をクリーンに保ちましょう。
any/unknown/型キャストの多用や暗黙のフォールバックより、型付きで明示的な契約を優先します。 - ロジックは本来あるべきレイヤーに置き、既存のヘルパーを再利用しましょう。 アーキテクチャのずれをそのまま踏襲せず、概念をすでに所有しているパッケージやモジュールにコードを移しましょう。
- 作業は適切な単位に分け、適切に並行して進めましょう。 独立した作業を理由なく直列化せず、関連する更新を中途半端な状態で残さないようにしましょう。
ドメインごとの標準
8 つの標準が基盤となります。その上に、エージェントが扱う可能性のある各ドメイン(バックエンド、フロントエンド、データ、DevOps/インフラストラクチャ、セキュリティ、テスト/QA)固有の実践と、本番環境への対応に必要な基本事項(エラー処理、構造化ログ、オブザーバビリティ、グレースフルデグラデーション)が加わります。references/domain-standards.mdを参照してください。エージェントは、実装するレイヤーに該当するセクションを読みます。
同梱リソース
| ファイル | 読むタイミング |
|---|---|
| references/engineering-principles.md | 執筆とレビューの両方に適用される8つの基準の全容に加え、診断のための質問、推奨される対処法や進め方、アンチパターンが記載されています。このスキルの中核です。 |
| references/domain-standards.md | 開発対象のレイヤー(バックエンド、フロントエンド、データ、DevOps/インフラ、セキュリティ、テスト/QA)に加え、本番運用に対応するためのベースラインが記載されています。 |
| references/review-gate.md | レビュアーの視点でのチェックリストです。出力の優先順位付け、原則としてブロッカーとみなす承認基準、開発者がステップ完了を宣言する前に実行する完了条件、本番運用に対応するためのチェックリスト、セルフレビュー用の問いが記載されています。 |