@thierrynakoa/fire-flow 12.2.1 → 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 (500) hide show
  1. package/CREDITS.md +25 -0
  2. package/DOMINION-FLOW-OVERVIEW.md +182 -38
  3. package/README.md +399 -455
  4. package/TROUBLESHOOTING.md +264 -264
  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-vuln-scan.md +492 -493
  52. package/hooks/run-hook.sh +8 -8
  53. package/hooks/run-session-end.sh +7 -7
  54. package/hooks/session-end.sh +90 -90
  55. package/hooks/session-start.sh +1 -1
  56. package/package.json +4 -24
  57. package/plugin.json +7 -7
  58. package/references/autonomy-levels.md +235 -0
  59. package/references/behavioral-directives.md +95 -3
  60. package/references/blocker-tracking.md +1 -1
  61. package/references/circuit-breaker.md +93 -2
  62. package/references/context-engineering.md +227 -9
  63. package/references/honesty-protocols.md +70 -1
  64. package/references/issue-to-pr-pipeline.md +149 -150
  65. package/references/metrics-and-trends.md +1 -2
  66. package/references/research-improvements.md +4 -108
  67. package/references/sdlc-mapping.md +73 -0
  68. package/references/state-machine.md +151 -0
  69. package/skills-library/AVAILABLE_TOOLS_REFERENCE.md +333 -0
  70. package/skills-library/SKILLS-INDEX.md +57 -558
  71. package/skills-library/SKILLS_LIBRARY_INDEX.md +532 -0
  72. package/skills-library/_general/api-patterns/api-field-name-mismatch.md +107 -0
  73. package/skills-library/_general/api-patterns/streaming-command-timeout.md +122 -0
  74. package/skills-library/_general/api-patterns/streaming-proxy-cors-bypass.md +102 -0
  75. package/skills-library/_general/automation/settings-gui-generator.md +172 -0
  76. package/skills-library/_general/database-solutions/data-type-mapping-reference.md +181 -0
  77. package/skills-library/_general/database-solutions/mysql-limit-offset-string-coercion.md +102 -0
  78. package/skills-library/_general/database-solutions/mysql-to-pg-migration.md +195 -0
  79. package/skills-library/_general/database-solutions/orm-schema-portability.md +193 -0
  80. package/skills-library/_general/database-solutions/persistent-analysis-storage.md +207 -0
  81. package/skills-library/_general/database-solutions/pg-to-mysql-schema-migration-methodology.md +190 -0
  82. package/skills-library/_general/database-solutions/sql-dialect-compatibility-matrix.md +306 -0
  83. package/skills-library/_general/database-solutions/sqlite-to-pg-migration.md +219 -0
  84. package/skills-library/_general/frontend/canvas-bubble-animation-grouping.md +270 -0
  85. package/skills-library/_general/frontend/color-token-migration.md +112 -0
  86. package/skills-library/_general/frontend/framer-motion-layoutid-grouping.md +150 -0
  87. package/skills-library/_general/frontend/pyqt6-settings-dialog.md +191 -0
  88. package/skills-library/_general/frontend/react-flow-animated-layout-switching.md +101 -0
  89. package/skills-library/_general/frontend/react-hooks-order-debugging.md +141 -0
  90. package/skills-library/_general/frontend/redux-localstorage-auth-desync.md +126 -0
  91. package/skills-library/_general/frontend/safari-csp-theme-color-debugging.md +124 -0
  92. package/skills-library/_general/frontend/safari-sw-cache-poisoning.md +138 -0
  93. package/skills-library/_general/frontend/svg-sparkline-no-charting-library.md +131 -0
  94. package/skills-library/_general/growth-marketing/oss-daily-growth-intelligence.md +224 -0
  95. package/skills-library/_general/integrations/claude-code-local-mcp-integration.md +250 -0
  96. package/skills-library/_general/integrations/mcp-composite-tool-orchestration.md +200 -0
  97. package/skills-library/_general/methodology/AGENT_SDK_STANDALONE_TOOLING.md +181 -0
  98. package/skills-library/_general/methodology/AGENT_TEAMS_GUIDE.md +169 -0
  99. package/skills-library/_general/methodology/ALAS_STATEFUL_EXECUTION.md +207 -0
  100. package/skills-library/_general/methodology/AUTO_REVIEWER_SUBAGENT.md +211 -0
  101. package/skills-library/_general/methodology/CONSISTENCY_CHECK_AMBIGUITY_GATE.md +96 -0
  102. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +4 -4
  103. package/skills-library/_general/methodology/DISTILL_NOT_DUMP.md +108 -0
  104. package/skills-library/_general/methodology/EXECUTION_PROGRESS_MONITOR.md +157 -0
  105. package/skills-library/_general/methodology/HIERARCHICAL_REVIEW_MARS.md +122 -0
  106. package/skills-library/_general/methodology/MCP_INTER_AGENT_BRIDGE.md +207 -0
  107. package/skills-library/_general/methodology/MERMAID_WIZARD_DIAGRAMS.md +77 -0
  108. package/skills-library/_general/methodology/MISSING_DIMENSION_DETECTOR.md +89 -0
  109. package/skills-library/_general/methodology/MULTI_AGENT_COORDINATION.md +397 -0
  110. package/skills-library/_general/methodology/OBSERVATION_MASKING.md +100 -0
  111. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +82 -11
  112. package/skills-library/_general/methodology/REVIEW_BACKTRACK_PANEL.md +140 -0
  113. package/skills-library/_general/methodology/REVIEW_FIX_LOOP.md +117 -0
  114. package/skills-library/_general/methodology/VOTING_VERDICT_ARBITRATION.md +155 -0
  115. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +2 -2
  116. package/skills-library/_general/methodology/dead-code-activation.md +123 -0
  117. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  118. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +1 -1
  119. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +5 -5
  120. package/skills-library/_general/patterns-standards/cascading-failure-diagnosis.md +119 -0
  121. package/skills-library/_general/patterns-standards/domain-specific-layout-algorithms.md +209 -0
  122. package/skills-library/_general/patterns-standards/python-desktop-app-architecture.md +399 -0
  123. package/skills-library/_general/patterns-standards/realtime-monitoring-dashboard.md +457 -0
  124. package/skills-library/_general/patterns-standards/togglable-processing-pipeline.md +169 -0
  125. package/skills-library/_general/performance/liveclock-extraction.md +112 -0
  126. package/skills-library/_general/performance/ref-based-canvas-animation.md +117 -0
  127. package/skills-library/_general/performance/use-visible-interval.md +131 -0
  128. package/skills-library/_general/testing/playwright-firefox-withcredentials-auth-issue.md +104 -0
  129. package/skills-library/_quarantine/README.md +30 -0
  130. package/skills-library/api-patterns/BROADCAST_SCHEDULER_SHARED_EXECUTE_FUNCTION.md +150 -0
  131. package/skills-library/api-patterns/ERROR_RESPONSE_STANDARDS.md +145 -0
  132. package/skills-library/api-patterns/EXPRESS_ROUTE_ORDERING_MIDDLEWARE_INTERCEPTION.md +326 -0
  133. package/skills-library/api-patterns/PAGINATION_PATTERNS.md +137 -0
  134. package/skills-library/api-patterns/PODCAST_PROGRESS_TRACKING_THREE_ROOT_CAUSES.md +277 -0
  135. package/skills-library/api-patterns/RATE_LIMITING_TOGGLE.md +155 -0
  136. package/skills-library/api-patterns/graphql-content-queries.md +708 -0
  137. package/skills-library/appointment-scheduler-design.md +423 -0
  138. package/skills-library/automation/AUTO_POPULATE_COMPLETE_GUIDE.md +631 -0
  139. package/skills-library/automation/CC_WORKFLOW_STUDIO.md +83 -0
  140. package/skills-library/automation/CLAUDE_CODE_SWARM_MODE.md +95 -0
  141. package/skills-library/automation/DAEMON_TRIGGER_FILE_IPC.md +195 -0
  142. package/skills-library/automation/scheduled-content-publishing.md +608 -0
  143. package/skills-library/awesome-workflows/Blogging-Platform-Instructions/view_commands.md +25 -0
  144. package/skills-library/awesome-workflows/CREDENTIAL-SECURITY-WORKFLOW.md +109 -0
  145. package/skills-library/awesome-workflows/DEBUGGING-WORKFLOW.md +124 -0
  146. package/skills-library/awesome-workflows/Design-Review-Workflow/README.md +31 -0
  147. package/skills-library/awesome-workflows/Design-Review-Workflow/design-principles-example.md +129 -0
  148. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-agent.md +107 -0
  149. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-claude-md-snippet.md +24 -0
  150. package/skills-library/awesome-workflows/Design-Review-Workflow/design-review-slash-command.md +38 -0
  151. package/skills-library/awesome-workflows/PARALLEL-RESEARCH-WORKFLOW.md +89 -0
  152. package/skills-library/awesome-workflows/PHASE-EXECUTION-WORKFLOW.md +97 -0
  153. package/skills-library/awesome-workflows/SESSION-HANDOFF-WORKFLOW.md +116 -0
  154. package/skills-library/cms-patterns/content-branch-preview.md +515 -0
  155. package/skills-library/cms-patterns/inline-visual-editing.md +666 -0
  156. package/skills-library/cms-patterns/mdx-component-content.md +649 -0
  157. package/skills-library/cms-patterns/media-manager-abstraction.md +827 -0
  158. package/skills-library/cms-patterns/schema-driven-form-generator.md +838 -0
  159. package/skills-library/complexity-metrics/complexity-divider.md +707 -0
  160. package/skills-library/complexity-metrics/work-with-complexity.md +193 -0
  161. package/skills-library/creative-multimedia/animation-stack-guide.md +577 -0
  162. package/skills-library/creative-multimedia/audio-enhancement-pipeline.md +625 -0
  163. package/skills-library/creative-multimedia/content-repurposing-pipeline.md +1146 -0
  164. package/skills-library/creative-multimedia/data-visualization-generator.md +862 -0
  165. package/skills-library/creative-multimedia/doc-to-podcast-pipeline.md +2184 -0
  166. package/skills-library/creative-multimedia/ffmpeg-command-generator.md +405 -0
  167. package/skills-library/creative-multimedia/image-optimization-pipeline.md +605 -0
  168. package/skills-library/creative-multimedia/multi-format-content-generator.md +1759 -0
  169. package/skills-library/creative-multimedia/og-image-generator.md +635 -0
  170. package/skills-library/creative-multimedia/podcast-audio-composition.md +1355 -0
  171. package/skills-library/creative-multimedia/podcast-quality-evaluation.md +1452 -0
  172. package/skills-library/creative-multimedia/podcast-script-generation.md +1841 -0
  173. package/skills-library/creative-multimedia/svg-generation.md +750 -0
  174. package/skills-library/creative-multimedia/text-to-speech-provider-selector.md +1414 -0
  175. package/skills-library/creative-multimedia/transcription-pipeline-selector.md +677 -0
  176. package/skills-library/creative-multimedia/video-streaming-setup.md +559 -0
  177. package/skills-library/database-solutions/AI_RESPONSE_DATABASE_CACHING.md +520 -0
  178. package/skills-library/database-solutions/CONDITIONAL_SQL_MIGRATION_PATTERN.md +119 -0
  179. package/skills-library/database-solutions/DATABASE_COLUMN_NAME_MISMATCH.md +393 -0
  180. package/skills-library/database-solutions/DATABASE_SCHEMA.md +394 -0
  181. package/skills-library/database-solutions/DATABASE_SCHEMA_VERIFICATION_GUIDE.md +348 -0
  182. package/skills-library/database-solutions/DATABASE_STRATEGY.md +71 -0
  183. package/skills-library/database-solutions/ES_MODULE_SEED_SCRIPT_PATTERN.md +52 -0
  184. package/skills-library/database-solutions/MIGRATION_GUIDE.md +3 -0
  185. package/skills-library/database-solutions/PLPGSQL_VARIABLE_CONFLICT_FIX.md +208 -0
  186. package/skills-library/database-solutions/POSTGRESQL_JSONB_DOUBLE_STRINGIFY_FIX.md +245 -0
  187. package/skills-library/database-solutions/POSTGRESQL_LICENSE_TABLE_DESIGN.md +393 -0
  188. package/skills-library/database-solutions/POSTGRESQL_UUID_DOCUMENT_RAG_DUAL_SCOPE.md +732 -0
  189. package/skills-library/database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md +240 -0
  190. package/skills-library/database-solutions/PRISMA_DB_PUSH_DATA_LOSS_PREVENTION.md +141 -0
  191. package/skills-library/database-solutions/PRODUCTION_QUERY_OPTIMIZATION_RESTART_FIX.md +389 -0
  192. package/skills-library/database-solutions/RLS_SECURITY_GUIDE.md +107 -0
  193. package/skills-library/database-solutions/SCHEMA_ENHANCEMENTS_GUIDE.md +373 -0
  194. package/skills-library/database-solutions/SCHEMA_MIGRATION_GUIDE.md +368 -0
  195. package/skills-library/database-solutions/SCHEMA_VERIFICATION_QUICK_REFERENCE.md +104 -0
  196. package/skills-library/database-solutions/ai-erd-generator.md +1213 -0
  197. package/skills-library/database-solutions/content-publishing-states.md +631 -0
  198. package/skills-library/database-solutions/database-schema-designer.md +522 -0
  199. package/skills-library/database-solutions/er-diagram-components.md +569 -0
  200. package/skills-library/database-solutions/er-to-ddl-mapping.md +1405 -0
  201. package/skills-library/database-solutions/erd-creator-textbook-research.md +433 -0
  202. package/skills-library/database-solutions/erd-react-flow-architecture.md +1965 -0
  203. package/skills-library/database-solutions/mariadb-aggregate-function-replacement.md +145 -0
  204. package/skills-library/database-solutions/normalization-validator.md +778 -0
  205. package/skills-library/database-solutions/postgres-full-text-search-content.md +494 -0
  206. package/skills-library/database-solutions/postgresql-to-mysql-runtime-translation.md +286 -0
  207. package/skills-library/database-solutions/regex-alternation-ordering-sql-types.md +92 -0
  208. package/skills-library/database-solutions/reserved-word-context-aware-quoting.md +142 -0
  209. package/skills-library/database-solutions/sql-ddl-generator.md +756 -0
  210. package/skills-library/database-solutions/supabase-connection-pooler-fix.md +102 -0
  211. package/skills-library/deployment-security/CPANEL_NODE_DEPLOYMENT.md +166 -0
  212. package/skills-library/deployment-security/DEPLOYMENT.md +275 -0
  213. package/skills-library/deployment-security/DEPLOYMENT_CHECKLIST.md +363 -0
  214. package/skills-library/deployment-security/DEPLOYMENT_PLAN.md +669 -0
  215. package/skills-library/deployment-security/KNEX_DATABASE_ABSTRACTION.md +444 -0
  216. package/skills-library/deployment-security/LICENSE_KEY_SYSTEM.md +206 -0
  217. package/skills-library/deployment-security/NODE18_DEPENDENCY_COMPATIBILITY.md +284 -0
  218. package/skills-library/deployment-security/PHP_INSTALLER_WIZARD_GUIDE.md +315 -0
  219. package/skills-library/deployment-security/PM2_ENVIRONMENT_VARIABLE_CACHING.md +256 -0
  220. package/skills-library/deployment-security/PM2_MEMORY_EXHAUSTION_FIX.md +370 -0
  221. package/skills-library/deployment-security/PRODUCTION_DEPLOYMENT_GUIDE.md +592 -0
  222. package/skills-library/deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md +307 -0
  223. package/skills-library/deployment-security/PRODUCTION_RECOVERY_CHERRY_PICK_PATTERN.md +202 -0
  224. package/skills-library/deployment-security/PYINSTALLER_CUDA_WHISPER_BUNDLING.md +236 -0
  225. package/skills-library/deployment-security/SECURITY.md +41 -0
  226. package/skills-library/deployment-security/SMTP_SSL_HOSTNAME_MISMATCH_SHARED_HOSTING.md +220 -0
  227. package/skills-library/deployment-security/SPA_SEO_OPTIMIZATION_CPANEL.md +200 -0
  228. package/skills-library/deployment-security/SUPABASE_EDGE_FUNCTIONS.md +338 -0
  229. package/skills-library/deployment-security/VERCEL_GITHUB_DEPLOYMENT_GUIDE.md +858 -0
  230. package/skills-library/deployment-security/VPS_DEPLOYMENT_READINESS.md +356 -0
  231. package/skills-library/deployment-security/deployment-changes-not-applying.md +241 -0
  232. package/skills-library/deployment-security/env-file-management-production-local.md +203 -0
  233. package/skills-library/deployment-security/express-secure-file-downloads.md +413 -0
  234. package/skills-library/deployment-security/react-production-deployment-desktop-guide.md +2011 -0
  235. package/skills-library/deployment-security/self-hosted-supabase-coolify-guide.md +1684 -0
  236. package/skills-library/deployment-security/unique-features-ai-strategy-plaid-security.md +1613 -0
  237. package/skills-library/deployment-security/vps-deployment.md +135 -0
  238. package/skills-library/document-processing/WORD_EXPORT_MARKDOWN_FORMATTING.md +482 -0
  239. package/skills-library/document-processing/document-ai-landingai-integration.md +677 -0
  240. package/skills-library/document-processing/express-secure-file-downloads-mern.md +413 -0
  241. package/skills-library/document-processing/express-secure-file-downloads.md +413 -0
  242. package/skills-library/document-processing/md-to-word-converter.md +318 -0
  243. package/skills-library/document-processing/pdf-forms-integration/README.md +101 -0
  244. package/skills-library/document-processing/pdf-forms-integration/SKILL.md +662 -0
  245. package/skills-library/ecommerce/ADMIN_PRODUCTS_GUIDE.md +428 -0
  246. package/skills-library/ecommerce/ECOMMERCE_API_REFERENCE.md +776 -0
  247. package/skills-library/ecommerce/ECOMMERCE_COMPLETION_SUMMARY.md +673 -0
  248. package/skills-library/ecommerce/ECOMMERCE_IMPLEMENTATION_GUIDE.md +729 -0
  249. package/skills-library/ecommerce/ECOMMERCE_QUICK_REFERENCE.md +521 -0
  250. package/skills-library/ecommerce/ECOMMERCE_TESTING_CHECKLIST.md +565 -0
  251. package/skills-library/ecommerce/ECOMMERCE_WORKFLOW_GUIDE.md +1059 -0
  252. package/skills-library/ecommerce/PRODUCT_CREATION_EXPANDED.md +522 -0
  253. package/skills-library/ecommerce/agentic-commerce-protocol.md +203 -0
  254. package/skills-library/ecommerce/cart-abandonment-recovery.md +236 -0
  255. package/skills-library/ecommerce/cart-architecture-patterns.md +300 -0
  256. package/skills-library/ecommerce/cart-item-count-indicator.md +264 -0
  257. package/skills-library/ecommerce/checkout-ux-conversion.md +227 -0
  258. package/skills-library/ecommerce/composable-commerce-selection.md +166 -0
  259. package/skills-library/ecommerce/ecommerce-analytics-patterns.md +167 -0
  260. package/skills-library/ecommerce/fraud-detection-patterns.md +179 -0
  261. package/skills-library/ecommerce/inventory-stock-management.md +270 -0
  262. package/skills-library/ecommerce/order-saga-state-machine.md +336 -0
  263. package/skills-library/ecommerce/payment-provider-abstraction.md +245 -0
  264. package/skills-library/ecommerce/pci-compliance-checklist.md +192 -0
  265. package/skills-library/ecommerce/refund-chargeback-handling.md +177 -0
  266. package/skills-library/ecommerce/shipping-carrier-integration.md +218 -0
  267. package/skills-library/ecommerce/webhook-idempotency-patterns.md +253 -0
  268. package/skills-library/excalidraw-diagrams/.github/workflows/ci.yml +558 -0
  269. package/skills-library/excalidraw-diagrams/.github/workflows/prompt-gallery.yml +448 -0
  270. package/skills-library/excalidraw-diagrams/.github/workflows/release.yml +42 -0
  271. package/skills-library/excalidraw-diagrams/.github/workflows/test-reusable-ci.yml +25 -0
  272. package/skills-library/excalidraw-diagrams/CLAUDE.md +57 -0
  273. package/skills-library/excalidraw-diagrams/LICENSE +21 -0
  274. package/skills-library/excalidraw-diagrams/README.md +178 -0
  275. package/skills-library/excalidraw-diagrams/SKILL.md +715 -0
  276. package/skills-library/form-solutions/BUTTON_TYPE_FORM_SUBMISSION.md +336 -0
  277. package/skills-library/form-solutions/FILLABLE_PDF_IMPLEMENTATION.md +226 -0
  278. package/skills-library/form-solutions/SURVEYJS_QUESTIONNAIRE_SYSTEM.md +367 -0
  279. package/skills-library/form-solutions/tiptap-minimal-setup.md +690 -0
  280. package/skills-library/frontend/scholarly-classification-bubble-map.md +149 -0
  281. package/skills-library/infrastructure/ci-cd-pipeline-builder.md +517 -0
  282. package/skills-library/infrastructure/observability-designer.md +264 -0
  283. package/skills-library/infrastructure/performance-profiler.md +621 -0
  284. package/skills-library/installer-wizard-patterns.md +249 -0
  285. package/skills-library/integrations/CLAUDE_CODE_TOKEN_ANALYTICS.md +160 -0
  286. package/skills-library/integrations/CONFIGURABLE_AI_PROVIDER_SELECTION.md +728 -0
  287. package/skills-library/integrations/SOCKET_IO_BROADCAST_ALL_VS_ROOM.md +141 -0
  288. package/skills-library/integrations/VIRTUAL_MEETINGS_IMPLEMENTATION.md +374 -0
  289. package/skills-library/integrations/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  290. package/skills-library/integrations/YOUTUBE_API_SETUP.md +141 -0
  291. package/skills-library/integrations/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  292. package/skills-library/integrations/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  293. package/skills-library/integrations/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  294. package/skills-library/integrations/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  295. package/skills-library/integrations/ai-ml/GEMINI_AI_RAG_PIPELINE_COMPLETE_GUIDE.md +195 -0
  296. package/skills-library/integrations/ai-ml/GEMINI_IMAGE_GENERATION_SETUP.md +64 -0
  297. package/skills-library/integrations/cloudflare/cloudflare-turnstile-debugging.md +202 -0
  298. package/skills-library/integrations/cloudflare/cloudflare-turnstile-implementation.md +476 -0
  299. package/skills-library/integrations/cloudflare-turnstile-debugging.md +202 -0
  300. package/skills-library/integrations/cloudflare-turnstile-implementation.md +476 -0
  301. package/skills-library/integrations/ghost-creator-monetization-pattern.md +454 -0
  302. package/skills-library/integrations/headless-cms-architecture.md +484 -0
  303. package/skills-library/integrations/headless-cms-stack-selection.md +183 -0
  304. package/skills-library/integrations/payload-cms-patterns.md +674 -0
  305. package/skills-library/integrations/realtimestt-openwakeword-cuda-windows.md +229 -0
  306. package/skills-library/integrations/rss-podcast-integration.md +300 -0
  307. package/skills-library/integrations/wordpress/WORDPRESS_LEARNDASH_DATA_RECOVERY.md +53 -0
  308. package/skills-library/integrations/youtube/YOUTUBE_API_SETUP.md +141 -0
  309. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_EXPLANATION.md +252 -0
  310. package/skills-library/integrations/youtube/YOUTUBE_BOOKMARKING_SOLUTION.md +268 -0
  311. package/skills-library/integrations/youtube/YOUTUBE_OAUTH_SETUP_GUIDE.md +200 -0
  312. package/skills-library/integrations/youtube/YOUTUBE_VIDEO_FIX_COMPLETE.md +192 -0
  313. package/skills-library/marketing/campaign-analytics.md +97 -0
  314. package/skills-library/marketing/content-creator.md +105 -0
  315. package/skills-library/marketing/marketing-strategy-pmm.md +94 -0
  316. package/skills-library/marketing/social-media-analyzer.md +81 -0
  317. package/skills-library/methodology/ADVANCED_ORCHESTRATION_PATTERNS.md +401 -0
  318. package/skills-library/methodology/AGENT_SELF_IMPROVEMENT_LOOP.md +179 -0
  319. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  320. package/skills-library/methodology/CLEANSING_CYCLE.md +358 -0
  321. package/skills-library/methodology/CONFIDENCE_ANNOTATION_PATTERN.md +143 -0
  322. package/skills-library/methodology/CRITICAL_PATTERNS_DOCUMENTATION_COMPLETE.md +204 -0
  323. package/skills-library/methodology/DELIVERABLES_SUMMARY.md +341 -0
  324. package/skills-library/methodology/DIFFICULTY_AWARE_AGENT_ROUTING.md +252 -0
  325. package/skills-library/methodology/EVOLUTIONARY_SKILL_SYNTHESIS.md +219 -0
  326. package/skills-library/methodology/GLOMERULUS_DECISION_GATE.md +223 -0
  327. package/skills-library/methodology/HIBERNATION_SYSTEM.md +231 -0
  328. package/skills-library/methodology/INSTRUMENTATION_OVER_RESTRICTION.md +192 -0
  329. package/skills-library/methodology/MASTER_COMPLETION_SUMMARY.md +444 -0
  330. package/skills-library/methodology/MASTER_SESSION_COMPLETION.md +743 -0
  331. package/skills-library/methodology/MERN_QUICK_REFERENCE.md +358 -0
  332. package/skills-library/methodology/ORGAN_AGENT_MAPPING.md +177 -0
  333. package/skills-library/methodology/PARALLEL_WAVE_BASED_REFACTORING.md +440 -0
  334. package/skills-library/methodology/QUICK_REFERENCE.md +358 -0
  335. package/skills-library/methodology/SDFT_ONPOLICY_SELF_DISTILLATION.md +186 -0
  336. package/skills-library/methodology/SELF_QUESTIONING_TASK_GENERATION.md +270 -0
  337. package/skills-library/methodology/SESSION_COMPLETION_SUMMARY.md +304 -0
  338. package/skills-library/methodology/SESSION_SUMMARY.md +432 -0
  339. package/skills-library/methodology/WARRIOR_WORKFLOW_DEBUGGING_PROTOCOL.md +252 -0
  340. package/skills-library/methodology/tech-debt-tracker.md +570 -0
  341. package/skills-library/parallel-debug/SKILL.md +60 -0
  342. package/skills-library/patterns-standards/API_PATTERN_FIX_SUMMARY.md +236 -0
  343. package/skills-library/patterns-standards/BATCH_OPERATIONS_WITH_PROGRESS_MODAL.md +362 -0
  344. package/skills-library/patterns-standards/CRITICAL_CODING_PATTERNS.md +639 -0
  345. package/skills-library/patterns-standards/DARK_MODE_MODAL_VISIBILITY.md +258 -0
  346. package/skills-library/patterns-standards/ERROR_RESILIENCE_IMPLEMENTATION.md +375 -0
  347. package/skills-library/patterns-standards/ES_MODULE_IMPORT_HOISTING_DOTENV.md +298 -0
  348. package/skills-library/patterns-standards/NESTED_BACKDROP_FILTER_CSS_ARTIFACT_FIX.md +76 -0
  349. package/skills-library/patterns-standards/ORDERED_DETECTOR_PIPELINE_GRACEFUL_FALLBACK.md +333 -0
  350. package/skills-library/patterns-standards/PHASE_IMPORT_ERROR_DEBUGGING.md +271 -0
  351. package/skills-library/patterns-standards/PYNPUT_GLOBAL_HOTKEY_VK_MATCHING.md +252 -0
  352. package/skills-library/patterns-standards/REACT_USEEFFECT_CASCADE_RESET_FIX.md +132 -0
  353. package/skills-library/patterns-standards/SUBMENU_HOVER_DROPDOWN_PATTERN.md +225 -0
  354. package/skills-library/patterns-standards/TAILWIND_TEXT_VISIBILITY_OVERRIDE.md +322 -0
  355. package/skills-library/patterns-standards/THEME_AWARE_CSS_VARIABLES_PATTERN.md +209 -0
  356. package/skills-library/patterns-standards/THEME_USER_OBJECT_PROPERTY_NAMING.md +194 -0
  357. package/skills-library/patterns-standards/TOOLTIP_BLOCKING_CLICKS_FIX.md +267 -0
  358. package/skills-library/patterns-standards/claude-code-plugin-structure.md +235 -0
  359. package/skills-library/patterns-standards/react-i18next-setup.md +429 -0
  360. package/skills-library/patterns-standards/thesys-c1-generative-ui-integration.md +967 -0
  361. package/skills-library/plugin-development/CLAUDE_CODE_COMMAND_REGISTRATION_SILENT_FAILURE.md +315 -0
  362. package/skills-library/plugin-development/plugin-command-namespace-vs-global.md +390 -0
  363. package/skills-library/plugin-development/plugin-doc-auto-generation.md +172 -0
  364. package/skills-library/security/GITHUB_REPO_SECURITY_AUDIT.md +115 -0
  365. package/skills-library/security/admin-deletion-safety.md +396 -0
  366. package/skills-library/security/application-vuln-patterns.md +477 -0
  367. package/skills-library/security/env-secrets-manager.md +686 -0
  368. package/skills-library/security/secure-ai-application-templates.md +347 -0
  369. package/skills-library/security/sql-injection-prevention-postgresjs.md +151 -0
  370. package/skills-library/supabase-connection-pooler-fix.md +102 -0
  371. package/skills-library/system-context/POWERSHELL_BASH_INTEROP.md +82 -0
  372. package/skills-library/system-context/SERVICE_LIFECYCLE_MANAGEMENT.md +119 -0
  373. package/skills-library/system-context/SKILL.md +40 -0
  374. package/skills-library/system-context/WINDOWS_DEV_ENVIRONMENT.md +73 -0
  375. package/skills-library/testing/E2E_PLAYWRIGHT_PATTERNS.md +99 -0
  376. package/skills-library/testing/INTEGRATION_TEST_STRATEGY.md +82 -0
  377. package/skills-library/testing/RED_GREEN_BUGFIX_GATE.md +203 -0
  378. package/skills-library/testing/TEST_DATA_MANAGEMENT.md +69 -0
  379. package/skills-library/testing/VITEST_UNIT_TEST_PATTERNS.md +75 -0
  380. package/skills-library/testing/playwright-api-security-tests.md +202 -0
  381. package/skills-library/toolbox/SKILL.md +84 -0
  382. package/skills-library/toolbox/code-graph-and-web-scraping-mcps.md +237 -0
  383. package/skills-library/ui-ux-pro-max/ACCESSIBILITY_ESSENTIALS.md +115 -0
  384. package/skills-library/ui-ux-pro-max/DESIGN_SYSTEM_SCAFFOLDING.md +133 -0
  385. package/skills-library/ui-ux-pro-max/RESPONSIVE_LAYOUT_PATTERNS.md +119 -0
  386. package/skills-library/ui-ux-pro-max/SKILL.md +386 -0
  387. package/skills-library/ui-ux-pro-max/data/charts.csv +26 -0
  388. package/skills-library/ui-ux-pro-max/data/colors.csv +97 -0
  389. package/skills-library/ui-ux-pro-max/data/icons.csv +101 -0
  390. package/skills-library/ui-ux-pro-max/data/landing.csv +31 -0
  391. package/skills-library/ui-ux-pro-max/data/products.csv +97 -0
  392. package/skills-library/ui-ux-pro-max/data/react-performance.csv +45 -0
  393. package/skills-library/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  394. package/skills-library/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  395. package/skills-library/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  396. package/skills-library/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  397. package/skills-library/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  398. package/skills-library/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  399. package/skills-library/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  400. package/skills-library/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  401. package/skills-library/ui-ux-pro-max/data/stacks/react.csv +54 -0
  402. package/skills-library/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  403. package/skills-library/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  404. package/skills-library/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  405. package/skills-library/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  406. package/skills-library/ui-ux-pro-max/data/styles.csv +68 -0
  407. package/skills-library/ui-ux-pro-max/data/typography.csv +58 -0
  408. package/skills-library/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  409. package/skills-library/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  410. package/skills-library/ui-ux-pro-max/data/web-interface.csv +31 -0
  411. package/skills-library/wordpress-style-theme-components.md +1526 -0
  412. package/templates/ASSUMPTIONS.md +1 -1
  413. package/templates/DECISION_LOG.md +0 -1
  414. package/templates/phase-prompt.md +1 -1
  415. package/templates/phoenix-comparison.md +6 -6
  416. package/templates/skill-api-integration.md +106 -0
  417. package/templates/skill-architecture-pattern.md +92 -0
  418. package/templates/skill-debug-pattern.md +98 -0
  419. package/templates/skill-devops-recipe.md +107 -0
  420. package/templates/skill-general.md +65 -0
  421. package/templates/skill-ui-component.md +113 -0
  422. package/tools/uat-runner.py +179 -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/code-documenter.md +0 -51
  484. package/skills-library/specialists/quality/code-reviewer.md +0 -67
  485. package/skills-library/specialists/quality/debugging-wizard.md +0 -51
  486. package/skills-library/specialists/quality/fullstack-guardian.md +0 -51
  487. package/skills-library/specialists/quality/legacy-modernizer.md +0 -50
  488. package/skills-library/specialists/quality/playwright-expert.md +0 -65
  489. package/skills-library/specialists/quality/spec-miner.md +0 -56
  490. package/skills-library/specialists/quality/test-master.md +0 -65
  491. package/skills-library/specialists/security/secure-code-guardian.md +0 -55
  492. package/skills-library/specialists/security/security-reviewer.md +0 -53
  493. package/skills-library/specialists/workflow/architecture-designer.md +0 -53
  494. package/skills-library/specialists/workflow/cli-developer.md +0 -70
  495. package/skills-library/specialists/workflow/feature-forge.md +0 -65
  496. package/skills-library/specialists/workflow/prompt-engineer.md +0 -54
  497. package/skills-library/specialists/workflow/the-fool.md +0 -62
  498. /package/skills-library/{performance → _general/performance}/cache-augmented-generation.md +0 -0
  499. /package/skills-library/{debugging → parallel-debug}/FAILURE_TAXONOMY_CLASSIFICATION.md +0 -0
  500. /package/skills-library/{debugging → parallel-debug}/THREE_AGENT_HYPOTHESIS_DEBUGGING.md +0 -0
@@ -0,0 +1,347 @@
1
+ ---
2
+ name: secure-ai-application-templates
3
+ category: security
4
+ version: 1.0.0
5
+ contributed: 2026-02-20
6
+ contributor: dominion-flow
7
+ last_updated: 2026-02-20
8
+ tags: [security, rag, ai-applications, prompt-injection, input-sanitization, output-filtering, canary-tokens, owasp]
9
+ difficulty: hard
10
+ usage_count: 0
11
+ success_rate: 100
12
+ ---
13
+
14
+ # Secure AI Application Templates
15
+
16
+ ## Problem
17
+
18
+ When building RAG applications, AI-powered functions, or any system that processes untrusted content through an LLM, developers often forget to include security layers until after an attack happens. The PoisonedRAG attack (USENIX 2025) showed that injecting just 5 malicious documents into a corpus of millions achieves 90% attack success.
19
+
20
+ Every AI application needs input sanitization, output filtering, document provenance tracking, and canary token monitoring built in from the start — not bolted on after a breach.
21
+
22
+ ## Solution Pattern
23
+
24
+ Include these security templates in every AI application by default. When building any RAG pipeline, AI function, or agent tool, copy the relevant template and adapt it.
25
+
26
+ ## Template 1: RAG Document Pre-Ingestion Scanner
27
+
28
+ **Use before:** Embedding any document into a vector database.
29
+
30
+ ```javascript
31
+ // rag-security.js — Pre-ingestion document scanner
32
+ // Apply BEFORE chunking and embedding. Reject or flag documents that fail.
33
+
34
+ const INVISIBLE_CHAR_REGEX = /[\u200B\u200C\u200D\uFEFF\u2060\u200E\u200F\u202A-\u202E\u2061-\u2064\uFFF9-\uFFFB\u00AD\u034F\u061C\u115F\u1160\u17B4\u17B5\u180E\u3164]/g;
35
+
36
+ // Tag characters used for ASCII smuggling (U+E0000-U+E007F)
37
+ const TAG_CHAR_REGEX = /[\uDB40\uDC00-\uDB40\uDC7F]/g;
38
+
39
+ const INJECTION_PATTERNS = [
40
+ /ignore\s+(all|previous|prior|above)\s+instructions/i,
41
+ /disregard\s+(all|prior|previous|above)/i,
42
+ /forget\s+(all|prior|previous|your)/i,
43
+ /new\s+instructions\s*:/i,
44
+ /system\s+(prompt|override|message)\s*:/i,
45
+ /you\s+are\s+now/i,
46
+ /act\s+as\s+(if\s+you\s+are|a)/i,
47
+ /bypass\s+(safety|security|filter|restriction)/i,
48
+ /\bDAN\s+mode\b/i,
49
+ /\bdeveloper\s+mode\b/i,
50
+ ];
51
+
52
+ const EXFILTRATION_PATTERNS = [
53
+ /collect\s+(all\s+)?api\s*key/i,
54
+ /read\s+\.env\s+and\s+(send|encode|include|append)/i,
55
+ /mail\s+.*\s+to\s+\S+@\S+/i,
56
+ /send\s+.*\s+(credentials|password|secret|key)\s+to/i,
57
+ /access\s+(crypto|bitcoin|ethereum)\s+wallet/i,
58
+ /base64\s+encode\s+.*\s+(secret|key|credential)/i,
59
+ /without\s+the\s+user\s+knowing/i,
60
+ /silently\s+(collect|gather|send|forward|transmit)/i,
61
+ ];
62
+
63
+ /**
64
+ * Scan a document before RAG ingestion.
65
+ * @param {string} content - Document text content
66
+ * @param {object} metadata - Document metadata (source, author, date)
67
+ * @returns {{ safe: boolean, findings: Array, sanitized: string }}
68
+ */
69
+ function scanForIngestion(content, metadata = {}) {
70
+ const findings = [];
71
+
72
+ // 1. Invisible character detection
73
+ const invisibleMatches = content.match(INVISIBLE_CHAR_REGEX);
74
+ const tagMatches = content.match(TAG_CHAR_REGEX);
75
+ if (invisibleMatches || tagMatches) {
76
+ findings.push({
77
+ severity: 'CRITICAL',
78
+ type: 'invisible_characters',
79
+ count: (invisibleMatches?.length || 0) + (tagMatches?.length || 0),
80
+ detail: 'Invisible characters found — may hide malicious instructions',
81
+ });
82
+ }
83
+
84
+ // 2. NFKC normalize before pattern scanning
85
+ const normalized = content.normalize('NFKC');
86
+
87
+ // 3. Prompt injection detection
88
+ for (const pattern of INJECTION_PATTERNS) {
89
+ const match = normalized.match(pattern);
90
+ if (match) {
91
+ findings.push({
92
+ severity: 'HIGH',
93
+ type: 'prompt_injection',
94
+ pattern: pattern.source,
95
+ matched: match[0],
96
+ detail: `Prompt injection pattern: "${match[0]}"`,
97
+ });
98
+ }
99
+ }
100
+
101
+ // 4. Exfiltration / credential harvesting detection
102
+ for (const pattern of EXFILTRATION_PATTERNS) {
103
+ const match = normalized.match(pattern);
104
+ if (match) {
105
+ findings.push({
106
+ severity: 'CRITICAL',
107
+ type: 'exfiltration',
108
+ pattern: pattern.source,
109
+ matched: match[0],
110
+ detail: `Exfiltration pattern: "${match[0]}"`,
111
+ });
112
+ }
113
+ }
114
+
115
+ // 5. Sanitize: strip invisible chars, NFKC normalize
116
+ const sanitized = normalized
117
+ .replace(INVISIBLE_CHAR_REGEX, '')
118
+ .replace(TAG_CHAR_REGEX, '');
119
+
120
+ const hasCritical = findings.some(f => f.severity === 'CRITICAL');
121
+ const hasHigh = findings.some(f => f.severity === 'HIGH');
122
+
123
+ return {
124
+ safe: !hasCritical && !hasHigh,
125
+ findings,
126
+ sanitized,
127
+ metadata: {
128
+ ...metadata,
129
+ scanned_at: new Date().toISOString(),
130
+ trust_level: hasCritical ? 'BLOCKED' : hasHigh ? 'SUSPICIOUS' : 'TRUSTED',
131
+ },
132
+ };
133
+ }
134
+
135
+ // Usage in RAG pipeline:
136
+ // const result = scanForIngestion(docContent, { source: 'upload', author: 'user' });
137
+ // if (!result.safe) { reject or quarantine the document }
138
+ // else { proceed to chunk and embed result.sanitized }
139
+ ```
140
+
141
+ ## Template 2: AI Function Output Filter
142
+
143
+ **Use after:** Any LLM generates output that will be displayed to users or executed.
144
+
145
+ ```javascript
146
+ // output-filter.js — Filter LLM output before returning to user
147
+ // Prevents the LLM from leaking secrets, PII, or executing injected instructions.
148
+
149
+ const SECRET_PATTERNS = [
150
+ { name: 'AWS Access Key', regex: /AKIA[0-9A-Z]{16}/g },
151
+ { name: 'Anthropic API Key', regex: /sk-ant-api03-[A-Za-z0-9\-_]{20,}/g },
152
+ { name: 'GitHub PAT', regex: /ghp_[A-Za-z0-9]{36}/g },
153
+ { name: 'Stripe Live Key', regex: /sk_live_[0-9a-zA-Z]{24,}/g },
154
+ { name: 'Private Key', regex: /-----BEGIN\s+(RSA|DSA|EC|PGP|ENCRYPTED)\s+PRIVATE\s+KEY-----/g },
155
+ { name: 'JWT Token', regex: /eyJ[A-Za-z0-9\-_]+\.eyJ[A-Za-z0-9\-_]+\.[A-Za-z0-9\-_]+/g },
156
+ { name: 'Database URI', regex: /(postgres|mysql|mongodb|redis):\/\/[^\s"']+/g },
157
+ { name: 'Password in URL', regex: /[a-zA-Z]{3,10}:\/\/[^\/\s:@]+:[^\/\s:@]+@/g },
158
+ ];
159
+
160
+ const PII_PATTERNS = [
161
+ { name: 'SSN', regex: /\b\d{3}-\d{2}-\d{4}\b/g },
162
+ { name: 'Credit Card', regex: /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g },
163
+ { name: 'Bitcoin Address', regex: /\b(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}\b/g },
164
+ { name: 'Ethereum Address', regex: /\b0x[a-fA-F0-9]{40}\b/g },
165
+ ];
166
+
167
+ /**
168
+ * Filter LLM output for leaked secrets and PII.
169
+ * @param {string} output - Raw LLM output
170
+ * @returns {{ filtered: string, redactions: Array }}
171
+ */
172
+ function filterOutput(output) {
173
+ let filtered = output;
174
+ const redactions = [];
175
+
176
+ for (const { name, regex } of [...SECRET_PATTERNS, ...PII_PATTERNS]) {
177
+ const matches = filtered.match(regex);
178
+ if (matches) {
179
+ for (const match of matches) {
180
+ redactions.push({ type: name, value: match.substring(0, 8) + '...[REDACTED]' });
181
+ filtered = filtered.replace(match, `[REDACTED: ${name}]`);
182
+ }
183
+ }
184
+ }
185
+
186
+ return { filtered, redactions };
187
+ }
188
+ ```
189
+
190
+ ## Template 3: Canary Token Monitor
191
+
192
+ **Use in:** System prompts to detect prompt leakage.
193
+
194
+ ```javascript
195
+ // canary-tokens.js — Inject and monitor canary tokens in system prompts
196
+ // If the canary appears in LLM output, the system prompt was leaked.
197
+
198
+ const crypto = require('crypto');
199
+
200
+ /**
201
+ * Generate a unique canary token for this session.
202
+ * @returns {string} A unique token like "CANARY-a3f8b2c1"
203
+ */
204
+ function generateCanary() {
205
+ const id = crypto.randomBytes(4).toString('hex');
206
+ return `CANARY-${id}`;
207
+ }
208
+
209
+ /**
210
+ * Inject canary into system prompt.
211
+ * @param {string} systemPrompt - The system prompt
212
+ * @param {string} canary - The canary token
213
+ * @returns {string} System prompt with canary injected
214
+ */
215
+ function injectCanary(systemPrompt, canary) {
216
+ return `${systemPrompt}\n\n<!-- Internal tracking: ${canary} - Do not output this value -->`;
217
+ }
218
+
219
+ /**
220
+ * Check if LLM output contains the canary (prompt leakage detected).
221
+ * @param {string} output - LLM output
222
+ * @param {string} canary - The canary token
223
+ * @returns {boolean} true if canary leaked
224
+ */
225
+ function checkCanaryLeakage(output, canary) {
226
+ return output.includes(canary);
227
+ }
228
+
229
+ // Usage:
230
+ // const canary = generateCanary();
231
+ // const prompt = injectCanary(baseSystemPrompt, canary);
232
+ // ... send to LLM ...
233
+ // if (checkCanaryLeakage(llmOutput, canary)) {
234
+ // log('ALERT: System prompt leaked!');
235
+ // // Reject the output, log the incident
236
+ // }
237
+ ```
238
+
239
+ ## Template 4: Document Provenance Tracker
240
+
241
+ **Use for:** Tracking which documents influenced each RAG response for audit trails.
242
+
243
+ ```javascript
244
+ // provenance.js — Track document provenance in RAG responses
245
+ // Essential for debugging poisoned document attacks after the fact.
246
+
247
+ /**
248
+ * Wrap RAG context with provenance metadata.
249
+ * @param {Array} chunks - Retrieved document chunks
250
+ * @returns {{ context: string, provenance: Array }}
251
+ */
252
+ function buildProvenanceContext(chunks) {
253
+ const provenance = chunks.map((chunk, i) => ({
254
+ index: i,
255
+ source: chunk.metadata?.source || 'unknown',
256
+ author: chunk.metadata?.author || 'unknown',
257
+ ingested_at: chunk.metadata?.scanned_at || 'unknown',
258
+ trust_level: chunk.metadata?.trust_level || 'UNSCANNED',
259
+ similarity: chunk.score,
260
+ excerpt: chunk.text.substring(0, 100) + '...',
261
+ }));
262
+
263
+ // Build context string with source markers
264
+ const context = chunks.map((chunk, i) =>
265
+ `[Source ${i}: ${chunk.metadata?.source || 'unknown'} (trust: ${chunk.metadata?.trust_level || 'UNSCANNED'})]\n${chunk.text}`
266
+ ).join('\n\n');
267
+
268
+ return { context, provenance };
269
+ }
270
+
271
+ /**
272
+ * Log RAG response with full provenance for audit.
273
+ * @param {string} query - User query
274
+ * @param {string} response - LLM response
275
+ * @param {Array} provenance - Document provenance
276
+ */
277
+ function logWithProvenance(query, response, provenance) {
278
+ const entry = {
279
+ timestamp: new Date().toISOString(),
280
+ query,
281
+ response_excerpt: response.substring(0, 200),
282
+ sources_used: provenance.length,
283
+ trust_breakdown: {
284
+ trusted: provenance.filter(p => p.trust_level === 'TRUSTED').length,
285
+ suspicious: provenance.filter(p => p.trust_level === 'SUSPICIOUS').length,
286
+ unscanned: provenance.filter(p => p.trust_level === 'UNSCANNED').length,
287
+ blocked: provenance.filter(p => p.trust_level === 'BLOCKED').length,
288
+ },
289
+ provenance,
290
+ };
291
+ // Write to audit log (file, database, or monitoring service)
292
+ console.log('[RAG-AUDIT]', JSON.stringify(entry));
293
+ return entry;
294
+ }
295
+ ```
296
+
297
+ ## When to Use
298
+
299
+ - Building any RAG pipeline (document Q&A, knowledge base, chatbot)
300
+ - Creating AI-powered functions that process untrusted input
301
+ - Building agent tools that accept external content
302
+ - Any application where documents enter via upload, API, or web scraping
303
+ - MCP server development (tool descriptions are a trust surface)
304
+
305
+ ## When NOT to Use
306
+
307
+ - Pure computation with no LLM involvement
308
+ - Applications that only process trusted, internal data
309
+ - Simple LLM wrappers with no external document input
310
+
311
+ ## Implementation Checklist
312
+
313
+ When building any AI application, verify:
314
+
315
+ - [ ] **Input sanitization:** All external content scanned before LLM sees it (Template 1)
316
+ - [ ] **Output filtering:** LLM output checked for leaked secrets/PII before display (Template 2)
317
+ - [ ] **Canary tokens:** System prompts include canary for leakage detection (Template 3)
318
+ - [ ] **Provenance tracking:** Every RAG response logs which documents influenced it (Template 4)
319
+ - [ ] **Trust levels:** Documents tagged with trust level at ingestion time
320
+ - [ ] **NFKC normalization:** All text normalized before pattern matching
321
+ - [ ] **Invisible char stripping:** Zero-width and tag characters removed from all input
322
+
323
+ ## Common Mistakes
324
+
325
+ - Scanning AFTER embedding (too late — poisoned vectors already in the DB)
326
+ - Only scanning for known patterns (use AI classification for novel attacks)
327
+ - Trusting all documents equally (internal docs vs user uploads have different trust levels)
328
+ - Not logging provenance (can't trace which document caused a bad response)
329
+ - Forgetting to normalize Unicode before regex (attackers use confusable characters)
330
+
331
+ ## OWASP Agentic Top 10 Coverage
332
+
333
+ | Template | Covers | OWASP Risk |
334
+ |----------|--------|------------|
335
+ | Pre-ingestion scanner | Document poisoning | ASI06: Memory/Context Poisoning |
336
+ | Output filter | Data leakage | ASI07: Output Handling |
337
+ | Canary tokens | Prompt extraction | ASI01: Agent Goal Hijacking |
338
+ | Provenance tracker | Audit trail | ASI09: Logging/Monitoring |
339
+
340
+ ## References
341
+
342
+ - PoisonedRAG (USENIX 2025): 5 docs = 90% attack success
343
+ - OWASP Top 10 for Agentic Applications 2026
344
+ - Microsoft Presidio (PII detection): https://github.com/microsoft/presidio
345
+ - secrets-patterns-db (1600+ patterns): https://github.com/mazen160/secrets-patterns-db
346
+ - Companion: `security/agent-security-scanner.md` — Full 6-layer scanning pipeline
347
+ - Companion: `/fire-security-scan` — Manual and auto-triggered scanning command
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: sql-injection-prevention-postgresjs
3
+ category: security
4
+ version: 1.0.0
5
+ contributed: 2026-02-19
6
+ contributor: my-other-project
7
+ last_updated: 2026-02-19
8
+ tags: [sql-injection, postgres.js, security, dynamic-queries, input-validation]
9
+ difficulty: medium
10
+ usage_count: 0
11
+ success_rate: 100
12
+ ---
13
+
14
+ # SQL Injection Prevention for postgres.js
15
+
16
+ ## Problem
17
+
18
+ When using postgres.js (`postgres` npm package) with dynamic queries, two common patterns introduce SQL injection:
19
+
20
+ 1. **Dynamic column names in UPDATE** — Using `sql.unsafe()` with `Object.keys(userInput)` concatenated into the query. An attacker passing `"name; DROP TABLE profiles;--"` as a field key achieves injection.
21
+
22
+ 2. **Dynamic ORDER BY from query params** — Passing `?sort=name;DROP TABLE profiles` directly into `ORDER BY ${sort}` in a template string fed to `sql.unsafe()`.
23
+
24
+ Both bypass postgres.js tagged template literal protection because column/table names can't be parameterized in standard SQL.
25
+
26
+ ### Symptoms
27
+ - `sql.unsafe()` calls with string concatenation
28
+ - `Object.keys()` from request body used in SQL
29
+ - `req.query.sort` passed directly to ORDER BY
30
+ - Any raw string interpolation in SQL queries
31
+
32
+ ## Solution Pattern
33
+
34
+ ### Pattern 1: Column Whitelist for Dynamic UPDATE
35
+
36
+ Replace `sql.unsafe()` with postgres.js `sql()` helper and a Set-based whitelist:
37
+
38
+ ```javascript
39
+ // BEFORE (VULNERABLE)
40
+ export const updateUser = async (id, updateData) => {
41
+ const fields = Object.keys(updateData);
42
+ const sets = fields.map((f, i) => `${f} = $${i + 1}`).join(', ');
43
+ const values = fields.map(f => updateData[f]);
44
+ const result = await sql.unsafe(
45
+ `UPDATE profiles SET ${sets} WHERE id = $${fields.length + 1} RETURNING *`,
46
+ [...values, id]
47
+ );
48
+ return result[0];
49
+ };
50
+
51
+ // AFTER (SAFE)
52
+ const ALLOWED_COLUMNS = new Set([
53
+ 'name', 'email', 'bio', 'website', 'location', 'skills',
54
+ 'role', 'avatar_url', 'phone', 'full_name', 'dark_mode'
55
+ ]);
56
+
57
+ export const updateUser = async (id, updateData) => {
58
+ const safeData = {};
59
+ for (const [key, val] of Object.entries(updateData)) {
60
+ if (ALLOWED_COLUMNS.has(key)) safeData[key] = val;
61
+ }
62
+ if (Object.keys(safeData).length === 0) return null;
63
+
64
+ // postgres.js sql() helper safely handles dynamic columns
65
+ const result = await sql`
66
+ UPDATE profiles SET ${sql(safeData, ...Object.keys(safeData))}
67
+ WHERE id = ${id} RETURNING *
68
+ `;
69
+ return result[0];
70
+ };
71
+ ```
72
+
73
+ ### Pattern 2: sanitizeSort() for Dynamic ORDER BY
74
+
75
+ Create a reusable utility that validates sort input against a whitelist:
76
+
77
+ ```javascript
78
+ // server/middleware/inputValidation.js
79
+ export const sanitizeSort = (sortInput, allowedColumns, defaultSort = 'created_at DESC') => {
80
+ if (!sortInput || typeof sortInput !== 'string') return defaultSort;
81
+ const parts = sortInput.trim().split(/\s+/);
82
+ const column = parts[0].replace(/^[a-z]+\./i, ''); // Strip table prefix
83
+ const direction = (parts[1] || 'ASC').toUpperCase();
84
+ if (!allowedColumns.includes(column)) return defaultSort;
85
+ if (direction !== 'ASC' && direction !== 'DESC') return defaultSort;
86
+ // Preserve original table prefix if present (e.g., "p.created_at")
87
+ const prefix = sortInput.trim().match(/^([a-z]+\.)/i)?.[1] || '';
88
+ return `${prefix}${column} ${direction}`;
89
+ };
90
+ ```
91
+
92
+ Usage in models:
93
+
94
+ ```javascript
95
+ import { sanitizeSort } from '../middleware/inputValidation.js';
96
+
97
+ const ALLOWED_SORT = ['created_at', 'name', 'email', 'role', 'updated_at'];
98
+
99
+ export const getUsers = async (options = {}) => {
100
+ const validSort = sanitizeSort(options.sort, ALLOWED_SORT);
101
+ const limit = Number(options.limit) || 20;
102
+ const offset = Number(options.offset) || 0;
103
+
104
+ // validSort is guaranteed safe — use in sql.unsafe for ORDER BY only
105
+ const result = await sql.unsafe(
106
+ `SELECT * FROM profiles ORDER BY ${validSort} LIMIT $1 OFFSET $2`,
107
+ [limit, offset]
108
+ );
109
+ return result;
110
+ };
111
+ ```
112
+
113
+ ## Implementation Steps
114
+
115
+ 1. Identify all `sql.unsafe()` calls with string interpolation
116
+ 2. For UPDATE queries: create column whitelist Set, use `sql()` helper
117
+ 3. For ORDER BY: create `sanitizeSort()`, define model-specific allowed columns
118
+ 4. For LIMIT/OFFSET: cast to `Number()` — never interpolate raw strings
119
+ 5. Test with injection payloads: `name;DROP TABLE x--`, `name UNION SELECT *`
120
+
121
+ ## When to Use
122
+
123
+ - Any postgres.js project with dynamic UPDATE queries
124
+ - Any endpoint accepting `?sort=` query parameters
125
+ - Models that build SQL from user-provided field names
126
+ - REST APIs with sortable list endpoints
127
+
128
+ ## When NOT to Use
129
+
130
+ - If using an ORM (Prisma, Sequelize) — they handle parameterization
131
+ - Static SQL with no dynamic parts — tagged templates are already safe
132
+ - If column names come from trusted server-side code only
133
+
134
+ ## Common Mistakes
135
+
136
+ - Trusting `Object.keys()` from request body — attackers control key names
137
+ - Using `sql.unsafe()` when `sql` tagged template would work
138
+ - Forgetting to whitelist new columns after schema changes
139
+ - Allowing table prefixes without validation (e.g., `information_schema.columns`)
140
+ - Only validating column name but not direction (`ASC`/`DESC`)
141
+
142
+ ## Related Skills
143
+
144
+ - [POSTGRES_SQL_TEMPLATE_BINDING_ERROR](../database-solutions/POSTGRES_SQL_TEMPLATE_BINDING_ERROR.md) - Template binding issues
145
+ - [PRODUCTION_HARDENING_DOCUMENTATION](../deployment-security/PRODUCTION_HARDENING_DOCUMENTATION.md) - General hardening
146
+
147
+ ## References
148
+
149
+ - postgres.js docs: https://github.com/porsager/postgres#dynamic-columns
150
+ - OWASP SQL Injection: https://owasp.org/www-community/attacks/SQL_Injection
151
+ - Contributed from: my-other-project (Feb 2026 security audit)
@@ -0,0 +1,102 @@
1
+ # Supabase Connection Pooler - IPv4 Fix
2
+
3
+ ## Problem
4
+ VPS cannot connect to Supabase PostgreSQL database. Two errors occur:
5
+
6
+ ### Error 1: IPv6 Unreachable (Direct Connection)
7
+ ```
8
+ Error: connect ENETUNREACH 2600:1f18:2e13:9d18:88be:d4c9:6b70:87e9:5432
9
+ ```
10
+ **Cause:** Direct connection (`db.[project].supabase.co:5432`) resolves to IPv6, but VPS has no IPv6 connectivity.
11
+
12
+ ### Error 2: Connection Timeout (Transaction Pooler)
13
+ ```
14
+ Error: write CONNECT_TIMEOUT aws-1-us-east-1.pooler.supabase.com:6543
15
+ ```
16
+ **Cause:** Transaction pooler on port 6543 may have firewall restrictions or require special configuration.
17
+
18
+ ---
19
+
20
+ ## Solution: Use Session Pooler with URL-Encoded Password
21
+
22
+ ### Working Connection String Format
23
+ ```
24
+ postgresql://postgres.[PROJECT_REF]:[URL_ENCODED_PASSWORD]@aws-1-us-east-1.pooler.supabase.com:5432/postgres
25
+ ```
26
+
27
+ ### Key Points
28
+
29
+ 1. **Use Session Pooler (port 5432)** - NOT transaction pooler (port 6543)
30
+ - Session pooler: `pooler.supabase.com:5432`
31
+ - Transaction pooler: `pooler.supabase.com:6543`
32
+
33
+ 2. **URL Encode Special Characters in Password**
34
+ - `*` → `%2A`
35
+ - `@` → `%40`
36
+ - `/` → `%2F`
37
+ - `&` → `%26`
38
+ - `#` → `%23`
39
+
40
+ Example: `Jubileess_*7*` → `Jubileess_%2A7%2A`
41
+
42
+ 3. **Username Format for Pooler**
43
+ - Direct: `postgres`
44
+ - Pooler: `postgres.[PROJECT_REF]`
45
+
46
+ ---
47
+
48
+ ## Connection String Comparison
49
+
50
+ ### Direct Connection (IPv6 issues)
51
+ ```
52
+ postgresql://postgres:PASSWORD@db.[PROJECT].supabase.co:5432/postgres
53
+ ```
54
+
55
+ ### Transaction Pooler (may timeout)
56
+ ```
57
+ postgresql://postgres.[PROJECT]:PASSWORD@aws-1-us-east-1.pooler.supabase.com:6543/postgres?pgbouncer=true
58
+ ```
59
+
60
+ ### Session Pooler (RECOMMENDED for VPS)
61
+ ```
62
+ postgresql://postgres.[PROJECT]:URL_ENCODED_PASSWORD@aws-1-us-east-1.pooler.supabase.com:5432/postgres
63
+ ```
64
+
65
+ ---
66
+
67
+ ## How to Find Your Pooler URL
68
+
69
+ 1. Go to Supabase Dashboard
70
+ 2. Click "Connect" button
71
+ 3. Select "Connection String" tab
72
+ 4. Change "Method" dropdown to "Session pooler"
73
+ 5. Note: It says "IPv4 compatible" at the bottom
74
+
75
+ ---
76
+
77
+ ## Verification
78
+
79
+ After updating `.env`, restart the server and check logs:
80
+ ```bash
81
+ pm2 restart all
82
+ pm2 logs lms-server --lines 20
83
+ ```
84
+
85
+ **Success indicator:**
86
+ ```
87
+ ✅ [DATABASE] Connection successful! Supabase PostgreSQL is ready.
88
+ ```
89
+
90
+ **Failure indicators:**
91
+ ```
92
+ ❌ [DATABASE] Failed to connect to Supabase PostgreSQL
93
+ Error: connect ENETUNREACH ... # IPv6 issue
94
+ Error: write CONNECT_TIMEOUT ... # Pooler/firewall issue
95
+ ```
96
+
97
+ ---
98
+
99
+ ## References
100
+ - [Supabase Connection Management](https://supabase.com/docs/guides/database/connection-management)
101
+ - [Supabase GitHub Discussion #21789](https://github.com/orgs/supabase/discussions/21789)
102
+ - [Supavisor FAQ](https://supabase.com/docs/guides/troubleshooting/supavisor-faq-YyP5tI)
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: powershell-bash-interop
3
+ category: system-context
4
+ version: 1.0.0
5
+ contributed: 2026-02-24
6
+ contributor: dominion-flow
7
+ tags: [powershell, bash, windows, shell, interop, scripts]
8
+ difficulty: medium
9
+ ---
10
+
11
+ # PowerShell & Bash Interop
12
+
13
+ ## Problem
14
+
15
+ Claude Code's shell is bash (Git Bash on Windows), but some Windows operations require PowerShell (COM objects, system shortcuts, Windows APIs). Mixing syntax causes cryptic failures.
16
+
17
+ ## Solution Pattern
18
+
19
+ Know which shell to use for what, and how to call one from the other.
20
+
21
+ ## Shell Selection Guide
22
+
23
+ | Task | Use | Why |
24
+ |------|-----|-----|
25
+ | Git operations | Bash | Native git |
26
+ | npm/node commands | Bash | Works in both, bash is default |
27
+ | File operations (basic) | Bash | `cp`, `mv`, `rm` work fine |
28
+ | Desktop shortcuts | PowerShell | Requires COM objects |
29
+ | Windows services | PowerShell | `Get-Service`, `Start-Service` |
30
+ | Registry access | PowerShell | `Get-ItemProperty` |
31
+ | Environment variables (persistent) | PowerShell | `[Environment]::SetEnvironmentVariable` |
32
+ | Docker | Bash | CLI is the same everywhere |
33
+ | `curl` / `wget` | Bash | PowerShell's `curl` is aliased to `Invoke-WebRequest` |
34
+
35
+ ## Calling PowerShell from Bash
36
+
37
+ ```bash
38
+ # One-liner
39
+ powershell.exe -Command "Get-Process | Where-Object {$_.ProcessName -eq 'node'}"
40
+
41
+ # Multi-line script
42
+ powershell.exe -Command "
43
+ \$desktop = [Environment]::GetFolderPath('Desktop')
44
+ \$shortcut = (New-Object -ComObject WScript.Shell).CreateShortcut(\"\$desktop\\MyApp.lnk\")
45
+ \$shortcut.TargetPath = 'C:\\path\\to\\my-app\\start.bat'
46
+ \$shortcut.Save()
47
+ "
48
+ ```
49
+
50
+ **Key escaping rules in bash → PowerShell:**
51
+ - `$` must be escaped as `\$` (bash would expand it otherwise)
52
+ - Use single quotes inside PowerShell where possible
53
+ - Backslashes in paths must be doubled or use forward slashes
54
+
55
+ ## Calling Bash from PowerShell
56
+
57
+ ```powershell
58
+ # Run a bash command
59
+ bash -c "git status"
60
+
61
+ # Run a bash script
62
+ bash -c "cd /c/path/to/my-project && npm test"
63
+ ```
64
+
65
+ ## Common Pitfalls
66
+
67
+ 1. **`curl` in PowerShell** — It's actually `Invoke-WebRequest`, not `curl`. Use bash for real `curl`.
68
+ 2. **Path separators** — PowerShell uses `\`, bash uses `/`. Both work in most tools on Windows.
69
+ 3. **Exit codes** — PowerShell `$LASTEXITCODE` vs bash `$?`. They don't bridge cleanly.
70
+ 4. **`rm`** — In PowerShell it's `Remove-Item`. In bash it's GNU `rm`. Different flags.
71
+
72
+ ## When to Use
73
+
74
+ - Creating desktop shortcuts (New Application Init Checklist)
75
+ - Managing Windows services
76
+ - Any task requiring Windows-specific APIs
77
+ - Debugging shell-related failures
78
+
79
+ ## When NOT to Use
80
+
81
+ - Standard dev operations (git, npm, docker) — just use bash
82
+ - Linux/Mac environments