From claude-sfcc-plugin
SFRA (Storefront Reference Architecture) code review skill using Swarm pattern. Analyzes controllers, models, ISML, services, jobs for best practices, security, and performance. Triggers on "SFRA review", "SFCC code review", "cartridge review"
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-sfcc-plugin:sfra-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
SFCC/SFRA コードベースのベストプラクティスレビューを実行する。**Swarm パターン**(並列エージェント実行)で網羅的な分析を行い、P0/P1/P2 の重大度付きレビューレポートを生成。
README.mdagents/aggregator.mdagents/indexer.mdagents/reporter.mdagents/swarm/explorer-cartridge.mdagents/swarm/explorer-client.mdagents/swarm/explorer-controller.mdagents/swarm/explorer-isml.mdagents/swarm/explorer-jobs.mdagents/swarm/explorer-model.mdagents/swarm/explorer-service.mdagents/swarm/reviewer-antipattern.mdagents/swarm/reviewer-bestpractice.mdagents/swarm/reviewer-performance.mdagents/swarm/reviewer-security.mdhooks/hooks.jsonhooks/validate-output.shreferences/antipatterns.mdreferences/handoff_schema.mdreferences/review_rules.mdSFCC/SFRA コードベースのベストプラクティスレビューを実行する。Swarm パターン(並列エージェント実行)で網羅的な分析を行い、P0/P1/P2 の重大度付きレビューレポートを生成。
| 項目 | 内容 |
|---|---|
| 対象 | SFRA Storefront + Jobs(app_storefront_base + overlay cartridges) |
| 除外 | Headless/SCAPI/PWA Kit の実装レビュー(別スキルで対応)。SCAPI 移行準備度チェックは含む |
| 出力形式 | Markdown レビューレポート(P0/P1/P2 重大度付き) |
| 中間成果物 | docs/review/.work/ に保存 |
| 最終成果物 | docs/review/sfra-review.md |
┌─────────────────────────────────────────────────────────────────┐
│ Orchestrator (SKILL.md) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Phase 0: Scope Detection │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ - Cartridge 構成検出(app_storefront_base, plugin_, int_) ││
│ │ - Sites/Locales 検出 ││
│ │ - 対象ファイル数/LOC 算出 ││
│ └─────────────────────────────────────────────────────────────┘│
│ │ │
│ Phase 1: Indexer (sequential) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ Controllers/Routes マップ、ISML 一覧、Services 定義、 ││
│ │ Hooks/Jobs 一覧、Model 一覧を "地図" として生成 ││
│ └─────────────────────────────────────────────────────────────┘│
│ │ │
│ Phase 2: Explorer Swarm (並列 - 7 agents) │
│ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ │controller│ model │ isml │ client │ service │cartridge│ jobs │
│ │ (sonnet) │ (opus) │(sonnet) │(sonnet) │ (opus) │(sonnet) │(sonnet) │
│ └────┬─────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┘
│ └──────────┴─────────┼─────────┴─────────┴─────────┴─────────┘│
│ ▼ │
│ Aggregator (opus) │
│ Two-step Reduce │
│ │ │
│ Phase 3: Reviewer Swarm (並列 - 4 agents) │
│ ┌─────────┬─────────┬─────────┬─────────┐ │
│ │perform. │security │ best- │ anti- │ │
│ │ (haiku) │ (opus) │practice │ pattern │ │
│ │ │ │ (haiku) │ (haiku) │ │
│ └────┬────┴────┬────┴────┬────┴────┬────┘ │
│ └─────────┴─────────┼─────────┘ │
│ ▼ │
│ Aggregator (opus) │
│ 統合レビュー + Gate 判定 │
│ │ │
│ Phase 4: Reporter (sonnet) │
│ ▼ │
│ sfra-review.md │
└─────────────────────────────────────────────────────────────────┘
目的: レビュー対象の Cartridge 構成と規模を把握
手順:
cartridge ディレクトリ配下の構造を分析検出項目:
scope:
cartridges:
- name: "app_storefront_base"
type: "base"
path: "cartridges/app_storefront_base"
- name: "app_custom_mystore"
type: "overlay"
path: "cartridges/app_custom_mystore"
- name: "int_payment"
type: "integration"
path: "cartridges/int_payment"
stats:
total_files: 450
total_loc: 25000
controllers: 35
models: 28
templates: 120
jobs: 8
出力: docs/review/.work/00_scope.json
Done 条件: cartridge 構成が検出され、stats が算出されている
目的: レビュー対象のコードベース全体像を "地図" として可視化
入力: Phase 0 の scope 情報
手順:
sfra-indexer エージェントを起動(model: sonnet)出力: docs/review/.work/01_index.md
出力形式:
# SFRA Codebase Index
## Controllers (35 files)
| Controller | Routes | Middleware | Cartridge |
|------------|--------|------------|-----------|
| Account.js | Login, Register, ... | auth, csrf | app_custom |
## Models (28 files)
| Model | Decorators | Used By |
|-------|------------|---------|
| ProductModel.js | base, full | PDP, PLP |
## ISML Templates (120 files)
| Template | Includes | Remote Includes |
|----------|----------|-----------------|
| pdpMain.isml | productCard, reviews | recommendations |
## Services (12 definitions)
| Service ID | Type | Timeout | Retry |
|------------|------|---------|-------|
| payment.authorize | HTTP | 30s | 3 |
## Jobs (8 definitions)
| Job ID | Steps | Schedule |
|--------|-------|----------|
| ProductSync | 3 | Daily 2AM |
Done 条件: 全カテゴリの index が生成されている
目的: 各レイヤーを専門エージェントが並列で分析
入力: Phase 1 の index 情報
手順:
┌─────────────────────────────────────────────────────────────────┐
│ 並列実行(単一メッセージで複数 Task tool 呼び出し) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Task(sfra-explorer-controller, model: sonnet) ──┐ │
│ Task(sfra-explorer-model, model: opus) ──┼─→ 並列 │
│ Task(sfra-explorer-isml, model: sonnet) ──┤ │
│ Task(sfra-explorer-client, model: sonnet) ──┤ │
│ Task(sfra-explorer-service, model: opus) ──┤ │
│ Task(sfra-explorer-cartridge, model: sonnet) ──┤ │
│ Task(sfra-explorer-jobs, model: sonnet) ──┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Explorer エージェント一覧:
| Agent | Model | 担当範囲 |
|---|---|---|
| explorer-controller | sonnet | Controllers, Routes, Middleware |
| explorer-model | opus | Models, Decorators, Transactions |
| explorer-isml | sonnet | Templates, Resource Bundles |
| explorer-client | sonnet | Client-side JS, CSS |
| explorer-service | opus | Services, External Integrations |
| explorer-cartridge | sonnet | Architecture, Layering |
| explorer-jobs | sonnet | Jobs, Batch Processing |
出力:
docs/review/.work/02_explorer/*.md(各エージェントの生出力)docs/review/.work/03_explorer_unified.md(統合済み分析)Done 条件:
目的: Cross-cutting concerns を専門エージェントが並列でレビュー
入力: Phase 2 の統合分析結果
手順:
┌─────────────────────────────────────────────────────────────────┐
│ 並列実行(単一メッセージで複数 Task tool 呼び出し) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Task(sfra-reviewer-performance, model: haiku) ──┐ │
│ Task(sfra-reviewer-security, model: opus) ──┼─→ 並列 │
│ Task(sfra-reviewer-bestpractice, model: haiku) ──┤ │
│ Task(sfra-reviewer-antipattern, model: haiku) ──┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Reviewer エージェント一覧:
| Agent | Model | 担当範囲 |
|---|---|---|
| reviewer-performance | haiku | Caching, require scope, API calls |
| reviewer-security | opus | XSS, CSRF, Input validation, PII |
| reviewer-bestpractice | haiku | SFRA guidelines, patterns |
| reviewer-antipattern | haiku | Known anti-patterns detection |
出力:
docs/review/.work/04_reviewer/*.md(各エージェントの生出力)docs/review/.work/05_review_unified.md(統合済みレビュー)Done 条件:
目的: 最終レビューレポートを生成
入力: Phase 3 の統合レビュー結果
手順:
sfra-reporter エージェントを起動(model: sonnet)出力: docs/review/sfra-review.md
Done 条件: レポートが生成され、P0/P1/P2 のサマリーが含まれている
| Category | Trigger |
|---|---|
| Security | XSS 脆弱性、PII ログ出力、CSRF 未対策 |
| Transaction | Transaction 境界外の書き込み |
| Architecture | app_storefront_base 直接編集 |
| Performance | グローバル require が 10 箇所以上 |
| Category | Trigger |
|---|---|
| Controller | server.append() での ViewData 変更 |
| ISML | isscript 内 business logic 5 箇所以上 |
| Service | タイムアウト/リトライ未設定 |
| Cartridge | Naming collision 検出 |
| Jobs | 冪等性未保証、Transaction 境界違反 |
| Category | Trigger |
|---|---|
| Performance | キャッシュ未活用 |
| Code Quality | Magic numbers |
| Best Practice | 軽微なガイドライン違反 |
gate_decision:
p0_count: 0
p1_count: 3
p2_count: 12
result: "PASS" # P0=0 かつ P1<2 なら PASS
overall_status: "REVIEW_NEEDED" # P1>0 または P2>5 なら要レビュー
7 つの Explorer エージェントを並列で起動する。
単一のメッセージ内で複数の Task tool を呼び出す。
Task(
description: "Analyze SFRA controllers",
prompt: "Index ファイル (.work/01_index.md) を読み、
Controllers/Routes/Middleware を分析して
ベストプラクティス違反を検出せよ。
出力: .work/02_explorer/controller.md",
subagent_type: "sfra-explorer-controller",
model: "sonnet"
)
Task(
description: "Analyze SFRA models",
prompt: "Index ファイル (.work/01_index.md) を読み、
Models/Decorators/Transactions を分析して
ベストプラクティス違反を検出せよ。
出力: .work/02_explorer/model.md",
subagent_type: "sfra-explorer-model",
model: "opus"
)
// ... 残り 5 エージェント同様
全 Explorer の出力が揃ったら Aggregator を呼び出す。
Task(
description: "Aggregate explorer findings",
prompt: ".work/02_explorer/ 配下の全ファイルを読み、
Two-step Reduce で統合せよ。
Step 1: findings のマージ
Step 2: 矛盾解消・重複排除
出力: .work/03_explorer_unified.md",
subagent_type: "sfra-aggregator",
model: "opus"
)
| Phase | 許可ツール | 備考 |
|---|---|---|
| Phase 0 | Glob, Bash (read-only) | ファイル検出のみ |
| Phase 1 | Read, Glob, Grep | Index 作成 |
| Phase 2 | Read, Glob, Grep | 分析のみ |
| Phase 3 | Read | レビューのみ |
| Phase 4 | Read, Write | レポート生成 |
docs/review/ および docs/review/.work/ のみ自動実行モードでは、以下のフローで全 Phase を順次実行する:
/sfra-review → Phase 0 → Phase 1 → Phase 2 (7 agents) → Aggregator
→ Phase 3 (4 agents) → Aggregator + Gate → Phase 4 → Report
各 Phase の完了条件をチェックし、次の Phase に自動遷移:
| Phase | Done 条件 |
|---|---|
| 0 | 00_scope.json が生成済み |
| 1 | 01_index.md が生成済み |
| 2 | 7 Explorer が status: ok、03_explorer_unified.md 生成済み |
| 3 | 4 Reviewer が status: ok、Gate 判定完了 |
| 4 | sfra-review.md が生成済み |
| 状況 | 対応 |
|---|---|
| Cartridge 未検出 | status: blocked、ユーザーにパス確認を求める |
| Explorer 一部失敗 | 警告を出力し、成功したものだけで続行 |
| 全 Explorer 失敗 | status: blocked、原因を報告 |
| Aggregator 失敗 | Phase 2 からリトライ |
| Reporter 失敗 | Phase 4 からリトライ |
docs/review/
├── .work/ # 中間成果物(.gitignore 推奨)
│ ├── 00_scope.json # Phase 0: スコープ
│ ├── 01_index.md # Phase 1: Index
│ ├── 02_explorer/ # Phase 2: Explorer 生出力
│ │ ├── controller.md
│ │ ├── model.md
│ │ ├── isml.md
│ │ ├── client.md
│ │ ├── service.md
│ │ ├── cartridge.md
│ │ └── jobs.md
│ ├── 03_explorer_unified.md # Phase 2: 統合分析
│ ├── 04_reviewer/ # Phase 3: Reviewer 生出力
│ │ ├── performance.md
│ │ ├── security.md
│ │ ├── bestpractice.md
│ │ └── antipattern.md
│ └── 05_review_unified.md # Phase 3: 統合レビュー
└── sfra-review.md # 最終レポート
npx claudepluginhub sizukutamago/claude-sfcc-plugin --plugin claude-sfcc-pluginRuns pre-submission compliance checks on Shopify app codebases against App Store requirements, surfacing likely issues.
Reviews code for quality issues: architecture conformance, anti-patterns, performance, maintainability. Read-only analysis, never modifies code.
Audits a codebase across 29 dimensions — security, privacy, compliance (HIPAA/PCI/SOC 2), architecture, testing, performance, DevOps, UX, SEO, AI/ML, and more. Generates structured docs and files remediation tickets.