@thierrynakoa/fire-flow 12.2.2 → 13.0.1

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.
Files changed (501) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -690
  4. package/TROUBLESHOOTING.md +264 -367
  5. package/agents/fire-debugger.md +54 -0
  6. package/agents/fire-executor.md +1610 -1033
  7. package/agents/fire-fact-checker.md +1 -1
  8. package/agents/fire-planner.md +85 -17
  9. package/agents/fire-project-researcher.md +1 -1
  10. package/agents/fire-researcher.md +4 -22
  11. package/agents/{fire-phoenix-analyst.md → fire-resurrection-analyst.md} +394 -394
  12. package/agents/fire-reviewer.md +552 -499
  13. package/agents/fire-verifier.md +114 -19
  14. package/bin/cli.js +18 -101
  15. package/commands/fire-0-orient.md +2 -2
  16. package/commands/fire-1a-new.md +50 -15
  17. package/commands/fire-1c-setup.md +33 -5
  18. package/commands/fire-1d-discuss.md +87 -1
  19. package/commands/fire-2-plan.md +556 -527
  20. package/commands/fire-3-execute.md +2046 -1356
  21. package/commands/fire-4-verify.md +975 -906
  22. package/commands/fire-5-handoff.md +46 -5
  23. package/commands/fire-6-resume.md +2 -31
  24. package/commands/fire-add-new-skill.md +138 -19
  25. package/commands/fire-autonomous.md +14 -2
  26. package/commands/fire-complete-milestone.md +1 -1
  27. package/commands/fire-cost.md +179 -183
  28. package/commands/fire-debug.md +1 -6
  29. package/commands/fire-loop-resume.md +2 -2
  30. package/commands/fire-loop-stop.md +1 -1
  31. package/commands/fire-loop.md +2 -15
  32. package/commands/fire-map-codebase.md +1 -1
  33. package/commands/fire-migrate-database.md +548 -0
  34. package/commands/fire-new-milestone.md +1 -1
  35. package/commands/fire-reflect.md +1 -2
  36. package/commands/fire-research.md +142 -21
  37. package/commands/{fire-phoenix.md → fire-resurrect.md} +859 -603
  38. package/commands/fire-scaffold.md +297 -0
  39. package/commands/fire-search.md +1 -2
  40. package/commands/fire-security-scan.md +483 -484
  41. package/commands/fire-setup.md +359 -0
  42. package/commands/fire-skill.md +770 -0
  43. package/commands/fire-skills-diff.md +506 -506
  44. package/commands/fire-skills-history.md +388 -388
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +470 -470
  47. package/commands/fire-test.md +5 -5
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/commands/fire-validate-skills.md +282 -0
  51. package/commands/fire-verify-uat.md +9 -177
  52. package/commands/fire-vuln-scan.md +492 -493
  53. package/hooks/run-hook.sh +8 -8
  54. package/hooks/run-session-end.sh +7 -7
  55. package/hooks/session-end.sh +90 -90
  56. package/hooks/session-start.sh +1 -1
  57. package/package.json +4 -25
  58. package/plugin.json +7 -7
  59. package/references/autonomy-levels.md +235 -0
  60. package/references/behavioral-directives.md +95 -3
  61. package/references/blocker-tracking.md +1 -1
  62. package/references/circuit-breaker.md +93 -2
  63. package/references/context-engineering.md +227 -9
  64. package/references/honesty-protocols.md +70 -1
  65. package/references/issue-to-pr-pipeline.md +149 -150
  66. package/references/metrics-and-trends.md +1 -2
  67. package/references/research-improvements.md +4 -108
  68. package/references/sdlc-mapping.md +73 -0
  69. package/references/state-machine.md +151 -0
  70. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  71. package/skills-library/SKILLS-INDEX.md +57 -558
  72. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  73. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  74. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  75. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  76. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  77. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  78. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  79. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  80. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  81. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  82. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  83. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  84. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  85. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  86. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  87. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  88. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  89. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  90. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  91. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  92. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  93. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  94. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  95. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  96. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  97. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  98. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  99. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  100. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  101. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  102. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  103. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  104. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  105. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  106. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  107. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  108. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  109. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  110. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  111. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  112. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  113. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  114. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  115. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  116. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  117. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  118. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  119. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  120. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  121. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  122. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  123. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  124. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  125. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  126. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  127. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  128. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  129. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  130. package/skills-library/_quarantine/README.md +30 -0
  131. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  132. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  133. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  134. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  135. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  136. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  137. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  138. package/skills-library/appointment-scheduler-design.md +423 -0
  139. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  140. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  141. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  142. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  143. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  144. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  145. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  146. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  151. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  152. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  153. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  154. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  155. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  156. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  157. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  158. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  159. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  160. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  161. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  162. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  163. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  164. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  165. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  166. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  167. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  168. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  169. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  170. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  171. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  172. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  173. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  174. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  175. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  176. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  177. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  178. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  179. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  180. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  182. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  183. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  184. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  185. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  186. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  187. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  188. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  189. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  190. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  191. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  192. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  193. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  194. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  195. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  196. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  197. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  198. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  199. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  200. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  201. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  202. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  203. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  204. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  205. package/skills-library/database-solutions/normalization-validator.md +778 -0
  206. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  207. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  208. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  209. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  210. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  211. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  212. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  213. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  215. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  216. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  217. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  218. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  219. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  220. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  221. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  222. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  223. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  224. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  225. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  226. package/skills-library/deployment-security/SECURITY.md +41 -0
  227. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  228. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  229. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  230. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  231. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  232. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  233. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  234. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  235. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  236. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  237. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  238. package/skills-library/deployment-security/vps-deployment.md +135 -0
  239. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  240. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  241. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  242. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  243. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  244. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  245. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  246. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  247. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  248. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  249. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  250. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  251. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  252. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  253. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  254. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  255. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  256. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  257. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  258. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  259. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  260. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  261. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  262. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  263. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  264. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  265. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  266. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  267. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  268. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  272. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  273. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  274. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  275. package/skills-library/excalidraw-diagrams/README.md +178 -0
  276. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  277. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  278. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  279. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  280. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  281. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  282. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  283. package/skills-library/infrastructure/observability-designer.md +264 -0
  284. package/skills-library/infrastructure/performance-profiler.md +621 -0
  285. package/skills-library/installer-wizard-patterns.md +249 -0
  286. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  287. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  288. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  289. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  290. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  291. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  293. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  294. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  295. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  297. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  299. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  300. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  301. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  302. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  303. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  304. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  305. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  306. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  307. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  308. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  313. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  314. package/skills-library/marketing/campaign-analytics.md +97 -0
  315. package/skills-library/marketing/content-creator.md +105 -0
  316. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  317. package/skills-library/marketing/social-media-analyzer.md +81 -0
  318. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  319. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  320. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  321. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  322. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  323. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  324. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  325. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  326. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  327. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  328. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  329. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  330. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  331. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  332. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  333. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  334. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  335. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  336. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  337. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  338. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  339. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  340. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  341. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  342. package/skills-library/parallel-debug/SKILL.md +60 -0
  343. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  344. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  345. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  346. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  347. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  348. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  349. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  350. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  351. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  352. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  353. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  354. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  355. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  356. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  357. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  358. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  359. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  360. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  361. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  362. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  363. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  364. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  365. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  366. package/skills-library/security/admin-deletion-safety.md +396 -0
  367. package/skills-library/security/application-vuln-patterns.md +477 -0
  368. package/skills-library/security/env-secrets-manager.md +686 -0
  369. package/skills-library/security/secure-ai-application-templates.md +347 -0
  370. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  371. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  372. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  373. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  374. package/skills-library/system-context/SKILL.md +40 -0
  375. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  376. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  377. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  378. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  379. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  380. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  381. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  382. package/skills-library/toolbox/SKILL.md +84 -0
  383. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  384. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  385. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  386. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  387. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  388. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  389. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  390. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  391. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  392. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  393. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  406. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  407. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  408. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  409. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  410. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  411. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  412. package/skills-library/wordpress-style-theme-components.md +1526 -0
  413. package/templates/ASSUMPTIONS.md +1 -1
  414. package/templates/DECISION_LOG.md +0 -1
  415. package/templates/phase-prompt.md +1 -1
  416. package/templates/phoenix-comparison.md +6 -6
  417. package/templates/skill-api-integration.md +106 -0
  418. package/templates/skill-architecture-pattern.md +92 -0
  419. package/templates/skill-debug-pattern.md +98 -0
  420. package/templates/skill-devops-recipe.md +107 -0
  421. package/templates/skill-general.md +65 -0
  422. package/templates/skill-ui-component.md +113 -0
  423. package/version.json +7 -3
  424. package/workflows/handoff-session.md +2 -2
  425. package/workflows/new-project.md +2 -2
  426. package/workflows/plan-phase.md +1 -1
  427. package/.claude-plugin/plugin.json +0 -64
  428. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +0 -242
  429. package/skills-library/_general/methodology/llm-judge-memory-crud.md +0 -241
  430. package/skills-library/methodology/REFLEXION_MEMORY_PATTERN.md +0 -183
  431. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +0 -263
  432. package/skills-library/methodology/SABBATH_REST_PATTERN.md +0 -267
  433. package/skills-library/methodology/STONE_AND_SCAFFOLD.md +0 -220
  434. package/skills-library/specialists/api-architecture/api-designer.md +0 -49
  435. package/skills-library/specialists/api-architecture/graphql-architect.md +0 -49
  436. package/skills-library/specialists/api-architecture/mcp-developer.md +0 -51
  437. package/skills-library/specialists/api-architecture/microservices-architect.md +0 -50
  438. package/skills-library/specialists/api-architecture/websocket-engineer.md +0 -48
  439. package/skills-library/specialists/backend/django-expert.md +0 -52
  440. package/skills-library/specialists/backend/fastapi-expert.md +0 -52
  441. package/skills-library/specialists/backend/laravel-specialist.md +0 -52
  442. package/skills-library/specialists/backend/nestjs-expert.md +0 -51
  443. package/skills-library/specialists/backend/rails-expert.md +0 -53
  444. package/skills-library/specialists/backend/spring-boot-engineer.md +0 -56
  445. package/skills-library/specialists/data-ml/fine-tuning-expert.md +0 -48
  446. package/skills-library/specialists/data-ml/ml-pipeline.md +0 -47
  447. package/skills-library/specialists/data-ml/pandas-pro.md +0 -47
  448. package/skills-library/specialists/data-ml/rag-architect.md +0 -51
  449. package/skills-library/specialists/data-ml/spark-engineer.md +0 -47
  450. package/skills-library/specialists/frontend/angular-architect.md +0 -52
  451. package/skills-library/specialists/frontend/flutter-expert.md +0 -51
  452. package/skills-library/specialists/frontend/nextjs-developer.md +0 -54
  453. package/skills-library/specialists/frontend/react-native-expert.md +0 -50
  454. package/skills-library/specialists/frontend/vue-expert.md +0 -51
  455. package/skills-library/specialists/infrastructure/chaos-engineer.md +0 -74
  456. package/skills-library/specialists/infrastructure/cloud-architect.md +0 -70
  457. package/skills-library/specialists/infrastructure/database-optimizer.md +0 -64
  458. package/skills-library/specialists/infrastructure/devops-engineer.md +0 -70
  459. package/skills-library/specialists/infrastructure/kubernetes-specialist.md +0 -52
  460. package/skills-library/specialists/infrastructure/monitoring-expert.md +0 -70
  461. package/skills-library/specialists/infrastructure/sre-engineer.md +0 -70
  462. package/skills-library/specialists/infrastructure/terraform-engineer.md +0 -51
  463. package/skills-library/specialists/languages/cpp-pro.md +0 -74
  464. package/skills-library/specialists/languages/csharp-developer.md +0 -69
  465. package/skills-library/specialists/languages/dotnet-core-expert.md +0 -54
  466. package/skills-library/specialists/languages/golang-pro.md +0 -51
  467. package/skills-library/specialists/languages/java-architect.md +0 -49
  468. package/skills-library/specialists/languages/javascript-pro.md +0 -68
  469. package/skills-library/specialists/languages/kotlin-specialist.md +0 -68
  470. package/skills-library/specialists/languages/php-pro.md +0 -49
  471. package/skills-library/specialists/languages/python-pro.md +0 -52
  472. package/skills-library/specialists/languages/react-expert.md +0 -51
  473. package/skills-library/specialists/languages/rust-engineer.md +0 -50
  474. package/skills-library/specialists/languages/sql-pro.md +0 -56
  475. package/skills-library/specialists/languages/swift-expert.md +0 -69
  476. package/skills-library/specialists/languages/typescript-pro.md +0 -51
  477. package/skills-library/specialists/platform/atlassian-mcp.md +0 -52
  478. package/skills-library/specialists/platform/embedded-systems.md +0 -53
  479. package/skills-library/specialists/platform/game-developer.md +0 -53
  480. package/skills-library/specialists/platform/salesforce-developer.md +0 -53
  481. package/skills-library/specialists/platform/shopify-expert.md +0 -49
  482. package/skills-library/specialists/platform/wordpress-pro.md +0 -49
  483. package/skills-library/specialists/quality/browser-use-expert.md +0 -210
  484. package/skills-library/specialists/quality/code-documenter.md +0 -51
  485. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  486. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  487. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  488. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  489. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  490. package/skills-library/specialists/quality/spec-miner.md +0 -56
  491. package/skills-library/specialists/quality/test-master.md +0 -65
  492. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  493. package/skills-library/specialists/security/security-reviewer.md +0 -53
  494. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  495. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  496. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  497. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  498. package/skills-library/specialists/workflow/the-fool.md +0 -62
  499. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  501. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,750 @@
1
+ # Programmatic SVG Generation
2
+ **Description:** Complete guide for generating, animating, optimizing, and using SVGs in web applications. Covers fundamentals, chart generation without libraries, React patterns, SMIL and CSS animation, accessibility, and optimization with SVGO.
3
+
4
+ **When to use:** Any project requiring icons, charts, infographics, logos, loading spinners, or illustrations generated programmatically — especially when you need crisp rendering at any scale, small file sizes, or dynamic data-driven graphics.
5
+
6
+ ---
7
+
8
+ ## SVG Fundamentals for AI Agents
9
+
10
+ ### ViewBox and Coordinate System
11
+
12
+ ```xml
13
+ <!-- viewBox="minX minY width height" -->
14
+ <!-- The SVG scales to fit its container while preserving the internal coordinate system -->
15
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
16
+ <!-- Everything is drawn in a 100x100 coordinate space -->
17
+ <!-- The actual display size is controlled by CSS width/height -->
18
+ </svg>
19
+ ```
20
+
21
+ **Responsive sizing pattern:**
22
+
23
+ ```xml
24
+ <!-- Width fills container, height auto-scales from viewBox aspect ratio -->
25
+ <svg viewBox="0 0 400 300" width="100%" xmlns="http://www.w3.org/2000/svg">
26
+ <!-- 4:3 aspect ratio maintained at any container width -->
27
+ </svg>
28
+ ```
29
+
30
+ ### Basic Shapes
31
+
32
+ ```xml
33
+ <svg viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
34
+ <!-- Rectangle -->
35
+ <rect x="10" y="10" width="80" height="60" rx="8" fill="#7c3aed" />
36
+
37
+ <!-- Circle -->
38
+ <circle cx="200" cy="50" r="40" fill="#3b82f6" />
39
+
40
+ <!-- Ellipse -->
41
+ <ellipse cx="300" cy="50" rx="60" ry="30" fill="#10b981" />
42
+
43
+ <!-- Line -->
44
+ <line x1="10" y1="120" x2="390" y2="120" stroke="#94a3b8" stroke-width="2" />
45
+
46
+ <!-- Polyline (open shape) -->
47
+ <polyline points="10,200 80,150 150,180 220,140 290,170 360,130"
48
+ fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" />
49
+
50
+ <!-- Polygon (closed shape) -->
51
+ <polygon points="200,210 230,270 170,270" fill="#ef4444" />
52
+
53
+ <!-- Path (the universal shape — can draw anything) -->
54
+ <path d="M 10 290 Q 100 230 200 290 T 390 290"
55
+ fill="none" stroke="#8b5cf6" stroke-width="2" />
56
+ </svg>
57
+ ```
58
+
59
+ ### Path Commands Quick Reference
60
+
61
+ | Command | Meaning | Parameters |
62
+ |---------|---------|------------|
63
+ | `M` / `m` | Move to | `x y` |
64
+ | `L` / `l` | Line to | `x y` |
65
+ | `H` / `h` | Horizontal line | `x` |
66
+ | `V` / `v` | Vertical line | `y` |
67
+ | `C` / `c` | Cubic bezier | `x1 y1 x2 y2 x y` |
68
+ | `Q` / `q` | Quadratic bezier | `x1 y1 x y` |
69
+ | `A` / `a` | Arc | `rx ry rotation large-arc sweep x y` |
70
+ | `Z` | Close path | — |
71
+
72
+ Uppercase = absolute coordinates, lowercase = relative to current position.
73
+
74
+ ### Text Elements
75
+
76
+ ```xml
77
+ <svg viewBox="0 0 400 100" xmlns="http://www.w3.org/2000/svg">
78
+ <!-- Embedded font via style block -->
79
+ <style>
80
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700');
81
+ .heading { font-family: 'Inter', sans-serif; font-weight: 700; }
82
+ .body { font-family: 'Inter', sans-serif; font-weight: 400; }
83
+ </style>
84
+
85
+ <text x="200" y="40" text-anchor="middle" class="heading" font-size="24" fill="#1e293b">
86
+ SVG Heading
87
+ </text>
88
+ <text x="200" y="70" text-anchor="middle" class="body" font-size="14" fill="#64748b">
89
+ Subtitle text centered below
90
+ </text>
91
+ </svg>
92
+ ```
93
+
94
+ ### Gradients and Patterns
95
+
96
+ ```xml
97
+ <svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
98
+ <defs>
99
+ <!-- Linear gradient -->
100
+ <linearGradient id="sunset" x1="0%" y1="0%" x2="100%" y2="100%">
101
+ <stop offset="0%" stop-color="#f97316" />
102
+ <stop offset="100%" stop-color="#ec4899" />
103
+ </linearGradient>
104
+
105
+ <!-- Radial gradient -->
106
+ <radialGradient id="glow" cx="50%" cy="50%" r="50%">
107
+ <stop offset="0%" stop-color="#7c3aed" stop-opacity="1" />
108
+ <stop offset="100%" stop-color="#7c3aed" stop-opacity="0" />
109
+ </radialGradient>
110
+
111
+ <!-- Repeating pattern -->
112
+ <pattern id="dots" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
113
+ <circle cx="10" cy="10" r="2" fill="#cbd5e1" />
114
+ </pattern>
115
+ </defs>
116
+
117
+ <rect width="200" height="200" fill="url(#dots)" />
118
+ <circle cx="100" cy="100" r="60" fill="url(#sunset)" />
119
+ <circle cx="100" cy="100" r="80" fill="url(#glow)" />
120
+ </svg>
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Generation Patterns
126
+
127
+ ### Icon Generation from Description
128
+
129
+ Generate SVG icons programmatically by composing path data:
130
+
131
+ ```ts
132
+ // utils/svg-icons.ts
133
+
134
+ interface IconConfig {
135
+ size?: number;
136
+ color?: string;
137
+ strokeWidth?: number;
138
+ }
139
+
140
+ export function generateCheckIcon({ size = 24, color = "currentColor", strokeWidth = 2 }: IconConfig = {}) {
141
+ return `<svg viewBox="0 0 24 24" width="${size}" height="${size}" fill="none" xmlns="http://www.w3.org/2000/svg">
142
+ <path d="M20 6L9 17L4 12" stroke="${color}" stroke-width="${strokeWidth}" stroke-linecap="round" stroke-linejoin="round"/>
143
+ </svg>`;
144
+ }
145
+
146
+ export function generateMenuIcon({ size = 24, color = "currentColor", strokeWidth = 2 }: IconConfig = {}) {
147
+ return `<svg viewBox="0 0 24 24" width="${size}" height="${size}" fill="none" xmlns="http://www.w3.org/2000/svg">
148
+ <path d="M3 12h18M3 6h18M3 18h18" stroke="${color}" stroke-width="${strokeWidth}" stroke-linecap="round"/>
149
+ </svg>`;
150
+ }
151
+
152
+ export function generateSpinnerIcon({ size = 24, color = "#7c3aed" }: IconConfig = {}) {
153
+ return `<svg viewBox="0 0 24 24" width="${size}" height="${size}" xmlns="http://www.w3.org/2000/svg">
154
+ <circle cx="12" cy="12" r="10" stroke="${color}" stroke-width="3" fill="none" opacity="0.25"/>
155
+ <path d="M12 2a10 10 0 0 1 10 10" stroke="${color}" stroke-width="3" fill="none" stroke-linecap="round">
156
+ <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="1s" repeatCount="indefinite"/>
157
+ </path>
158
+ </svg>`;
159
+ }
160
+ ```
161
+
162
+ ### Chart SVGs — No Library Required
163
+
164
+ #### Bar Chart
165
+
166
+ ```ts
167
+ interface BarChartData {
168
+ label: string;
169
+ value: number;
170
+ }
171
+
172
+ export function generateBarChart(
173
+ data: BarChartData[],
174
+ width = 400,
175
+ height = 250
176
+ ) {
177
+ const padding = { top: 20, right: 20, bottom: 40, left: 50 };
178
+ const chartW = width - padding.left - padding.right;
179
+ const chartH = height - padding.top - padding.bottom;
180
+ const maxVal = Math.max(...data.map((d) => d.value));
181
+ const barWidth = chartW / data.length * 0.7;
182
+ const gap = chartW / data.length * 0.3;
183
+
184
+ const bars = data.map((d, i) => {
185
+ const barH = (d.value / maxVal) * chartH;
186
+ const x = padding.left + i * (barWidth + gap) + gap / 2;
187
+ const y = padding.top + chartH - barH;
188
+
189
+ return `
190
+ <rect x="${x}" y="${y}" width="${barWidth}" height="${barH}" rx="4" fill="#7c3aed" opacity="0.9">
191
+ <animate attributeName="height" from="0" to="${barH}" dur="0.6s" fill="freeze"
192
+ begin="${i * 0.1}s" calcMode="spline" keySplines="0.25 0.46 0.45 0.94"/>
193
+ <animate attributeName="y" from="${padding.top + chartH}" to="${y}" dur="0.6s" fill="freeze"
194
+ begin="${i * 0.1}s" calcMode="spline" keySplines="0.25 0.46 0.45 0.94"/>
195
+ </rect>
196
+ <text x="${x + barWidth / 2}" y="${height - 10}" text-anchor="middle" font-size="11" fill="#64748b">
197
+ ${d.label}
198
+ </text>
199
+ <text x="${x + barWidth / 2}" y="${y - 5}" text-anchor="middle" font-size="11" fill="#1e293b" font-weight="600">
200
+ ${d.value}
201
+ </text>`;
202
+ }).join("");
203
+
204
+ // Y-axis labels
205
+ const yLabels = [0, maxVal * 0.25, maxVal * 0.5, maxVal * 0.75, maxVal].map((v, i) => {
206
+ const y = padding.top + chartH - (i / 4) * chartH;
207
+ return `<text x="${padding.left - 8}" y="${y + 4}" text-anchor="end" font-size="10" fill="#94a3b8">${Math.round(v)}</text>
208
+ <line x1="${padding.left}" y1="${y}" x2="${width - padding.right}" y2="${y}" stroke="#e2e8f0" stroke-width="1"/>`;
209
+ }).join("");
210
+
211
+ return `<svg viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg" style="font-family: system-ui, sans-serif">
212
+ ${yLabels}
213
+ ${bars}
214
+ </svg>`;
215
+ }
216
+ ```
217
+
218
+ #### Pie Chart
219
+
220
+ ```ts
221
+ interface PieSlice {
222
+ label: string;
223
+ value: number;
224
+ color: string;
225
+ }
226
+
227
+ export function generatePieChart(data: PieSlice[], size = 200) {
228
+ const cx = size / 2;
229
+ const cy = size / 2;
230
+ const r = size * 0.35;
231
+ const total = data.reduce((sum, d) => sum + d.value, 0);
232
+
233
+ let cumulativeAngle = -Math.PI / 2; // start at 12 o'clock
234
+ const slices = data.map((d) => {
235
+ const sliceAngle = (d.value / total) * Math.PI * 2;
236
+ const startX = cx + r * Math.cos(cumulativeAngle);
237
+ const startY = cy + r * Math.sin(cumulativeAngle);
238
+ cumulativeAngle += sliceAngle;
239
+ const endX = cx + r * Math.cos(cumulativeAngle);
240
+ const endY = cy + r * Math.sin(cumulativeAngle);
241
+ const largeArc = sliceAngle > Math.PI ? 1 : 0;
242
+
243
+ // Label position (midpoint of arc)
244
+ const midAngle = cumulativeAngle - sliceAngle / 2;
245
+ const labelR = r * 1.35;
246
+ const labelX = cx + labelR * Math.cos(midAngle);
247
+ const labelY = cy + labelR * Math.sin(midAngle);
248
+
249
+ return `<path d="M ${cx} ${cy} L ${startX} ${startY} A ${r} ${r} 0 ${largeArc} 1 ${endX} ${endY} Z"
250
+ fill="${d.color}" stroke="white" stroke-width="2"/>
251
+ <text x="${labelX}" y="${labelY}" text-anchor="middle" dominant-baseline="central"
252
+ font-size="10" fill="#374151">${d.label} (${Math.round(d.value / total * 100)}%)</text>`;
253
+ }).join("\n ");
254
+
255
+ return `<svg viewBox="0 0 ${size} ${size}" xmlns="http://www.w3.org/2000/svg" style="font-family: system-ui, sans-serif">
256
+ ${slices}
257
+ </svg>`;
258
+ }
259
+ ```
260
+
261
+ #### Line Chart
262
+
263
+ ```ts
264
+ interface LinePoint {
265
+ x: number; // index or timestamp
266
+ y: number;
267
+ }
268
+
269
+ export function generateLineChart(
270
+ data: LinePoint[],
271
+ width = 400,
272
+ height = 200,
273
+ color = "#3b82f6"
274
+ ) {
275
+ const pad = { top: 20, right: 20, bottom: 30, left: 50 };
276
+ const cw = width - pad.left - pad.right;
277
+ const ch = height - pad.top - pad.bottom;
278
+ const maxY = Math.max(...data.map((d) => d.y)) * 1.1;
279
+ const minY = Math.min(...data.map((d) => d.y)) * 0.9;
280
+
281
+ const points = data.map((d, i) => {
282
+ const px = pad.left + (i / (data.length - 1)) * cw;
283
+ const py = pad.top + ch - ((d.y - minY) / (maxY - minY)) * ch;
284
+ return `${px},${py}`;
285
+ });
286
+
287
+ const polyline = points.join(" ");
288
+
289
+ // Area fill (closed path under the line)
290
+ const firstX = pad.left;
291
+ const lastX = pad.left + cw;
292
+ const bottomY = pad.top + ch;
293
+ const areaPath = `M ${firstX},${bottomY} L ${points.map((p) => `L ${p}`).join(" ")} L ${lastX},${bottomY} Z`;
294
+
295
+ // Data point dots
296
+ const dots = points.map((p) => {
297
+ const [x, y] = p.split(",");
298
+ return `<circle cx="${x}" cy="${y}" r="3" fill="${color}" stroke="white" stroke-width="1.5"/>`;
299
+ }).join("\n ");
300
+
301
+ return `<svg viewBox="0 0 ${width} ${height}" xmlns="http://www.w3.org/2000/svg" style="font-family: system-ui, sans-serif">
302
+ <defs>
303
+ <linearGradient id="area-fill" x1="0" y1="0" x2="0" y2="1">
304
+ <stop offset="0%" stop-color="${color}" stop-opacity="0.3"/>
305
+ <stop offset="100%" stop-color="${color}" stop-opacity="0.02"/>
306
+ </linearGradient>
307
+ </defs>
308
+ <path d="${areaPath}" fill="url(#area-fill)"/>
309
+ <polyline points="${polyline}" fill="none" stroke="${color}" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
310
+ ${dots}
311
+ </svg>`;
312
+ }
313
+ ```
314
+
315
+ ### Logo Generation — Geometric Shapes + Text
316
+
317
+ ```ts
318
+ export function generateLogo(
319
+ text: string,
320
+ accentColor = "#7c3aed",
321
+ size = 200
322
+ ) {
323
+ const firstLetter = text.charAt(0).toUpperCase();
324
+
325
+ return `<svg viewBox="0 0 ${size} ${size}" xmlns="http://www.w3.org/2000/svg">
326
+ <defs>
327
+ <linearGradient id="logo-bg" x1="0%" y1="0%" x2="100%" y2="100%">
328
+ <stop offset="0%" stop-color="${accentColor}"/>
329
+ <stop offset="100%" stop-color="${adjustBrightness(accentColor, -30)}"/>
330
+ </linearGradient>
331
+ </defs>
332
+
333
+ <!-- Background shape -->
334
+ <rect width="${size}" height="${size}" rx="${size * 0.2}" fill="url(#logo-bg)"/>
335
+
336
+ <!-- Letter -->
337
+ <text x="50%" y="54%" text-anchor="middle" dominant-baseline="central"
338
+ font-family="system-ui, sans-serif" font-weight="800" font-size="${size * 0.5}"
339
+ fill="white" letter-spacing="-2">${firstLetter}</text>
340
+ </svg>`;
341
+ }
342
+
343
+ function adjustBrightness(hex: string, amount: number): string {
344
+ const num = parseInt(hex.replace("#", ""), 16);
345
+ const r = Math.min(255, Math.max(0, ((num >> 16) & 0xff) + amount));
346
+ const g = Math.min(255, Math.max(0, ((num >> 8) & 0xff) + amount));
347
+ const b = Math.min(255, Math.max(0, (num & 0xff) + amount));
348
+ return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, "0")}`;
349
+ }
350
+ ```
351
+
352
+ ---
353
+
354
+ ## Animation
355
+
356
+ ### SMIL Animations (Built into SVG)
357
+
358
+ ```xml
359
+ <!-- Pulsing circle -->
360
+ <circle cx="50" cy="50" r="20" fill="#7c3aed">
361
+ <animate attributeName="r" values="20;25;20" dur="2s" repeatCount="indefinite"/>
362
+ <animate attributeName="opacity" values="1;0.6;1" dur="2s" repeatCount="indefinite"/>
363
+ </circle>
364
+
365
+ <!-- Rotating element -->
366
+ <rect x="40" y="40" width="20" height="20" fill="#3b82f6">
367
+ <animateTransform attributeName="transform" type="rotate"
368
+ from="0 50 50" to="360 50 50" dur="3s" repeatCount="indefinite"/>
369
+ </rect>
370
+
371
+ <!-- Color transition -->
372
+ <rect width="100" height="100" rx="10">
373
+ <animate attributeName="fill" values="#7c3aed;#3b82f6;#10b981;#7c3aed" dur="4s" repeatCount="indefinite"/>
374
+ </rect>
375
+
376
+ <!-- Motion along a path -->
377
+ <circle r="5" fill="#ef4444">
378
+ <animateMotion dur="3s" repeatCount="indefinite" path="M 10,80 Q 100,10 200,80 T 390,80"/>
379
+ </circle>
380
+ ```
381
+
382
+ ### CSS Animations on SVG Elements
383
+
384
+ ```xml
385
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
386
+ <style>
387
+ @keyframes float {
388
+ 0%, 100% { transform: translateY(0); }
389
+ 50% { transform: translateY(-8px); }
390
+ }
391
+ @keyframes fadeRotate {
392
+ from { opacity: 0.3; transform: rotate(0deg); }
393
+ to { opacity: 1; transform: rotate(360deg); }
394
+ }
395
+ .floating { animation: float 3s ease-in-out infinite; }
396
+ .spinning { animation: fadeRotate 2s linear infinite; transform-origin: 50px 50px; }
397
+ </style>
398
+
399
+ <circle cx="50" cy="50" r="15" fill="#7c3aed" class="floating"/>
400
+ <rect x="35" y="35" width="30" height="30" rx="4" fill="none" stroke="#3b82f6" stroke-width="2" class="spinning"/>
401
+ </svg>
402
+ ```
403
+
404
+ ### Animated Loading Spinners
405
+
406
+ ```xml
407
+ <!-- Spinner 1: Rotating arc -->
408
+ <svg viewBox="0 0 50 50" width="40" height="40" xmlns="http://www.w3.org/2000/svg">
409
+ <circle cx="25" cy="25" r="20" fill="none" stroke="#e2e8f0" stroke-width="4"/>
410
+ <circle cx="25" cy="25" r="20" fill="none" stroke="#7c3aed" stroke-width="4"
411
+ stroke-linecap="round" stroke-dasharray="80 126">
412
+ <animateTransform attributeName="transform" type="rotate"
413
+ from="0 25 25" to="360 25 25" dur="1s" repeatCount="indefinite"/>
414
+ </circle>
415
+ </svg>
416
+
417
+ <!-- Spinner 2: Three bouncing dots -->
418
+ <svg viewBox="0 0 80 20" width="80" height="20" xmlns="http://www.w3.org/2000/svg">
419
+ <circle cx="10" cy="10" r="6" fill="#7c3aed">
420
+ <animate attributeName="cy" values="10;4;10" dur="0.6s" repeatCount="indefinite"/>
421
+ </circle>
422
+ <circle cx="30" cy="10" r="6" fill="#7c3aed">
423
+ <animate attributeName="cy" values="10;4;10" dur="0.6s" begin="0.15s" repeatCount="indefinite"/>
424
+ </circle>
425
+ <circle cx="50" cy="10" r="6" fill="#7c3aed">
426
+ <animate attributeName="cy" values="10;4;10" dur="0.6s" begin="0.3s" repeatCount="indefinite"/>
427
+ </circle>
428
+ </svg>
429
+
430
+ <!-- Spinner 3: Morphing square to circle -->
431
+ <svg viewBox="0 0 50 50" width="40" height="40" xmlns="http://www.w3.org/2000/svg">
432
+ <rect x="10" y="10" width="30" height="30" fill="#7c3aed">
433
+ <animate attributeName="rx" values="0;15;0" dur="1.5s" repeatCount="indefinite"/>
434
+ <animateTransform attributeName="transform" type="rotate"
435
+ from="0 25 25" to="360 25 25" dur="1.5s" repeatCount="indefinite"/>
436
+ </rect>
437
+ </svg>
438
+ ```
439
+
440
+ ### Path Drawing Animation (stroke-dasharray + stroke-dashoffset)
441
+
442
+ ```xml
443
+ <!-- The classic "drawing" effect -->
444
+ <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
445
+ <style>
446
+ .draw-path {
447
+ stroke-dasharray: 500; /* Total path length (use getTotalLength() to measure) */
448
+ stroke-dashoffset: 500; /* Start fully hidden */
449
+ animation: draw 2s ease-out forwards;
450
+ }
451
+ @keyframes draw {
452
+ to { stroke-dashoffset: 0; }
453
+ }
454
+ </style>
455
+
456
+ <path class="draw-path" d="M 10 80 Q 50 10 100 50 T 190 30"
457
+ fill="none" stroke="#7c3aed" stroke-width="3" stroke-linecap="round"/>
458
+ </svg>
459
+ ```
460
+
461
+ ```tsx
462
+ // React: measure path length dynamically
463
+ import { useRef, useEffect, useState } from "react";
464
+
465
+ function DrawingPath({ d, color = "#7c3aed" }: { d: string; color?: string }) {
466
+ const pathRef = useRef<SVGPathElement>(null);
467
+ const [length, setLength] = useState(0);
468
+
469
+ useEffect(() => {
470
+ if (pathRef.current) {
471
+ setLength(pathRef.current.getTotalLength());
472
+ }
473
+ }, [d]);
474
+
475
+ return (
476
+ <svg viewBox="0 0 200 100">
477
+ <path
478
+ ref={pathRef}
479
+ d={d}
480
+ fill="none"
481
+ stroke={color}
482
+ strokeWidth={3}
483
+ strokeLinecap="round"
484
+ style={{
485
+ strokeDasharray: length,
486
+ strokeDashoffset: length,
487
+ animation: length ? `draw 2s ease-out forwards` : "none",
488
+ }}
489
+ />
490
+ </svg>
491
+ );
492
+ }
493
+ ```
494
+
495
+ ---
496
+
497
+ ## React SVG Patterns
498
+
499
+ ### Inline SVG as JSX Components
500
+
501
+ ```tsx
502
+ // components/icons/ArrowRight.tsx
503
+ interface IconProps {
504
+ size?: number;
505
+ color?: string;
506
+ className?: string;
507
+ }
508
+
509
+ export function ArrowRight({ size = 24, color = "currentColor", className }: IconProps) {
510
+ return (
511
+ <svg
512
+ viewBox="0 0 24 24"
513
+ width={size}
514
+ height={size}
515
+ fill="none"
516
+ stroke={color}
517
+ strokeWidth={2}
518
+ strokeLinecap="round"
519
+ strokeLinejoin="round"
520
+ className={className}
521
+ >
522
+ <path d="M5 12h14M12 5l7 7-7 7" />
523
+ </svg>
524
+ );
525
+ }
526
+ ```
527
+
528
+ ### SVGR — Import SVG Files as Components
529
+
530
+ ```ts
531
+ // vite.config.ts
532
+ import svgr from "vite-plugin-svgr";
533
+
534
+ export default defineConfig({
535
+ plugins: [
536
+ react(),
537
+ svgr({
538
+ svgrOptions: {
539
+ icon: true, // Replaces width/height with 1em
540
+ svgProps: { role: "img" },
541
+ },
542
+ }),
543
+ ],
544
+ });
545
+ ```
546
+
547
+ ```tsx
548
+ // Usage — import SVG file as React component
549
+ import Logo from "./assets/logo.svg?react";
550
+
551
+ function Header() {
552
+ return <Logo className="h-8 w-auto text-purple-600" />;
553
+ }
554
+ ```
555
+
556
+ ### Dynamic SVG with Props (Data-Driven)
557
+
558
+ ```tsx
559
+ interface ProgressRingProps {
560
+ progress: number; // 0-100
561
+ size?: number;
562
+ strokeWidth?: number;
563
+ color?: string;
564
+ }
565
+
566
+ export function ProgressRing({
567
+ progress,
568
+ size = 80,
569
+ strokeWidth = 6,
570
+ color = "#7c3aed",
571
+ }: ProgressRingProps) {
572
+ const r = (size - strokeWidth) / 2;
573
+ const circumference = 2 * Math.PI * r;
574
+ const offset = circumference - (progress / 100) * circumference;
575
+
576
+ return (
577
+ <svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
578
+ {/* Background track */}
579
+ <circle
580
+ cx={size / 2}
581
+ cy={size / 2}
582
+ r={r}
583
+ fill="none"
584
+ stroke="#e2e8f0"
585
+ strokeWidth={strokeWidth}
586
+ />
587
+ {/* Progress arc */}
588
+ <circle
589
+ cx={size / 2}
590
+ cy={size / 2}
591
+ r={r}
592
+ fill="none"
593
+ stroke={color}
594
+ strokeWidth={strokeWidth}
595
+ strokeLinecap="round"
596
+ strokeDasharray={circumference}
597
+ strokeDashoffset={offset}
598
+ transform={`rotate(-90 ${size / 2} ${size / 2})`}
599
+ style={{ transition: "stroke-dashoffset 0.5s ease" }}
600
+ />
601
+ {/* Center text */}
602
+ <text
603
+ x="50%"
604
+ y="50%"
605
+ textAnchor="middle"
606
+ dominantBaseline="central"
607
+ fontSize={size * 0.22}
608
+ fontWeight="700"
609
+ fill="#1e293b"
610
+ >
611
+ {Math.round(progress)}%
612
+ </text>
613
+ </svg>
614
+ );
615
+ }
616
+ ```
617
+
618
+ ---
619
+
620
+ ## Optimization
621
+
622
+ ### SVGO (SVG Optimizer)
623
+
624
+ Install: `npm install -D svgo`
625
+
626
+ ```js
627
+ // svgo.config.js
628
+ module.exports = {
629
+ multipass: true,
630
+ plugins: [
631
+ "preset-default", // Includes removeDoctype, removeComments, cleanupIds, etc.
632
+ "removeDimensions", // Remove width/height, rely on viewBox
633
+ "sortAttrs", // Consistent attribute order
634
+ {
635
+ name: "removeAttrs",
636
+ params: {
637
+ attrs: ["data-name"], // Remove editor-specific attributes
638
+ },
639
+ },
640
+ ],
641
+ };
642
+ ```
643
+
644
+ ```bash
645
+ # CLI usage
646
+ npx svgo input.svg -o output.svg
647
+
648
+ # Batch optimize entire directory
649
+ npx svgo -f ./src/assets/icons -o ./src/assets/icons-optimized
650
+
651
+ # Show savings
652
+ npx svgo input.svg --pretty --indent=2
653
+ ```
654
+
655
+ ### Manual Optimization Checklist
656
+
657
+ 1. **Remove metadata** — XML declarations, editor comments, `<metadata>` blocks
658
+ 2. **Remove hidden elements** — layers with `display:none`, elements outside viewBox
659
+ 3. **Simplify paths** — reduce decimal precision (`d="M 10.000 20.000"` to `d="M10 20"`)
660
+ 4. **Merge paths** — combine shapes with same fill/stroke into single `<path>`
661
+ 5. **Use `<use>` for repeated elements** — define once in `<defs>`, reference with `<use href="#id"/>`
662
+ 6. **Remove unnecessary `<g>` wrappers** — flatten group transforms into child elements
663
+ 7. **Convert shapes to paths** — when it produces shorter code (SVGO does this)
664
+ 8. **Use CSS classes** instead of inline styles for repeated visual properties
665
+
666
+ ### Before/After Example
667
+
668
+ ```xml
669
+ <!-- BEFORE: 2.1 KB (exported from Figma) -->
670
+ <?xml version="1.0" encoding="UTF-8"?>
671
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1"
672
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
673
+ <!-- Generator: Figma -->
674
+ <title>icon/check</title>
675
+ <desc>Created with Figma.</desc>
676
+ <g id="icon/check" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
677
+ <g id="Group" transform="translate(2.000000, 4.000000)" stroke="#000000" stroke-width="2.00000">
678
+ <polyline id="Path" points="0 8.00000 6.00000 14.0000 18.0000 2.00000"></polyline>
679
+ </g>
680
+ </g>
681
+ </svg>
682
+
683
+ <!-- AFTER: 138 bytes (optimized) -->
684
+ <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
685
+ <path d="M2 12l6 6L22 6" stroke="#000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
686
+ </svg>
687
+ ```
688
+
689
+ ---
690
+
691
+ ## Accessibility
692
+
693
+ SVGs need proper accessibility attributes, especially when they convey meaning.
694
+
695
+ ### Decorative SVGs (Ignore by Screen Readers)
696
+
697
+ ```tsx
698
+ // Purely decorative — hide from assistive technology
699
+ <svg aria-hidden="true" focusable="false" viewBox="0 0 24 24">
700
+ <path d="..." />
701
+ </svg>
702
+ ```
703
+
704
+ ### Meaningful SVGs (Icons with Purpose)
705
+
706
+ ```tsx
707
+ // Icon that conveys information
708
+ <svg viewBox="0 0 24 24" role="img" aria-labelledby="icon-title">
709
+ <title id="icon-title">Warning: unsaved changes</title>
710
+ <path d="..." />
711
+ </svg>
712
+ ```
713
+
714
+ ### Complex SVGs (Charts, Infographics)
715
+
716
+ ```tsx
717
+ // Chart or complex graphic
718
+ <svg viewBox="0 0 400 300" role="img" aria-labelledby="chart-title chart-desc">
719
+ <title id="chart-title">Monthly Revenue</title>
720
+ <desc id="chart-desc">
721
+ Bar chart showing monthly revenue from January to June 2025.
722
+ Revenue grew from $12K in January to $28K in June.
723
+ </desc>
724
+ {/* chart content */}
725
+ </svg>
726
+ ```
727
+
728
+ ### Full Accessibility Pattern for Icon Buttons
729
+
730
+ ```tsx
731
+ // Icon-only button — needs accessible name
732
+ <button aria-label="Close dialog" className="icon-btn">
733
+ <svg aria-hidden="true" viewBox="0 0 24 24" width={20} height={20}>
734
+ <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" strokeWidth={2}
735
+ strokeLinecap="round"/>
736
+ </svg>
737
+ </button>
738
+ ```
739
+
740
+ ### Key Rules
741
+
742
+ | SVG Role | Required Attributes |
743
+ |----------|-------------------|
744
+ | Decorative (no meaning) | `aria-hidden="true"` |
745
+ | Informational icon | `role="img"` + `<title>` + `aria-labelledby` |
746
+ | Interactive (in a button) | `aria-hidden="true"` on SVG, `aria-label` on button |
747
+ | Complex (chart/diagram) | `role="img"` + `<title>` + `<desc>` + `aria-labelledby` |
748
+
749
+ ---
750
+