AgentSkillsCN

weekly-report-validation

掌握对周报内容进行质量检验的技能。对 Markdown 格式、字数限制以及数据一致性进行严格把关,并借助 LLM 对内容进行深度审核。

SKILL.md
--- frontmatter
name: weekly-report-validation
description: "週次レポートの品質検証スキル。Markdownフォーマット、文字数、データ整合性をチェックし、LLMによる内容レビューを実行する。"
allowed-tools: Read

Weekly Report Validation

生成された週次レポートの品質検証を行うスキルです。

目的

このスキルは以下を提供します:

  • フォーマット検証: Markdown構文、テーブル形式の確認
  • 文字数検証: 各セクションと合計の文字数チェック
  • データ整合性検証: 数値の妥当性、データ一貫性の確認
  • 内容品質検証: LLMによるレビューとフィードバック

いつ使用するか

プロアクティブ使用

weekly-report-writer エージェントの最終フェーズとして、weekly-template-rendering の後に呼び出される。

明示的な使用

週次レポート生成ワークフローの一部として、または単独で品質検証を実行。

入力データ

必須ファイル

code
articles/weekly_report/{date}/02_edit/
├── weekly_report.md       # 検証対象のMarkdownレポート
└── weekly_report.json     # 検証対象の構造化データ

参照ファイル

code
articles/weekly_report/{date}/data/
├── aggregated_data.json   # 元データ(整合性確認用)
└── comments.json          # コメントデータ(文字数確認用)

出力データ

validation_result.json

json
{
  "metadata": {
    "validated_at": "2026-01-22T10:00:00+09:00",
    "report_date": "2026-01-22",
    "validator_version": "1.0.0"
  },
  "overall": {
    "status": "pass",
    "score": 95,
    "grade": "A"
  },
  "checks": {
    "format": {
      "status": "pass",
      "score": 100,
      "details": {
        "markdown_valid": true,
        "tables_valid": true,
        "headings_consistent": true,
        "links_valid": true
      }
    },
    "character_count": {
      "status": "pass",
      "score": 95,
      "details": {
        "total": 3450,
        "target": 3200,
        "sections": {
          "highlight": { "actual": 220, "target": 200, "status": "pass" },
          "indices": { "actual": 520, "target": 500, "status": "pass" },
          "mag7": { "actual": 850, "target": 800, "status": "pass" },
          "sectors_top": { "actual": 420, "target": 400, "status": "pass" },
          "sectors_bottom": { "actual": 410, "target": 400, "status": "pass" },
          "macro": { "actual": 430, "target": 400, "status": "pass" },
          "themes": { "actual": 320, "target": 300, "status": "pass" },
          "outlook": { "actual": 210, "target": 200, "status": "pass" }
        }
      }
    },
    "data_integrity": {
      "status": "pass",
      "score": 100,
      "details": {
        "numbers_valid": true,
        "dates_consistent": true,
        "calculations_correct": true
      }
    },
    "content_quality": {
      "status": "pass",
      "score": 90,
      "details": {
        "factual_accuracy": "high",
        "readability": "good",
        "investment_disclaimer": true,
        "balanced_view": true
      },
      "llm_feedback": "レポートは全体的に高品質です。指数分析とMAG7の解説が特に充実しています。"
    }
  },
  "issues": [],
  "warnings": [
    {
      "type": "minor",
      "section": "themes",
      "message": "投資テーマセクションの文字数がやや少なめです(320字/目標300字)"
    }
  ],
  "recommendations": [
    "来週のレポートでは、マクロ経済セクションにより詳細な経済指標の分析を追加することを検討してください。"
  ]
}

検証チェックリスト

1. フォーマット検証

チェック項目説明重要度
Markdown構文正しいMarkdown構文か必須
テーブル形式テーブルが正しくレンダリングされるか必須
見出し階層H1 → H2 → H3 の順序が正しいか必須
リンク有効性内部リンクが有効か推奨
文字エンコーディングUTF-8でエンコードされているか必須

2. 文字数検証

チェック項目条件重要度
合計文字数3000字以上必須
セクション文字数目標の±30%以内推奨
空セクションなし各セクションに内容があるか必須

3. データ整合性検証

チェック項目説明重要度
数値の妥当性リターンが-100%〜+100%の範囲か必須
日付の一貫性対象期間が正しいか必須
ランキングの整合性上位/下位セクターが正しい順序か推奨
ティッカーの一致MAG7銘柄が正しいか推奨

4. 内容品質検証(LLMレビュー)

チェック項目説明重要度
事実正確性データに基づいた記述か必須
読みやすさ文章が読みやすいか推奨
投資免責事項適切な免責事項があるか必須
バランスの取れた視点一方的でないか推奨
専門用語の適切性過度に専門的でないか推奨

プロセス

code
Phase 1: ファイル読み込み
├── weekly_report.md 読み込み
├── weekly_report.json 読み込み
├── aggregated_data.json 読み込み(参照用)
└── comments.json 読み込み(参照用)

Phase 2: フォーマット検証
├── Markdown構文チェック
├── テーブル形式チェック
├── 見出し階層チェック
└── リンク有効性チェック

Phase 3: 文字数検証
├── 各セクションの文字数計測
├── 目標との比較
├── 空セクションチェック
└── 合計文字数確認

Phase 4: データ整合性検証
├── 数値の範囲チェック
├── 日付の一貫性チェック
├── ランキング順序チェック
└── 元データとの照合

Phase 5: 内容品質検証
├── LLMによるレビュー実行
│   ├── 事実正確性評価
│   ├── 読みやすさ評価
│   ├── 免責事項確認
│   └── バランス評価
└── フィードバック生成

Phase 6: 結果出力
├── スコア計算
├── 問題・警告リスト作成
├── 推奨事項生成
└── validation_result.json 出力

スコアリング

総合スコア計算

code
overall_score = (
  format_score × 0.25 +
  character_count_score × 0.25 +
  data_integrity_score × 0.25 +
  content_quality_score × 0.25
)

グレード判定

スコアグレード説明
95-100A優秀 - 修正不要
85-94B良好 - 軽微な改善推奨
70-84C可 - 改善が必要
50-69D要改善 - 複数の問題あり
0-49F不合格 - 再生成が必要

合否判定

  • pass: 総合スコア70以上、かつ必須チェック全てパス
  • fail: 総合スコア70未満、または必須チェックに失敗

LLMレビュープロンプト

markdown
以下の週次マーケットレポートをレビューしてください。

## レビュー観点

1. **事実正確性**: データに基づいた正確な記述か
2. **読みやすさ**: 一般投資家が理解しやすい文章か
3. **バランス**: 楽観・悲観が偏りすぎていないか
4. **投資免責**: 適切な免責事項が含まれているか
5. **専門性**: 適切な専門用語の使用か

## 出力形式

{
  "factual_accuracy": "high/medium/low",
  "readability": "excellent/good/fair/poor",
  "balanced_view": true/false,
  "investment_disclaimer": true/false,
  "feedback": "全体的なフィードバック",
  "improvements": ["改善点1", "改善点2"]
}

## レポート内容

{report_content}

使用例

例1: 合格(グレードA)

入力: 高品質なレポート

出力:

json
{
  "overall": {
    "status": "pass",
    "score": 95,
    "grade": "A"
  },
  "issues": [],
  "warnings": []
}

例2: 合格(グレードB、警告あり)

入力: 文字数がやや少ないレポート

出力:

json
{
  "overall": {
    "status": "pass",
    "score": 85,
    "grade": "B"
  },
  "issues": [],
  "warnings": [
    {
      "type": "minor",
      "section": "macro",
      "message": "マクロ経済セクションの文字数が目標を下回っています(280字/目標400字)"
    }
  ]
}

例3: 不合格(グレードD)

入力: 問題のあるレポート

出力:

json
{
  "overall": {
    "status": "fail",
    "score": 55,
    "grade": "D"
  },
  "issues": [
    {
      "type": "critical",
      "check": "character_count",
      "message": "合計文字数が目標を大幅に下回っています(1800字/目標3000字)"
    },
    {
      "type": "critical",
      "check": "format",
      "message": "MAG7テーブルが正しくレンダリングされません"
    }
  ],
  "recommendations": [
    "コメント生成を再実行し、各セクションの文字数を増やしてください",
    "テーブル形式を確認し、Markdown構文を修正してください"
  ]
}

品質基準

必須(MUST)

  • 全ての必須チェックを実行
  • 問題があれば明確に報告
  • validation_result.json を出力
  • 合否判定を提供

推奨(SHOULD)

  • 具体的な改善推奨を提供
  • LLMレビューを実行
  • スコアとグレードを提供
  • 警告を適切に分類

エラーハンドリング

E001: レポートファイル不足

json
{
  "error": "検証対象のファイルが見つかりません",
  "missing": ["weekly_report.md"],
  "suggestion": "先に weekly-template-rendering を実行してください"
}

E002: LLMレビュー失敗

json
{
  "warning": "LLMレビューを実行できませんでした",
  "detail": "API timeout",
  "action": "LLMレビューをスキップし、他のチェックのみで判定"
}

完了条件

  • フォーマット検証が完了
  • 文字数検証が完了
  • データ整合性検証が完了
  • 内容品質検証が完了(LLMレビュー)
  • validation_result.json が出力される
  • 合否判定が提供される

関連スキル

  • weekly-data-aggregation: 元データを提供
  • weekly-comment-generation: コメントデータを提供
  • weekly-template-rendering: 検証対象レポートを生成

参考資料

  • docs/project/project-21/project.md: 週次レポートプロジェクト計画
  • docs/coding-standards.md: 品質基準の参考