add-implementation-requirement について
`.plain`仕様に実装要件を追加するワークフロー型スキルです。コード生成を制御したい仕様作成者向けに、実装方法と機能上の振る舞いを区別し、ユニットテストの指針も実装要件に記載します。
主な機能
- 01最初に`.plain`の作成ルールを読み込む
- 02実装指針と振る舞いを区別
- 03要件を適切なセクションに追加
- 04ユニットテストの実装指針に対応
- 05編集後に配置と構文を確認
活用シーン
- 01技術やアーキテクチャの制約を指定
- 02コーディング、データ形式、エラー処理の方針を設定
- 03ユニットテストのフレームワークや規約を記述
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ plainlang/ plain-forge --skill add-implementation-requirementインストール後、Claude Code で/add-implementation-requirementを入力して読み込まれたか確認します。
詳細
実装要件の追加
まずルールを読み込んでください。 .plain ファイルを読んだり、編集したり、書き込んだりする前に、load-plain-reference スキルを呼び出し、そこから案内されたルールファイルを読んでください。この会話ですでに load-plain-reference が実行されている場合に限り、これを省略できます。
ワークフロー
- 対象の
.plainファイルを特定します。 曖昧な場合は、ユーザーに確認してください。 - ファイルを読みます。 既存の実装要件、定義、機能仕様を把握します。
- 実装要件に該当するか判断します。 何を作るかではなく、どのように作るかを記述する必要があります(何を作るかは
***functional specs***に記述します)。 - 以下のルールに従って要件の草案を作成します。
- 要件を挿入します。
***implementation reqs***セクションに挿入してください。 - ファイルをもう一度読みます。 配置と構文が正しいことを確認します。
ここに記述する内容
実装要件は、コード生成の指針となる自由形式の指示です。一般的な内容は次のとおりです。
- 技術の選択:言語、フレームワーク、ランタイムのバージョン
- アーキテクチャ上の制約:パターン、レイヤー構成、依存関係のルール
- コーディング規約:命名規則、スタイルガイドライン
- データ形式:シリアライズ、エンコーディング、変換のルール
- エラー処理:方針、再試行ロジック、例外階層
- アルゴリズムの説明:動作だけでは不十分な場合の具体的な方法
- パフォーマンスに関する指針:メモリー制約、ストリーミング要件、バッチ処理の方針
- 言語固有の構文:ジェネリクス、アノテーション、フレームワーク固有の型や慣用表現
ここに記述しない内容
- 動作と機能 — これらは
***functional specs***に記述します - 概念の定義 — これらは
***definitions***に記述します - 適合性テストの指示 — これらは
***test reqs***に記述します。注:ユニットテストの指示は***test reqs***ではなく、ここに記述します — 詳細は以下の「ユニットテストの指針はここに記述」を参照してください
ユニットテストの指針はここに記述
:UnitTests: に関する内容はすべて ***implementation reqs*** に記述します — パス、手法、パッケージ、フレームワーク(JUnit/pytest/Jest/Go の testing など)、規約、フィクスチャ、モックの方針、ファイル構成、命名、リンター/静的解析の必須条件が含まれます。ユニットテストは生成されるコードベースの一部であるため、それらに関する要件は定義上、実装要件です。
- ユニットテストジェネレーターが読み取るのは
***implementation reqs***のみです。***test reqs***に記述された:UnitTests:に関する内容は、通知なく無視されます - それぞれの
:UnitTests:要件は、事前定義された:UnitTests:の概念に沿って記述してください。これにより、区分が一目でわかります ***test reqs***は:ConformanceTests:専用です。詳細はadd-test-requirementを参照してください
重要な原則:どのように作るか、何を作るか
***implementation reqs*** には、ソフトウェアをどのように作るかを記述します。
***functional specs*** には、ソフトウェアが何をするかを記述します。
要件が観察可能な動作(エンドポイント、ビジネスルール、ユーザー向け機能)を記述する場合は、機能仕様に該当します。内部構造、技術、コーディングの指針を記述する場合は、ここに該当します。
形式
実装要件は、***implementation reqs*** セクション内の箇条書きで記述します。
***implementation reqs***
- :Implementation: should be in Python 3.12.
- :Implementation: should use pip for dependency management.
- :ReportExporter: writes a :CsvFile: with streaming writes, never holding the full dataset in memory.
明確になる場合は、定義済みの :Concepts: を参照してください。リーフではないセクションの実装要件は、すべてのサブセクションに適用されます。
カプセル化に関する警告
requires モジュールが依存先から受け取るのは機能仕様のみであり、実装要件は受け取りません。下流モジュールに特定の動作を認識させる必要がある場合、その動作はここではなく機能仕様に記述してください。
検証チェックリスト
- 何を作るかではなく、どのように作るかを記述している
- 参照するすべての
:Concepts:が***definitions***で定義されている - ファイルまたはそのインポートにすでに記載されている指針と重複していない
-
concise-specs.mdに従って簡潔にしている:平易な言葉を使い、理由や、すでに名前を挙げた技術の標準的な動作を記述していない -
***implementation reqs***セクション内に配置されている -
***functional specs***に記述すべき動作要件が含まれていない