1 line
2.1 KiB
JSON
1 line
2.1 KiB
JSON
{"content": "---\nname: perf-budget-loop\ndescription: Profiles and optimizes the app pass after pass until it consistently meets a defined performance budget.\ncategory: engineering\ninterval: 20m\nstop-condition: The target metric meets the budget across repeated runs with no functional regressions.\ncomponents: [agent:performance-testing/performance-engineer, command:performance/performance-audit, command:performance/optimize-bundle-size]\ntags: [performance, optimization, profiling, loop]\n---\n\n# Performance Budget Loop\n\n> **Loop Engineering** — hold the agent to a concrete, measurable budget and let it optimize until the number is real and stable.\n\n## 🎯 Goal\nDrive a target metric (page load, bundle size, p95 latency, etc.) under its budget by profiling, fixing the biggest bottleneck each pass, and re-measuring — without breaking functionality.\n\n## ⏱️ Schedule\nSuggested interval: `20m`.\n\n## ▶️ Run it\n```\n/loop 20m \"Profile the app against the performance budget. Find the single biggest bottleneck, fix it, and re-measure. Verify no tests break. Continue until the metric meets the budget across three consecutive runs.\"\n```\n\n## 🔁 Iteration steps\n1. **Perceive** — run `/performance-audit` and capture the current metric.\n2. **Reason** — the `performance-engineer` agent identifies the top bottleneck.\n3. **Plan** — choose one optimization (code-split, cache, query, bundle).\n4. **Act** — apply it (e.g. `/optimize-bundle-size`).\n5. **Observe** — re-measure; require the budget to hold across repeated runs before stopping.\n\n## 🛑 Stopping condition\nMetric ≤ budget across consecutive runs, with no functional regression.\n\n## 🧩 Referenced components\n- `agent:performance-testing/performance-engineer` — diagnoses bottlenecks.\n- `command:performance/performance-audit` — measures each pass.\n- `command:performance/optimize-bundle-size` — one of the optimization levers.\n\n## 💡 Example\nTargeting a 200 KB JS budget, the loop lazy-loads a chart library, trims a moment.js import, and de-dupes a dependency until the bundle stabilizes under budget.\n"} |