From 764446b5bdac14c3966c7f46c93e9065fd35b047 Mon Sep 17 00:00:00 2001 From: IKEDA Terukazu Date: Wed, 27 May 2026 15:58:51 +0900 Subject: [PATCH 1/2] feat: improve ipa-security-check and ipa-security-guide skills, bump version to 1.4.2 - ipa-security-check: report output filename now uses date-sequence format (ipa-security-report-YYYY-MM-DD-NN.md) by default to prevent overwriting previous reports on repeated scans - ipa-security-guide: auto-detect ipa-security-report-*.md files when report path is omitted; prompt user to select when multiple files are found - Bump version from 1.4.1 to 1.4.2 Co-Authored-By: Claude Sonnet 4.6 --- .claude-plugin/plugin.json | 2 +- skills/ipa-security-check/SKILL.md | 2 +- .../commands/ipa-security-check.md | 2 +- skills/ipa-security-check/lib/orchestrator.md | 17 ++++++++++++++--- skills/ipa-security-guide/SKILL.md | 9 ++++++--- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 87febfd..f53bf6e 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "tsumiki", - "version": "1.4.1", + "version": "1.4.2", "description": "AI-driven development toolkit for TDD and SDD workflows, providing comprehensive command templates and agents to enhance developer productivity with Claude Code", "author": { "name": "makoto kuroeda", diff --git a/skills/ipa-security-check/SKILL.md b/skills/ipa-security-check/SKILL.md index 8f3f432..87406f9 100644 --- a/skills/ipa-security-check/SKILL.md +++ b/skills/ipa-security-check/SKILL.md @@ -47,7 +47,7 @@ IPA (情報処理推進機構) が公開する以下 5 資料の指摘事項に - verdict を `snippet_hash` で findings にマージ - 既存 Markdown レポートから triage ブロックを抽出 (`lib/triage_state.md` 準拠) し、`snippet_hash` 一致で新 findings にステータス引き継ぎ - `templates/report.md.tmpl` を埋めて Markdown を出力、SARIF 2.1.0 も同時生成 -7. デフォルトの保存先は `./ipa-security-report.md` と `./ipa-security-report.sarif` (`--output` で上書き) +7. デフォルトの保存先は `./ipa-security-report-YYYY-MM-DD-NN.md` と `./ipa-security-report-YYYY-MM-DD-NN.sarif` (`--output` で上書き可)。同日に複数回実行した場合は連番 (`-01`, `-02`, ...) が自動付与され、既存レポートを上書きしない 中間ファイルの作業ディレクトリは `.tmp/ipa-security-check/` (リポジトリルート直下、名前に `tmp` を含めること)。 diff --git a/skills/ipa-security-check/commands/ipa-security-check.md b/skills/ipa-security-check/commands/ipa-security-check.md index c2c41da..9f6695d 100644 --- a/skills/ipa-security-check/commands/ipa-security-check.md +++ b/skills/ipa-security-check/commands/ipa-security-check.md @@ -21,7 +21,7 @@ IPA「安全なウェブサイトの作り方 改訂第7版」ほか 4 資料に | `--diff` | 任意 | 現ブランチと `main` の差分ファイルのみを対象 | | `--categories ` | 任意 | カンマ区切りでカテゴリ限定。指定可能値: `sqli, oscmd, traversal, session, xss, csrf, http-header, mail-header, clickjacking, bof, access-control, safe-sql, whc, ops` | | `--severity ` | 任意 | 報告下限。`critical, high, medium, low, info` のいずれか。デフォルト `low` | -| `--output ` | 任意 | カンマ区切りで出力ファイル指定。デフォルト `ipa-security-report.md,ipa-security-report.sarif` | +| `--output ` | 任意 | カンマ区切りで出力ファイル指定。デフォルト `ipa-security-report-YYYY-MM-DD-NN.md,ipa-security-report-YYYY-MM-DD-NN.sarif`(日付・連番自動付与) | ## 使用例 diff --git a/skills/ipa-security-check/lib/orchestrator.md b/skills/ipa-security-check/lib/orchestrator.md index 2ec7901..8668c84 100644 --- a/skills/ipa-security-check/lib/orchestrator.md +++ b/skills/ipa-security-check/lib/orchestrator.md @@ -307,22 +307,33 @@ prompt: <下記> `lib/output_formatter.md` と `templates/report.md.tmpl` の仕様は `scripts/render_report.py` に実装済み。メインは以下を Bash で実行する: +**`--output` が省略されている場合**: 以下の Bash で日付・連番付きのファイル名を決定してから `render_report.py` を実行する: + ```bash +DATE=$(date +%Y-%m-%d) +NN=01 +while [ -f "./ipa-security-report-${DATE}-${NN}.md" ]; do + NN=$(printf "%02d" $((10#$NN + 1))) +done +MD_OUT="./ipa-security-report-${DATE}-${NN}.md" +SARIF_OUT="./ipa-security-report-${DATE}-${NN}.sarif" + python3 .claude/skills/ipa-security-check/scripts/render_report.py \ .tmp/ipa-security-check/findings_with_hash.json \ .tmp/ipa-security-check/verdicts.json \ - ./ipa-security-report.md \ - ./ipa-security-report.sarif \ + "$MD_OUT" \ + "$SARIF_OUT" \ --scope-summary "" \ --files-scanned ``` +**`--output` が指定されている場合**: 指定された値を第 3・第 4 引数として使う。 + このスクリプトが行う処理: 1. verdict を `snippet_hash` で findings にマージ (Step 5.4 相当) 2. 出力先 Markdown が存在すれば triage を引き継ぎ (Step 6 相当) 3. 3 セクション振り分け / サマリ集計 / `templates/report.md.tmpl` 置換 / SARIF 生成 -`--output` で別パスが指定されていれば、第 3・第 4 引数をそのパスに差し替える。 最後にユーザーへ要約を 1〜2 文で報告する (件数とファイル名)。 --- diff --git a/skills/ipa-security-guide/SKILL.md b/skills/ipa-security-guide/SKILL.md index 46654ae..a63935e 100644 --- a/skills/ipa-security-guide/SKILL.md +++ b/skills/ipa-security-guide/SKILL.md @@ -1,7 +1,7 @@ --- name: ipa-security-guide description: ipa-security-check をはじめとするセキュリティ診断ツールが出力したレポートを読み込み、各検出項目を優先順位付きの dev-debug 依頼リストに変換する。対象プロジェクトの言語・FWを問わず汎用的に使える。コードベースを直接読んでアーキテクチャ判断を行う。 -argument-hint: "[レポートファイルパス (省略時: ./ipa-security-report.md)] [-o 出力ファイルパス]" +argument-hint: "[レポートファイルパス (省略時: ipa-security-report-*.md を自動検出)] [-o 出力ファイルパス]" --- # IPA Security Guide Skill @@ -25,7 +25,10 @@ argument-hint: "[レポートファイルパス (省略時: ./ipa-security-repor /ipa-security-guide <レポートファイルパス> -o <出力ファイルパス> ``` -- レポートファイルパスを省略した場合はカレントディレクトリの `ipa-security-report.md` を使う +- レポートファイルパスを省略した場合は、カレントディレクトリで `ipa-security-report-*.md` に一致するファイルを自動検出する + - **1件のみ**: 自動で使用する + - **複数件**: ファイル名一覧を提示し、AskUserQuestion でユーザーに選んでもらう + - **0件**: `ipa-security-report.md` へのフォールバックを試みる。それも存在しない場合はエラーを報告して終了する - `-o` を指定した場合は結果をそのパスに Write する。省略した場合は画面出力のみ ## 前提条件 @@ -51,7 +54,7 @@ ipa-security-guide/ 以下をすべて Read する。件ごとに読み直さない。 -1. 指定された(または `./ipa-security-report.md`)レポートファイル +1. レポートファイル(「起動方法」のファイル検出ルールに従って特定する) - 存在しない場合はエラーを報告して終了 - レポートのヘッダーからプロジェクトのルートディレクトリを推定する 2. `knowledge/triage.md` From 6644298f5ac93e6cf9da3cff4d12aff4b390c8d5 Mon Sep 17 00:00:00 2001 From: IKEDA Terukazu Date: Wed, 27 May 2026 16:27:33 +0900 Subject: [PATCH 2/2] feat: save reports to security-reports/ directory with auto-creation - ipa-security-check: default output path changed to security-reports/ipa-security-report-YYYY-MM-DD-NN.md; security-reports/ directory is created automatically if not present - ipa-security-guide: auto-detection now searches security-reports/ first, then falls back to current directory Co-Authored-By: Claude Sonnet 4.6 --- skills/ipa-security-check/SKILL.md | 2 +- skills/ipa-security-check/commands/ipa-security-check.md | 2 +- skills/ipa-security-check/lib/orchestrator.md | 7 ++++--- skills/ipa-security-guide/SKILL.md | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/skills/ipa-security-check/SKILL.md b/skills/ipa-security-check/SKILL.md index 87406f9..ac527a6 100644 --- a/skills/ipa-security-check/SKILL.md +++ b/skills/ipa-security-check/SKILL.md @@ -47,7 +47,7 @@ IPA (情報処理推進機構) が公開する以下 5 資料の指摘事項に - verdict を `snippet_hash` で findings にマージ - 既存 Markdown レポートから triage ブロックを抽出 (`lib/triage_state.md` 準拠) し、`snippet_hash` 一致で新 findings にステータス引き継ぎ - `templates/report.md.tmpl` を埋めて Markdown を出力、SARIF 2.1.0 も同時生成 -7. デフォルトの保存先は `./ipa-security-report-YYYY-MM-DD-NN.md` と `./ipa-security-report-YYYY-MM-DD-NN.sarif` (`--output` で上書き可)。同日に複数回実行した場合は連番 (`-01`, `-02`, ...) が自動付与され、既存レポートを上書きしない +7. デフォルトの保存先は `./security-reports/ipa-security-report-YYYY-MM-DD-NN.md` と `./security-reports/ipa-security-report-YYYY-MM-DD-NN.sarif` (`--output` で上書き可)。`security-reports/` ディレクトリが存在しない場合は自動作成する。同日に複数回実行した場合は連番 (`-01`, `-02`, ...) が自動付与され、既存レポートを上書きしない 中間ファイルの作業ディレクトリは `.tmp/ipa-security-check/` (リポジトリルート直下、名前に `tmp` を含めること)。 diff --git a/skills/ipa-security-check/commands/ipa-security-check.md b/skills/ipa-security-check/commands/ipa-security-check.md index 9f6695d..0dc6548 100644 --- a/skills/ipa-security-check/commands/ipa-security-check.md +++ b/skills/ipa-security-check/commands/ipa-security-check.md @@ -21,7 +21,7 @@ IPA「安全なウェブサイトの作り方 改訂第7版」ほか 4 資料に | `--diff` | 任意 | 現ブランチと `main` の差分ファイルのみを対象 | | `--categories ` | 任意 | カンマ区切りでカテゴリ限定。指定可能値: `sqli, oscmd, traversal, session, xss, csrf, http-header, mail-header, clickjacking, bof, access-control, safe-sql, whc, ops` | | `--severity ` | 任意 | 報告下限。`critical, high, medium, low, info` のいずれか。デフォルト `low` | -| `--output ` | 任意 | カンマ区切りで出力ファイル指定。デフォルト `ipa-security-report-YYYY-MM-DD-NN.md,ipa-security-report-YYYY-MM-DD-NN.sarif`(日付・連番自動付与) | +| `--output ` | 任意 | カンマ区切りで出力ファイル指定。デフォルト `security-reports/ipa-security-report-YYYY-MM-DD-NN.md,security-reports/ipa-security-report-YYYY-MM-DD-NN.sarif`(日付・連番自動付与、ディレクトリ自動作成) | ## 使用例 diff --git a/skills/ipa-security-check/lib/orchestrator.md b/skills/ipa-security-check/lib/orchestrator.md index 8668c84..11c9ae8 100644 --- a/skills/ipa-security-check/lib/orchestrator.md +++ b/skills/ipa-security-check/lib/orchestrator.md @@ -311,12 +311,13 @@ prompt: <下記> ```bash DATE=$(date +%Y-%m-%d) +mkdir -p ./security-reports NN=01 -while [ -f "./ipa-security-report-${DATE}-${NN}.md" ]; do +while [ -f "./security-reports/ipa-security-report-${DATE}-${NN}.md" ]; do NN=$(printf "%02d" $((10#$NN + 1))) done -MD_OUT="./ipa-security-report-${DATE}-${NN}.md" -SARIF_OUT="./ipa-security-report-${DATE}-${NN}.sarif" +MD_OUT="./security-reports/ipa-security-report-${DATE}-${NN}.md" +SARIF_OUT="./security-reports/ipa-security-report-${DATE}-${NN}.sarif" python3 .claude/skills/ipa-security-check/scripts/render_report.py \ .tmp/ipa-security-check/findings_with_hash.json \ diff --git a/skills/ipa-security-guide/SKILL.md b/skills/ipa-security-guide/SKILL.md index a63935e..5f798a5 100644 --- a/skills/ipa-security-guide/SKILL.md +++ b/skills/ipa-security-guide/SKILL.md @@ -25,7 +25,7 @@ argument-hint: "[レポートファイルパス (省略時: ipa-security-report- /ipa-security-guide <レポートファイルパス> -o <出力ファイルパス> ``` -- レポートファイルパスを省略した場合は、カレントディレクトリで `ipa-security-report-*.md` に一致するファイルを自動検出する +- レポートファイルパスを省略した場合は、`security-reports/ipa-security-report-*.md` を優先して自動検出する。見つからない場合はカレントディレクトリの `ipa-security-report-*.md` も検索する - **1件のみ**: 自動で使用する - **複数件**: ファイル名一覧を提示し、AskUserQuestion でユーザーに選んでもらう - **0件**: `ipa-security-report.md` へのフォールバックを試みる。それも存在しない場合はエラーを報告して終了する