jpskill.com
🛠️ 開発・MCP コミュニティ

php-route-mapper

PHP Webアプリケーションのソースコードから、すべての入口ルートとパラメータ構造を抽出し、完全なリクエストテンプレートとパラメータリストを出力する分析ツールです。

📜 元の英語説明(参考)

PHP Web 源码路由与参数映射分析工具。从源码中提取所有入口路由与参数结构,输出完整请求模板与参数清单(禁止省略)。

🇯🇵 日本人クリエイター向け解説

一言でいうと

PHP Webアプリケーションのソースコードから、すべての入口ルートとパラメータ構造を抽出し、完全なリクエストテンプレートとパラメータリストを出力する分析ツールです。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-route-mapper.zip https://jpskill.com/download/6014.zip && unzip -o php-route-mapper.zip && rm php-route-mapper.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6014.zip -OutFile "$d\php-route-mapper.zip"; Expand-Archive "$d\php-route-mapper.zip" -DestinationPath $d -Force; ri "$d\php-route-mapper.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-route-mapper.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-route-mapper フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] php-route-mapper

PHP ソースコードのルートとパラメータマッパー

PHP Web プロジェクトのソースコードを分析し、完全な HTTP ルートエントリとリクエストパラメータ構造を抽出し、セキュリティテストに使用できるリクエストテンプレート(Burp/Repeater スタイル)を生成し、自動的に Markdown 形式で保存します。

CRITICAL:完全な出力(必須)

このスキルは、検出されたすべてのルートとインターフェースを出力しなければならず、省略は許可されません。

  • 省略プレースホルダーは禁止です。完全なルートとパラメータの内容を出力する必要があります。
  • 「主要なルート/重要なルート」のみの出力は禁止です。
  • 各ルートには、HTTP メソッド、パスルール、ハンドラの場所、完全なパラメータ構造、完全なリクエストテンプレート(コードブロック内)を含める必要があります。

コア入力

ユーザーが提供するもの:

  • source_path:PHP プロジェクトのソースコードのルートディレクトリ オプション:
  • context_path:リバースプロキシ/ゲートウェイのプレフィックスが存在する場合、完全なパスを結合するために使用できます(証拠のソースが必要です)。

出力ディレクトリ構造(推奨)

{output_path}/
├── route_mapping/
│   ├── routes_{timestamp}.md
│   └── params_{timestamp}.md
└── quality/
    └── route_mapper_validation_{timestamp}.md

パスとパイプライン結合モードでの対応関係については、shared/IO_PATH_CONVENTION.md を参照してください(route_mapping/*.md はレポート内の「ルート/パラメータ」セクションと同等です)。

認識範囲(必須)

  1. ルート設定/定義(フレームワークごとに認識)
    • Laravel:routes/web.phproutes/api.phpRoute::get/post/{subpath}Route::resource、Route group のプレフィックスとミドルウェア
    • Symfony:config/routes/*、PHP8 attribute #[Route({route_options})]、Annotation @Route({route_options})
    • Slim:$app->get/post/any({handler})、カスタムミドルウェア
    • WordPress:admin-post.php/admin-ajax.phpadd_action('admin_post_*')add_action('wp_ajax_*')
    • 純粋な PHP:フロントコントローラ(例:public/index.php)のディスパッチロジック、$_SERVER['REQUEST_URI'] に基づくルーティングマッチング
  2. 動的ルート/パラメータ化ルート(必須)
    • {id} / (?P<id>{id_pattern}) / 正規表現ルート:制御可能なパラメータをリストアップする必要があります。
    • ルート制約(where/regex limit):制約ルールと制御可能性の境界を出力する必要があります。

パラメータ構造解析(必須)

各ルートについて、以下のパラメータソースとタイプ情報を出力します。

  • Path パラメータ:ルーティングルールからのプレースホルダー(例:{id} を出力)
  • Query パラメータ:$_GET / request()->query({query}) / フレームワークのクエリ解析結果
  • Body パラメータ:php://input$_POST、JSON json_decode({json})
  • Header パラメータ:getallheaders()$_SERVER[{value}]、フレームワークの request header API
  • Cookie パラメータ:$_COOKIE
  • File パラメータ:$_FILES(フィールド名とファイル名のソースを出力)

ハンドラの場所(必須)

各ルートは、ハンドラのソースの証拠を提供する必要があります。

  • ファイルパス(相対/絶対のいずれでも可ですが、一貫している必要があります)
  • 関数/クラス/メソッドシグネチャ(ソースコード内で特定できる名前)
  • 主要なディスパッチポイント:ルーティングマッチングがハンドラにどのように入るか(例:switch case / include ファイルチェーン)

出力形式(必須)

routes_{timestamp}.md:メインインデックス(項目ごとにリストアップ)

説明:このスキルは、routes_{timestamp}.md 内の === [N] {route_summary} ===NHTTP ルートroute_id として使用します(パイプラインの後の段階で route_tracer/{route_id}/trace_{timestamp}.md ファイルのバケット分けに使用されます)。CLI / hook / sink-only などの合成 route_id は、php-audit-pipeline のステージ 3 で high_risk_routes_{timestamp}.md に書き込まれ、このファイルの [N] 順序は占有しません

# {project_name} - ルートとインターフェースインデックス(PHP)
生成時間: {timestamp}
分析パス: {source_path}

## ルートリスト(すべて)
=== [1] GET /path/to/{id} ===
HTTP メソッド: GET
ルートパスルール: /path/to/{id}
ハンドラ: ControllerClass@method / functionName
場所: path/to/file.php:line(行番号を取得できない場合は、「要確認:手動でファイルを開いて確認が必要」と記載するが、ファイルパスは提供する)
パラメータ概要:
  Path: id (型推論/制約)
  Query: {query_params}

=== [2] POST /path/to/{id}/action ===
HTTP メソッド: POST
ルートパスルール: /path/to/{id}/action
ハンドラ: ControllerClass@action / functionName
場所: path/to/file.php:line(行番号を取得できない場合は、「要確認:手動でファイルを開いて確認が必要」と記載するが、ファイルパスは提供する)
パラメータ概要:
  Path: id (型推論/制約)
  Query: {query_params}

params_{timestamp}.md:パラメータ詳細(項目ごとにリストアップ)

# {project_name} - ルートパラメータ構造(項目ごと)
生成時間: {timestamp}

=== ルート: GET /path/to/{id} ===
1) Path パラメータ
| パラメータ | タイプ/制約 | 位置 | 必須 |
|------|------------|------|------|
| id   | int/regex{id_pattern} | Router rule | はい/いいえ/不明 |

2) Query パラメータ
| パラメータ | タイプ | ソース | 必須 | 説明 |

3) Body パラメータ(例:JSON)
| フィールド | タイプ | JSON パス | 必須 |

4) Header/ Cookie / File(存在する場合)
| フィールド | タイプ | ソース | 必須 |

5) 完全なリクエストテンプレート(コードブロック内必須)
```http
GET /path/to/{id}?a={a}&b={b} HTTP/1.1
Host: {host}
Cookie: {cookie}
Authorization: Bearer {token}
Content-Type: application/json

{"k":"{v}"}


## 出力前の自己チェック(必須)
- [ ] routes と params の各ルートの「シーケンス番号/ルート識別子」が一致していること
- [ ] 省略プレースホルダーが出現していないこと
- [ ] 各ルートに「完全なリクエストテンプレート」コードブロックがあること
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP 源码 Route & Param Mapper

分析 PHP Web 项目源码,提取完整的 HTTP 路由入口与请求参数结构,生成可用于安全测试的请求模板(Burp/Repeater 风格),并自动保存为 Markdown。

CRITICAL:完整输出(强制)

此技能必须输出所有发现的路由与接口,不允许省略:

  • 禁止出现省略占位符;必须输出完整的路由与参数内容
  • 禁止只输出“关键路由/重要路由”
  • 每条路由必须包含:HTTP 方法、路径规则、处理器位置、完整参数结构、完整请求模板(在代码块里)

核心输入

用户提供:

  • source_path:PHP 项目源码根目录 可选:
  • context_path:如果存在反向代理/网关前缀,可用于拼接完整路径(必须有证据来源)

输出目录结构(建议)

{output_path}/
├── route_mapping/
│   ├── routes_{timestamp}.md
│   └── params_{timestamp}.md
└── quality/
    └── route_mapper_validation_{timestamp}.md

路径与流水线合并模式下的对应关系见 shared/IO_PATH_CONVENTION.mdroute_mapping/*.md 与报告内「路由/参数」章节等价)。

识别范围(必做)

  1. 路由配置/定义(按框架识别)
    • Laravel:routes/web.phproutes/api.phpRoute::get/post/{subpath}Route::resource、Route group 前缀与中间件
    • Symfony:config/routes/*、PHP8 attribute #[Route({route_options})]、Annotation @Route({route_options})
    • Slim:$app->get/post/any({handler})、自定义中间件
    • WordPress:admin-post.php/admin-ajax.phpadd_action('admin_post_*')add_action('wp_ajax_*')
    • 纯 PHP:front controller(如 public/index.php)的分发逻辑、基于 $_SERVER['REQUEST_URI'] 的路由匹配
  2. 动态路由/参数化路由(必做)
    • {id} / (?P<id>{id_pattern}) / 正则路由:必须把可控参数列出来
    • 路由约束(where/regex limit):必须输出约束规则与可控性边界

参数结构解析(必做)

对每条路由输出以下参数来源与类型信息:

  • Path 参数:来自路由规则的占位(输出如 {id}
  • Query 参数:$_GET / request()->query({query}) / 框架 query 解析结果
  • Body 参数:php://input$_POST、JSON json_decode({json})
  • Header 参数:getallheaders()$_SERVER[{value}]、框架 request header API
  • Cookie 参数:$_COOKIE
  • File 参数:$_FILES(输出字段名与 filename 来源)

处理器位置(必做)

每条路由必须给出处理器来源证据:

  • 文件路径(相对/绝对均可,但必须一致)
  • 函数/类/方法签名(在源码中能定位到的名称)
  • 关键分发点:路由匹配如何进入 handler(如 switch case / include 文件链)

输出格式(强制)

routes_{timestamp}.md:主索引(逐条列出)

说明:本 skill 使用 routes_{timestamp}.md=== [N] {route_summary} ===N 作为 HTTP 路由route_id(流水线后续用于 route_tracer/{route_id}/trace_{timestamp}.md 文件分桶)。CLI / hook / sink-only 等合成 route_idphp-audit-pipeline 阶段 3 写入 high_risk_routes_{timestamp}.md占用本文件的 [N] 序号。

# {project_name} - 路由与接口索引(PHP)
生成时间: {timestamp}
分析路径: {source_path}

## 路由清单(全部)
=== [1] GET /path/to/{id} ===
HTTP 方法: GET
路由路径规则: /path/to/{id}
处理器: ControllerClass@method / functionName
位置: path/to/file.php:line(若无法获取行号,标注“待定位:需人工打开文件确认”但仍给出文件路径)
参数概览:
  Path: id (类型推断/约束)
  Query: {query_params}

=== [2] POST /path/to/{id}/action ===
HTTP 方法: POST
路由路径规则: /path/to/{id}/action
处理器: ControllerClass@action / functionName
位置: path/to/file.php:line(若无法获取行号,标注“待定位:需人工打开文件确认”但仍给出文件路径)
参数概览:
  Path: id (类型推断/约束)
  Query: {query_params}

params_{timestamp}.md:参数详细(逐条列出)

# {project_name} - 路由参数结构(逐条)
生成时间: {timestamp}

=== 路由: GET /path/to/{id} ===
1) Path 参数
| 参数 | 类型/约束 | 位置 | 必填 |
|------|------------|------|------|
| id   | int/regex{id_pattern} | Router rule | 是/否/不确定 |

2) Query 参数
| 参数 | 类型 | 来源 | 必填 | 说明 |

3) Body 参数(如 JSON)
| 字段 | 类型 | JSON 路径 | 必填 |

4) Header/ Cookie / File(如有)
| 字段 | 类型 | 来源 | 必填 |

5) 完整请求模板(必须在代码块里)
```http
GET /path/to/{id}?a={a}&b={b} HTTP/1.1
Host: {host}
Cookie: {cookie}
Authorization: Bearer {token}
Content-Type: application/json

{"k":"{v}"}


## 输出前自检(强制)
- [ ] routes 与 params 中每条路由“序号/路由标识”一致
- [ ] 没有出现省略占位符
- [ ] 每条路由都有“完整请求模板”代码块