Paths: File paths (
,
,
) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. If
is missing, fetch files via WebFetch from
https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/{path}
.
ln-810-performance-optimizer
Type: L2 Domain Coordinator
Category: 8XX Optimization
Iterative diagnostic pipeline for performance optimization. Profiles the full request stack, classifies bottlenecks, researches industry solutions, and tests optimization hypotheses in multiple cycles — each cycle discovers and addresses different bottlenecks as fixing the dominant one reveals the next (Amdahl's law).
Overview
| Aspect | Details |
|---|
| Input | (endpoint/function/pipeline) + (e.g., "6300ms response time") + optional + optional (default 3) |
| Output | Optimized code with verification proof, or diagnostic report with recommendations |
| Workers | ln-811 (profiler) → ln-812 (researcher) → ln-813 (plan validator) → ln-814 (executor) |
| Flow | Phases 0-1 once, then Phases 2-8 loop up to times, Phases 9-11 once |
Workflow
Phases: Pre-flight → Parse Input → CYCLE [ Profile → Wrong Tool Gate → Research → Set Target → Write Context → Validate Plan → Execute → Cycle Boundary ] → Collect → Report → Meta-Analysis
Phase 0: Pre-flight Checks
| Check | Required | Action if Missing |
|---|
| Target identifiable | Yes | Block: "specify file, endpoint, or pipeline to optimize" |
| Observed metric provided | Yes | Block: "specify what metric is slow (e.g., response time, throughput)" |
| Git clean state | Yes | Block: "commit or stash changes first" |
| Test infrastructure | Yes | Block: "tests required for safe optimization" |
| Stack detection | Yes | Detect via ci_tool_detection.md |
| Service topology | No | Detect multi-service architecture (see below) |
| State file | No | If .optimization/{slug}/state.json
exists → resume from last completed gate |
MANDATORY READ: Load
shared/references/ci_tool_detection.md
for test/build detection.
Service Topology Detection
Detect if optimization target spans multiple services with accessible code:
| Signal | How to Detect | Result |
|---|
| Git submodules | — non-empty output | List of service paths |
| Monorepo | for , , directories with independent package files | List of service paths |
| Docker Compose | / — map service names to build contexts | List of service paths + ports |
| Workspace config | , Cargo workspace, Go workspace | List of module paths |
Output: — map of service names to code paths. Pass to ln-811 for cross-service tracing.
If single-service (no signals):
— standard single-codebase profiling.
State Persistence
Save
.optimization/{slug}/state.json
after each phase completion. Enables resume on interruption.
json
{
"target": "src/api/endpoint.py::handler",
"slug": "endpoint-handler",
"cycle_config": { "max_cycles": 3, "plateau_threshold": 5 },
"current_cycle": 1,
"cycles": [
{
"cycle": 1,
"status": "done",
"baseline": { "wall_time_ms": 6300 },
"final": { "wall_time_ms": 3800 },
"improvement_pct": 39.7,
"target_met": false,
"bottleneck": "I/O-Network: 13 sequential HTTP calls",
"hypotheses_applied": ["H1", "H2"],
"branch": "optimize/ln-814-align-endpoint-c1-20260315"
}
],
"phases": {
"0_preflight": { "status": "done", "ts": "2026-03-15T10:00:00Z" },
"2_profile": { "status": "done", "ts": "2026-03-15T10:05:00Z", "worker": "ln-811" },
"8_execute": { "status": "pending" }
}
}
Phase status values: →
→
|
Update state BEFORE and AFTER each phase. For Agent-delegated phases (7, 8): set
before launch,
/
after Agent returns.
On startup: if
.optimization/{slug}/state.json
exists, ask user: "Resume from cycle {current_cycle}, phase {last incomplete}?" or "Start fresh?"
Phases are
per-cycle — reset at each cycle boundary.
+ phases tells the exact resumption point.
Cycle Management
| Parameter | Default | Description |
|---|
| max_cycles | 3 | Maximum optimization cycles |
| plateau_threshold | 5 | Minimum improvement % to continue to next cycle |
Each cycle: Profile → Gate → Research → Target → Context → Validate → Execute.
Each cycle naturally discovers different bottlenecks (fixing dominant reveals next per Amdahl's law).
Stop Conditions (evaluated after each cycle)
| Condition | Action |
|---|
| STOP — target reached |
| improvement < % | STOP — plateau detected |
| STOP — budget exhausted |
| ln-812 returns 0 hypotheses | STOP — no further optimization found |
Between Cycles
1. Collect cycle results (improvement, branch, hypotheses applied)
2. Merge cycle branch: git merge {cycle_branch} --no-edit
3. Record cycle summary in state.json
4. Run /compact to compress conversation context
5. Display: ═══ CYCLE {N}/{max} ═══ Previous: {bottleneck} → {improvement}%
6. Reset phase statuses in state.json for new cycle
If merge has conflicts → BLOCK: report partial results, user resolves manually.
Phase 1: Parse Input
Parse user input into structured problem statement:
| Field | Source | Example |
|---|
| target | User-specified | src/api/alignment.py::align_endpoint
, , |
| observed_metric | User-specified | { value: 6300, unit: "ms", type: "response_time" }
|
| target_metric | User-specified OR Phase 5 | { value: 500, unit: "ms" }
or null |
| max_cycles | User-specified OR default | 3 |
| audit_report | Optional | Path to ln-650 output (additional hints for profiler) |
If
not provided by user, defer to Phase 5 (after research establishes industry benchmark).
Generate slug
Derive
from target for per-task isolation: sanitize to
, max 50 chars.
| Target | Slug |
|---|
src/api/alignment.py::align_endpoint
| |
test_idml_structure_preserved
| test-idml-structure-preserved
|
| |
All artifacts go to
:
,
,
,
.
CYCLE LOOP: Phases 2-8
FOR cycle = 1 to max_cycles:
IF cycle > 1:
1. Merge previous cycle branch: git merge {previous_branch} --no-edit
2. /compact — compress conversation context
3. Display cycle header:
═══ CYCLE {cycle}/{max_cycles} ═══
Previous: {bottleneck} → {improvement}% improvement
Remaining gap: {current_metric} vs target {target_metric}
4. Reset phases in state.json
5. Update current_cycle in state.json
Phase 2: Profile
Phase 3: Wrong Tool Gate
Phase 4: Research
Phase 5: Set Target (cycle 1 only — persists across cycles)
Phase 6: Write Context
Phase 7: Validate Plan
Phase 8: Execute
CYCLE BOUNDARY: evaluate stop conditions (see below)
Phase 2: Profile — DELEGATE to ln-811
Do NOT trace code, read function bodies, or profile yourself. INVOKE the profiler skill.
Invoke: Skill(skill: "ln-811-performance-profiler")
Pass: problem statement from Phase 1 + audit_report path (if provided).
On cycle 2+: pass same problem statement. ln-811 re-profiles the now-optimized code — test_command is rediscovered, new baseline measured, new bottlenecks found.
ln-811 will: discover/create test → run baseline (multi-metric) → static analysis + suspicion stack → instrument → build performance map.
Receive: performance_map, suspicion_stack, optimization_hints, wrong_tool_indicators, e2e_test info.
Phase 3: Wrong Tool Gate (4-Level Verdict)
Evaluate profiler results using structured verdict (adapted from ln-500 quality gate model).
| Verdict | Condition | Action |
|---|
| PROCEED | empty, measurements stable | Continue to Phase 4 (research) |
| CONCERNS | Measurement variance > 20% OR baseline unstable OR partial metrics only | Continue with warning — note uncertainty in context file |
| BLOCK | external_service_no_alternative
OR OR OR | See below |
| WAIVED | User explicitly overrides BLOCK ("try anyway") | Continue despite indicators — log user override |
BLOCK on Cycle 2+
On cycle 2+,
or
is a
SUCCESS signal — previous cycles brought performance to acceptable level. Break the cycle loop and proceed to Phase 9 (Final Report).
BLOCK Diagnostics
| Indicator | Diagnostic Message |
|---|
external_service_no_alternative
| "Bottleneck is {service} latency ({X}ms). Recommend: negotiate SLA / switch provider / add cache layer." |
| "Current performance ({X}ms) is within industry norm ({Y}ms). No optimization needed." |
| "Bottleneck is infrastructure ({detail}). Recommend: scaling / caching / CDN." |
| "Code already uses optimal patterns. Consider infrastructure scaling." |
Exit format: Always provide diagnostic report with performance_map — the profiling data is valuable regardless of verdict.
Phase 4: Research — DELEGATE to ln-812
Do NOT research benchmarks or generate hypotheses yourself. INVOKE the researcher skill.
Invoke: Skill(skill: "ln-812-optimization-researcher")
Context available: performance_map from Phase 2 (in shared conversation).
On cycle 2+: provide in conversation context before invoking:
"Previously applied hypotheses (exclude from research): {list with descriptions}. Research NEW bottlenecks only."
This is natural Skill() conversation, not structural coupling — ln-812 remains standalone-invocable.
ln-812 will: competitive analysis → target metrics → bottleneck-specific research → local codebase check → generate hypotheses H1..H7.
Receive: industry_benchmark, target_metrics, hypotheses (H1..H7 with conflicts_with), local_codebase_findings, research_sources.
If ln-812 returns 0 hypotheses → STOP: no further optimization found. Proceed to Phase 9.
Phase 5: Set Target Metric
Cycle 1 only. Target is set once and persists across all cycles. What changes between cycles is the baseline (each cycle's final becomes next cycle's baseline).
Multi-Metric Target Resolution
FOR each metric in target_metrics from ln-812:
IF user provided target for this metric → use
ELIF ln-812 target_metrics[metric].confidence in [HIGH, MEDIUM] → use
ELSE → baseline × 0.5 (50% default)
Primary metric (for stop condition) = metric type from
(what user complained about).
Backwards-Compatible Single Target
| Situation | Action |
|---|
| User provided | Use as primary target |
| User did not provide; ln-812 found target_metrics | Use target_metrics.{primary_metric_type}
|
| Neither available | Set to 50% improvement as default target |
Phase 6: Write Optimization Context
Serialize diagnostic results from Phases 2-5 into structured context.
- Normal mode: write
.optimization/{slug}/context.md
in project root — input for ln-813/ln-814
- Plan mode: write same structure to plan file (file writes restricted) → call ExitPlanMode
Context file is
overwritten each cycle — it is a transient handoff to workers. Cycle history lives in
and experiment log (
).
Context file structure:
| Section | Source | Content |
|---|
| Problem Statement | Phase 1 | target, observed_metric, target_metric |
| Performance Map | ln-811 | Full performance_map (real measurements: baseline, per-step metrics, bottleneck classification) |
| Suspicion Stack | ln-811 | Confirmed + dismissed suspicions with evidence |
| Industry Benchmark | ln-812 | expected_range, source, recommended_target |
| Target Metrics | ln-812 | Structured per-metric targets with confidence |
| Hypotheses | ln-812 | Table: ID, description, bottleneck_addressed, expected_impact, complexity, risk, files_to_modify, conflicts_with |
| Dependencies/Conflicts | ln-812 | H2 requires H1; H3 conflicts with H1 (used by ln-814 for contested vs uncontested triage) |
| Local Codebase Findings | ln-812 | Batch APIs, cache infra, connection pools found in code |
| Test Command | ln-811 | Command used for profiling (reused for post-optimization measurement) |
| E2E Test | ln-811 | E2E safety test command + source (functional gate for executor) |
| Instrumented Files | ln-811 | List of files with active instrumentation (ln-814 cleans up after strike) |
| Previous Cycles | state.json | Per-cycle summary: cycle number, bottleneck, improvement %, hypotheses applied |
Worker Delegation Strategy
| Worker | Tool | Rationale |
|---|
| ln-811 | Skill() | Needs problem_statement from conversation. First heavy worker — context clean |
| ln-812 | Skill() | Needs performance_map from ln-811 conversation output. Context still manageable (~11K) |
| ln-813 | Agent() | Reads ALL input from context.md on disk. Zero conversation dependency. Isolated context prevents degradation |
| ln-814 | Agent() | Reads ALL input from context.md on disk. Zero conversation dependency. Heaviest worker benefits most from fresh context |
Phase 6 (Write Context) is the natural handoff boundary: shared context → isolated context.
Phase 7: Validate Plan — DELEGATE to ln-813 (Isolated Context)
Do NOT validate the plan yourself. INVOKE the plan validator via Agent for context isolation.
Invoke:
Agent(description: "Validate optimization plan",
prompt: "Execute worker.
Step 1: Invoke worker:
Skill(skill: \"ln-813-optimization-plan-validator\")
CONTEXT:
{\"slug\": \"{slug}\", \"context_file\": \".optimization/{slug}/context.md\"}",
subagent_type: "general-purpose")
Update
: set phase
status to
before launch.
ln-813 will: agent review (Codex + Gemini) + own feasibility check → GO/GO_WITH_CONCERNS/NO_GO.
Receive (from Agent return): verdict (GO/GO_WITH_CONCERNS/NO_GO), corrections_applied count, hypotheses_removed list, concerns.
After Agent returns — re-read
.optimization/{slug}/context.md
for applied corrections. Update
: set phase
to
or
.
| Verdict | Action |
|---|
| GO | Proceed to Phase 8 |
| GO_WITH_CONCERNS | Proceed with warnings logged |
| NO_GO | Present issues to user. Ask: proceed (WAIVE) or stop |
Phase 8: Execute — DELEGATE to ln-814 (Isolated Context)
In Plan Mode: SKIP this phase. Context file from Phase 6 IS the plan. Call ExitPlanMode.
Do NOT implement optimizations yourself. INVOKE the executor via Agent for context isolation.
Invoke:
Agent(description: "Execute optimization strike",
prompt: "Execute worker.
Step 1: Invoke worker:
Skill(skill: \"ln-814-optimization-executor\")
CONTEXT:
{\"slug\": \"{slug}\", \"context_file\": \".optimization/{slug}/context.md\"}",
subagent_type: "general-purpose")
Update
: set phase
status to
before launch.
ln-814 will: read context → create worktree → strike-first (apply all) → test → measure → bisect if needed → report.
Receive (from Agent return): branch, baseline, final, total_improvement_pct, target_met, strike_result, hypotheses_applied, hypotheses_removed, files_modified.
After Agent returns — read
.optimization/{slug}/ln-814-log.tsv
for experiment details. Update
: set phase
to
or
.
Cycle Boundary (after Phase 8)
Step 1: Collect Cycle Results
Verify Agent workers completed successfully:
| Worker | Check | On failure |
|---|
| ln-813 | Agent returned text containing verdict keyword (GO/NO_GO/GO_WITH_CONCERNS) | Set phase to , report to user |
| ln-814 | Agent returned text with baseline + final metrics | Set phase to , report partial results |
Extract from ln-814:
| Field | Description |
|---|
| branch | Worktree branch with optimizations |
| baseline | Original measurement |
| final | Measurement after optimizations |
| total_improvement_pct | Overall improvement |
| target_met | Whether target metric was reached |
| strike_result | / / |
| hypotheses_applied | IDs applied in strike |
| hypotheses_removed | IDs removed during bisect (with reasons) |
| contested_results | Per-group: alternatives tested, winner, measurement |
| files_modified | All changed files |
Step 2: Record Cycle Summary
json
{
"cycle": 1,
"status": "done",
"baseline": { "wall_time_ms": 6300 },
"final": { "wall_time_ms": 3800 },
"improvement_pct": 39.7,
"target_met": false,
"bottleneck": "I/O-Network: 13 sequential HTTP calls",
"hypotheses_applied": ["H1", "H2"],
"branch": "optimize/ln-814-align-endpoint-c1-20260315"
}
Step 3: Evaluate Stop Conditions
| Check | Result | Action |
|---|
| SUCCESS | Break → Phase 9 with "TARGET MET on cycle {N}" |
improvement_pct < plateau_threshold
| PLATEAU | Break → Phase 9 with "PLATEAU on cycle {N}: {improvement}% < {threshold}%" |
| BUDGET | Break → Phase 9 with "MAX CYCLES reached ({N}/{max})" |
| None of the above | CONTINUE | Proceed to next cycle (merge → compact → Phases 2-8) |
Phase 9: Aggregate Results
Collect results across ALL completed cycles from
and
.
Compute:
- Total improvement:
(original_baseline - final_of_last_cycle) / original_baseline × 100
- Per-cycle gains: array of improvement percentages
- Cumulative hypotheses applied/removed across all cycles
Phase 10: Final Report
Cycle Summary Table
| Cycle | Bottleneck | Baseline | Final | Improvement | Hypotheses | Branch |
|-------|------------|----------|-------|-------------|------------|--------|
| 1 | I/O-Network (13 HTTP) | 6300ms | 3800ms | 39.7% | H1,H2 | opt/...-c1 |
| 2 | CPU (O(n^2) alignment) | 3800ms | 1200ms | 68.4% | H1,H3 | opt/...-c2 |
| 3 | I/O-File (temp files) | 1200ms | 480ms | 60.0% | H1 | opt/...-c3 |
| **Total** | | **6300ms** | **480ms** | **92.4%** | | |
Target: 500ms → Achieved: 480ms ✓ TARGET MET (cycle 3)
Per-Cycle Detail
For each cycle, include:
| Section | Content |
|---|
| Problem | Original target + observed metric |
| Diagnosis | Bottleneck type + detail from profiler |
| Target | User-provided or research-derived (same across cycles) |
| Result | Final metric + improvement % + strike result |
| Optimizations Applied | Hypotheses applied: id, description |
| Optimizations Removed | Hypotheses removed during bisect: id, reason |
| Contested Alternatives | Per-group: alternatives tested, winner, measurement delta |
If Target Not Met
Include gap analysis from last cycle's ln-814:
- What was achieved (cumulative improvement %)
- Remaining bottlenecks from latest time map
- Infrastructure/architecture recommendations beyond code changes
- Stop reason: plateau / max_cycles / no hypotheses
Branches
List all cycle branches for user review. Final branch contains all optimizations.
Phase 11: Meta-Analysis
MANDATORY READ: Load
shared/references/meta_analysis_protocol.md
Error Handling
Per-Phase Errors
| Phase | Error | Recovery |
|---|
| 2 (Profile) | Cannot trace target | Report "cannot identify code path for {target}" |
| 3 (Gate) | Wrong tool exit (cycle 1) | Report diagnosis + recommendations, do NOT proceed |
| 3 (Gate) | Wrong tool exit (cycle 2+, ALREADY_OPTIMIZED) | SUCCESS — break to Phase 9 |
| 4 (Research) | No solutions found | Report bottleneck but "no known optimization pattern for {type}" |
| 4 (Research) | 0 hypotheses (cycle 2+) | STOP — no further optimization. Proceed to Phase 9 |
| 7 (Validate) | NO_GO verdict | Present issues to user, offer WAIVE or stop |
| 8 (Execute) | All hypotheses fail | Report profiling + research as diagnostic value |
| 8 (Execute) | Worker timeout | Report partial results |
| Cycle boundary | Merge conflict | BLOCK: report partial results, list completed cycles |
Fatal Errors
| Error | Action |
|---|
| Target not resolvable | Block: "cannot find {target} in codebase" |
| No test infrastructure | Block: "tests required for safe optimization" |
| Dirty git state | Block: "commit or stash changes first" |
Plan Mode Support: Phased Gate Pattern
Alternates between plan mode (approval gates) and execution.
GATE 1 — Plan profiling (cycle 1 only)
Plan Mode: Phase 0-1 (preflight, parse input)
→ Present: what will be profiled, which test, which metrics, max_cycles
→ ExitPlanMode (user approves profiling)
EXECUTE 1 — Run profiling (cycle 1)
Phase 2: Skill("ln-811") — runtime profiling (needs Bash)
Phase 3: Wrong Tool Gate (evaluate real measurements)
→ If wrong tool → EXIT with diagnostic
GATE 2 — Plan research & execution (cycle 1 only)
EnterPlanMode: present performance_map to user
Phase 4: Skill("ln-812") — research (read-only, runs in plan mode)
Phase 5: Set target metric (multi-metric)
Phase 6: Write context file
→ Present: hypotheses, target metrics, execution plan, max_cycles
→ ExitPlanMode (user approves strike + cycle loop)
EXECUTE 2+ — Validate + Execute + Loop
Phase 7: Agent("ln-813") — plan review in ISOLATED context (GO/NO_GO)
Phase 8: Agent("ln-814") — strike execution in ISOLATED context
[Cycle boundary → merge → /compact]
Phase 2-8 (cycle 2, auto-continue)
[Cycle boundary → merge → /compact]
Phase 2-8 (cycle 3, auto-continue)
Phase 9-11: Aggregate, report, meta-analysis
Cycles 2+ auto-continue — user already approved optimization goal. Stop conditions protect against waste.
References
../ln-811-performance-profiler/SKILL.md
(profiler worker)
../ln-812-optimization-researcher/SKILL.md
(researcher worker)
../ln-813-optimization-plan-validator/SKILL.md
(plan validator worker)
../ln-814-optimization-executor/SKILL.md
(executor worker)
shared/references/ci_tool_detection.md
(tool detection)
shared/references/meta_analysis_protocol.md
(meta-analysis)
Definition of Done
Version: 3.0.0
Last Updated: 2026-03-15