Skip to content
Back to skills

Ln 810 Performance Optimizer

ASecurity

Multi-cycle diagnostic pipeline: profile → research → optimize → repeat with full-stack bottleneck analysis

  • 17 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 10, 2026
code-qualitygobashdockergitapiperformance

Works with

  • api

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add tensology/decisionsai --skill ln-810-performance-optimizer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ln 810 Performance Optimizer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ln 810 Performance Optimizer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tensology-ln-810-performance-optimizer/badge)](https://www.skillsdirectory.com/skills/tensology-ln-810-performance-optimizer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ln-810-performance-optimizer
description: "Multi-cycle diagnostic pipeline: profile → research → optimize → repeat with full-stack bottleneck analysis"
license: MIT
---

> **Paths:** File paths (`shared/`, `references/`, `../ln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.

# 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** | `target` (endpoint/function/pipeline) + `observed_metric` (e.g., "6300ms response time") + optional `target_metric` + optional `max_cycles` (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 `max_cycles` 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 | `git submodule status` — non-empty output | List of service paths |
| Monorepo | `ls` for `services/`, `packages/`, `apps/` directories with independent package files | List of service paths |
| Docker Compose | `docker-compose.yml` / `compose.yml` — map service names to build contexts | List of service paths + ports |
| Workspace config | `pnpm-workspace.yaml`, Cargo workspace, Go workspace | List of module paths |

**Output:** `service_topology` — map of service names to code paths. Pass to ln-811 for cross-service tracing.

If single-service (no signals): `service_topology = null` — 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:** `pending` → `running` → `done` | `failed`

Update state BEFORE and AFTER each phase. For Agent-delegated phases (7, 8): set `running` before launch, `done`/`failed` 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. `current_cycle` + 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 |
|-----------|--------|
| `target_met` | STOP — target reached |
| improvement < `plateau_threshold` % | STOP — plateau detected |
| `cycle == max_cycles` | 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`, `/api/v1/align`, `alignment pipeline` |
| 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 `target_metric` not provided by user, defer to Phase 5 (after research establishes industry benchmark).

### Generate slug

Derive `{slug}` from target for per-task isolation: sanitize to `[a-z0-9_-]`, max 50 chars.

| Target | Slug |
|--------|------|
| `src/api/alignment.py::align_endpoint` | `align-endpoint` |
| `test_idml_structure_preserved` | `test-idml-structure-preserved` |
| `/api/v1/translate` | `api-v1-translate` |

All artifacts go to `.optimization/{slug}/`: `context.md`, `state.json`, `ln-814-log.tsv`, `profile_test.sh`.

---

## 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** | `wrong_tool_indicators` 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 `infrastructure_bound` OR `already_optimized` OR `within_industry_norm` | See below |
| **WAIVED** | User explicitly overrides BLOCK ("try anyway") | Continue despite indicators — log user override |

### BLOCK on Cycle 2+

On cycle 2+, `already_optimized` or `within_industry_norm` 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." |
| `within_industry_norm` | "Current performance ({X}ms) is within industry norm ({Y}ms). No optimization needed." |
| `infrastructure_bound` | "Bottleneck is infrastructure ({detail}). Recommend: scaling / caching / CDN." |
| `already_optimized` | "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 `observed_metric` (what user complained about).

### Backwards-Compatible Single Target

| Situation | Action |
|-----------|--------|
| User provided `target_metric` | 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 `state.json` and experiment log (`ln-814-log.tsv`).

**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 `state.json`: set phase `7_validate` status to `running` 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 `state.json`: set phase `7_validate` to `done` or `failed`.

| 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 `state.json`: set phase `8_execute` status to `running` 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 `state.json`: set phase `8_execute` to `done` or `failed`.

---

## 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 `7_validate` to `failed`, report to user |
| ln-814 | Agent returned text with baseline + final metrics | Set phase `8_execute` to `failed`, 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 | `clean` / `bisected` / `failed` |
| 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

Save to `state.json.cycles[]`:

```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 |
|-------|--------|--------|
| `target_met == true` | 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}%" |
| `cycle == max_cycles` | 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 `state.json.cycles[]` and `ln-814-log.tsv`.

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`

Skill type: `optimization-coordinator`.

---

## 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

- [ ] Input parsed into structured problem statement (target, metric, max_cycles)
- [ ] Multi-cycle loop executed (up to max_cycles or until stop condition)
- [ ] Each cycle: profiled → gated → researched → validated → executed
- [ ] Target metrics established from ln-812 research (multi-metric)
- [ ] Context compacted between cycles (`/compact`)
- [ ] Previous cycle branches merged before re-profiling
- [ ] Cycle summary table in final report (per-cycle + cumulative)
- [ ] All cycle branches listed for user review
- [ ] Stop condition documented (target_met / plateau / max_cycles / no hypotheses)
- [ ] Meta-analysis completed with cycle metrics

---

**Version:** 3.0.0
**Last Updated:** 2026-03-15

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…