[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C0T3YCKZ0RQS8XGCP7PNF7":3,"skill-same:01M6C0T3YCKZ0RQS8XGCP7PNF7":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":14,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6C0T3YCKZ0RQS8XGCP7PNF7","performance-optimization",null,"Profile and optimize AS v2 performance (Django backend + React frontend). Use when an endpoint is slow, a request fires N+1 queries, the bundle grows, or Core Web Vitals miss target.","matheusnorjosa\u002Faprender_sistema","matheusnorjosa","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F117673804?v=4","01M6C0S19FG12BDFBTRWY9TTEQ","Matheus Norjosa","01M6C0S1DF0YB17TKGEYC70GSP",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fperformance-optimization\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"performance","Optimization","performance optimization","when","frontend","request","vitals","react frontend","web vitals","bundle","as","optimize","queries","backend","use","profile","django","core web vitals","endpoint","core","react","web","2026-11-10 10:12:30",false,"---\nname: performance-optimization\ndescription: Profile and optimize AS v2 performance (Django backend + React frontend). Use when an endpoint is slow, a request fires N+1 queries, the bundle grows, or Core Web Vitals miss target.\n---\n\n# Performance Optimization — Aprender Sistema\n\n**Measure before optimizing.** Profile first, identify the actual bottleneck, fix it, measure again. Don't scatter `React.memo` or `select_related` on a hunch.\n\nAS v2 has active perf epics: **#777 (grid phases)**, **#866 (ACID)**. PR #1160 cut monthly grid p95 by -69% (phase 2).\n\n## Workflow\n\n```\n1. MEASURE  → Establish baseline (numbers, not feelings)\n2. IDENTIFY → Find the actual bottleneck (profile, don't guess)\n3. FIX      → Address that specific bottleneck\n4. VERIFY   → Measure again, confirm improvement vs baseline\n5. GUARD    → Add a test\u002Fmonitor to prevent regression\n```\n\nDone when: before\u002Fafter numbers are recorded, the targets below are met, and a guard exists.\n\n## Where to look\n\n- Backend (query profiling, N+1, indexes, aggregations, Celery, Redis cache): [reference\u002Fbackend.md](reference\u002Fbackend.md)\n- Frontend (Lighthouse, bundle analysis, re-renders, Antd, code splitting, images, caching): [reference\u002Ffrontend.md](reference\u002Ffrontend.md)\n\n## Targets (CI enforced)\n\n### Backend (Django\u002FDRF)\n\n| Metric | Target | Where |\n|--------|--------|-------|\n| API p95 latency | ≤ 200ms | gunicorn logs |\n| DB queries per request | ≤ 10 | `django-debug-toolbar` (dev) |\n| Cache hit rate (Redis) | ≥ 70% | availability queries |\n| Monthly grid p95 | ≤ baseline −69% | after #777 phase 2 |\n\n### Frontend (React\u002FVite), from `v2\u002Ffrontend\u002Flighthouserc.cjs`\n\n| Metric | Target | Severity |\n|--------|--------|----------|\n| Lighthouse Performance | ≥ 70 | error (fails CI) |\n| Lighthouse Accessibility | ≥ 90 | error (fails CI) |\n| LCP | ≤ 2.5s | error |\n| CLS | ≤ 0.1 | error |\n| Total Blocking Time | ≤ 300ms | error |\n| Initial JS bundle (gzipped) | ≤ 250KB | Antd is the main weight |\n| `manualChunks` in vite.config | none | breaks dep ordering (prod crash) |\n\nCurrent Lighthouse: Desktop 95, Mobile 79 (mobile bottleneck = antd bundle).\n\n## Common Rationalizations\n\n| Rationalization | Reality |\n|---|---|\n| \"It's fast on my machine\" | Profile on prod-like conditions (docker + realistic data volume) |\n| \"Users won't notice\" | RUM from real users. 100ms matters. |\n| \"Framework handles perf\" | Django\u002FReact prevent some issues, not N+1 or bundle bloat |\n| \"We'll optimize later\" | Perf debt compounds. Fix N+1 and bundle issues now. |\n| \"The DB is fast enough\" | Check query count and duration per request |\n\n## Verification\n\nAfter a perf change:\n\n- [ ] Before\u002Fafter measurements with specific numbers\n- [ ] Bottleneck identified (not guessed)\n- [ ] Core Web Vitals in target range\n- [ ] Bundle size change reviewed\n- [ ] No new N+1 queries\n- [ ] Lighthouse CI passes\n- [ ] Existing tests still pass\n\n## References\n\n- Epic #777: Monthly grid optimization · Epic #866: ACID\u002Fdeadlock handling\n- PR #1160: Phase 2 grid p95 -69%\n- Memory: Lighthouse scores · `feedback_no_manual_chunks.md` · `feedback_react18_fetchpriority.md`\n","# Performance Optimization — Aprender Sistema\n\n**Measure before optimizing.** Profile first, identify the actual bottleneck, fix it, measure again. Don't scatter `React.memo` or `select_related` on a hunch.\n\nAS v2 has active perf epics: **#777 (grid phases)**, **#866 (ACID)**. PR #1160 cut monthly grid p95 by -69% (phase 2).\n\n## Workflow\n\n```\n1. MEASURE  → Establish baseline (numbers, not feelings)\n2. IDENTIFY → Find the actual bottleneck (profile, don't guess)\n3. FIX      → Address that specific bottleneck\n4. VERIFY   → Measure again, confirm improvement vs baseline\n5. GUARD    → Add a test\u002Fmonitor to prevent regression\n```\n\nDone when: before\u002Fafter numbers are recorded, the targets below are met, and a guard exists.\n\n## Where to look\n\n- Backend (query profiling, N+1, indexes, aggregations, Celery, Redis cache): [reference\u002Fbackend.md](reference\u002Fbackend.md)\n- Frontend (Lighthouse, bundle analysis, re-renders, Antd, code splitting, images, caching): [reference\u002Ffrontend.md](reference\u002Ffrontend.md)\n\n## Targets (CI enforced)\n\n### Backend (Django\u002FDRF)\n\n| Metric | Target | Where |\n|--------|--------|-------|\n| API p95 latency | ≤ 200ms | gunicorn logs |\n| DB queries per request | ≤ 10 | `django-debug-toolbar` (dev) |\n| Cache hit rate (Redis) | ≥ 70% | availability queries |\n| Monthly grid p95 | ≤ baseline −69% | after #777 phase 2 |\n\n### Frontend (React\u002FVite), from `v2\u002Ffrontend\u002Flighthouserc.cjs`\n\n| Metric | Target | Severity |\n|--------|--------|----------|\n| Lighthouse Performance | ≥ 70 | error (fails CI) |\n| Lighthouse Accessibility | ≥ 90 | error (fails CI) |\n| LCP | ≤ 2.5s | error |\n| CLS | ≤ 0.1 | error |\n| Total Blocking Time | ≤ 300ms | error |\n| Initial JS bundle (gzipped) | ≤ 250KB | Antd is the main weight |\n| `manualChunks` in vite.config | none | breaks dep ordering (prod crash) |\n\nCurrent Lighthouse: Desktop 95, Mobile 79 (mobile bottleneck = antd bundle).\n\n## Common Rationalizations\n\n| Rationalization | Reality |\n|---|---|\n| \"It's fast on my machine\" | Profile on prod-like conditions (docker + realistic data volume) |\n| \"Users won't notice\" | RUM from real users. 100ms matters. |\n| \"Framework handles perf\" | Django\u002FReact prevent some issues, not N+1 or bundle bloat |\n| \"We'll optimize later\" | Perf debt compounds. Fix N+1 and bundle issues now. |\n| \"The DB is fast enough\" | Check query count and duration per request |\n\n## Verification\n\nAfter a perf change:\n\n- [ ] Before\u002Fafter measurements with specific numbers\n- [ ] Bottleneck identified (not guessed)\n- [ ] Core Web Vitals in target range\n- [ ] Bundle size change reviewed\n- [ ] No new N+1 queries\n- [ ] Lighthouse CI passes\n- [ ] Existing tests still pass\n\n## References\n\n- Epic #777: Monthly grid optimization · Epic #866: ACID\u002Fdeadlock handling\n- PR #1160: Phase 2 grid p95 -69%\n- Memory: Lighthouse scores · `feedback_no_manual_chunks.md` · `feedback_react18_fetchpriority.md`\n",{"name":5,"description":7},"main","9e3a882d83e0853bdc570ae9d89c02d2a53bed82",".agents\u002Fskills\u002Fperformance-optimization","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa","Dev Python | IA | Automation | HTML | CSS | Data | Process | Projects","2026-11-12 02:52:37",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add matheusnorjosa\u002Faprender_sistema --skill performance-optimization",{"tool":67,"command":68},"bunx","bunx skills add matheusnorjosa\u002Faprender_sistema --skill performance-optimization",{"tool":70,"command":71},"pnpm","pnpm dlx skills add matheusnorjosa\u002Faprender_sistema --skill performance-optimization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fperformance-optimization\u002FSKILL.md",true,[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"reference\u002Fbackend.md","REFERENCE","参考文档",3248,"https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fperformance-optimization\u002Freference\u002Fbackend.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"reference\u002Ffrontend.md",2801,"https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fperformance-optimization\u002Freference\u002Ffrontend.md",[86,120,143,165,177,209],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":100,"publishedAt":49},"01M6C0WHSP7S2QMJGGMQRXJ6PD","writing-standards","Apply AS v2 technical-writing standards (clarity, brevity, active voice, Python\u002FDjango conventions). Use when writing a README, a docstring (PEP 257), a commit message, a PR description, an error message, or any technical doc.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-standards\u002FSKILL.md",[92,95],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[101,102,103,104,105,106,107,108,109,110,111,43,112,113,114,115,37,116,117,118,119,30],"writing","writing standards","standards","python","commit","pr","pr description","commit message","doc","voice","clarity","technical","README","message","active","error","technical-writing","brevity","docstring",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":49},"01M6C0WG2SBP9PJG1YQFGGVJAR","verification-gate","Verify before claiming success. Use when about to say something works\u002Fis done, after implementing a feature, after a bugfix, or before pushing — run the proof command and confirm output first.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002FSKILL.md",[],[127,128,129,130,131,132,133,41,134,135,136,137,138,139,140,141,142,30],"verification","verification gate","gate","run","first","verify","command","verify before claiming","say","done","feature","proof","bugfix","output","about","implementing",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":152,"publishedAt":49},"01M6C0WE010G12KH45YZW6M7K5","test-driven-development","Write the failing test before the implementation in AS v2 (pytest + Django\u002FDRF). Use when implementing a feature or fixing a bug, before any production code is written.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[153,154,155,156,157,158,43,159,41,160,161,162,137,37,163,142,30,164],"test","test driven development","development","driven","code","Production","write","bug","implementation","pytest","drf","failing",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":49},"01M6C0WC6Y81XRVBJQSTKA96XQ","subagent-development","Orquestra subagents no AS v2 — decompõe a tarefa em domínios independentes, paraleliza e revisa em 2 estágios. Use ao delegar exploração, implementação ou validação cross-arquivo para acelerar o trabalho e poupar o contexto principal.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsubagent-development\u002FSKILL.md",[],[155,172,173,174,175,41,176,37],"subagent","subagent development","para","subagents","ao",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":49},"01M6C0W9W8D6JJWXW28Q7ZHAC9","security-scan","Automated security scanning for AS v2. Use before commits or when reviewing changes for vulnerabilities. Runs dependency audit (pip-audit, npm audit), secret detection (grep patterns), and code pattern scanning (SQL injection, XSS, eval, pickle, hardcoded secrets). Integrates with project hooks system.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsecurity-scan\u002FSKILL.md",[],[184,185,186,187,188,157,189,190,191,192,193,194,195,196,197,198,199,200,41,201,202,203,37,204,205,206,207,208,30],"security","security scan","scan","vulnerabilities","sql","npm","audit","dependency audit","detection","injection","xss","secrets","pip-audit","commits","system","grep","eval","hooks","security scanning","project","with","true","pip","for","changes",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":218,"publishedAt":49},"01M6C0W7RE3G3C2852YXQKR5J9","resume-handoff","Resume work from a saved handoff document, validating its state against the current codebase before continuing. Use when resuming work from a saved handoff after a context clear or in a new session (path, session name, or GitHub issue).","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fresume-handoff\u002FSKILL.md",[215],{"categoryNo":216,"categoryName":217,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000038","人力资源",[219,220,221,222,223,224,225,226,227,41,228,229,230,231,232,233,234,235,30,236],"handoff","resume handoff","resume","github","state","new session","work","context","session","github issue","issue","document","clear","name","saved","codebase","resuming","new"]