PJR-S23T deliverable scaffold で成果物を 1 つだけ雛形にできるようにする
1. 概要
--target で成果物を 1 つだけ指定して雛形を作り、カタログにない成果物は --target-path と --target-rulebook で作れるようにする。
2. 入力
- PJR-65DS の流れ(雛形→人による文脈の記入→draft→fully-guided→finalize)は雛形を成果物 1 つ単位で作れることを前提とするが、現在の deliverable scaffold は --dct でカタログ単位に一括生成するだけで、カタログのない成果物も作れない
- register の --target・--target-path・--target-rulebook の解決とパス検証(src/register/deliverable-target.ts)を使い回す
3. 完了条件
deliverable scaffoldに--target <doc-id>を足す。カタログにある成果物は、カタログの情報(配置・rulebook・template)から 1 件だけ雛形を作る。既存のファイルは、今と同じく--forceがなければ上書きしない。- カタログにない成果物は
--target-pathと--target-rulebookで作れるようにする。パスの検証(リポジトリの中か、ファイル名か、ほかの文書が使っていないか)は register の--target-pathと同じ規則とし、できれば同じ関数を使う。 --targetと--dctを一緒に指定したらエラーにする。--dry-runでは書き込まずに予定だけを出す。- 雛形の frontmatter の
idは project で修飾した doc id とし、status: draftとrulebookを入れる。template のない rulebook の扱いは executor が決め、理由を本個票の対応結果に書き、報告のhandoffにも書く。 src/schedule/strategy-profiles.tsの context-pass の説明にあるdeliverable scaffold --project <project-id> --dct <catalog>を、--targetで成果物を指定する形に直す。- 単体テストを足す。対象は、カタログ経由の 1 件の生成、カタログのない成果物の生成、
--dctとの併用のエラー、既存ファイルの skip、リポジトリの外を指すパスのエラー。 - command-reference の
deliverable scaffoldに新しいオプションを書く。 CHANGELOG.mdの## [Unreleased]節に追記する。0.5.0と公開済みの版の節は変えない。npm run typecheck・npm run lint:ts・npm run test:unitを流して通し、親の検証も通る。- 保護された設定に触れる必要がある場合は、変更せずに案を本個票の対応結果と報告の
handoffに書く。
4. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | deliverable scaffold に --target・--target-path・--target-rulebook を足す | executor | done | runGenerateTarget と validateDeliverableTargetPath を実装 |
| 2 | context-pass の説明・command-reference・CHANGELOG を直す | executor | done | - |
| 3 | 単体テストを足して検証を流す | executor | done | tests/src/deliverable/scaffold.test.ts を追加し全件通過 |
5. 対応結果
実施内容
deliverable scaffoldに--target <doc-id>、--target-path <path>、--target-rulebook <rulebook>オプションを追加した。--target指定時は 1 成果物のみを生成するようにし、カタログにある成果物はカタログ情報から 1 件生成し、既存ファイルは--forceがなければスキップするようにした。- カタログにない成果物は
--target-pathと--target-rulebookから生成できるようにした。 - パス検証(リポジトリ内か、ファイル名か、ほかの文書が使っていないか)は
src/register/deliverable-target.tsに共通関数validateDeliverableTargetPathを切り出し、register とdeliverable scaffoldで同じ関数と規則を共有した。 --targetと--dctを同時に指定した場合はエラーとする排他制御を実装した。--dry-runではファイル書き込みを行わず予定(Would create: <path>)のみを表示するようにした。- 雛形の frontmatter の
idは project で修飾した doc id(${projectId}:${local_id})とし、status: draftとrulebookを設定した。 - template のない rulebook の扱い: template が存在しない場合(
template: not-neededや未定義など)であってもエラーで中断せず、frontmatter(id、type: project、status: draft、rulebook)、見出し(# <local_id>)、_TODO_: 本文を記述する(YAML の場合は frontmatter / マッピングのみ)を含む最小構成の雛形を生成することとした。理由: PJR-65DS の雛形作成→文脈記入のフローにおいて、template 未定義の rulebook や独自文書であっても雛形生成を妨げずに作業を進められるようにするため。 src/schedule/strategy-profiles.tsの context-pass の説明をdeliverable scaffold --project <project-id> --target <doc-id>に更新した。docs/ja/specdojo/references/command-reference.mdに新しいオプションと解説・使用例を追記した。CHANGELOG.mdの## [Unreleased]に追記した。tests/src/deliverable/scaffold.test.tsに単体テスト(カタログ経由の 1 件生成、カタログ外成果物の生成、--dct併用エラー、既存ファイルの skip と--force、リポジトリ外パスのエラー、CLI オプション動作)を追加した。
成果物
src/register/deliverable-target.tssrc/catalog/generate.tssrc/deliverable/deliverable.tssrc/schedule/strategy-profiles.tsdocs/ja/specdojo/references/command-reference.mdCHANGELOG.mdtests/src/deliverable/scaffold.test.tsdocs/ja/projects/prj-0001/controls/project-register/pjr-s23t-deliverable-scaffold-target.md
保護された設定
- 変更なし(保護された設定への変更は不要)。
残課題
- なし。