Skip to content

feat: Docs CI(markdownlint・Mermaid lint)追加#132

Merged
LevelCapTech merged 6 commits intomainfrom
copilot/implement-docs-ci
Mar 7, 2026
Merged

feat: Docs CI(markdownlint・Mermaid lint)追加#132
LevelCapTech merged 6 commits intomainfrom
copilot/implement-docs-ci

Conversation

Copy link
Contributor

Copilot AI commented Mar 6, 2026

概要(Summary)

Docs の Markdown と Mermaid 図の品質維持を目的に、markdownlint と Mermaid 構文検証を CI 化し、reviewdog で PR コメントとして可視化する変更です。

  • CIワークフロー: Markdown と Mermaid の lint を reviewdog コメントとして通知
  • 設定: markdownlint の長文行/HTML タグ許容を追加

背景・経緯(Context / Facts)

  • トリガーとなった事象(Issue / PR / 指摘 / 差分 等):Docs CI(markdownlint + Mermaid lint + reviewdog)導入の依頼
  • 参照した情報・資料:Issue 本文(BLIND 指定)
  • 作業開始時点で確認できていた事実:Docs は docs/**/*.md、GitHub docs は .github/**/*.md に存在し、lint CI は未導入

変更のインデックス(どのファイルをどう変えたか)

diffの目次(ファイル×変更概要)を下記のテーブルに記載します。

ファイル 変更概要
.github/workflows/markdownlint.yml markdownlint + reviewdog コメントの CI を追加
.github/workflows/mermaid-lint.yml Mermaid 抽出・検証 + reviewdog コメントの CI を追加
.markdownlint.json MD013/MD033 の無効化設定を追加

設計判断 / トレードオフ

判断テーマ プランA プランB 採用プラン 採用理由(事実/制約/評価軸) 不採用理由(トレードオフ) 根拠(Issue/Doc/測定/差分)
lint 失敗時の挙動 失敗でCI停止 reviewdogコメント優先 reviewdogコメント優先 既存ドキュメントの大量違反により即時失敗は運用障害 品質ゲート強制は保留 Issue 指示(reviewdog コメント要件)
reviewdog 導入手段 npm install reviewdog action reviewdog action npm レジストリに reviewdog が存在しない npm 依存は不可 npm view 結果 / action-setup 利用

適用後に観測できる結果(観測ログ/確認ログ)

確認ログ(何を実行/何を目視したか)を下記のテーブルに記載します。

確認項目 方法(実行/目視) 結果 根拠(ログ/URL/スクショ等)
既存テスト/ビルド 実行 成功 npm test 実行ログ
markdownlint 実行 既存ドキュメント違反を検出 npx markdownlint-cli 実行ログ

エラーハンドリング・境界値の考慮事項(Error Handling / Boundary Conditions)

分類(error/boundary) ケース(入力/条件) 期待動作(仕様) 実装上の扱い(例外/戻り値/ログ/抑止) 確認方法(実行/目視/テスト) 結果 根拠(ログ/URL/スクショ等)
boundary Mermaid ブロックが存在しない reviewdog を実行せず正常終了 result.txt が空の場合は reviewdog をスキップ 目視確認 仕様通り workflow 定義
error Mermaid 構文エラー reviewdog コメントに詳細を出力 mmdc stderr を取り込んでコメント化 目視確認 仕様通り workflow 定義

影響範囲(どこに影響しないと言える根拠)

影響対象 結論 根拠
アプリケーション挙動 影響なし .github/workflows と設定ファイルのみ変更
環境設定・デプロイ手順 影響なし Docs 向け CI の追加のみ

依存関係とコストへの影響(Dependencies / Cost Impact)

観点 対象(ライブラリ/サービス/API 等) 変更内容(追加/更新/削除/呼出増減 等) 影響(課金/性能/運用) 影響量(増減の見積/測定値) 根拠(計測/ログ/設定/差分)
依存 markdownlint-cli@0.48.0 CI で追加 CI 実行のみ workflow 定義
依存 @mermaid-js/mermaid-cli@11.12.0 CI で追加 CI 実行のみ workflow 定義
依存 reviewdog/action-setup@v1 CI で追加 CI 実行のみ workflow 定義

スコープ境界(触っていい/ダメ、非目標)

区分 範囲(パス/モジュール/設定など) 根拠
触ってよい範囲 .github/workflows/* / .markdownlint.json Issue 指定
触ってはいけない範囲 アプリケーションコード Issue 指定
非目標 既存ドキュメントの lint 修正 Issue 指定外

推論せず“質問に落とす”ための質問票

論点 / 質問 回答(事実のみ) 根拠(Issue/PR/Commit/ファイル等)
このPRで「決定」扱いにしたいことは何か?(なければ空欄) reviewdog コメント方式で Docs CI を導入 workflow 追加
触ってよい範囲(パス/モジュール/設定) .github/workflows/* / .markdownlint.json Issue 指定
触ってはいけない範囲(パス/モジュール/設定) アプリケーションコード Issue 指定
非目標(このPRではやらないこと) 既存 Markdown の修正 Issue 指定外
成功条件(何が確認できればOKか) CI が実行され reviewdog コメントが出る Issue 要件
不確定点(質問として列挙) lint 結果を CI 失敗条件にするか 運用判断が必要
追加質問(必要に応じて追記) なし なし

実装と確認のログ(何を触って、何を確認したか)

項目 記録
触った主要箇所(パス/関数/クラス等) .github/workflows/markdownlint.yml, .github/workflows/mermaid-lint.yml, .markdownlint.json
実装メモ(変更意図ではなく事実) reviewdog コメント付きの Docs CI を追加し、Markdown/Mermaid lint を実行
実行した確認(コマンド/手動操作/ログ等) npm test, npx markdownlint-cli "docs/**/*.md" ".github/**/*.md"
既知の未確認点(あれば) CI 上での reviewdog コメント投稿

実行区分(AIが実行したこと/人間が追加で行うこと)

区分 タスク(何をする) 対象(どのサイト/システム) 実行場所(URL/画面/コマンド) 実行方法(どうやって) 入力(必要な情報) 出力(得られるもの/保存先) 証跡(ログ/URL/スクショ等)
AI CI ワークフロー追加 リポジトリ .github/workflows 直接編集 Issue 要件 workflow ファイル コミット差分
AI markdownlint 設定追加 リポジトリ .markdownlint.json 直接編集 Issue 要件 設定ファイル コミット差分
AI ローカル確認 ローカル環境 npm test / npx markdownlint-cli コマンド実行 なし 実行ログ 実行ログ
人間 CI 上の reviewdog コメント確認 GitHub Actions / PR PR 画面 目視 なし PR コメント PR 画面

生成コードの利用方法(どうやって使うか)

形式A: テーブル

対象(生成物) 種別(コード/設定/スクリプト等) 配置(パス/モジュール) 呼び出し元(どこから使う) 使い方(設定/呼び出し/実行手順) 入力(必要な値/前提) 出力(得られる結果/保存先) 確認方法(どう確かめる)
markdownlint CI 設定 .github/workflows/markdownlint.yml GitHub Actions PR/Push で自動実行 対象 Markdown reviewdog コメント PR 画面
mermaid-lint CI 設定 .github/workflows/mermaid-lint.yml GitHub Actions PR で自動実行 Mermaid ブロック reviewdog コメント PR 画面
markdownlint 設定 設定 .markdownlint.json markdownlint-cli CI/ローカルで参照 なし lint ルール適用 lint 実行

形式B: コードサンプル

# markdownlint + reviewdog の出力例
# 実行場所: CI

markdownlint "docs/**/*.md" ".github/**/*.md" > markdownlint.txt || true
cat markdownlint.txt | reviewdog -f=markdownlint -name="Markdownチェック"

セキュリティチェック (Security Self-Check)

  • Secrets: コード内にAPIキーやパスワードが含まれていないことを確認した
  • Input Validation: 外部からの入力値(API引数/フォーム)を検証している
  • Access Control: 認可(権限チェック)ロジックに抜け穴がない

補足(Notes)

  • reviewdog は公式 action で固定バージョンを使用
  • lint は reviewdog コメント目的で非ブロッキング運用
  • Mermaid 失敗時は mmdc stderr をコメントに含める

コードレビューフィードバック対応(Review Feedback Response)

このセクションは「追記」で管理します。

追記(今回分)

  • フィードバック(要約):lint ツールのバージョン固定 対応(何を変えた):markdownlint/mermaid-cli を固定化 対象(ファイル/行/Commit):workflow 追加コミット 状態(対応済/保留/却下):対応済
  • フィードバック(要約):reviewdog トークン設定 対応(何を変えた):REVIEWDOG_GITHUB_API_TOKEN を追加 対象(ファイル/行/Commit):workflow 更新コミット 状態(対応済/保留/却下):対応済
  • フィードバック(要約):Mermaid エラー詳細の出力 対応(何を変えた):mmdc stderr をコメントに含める 対象(ファイル/行/Commit):mermaid-lint.yml 更新 状態(対応済/保留/却下):対応済

既存ログ(前回まで)

<<keep_existing_lines>>

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/reviewdog/reviewdog/releases/latest
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[BLIND] Docs CI(markdownlint + Mermaid lint + reviewdog)を導入する</issue_title>
<issue_description># [BLIND] Docs CI(markdownlint + Mermaid lint + reviewdog)を導入する

依頼の要点

リポジトリの Markdown ドキュメント品質を維持するため
Docs CI を GitHub Actions に導入する。

導入する CI

  1. markdownlint CI
  2. Mermaid lint CI

Markdown lint と Mermaid lint の結果は
reviewdog により PR コメントとして表示する。

Mermaid 図は Markdown 内に埋め込まれているため
Markdown から Mermaid ブロックを自動抽出し構文検証する。

本 Issue は BLIND Issue として作成されており
本文のみで CI を実装できる。


対象 Markdown

/doc/**/*.md
/.github/**/*.md

作成する workflow

.github/workflows/markdownlint.yml
.github/workflows/mermaid-lint.yml

1 Markdown Lint CI

目的

Markdown lint を CI に導入する。

lint 結果は reviewdog により PR コメントとして表示する。


workflow

.github/workflows/markdownlint.yml

実装例(そのまま使用可能)

name: markdownlint

on:
  pull_request:
    paths:
      - "doc/**/*.md"
      - ".github/**/*.md"
  push:
    paths:
      - "doc/**/*.md"
      - ".github/**/*.md"

jobs:
  markdownlint:
    runs-on: ubuntu-latest

    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install tools
        run: |
          npm install -g markdownlint-cli
          npm install -g reviewdog

      - name: Markdown lint
        run: |
          markdownlint "doc/**/*.md" ".github/**/*.md" \
          | reviewdog \
            -f=markdownlint \
            -name="Markdownチェック" \
            -reporter=github-pr-review \
            -level=warning

markdownlint 設定

作成ファイル

.markdownlint.json

内容

{
  "MD013": false,
  "MD033": false
}

理由

Rule 理由
MD013 Mermaid 図で長行が発生
MD033 HTMLタグ使用許可

2 Mermaid Lint CI

目的

Markdown 内 Mermaid 図の構文エラーを CI で検出する。

処理フロー

1 Markdown を取得
2 Mermaid block を抽出
3 .mmd ファイル生成
4 mermaid-cli で検証
5 reviewdog で PR コメント


Mermaid block 例

```mermaid
flowchart TD
A --> B
```

Mermaid workflow

.github/workflows/mermaid-lint.yml

実装例(そのまま使用可能)

name: mermaid-lint

on:
  pull_request:
    paths:
      - "doc/**/*.md"
      - ".github/**/*.md"

jobs:
  mermaid:
    runs-on: ubuntu-latest

    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Install tools
        run: |
          npm install -g @mermaid-js/mermaid-cli
          npm install -g reviewdog

      - name: Extract Mermaid blocks
        run: |
          mkdir -p tmp
          node <<'EOF'
          const fs = require('fs')
          const path = require('path')

          let i = 0

          function walk(dir) {
            if (!fs.existsSync(dir)) return
            fs.readdirSync(dir).forEach(file => {
              const full = path.join(dir, file)
              if (fs.statSync(full).isDirectory()) walk(full)
              else if (full.endsWith('.md')) processFile(full)
            })
          }

          function processFile(file) {
            const lines = fs.readFileSync(file, 'utf8').split('\n')
            let inside = false
            let buffer = []
            let startLine = 0

            lines.forEach((line, idx) => {
              if (line.startsWith("```mermaid")) {
                inside = true
                buffer = []
                startLine = idx + 1
                return
              }

              if (inside && line.startsWith("```")) {
                inside = false
                const name = `tmp/diagram-${++i}.mmd`
                fs.writeFileSync(name, buffer.join('\n'))
                fs.appendFileSync("tmp/map.txt", `${name}:${file}:${startLine}\n`)
                return
              }

              if (inside) buffer.push(line)
            })
          }

          walk("doc")
          walk(".github")
          EOF

      - name: Validate Mermaid diagrams
        run: |
          touch result.txt

          while IFS=":" read -r mmd src line; do
            if ! mmdc -i "$mmd" -o "$mmd.svg"; then
              echo "$src:$line: Mermaid図の構文エラー" >> result.txt
            fi
          done < tmp/map.txt

      - name: Report via reviewdog
        run: |
          cat result.txt | reviewdog \
            -efm="%f:%l: %m" \
            -name="Mermaid図チェック" \
            -reporter=github-pr-review \
            -level=error

Mermaid CI フロー

flowchart TD

A[Markdown files]
B[extract mermaid blocks]
C[generate mmd files]
D[mermaid-cli render]
E[reviewdog comment]

A --> B
B --> C
C --> D
D --> E
Loading

reviewdog コメント例

PR に次のようなコメントが表示される。

Mermaid図チェック

doc/architecture.md:42
Mermaid図の構文エラー

変更可能範囲

変更可

.github/workflows/*
.markdownlint.js...

</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes LevelCapTech/gantt-task-react-custom#131

<!-- START COPILOT CODING AGENT TIPS -->
---

✨ Let Copilot coding agent [set things up for you](https://github.com/LevelCapTech/gantt-task-react-custom/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits March 6, 2026 04:13
Docs CI導入に向けた進め方を共有するため。
事前確認を踏まえた最小変更の計画を明確化した。

Co-authored-by: LevelCapTech <99854263+LevelCapTech@users.noreply.github.com>
MarkdownlintとMermaid図検証をReviewdogで通知するため。
package-lock.jsonの誤差分を戻し、設定とワークフローを追加した。

Co-authored-by: LevelCapTech <99854263+LevelCapTech@users.noreply.github.com>
Copilot AI and others added 2 commits March 6, 2026 04:18
reviewdogのセットアップを公式アクションに切り替えるため。
lintツールのバージョンを固定し、コメント用トークンを設定した。

Co-authored-by: LevelCapTech <99854263+LevelCapTech@users.noreply.github.com>
markdownlintの結果を確実にreviewdogへ渡すため。
Mermaid図検証の出力詳細とカウンタ名を明確化した。

Co-authored-by: LevelCapTech <99854263+LevelCapTech@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Docs CI with markdownlint and Mermaid lint feat: Docs CI(markdownlint・Mermaid lint)追加 Mar 6, 2026
@LevelCapTech LevelCapTech added the 💡 改善or提案 プロジェクトの改善点や提案、一般的なフィードバックに使用します。 label Mar 6, 2026
@LevelCapTech LevelCapTech marked this pull request as ready for review March 6, 2026 13:40
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Docs(docs/**/*.md.github/**/*.md)の Markdown / Mermaid 図の品質維持を目的に、lint を GitHub Actions 化して reviewdog の PR コメントとして可視化するための変更です。

Changes:

  • markdownlint を実行し、reviewdog で PR レビューコメントとして通知する workflow を追加
  • Markdown から Mermaid ブロックを抽出して mmdc で検証し、reviewdog で通知する workflow を追加
  • markdownlint の設定として MD013(長文行)/MD033(HTMLタグ)を無効化

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
.github/workflows/markdownlint.yml Markdown lint を CI 実行し、reviewdog で PR コメント化
.github/workflows/mermaid-lint.yml Mermaid ブロック抽出→mmdc 検証→reviewdog コメント化
.markdownlint.json MD013/MD033 を無効化して既存Docs運用に合わせる

@LevelCapTech LevelCapTech merged commit 61c46a4 into main Mar 7, 2026
1 check passed
@LevelCapTech LevelCapTech deleted the copilot/implement-docs-ci branch March 7, 2026 03:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💡 改善or提案 プロジェクトの改善点や提案、一般的なフィードバックに使用します。

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BLIND] Docs CI(markdownlint + Mermaid lint + reviewdog)を導入する

3 participants