tribunal-kit 9.0.0 → 9.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/ARCHITECTURE.md +2 -2
- package/.agent/agents/backend-specialist.md +1 -1
- package/.agent/agents/code-archaeologist.md +1 -1
- package/.agent/agents/database-architect.md +1 -1
- package/.agent/agents/debugger.md +1 -1
- package/.agent/agents/devops-engineer.md +1 -1
- package/.agent/agents/documentation-writer.md +1 -1
- package/.agent/agents/explorer-agent.md +1 -1
- package/.agent/agents/game-developer.md +1 -1
- package/.agent/agents/minimalist-reviewer.md +1 -1
- package/.agent/agents/mobile-developer.md +1 -1
- package/.agent/agents/orchestrator.md +1 -1
- package/.agent/agents/penetration-tester.md +1 -1
- package/.agent/agents/performance-optimizer.md +1 -1
- package/.agent/agents/product-manager.md +1 -1
- package/.agent/agents/product-owner.md +1 -1
- package/.agent/agents/project-planner.md +1 -1
- package/.agent/agents/qa-automation-engineer.md +1 -1
- package/.agent/agents/seo-specialist.md +1 -1
- package/.agent/agents/test-engineer.md +1 -1
- package/.agent/config/slash-commands.json +13 -1
- package/.agent/config/system-prompt.md +21 -7
- package/.agent/routing_index.json +1546 -268
- package/.agent/scripts/browser_audit.js +94 -0
- package/.agent/scripts/context_compiler.js +9 -0
- package/.agent/scripts/prompt_compiler.js +105 -13
- package/.agent/skill_topic_map.json +2 -1
- package/.agent/skills/12-principles-of-animation/SKILL.md +63 -25
- package/.agent/skills/60fps-animation/SKILL.md +68 -24
- package/.agent/skills/accessible-animation/SKILL.md +208 -44
- package/.agent/skills/adapt/SKILL.md +63 -25
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +65 -25
- package/.agent/skills/agent-organizer/SKILL.md +60 -31
- package/.agent/skills/agentic-patterns/SKILL.md +60 -31
- package/.agent/skills/agentic-workflows-2026/SKILL.md +67 -27
- package/.agent/skills/ai-app-hardening/SKILL.md +67 -27
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +59 -31
- package/.agent/skills/animation-on-scroll/SKILL.md +187 -51
- package/.agent/skills/animation-systems/SKILL.md +230 -40
- package/.agent/skills/antfu-conventions/SKILL.md +64 -26
- package/.agent/skills/api-patterns/SKILL.md +61 -31
- package/.agent/skills/api-security-auditor/SKILL.md +59 -31
- package/.agent/skills/app-builder/SKILL.md +61 -31
- package/.agent/skills/appflow-wireframe/SKILL.md +62 -33
- package/.agent/skills/apple-design/SKILL.md +63 -25
- package/.agent/skills/architecture/SKILL.md +61 -31
- package/.agent/skills/audit-and-fix/SKILL.md +63 -25
- package/.agent/skills/authentication-best-practices/SKILL.md +59 -31
- package/.agent/skills/backend-security-expert/SKILL.md +61 -31
- package/.agent/skills/baseline-ui/SKILL.md +63 -25
- package/.agent/skills/bash-linux/SKILL.md +59 -31
- package/.agent/skills/behavioral-modes/SKILL.md +60 -31
- package/.agent/skills/better-colors/SKILL.md +63 -25
- package/.agent/skills/better-typography/SKILL.md +63 -36
- package/.agent/skills/better-ui/SKILL.md +64 -24
- package/.agent/skills/bolder/SKILL.md +63 -25
- package/.agent/skills/brainstorming/SKILL.md +61 -31
- package/.agent/skills/browser-audit/SKILL.md +170 -0
- package/.agent/skills/browser-native-ai/SKILL.md +64 -26
- package/.agent/skills/build-primitive/SKILL.md +63 -25
- package/.agent/skills/building-native-ui/SKILL.md +59 -31
- package/.agent/skills/cicd-pro/SKILL.md +65 -25
- package/.agent/skills/clarify/SKILL.md +63 -25
- package/.agent/skills/clean-code/SKILL.md +59 -31
- package/.agent/skills/cloud-architect/SKILL.md +65 -25
- package/.agent/skills/cobejs/SKILL.md +63 -25
- package/.agent/skills/code-review-checklist/SKILL.md +59 -31
- package/.agent/skills/codebase-design/SKILL.md +65 -25
- package/.agent/skills/colorize/SKILL.md +63 -25
- package/.agent/skills/compact-landing/SKILL.md +63 -25
- package/.agent/skills/company-logos/SKILL.md +63 -25
- package/.agent/skills/config-validator/SKILL.md +59 -31
- package/.agent/skills/containerization-pro/SKILL.md +65 -25
- package/.agent/skills/context-engineering-pro/SKILL.md +67 -27
- package/.agent/skills/create-design-md/SKILL.md +63 -25
- package/.agent/skills/critique/SKILL.md +64 -25
- package/.agent/skills/csharp-developer/SKILL.md +59 -31
- package/.agent/skills/data-validation-schemas/SKILL.md +59 -31
- package/.agent/skills/database-design/SKILL.md +61 -31
- package/.agent/skills/delight/SKILL.md +63 -25
- package/.agent/skills/deployment-procedures/SKILL.md +59 -31
- package/.agent/skills/design-lab/SKILL.md +65 -26
- package/.agent/skills/devops-engineer/SKILL.md +59 -31
- package/.agent/skills/devops-incident-responder/SKILL.md +59 -31
- package/.agent/skills/diagnosing-bugs/SKILL.md +64 -27
- package/.agent/skills/distill/SKILL.md +63 -25
- package/.agent/skills/documentation-templates/SKILL.md +59 -31
- package/.agent/skills/domain-modeling/SKILL.md +64 -26
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +66 -26
- package/.agent/skills/edge-ai-mobile/SKILL.md +66 -26
- package/.agent/skills/edge-computing/SKILL.md +59 -31
- package/.agent/skills/emil-design-eng/SKILL.md +64 -24
- package/.agent/skills/error-resilience/SKILL.md +59 -31
- package/.agent/skills/expo-router-v4/SKILL.md +65 -26
- package/.agent/skills/extract-design-system/SKILL.md +59 -31
- package/.agent/skills/fabel-protocol/SKILL.md +64 -25
- package/.agent/skills/fixing-accessibility/SKILL.md +63 -25
- package/.agent/skills/fixing-metadata/SKILL.md +63 -25
- package/.agent/skills/fixing-motion-performance/SKILL.md +63 -25
- package/.agent/skills/framer-motion-expert/SKILL.md +68 -30
- package/.agent/skills/frontend-design/SKILL.md +63 -25
- package/.agent/skills/frontend-security-expert/SKILL.md +61 -31
- package/.agent/skills/game-design-expert/SKILL.md +59 -31
- package/.agent/skills/game-engineering-expert/SKILL.md +59 -31
- package/.agent/skills/generative-ui-expert/SKILL.md +64 -26
- package/.agent/skills/geo-fundamentals/SKILL.md +59 -31
- package/.agent/skills/git-pro/SKILL.md +65 -25
- package/.agent/skills/github-operations/SKILL.md +59 -31
- package/.agent/skills/gpt-taste/SKILL.md +63 -25
- package/.agent/skills/gsap-core/SKILL.md +65 -25
- package/.agent/skills/gsap-frameworks/SKILL.md +65 -25
- package/.agent/skills/gsap-performance/SKILL.md +65 -25
- package/.agent/skills/gsap-plugins/SKILL.md +65 -25
- package/.agent/skills/gsap-react/SKILL.md +65 -25
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +65 -25
- package/.agent/skills/gsap-timeline/SKILL.md +65 -25
- package/.agent/skills/gsap-utils/SKILL.md +65 -25
- package/.agent/skills/harden/SKILL.md +63 -25
- package/.agent/skills/harness-protocol/SKILL.md +64 -25
- package/.agent/skills/i18n-localization/SKILL.md +59 -31
- package/.agent/skills/impeccable/SKILL.md +63 -25
- package/.agent/skills/improve-codebase-architecture/SKILL.md +64 -26
- package/.agent/skills/improve-ui/SKILL.md +63 -25
- package/.agent/skills/intelligent-routing/SKILL.md +63 -23
- package/.agent/skills/knowledge-graph/SKILL.md +64 -25
- package/.agent/skills/landing-page/SKILL.md +63 -25
- package/.agent/skills/lint-and-validate/SKILL.md +59 -31
- package/.agent/skills/llm-engineering/SKILL.md +59 -31
- package/.agent/skills/local-first/SKILL.md +59 -31
- package/.agent/skills/local-first-architecture/SKILL.md +64 -24
- package/.agent/skills/lottie-animation/SKILL.md +63 -25
- package/.agent/skills/marquee-loop/SKILL.md +63 -25
- package/.agent/skills/masked-reveal/SKILL.md +246 -55
- package/.agent/skills/mcp-builder/SKILL.md +59 -31
- package/.agent/skills/micro-interaction/SKILL.md +255 -61
- package/.agent/skills/mobile-design/SKILL.md +61 -31
- package/.agent/skills/monorepo-management/SKILL.md +59 -31
- package/.agent/skills/morphing-icons/SKILL.md +366 -51
- package/.agent/skills/motion-engineering/SKILL.md +64 -26
- package/.agent/skills/nextjs-react-expert/SKILL.md +61 -31
- package/.agent/skills/nodejs-best-practices/SKILL.md +59 -31
- package/.agent/skills/observability/SKILL.md +59 -31
- package/.agent/skills/opentelemetry-observability/SKILL.md +66 -26
- package/.agent/skills/page-transition-animation/SKILL.md +63 -25
- package/.agent/skills/parallel-agents/SKILL.md +60 -31
- package/.agent/skills/performance-profiling/SKILL.md +60 -31
- package/.agent/skills/plan-writing/SKILL.md +59 -31
- package/.agent/skills/platform-engineer/SKILL.md +59 -31
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +66 -27
- package/.agent/skills/playwright-ai-e2e/SKILL.md +67 -27
- package/.agent/skills/playwright-best-practices/SKILL.md +60 -31
- package/.agent/skills/polish/SKILL.md +63 -25
- package/.agent/skills/powershell-windows/SKILL.md +59 -31
- package/.agent/skills/pricing-page/SKILL.md +63 -25
- package/.agent/skills/product-aware-heuristics/SKILL.md +63 -25
- package/.agent/skills/progressive-blur/SKILL.md +63 -25
- package/.agent/skills/project-idioms/SKILL.md +60 -36
- package/.agent/skills/property-based-testing/SKILL.md +67 -27
- package/.agent/skills/python-patterns/SKILL.md +59 -31
- package/.agent/skills/python-pro/SKILL.md +61 -31
- package/.agent/skills/quieter/SKILL.md +63 -25
- package/.agent/skills/react-doctor/SKILL.md +63 -25
- package/.agent/skills/react-specialist/SKILL.md +61 -31
- package/.agent/skills/readme-builder/SKILL.md +59 -31
- package/.agent/skills/realtime-patterns/SKILL.md +59 -31
- package/.agent/skills/red-team-tactics/SKILL.md +59 -31
- package/.agent/skills/redesign-skill/SKILL.md +63 -25
- package/.agent/skills/review-animations/SKILL.md +64 -26
- package/.agent/skills/rust-pro/SKILL.md +61 -31
- package/.agent/skills/seo-fundamentals/SKILL.md +59 -31
- package/.agent/skills/server-management/SKILL.md +59 -31
- package/.agent/skills/shadcn-ui-expert/SKILL.md +59 -31
- package/.agent/skills/shape/SKILL.md +64 -25
- package/.agent/skills/skill-creator/SKILL.md +66 -24
- package/.agent/skills/soft-skill/SKILL.md +63 -25
- package/.agent/skills/sounds-on-the-web/SKILL.md +63 -25
- package/.agent/skills/sql-pro/SKILL.md +59 -31
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +59 -31
- package/.agent/skills/svg-animation/SKILL.md +369 -51
- package/.agent/skills/swiftui-expert/SKILL.md +59 -31
- package/.agent/skills/swiss-design/SKILL.md +63 -25
- package/.agent/skills/system-design-pro/SKILL.md +65 -25
- package/.agent/skills/systematic-debugging/SKILL.md +60 -31
- package/.agent/skills/tailwind-patterns/SKILL.md +59 -31
- package/.agent/skills/taste-skill/SKILL.md +63 -25
- package/.agent/skills/tdd-workflow/SKILL.md +66 -25
- package/.agent/skills/test-result-analyzer/SKILL.md +59 -32
- package/.agent/skills/testing-patterns/SKILL.md +60 -31
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +64 -26
- package/.agent/skills/thinking-protocol/SKILL.md +58 -34
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +63 -25
- package/.agent/skills/transitions-dev/SKILL.md +63 -25
- package/.agent/skills/trend-researcher/SKILL.md +58 -32
- package/.agent/skills/typescript-advanced/SKILL.md +59 -32
- package/.agent/skills/typeset/SKILL.md +63 -25
- package/.agent/skills/ui-reasoning-engine/SKILL.md +63 -25
- package/.agent/skills/ui-skill-packs/SKILL.md +64 -24
- package/.agent/skills/ui-skills-root/SKILL.md +63 -25
- package/.agent/skills/ui-ux-pro-max/SKILL.md +64 -24
- package/.agent/skills/ui-ux-researcher/SKILL.md +58 -32
- package/.agent/skills/vector-search-pgvector/SKILL.md +66 -26
- package/.agent/skills/verification-before-completion/SKILL.md +69 -16
- package/.agent/skills/vue-expert/SKILL.md +61 -31
- package/.agent/skills/vulnerability-scanner/SKILL.md +61 -31
- package/.agent/skills/web-accessibility-auditor/SKILL.md +59 -31
- package/.agent/skills/web-design-guidelines/SKILL.md +63 -25
- package/.agent/skills/web-quality-audit/SKILL.md +63 -25
- package/.agent/skills/webapp-testing/SKILL.md +60 -31
- package/.agent/skills/webgpu-performance/SKILL.md +64 -26
- package/.agent/skills/whimsy-injector/SKILL.md +58 -32
- package/.agent/skills/workflow-optimizer/SKILL.md +58 -31
- package/.agent/skills/zero-trust-passkeys/SKILL.md +66 -26
- package/.agent/templates/sdd/implementer-prompt.md +10 -1
- package/.agent/templates/sdd/re-review-prompt.md +9 -1
- package/.agent/templates/sdd/task-reviewer-prompt.md +20 -1
- package/.agent/workflows/audit-live.md +52 -0
- package/.agent/workflows/compare-web.md +35 -0
- package/.agent/workflows/context.md +100 -0
- package/.agent/workflows/plan.md +1 -1
- package/.agent/workflows/skill-enhancement-engine.md +88 -0
- package/.agent/workflows/super-prompt.md +101 -21
- package/.agents/skills/12-principles-of-animation/SKILL.md +126 -0
- package/.agents/skills/60fps-animation/SKILL.md +164 -0
- package/.agents/skills/accessible-animation/SKILL.md +266 -0
- package/.agents/skills/adapt/SKILL.md +131 -0
- package/.agents/skills/advanced-rag-pipelines/SKILL.md +169 -0
- package/.agents/skills/agent-organizer/SKILL.md +192 -0
- package/.agents/skills/agentic-patterns/SKILL.md +356 -0
- package/.agents/skills/agentic-workflows-2026/SKILL.md +157 -0
- package/.agents/skills/ai-app-hardening/SKILL.md +125 -0
- package/.agents/skills/ai-prompt-injection-defense/SKILL.md +237 -0
- package/.agents/skills/animation-on-scroll/SKILL.md +267 -0
- package/.agents/skills/animation-systems/SKILL.md +273 -0
- package/.agents/skills/antfu-conventions/SKILL.md +129 -0
- package/.agents/skills/api-patterns/SKILL.md +293 -0
- package/.agents/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agents/skills/api-security-auditor/SKILL.md +230 -0
- package/.agents/skills/app-builder/SKILL.md +610 -0
- package/.agents/skills/app-builder/templates/SKILL.md +108 -0
- package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -0
- package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -0
- package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -0
- package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -0
- package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -0
- package/.agents/skills/appflow-wireframe/SKILL.md +173 -0
- package/.agents/skills/apple-design/SKILL.md +164 -0
- package/.agents/skills/architecture/SKILL.md +263 -0
- package/.agents/skills/audit-and-fix/SKILL.md +136 -0
- package/.agents/skills/authentication-best-practices/SKILL.md +232 -0
- package/.agents/skills/backend-security-expert/SKILL.md +148 -0
- package/.agents/skills/baseline-ui/SKILL.md +130 -0
- package/.agents/skills/bash-linux/SKILL.md +214 -0
- package/.agents/skills/behavioral-modes/SKILL.md +275 -0
- package/.agents/skills/better-colors/SKILL.md +191 -0
- package/.agents/skills/better-typography/SKILL.md +164 -0
- package/.agents/skills/better-ui/SKILL.md +193 -0
- package/.agents/skills/bolder/SKILL.md +124 -0
- package/.agents/skills/brainstorming/SKILL.md +534 -0
- package/.agents/skills/browser-audit/SKILL.md +170 -0
- package/.agents/skills/browser-native-ai/SKILL.md +147 -0
- package/.agents/skills/build-primitive/SKILL.md +125 -0
- package/.agents/skills/building-native-ui/SKILL.md +237 -0
- package/.agents/skills/cicd-pro/SKILL.md +487 -0
- package/.agents/skills/clarify/SKILL.md +130 -0
- package/.agents/skills/clean-code/SKILL.md +442 -0
- package/.agents/skills/cloud-architect/SKILL.md +484 -0
- package/.agents/skills/cobejs/SKILL.md +145 -0
- package/.agents/skills/code-review-checklist/SKILL.md +238 -0
- package/.agents/skills/codebase-design/SKILL.md +151 -0
- package/.agents/skills/colorize/SKILL.md +132 -0
- package/.agents/skills/compact-landing/SKILL.md +125 -0
- package/.agents/skills/company-logos/SKILL.md +129 -0
- package/.agents/skills/config-validator/SKILL.md +200 -0
- package/.agents/skills/containerization-pro/SKILL.md +497 -0
- package/.agents/skills/context-engineering-pro/SKILL.md +136 -0
- package/.agents/skills/create-design-md/SKILL.md +167 -0
- package/.agents/skills/critique/SKILL.md +154 -0
- package/.agents/skills/csharp-developer/SKILL.md +553 -0
- package/.agents/skills/data-validation-schemas/SKILL.md +372 -0
- package/.agents/skills/database-design/SKILL.md +294 -0
- package/.agents/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agents/skills/delight/SKILL.md +121 -0
- package/.agents/skills/deployment-procedures/SKILL.md +207 -0
- package/.agents/skills/design-lab/SKILL.md +117 -0
- package/.agents/skills/devops-engineer/SKILL.md +380 -0
- package/.agents/skills/devops-incident-responder/SKILL.md +178 -0
- package/.agents/skills/diagnosing-bugs/SKILL.md +247 -0
- package/.agents/skills/distill/SKILL.md +120 -0
- package/.agents/skills/documentation-templates/SKILL.md +326 -0
- package/.agents/skills/domain-modeling/SKILL.md +136 -0
- package/.agents/skills/duckdb-analytical-sql/SKILL.md +125 -0
- package/.agents/skills/edge-ai-mobile/SKILL.md +116 -0
- package/.agents/skills/edge-computing/SKILL.md +218 -0
- package/.agents/skills/emil-design-eng/SKILL.md +209 -0
- package/.agents/skills/error-resilience/SKILL.md +478 -0
- package/.agents/skills/expo-router-v4/SKILL.md +146 -0
- package/.agents/skills/extract-design-system/SKILL.md +195 -0
- package/.agents/skills/fabel-protocol/SKILL.md +352 -0
- package/.agents/skills/fixing-accessibility/SKILL.md +162 -0
- package/.agents/skills/fixing-metadata/SKILL.md +158 -0
- package/.agents/skills/fixing-motion-performance/SKILL.md +153 -0
- package/.agents/skills/framer-motion-expert/SKILL.md +312 -0
- package/.agents/skills/frontend-design/SKILL.md +178 -0
- package/.agents/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agents/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agents/skills/frontend-security-expert/SKILL.md +131 -0
- package/.agents/skills/game-design-expert/SKILL.md +167 -0
- package/.agents/skills/game-engineering-expert/SKILL.md +183 -0
- package/.agents/skills/generative-ui-expert/SKILL.md +175 -0
- package/.agents/skills/geo-fundamentals/SKILL.md +183 -0
- package/.agents/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agents/skills/git-pro/SKILL.md +476 -0
- package/.agents/skills/github-operations/SKILL.md +370 -0
- package/.agents/skills/gpt-taste/SKILL.md +125 -0
- package/.agents/skills/gsap-core/SKILL.md +352 -0
- package/.agents/skills/gsap-frameworks/SKILL.md +243 -0
- package/.agents/skills/gsap-performance/SKILL.md +169 -0
- package/.agents/skills/gsap-plugins/SKILL.md +516 -0
- package/.agents/skills/gsap-react/SKILL.md +288 -0
- package/.agents/skills/gsap-scrolltrigger/SKILL.md +387 -0
- package/.agents/skills/gsap-timeline/SKILL.md +197 -0
- package/.agents/skills/gsap-utils/SKILL.md +374 -0
- package/.agents/skills/harden/SKILL.md +130 -0
- package/.agents/skills/harness-protocol/SKILL.md +115 -0
- package/.agents/skills/i18n-localization/SKILL.md +209 -0
- package/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agents/skills/impeccable/SKILL.md +127 -0
- package/.agents/skills/improve-codebase-architecture/SKILL.md +123 -0
- package/.agents/skills/improve-ui/SKILL.md +145 -0
- package/.agents/skills/intelligent-routing/SKILL.md +283 -0
- package/.agents/skills/knowledge-graph/SKILL.md +146 -0
- package/.agents/skills/landing-page/SKILL.md +140 -0
- package/.agents/skills/lint-and-validate/SKILL.md +299 -0
- package/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agents/skills/llm-engineering/SKILL.md +435 -0
- package/.agents/skills/local-first/SKILL.md +213 -0
- package/.agents/skills/local-first-architecture/SKILL.md +137 -0
- package/.agents/skills/lottie-animation/SKILL.md +137 -0
- package/.agents/skills/marquee-loop/SKILL.md +147 -0
- package/.agents/skills/masked-reveal/SKILL.md +305 -0
- package/.agents/skills/mcp-builder/SKILL.md +180 -0
- package/.agents/skills/micro-interaction/SKILL.md +321 -0
- package/.agents/skills/mobile-design/SKILL.md +320 -0
- package/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agents/skills/monorepo-management/SKILL.md +370 -0
- package/.agents/skills/morphing-icons/SKILL.md +423 -0
- package/.agents/skills/motion-engineering/SKILL.md +272 -0
- package/.agents/skills/nextjs-react-expert/SKILL.md +293 -0
- package/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agents/skills/nodejs-best-practices/SKILL.md +617 -0
- package/.agents/skills/observability/SKILL.md +378 -0
- package/.agents/skills/opentelemetry-observability/SKILL.md +125 -0
- package/.agents/skills/page-transition-animation/SKILL.md +161 -0
- package/.agents/skills/parallel-agents/SKILL.md +185 -0
- package/.agents/skills/performance-profiling/SKILL.md +305 -0
- package/.agents/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agents/skills/plan-writing/SKILL.md +202 -0
- package/.agents/skills/platform-engineer/SKILL.md +183 -0
- package/.agents/skills/platform-engineering-opentofu/SKILL.md +133 -0
- package/.agents/skills/playwright-ai-e2e/SKILL.md +126 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +224 -0
- package/.agents/skills/polish/SKILL.md +114 -0
- package/.agents/skills/powershell-windows/SKILL.md +197 -0
- package/.agents/skills/pricing-page/SKILL.md +123 -0
- package/.agents/skills/product-aware-heuristics/SKILL.md +465 -0
- package/.agents/skills/progressive-blur/SKILL.md +155 -0
- package/.agents/skills/project-idioms/SKILL.md +166 -0
- package/.agents/skills/property-based-testing/SKILL.md +124 -0
- package/.agents/skills/python-patterns/SKILL.md +295 -0
- package/.agents/skills/python-pro/SKILL.md +380 -0
- package/.agents/skills/quieter/SKILL.md +124 -0
- package/.agents/skills/react-doctor/SKILL.md +126 -0
- package/.agents/skills/react-specialist/SKILL.md +355 -0
- package/.agents/skills/readme-builder/SKILL.md +345 -0
- package/.agents/skills/realtime-patterns/SKILL.md +358 -0
- package/.agents/skills/red-team-tactics/SKILL.md +266 -0
- package/.agents/skills/redesign-skill/SKILL.md +121 -0
- package/.agents/skills/review-animations/SKILL.md +120 -0
- package/.agents/skills/review-animations/STANDARDS.md +87 -0
- package/.agents/skills/rust-pro/SKILL.md +727 -0
- package/.agents/skills/seo-fundamentals/SKILL.md +214 -0
- package/.agents/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agents/skills/server-management/SKILL.md +253 -0
- package/.agents/skills/shadcn-ui-expert/SKILL.md +271 -0
- package/.agents/skills/shape/SKILL.md +131 -0
- package/.agents/skills/skill-creator/SKILL.md +136 -0
- package/.agents/skills/soft-skill/SKILL.md +128 -0
- package/.agents/skills/sounds-on-the-web/SKILL.md +151 -0
- package/.agents/skills/sql-pro/SKILL.md +699 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +132 -0
- package/.agents/skills/svg-animation/SKILL.md +431 -0
- package/.agents/skills/swiftui-expert/SKILL.md +239 -0
- package/.agents/skills/swiss-design/SKILL.md +119 -0
- package/.agents/skills/system-design-pro/SKILL.md +393 -0
- package/.agents/skills/systematic-debugging/SKILL.md +198 -0
- package/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.agents/skills/tailwind-patterns/SKILL.md +658 -0
- package/.agents/skills/taste-skill/SKILL.md +127 -0
- package/.agents/skills/tdd-workflow/SKILL.md +179 -0
- package/.agents/skills/test-result-analyzer/SKILL.md +345 -0
- package/.agents/skills/testing-patterns/SKILL.md +609 -0
- package/.agents/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +137 -0
- package/.agents/skills/thinking-protocol/SKILL.md +97 -0
- package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +118 -0
- package/.agents/skills/transitions-dev/SKILL.md +165 -0
- package/.agents/skills/trend-researcher/SKILL.md +273 -0
- package/.agents/skills/typescript-advanced/SKILL.md +381 -0
- package/.agents/skills/typeset/SKILL.md +135 -0
- package/.agents/skills/ui-reasoning-engine/SKILL.md +230 -0
- package/.agents/skills/ui-skill-packs/SKILL.md +132 -0
- package/.agents/skills/ui-skills-root/SKILL.md +144 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +185 -0
- package/.agents/skills/ui-ux-researcher/SKILL.md +274 -0
- package/.agents/skills/vector-search-pgvector/SKILL.md +144 -0
- package/.agents/skills/verification-before-completion/SKILL.md +178 -0
- package/.agents/skills/vue-expert/SKILL.md +334 -0
- package/.agents/skills/vulnerability-scanner/SKILL.md +453 -0
- package/.agents/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agents/skills/web-accessibility-auditor/SKILL.md +254 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +124 -0
- package/.agents/skills/web-quality-audit/SKILL.md +122 -0
- package/.agents/skills/webapp-testing/SKILL.md +203 -0
- package/.agents/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agents/skills/webgpu-performance/SKILL.md +163 -0
- package/.agents/skills/whimsy-injector/SKILL.md +380 -0
- package/.agents/skills/workflow-optimizer/SKILL.md +263 -0
- package/.agents/skills/zero-trust-passkeys/SKILL.md +156 -0
- package/.claude-plugin/marketplace.json +1 -4
- package/.hermes-plugin/plugin.yaml +1 -1
- package/.kimi-plugin/plugin.json +6 -6
- package/.opencode/INSTALL.md +2 -2
- package/.opencode/rules.md +258 -0
- package/AGENTS.md +91 -0
- package/CLAUDE.md +442 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +66 -69
- package/bin/adapter-install.js +40 -16
- package/bin/mcp-server.js +426 -0
- package/bin/proxy-server.js +18 -9
- package/bin/spawn-agent.js +9 -3
- package/bin/wrapper.js +19 -4
- package/dist/browser/audit.js +229 -0
- package/dist/browser/case_bridge.js +189 -0
- package/dist/browser/cdp.js +513 -0
- package/dist/browser/compare.js +110 -0
- package/dist/browser/discovery.js +140 -0
- package/dist/browser/idpi.js +142 -0
- package/dist/browser/index.js +89 -0
- package/dist/browser/launcher.js +154 -0
- package/dist/browser/sentinel.js +202 -0
- package/dist/browser/synapse.js +251 -0
- package/dist/browser/trimmer.js +210 -0
- package/dist/cli.js +70 -48
- package/dist/commands/audit-web.js +112 -0
- package/dist/commands/browse.js +56 -0
- package/dist/commands/compare-web.js +61 -0
- package/dist/commands/deconstruct.js +58 -0
- package/dist/commands/heal.js +99 -0
- package/dist/commands/init.js +10 -1
- package/dist/commands/sdd.js +229 -0
- package/dist/commands/uninstall.js +12 -0
- package/dist/tui/banner.js +1 -1
- package/gemini-extension.json +1 -1
- package/hooks/hooks-cursor.json +2 -8
- package/hooks/hooks.json +2 -8
- package/marketplace.json +14 -0
- package/package.json +176 -165
- package/plugin.json +26 -0
- package/scripts/apply-version.js +57 -0
- package/scripts/clean-pycache.js +42 -0
- package/scripts/context_compiler.js +944 -0
- package/scripts/package-cores.js +113 -0
- package/scripts/skill_enhancement_engine.js +473 -0
- package/scripts/sync-skills.js +61 -0
- package/skills/12-principles-of-animation/SKILL.md +126 -0
- package/skills/60fps-animation/SKILL.md +164 -0
- package/skills/accessible-animation/SKILL.md +266 -0
- package/skills/adapt/SKILL.md +131 -0
- package/skills/advanced-rag-pipelines/SKILL.md +169 -0
- package/skills/agent-organizer/SKILL.md +192 -0
- package/skills/agentic-patterns/SKILL.md +356 -0
- package/skills/agentic-workflows-2026/SKILL.md +157 -0
- package/skills/ai-app-hardening/SKILL.md +125 -0
- package/skills/ai-prompt-injection-defense/SKILL.md +237 -0
- package/skills/animation-on-scroll/SKILL.md +267 -0
- package/skills/animation-systems/SKILL.md +273 -0
- package/skills/antfu-conventions/SKILL.md +129 -0
- package/skills/api-patterns/SKILL.md +293 -0
- package/skills/api-patterns/scripts/api_validator.py +211 -0
- package/skills/api-security-auditor/SKILL.md +230 -0
- package/skills/app-builder/SKILL.md +610 -0
- package/skills/app-builder/templates/SKILL.md +108 -0
- package/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -0
- package/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -0
- package/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -0
- package/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -0
- package/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -0
- package/skills/appflow-wireframe/SKILL.md +173 -0
- package/skills/apple-design/SKILL.md +164 -0
- package/skills/architecture/SKILL.md +263 -0
- package/skills/audit-and-fix/SKILL.md +136 -0
- package/skills/authentication-best-practices/SKILL.md +232 -0
- package/skills/backend-security-expert/SKILL.md +148 -0
- package/skills/baseline-ui/SKILL.md +130 -0
- package/skills/bash-linux/SKILL.md +214 -0
- package/skills/behavioral-modes/SKILL.md +275 -0
- package/skills/better-colors/SKILL.md +191 -0
- package/skills/better-typography/SKILL.md +164 -0
- package/skills/better-ui/SKILL.md +193 -0
- package/skills/bolder/SKILL.md +124 -0
- package/skills/brainstorming/SKILL.md +534 -0
- package/skills/browser-audit/SKILL.md +170 -0
- package/skills/browser-native-ai/SKILL.md +147 -0
- package/skills/build-primitive/SKILL.md +125 -0
- package/skills/building-native-ui/SKILL.md +237 -0
- package/skills/cicd-pro/SKILL.md +487 -0
- package/skills/clarify/SKILL.md +130 -0
- package/skills/clean-code/SKILL.md +442 -0
- package/skills/cloud-architect/SKILL.md +484 -0
- package/skills/cobejs/SKILL.md +145 -0
- package/skills/code-review-checklist/SKILL.md +238 -0
- package/skills/codebase-design/SKILL.md +151 -0
- package/skills/colorize/SKILL.md +132 -0
- package/skills/compact-landing/SKILL.md +125 -0
- package/skills/company-logos/SKILL.md +129 -0
- package/skills/config-validator/SKILL.md +200 -0
- package/skills/containerization-pro/SKILL.md +497 -0
- package/skills/context-engineering-pro/SKILL.md +136 -0
- package/skills/create-design-md/SKILL.md +167 -0
- package/skills/critique/SKILL.md +154 -0
- package/skills/csharp-developer/SKILL.md +553 -0
- package/skills/data-validation-schemas/SKILL.md +372 -0
- package/skills/database-design/SKILL.md +294 -0
- package/skills/database-design/scripts/schema_validator.py +172 -0
- package/skills/delight/SKILL.md +121 -0
- package/skills/deployment-procedures/SKILL.md +207 -0
- package/skills/design-lab/SKILL.md +117 -0
- package/skills/devops-engineer/SKILL.md +380 -0
- package/skills/devops-incident-responder/SKILL.md +178 -0
- package/skills/diagnosing-bugs/SKILL.md +247 -0
- package/skills/distill/SKILL.md +120 -0
- package/skills/documentation-templates/SKILL.md +326 -0
- package/skills/domain-modeling/SKILL.md +136 -0
- package/skills/duckdb-analytical-sql/SKILL.md +125 -0
- package/skills/edge-ai-mobile/SKILL.md +116 -0
- package/skills/edge-computing/SKILL.md +218 -0
- package/skills/emil-design-eng/SKILL.md +209 -0
- package/skills/error-resilience/SKILL.md +478 -0
- package/skills/expo-router-v4/SKILL.md +146 -0
- package/skills/extract-design-system/SKILL.md +195 -0
- package/skills/fabel-protocol/SKILL.md +352 -0
- package/skills/fixing-accessibility/SKILL.md +162 -0
- package/skills/fixing-metadata/SKILL.md +158 -0
- package/skills/fixing-motion-performance/SKILL.md +153 -0
- package/skills/framer-motion-expert/SKILL.md +312 -0
- package/skills/frontend-design/SKILL.md +178 -0
- package/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/skills/frontend-security-expert/SKILL.md +131 -0
- package/skills/game-design-expert/SKILL.md +167 -0
- package/skills/game-engineering-expert/SKILL.md +183 -0
- package/skills/generative-ui-expert/SKILL.md +175 -0
- package/skills/geo-fundamentals/SKILL.md +183 -0
- package/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/skills/git-pro/SKILL.md +476 -0
- package/skills/github-operations/SKILL.md +370 -0
- package/skills/gpt-taste/SKILL.md +125 -0
- package/skills/gsap-core/SKILL.md +352 -0
- package/skills/gsap-frameworks/SKILL.md +243 -0
- package/skills/gsap-performance/SKILL.md +169 -0
- package/skills/gsap-plugins/SKILL.md +516 -0
- package/skills/gsap-react/SKILL.md +288 -0
- package/skills/gsap-scrolltrigger/SKILL.md +387 -0
- package/skills/gsap-timeline/SKILL.md +197 -0
- package/skills/gsap-utils/SKILL.md +374 -0
- package/skills/harden/SKILL.md +130 -0
- package/skills/harness-protocol/SKILL.md +115 -0
- package/skills/i18n-localization/SKILL.md +209 -0
- package/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/skills/impeccable/SKILL.md +127 -0
- package/skills/improve-codebase-architecture/SKILL.md +123 -0
- package/skills/improve-ui/SKILL.md +145 -0
- package/skills/intelligent-routing/SKILL.md +283 -0
- package/skills/knowledge-graph/SKILL.md +146 -0
- package/skills/landing-page/SKILL.md +140 -0
- package/skills/lint-and-validate/SKILL.md +299 -0
- package/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/skills/llm-engineering/SKILL.md +435 -0
- package/skills/local-first/SKILL.md +213 -0
- package/skills/local-first-architecture/SKILL.md +137 -0
- package/skills/lottie-animation/SKILL.md +137 -0
- package/skills/marquee-loop/SKILL.md +147 -0
- package/skills/masked-reveal/SKILL.md +305 -0
- package/skills/mcp-builder/SKILL.md +180 -0
- package/skills/micro-interaction/SKILL.md +321 -0
- package/skills/mobile-design/SKILL.md +320 -0
- package/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/skills/monorepo-management/SKILL.md +370 -0
- package/skills/morphing-icons/SKILL.md +423 -0
- package/skills/motion-engineering/SKILL.md +272 -0
- package/skills/nextjs-react-expert/SKILL.md +293 -0
- package/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/skills/nodejs-best-practices/SKILL.md +617 -0
- package/skills/observability/SKILL.md +378 -0
- package/skills/opentelemetry-observability/SKILL.md +125 -0
- package/skills/page-transition-animation/SKILL.md +161 -0
- package/skills/parallel-agents/SKILL.md +185 -0
- package/skills/performance-profiling/SKILL.md +305 -0
- package/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/skills/plan-writing/SKILL.md +202 -0
- package/skills/platform-engineer/SKILL.md +183 -0
- package/skills/platform-engineering-opentofu/SKILL.md +133 -0
- package/skills/playwright-ai-e2e/SKILL.md +126 -0
- package/skills/playwright-best-practices/SKILL.md +224 -0
- package/skills/polish/SKILL.md +114 -0
- package/skills/powershell-windows/SKILL.md +197 -0
- package/skills/pricing-page/SKILL.md +123 -0
- package/skills/product-aware-heuristics/SKILL.md +465 -0
- package/skills/progressive-blur/SKILL.md +155 -0
- package/skills/project-idioms/SKILL.md +166 -0
- package/skills/property-based-testing/SKILL.md +124 -0
- package/skills/python-patterns/SKILL.md +295 -0
- package/skills/python-pro/SKILL.md +380 -0
- package/skills/quieter/SKILL.md +124 -0
- package/skills/react-doctor/SKILL.md +126 -0
- package/skills/react-specialist/SKILL.md +355 -0
- package/skills/readme-builder/SKILL.md +345 -0
- package/skills/realtime-patterns/SKILL.md +358 -0
- package/skills/red-team-tactics/SKILL.md +266 -0
- package/skills/redesign-skill/SKILL.md +121 -0
- package/skills/review-animations/SKILL.md +120 -0
- package/skills/review-animations/STANDARDS.md +87 -0
- package/skills/rust-pro/SKILL.md +727 -0
- package/skills/seo-fundamentals/SKILL.md +214 -0
- package/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/skills/server-management/SKILL.md +253 -0
- package/skills/shadcn-ui-expert/SKILL.md +271 -0
- package/skills/shape/SKILL.md +131 -0
- package/skills/skill-creator/SKILL.md +136 -0
- package/skills/soft-skill/SKILL.md +128 -0
- package/skills/sounds-on-the-web/SKILL.md +151 -0
- package/skills/sql-pro/SKILL.md +699 -0
- package/skills/supabase-postgres-best-practices/SKILL.md +132 -0
- package/skills/svg-animation/SKILL.md +431 -0
- package/skills/swiftui-expert/SKILL.md +239 -0
- package/skills/swiss-design/SKILL.md +119 -0
- package/skills/system-design-pro/SKILL.md +393 -0
- package/skills/systematic-debugging/SKILL.md +198 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/tailwind-patterns/SKILL.md +658 -0
- package/skills/taste-skill/SKILL.md +127 -0
- package/skills/tdd-workflow/SKILL.md +179 -0
- package/skills/test-result-analyzer/SKILL.md +345 -0
- package/skills/testing-patterns/SKILL.md +609 -0
- package/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/skills/thermo-nuclear-code-quality-review/SKILL.md +137 -0
- package/skills/thinking-protocol/SKILL.md +97 -0
- package/skills/to-spring-or-not-to-spring/SKILL.md +118 -0
- package/skills/transitions-dev/SKILL.md +165 -0
- package/skills/trend-researcher/SKILL.md +273 -0
- package/skills/typescript-advanced/SKILL.md +381 -0
- package/skills/typeset/SKILL.md +135 -0
- package/skills/ui-reasoning-engine/SKILL.md +230 -0
- package/skills/ui-skill-packs/SKILL.md +132 -0
- package/skills/ui-skills-root/SKILL.md +144 -0
- package/skills/ui-ux-pro-max/SKILL.md +185 -0
- package/skills/ui-ux-researcher/SKILL.md +274 -0
- package/skills/vector-search-pgvector/SKILL.md +144 -0
- package/skills/verification-before-completion/SKILL.md +178 -0
- package/skills/vue-expert/SKILL.md +334 -0
- package/skills/vulnerability-scanner/SKILL.md +453 -0
- package/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/skills/web-accessibility-auditor/SKILL.md +254 -0
- package/skills/web-design-guidelines/SKILL.md +124 -0
- package/skills/web-quality-audit/SKILL.md +122 -0
- package/skills/webapp-testing/SKILL.md +203 -0
- package/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/skills/webgpu-performance/SKILL.md +163 -0
- package/skills/whimsy-injector/SKILL.md +380 -0
- package/skills/workflow-optimizer/SKILL.md +263 -0
- package/skills/zero-trust-passkeys/SKILL.md +156 -0
- package/.agent/skills/api-patterns/scripts/__pycache__/api_validator.cpython-311.pyc +0 -0
- package/.agent/skills/database-design/scripts/__pycache__/schema_validator.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/ux_audit.cpython-311.pyc +0 -0
- package/.agent/skills/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/i18n-localization/scripts/__pycache__/i18n_checker.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/lint_runner.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/type_coverage.cpython-311.pyc +0 -0
- package/.agent/skills/mobile-design/scripts/__pycache__/mobile_audit.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/convert_rules.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/react_performance_checker.cpython-311.pyc +0 -0
- package/.agent/skills/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-311.pyc +0 -0
- package/.agent/skills/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/testing-patterns/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/skills/webapp-testing/scripts/__pycache__/playwright_runner.cpython-311.pyc +0 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nextjs-react-expert
|
|
3
|
+
description: Use when Next.js 15+ App Router mastery. Server Components, Server Actions, PPR, caching, metadata, middleware, parallel/intercepting routes. Use when building Next.js apps or optimizing Next.js performance.
|
|
4
|
+
version: 5.0.0
|
|
5
|
+
last-updated: 2026-09-13
|
|
6
|
+
skills:
|
|
7
|
+
- react-specialist
|
|
8
|
+
- react-doctor
|
|
9
|
+
- baseline-ui
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Next.js 15+ App Router — Dense Reference
|
|
17
|
+
|
|
18
|
+
## Mandatory Pre-Flight Context Inspection
|
|
19
|
+
|
|
20
|
+
Before generating, refactoring, or reviewing code in the `nextjs-react-expert` domain, inspect these 5 critical parameters:
|
|
21
|
+
|
|
22
|
+
1. **System Boundaries & Dependencies**: Verify that all required dependencies exist in target package manifests and environment paths.
|
|
23
|
+
2. **Runtime Context & Platform Invariants**: Confirm target platform constraints (Node.js, Browser, Mobile OS, Edge runtime) before applying APIs.
|
|
24
|
+
3. **Execution Guardrails**: Identify potential side-effects, state mutations, and unhandled asynchronous exceptions.
|
|
25
|
+
4. **Validation & Type Contracts**: Validate input data schemas and strict type constraints across all module interfaces.
|
|
26
|
+
5. **Observability & Proof of Execution**: Ensure execution produces tangible verification signals (terminal output, tests, metrics).
|
|
27
|
+
|
|
28
|
+
## Activation Boundaries
|
|
29
|
+
|
|
30
|
+
- **Activate when:** Use when Next.js 15+ App Router mastery. Server Components, Server Actions, PPR, caching, metadata, middleware, parallel/intercepting routes. Use when building Next.js apps or optimizing Next.js performance.
|
|
31
|
+
- **DO NOT activate when:** The task falls outside the `nextjs-react-expert` domain or is managed by a different dedicated specialist.
|
|
32
|
+
|
|
33
|
+
## 🔁 Multi-Pass Execution Protocol
|
|
34
|
+
|
|
35
|
+
Execute all non-trivial tasks through this 7-pass cognitive loop:
|
|
36
|
+
|
|
37
|
+
| Pass | Phase | Core Action |
|
|
38
|
+
|:---|:---|:---|
|
|
39
|
+
| **Pass 1** | **Understand** | Deconstruct the user's explicit objective, implicit requirements, and platform constraints. |
|
|
40
|
+
| **Pass 2** | **Plan** | Decompose the task into smallest logical steps; map dependencies and required tool calls. |
|
|
41
|
+
| **Pass 3** | **Execute** | Implement the solution with production-grade craft, zero placeholders, and strict typing. |
|
|
42
|
+
| **Pass 4** | **Verify** | Run linters, unit tests, or compiler checks to validate structural correctness. |
|
|
43
|
+
| **Pass 5** | **Attack** | Perform an adversarial review searching for edge-case failures, race conditions, and traps. |
|
|
44
|
+
| **Pass 6** | **Improve** | Eliminate discovered friction, optimize performance, and harden error boundaries. |
|
|
45
|
+
| **Pass 7** | **Quality Gate** | Enforce Verification-Before-Completion (VBC) with concrete terminal proof before finalizing. |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🛠️ Technical Architecture & Reference Recipes
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## 2026 Next.js 15 Architecture & Performance Invariants
|
|
55
|
+
|
|
56
|
+
1. **Async Route Params**: In Next.js 15, `params` and `searchParams` are Promises:
|
|
57
|
+
```tsx
|
|
58
|
+
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
|
|
59
|
+
const { id } = await params;
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
2. **Async Headers & Cookies**: Always `await cookies()` and `await headers()`:
|
|
63
|
+
```ts
|
|
64
|
+
import { cookies } from 'next/headers';
|
|
65
|
+
const cookieStore = await cookies();
|
|
66
|
+
```
|
|
67
|
+
3. **Partial Prerendering (PPR)**: Isolate dynamic data fetches within `<Suspense>` boundaries so the static shell renders instantly.
|
|
68
|
+
4. **Server Action CSRF & Origin Verification**: Next.js 15 checks host header by default; ensure actions validate permissions before mutations.
|
|
69
|
+
|
|
70
|
+
## Hallucination Traps (Read First)
|
|
71
|
+
|
|
72
|
+
- ❌ Synchronous `const { id } = params` → ✅ Next.js 15: `const { id } = await params`
|
|
73
|
+
- ❌ Synchronous `const c = cookies()` → ✅ Next.js 15: `const c = await cookies()`
|
|
74
|
+
- ❌ Assuming `fetch()` is cached by default → ✅ Next.js 15 defaults to `{ cache: 'no-store' }`
|
|
75
|
+
- ❌ `pages/api/` or `_app.tsx` → ✅ App Router only: `app/api/route.ts`, `app/layout.tsx`
|
|
76
|
+
- ❌ `getServerSideProps` → ✅ Direct `async` Server Components
|
|
77
|
+
- ❌ `next/router` → ✅ `next/navigation` (`useRouter`, `usePathname`)
|
|
78
|
+
- ❌ Server Action without `"use server"` → ✅ Required at top of file or function
|
|
79
|
+
- ❌ Passing functions as props Server → Client → ✅ Use Server Actions
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## App Router Conventions
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
app/
|
|
87
|
+
├── layout.tsx ← Root shell (HTML/BODY)
|
|
88
|
+
├── page.tsx ← Route UI
|
|
89
|
+
├── loading.tsx ← Auto-suspense fallback
|
|
90
|
+
├── error.tsx ← Error boundary (Must be "use client")
|
|
91
|
+
├── not-found.tsx ← 404 UI
|
|
92
|
+
├── global-error.tsx ← Root error boundary
|
|
93
|
+
├── api/users/route.ts ← API Handler (GET, POST)
|
|
94
|
+
├── @modal/login/page.tsx ← Parallel Route (renders in same layout)
|
|
95
|
+
└── (auth)/login/page.tsx ← Route Group (doesn't affect URL)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Server vs Client Components
|
|
101
|
+
|
|
102
|
+
- **Server Components (Default)**: Zero JS. Direct DB access. Secure env vars.
|
|
103
|
+
- **Client Components (`"use client"`)**: Lifecycle (`useEffect`), State (`useState`), Browser APIs (`window`), Event listeners (`onClick`).
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
// ✅ INTERLEAVING PATTERN: Pass Server Component as children to Client Component
|
|
107
|
+
export default function Page() {
|
|
108
|
+
return (
|
|
109
|
+
<ClientSidebar>
|
|
110
|
+
{' '}
|
|
111
|
+
{/* "use client" */}
|
|
112
|
+
<ServerStats /> {/* Server: zero JS bundle, fetches DB */}
|
|
113
|
+
</ClientSidebar>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Server Actions (Mutations)
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
'use server';
|
|
124
|
+
import { revalidatePath } from 'next/cache';
|
|
125
|
+
import { z } from 'zod';
|
|
126
|
+
|
|
127
|
+
const Schema = z.object({ name: z.string().min(2) });
|
|
128
|
+
|
|
129
|
+
export async function createUser(prevState: any, formData: FormData) {
|
|
130
|
+
// ❌ TRAP: ALWAYS validate formData. Never trust client input.
|
|
131
|
+
const parsed = Schema.safeParse({ name: formData.get('name') });
|
|
132
|
+
if (!parsed.success) return { errors: parsed.error.flatten().fieldErrors };
|
|
133
|
+
|
|
134
|
+
await db.user.create({ data: parsed.data });
|
|
135
|
+
revalidatePath('/users'); // Clears cache so next render shows new user
|
|
136
|
+
return { success: true };
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Client usage (React 19):
|
|
141
|
+
|
|
142
|
+
```tsx
|
|
143
|
+
'use client';
|
|
144
|
+
import { useActionState } from 'react';
|
|
145
|
+
import { createUser } from './actions';
|
|
146
|
+
|
|
147
|
+
export function UserForm() {
|
|
148
|
+
const [state, formAction, isPending] = useActionState(createUser, null);
|
|
149
|
+
return (
|
|
150
|
+
<form action={formAction}>
|
|
151
|
+
<input name="name" />
|
|
152
|
+
<button disabled={isPending}>Submit</button>
|
|
153
|
+
{state?.errors?.name && <p>{state.errors.name}</p>}
|
|
154
|
+
</form>
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Data Fetching & Caching (Next.js 15)
|
|
162
|
+
|
|
163
|
+
```tsx
|
|
164
|
+
// Next.js 15 caching defaults
|
|
165
|
+
const dynamic = await fetch(url); // 15 default: NO CACHE
|
|
166
|
+
const static = await fetch(url, { cache: 'force-cache' }); // Static
|
|
167
|
+
const isr = await fetch(url, { next: { revalidate: 3600 } }); // Revalidate every hour
|
|
168
|
+
const tagged = await fetch(url, { next: { tags: ['user-1'] } }); // On-demand via revalidateTag()
|
|
169
|
+
|
|
170
|
+
// DB calls without fetch
|
|
171
|
+
import { unstable_cache } from 'next/cache';
|
|
172
|
+
const getCachedUser = unstable_cache(
|
|
173
|
+
async id => db.user.findUnique({ where: { id } }),
|
|
174
|
+
['user-cache-key'],
|
|
175
|
+
{ revalidate: 60, tags: ['users'] },
|
|
176
|
+
);
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Waterfall Elimination
|
|
180
|
+
|
|
181
|
+
```tsx
|
|
182
|
+
// ✅ Parallel Fetching:
|
|
183
|
+
const [user, posts] = await Promise.all([getUser(), getPosts()]);
|
|
184
|
+
|
|
185
|
+
// ✅ Streaming (PPR-compatible):
|
|
186
|
+
export default function Page() {
|
|
187
|
+
return (
|
|
188
|
+
<main>
|
|
189
|
+
<FastNav />
|
|
190
|
+
{/* Page shell loads instantly, SlowChart streams in when ready */}
|
|
191
|
+
<Suspense fallback={<Skeleton />}>
|
|
192
|
+
<SlowChart />
|
|
193
|
+
</Suspense>
|
|
194
|
+
</main>
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Partial Prerendering (PPR)
|
|
202
|
+
|
|
203
|
+
PPR static-generates the route shell and streams dynamic parts.
|
|
204
|
+
|
|
205
|
+
```tsx
|
|
206
|
+
// next.config.ts
|
|
207
|
+
export default { experimental: { ppr: true } };
|
|
208
|
+
|
|
209
|
+
// Any component reading cookies/headers inside a Suspense boundary becomes a dynamic hole
|
|
210
|
+
import { cookies } from 'next/headers';
|
|
211
|
+
|
|
212
|
+
async function Cart() {
|
|
213
|
+
const c = await cookies(); // Next.js 15 cookies are async!
|
|
214
|
+
const cartId = c.get('cartId');
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export default function Page() {
|
|
218
|
+
return (
|
|
219
|
+
<div>
|
|
220
|
+
<StaticHeader /> {/* Cached at build time on CDN */}
|
|
221
|
+
<Suspense fallback={<CartSkeleton />}>
|
|
222
|
+
<Cart /> {/* Dynamic, streamed at request time */}
|
|
223
|
+
</Suspense>
|
|
224
|
+
</div>
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Middleware
|
|
232
|
+
|
|
233
|
+
```typescript
|
|
234
|
+
// middleware.ts (Root of project)
|
|
235
|
+
import { NextResponse } from 'next/server';
|
|
236
|
+
import type { NextRequest } from 'next/server';
|
|
237
|
+
|
|
238
|
+
export function middleware(req: NextRequest) {
|
|
239
|
+
const token = req.cookies.get('auth-token');
|
|
240
|
+
if (!token && req.nextUrl.pathname.startsWith('/dashboard')) {
|
|
241
|
+
return NextResponse.redirect(new URL('/login', req.url));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export const config = {
|
|
246
|
+
matcher: ['/dashboard/:path*'], // Strict matcher is critical for performance
|
|
247
|
+
};
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 🚨 Edge-Case & Failure Mode Matrix
|
|
253
|
+
|
|
254
|
+
| Scenario | Risk | Mitigation Strategy |
|
|
255
|
+
|:---|:---|:---|
|
|
256
|
+
| **Empty or Null Inputs** | Unhandled exception or unexpected rendering collapse | Enforce fallback guards, optional chaining, and explicit empty state handlers |
|
|
257
|
+
| **Network Timeout / Latency** | Hanging operations or duplicate side-effects | Implement bounded abort controllers, exponential backoff, and idempotency keys |
|
|
258
|
+
| **Concurrency / Race Conditions** | Stale state overwrite or inconsistent data mutations | Use atomic transactions, mutex locking, or cancel-on-resubmit controls |
|
|
259
|
+
| **Invalid Schema / Malformed Payload** | Downstream runtime errors or security injection | Validate boundary payloads with Zod/Pydantic schemas prior to execution |
|
|
260
|
+
| **Resource / Memory Saturation** | OOM errors, frame drops, or memory leaks | Clean up listeners, cancel active timers, and enforce pagination/virtualization |
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 🤖 LLM-Specific Traps Table
|
|
265
|
+
|
|
266
|
+
| Anti-Pattern | What AI Commonly Does Wrong | What Is Actually Correct |
|
|
267
|
+
|:---|:---|:---|
|
|
268
|
+
| **Uncontrolled Re-render Loop** | Mutating state inside render bodies or omitting hook dependencies | Wrap effects with explicit deps and isolate reactive derivations in useMemo |
|
|
269
|
+
| **Accessibility Neglect** | Interactive <div> without role="button", tabIndex, or onKeyDown | Use semantic <button> or provide ARIA role, keyboard handlers, and focus ring |
|
|
270
|
+
| **Layout Shift Flash** | Images/dynamic content without aspect-ratio or explicit dimensions | Enforce aspect-ratio or skeleton placeholders to guarantee zero CLS |
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🏛️ Tribunal Verification & Guardrails
|
|
275
|
+
|
|
276
|
+
**Active Reviewers:** `frontend-reviewer` · `type-safety` · `ui-ux-auditor` · `complexity-reviewer`
|
|
277
|
+
**Slash Command:** `/review` or `/tribunal-full`
|
|
278
|
+
|
|
279
|
+
### ✅ Pre-Flight Self-Audit Checklist
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
✅ Are all component props strictly typed with zero implicit "any"?
|
|
283
|
+
✅ Are responsive breakpoints, fluid typography, and optical balance verified?
|
|
284
|
+
✅ Is accessibility (ARIA labels, keyboard focus, contrast) validated?
|
|
285
|
+
✅ Are re-renders minimized and state lifecycles cleanly separated?
|
|
286
|
+
✅ Did I verify all imported UI components and icon sets actually exist?
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
290
|
+
|
|
291
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
292
|
+
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
293
|
+
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing test suites, compiler success, or equivalent operational proof) that your output works as intended.
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Conversion Script: React Best Practices → .agent Format
|
|
4
|
+
Merges 59 individual rules into 8 grouped section files
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
from typing import Dict, List, Tuple
|
|
11
|
+
|
|
12
|
+
# Section metadata from _sections.md
|
|
13
|
+
SECTIONS = {
|
|
14
|
+
'async': {
|
|
15
|
+
'number': 1,
|
|
16
|
+
'title': 'Eliminating Waterfalls',
|
|
17
|
+
'impact': 'CRITICAL',
|
|
18
|
+
'description': 'Waterfalls are the #1 performance killer. Each sequential await adds full network latency. Eliminating them yields the largest gains.'
|
|
19
|
+
},
|
|
20
|
+
'bundle': {
|
|
21
|
+
'number': 2,
|
|
22
|
+
'title': 'Bundle Size Optimization',
|
|
23
|
+
'impact': 'CRITICAL',
|
|
24
|
+
'description': 'Reducing initial bundle size improves Time to Interactive and Largest Contentful Paint.'
|
|
25
|
+
},
|
|
26
|
+
'server': {
|
|
27
|
+
'number': 3,
|
|
28
|
+
'title': 'Server-Side Performance',
|
|
29
|
+
'impact': 'HIGH',
|
|
30
|
+
'description': 'Optimizing server-side rendering and data fetching eliminates server-side waterfalls and reduces response times.'
|
|
31
|
+
},
|
|
32
|
+
'client': {
|
|
33
|
+
'number': 4,
|
|
34
|
+
'title': 'Client-Side Data Fetching',
|
|
35
|
+
'impact': 'MEDIUM-HIGH',
|
|
36
|
+
'description': 'Automatic deduplication and efficient data fetching patterns reduce redundant network requests.'
|
|
37
|
+
},
|
|
38
|
+
'rerender': {
|
|
39
|
+
'number': 5,
|
|
40
|
+
'title': 'Re-render Optimization',
|
|
41
|
+
'impact': 'MEDIUM',
|
|
42
|
+
'description': 'Reducing unnecessary re-renders minimizes wasted computation and improves UI responsiveness.'
|
|
43
|
+
},
|
|
44
|
+
'rendering': {
|
|
45
|
+
'number': 6,
|
|
46
|
+
'title': 'Rendering Performance',
|
|
47
|
+
'impact': 'MEDIUM',
|
|
48
|
+
'description': 'Optimizing the rendering process reduces the work the browser needs to do.'
|
|
49
|
+
},
|
|
50
|
+
'js': {
|
|
51
|
+
'number': 7,
|
|
52
|
+
'title': 'JavaScript Performance',
|
|
53
|
+
'impact': 'LOW-MEDIUM',
|
|
54
|
+
'description': 'Micro-optimizations for hot paths can add up to meaningful improvements.'
|
|
55
|
+
},
|
|
56
|
+
'advanced': {
|
|
57
|
+
'number': 8,
|
|
58
|
+
'title': 'Advanced Patterns',
|
|
59
|
+
'impact': 'VARIABLE',
|
|
60
|
+
'description': 'Advanced patterns for specific cases that require careful implementation.'
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def parse_frontmatter(content: str) -> Tuple[Dict, str]:
|
|
66
|
+
"""Parse markdown frontmatter and body"""
|
|
67
|
+
if not content.startswith('---'):
|
|
68
|
+
return {}, content
|
|
69
|
+
|
|
70
|
+
parts = content.split('---', 2)
|
|
71
|
+
if len(parts) < 3:
|
|
72
|
+
return {}, content
|
|
73
|
+
|
|
74
|
+
# Parse YAML frontmatter manually (simple key: value)
|
|
75
|
+
frontmatter = {}
|
|
76
|
+
for line in parts[1].strip().split('\n'):
|
|
77
|
+
if ':' in line:
|
|
78
|
+
key, value = line.split(':', 1)
|
|
79
|
+
frontmatter[key.strip()] = value.strip()
|
|
80
|
+
|
|
81
|
+
body = parts[2].strip()
|
|
82
|
+
return frontmatter, body
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def parse_rule_file(filepath: Path) -> Dict:
|
|
86
|
+
"""Parse a single rule file"""
|
|
87
|
+
with open(filepath, 'r', encoding='utf-8') as f:
|
|
88
|
+
content = f.read()
|
|
89
|
+
|
|
90
|
+
frontmatter, body = parse_frontmatter(content)
|
|
91
|
+
|
|
92
|
+
# Extract prefix from filename
|
|
93
|
+
filename = filepath.stem
|
|
94
|
+
prefix = filename.split('-')[0]
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
'filename': filepath.name,
|
|
98
|
+
'prefix': prefix,
|
|
99
|
+
'title': frontmatter.get('title', filename),
|
|
100
|
+
'impact': frontmatter.get('impact', ''),
|
|
101
|
+
'impactDescription': frontmatter.get('impactDescription', ''),
|
|
102
|
+
'tags': frontmatter.get('tags', ''),
|
|
103
|
+
'body': body,
|
|
104
|
+
'frontmatter': frontmatter
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def group_rules_by_section(rules_dir: Path) -> Dict[str, List[Dict]]:
|
|
109
|
+
"""Group all rules by their section prefix"""
|
|
110
|
+
grouped = {prefix: [] for prefix in SECTIONS.keys()}
|
|
111
|
+
|
|
112
|
+
for rule_file in sorted(rules_dir.glob('*.md')):
|
|
113
|
+
# Skip special files
|
|
114
|
+
if rule_file.name.startswith('_'):
|
|
115
|
+
continue
|
|
116
|
+
|
|
117
|
+
rule = parse_rule_file(rule_file)
|
|
118
|
+
prefix = rule['prefix']
|
|
119
|
+
|
|
120
|
+
if prefix in grouped:
|
|
121
|
+
grouped[prefix].append(rule)
|
|
122
|
+
else:
|
|
123
|
+
print(f"[WARNING] Unknown prefix '{prefix}' in file: {rule_file.name}")
|
|
124
|
+
|
|
125
|
+
return grouped
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def generate_section_file(section_prefix: str, rules: List[Dict], output_dir: Path):
|
|
129
|
+
"""Generate a merged section file"""
|
|
130
|
+
if not rules:
|
|
131
|
+
print(f"[WARNING] No rules found for section: {section_prefix}")
|
|
132
|
+
return
|
|
133
|
+
|
|
134
|
+
section_meta = SECTIONS[section_prefix]
|
|
135
|
+
section_num = section_meta['number']
|
|
136
|
+
section_title = section_meta['title']
|
|
137
|
+
impact = section_meta['impact']
|
|
138
|
+
description = section_meta['description']
|
|
139
|
+
|
|
140
|
+
# Sort rules by title
|
|
141
|
+
rules.sort(key=lambda r: r['title'])
|
|
142
|
+
|
|
143
|
+
# Build content
|
|
144
|
+
content = f"""# {section_num}. {section_title}
|
|
145
|
+
|
|
146
|
+
> **Impact:** {impact}
|
|
147
|
+
> **Focus:** {description}
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Overview
|
|
152
|
+
|
|
153
|
+
This section contains **{len(rules)} rules** focused on {section_title.lower()}.
|
|
154
|
+
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
# Add each rule
|
|
158
|
+
for i, rule in enumerate(rules, 1):
|
|
159
|
+
rule_id = f"{section_num}.{i}"
|
|
160
|
+
title = rule['title']
|
|
161
|
+
rule_impact = rule['impact']
|
|
162
|
+
tags = rule['tags']
|
|
163
|
+
body = rule['body']
|
|
164
|
+
|
|
165
|
+
content += f"""---
|
|
166
|
+
|
|
167
|
+
## Rule {rule_id}: {title}
|
|
168
|
+
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
if rule_impact:
|
|
172
|
+
content += f"**Impact:** {rule_impact} \n"
|
|
173
|
+
|
|
174
|
+
if tags:
|
|
175
|
+
content += f"**Tags:** {tags} \n"
|
|
176
|
+
|
|
177
|
+
content += f"\n{body}\n\n"
|
|
178
|
+
|
|
179
|
+
# Write file
|
|
180
|
+
output_file = output_dir / f"{section_num}-{section_prefix}-{section_title.lower().replace(' ', '-')}.md"
|
|
181
|
+
output_file.write_text(content, encoding='utf-8')
|
|
182
|
+
print(f"[OK] Generated: {output_file.name} ({len(rules)} rules)")
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def main():
|
|
186
|
+
"""Main conversion function"""
|
|
187
|
+
# Paths
|
|
188
|
+
base_dir = Path(__file__).parent.parent.parent.parent.parent
|
|
189
|
+
rules_dir = base_dir / "others/agent-skills/skills/react-best-practices/rules"
|
|
190
|
+
output_dir = base_dir / ".agent/skills/react-best-practices"
|
|
191
|
+
|
|
192
|
+
print(f"[*] Reading rules from: {rules_dir}")
|
|
193
|
+
print(f"[*] Output to: {output_dir}")
|
|
194
|
+
print()
|
|
195
|
+
|
|
196
|
+
# Check if rules directory exists
|
|
197
|
+
if not rules_dir.exists():
|
|
198
|
+
print(f"[ERROR] Rules directory not found: {rules_dir}")
|
|
199
|
+
return
|
|
200
|
+
|
|
201
|
+
# Group rules
|
|
202
|
+
print("[*] Grouping rules by section...")
|
|
203
|
+
grouped_rules = group_rules_by_section(rules_dir)
|
|
204
|
+
|
|
205
|
+
# Stats
|
|
206
|
+
total_rules = sum(len(rules) for rules in grouped_rules.values())
|
|
207
|
+
print(f"[*] Found {total_rules} total rules")
|
|
208
|
+
print()
|
|
209
|
+
|
|
210
|
+
# Generate section files
|
|
211
|
+
print("[*] Generating section files...")
|
|
212
|
+
for section_prefix in SECTIONS.keys():
|
|
213
|
+
rules = grouped_rules[section_prefix]
|
|
214
|
+
generate_section_file(section_prefix, rules, output_dir)
|
|
215
|
+
|
|
216
|
+
print()
|
|
217
|
+
print("[SUCCESS] Conversion complete!")
|
|
218
|
+
print(f"[*] Generated 8 section files from {total_rules} rules")
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
if __name__ == '__main__':
|
|
222
|
+
main()
|