Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-dpvv-docs-lint-package
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typetodo
specdojo.item_statusdone
specdojo.prioritymedium
specdojo.ownerDEV
specdojo.registered_at2026-09-21T06:27:03Z
specdojo.due_on2026-10-10
specdojo.completed_at2026-09-21T09:26:33Z
specdojo.block_reasonagent exited with non-zero code: agent exited with non-zero code: agent-config-write: protected configuration changes detected; paths=lefthook.yml, package.json; agent must record the required change …

PJR-DPVV 文書 lint を @specdojo/docs-lint として分離する ​

1. 概要 ​

specdojo の package.json の files は tools/docs/src と tools/docs/tsconfig.json を同梱しているが、次の理由で利用者側では機能しない。

  • 中身は remark プラグイン 3 本(remark-md-content、remark-no-unescaped-angle-placeholder、remark-frontmatter-ajv2020)と検証スクリプト 4 本(validate-yaml-schema、validate-rulebook-schema-enums、validate-history-links、validate-md-content)で、CLI(src/)からは参照されない。参照元は本リポジトリの package.json scripts と .remarkrc.yaml だけである。
  • 依存する remark / remark-cli / ajv-formats / fast-glob は devDependencies で、npm i specdojo では入らない。
  • 利用者が使うには node_modules/specdojo/tools/docs/src/… を .remarkrc や scripts から指すことになり、公開 API として成立していない。

PJR-9S8F で文書サイトを @specdojo/docs-site(packages/docs-site)へ分離した前例に合わせ、文書 lint も @specdojo/docs-lint(packages/docs-lint)へ分離する。

1.1. 決定事項 ​

  • パッケージ名は @specdojo/docs-lint、配置は packages/docs-lint。@specdojo/docs-site と同じく独自の package.json / lockfile を持ち、npm workspaces にはしない(PJR-7VKR の publish 形態と揃える)。
  • remark プラグインは export(例: @specdojo/docs-lint/remark/md-content、.../no-unescaped-angle-placeholder、.../frontmatter-ajv2020)として提供し、利用者は .remarkrc から参照する。
  • 検証スクリプトは bin(例: specdojo-docs-lint yaml-schema / rulebook-schema-enums / history-links / md-content)として提供する。schema は specdojo 本体に同梱される docs/specdojo/schemas を specdojo のパッケージルートから解決する。
  • 依存(remark 系、ajv、ajv-formats、fast-glob、js-yaml、gray-matter)はこのパッケージの dependencies に置く。
  • 本リポジトリの .remarkrc.yaml、validate:* / lint:md / lint:fm scripts、lefthook、tsconfig references を packages/docs-lint 参照へ書き換える。
  • specdojo の files から tools/docs/src と tools/docs/tsconfig.json を除く(PJR-7VKR の作業 1 で先行して除外してよい)。
  • 利用者向けの案内(quick-start / docs-editing-guide)は npm i -D specdojo @specdojo/docs-lint と .remarkrc の例を載せる。

2. 完了条件 ​

  • packages/docs-lint が独自の package.json を持ち、remark プラグインの export と検証コマンドの bin を提供している。npm pack --dry-run の同梱物が意図どおりで、依存がすべて dependencies にある。
  • 本リポジトリの .remarkrc.yaml、scripts、lefthook、tsconfig references が packages/docs-lint を参照し、tools/docs が削除されている。
  • specdojo の files に tools/docs が含まれない。
  • 別ディレクトリで npm i -D specdojo @specdojo/docs-lint(npm pack の tarball)を行い、.remarkrc から remark プラグインが解決され、specdojo-docs-lint history-links が動く。
  • quick-start / docs-editing-guide に導入と .remarkrc の例が記載されている。
  • npm run check が通過している。

3. 作業内容 ​

No作業担当状態メモ
1packages/docs-lint を作成し、remark プラグインの export と検証コマンドの bin を実装するDEVdone3 export と 4 検証コマンドを公開
2本リポジトリの .remarkrc.yaml / scripts / lefthook / tsconfig references を書き換え、tools/docs を削除するDEVdoneソースとテストを新パッケージ構成へ移行
3specdojo の files から tools/docs を除く(PJR-7VKR 作業 1 と整合)DEVdonePJR-7VKR の先行対応を確認
4tarball を別ディレクトリで導入して実地検証し、guide を更新するDEVdonetarball 2 本を別ディレクトリへ導入して動作確認済み

4. 対応結果 ​

  • packages/docs-lint に独立した package.json / lockfile、CLI、remark プラグインを配置した。CLI は yaml-schema、rulebook-schema-enums、history-links、md-content を提供し、remark プラグインは package export から参照できる。
  • schema の参照先が利用者リポジトリにない場合、同時導入された specdojo パッケージの docs/specdojo/ または docs/ja/specdojo/ 配下へフォールバックするようにした。
  • ルートの .remarkrc.yaml、npm scripts、ESLint、lefthook、TypeScript project references を packages/docs-lint へ移行し、旧 tools/docs を削除した。specdojo 本体の files は PJR-7VKR で既に tools/docs を除外済みだったため、その状態を維持した。
  • npm pack --dry-run で lint パッケージが 15 ファイルだけを同梱することを確認した。specdojo と @specdojo/docs-lint の tarball を別ディレクトリへ導入し、3 export の解決、.remarkrc.yaml からのプラグイン読込、specdojo-docs-lint history-links の実行を確認した。
  • specdojo:quick-start-guide と specdojo:docs-editing-guide に導入手順、.remarkrc.yaml の設定例、検証コマンドを追記した。残課題はない。

4.1. レビュー結果(2026-09-21) ​

develop で lint:md / lint:fm / validate:history-links が packages/docs-lint/bin 経由で動作し、npm run check(テスト 1611 件)が通過することを確認した。本リポジトリでは packages/docs-lint/node_modules を持たず root の devDependencies で解決している。root から remark / markdownlint-cli 等を外す場合は post-create.sh に npm --prefix packages/docs-lint ci を加える。@specdojo/docs-lint の npm 公開は PJR-7VKR の trusted publisher と同じ枠組みで別途行う。

5. 関連ドキュメント ​