PJR-0QW0 markdownlint の設定がない利用リポジトリで result の commit 前検査が MD013 で統合を止める
1. 概要
docs-lint を入れた利用リポジトリでは markdownlint の既定設定(MD013)が効き、日本語の result が必ず統合前に止まる。設定がなくても SpecDojo の規則で検査し、init が設定を作るようにする
2. 完了条件
- markdownlint の設定ファイルが無い利用リポジトリでも、
exec run --registerの result の commit 前検査(assertResultMarkdownlint)が、SpecDojo が result に求める規則で検査し、日本語の長い行(MD013)では止まらない。利用リポジトリに markdownlint の設定がある場合は、従来どおりそれを優先する。 initとconfig initが、既存のファイルを上書きせずに、SpecDojo の文書規約に合う最小の.markdownlint.yamlを作る。既にある場合は変更しない。配布する pre-commit hook の markdownlint も、この設定で SpecDojo の生成物(個票・result など)を止めない。- 設定の内容(無効にする規則の範囲、設定が無いときの既定の置き場所)は executor が決め、理由を本個票の対応結果に書き、報告の
handoffにも書く。 - 関連するガイド・リファレンス(quick-start・設定リファレンスなど該当するもの)に、作られる設定と既存の利用リポジトリでの対処を書く。
CHANGELOG.mdの未公開の## [0.5.0]の節の不具合修正に追記する。公開済みの版の節は変えない。- 単体テストで、設定が無いときに MD013 違反だけの result が通ること、設定があるときはそれを優先すること、
initが設定を作り既存を上書きしないことを確かめる。 - 作業の中で
npm run typecheck・npm run lint:ts・npm run lint:md・npm run test:unitが通り、親の検証 7 件が通る。
3. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | 設定が無いときの result 検査の規則を実装する | executor | done | 利用側の設定を優先し、不在時だけ基本規則を引数で指定 |
| 2 | init / config init で設定を作る | executor | done | 通常の初期化で .markdownlint.yaml を生成し、既存設定を保持 |
| 3 | ガイド・CHANGELOG・テストを更新する | executor | done | 生成設定、既存環境の対処、回帰テストを追加 |
4. 対応結果
assertResultMarkdownlintは、利用リポジトリの.markdownlint.jsonc・.json・.yaml・.ymlと、親ディレクトリを含む.markdownlintrcの存在を確認し、存在するときは従来の CLI の読み込みに委ねる。不在時だけ--disableで基本規則を指定するため、利用側で明示した MD013 は引き続き検出する。- 基本規則の正本は
src/shared/markdownlint-config.tsのDEFAULT_MARKDOWNLINT_CONFIGにまとめた。result のフォールバックと、初期化・hook・Slidev の scaffold が同じ値を使う。MD013(日本語を含む長い行)、MD024(同名見出し)、MD033(HTML)、MD036(強調だけの行)、MD041(先頭の H1)、MD060(表の列幅)を無効にする。既存 scaffold と本体の文書規約に合わせ、これ以外の記法検査は維持するためである。フォールバックは引数だけで適用し、利用リポジトリに一時設定ファイルを作らない。 - 通常の
initとconfig initは、不足する設定をリポジトリ直下の.markdownlint.yamlに生成する。SpecDojo の設定ファイルが既にある場合のconfig initでも補完し、dry-run では書き込まない。既存の markdownlint / CLI2 設定と、継承する.markdownlintrcは保持し、競合する設定を追加しない。init --lefthook/--slidevは既存の CLI2 対応を維持するため、従来の.markdownlintrcと.markdownlint-cli2.yamlの配置を使う。後から hook を追加した場合も生成済みの YAML は保持する。CLI2 overrides を使う際は、既存の移行手順で YAML の規則を rc へ移す。 - Quick Startガイド、CLIコマンドリファレンス、SpecDojo設定リファレンス に生成内容と既存利用リポジトリの対処を記載し、
CHANGELOG.mdの0.5.0の不具合修正へ追記した。 - 単体テストに、設定なしの日本語の長い result、5形式の既存設定の優先、親の rc の継承、初期化の生成・既存保持・dry-run・不足補完、初期化済み YAML を使う配布 hook の検査を追加した。API smoke は MD013 の再現と基本規則での通過、MD018 の検出維持、初期化の生成・保持・不足補完を確認済み。CLI の子プロセス起動は sandbox の EPERM 制約があるため、実経路の回帰テストと完了条件の検査7件は親 runner の検証へ委ねる。executor は result を編集せず、この判断と検証の申し送りを
handoffにも記録する。 - CLI を直接起動する smoke でも、設定のない作業用ディレクトリで同じ
--disable引数による長い日本語行の通過、5形式の設定による MD013 の検出、MD018 の検出維持を確認した。Prettier 整形、hook 指定のカタログ検証、登録簿の派生ビュー生成、差分の空白検査も成功した。カタログ検証には、今回変更していない未作成文書の既存警告がある。