From bee-dev-team
Analyzes backend codebase (PHP/Laravel) against standards and generates refactoring tasks for bee:dev-cycle. For frontend projects, use bee:dev-refactor-frontend instead.
npx claudepluginhub luanrodrigues/ia-frmwrk --plugin bee-dev-teamThis skill uses the workspace's default tool permissions.
Analyzes existing codebase against Bee/Lerian standards and generates refactoring tasks compatible with bee:dev-cycle.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Analyzes existing codebase against Bee/Lerian standards and generates refactoring tasks compatible with bee:dev-cycle.
any divergence from Bee standards = MANDATORY gap to implement.
<cannot_skip>
Non-negotiable, not open to interpretation—a HARD RULE.
See shared-patterns/shared-anti-rationalization.md for:
COUNT(non-✅ items in all Standards Coverage Tables) == COUNT(FINDING-XXX entries)
If counts don't match → SKILL FAILURE. Go back and add missing findings.
Not all architecture patterns apply to all services. Before flagging gaps, verify the pattern is applicable.
| Service Type | Hexagonal/Clean Architecture | Directory Structure |
|---|---|---|
| CRUD API (with services, adapters) | ✅ APPLY | ✅ APPLY (Lerian pattern) |
| Complex business logic | ✅ APPLY | ✅ APPLY |
| Multiple bounded contexts | ✅ APPLY | ✅ APPLY |
| Event-driven systems | ✅ APPLY | ✅ APPLY |
| Simple scripts/utilities | ❌ not APPLICABLE | ❌ not APPLICABLE |
| CLI tools | ❌ not APPLICABLE | ❌ not APPLICABLE |
| Workers/background jobs | ❌ not APPLICABLE | ❌ not APPLICABLE |
| Simple lambda/functions | ❌ not APPLICABLE | ❌ not APPLICABLE |
CRUD API (Hexagonal/Lerian Pattern APPLICABLE):
Simple Service (Hexagonal/Lerian not applicable):
When dispatching specialist agents, include:
⛔ ARCHITECTURE APPLICABILITY CHECK:
1. If service is an API with CRUD operations → APPLY Hexagonal/Lerian standards
2. If service is CLI tool, script, or simple utility → Do not flag Hexagonal/Lerian gaps
CRUD APIs MUST follow Hexagonal Architecture (ports/adapters) and Lerian directory pattern.
Before any other action, create the todo list with all steps:
TodoWrite:
todos:
- content: "Validate PROJECT_RULES.md exists"
status: "pending"
activeForm: "Validating PROJECT_RULES.md exists"
- content: "Detect project stack (PHP/Laravel backend only)"
status: "pending"
activeForm: "Detecting project stack"
- content: "Read PROJECT_RULES.md for context"
status: "pending"
activeForm: "Reading PROJECT_RULES.md"
- content: "Generate codebase report via bee:codebase-explorer"
status: "pending"
activeForm: "Generating codebase report"
- content: "Dispatch specialist agents in parallel"
status: "pending"
activeForm: "Dispatching specialist agents"
- content: "Save individual agent reports"
status: "pending"
activeForm: "Saving agent reports"
- content: "Map agent findings to FINDING-XXX entries"
status: "pending"
activeForm: "Mapping agent findings"
- content: "Generate findings.md"
status: "pending"
activeForm: "Generating findings.md"
- content: "Map findings 1:1 to REFACTOR-XXX tasks"
status: "pending"
activeForm: "Mapping findings to tasks (1:1)"
- content: "Generate tasks.md"
status: "pending"
activeForm: "Generating tasks.md"
- content: "Generate visual change report"
status: "pending"
activeForm: "Generating visual change report"
- content: "Get user approval"
status: "pending"
activeForm: "Getting user approval"
- content: "Save all artifacts"
status: "pending"
activeForm: "Saving artifacts"
- content: "Handoff to bee:dev-cycle"
status: "pending"
activeForm: "Handing off to bee:dev-cycle"
This is NON-NEGOTIABLE. Do not skip creating the todo list.
See shared-patterns/shared-orchestrator-principle.md for full ORCHESTRATOR principle, role separation, forbidden/required actions, step-to-agent mapping, and anti-rationalization table.
Summary: You orchestrate. Agents execute. If using Bash/Grep/Read to analyze code → STOP. Dispatch agent.
TodoWrite: Mark "Validate PROJECT_RULES.md exists" as in_progress
<block_condition>
If condition is true, output blocker and TERMINATE. Otherwise continue to Step 1.
Check: Does docs/PROJECT_RULES.md exist?
completed, continue to Step 1## BLOCKED: PROJECT_RULES.md Not Found
Cannot proceed without project standards baseline.
**Required Action:** Create `docs/PROJECT_RULES.md` with:
- Architecture patterns
- Code conventions
- Testing requirements
- Technology stack decisions
Re-run after file exists.
TodoWrite: Mark "Detect project stack (PHP/Laravel)" as in_progress
⛔ SCOPE: BACKEND CODE ONLY. This skill analyzes backend code exclusively. MUST use bee:dev-refactor-frontend for frontend code (React, Next.js, Vue, Angular).
Check for backend manifest files:
| File/Pattern | Stack | Agent |
|---|---|---|
composer.json + laravel/framework | PHP/Laravel Backend | bee:backend-engineer-php |
Detection Logic:
composer.json exists + laravel/framework in dependencies → Add PHP backend agentpackage.json exists + React/Next.js in dependencies → STOP: This is a frontend project. Use bee:dev-refactor-frontend instead.⛔ FORBIDDEN: Dispatching bee:frontend-engineer, bee:frontend-designer, bee:ui-engineer, bee:qa-analyst-frontend, or bee:frontend-bff-engineer-typescript from this skill. These are frontend agents and belong to bee:dev-refactor-frontend.
TodoWrite: Mark "Detect project stack (PHP/Laravel)" as completed
TodoWrite: Mark "Read PROJECT_RULES.md for context" as in_progress
Read tool: docs/PROJECT_RULES.md
Extract project-specific conventions for agent context.
TodoWrite: Mark "Read PROJECT_RULES.md for context" as completed
TodoWrite: Mark "Generate codebase report via bee:codebase-explorer" as in_progress
<dispatch_required agent="bee:codebase-explorer"> Generate a comprehensive codebase report describing WHAT EXISTS.
Include:
<output_required>
[Your summary here]
[Your findings here]
[Your insights here]
[Your file inventory here]
[Your recommendations here] </output_required>
Do not complete without outputting full report in the format above.
See shared-patterns/anti-rationalization-codebase-explorer.md for the bee:codebase-explorer dispatch anti-rationalization table.
Any of these = IMMEDIATE SKILL FAILURE.
✅ Task(subagent_type="bee:codebase-explorer", ...)
Timestamp format: {timestamp} = YYYY-MM-DDTHH:MM:SS (e.g., 2026-02-07T22:30:45). Generate once at start, reuse for all artifacts.
After Task completes, save with Write tool:
Write tool:
file_path: "docs/bee:dev-refactor/{timestamp}/codebase-report.md"
content: [Task output]
TodoWrite: Mark "Generate codebase report via bee:codebase-explorer" as completed
TodoWrite: Mark "Dispatch specialist agents in parallel" as in_progress
BEFORE dispatching any specialist agent, verify:
Check 1: Does docs/bee:dev-refactor/{timestamp}/codebase-report.md exist?
- YES → Continue to dispatch agents
- no → STOP. Go back to Step 3.
Check 2: Was codebase-report.md created by bee:codebase-explorer?
- YES → Continue
- no (created by Bash output) → DELETE IT. Go back to Step 3. Use correct agent.
If you skipped Step 3 or used Bash instead of Task tool → You MUST go back and redo Step 3 correctly.
Dispatch all applicable agents in ONE message (parallel):
All agents MUST follow shared-patterns/standards-coverage-table.md which defines:
Section indexes are pre-defined in shared-patterns. Agents MUST check all sections listed.
<parallel_dispatch agents="bee:backend-engineer-php, bee:qa-analyst, bee:sre"> All three agents MUST be dispatched in parallel via Task tool. Input: codebase-report.md, PROJECT_RULES.md </parallel_dispatch>
Task tool 1:
subagent_type: "bee:backend-engineer-php"
description: "PHP/Laravel standards analysis"
prompt: |
**MODE: ANALYSIS only**
⛔ MANDATORY: Check all sections in php.md per shared-patterns/standards-coverage-table.md
⛔ FRAMEWORKS & LIBRARIES DETECTION (MANDATORY):
1. Read composer.json to extract all dependencies used in codebase
2. Load php.md standards via WebFetch → extract all listed frameworks/libraries
3. For each category in standards (HTTP, Database, Validation, Testing, etc.):
- Compare codebase dependency vs standards requirement
- If codebase uses DIFFERENT library than standards → ISSUE-XXX
- If codebase is MISSING required library → ISSUE-XXX
4. any library not in standards that serves same purpose = ISSUE-XXX
Input:
- Bee Standards: Load via WebFetch (php.md)
- Section Index: See shared-patterns/standards-coverage-table.md → "bee:backend-engineer-php"
- Codebase Report: docs/bee:dev-refactor/{timestamp}/codebase-report.md
- Project Rules: docs/PROJECT_RULES.md
Output:
1. Standards Coverage Table (per shared-patterns format)
2. ISSUE-XXX for each ⚠️/❌ finding with: Pattern name, Severity, file:line, Current Code, Expected Code
Task tool 2:
subagent_type: "bee:qa-analyst"
description: "Test coverage analysis"
prompt: |
**MODE: ANALYSIS only**
Check all testing sections per shared-patterns/standards-coverage-table.md → "bee:qa-analyst"
Input: codebase-report.md, PROJECT_RULES.md
Output: Standards Coverage Table + ISSUE-XXX for gaps
Task tool 3:
subagent_type: "bee:sre"
description: "Observability analysis"
prompt: |
**MODE: ANALYSIS only**
Check all 6 sections per shared-patterns/standards-coverage-table.md → "bee:sre"
Input: codebase-report.md, PROJECT_RULES.md
Output: Standards Coverage Table + ISSUE-XXX for gaps
<parallel_dispatch agents="bee:backend-engineer-php, bee:qa-analyst, bee:sre"> All three agents MUST be dispatched in parallel via Task tool. Input: codebase-report.md, PROJECT_RULES.md </parallel_dispatch>
Task tool 1:
subagent_type: "bee:backend-engineer-php"
description: "PHP backend standards analysis"
prompt: |
**MODE: ANALYSIS only**
⛔ MANDATORY: Check all sections in php.md per shared-patterns/standards-coverage-table.md
⛔ FRAMEWORKS & LIBRARIES DETECTION (MANDATORY):
1. Read composer.json to extract all dependencies used in codebase
2. Load php.md standards via WebFetch → extract all listed frameworks/libraries
3. For each category in standards (Backend Framework, ORM, Validation, Testing, etc.):
- Compare codebase dependency vs standards requirement
- If codebase uses DIFFERENT library than standards → ISSUE-XXX
- If codebase is MISSING required library → ISSUE-XXX
4. any library not in standards that serves same purpose = ISSUE-XXX
Input:
- Bee Standards: Load via WebFetch (php.md)
- Section Index: See shared-patterns/standards-coverage-table.md → "bee:backend-engineer-php"
- Codebase Report: docs/bee:dev-refactor/{timestamp}/codebase-report.md
- Project Rules: docs/PROJECT_RULES.md
Output:
1. Standards Coverage Table (per shared-patterns format)
2. ISSUE-XXX for each ⚠️/❌ finding with: Pattern name, Severity, file:line, Current Code, Expected Code
| Stack Detected | Agents to Dispatch |
|---|---|
| PHP/Laravel only | Task 1 (PHP) + Task 2-4 |
⛔ MUST use bee:dev-refactor-frontend for frontend/BFF projects. This skill does not dispatch frontend agents.
TodoWrite: Mark "Dispatch specialist agents in parallel" as completed
TodoWrite: Mark "Save individual agent reports" as in_progress
⛔ MANDATORY: Each agent's output MUST be saved as an individual report file.
After all parallel agent tasks complete, save each agent's output to a separate file:
docs/bee:dev-refactor/{timestamp}/reports/
├── bee:backend-engineer-php-report.md (if PHP project)
├── bee:qa-analyst-report.md (always)
└── bee:sre-report.md (always)
Use Write tool for each agent report:
# {Agent Name} Analysis Report
**Generated:** {timestamp}
**Agent:** {agent-name}
**Mode:** ANALYSIS only
## Standards Coverage Table
{Copy agent's Standards Coverage Table output here}
## Issues Found
{Copy all ISSUE-XXX entries from agent output}
## Summary
- **Total Issues:** {count}
- **Critical:** {count}
- **High:** {count}
- **Medium:** {count}
- **Low:** {count}
---
*Report generated by bee:dev-refactor skill*
| Agent Dispatched | Report File Name |
|---|---|
| bee:backend-engineer-php | bee:backend-engineer-php-report.md |
| bee:qa-analyst | bee:qa-analyst-report.md |
| bee:sre | bee:sre-report.md |
| Rationalization | Why It's WRONG | Required Action |
|---|---|---|
| "I'll combine all reports into one file" | Individual reports enable targeted re-runs and tracking | Save each agent to SEPARATE file |
| "Agent output is already visible in chat" | Chat history is ephemeral; files are artifacts | MUST persist as files |
| "Only saving reports with issues" | Empty reports prove compliance was checked | Save all dispatched agent reports |
| "findings.md already captures everything" | findings.md is processed; reports are raw agent output | Save BOTH raw reports and findings.md |
Write tool:
file_path: "docs/bee:dev-refactor/{timestamp}/reports/{agent-name}-report.md"
content: [Agent Task output formatted per template above]
Repeat for each agent dispatched in Step 4.
TodoWrite: Mark "Save individual agent reports" as completed
TodoWrite: Mark "Map agent findings to FINDING-XXX entries" as in_progress
⛔ MANDATORY: all agent-reported issues MUST become findings.
| Agent Report | Action |
|---|---|
| Any difference between current code and Bee standard | → Create FINDING-XXX |
| Any missing pattern from Bee standards | → Create FINDING-XXX |
| Any deprecated pattern usage | → Create FINDING-XXX |
| Any observability gap | → Create FINDING-XXX |
❌ Ignoring agent-reported issues because they seem "minor" → SKILL FAILURE
❌ Filtering out issues based on personal judgment → SKILL FAILURE
❌ Summarizing multiple issues into one finding → SKILL FAILURE
❌ Skipping issues without ISSUE-XXX format from agent → SKILL FAILURE
❌ Creating findings only for "interesting" gaps → SKILL FAILURE
✅ Every line item from agent reports becomes a FINDING-XXX entry
✅ Preserve agent's severity assessment exactly as reported
✅ Include exact file:line references from agent report
✅ Every non-✅ item in Standards Coverage Table = one FINDING-XXX
✅ Count findings in Step 5 MUST equal total issues from all agent reports
⛔ See also: "Anti-Rationalization: Mandatory Gap Principle" at top of this skill.
| Rationalization | Why It's WRONG | Required Action |
|---|---|---|
| "Multiple similar issues can be one finding" | Distinct file:line = distinct finding. Merging loses traceability. | One issue = One FINDING-XXX |
| "Agent report didn't use ISSUE-XXX format" | Format varies; presence matters. Every gap = one finding. | Extract all gaps into findings |
| "I'll consolidate to reduce noise" | Consolidation = data loss. Noise is signal. | Preserve all individual issues |
| "Some findings are duplicates across agents" | Different agents = different perspectives. Keep both. | Create separate findings per agent |
| "Team has approved this deviation" | Team approval ≠ standards compliance. Document the gap. | Create FINDING-XXX, note team decision |
| "Fixing this would break existing code" | Breaking risk = implementation concern, not tracking concern. | Create FINDING-XXX, note risk in description |
Per the Mandatory Gap Principle (see top of skill): any divergence from Bee standards = FINDING-XXX.
This means:
Verification: Use formula from "Mandatory Gap Principle → Verification Rule" section.
When mapping findings, identify which gate SHOULD have caught the issue:
| Finding Category | Should Be Caught In | Flag |
|---|---|---|
| Missing edge case tests | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| Test isolation issues | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| Skipped/assertion-less tests | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| Test naming convention | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| Missing test coverage | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| TDD RED phase missing | Gate 2 (Testing) | 🚨 GATE 2 ESCAPE |
| Implementation pattern gaps | Gate 0 (Implementation) | Normal finding |
| Standards compliance gaps | Gate 0 (Implementation) | Normal finding |
| Observability gaps | Gate 0 (Implementation) | Normal finding |
Gate Escape Output Format:
### FINDING-XXX: [Issue Title] 🚨 GATE 2 ESCAPE
**Escaped From:** Gate 2 (Testing)
**Why It Escaped:** [Quality Gate check that should have caught this]
**Prevention:** [Specific check to add to Gate 2 exit criteria]
[Rest of finding format...]
Purpose: Track which issues escape which gates. If many GATE 2 ESCAPE findings occur, the Quality Gate checks need strengthening.
Summary Table (MANDATORY at end of findings.md):
## Gate Escape Summary
| Gate | Escaped Issues | Most Common Type |
|------|----------------|------------------|
| Gate 0 (Implementation) | N | [type] |
| Gate 1 (Testing) | N | [type] |
**Action Required:** If any gate has >2 escapes, review that gate's exit criteria.
TodoWrite: Mark "Map agent findings to FINDING-XXX entries" as completed
TodoWrite: Mark "Generate findings.md" as in_progress
BEFORE creating findings.md, apply the Verification Rule from "Mandatory Gap Principle" section.
If counts don't match → STOP. Go back to Step 4.1. Map missing issues.
❌ Creating findings.md with fewer entries than agent issues → SKILL FAILURE
❌ Omitting file:line references from findings → SKILL FAILURE
❌ Using vague descriptions instead of specific code excerpts → SKILL FAILURE
❌ Skipping "Why This Matters" section for any finding → SKILL FAILURE
❌ Generating findings.md without reading all agent reports → SKILL FAILURE
✅ Every FINDING-XXX includes: Severity, Category, Agent, Standard reference
✅ Every FINDING-XXX includes: Current Code with exact file:line
✅ Every FINDING-XXX includes: Bee Standard Reference with URL
✅ Every FINDING-XXX includes: Required Changes as numbered actions
✅ Every FINDING-XXX includes: Why This Matters with Problem/Standard/Impact
✅ Total finding count MUST match total issues from Step 4.1
| Rationalization | Why It's WRONG | Required Action |
|---|---|---|
| "I'll add details later during implementation" | findings.md is the source of truth. Incomplete = useless. | Complete all sections for every finding |
| "Code snippet is too long to include" | Truncate to relevant lines, but never omit. Context is required. | Include code with file:line reference |
| "Standard URL is obvious, skip it" | Agents and humans need direct links. Nothing is obvious. | Include full URL for every standard |
| "Why This Matters is redundant" | It explains business impact. Standards alone don't convey urgency. | Write Problem/Standard/Impact for all |
| "Some findings are self-explanatory" | Self-explanatory to you ≠ clear to implementer. | Complete all sections without exception |
| "I'll group small findings together" | Each finding = one task in Step 6. findings.md = atomic issues. | One finding = one FINDING-XXX entry |
Use Write tool to create findings.md:
⛔ CRITICAL: Every issue reported by agents in Step 4 MUST appear here as a FINDING-XXX entry.
# Findings: {project-name}
**Generated:** {timestamp}
**Total Findings:** {count}
## ⛔ Mandatory Gap Principle Applied
**all divergences from Bee standards are tracked below. No filtering applied.**
| Metric | Count |
|--------|-------|
| Total non-✅ items from agent reports | {X} |
| Total FINDING-XXX entries below | {X} |
| **Counts match?** | ✅ YES (REQUIRED) |
**Severity does not affect tracking - all gaps are mandatory:**
| Severity | Count | Priority | Tracking |
|----------|-------|----------|----------|
| Critical | {N} | Execute first | **MANDATORY** |
| High | {N} | Execute in current sprint | **MANDATORY** |
| Medium | {N} | Execute in next sprint | **MANDATORY** |
| Low | {N} | Execute when capacity | **MANDATORY** |
---
## FINDING-001: {Pattern Name}
**Severity:** Critical | High | Medium | Low (all MANDATORY)
**Category:** {lib-commons | architecture | testing | devops}
**Agent:** {agent-name}
**Standard:** {file}.md:{section}
### Current Code
```{lang}
// file: {path}:{lines}
{actual code}
Standard: {standards-file}.md → Section: {section-name} Pattern: {pattern-name} URL: https://raw.githubusercontent.com/luanrodrigues/ia-frmwrk/master/dev-team/docs/standards/{file}.md
**TodoWrite:** Mark "Generate findings.md" as `completed`
---
## Step 6: Map Findings to Tasks (1:1)
**TodoWrite:** Mark "Map findings 1:1 to REFACTOR-XXX tasks" as `in_progress`
**⛔ HARD GATE: One FINDING-XXX = One REFACTOR-XXX task. No grouping.**
Each finding becomes its own task. This prevents findings from being lost inside grouped tasks.
**1:1 Mapping Rule:**
- FINDING-001 → REFACTOR-001
- FINDING-002 → REFACTOR-002
- FINDING-NNN → REFACTOR-NNN
**Ordebee:** Sort tasks by severity (Critical first), then by dependency order.
**Mapping Verification:**
Before proceeding to Step 7, verify:
**If counts don't match → STOP. Every finding MUST have its own task.**
### Anti-Rationalization Table for Step 6
| Rationalization | Why It's WRONG | Required Action |
|-----------------|----------------|-----------------|
| "These findings are in the same file, I'll group them" | Grouping hides findings. One fix may be done, others forgotten. | **One finding = One task. No exceptions.** |
| "Grouping reduces task count and is easier to manage" | Fewer tasks = less visibility. Each finding needs independent tracking. | **Create one REFACTOR-XXX per FINDING-XXX** |
| "These are related and should be fixed together" | Related ≠ same task. Dev-cycle can execute them sequentially. | **Separate tasks, use Dependencies field to link** |
| "Too many tasks will overwhelm the developer" | Missing fixes overwhelms production. Completeness > convenience. | **Create all tasks. Priority handles ordering.** |
**TodoWrite:** Mark "Map findings 1:1 to REFACTOR-XXX tasks" as `completed`
---
## Step 7: Generate tasks.md
**TodoWrite:** Mark "Generate tasks.md" as `in_progress`
**Use Write tool to create tasks.md:**
```markdown
# Refactoring Tasks: {project-name}
**Source:** findings.md
**Total Tasks:** {count}
## ⛔ Mandatory 1:1 Mapping Verification
**Every FINDING-XXX has exactly one REFACTOR-XXX. No grouping.**
| Metric | Count |
|--------|-------|
| Total FINDING-XXX in findings.md | {X} |
| Total REFACTOR-XXX in tasks.md | {X} |
| **Counts match exactly?** | ✅ YES (REQUIRED) |
| Grouped tasks (multiple findings) | 0 (REQUIRED) |
**Priority affects execution order, not whether to include:**
- Critical/High tasks: Execute first
- Medium tasks: Execute in current cycle
- Low tasks: Execute when capacity - STILL MANDATORY TO COMPLETE
---
## REFACTOR-001: {Finding Pattern Name}
**Finding:** FINDING-001
**Severity:** Critical | High | Medium | Low (all ARE MANDATORY)
**Category:** {lib-commons | architecture | testing | devops}
**Agent:** {agent-name}
**Effort:** {hours}h
**Dependencies:** {other REFACTOR-XXX tasks or none}
### Current Code
```{lang}
// file: {path}:{lines}
{actual code from FINDING-001}
| Standard File | Section | URL |
|---|---|---|
| {file}.md | {section} | Link |
**TodoWrite:** Mark "Generate tasks.md" as `completed`
---
## Step 7.5: Visual Change Report
**TodoWrite:** Mark "Generate visual change report" as `in_progress`
**MANDATORY: Generate a visual HTML report before user approval.**
Invokes `Skill("bee:visual-explainer")` to produce a self-contained HTML page showing all planned refactoring changes. This replaces reading raw findings.md / tasks.md markdown for approval decisions.
**Read the code-diff template first:** Read `default/skills/visual-explainer/templates/code-diff.html` to absorb the patterns before generating.
**Generate the HTML report with these sections:**
### 1. Summary Dashboard
- Total FINDING-XXX count with severity breakdown (Critical / High / Medium / Low)
- Total files affected (unique file paths from all findings)
- Horizontal severity breakdown bar
### 2. Per-Finding Diff Panels (one section per FINDING-XXX)
For each FINDING-XXX in findings.md:
- **Header:** Finding ID, severity badge, category, agent that reported it
- **Before panel:** Current Code block from findings.md (with file:line reference, syntax highlighted via Highlight.js)
- **After panel:** Bee Standard pattern from Required Changes section (syntax highlighted)
- **Collapsible "Why This Matters":** Problem / Standard Violated / Impact from findings.md
### 3. Task Mapping Table
Table showing: FINDING-XXX → REFACTOR-XXX → Severity → Category → Estimated Effort
**Output:** Save to `docs/bee:dev-refactor/{timestamp}/change-report.html`
**Open in browser:**
```text
macOS: open docs/bee:dev-refactor/{timestamp}/change-report.html
Linux: xdg-open docs/bee:dev-refactor/{timestamp}/change-report.html
Tell the user the file path. The report opens before the approval question so the user can review changes visually.
See shared-patterns/anti-rationalization-visual-report.md for anti-rationalization table.
TodoWrite: Mark "Generate visual change report" as completed
TodoWrite: Mark "Get user approval" as in_progress
<user_decision> MUST wait for explicit user response before proceeding. Options: Approve all | Critical only | Cancel </user_decision>
AskUserQuestion:
questions:
- question: "Review refactoring plan. How to proceed?"
header: "Approval"
options:
- label: "Approve all"
description: "Proceed to bee:dev-cycle execution"
- label: "Critical only"
description: "Execute only Critical/High tasks"
- label: "Cancel"
description: "Keep analysis, skip execution"
CANNOT proceed without explicit user selection.
TodoWrite: Mark "Get user approval" as completed
TodoWrite: Mark "Save all artifacts" as in_progress
docs/bee:dev-refactor/{timestamp}/
├── codebase-report.md (Step 3)
├── reports/ (Step 4.5)
│ ├── bee:backend-engineer-php-report.md
│ ├── bee:qa-analyst-report.md
│ └── bee:sre-report.md
├── findings.md (Step 5)
├── tasks.md (Step 7)
└── change-report.html (Step 7.5)
TodoWrite: Mark "Save all artifacts" as completed
TodoWrite: Mark "Handoff to bee:dev-cycle" as in_progress
If user approved, use Skill tool to invoke bee:dev-cycle directly:
Skill tool:
skill: "bee:dev-cycle"
⛔ CRITICAL: Pass tasks file path in context:
After invoking the skill, provide:
docs/bee:dev-refactor/{timestamp}/tasks.mdContext for bee:dev-cycle:
tasks-file: "docs/bee:dev-refactor/{timestamp}/tasks.md"
Where {timestamp} format is YYYY-MM-DDTHH:MM:SS (e.g., 2026-02-07T22:30:45). Use the same timestamp across all artifacts in a single run.
| Rationalization | Why It's WRONG | Required Action |
|---|---|---|
| "SlashCommand is equivalent to Skill tool" | SlashCommand is a hint; Skill tool guarantees skill loading | Use Skill tool, not SlashCommand |
| "User can run /bee:dev-cycle manually" | Manual run risks skill not being loaded | Invoke Skill tool directly |
| "bee:dev-cycle will auto-discover tasks" | Explicit path ensures correct file is used | Pass explicit tasks path |
| "User approved, I can skip bee:dev-cycle" | Approval = permission to proceed, not skip execution | Invoke Skill tool |
| "Tasks are saved, job is done" | Saved tasks without execution = incomplete workflow | Invoke Skill tool |
⛔ HARD GATE: You CANNOT complete bee:dev-refactor without invoking Skill tool: bee:dev-cycle.
If user approved execution, you MUST:
Skill tool: bee:dev-cycledocs/bee:dev-refactor/{timestamp}/tasks.mdSkipping this step = SKILL FAILURE.
bee:dev-cycle executes each REFACTOR-XXX task through 8-gate process.
TodoWrite: Mark "Handoff to bee:dev-cycle" as completed
Base metrics per shared-patterns/output-execution-report.md.
| Metric | Value |
|---|---|
| Duration | Xm Ys |
| Iterations | N |
| Result | PASS/FAIL/PARTIAL |
| Metric | Value |
|---|---|
| Agents Dispatched | N |
| Findings Generated | N |
| Tasks Created | N |
| Artifacts Location | docs/bee:dev-refactor/{date}/ |
artifacts:
- codebase-report.md (Step 3)
- reports/{agent-name}-report.md (Step 4.5)
- findings.md (Step 5)
- tasks.md (Step 7)
- change-report.html (Step 7.5)
traceability:
Bee Standard → Agent Report → FINDING-XXX → REFACTOR-XXX → Implementation