@rubix0270/arboris 1.0.1 → 1.0.3

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 (451) hide show
  1. package/package.json +8 -19
  2. package/run.mjs +10 -0
  3. package/dist/cli.mjs +0 -382
  4. package/manifest.json +0 -323
  5. package/prisma/skills/accessibility/SKILL.md +0 -147
  6. package/prisma/skills/agent-architecture-audit/SKILL.md +0 -257
  7. package/prisma/skills/agent-eval/SKILL.md +0 -146
  8. package/prisma/skills/agent-harness-construction/SKILL.md +0 -74
  9. package/prisma/skills/agent-introspection-debugging/SKILL.md +0 -154
  10. package/prisma/skills/agent-payment-x402/SKILL.md +0 -225
  11. package/prisma/skills/agent-self-evaluation/SKILL.md +0 -182
  12. package/prisma/skills/agent-self-evaluation/examples/high-score-example.md +0 -87
  13. package/prisma/skills/agent-self-evaluation/examples/low-score-example.md +0 -86
  14. package/prisma/skills/agent-self-evaluation/references/evaluation-criteria.md +0 -71
  15. package/prisma/skills/agent-self-evaluation/references/hook-integration.md +0 -64
  16. package/prisma/skills/agent-self-evaluation/scripts/evaluate.py +0 -408
  17. package/prisma/skills/agent-self-evaluation/templates/evaluation-report.md +0 -86
  18. package/prisma/skills/agent-sort/SKILL.md +0 -216
  19. package/prisma/skills/agentic-engineering/SKILL.md +0 -64
  20. package/prisma/skills/agentic-os/SKILL.md +0 -388
  21. package/prisma/skills/ai-first-engineering/SKILL.md +0 -52
  22. package/prisma/skills/ai-regression-testing/SKILL.md +0 -386
  23. package/prisma/skills/android-clean-architecture/SKILL.md +0 -340
  24. package/prisma/skills/angular-developer/SKILL.md +0 -155
  25. package/prisma/skills/angular-developer/references/angular-animations.md +0 -160
  26. package/prisma/skills/angular-developer/references/angular-aria.md +0 -410
  27. package/prisma/skills/angular-developer/references/cli.md +0 -86
  28. package/prisma/skills/angular-developer/references/component-harnesses.md +0 -59
  29. package/prisma/skills/angular-developer/references/component-styling.md +0 -91
  30. package/prisma/skills/angular-developer/references/components.md +0 -117
  31. package/prisma/skills/angular-developer/references/creating-services.md +0 -97
  32. package/prisma/skills/angular-developer/references/data-resolvers.md +0 -69
  33. package/prisma/skills/angular-developer/references/define-routes.md +0 -67
  34. package/prisma/skills/angular-developer/references/defining-providers.md +0 -72
  35. package/prisma/skills/angular-developer/references/di-fundamentals.md +0 -120
  36. package/prisma/skills/angular-developer/references/e2e-testing.md +0 -56
  37. package/prisma/skills/angular-developer/references/effects.md +0 -83
  38. package/prisma/skills/angular-developer/references/hierarchical-injectors.md +0 -43
  39. package/prisma/skills/angular-developer/references/host-elements.md +0 -80
  40. package/prisma/skills/angular-developer/references/injection-context.md +0 -63
  41. package/prisma/skills/angular-developer/references/inputs.md +0 -101
  42. package/prisma/skills/angular-developer/references/linked-signal.md +0 -59
  43. package/prisma/skills/angular-developer/references/loading-strategies.md +0 -61
  44. package/prisma/skills/angular-developer/references/mcp.md +0 -108
  45. package/prisma/skills/angular-developer/references/navigate-to-routes.md +0 -69
  46. package/prisma/skills/angular-developer/references/outputs.md +0 -86
  47. package/prisma/skills/angular-developer/references/reactive-forms.md +0 -122
  48. package/prisma/skills/angular-developer/references/rendering-strategies.md +0 -44
  49. package/prisma/skills/angular-developer/references/resource.md +0 -77
  50. package/prisma/skills/angular-developer/references/route-animations.md +0 -56
  51. package/prisma/skills/angular-developer/references/route-guards.md +0 -52
  52. package/prisma/skills/angular-developer/references/router-lifecycle.md +0 -45
  53. package/prisma/skills/angular-developer/references/router-testing.md +0 -87
  54. package/prisma/skills/angular-developer/references/show-routes-with-outlets.md +0 -68
  55. package/prisma/skills/angular-developer/references/signal-forms.md +0 -795
  56. package/prisma/skills/angular-developer/references/signals-overview.md +0 -94
  57. package/prisma/skills/angular-developer/references/tailwind-css.md +0 -69
  58. package/prisma/skills/angular-developer/references/template-driven-forms.md +0 -114
  59. package/prisma/skills/angular-developer/references/testing-fundamentals.md +0 -65
  60. package/prisma/skills/api-connector-builder/SKILL.md +0 -121
  61. package/prisma/skills/api-design/SKILL.md +0 -524
  62. package/prisma/skills/architecture-decision-records/SKILL.md +0 -180
  63. package/prisma/skills/article-writing/SKILL.md +0 -80
  64. package/prisma/skills/automation-audit-ops/SKILL.md +0 -143
  65. package/prisma/skills/autonomous-agent-harness/SKILL.md +0 -274
  66. package/prisma/skills/autonomous-loops/SKILL.md +0 -611
  67. package/prisma/skills/backend-patterns/SKILL.md +0 -562
  68. package/prisma/skills/benchmark/SKILL.md +0 -94
  69. package/prisma/skills/benchmark-methodology/SKILL.md +0 -190
  70. package/prisma/skills/benchmark-optimization-loop/SKILL.md +0 -70
  71. package/prisma/skills/blender-motion-state-inspection/SKILL.md +0 -165
  72. package/prisma/skills/blueprint/SKILL.md +0 -106
  73. package/prisma/skills/brand-discovery/SKILL.md +0 -145
  74. package/prisma/skills/brand-discovery/references/10_purpose-why.md +0 -40
  75. package/prisma/skills/brand-discovery/references/20_positioning.md +0 -44
  76. package/prisma/skills/brand-discovery/references/30_audience-niche.md +0 -52
  77. package/prisma/skills/brand-discovery/references/40_personality-archetype.md +0 -57
  78. package/prisma/skills/brand-discovery/references/50_voice-tone.md +0 -59
  79. package/prisma/skills/brand-discovery/references/60_narrative-story.md +0 -50
  80. package/prisma/skills/brand-discovery/references/70_founder-tension.md +0 -49
  81. package/prisma/skills/brand-discovery/references/90_SYNTHESIS.md +0 -133
  82. package/prisma/skills/brand-voice/SKILL.md +0 -98
  83. package/prisma/skills/brand-voice/references/voice-profile-schema.md +0 -55
  84. package/prisma/skills/browser-qa/SKILL.md +0 -105
  85. package/prisma/skills/bun-runtime/SKILL.md +0 -85
  86. package/prisma/skills/canary-watch/SKILL.md +0 -108
  87. package/prisma/skills/carrier-relationship-management/SKILL.md +0 -212
  88. package/prisma/skills/cisco-ios-patterns/SKILL.md +0 -164
  89. package/prisma/skills/ck/SKILL.md +0 -148
  90. package/prisma/skills/ck/commands/forget.mjs +0 -44
  91. package/prisma/skills/ck/commands/info.mjs +0 -24
  92. package/prisma/skills/ck/commands/init.mjs +0 -143
  93. package/prisma/skills/ck/commands/list.mjs +0 -40
  94. package/prisma/skills/ck/commands/migrate.mjs +0 -202
  95. package/prisma/skills/ck/commands/resume.mjs +0 -36
  96. package/prisma/skills/ck/commands/save.mjs +0 -210
  97. package/prisma/skills/ck/commands/shared.mjs +0 -387
  98. package/prisma/skills/ck/hooks/session-start.mjs +0 -224
  99. package/prisma/skills/claude-devfleet/SKILL.md +0 -112
  100. package/prisma/skills/click-path-audit/SKILL.md +0 -245
  101. package/prisma/skills/clickhouse-io/SKILL.md +0 -440
  102. package/prisma/skills/code-tour/SKILL.md +0 -254
  103. package/prisma/skills/codebase-onboarding/SKILL.md +0 -234
  104. package/prisma/skills/codehealth-mcp/SKILL.md +0 -167
  105. package/prisma/skills/coding-standards/SKILL.md +0 -551
  106. package/prisma/skills/competitive-platform-analysis/SKILL.md +0 -214
  107. package/prisma/skills/competitive-report-structure/SKILL.md +0 -162
  108. package/prisma/skills/compose-multiplatform-patterns/SKILL.md +0 -300
  109. package/prisma/skills/config-gc/SKILL.md +0 -120
  110. package/prisma/skills/configure-ecc/SKILL.md +0 -385
  111. package/prisma/skills/connections-optimizer/SKILL.md +0 -190
  112. package/prisma/skills/content-engine/SKILL.md +0 -132
  113. package/prisma/skills/content-hash-cache-pattern/SKILL.md +0 -162
  114. package/prisma/skills/context-budget/SKILL.md +0 -136
  115. package/prisma/skills/continuous-agent-loop/SKILL.md +0 -46
  116. package/prisma/skills/continuous-learning/SKILL.md +0 -132
  117. package/prisma/skills/continuous-learning/config.json +0 -18
  118. package/prisma/skills/continuous-learning/evaluate-session.sh +0 -69
  119. package/prisma/skills/continuous-learning-v2/SKILL.md +0 -361
  120. package/prisma/skills/continuous-learning-v2/agents/observer-loop.sh +0 -359
  121. package/prisma/skills/continuous-learning-v2/agents/observer.md +0 -189
  122. package/prisma/skills/continuous-learning-v2/agents/session-guardian.sh +0 -150
  123. package/prisma/skills/continuous-learning-v2/agents/start-observer.sh +0 -248
  124. package/prisma/skills/continuous-learning-v2/config.json +0 -8
  125. package/prisma/skills/continuous-learning-v2/hooks/observe.sh +0 -585
  126. package/prisma/skills/continuous-learning-v2/scripts/detect-project.sh +0 -322
  127. package/prisma/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -1956
  128. package/prisma/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +0 -31
  129. package/prisma/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +0 -68
  130. package/prisma/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -1421
  131. package/prisma/skills/cost-aware-llm-pipeline/SKILL.md +0 -184
  132. package/prisma/skills/cost-tracking/SKILL.md +0 -97
  133. package/prisma/skills/council/SKILL.md +0 -204
  134. package/prisma/skills/cpp-coding-standards/SKILL.md +0 -724
  135. package/prisma/skills/cpp-testing/SKILL.md +0 -325
  136. package/prisma/skills/crosspost/SKILL.md +0 -112
  137. package/prisma/skills/csharp-testing/SKILL.md +0 -322
  138. package/prisma/skills/customer-billing-ops/SKILL.md +0 -141
  139. package/prisma/skills/customs-trade-compliance/SKILL.md +0 -263
  140. package/prisma/skills/dart-flutter-patterns/SKILL.md +0 -564
  141. package/prisma/skills/dashboard-builder/SKILL.md +0 -109
  142. package/prisma/skills/data-scraper-agent/SKILL.md +0 -765
  143. package/prisma/skills/data-throughput-accelerator/SKILL.md +0 -73
  144. package/prisma/skills/database-migrations/SKILL.md +0 -430
  145. package/prisma/skills/deep-research/SKILL.md +0 -160
  146. package/prisma/skills/defi-amm-security/SKILL.md +0 -167
  147. package/prisma/skills/delivery-gate/SKILL.md +0 -126
  148. package/prisma/skills/delivery-gate/hooks/quality-gate.py +0 -220
  149. package/prisma/skills/deployment-patterns/SKILL.md +0 -428
  150. package/prisma/skills/design-system/SKILL.md +0 -83
  151. package/prisma/skills/django-celery/SKILL.md +0 -458
  152. package/prisma/skills/django-patterns/SKILL.md +0 -735
  153. package/prisma/skills/django-security/SKILL.md +0 -644
  154. package/prisma/skills/django-tdd/SKILL.md +0 -730
  155. package/prisma/skills/django-verification/SKILL.md +0 -470
  156. package/prisma/skills/dmux-workflows/SKILL.md +0 -192
  157. package/prisma/skills/docker-patterns/SKILL.md +0 -365
  158. package/prisma/skills/documentation-lookup/SKILL.md +0 -91
  159. package/prisma/skills/dotnet-patterns/SKILL.md +0 -322
  160. package/prisma/skills/dynamic-workflow-mode/SKILL.md +0 -124
  161. package/prisma/skills/e2e-testing/SKILL.md +0 -327
  162. package/prisma/skills/ecc-guide/SKILL.md +0 -190
  163. package/prisma/skills/ecc-recipes/SKILL.md +0 -149
  164. package/prisma/skills/ecc-tools-cost-audit/SKILL.md +0 -161
  165. package/prisma/skills/email-ops/SKILL.md +0 -122
  166. package/prisma/skills/energy-procurement/SKILL.md +0 -228
  167. package/prisma/skills/enterprise-agent-ops/SKILL.md +0 -51
  168. package/prisma/skills/error-handling/SKILL.md +0 -377
  169. package/prisma/skills/eval-harness/SKILL.md +0 -271
  170. package/prisma/skills/evm-token-decimals/SKILL.md +0 -131
  171. package/prisma/skills/exa-search/SKILL.md +0 -108
  172. package/prisma/skills/fal-ai-media/SKILL.md +0 -289
  173. package/prisma/skills/fastapi-patterns/SKILL.md +0 -514
  174. package/prisma/skills/finance-billing-ops/SKILL.md +0 -128
  175. package/prisma/skills/flox-environments/SKILL.md +0 -497
  176. package/prisma/skills/flutter-dart-code-review/SKILL.md +0 -436
  177. package/prisma/skills/foundation-models-on-device/SKILL.md +0 -243
  178. package/prisma/skills/frontend-a11y/SKILL.md +0 -446
  179. package/prisma/skills/frontend-design-direction/SKILL.md +0 -93
  180. package/prisma/skills/frontend-patterns/SKILL.md +0 -657
  181. package/prisma/skills/frontend-slides/SKILL.md +0 -185
  182. package/prisma/skills/frontend-slides/STYLE_PRESETS.md +0 -330
  183. package/prisma/skills/frontend-slides/animation-patterns.md +0 -122
  184. package/prisma/skills/frontend-slides/html-template.md +0 -419
  185. package/prisma/skills/frontend-slides/scripts/export-pdf.sh +0 -418
  186. package/prisma/skills/frontend-slides/scripts/extract-pptx.py +0 -96
  187. package/prisma/skills/frontend-slides/viewport-base.css +0 -153
  188. package/prisma/skills/fsharp-testing/SKILL.md +0 -281
  189. package/prisma/skills/gan-style-harness/SKILL.md +0 -279
  190. package/prisma/skills/gateguard/SKILL.md +0 -133
  191. package/prisma/skills/generating-python-installer/SKILL.md +0 -820
  192. package/prisma/skills/git-workflow/SKILL.md +0 -716
  193. package/prisma/skills/github-ops/SKILL.md +0 -145
  194. package/prisma/skills/golang-patterns/SKILL.md +0 -675
  195. package/prisma/skills/golang-testing/SKILL.md +0 -721
  196. package/prisma/skills/google-workspace-ops/SKILL.md +0 -96
  197. package/prisma/skills/growth-log/SKILL.md +0 -128
  198. package/prisma/skills/healthcare-cdss-patterns/SKILL.md +0 -246
  199. package/prisma/skills/healthcare-emr-patterns/SKILL.md +0 -160
  200. package/prisma/skills/healthcare-eval-harness/SKILL.md +0 -208
  201. package/prisma/skills/healthcare-phi-compliance/SKILL.md +0 -146
  202. package/prisma/skills/hermes-imports/SKILL.md +0 -89
  203. package/prisma/skills/hexagonal-architecture/SKILL.md +0 -277
  204. package/prisma/skills/hipaa-compliance/SKILL.md +0 -79
  205. package/prisma/skills/homelab-network-readiness/SKILL.md +0 -170
  206. package/prisma/skills/homelab-network-setup/SKILL.md +0 -130
  207. package/prisma/skills/homelab-pihole-dns/SKILL.md +0 -275
  208. package/prisma/skills/homelab-vlan-segmentation/SKILL.md +0 -312
  209. package/prisma/skills/homelab-wireguard-vpn/SKILL.md +0 -306
  210. package/prisma/skills/hookify-rules/SKILL.md +0 -128
  211. package/prisma/skills/inherit-legacy-style/SKILL.md +0 -157
  212. package/prisma/skills/intent-driven-development/SKILL.md +0 -360
  213. package/prisma/skills/inventory-demand-planning/SKILL.md +0 -247
  214. package/prisma/skills/investor-materials/SKILL.md +0 -97
  215. package/prisma/skills/investor-outreach/SKILL.md +0 -92
  216. package/prisma/skills/ios-icon-gen/SKILL.md +0 -158
  217. package/prisma/skills/ios-icon-gen/scripts/generate_icons.swift +0 -258
  218. package/prisma/skills/ios-icon-gen/scripts/iconify_gen.sh +0 -235
  219. package/prisma/skills/iterative-retrieval/SKILL.md +0 -212
  220. package/prisma/skills/ito-basket-compare/SKILL.md +0 -64
  221. package/prisma/skills/ito-data-atlas-agent/SKILL.md +0 -64
  222. package/prisma/skills/ito-market-intelligence/SKILL.md +0 -61
  223. package/prisma/skills/ito-trade-planner/SKILL.md +0 -68
  224. package/prisma/skills/java-coding-standards/SKILL.md +0 -384
  225. package/prisma/skills/jira-integration/SKILL.md +0 -303
  226. package/prisma/skills/jpa-patterns/SKILL.md +0 -152
  227. package/prisma/skills/knowledge-ops/SKILL.md +0 -155
  228. package/prisma/skills/kotlin-coroutines-flows/SKILL.md +0 -285
  229. package/prisma/skills/kotlin-exposed-patterns/SKILL.md +0 -720
  230. package/prisma/skills/kotlin-ktor-patterns/SKILL.md +0 -690
  231. package/prisma/skills/kotlin-patterns/SKILL.md +0 -712
  232. package/prisma/skills/kotlin-testing/SKILL.md +0 -825
  233. package/prisma/skills/kubernetes-patterns/SKILL.md +0 -756
  234. package/prisma/skills/laravel-patterns/SKILL.md +0 -416
  235. package/prisma/skills/laravel-plugin-discovery/SKILL.md +0 -230
  236. package/prisma/skills/laravel-security/SKILL.md +0 -948
  237. package/prisma/skills/laravel-tdd/SKILL.md +0 -675
  238. package/prisma/skills/laravel-verification/SKILL.md +0 -180
  239. package/prisma/skills/latency-critical-systems/SKILL.md +0 -74
  240. package/prisma/skills/lead-intelligence/SKILL.md +0 -322
  241. package/prisma/skills/lead-intelligence/agents/enrichment-agent.md +0 -85
  242. package/prisma/skills/lead-intelligence/agents/mutual-mapper.md +0 -75
  243. package/prisma/skills/lead-intelligence/agents/outreach-drafter.md +0 -98
  244. package/prisma/skills/lead-intelligence/agents/signal-scorer.md +0 -60
  245. package/prisma/skills/liquid-glass-design/SKILL.md +0 -279
  246. package/prisma/skills/llm-trading-agent-security/SKILL.md +0 -147
  247. package/prisma/skills/logistics-exception-management/SKILL.md +0 -222
  248. package/prisma/skills/loop-design-check/SKILL.md +0 -143
  249. package/prisma/skills/mailtrap-email-integration/SKILL.md +0 -77
  250. package/prisma/skills/make-interfaces-feel-better/SKILL.md +0 -152
  251. package/prisma/skills/manim-video/SKILL.md +0 -90
  252. package/prisma/skills/manim-video/assets/network_graph_scene.py +0 -52
  253. package/prisma/skills/market-research/SKILL.md +0 -76
  254. package/prisma/skills/marketing-campaign/SKILL.md +0 -114
  255. package/prisma/skills/mcp-server-patterns/SKILL.md +0 -70
  256. package/prisma/skills/messages-ops/SKILL.md +0 -105
  257. package/prisma/skills/ml-adoption-playbook/SKILL.md +0 -57
  258. package/prisma/skills/mle-workflow/SKILL.md +0 -347
  259. package/prisma/skills/motion-advanced/SKILL.md +0 -596
  260. package/prisma/skills/motion-foundations/SKILL.md +0 -299
  261. package/prisma/skills/motion-patterns/SKILL.md +0 -434
  262. package/prisma/skills/motion-ui/SKILL.md +0 -576
  263. package/prisma/skills/mysql-patterns/SKILL.md +0 -413
  264. package/prisma/skills/nanoclaw-repl/SKILL.md +0 -34
  265. package/prisma/skills/nestjs-patterns/SKILL.md +0 -231
  266. package/prisma/skills/netmiko-ssh-automation/SKILL.md +0 -174
  267. package/prisma/skills/network-bgp-diagnostics/SKILL.md +0 -168
  268. package/prisma/skills/network-config-validation/SKILL.md +0 -211
  269. package/prisma/skills/network-interface-health/SKILL.md +0 -153
  270. package/prisma/skills/nextjs-turbopack/SKILL.md +0 -58
  271. package/prisma/skills/nodejs-keccak256/SKILL.md +0 -103
  272. package/prisma/skills/nutrient-document-processing/SKILL.md +0 -168
  273. package/prisma/skills/nuxt4-patterns/SKILL.md +0 -101
  274. package/prisma/skills/openclaw-persona-forge/SKILL.md +0 -289
  275. package/prisma/skills/openclaw-persona-forge/gacha.py +0 -224
  276. package/prisma/skills/openclaw-persona-forge/gacha.sh +0 -5
  277. package/prisma/skills/openclaw-persona-forge/references/avatar-style.md +0 -124
  278. package/prisma/skills/openclaw-persona-forge/references/boundary-rules.md +0 -53
  279. package/prisma/skills/openclaw-persona-forge/references/error-handling.md +0 -53
  280. package/prisma/skills/openclaw-persona-forge/references/identity-tension.md +0 -48
  281. package/prisma/skills/openclaw-persona-forge/references/naming-system.md +0 -39
  282. package/prisma/skills/openclaw-persona-forge/references/output-template.md +0 -166
  283. package/prisma/skills/opensource-pipeline/SKILL.md +0 -256
  284. package/prisma/skills/orch-add-feature/SKILL.md +0 -45
  285. package/prisma/skills/orch-build-mvp/SKILL.md +0 -49
  286. package/prisma/skills/orch-change-feature/SKILL.md +0 -43
  287. package/prisma/skills/orch-fix-defect/SKILL.md +0 -43
  288. package/prisma/skills/orch-pipeline/SKILL.md +0 -121
  289. package/prisma/skills/orch-refine-code/SKILL.md +0 -44
  290. package/prisma/skills/parallel-execution-optimizer/SKILL.md +0 -73
  291. package/prisma/skills/perl-patterns/SKILL.md +0 -505
  292. package/prisma/skills/perl-security/SKILL.md +0 -504
  293. package/prisma/skills/perl-testing/SKILL.md +0 -476
  294. package/prisma/skills/plan-orchestrate/SKILL.md +0 -263
  295. package/prisma/skills/plankton-code-quality/SKILL.md +0 -237
  296. package/prisma/skills/postgres-patterns/SKILL.md +0 -148
  297. package/prisma/skills/prediction-market-oracle-research/SKILL.md +0 -64
  298. package/prisma/skills/prediction-market-risk-review/SKILL.md +0 -61
  299. package/prisma/skills/prisma-patterns/SKILL.md +0 -401
  300. package/prisma/skills/product-capability/SKILL.md +0 -142
  301. package/prisma/skills/product-lens/SKILL.md +0 -93
  302. package/prisma/skills/production-audit/SKILL.md +0 -207
  303. package/prisma/skills/production-scheduling/SKILL.md +0 -238
  304. package/prisma/skills/project-flow-ops/SKILL.md +0 -112
  305. package/prisma/skills/prompt-optimizer/SKILL.md +0 -398
  306. package/prisma/skills/python-patterns/SKILL.md +0 -751
  307. package/prisma/skills/python-testing/SKILL.md +0 -817
  308. package/prisma/skills/pytorch-patterns/SKILL.md +0 -397
  309. package/prisma/skills/quality-nonconformance/SKILL.md +0 -260
  310. package/prisma/skills/quarkus-patterns/SKILL.md +0 -723
  311. package/prisma/skills/quarkus-security/SKILL.md +0 -468
  312. package/prisma/skills/quarkus-tdd/SKILL.md +0 -812
  313. package/prisma/skills/quarkus-verification/SKILL.md +0 -480
  314. package/prisma/skills/ralphinho-rfc-pipeline/SKILL.md +0 -68
  315. package/prisma/skills/react-native-patterns/SKILL.md +0 -326
  316. package/prisma/skills/react-patterns/SKILL.md +0 -342
  317. package/prisma/skills/react-performance/SKILL.md +0 -575
  318. package/prisma/skills/react-testing/SKILL.md +0 -424
  319. package/prisma/skills/recsys-pipeline-architect/SKILL.md +0 -115
  320. package/prisma/skills/recursive-decision-ledger/SKILL.md +0 -80
  321. package/prisma/skills/redis-patterns/SKILL.md +0 -404
  322. package/prisma/skills/regex-vs-llm-structured-text/SKILL.md +0 -221
  323. package/prisma/skills/remotion-video-creation/SKILL.md +0 -43
  324. package/prisma/skills/remotion-video-creation/rules/3d.md +0 -86
  325. package/prisma/skills/remotion-video-creation/rules/animations.md +0 -29
  326. package/prisma/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +0 -173
  327. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +0 -100
  328. package/prisma/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +0 -108
  329. package/prisma/skills/remotion-video-creation/rules/assets.md +0 -78
  330. package/prisma/skills/remotion-video-creation/rules/audio.md +0 -172
  331. package/prisma/skills/remotion-video-creation/rules/calculate-metadata.md +0 -104
  332. package/prisma/skills/remotion-video-creation/rules/can-decode.md +0 -75
  333. package/prisma/skills/remotion-video-creation/rules/charts.md +0 -58
  334. package/prisma/skills/remotion-video-creation/rules/compositions.md +0 -146
  335. package/prisma/skills/remotion-video-creation/rules/display-captions.md +0 -126
  336. package/prisma/skills/remotion-video-creation/rules/extract-frames.md +0 -229
  337. package/prisma/skills/remotion-video-creation/rules/fonts.md +0 -152
  338. package/prisma/skills/remotion-video-creation/rules/get-audio-duration.md +0 -58
  339. package/prisma/skills/remotion-video-creation/rules/get-video-dimensions.md +0 -68
  340. package/prisma/skills/remotion-video-creation/rules/get-video-duration.md +0 -58
  341. package/prisma/skills/remotion-video-creation/rules/gifs.md +0 -138
  342. package/prisma/skills/remotion-video-creation/rules/images.md +0 -130
  343. package/prisma/skills/remotion-video-creation/rules/import-srt-captions.md +0 -67
  344. package/prisma/skills/remotion-video-creation/rules/lottie.md +0 -67
  345. package/prisma/skills/remotion-video-creation/rules/measuring-dom-nodes.md +0 -34
  346. package/prisma/skills/remotion-video-creation/rules/measuring-text.md +0 -143
  347. package/prisma/skills/remotion-video-creation/rules/sequencing.md +0 -106
  348. package/prisma/skills/remotion-video-creation/rules/tailwind.md +0 -11
  349. package/prisma/skills/remotion-video-creation/rules/text-animations.md +0 -20
  350. package/prisma/skills/remotion-video-creation/rules/timing.md +0 -179
  351. package/prisma/skills/remotion-video-creation/rules/transcribe-captions.md +0 -19
  352. package/prisma/skills/remotion-video-creation/rules/transitions.md +0 -122
  353. package/prisma/skills/remotion-video-creation/rules/trimming.md +0 -52
  354. package/prisma/skills/remotion-video-creation/rules/videos.md +0 -171
  355. package/prisma/skills/repo-scan/SKILL.md +0 -79
  356. package/prisma/skills/research-ops/SKILL.md +0 -113
  357. package/prisma/skills/returns-reverse-logistics/SKILL.md +0 -240
  358. package/prisma/skills/rules-distill/SKILL.md +0 -265
  359. package/prisma/skills/rules-distill/scripts/scan-rules.sh +0 -58
  360. package/prisma/skills/rules-distill/scripts/scan-skills.sh +0 -129
  361. package/prisma/skills/rust-patterns/SKILL.md +0 -500
  362. package/prisma/skills/rust-testing/SKILL.md +0 -501
  363. package/prisma/skills/safety-guard/SKILL.md +0 -76
  364. package/prisma/skills/santa-method/SKILL.md +0 -307
  365. package/prisma/skills/scientific-db-pubmed-database/SKILL.md +0 -176
  366. package/prisma/skills/scientific-db-uspto-database/SKILL.md +0 -178
  367. package/prisma/skills/scientific-pkg-gget/SKILL.md +0 -167
  368. package/prisma/skills/scientific-thinking-literature-review/SKILL.md +0 -193
  369. package/prisma/skills/scientific-thinking-scholar-evaluation/SKILL.md +0 -161
  370. package/prisma/skills/search-first/SKILL.md +0 -183
  371. package/prisma/skills/security-bounty-hunter/SKILL.md +0 -100
  372. package/prisma/skills/security-review/SKILL.md +0 -504
  373. package/prisma/skills/security-review/cloud-infrastructure-security.md +0 -361
  374. package/prisma/skills/security-scan/SKILL.md +0 -166
  375. package/prisma/skills/seo/SKILL.md +0 -155
  376. package/prisma/skills/skill-comply/SKILL.md +0 -59
  377. package/prisma/skills/skill-comply/fixtures/compliant_trace.jsonl +0 -5
  378. package/prisma/skills/skill-comply/fixtures/noncompliant_trace.jsonl +0 -3
  379. package/prisma/skills/skill-comply/fixtures/tdd_spec.yaml +0 -44
  380. package/prisma/skills/skill-comply/prompts/classifier.md +0 -24
  381. package/prisma/skills/skill-comply/prompts/scenario_generator.md +0 -62
  382. package/prisma/skills/skill-comply/prompts/spec_generator.md +0 -42
  383. package/prisma/skills/skill-comply/pyproject.toml +0 -15
  384. package/prisma/skills/skill-comply/scripts/__init__.py +0 -0
  385. package/prisma/skills/skill-comply/scripts/classifier.py +0 -85
  386. package/prisma/skills/skill-comply/scripts/grader.py +0 -124
  387. package/prisma/skills/skill-comply/scripts/parser.py +0 -107
  388. package/prisma/skills/skill-comply/scripts/report.py +0 -170
  389. package/prisma/skills/skill-comply/scripts/run.py +0 -127
  390. package/prisma/skills/skill-comply/scripts/runner.py +0 -194
  391. package/prisma/skills/skill-comply/scripts/scenario_generator.py +0 -70
  392. package/prisma/skills/skill-comply/scripts/spec_generator.py +0 -72
  393. package/prisma/skills/skill-comply/scripts/utils.py +0 -13
  394. package/prisma/skills/skill-comply/tests/test_grader.py +0 -197
  395. package/prisma/skills/skill-comply/tests/test_parser.py +0 -90
  396. package/prisma/skills/skill-comply/tests/test_runner.py +0 -172
  397. package/prisma/skills/skill-scout/SKILL.md +0 -141
  398. package/prisma/skills/skill-stocktake/SKILL.md +0 -195
  399. package/prisma/skills/skill-stocktake/scripts/quick-diff.sh +0 -87
  400. package/prisma/skills/skill-stocktake/scripts/save-results.sh +0 -56
  401. package/prisma/skills/skill-stocktake/scripts/scan.sh +0 -170
  402. package/prisma/skills/social-graph-ranker/SKILL.md +0 -155
  403. package/prisma/skills/social-publisher/SKILL.md +0 -130
  404. package/prisma/skills/springboot-patterns/SKILL.md +0 -315
  405. package/prisma/skills/springboot-security/SKILL.md +0 -273
  406. package/prisma/skills/springboot-tdd/SKILL.md +0 -159
  407. package/prisma/skills/springboot-verification/SKILL.md +0 -232
  408. package/prisma/skills/strategic-compact/SKILL.md +0 -136
  409. package/prisma/skills/swift-actor-persistence/SKILL.md +0 -144
  410. package/prisma/skills/swift-concurrency-6-2/SKILL.md +0 -216
  411. package/prisma/skills/swift-protocol-di-testing/SKILL.md +0 -191
  412. package/prisma/skills/swiftui-patterns/SKILL.md +0 -259
  413. package/prisma/skills/taste/SKILL.md +0 -264
  414. package/prisma/skills/taste/references/genre-taxonomy.md +0 -87
  415. package/prisma/skills/tdd-workflow/SKILL.md +0 -583
  416. package/prisma/skills/team-agent-orchestration/SKILL.md +0 -111
  417. package/prisma/skills/team-builder/SKILL.md +0 -169
  418. package/prisma/skills/terminal-ops/SKILL.md +0 -110
  419. package/prisma/skills/tinystruct-patterns/SKILL.md +0 -279
  420. package/prisma/skills/tinystruct-patterns/references/architecture.md +0 -90
  421. package/prisma/skills/tinystruct-patterns/references/data-handling.md +0 -60
  422. package/prisma/skills/tinystruct-patterns/references/database.md +0 -99
  423. package/prisma/skills/tinystruct-patterns/references/routing.md +0 -64
  424. package/prisma/skills/tinystruct-patterns/references/system-usage.md +0 -97
  425. package/prisma/skills/tinystruct-patterns/references/testing.md +0 -72
  426. package/prisma/skills/token-budget-advisor/SKILL.md +0 -134
  427. package/prisma/skills/ui-demo/SKILL.md +0 -466
  428. package/prisma/skills/ui-to-vue/SKILL.md +0 -135
  429. package/prisma/skills/uncloud/SKILL.md +0 -344
  430. package/prisma/skills/unified-notifications-ops/SKILL.md +0 -188
  431. package/prisma/skills/verification-loop/SKILL.md +0 -127
  432. package/prisma/skills/video-editing/SKILL.md +0 -311
  433. package/prisma/skills/videodb/SKILL.md +0 -375
  434. package/prisma/skills/videodb/reference/api-reference.md +0 -550
  435. package/prisma/skills/videodb/reference/capture-reference.md +0 -407
  436. package/prisma/skills/videodb/reference/capture.md +0 -101
  437. package/prisma/skills/videodb/reference/editor.md +0 -443
  438. package/prisma/skills/videodb/reference/generative.md +0 -331
  439. package/prisma/skills/videodb/reference/rtstream-reference.md +0 -564
  440. package/prisma/skills/videodb/reference/rtstream.md +0 -65
  441. package/prisma/skills/videodb/reference/search.md +0 -230
  442. package/prisma/skills/videodb/reference/streaming.md +0 -406
  443. package/prisma/skills/videodb/reference/use-cases.md +0 -118
  444. package/prisma/skills/videodb/scripts/ws_listener.py +0 -282
  445. package/prisma/skills/visa-doc-translate/README.md +0 -86
  446. package/prisma/skills/visa-doc-translate/SKILL.md +0 -117
  447. package/prisma/skills/vite-patterns/SKILL.md +0 -450
  448. package/prisma/skills/vue-patterns/SKILL.md +0 -471
  449. package/prisma/skills/windows-desktop-e2e/SKILL.md +0 -888
  450. package/prisma/skills/workspace-surface-audit/SKILL.md +0 -126
  451. package/prisma/skills/x-api/SKILL.md +0 -235
@@ -1,117 +0,0 @@
1
- # Components
2
-
3
- Angular components are the fundamental building blocks of an application. Each component consists of a TypeScript class with behaviors, an HTML template, and a CSS selector.
4
-
5
- ## Component Definition
6
-
7
- Use the `@Component` decorator to define a component's metadata.
8
-
9
- ```ts
10
- @Component({
11
- selector: 'app-profile',
12
- template: `
13
- <img src="profile.jpg" alt="Profile photo" />
14
- <button (click)="save()">Save</button>
15
- `,
16
- styles: `
17
- img {
18
- border-radius: 50%;
19
- }
20
- `,
21
- })
22
- export class Profile {
23
- save() {
24
- /* ... */
25
- }
26
- }
27
- ```
28
-
29
- ## Metadata Options
30
-
31
- - `selector`: The CSS selector that identifies this component in templates.
32
- - `template`: Inline HTML template (preferred for small templates).
33
- - `templateUrl`: Path to an external HTML file.
34
- - `styles`: Inline CSS styles.
35
- - `styleUrl` / `styleUrls`: Path(s) to external CSS file(s).
36
- - `imports`: Lists the components, directives, or pipes used in this component's template.
37
-
38
- ## Using Components
39
-
40
- To use a component, add it to the `imports` array of the consuming component and use its selector in the template.
41
-
42
- ```ts
43
- @Component({
44
- selector: 'app-root',
45
- imports: [Profile],
46
- template: `<app-profile />`,
47
- })
48
- export class App {}
49
- ```
50
-
51
- ## Template Control Flow
52
-
53
- Angular uses built-in blocks for conditional rendering and loops.
54
-
55
- ### Conditional Rendering (`@if`)
56
-
57
- Use `@if` to conditionally show content. You can include `@else if` and `@else` blocks.
58
-
59
- ```html
60
- @if (user.isAdmin) {
61
- <admin-dashboard />
62
- } @else if (user.isModerator) {
63
- <mod-dashboard />
64
- } @else {
65
- <standard-dashboard />
66
- }
67
- ```
68
-
69
- **Result aliasing**: Save the result of the expression for reuse.
70
-
71
- ```html
72
- @if (user.settings(); as settings) {
73
- <p>Theme: {{ settings.theme }}</p>
74
- }
75
- ```
76
-
77
- ### Loops (`@for`)
78
-
79
- The `@for` block iterates over collections. The `track` expression is **required** for performance and DOM reuse.
80
-
81
- ```html
82
- <ul>
83
- @for (item of items(); track item.id; let i = $index, total = $count) {
84
- <li>{{ i + 1 }}/{{ total }}: {{ item.name }}</li>
85
- } @empty {
86
- <li>No items to display.</li>
87
- }
88
- </ul>
89
- ```
90
-
91
- **Implicit Variables**: `$index`, `$count`, `$first`, `$last`, `$even`, `$odd`.
92
-
93
- ### Switching Content (`@switch`)
94
-
95
- The `@switch` block renders content based on a value. It uses strict equality (`===`) and has **no fallthrough**.
96
-
97
- ```html
98
- @switch (status()) { @case ('loading') { <app-spinner /> } @case ('error') { <app-error-msg /> }
99
- @case ('success') { <app-data-grid /> } @default {
100
- <p>Unknown status</p>
101
- } }
102
- ```
103
-
104
- **Exhaustive Type Checking**: Use `@default never;` to ensure all cases of a union type are handled.
105
-
106
- ```html
107
- @switch (state) { @case ('on') { ... } @case ('off') { ... } @default never; // Errors if a new
108
- state like 'standby' is added }
109
- ```
110
-
111
- ## Core Concepts
112
-
113
- - **Host Element**: The DOM element that matches the component's selector.
114
- - **View**: The DOM rendered by the component's template inside the host element.
115
- - **Standalone**: By default, components are standalone (since Angular 19, `standalone: true` is default). For older versions, `standalone: true` must be explicit or the component must be part of an `NgModule`.
116
- - **Component Tree**: Angular applications are structured as a tree of components, where each component can host child components.
117
- - **Component Naming**: Do not add suffixes the `Component` suffix for Component classes (e.g., AppComponent) unless the project has been configured to use that naming configuration.
@@ -1,97 +0,0 @@
1
- # Creating and Using Services
2
-
3
- Services in Angular are reusable pieces of code that handle data fetching, business logic, or state management that multiple components or other services need to access.
4
-
5
- ## Creating a Service
6
-
7
- You can generate a service using the Angular CLI:
8
-
9
- ```bash
10
- ng generate service my-data
11
- ```
12
-
13
- Or you can manually create a TypeScript class and decorate it with `@Injectable()`.
14
-
15
- ```ts
16
- import {Injectable} from '@angular/core';
17
-
18
- @Injectable({
19
- providedIn: 'root',
20
- })
21
- export class BasicDataStore {
22
- private data: string[] = [];
23
-
24
- addData(item: string): void {
25
- this.data.push(item);
26
- }
27
-
28
- getData(): string[] {
29
- return [...this.data];
30
- }
31
- }
32
- ```
33
-
34
- ### The `providedIn: 'root'` Option
35
-
36
- Using `providedIn: 'root'` is the recommended approach for most services. It tells Angular to:
37
-
38
- - **Create a single instance (singleton)** for the entire application.
39
- - **Make it available everywhere** automatically, without needing to list it in any `providers` array.
40
- - **Enable tree-shaking**, meaning the service is only included in the final JavaScript bundle if it is actually injected somewhere.
41
-
42
- ## Injecting a Service
43
-
44
- Once a service is created, you can inject it into components, directives, or other services using the `inject()` function.
45
-
46
- ### Injecting into a Component
47
-
48
- ```ts
49
- import {Component, inject} from '@angular/core';
50
- import {BasicDataStore} from './basic-data-store.service';
51
-
52
- @Component({
53
- selector: 'app-example',
54
- template: `
55
- <div>
56
- <p>Data items: {{ dataStore.getData().length }}</p>
57
- <button (click)="dataStore.addData('New Item')">Add Item</button>
58
- </div>
59
- `,
60
- })
61
- export class Example {
62
- // Inject the service as a class field
63
- dataStore = inject(BasicDataStore);
64
- }
65
- ```
66
-
67
- ### Injecting into Another Service
68
-
69
- Services can inject other services in the exact same way.
70
-
71
- ```ts
72
- import {Injectable, inject} from '@angular/core';
73
- import {AdvancedDataStore} from './advanced-data-store.service';
74
-
75
- @Injectable({
76
- providedIn: 'root',
77
- })
78
- export class BasicDataStore {
79
- // Injecting another service
80
- private advancedDataStore = inject(AdvancedDataStore);
81
-
82
- private data: string[] = [];
83
-
84
- getData(): string[] {
85
- // Combine data from this service and the injected service
86
- return [...this.data, ...this.advancedDataStore.getData()];
87
- }
88
- }
89
- ```
90
-
91
- ## Advanced Service Patterns
92
-
93
- While `providedIn: 'root'` covers most scenarios, you may sometimes need:
94
-
95
- - **Component-specific instances**: If a component needs its own isolated instance of a service, provide it directly in the component's `@Component({ providers: [MyService] })` array.
96
- - **Factory providers**: For dynamic creation.
97
- - **Value providers**: For injecting configuration objects.
@@ -1,69 +0,0 @@
1
- # Data Resolvers
2
-
3
- Data resolvers fetch data before a route activates, ensuring components have the necessary data upon rendering.
4
-
5
- ## Creating a Resolver
6
-
7
- Implement the `ResolveFn` type.
8
-
9
- ```ts
10
- export const userResolver: ResolveFn<User> = (route, state) => {
11
- const userService = inject(UserService);
12
- const id = route.paramMap.get('id')!;
13
- return userService.getUser(id);
14
- };
15
- ```
16
-
17
- ## Configuring the Route
18
-
19
- Add the resolver under the `resolve` key.
20
-
21
- ```ts
22
- {
23
- path: 'user/:id',
24
- component: UserProfile,
25
- resolve: {
26
- user: userResolver
27
- }
28
- }
29
- ```
30
-
31
- ## Accessing Resolved Data
32
-
33
- ### 1. Via `ActivatedRoute` (Traditional)
34
-
35
- ```ts
36
- private route = inject(ActivatedRoute);
37
- data = toSignal(this.route.data);
38
- user = computed(() => this.data().user);
39
- ```
40
-
41
- ### 2. Via Component Inputs (Modern)
42
-
43
- Enable `withComponentInputBinding()` in `provideRouter` to pass resolved data directly to `@Input` or `input()`.
44
-
45
- ```ts
46
- // app.config.ts
47
- provideRouter(routes, withComponentInputBinding());
48
-
49
- // component.ts
50
- user = input.required<User>();
51
- ```
52
-
53
- ## Error Handling
54
-
55
- Navigation is blocked if a resolver fails.
56
-
57
- - Use `withNavigationErrorHandler` for global handling.
58
- - Use `catchError` within the resolver to return a `RedirectCommand` or fallback data.
59
-
60
- ```ts
61
- return userService
62
- .get(id)
63
- .pipe(catchError(() => of(new RedirectCommand(router.parseUrl('/error')))));
64
- ```
65
-
66
- ## Best Practices
67
-
68
- - **Keep it lightweight**: Fetch only critical data.
69
- - **Provide feedback**: Listen to router events to show a global loading bar during navigation, as the UI stays on the old page until the resolver finishes.
@@ -1,67 +0,0 @@
1
- # Define Routes
2
-
3
- Routes are objects that define which component should render for a specific URL path.
4
-
5
- ## Basic Configuration
6
-
7
- Define routes in a `Routes` array and provide them using `provideRouter` in your `appConfig`.
8
-
9
- ```ts
10
- // app.routes.ts
11
- export const routes: Routes = [
12
- {path: '', component: HomePage},
13
- {path: 'admin', component: AdminPage},
14
- ];
15
-
16
- // app.config.ts
17
- export const appConfig: ApplicationConfig = {
18
- providers: [provideRouter(routes)],
19
- };
20
- ```
21
-
22
- ## URL Paths
23
-
24
- - **Static**: Matches an exact string (e.g., `'admin'`).
25
- - **Route Parameters**: Dynamic segments prefixed with a colon (e.g., `'user/:id'`).
26
- - **Wildcard**: Matches any URL using `**`. Useful for "Not Found" pages. **Always place at the end of the array.**
27
-
28
- ## Matching Strategy
29
-
30
- Angular uses a **first-match wins** strategy. Specific routes must come before less specific ones.
31
-
32
- ## Redirects
33
-
34
- Use `redirectTo` to point one path to another.
35
-
36
- ```ts
37
- { path: 'articles', redirectTo: '/blog' },
38
- { path: 'blog', component: Blog },
39
- ```
40
-
41
- ## Page Titles
42
-
43
- Associate titles with routes for accessibility. Titles can be static or dynamic (via `ResolveFn` or a custom `TitleStrategy`).
44
-
45
- ```ts
46
- { path: 'home', component: Home, title: 'Home Page' }
47
- ```
48
-
49
- ## Route Data and Providers
50
-
51
- - **Static Data**: Attach metadata using the `data` property.
52
- - **Route Providers**: Scope dependencies to a specific route and its children using the `providers` array.
53
-
54
- ## Nested (Child) Routes
55
-
56
- Define sub-views using the `children` property. Parent components must include a `<router-outlet />`.
57
-
58
- ```ts
59
- {
60
- path: 'product/:id',
61
- component: Product,
62
- children: [
63
- { path: 'info', component: ProductInfo },
64
- { path: 'reviews', component: ProductReviews },
65
- ],
66
- }
67
- ```
@@ -1,72 +0,0 @@
1
- # Defining Dependency Providers
2
-
3
- Angular offers automatic and manual ways to provide dependencies to its Dependency Injection (DI) system.
4
-
5
- ## Automatic Provision
6
-
7
- The most common way to provide a service is using `providedIn: 'root'` on an `@Injectable()`.
8
-
9
- ### InjectionToken
10
-
11
- Use `InjectionToken` for non-class dependencies (configuration objects, functions, primitives). An `InjectionToken` can also be automatically provided.
12
-
13
- ```ts
14
- import {InjectionToken} from '@angular/core';
15
-
16
- export interface AppConfig {
17
- apiUrl: string;
18
- }
19
-
20
- export const APP_CONFIG = new InjectionToken<AppConfig>('app.config', {
21
- providedIn: 'root',
22
- factory: () => ({apiUrl: 'https://api.example.com'}),
23
- });
24
- ```
25
-
26
- ## Manual Provision
27
-
28
- You use the `providers` array when a service lacks `providedIn`, when you want a new instance for a specific component, or when configuring runtime values.
29
-
30
- ```ts
31
- @Component({
32
- providers: [
33
- // Shorthand for { provide: LocalService, useClass: LocalService }
34
- LocalService,
35
-
36
- // useClass: Swap implementations
37
- {provide: Logger, useClass: BetterLogger},
38
-
39
- // useValue: Provide static values
40
- {provide: API_URL_TOKEN, useValue: 'https://api.example.com'},
41
-
42
- // useFactory: Generate value dynamically
43
- {
44
- provide: ApiClient,
45
- useFactory: (http = inject(HttpClient)) => new ApiClient(http),
46
- },
47
-
48
- // useExisting: Create an alias
49
- {provide: OldLogger, useExisting: NewLogger},
50
-
51
- // multi: Provide multiple values for the same token as an array
52
- {provide: INTERCEPTOR_TOKEN, useClass: AuthInterceptor, multi: true},
53
- ],
54
- })
55
- export class Example {}
56
- ```
57
-
58
- ## Scopes of Providers
59
-
60
- - **Application Bootstrap**: Global singletons. Use for HTTP clients, logging, or app-wide config.
61
- - **Component/Directive**: Isolated instances. Use for component-specific state or forms. Services are destroyed when the component is destroyed.
62
- - **Route**: Feature-specific services loaded only with specific routes.
63
-
64
- ## Library Pattern: `provide*` functions
65
-
66
- Library authors should export functions that return provider arrays to encapsulate configuration:
67
-
68
- ```ts
69
- export function provideAnalytics(config: AnalyticsConfig): Provider[] {
70
- return [{provide: ANALYTICS_CONFIG, useValue: config}, AnalyticsService];
71
- }
72
- ```
@@ -1,120 +0,0 @@
1
- # Dependency Injection (DI) Fundamentals
2
-
3
- Dependency Injection (DI) is a design pattern used to organize and share code across an application by allowing you to "inject" features into different parts. This improves code maintainability, scalability, and testability.
4
-
5
- ## How DI Works in Angular
6
-
7
- There are two primary ways code interacts with Angular's DI system:
8
-
9
- 1. **Providing**: Making values (objects, functions, primitives) available to the DI system.
10
- 2. **Injecting**: Asking the DI system for those values.
11
-
12
- Angular components, directives, and services automatically participate in DI.
13
-
14
- ## Services
15
-
16
- A **service** is the most common way to share data and functionality across an application. It is a TypeScript class decorated with `@Injectable()`.
17
-
18
- ### Creating a Service
19
-
20
- Use the `providedIn: 'root'` option in the `@Injectable` decorator to make the service a singleton available throughout the entire application. This is the recommended approach for most services.
21
-
22
- ```ts
23
- import {Injectable} from '@angular/core';
24
-
25
- @Injectable({
26
- providedIn: 'root', // Makes this a singleton available everywhere
27
- })
28
- export class AnalyticsLogger {
29
- trackEvent(category: string, value: string) {
30
- console.log('Analytics event logged:', {category, value});
31
- }
32
- }
33
- ```
34
-
35
- Common uses for services include:
36
-
37
- - Data clients (API calls)
38
- - State management
39
- - Authentication and authorization
40
- - Logging and error handling
41
- - Utility functions
42
-
43
- ## Injecting Dependencies
44
-
45
- Use Angular's `inject()` function to request dependencies.
46
-
47
- ### The `inject()` Function
48
-
49
- You can use the `inject()` function to get an instance of a service (or any other provided token).
50
-
51
- ```ts
52
- import {Component, inject} from '@angular/core';
53
- import {Router} from '@angular/router';
54
- import {AnalyticsLogger} from './analytics-logger.service';
55
-
56
- @Component({
57
- selector: 'app-navbar',
58
- template: `<a href="#" (click)="navigateToDetail($event)">Detail Page</a>`,
59
- })
60
- export class Navbar {
61
- // Injecting dependencies using class field initializers
62
- private router = inject(Router);
63
- private analytics = inject(AnalyticsLogger);
64
-
65
- navigateToDetail(event: Event) {
66
- event.preventDefault();
67
- this.analytics.trackEvent('navigation', '/details');
68
- this.router.navigate(['/details']);
69
- }
70
- }
71
- ```
72
-
73
- ### Where can `inject()` be used? (Injection Context)
74
-
75
- You can call `inject()` in an **injection context**. The most common injection contexts are during the construction of a component, directive, or service.
76
-
77
- Valid places to call `inject()`:
78
-
79
- 1. **Class field initializers** (Recommended)
80
- 2. **Constructor body**
81
- 3. **Route guards and resolvers** (which are executed in an injection context)
82
- 4. **Factory functions** used in providers
83
-
84
- ```typescript
85
- import {Component, Directive, Injectable, inject, ElementRef} from '@angular/core';
86
- import {HttpClient} from '@angular/common/http';
87
-
88
- // 1. In a Component (Field Initializer & Constructor)
89
- @Component({
90
- /*...*/
91
- })
92
- export class Example {
93
- private service1 = inject(MyService); // Valid field initializer
94
-
95
- private service2: MyService;
96
- constructor() {
97
- this.service2 = inject(MyService); // Valid constructor body
98
- }
99
- }
100
-
101
- // 2. In a Directive
102
- @Directive({
103
- /*...*/
104
- })
105
- export class MyDirective {
106
- private element = inject(ElementRef); // Valid field initializer
107
- }
108
-
109
- // 3. In a Service
110
- @Injectable({providedIn: 'root'})
111
- export class MyService {
112
- private http = inject(HttpClient); // Valid field initializer
113
- }
114
-
115
- // 4. In a Route Guard (Functional)
116
- export const authGuard = () => {
117
- const auth = inject(AuthService); // Valid route guard
118
- return auth.isAuthenticated();
119
- };
120
- ```
@@ -1,56 +0,0 @@
1
- # End-to-End (E2E) Testing
2
-
3
- Use E2E tests to cover critical user journeys in a real browser. Prefer the framework already configured in the Angular workspace, such as Cypress or Playwright.
4
-
5
- ## Running E2E Tests
6
-
7
- Check `package.json` and `angular.json` for the project-specific command. Common patterns include:
8
-
9
- ```shell
10
- npm run e2e
11
- pnpm e2e
12
- ng e2e
13
- ```
14
-
15
- When the app must be built or served first, use the existing project scripts instead of inventing a parallel test entrypoint.
16
-
17
- ## Test Structure
18
-
19
- - Keep E2E specs close to the configured test framework, such as `cypress/e2e/` or `e2e/`.
20
- - Put reusable login/setup helpers in the framework support directory.
21
- - Keep fixtures explicit and small enough that each test can explain the user state it depends on.
22
-
23
- ### Cypress Example
24
-
25
- ```typescript
26
- describe('Login flow', () => {
27
- it('redirects to dashboard on valid credentials', () => {
28
- cy.visit('/login');
29
- cy.get('[data-cy=email]').type('user@example.com');
30
- cy.get('[data-cy=password]').type('password123');
31
- cy.get('[data-cy=submit]').click();
32
- cy.url().should('include', '/dashboard');
33
- });
34
- });
35
- ```
36
-
37
- ### Playwright Example
38
-
39
- ```typescript
40
- import {expect, test} from '@playwright/test';
41
-
42
- test('redirects to dashboard on valid credentials', async ({page}) => {
43
- await page.goto('/login');
44
- await page.getByLabel('Email').fill('user@example.com');
45
- await page.getByLabel('Password').fill('password123');
46
- await page.getByRole('button', {name: 'Sign in'}).click();
47
- await expect(page).toHaveURL(/dashboard/);
48
- });
49
- ```
50
-
51
- ## Best Practices
52
-
53
- - Prefer accessible locators (`getByRole`, `getByLabel`) or stable `data-*` attributes.
54
- - Avoid selectors that depend on CSS classes, DOM depth, or incidental text.
55
- - Wait for specific UI states, routes, or network responses instead of arbitrary sleeps.
56
- - Keep smoke tests short and reserve full workflow coverage for the highest-value paths.
@@ -1,83 +0,0 @@
1
- # Side Effects with `effect` and `afterRenderEffect`
2
-
3
- In Angular, an **effect** is an operation that runs whenever one or more signal values it tracks change.
4
-
5
- ## When to use `effect`
6
-
7
- Effects are intended for syncing signal state to imperative, non-signal APIs.
8
-
9
- **Valid Use Cases:**
10
-
11
- - Logging analytics.
12
- - Syncing state to `localStorage` or `sessionStorage`.
13
- - Performing custom rendering to a `<canvas>` or 3rd-party charting library.
14
-
15
- **CRITICAL RULE: DO NOT use effects to propagate state.**
16
- If you find yourself using `.set()` or `.update()` on a signal _inside_ an effect to keep two signals in sync, you are making a mistake. This causes `ExpressionChangedAfterItHasBeenChecked` errors and infinite loops. **Always use `computed()` or `linkedSignal()` for state derivation.**
17
-
18
- ## Basic Usage
19
-
20
- Effects execute asynchronously during the change detection process. They always run at least once.
21
-
22
- ```ts
23
- import { Component, signal, effect } from '@angular/core';
24
-
25
- @Component({...})
26
- export class Example {
27
- count = signal(0);
28
-
29
- constructor() {
30
- // Effect must be created in an injection context (e.g., a constructor)
31
- effect((onCleanup) => {
32
- console.log(`Count changed to ${this.count()}`);
33
-
34
- const timer = setTimeout(() => console.log('Timer finished'), 1000);
35
-
36
- // Cleanup function runs before the next execution, or when destroyed
37
- onCleanup(() => clearTimeout(timer));
38
- });
39
- }
40
- }
41
- ```
42
-
43
- ## DOM Manipulation with `afterRenderEffect`
44
-
45
- Standard `effect` runs _before_ Angular updates the DOM. If you need to manually inspect or modify the DOM based on a signal change (e.g., integrating a 3rd party UI library), use `afterRenderEffect`.
46
-
47
- `afterRenderEffect` runs after Angular has finished rendering the DOM.
48
-
49
- ### Render Phases
50
-
51
- To prevent reflows (forced layout thrashing), `afterRenderEffect` forces you to divide your DOM reads and writes into specific phases.
52
-
53
- ```ts
54
- import { Component, afterRenderEffect, viewChild, ElementRef } from '@angular/core';
55
-
56
- @Component({...})
57
- export class Chart {
58
- canvas = viewChild.required<ElementRef>('canvas');
59
-
60
- constructor() {
61
- afterRenderEffect({
62
- // 1. Read from the DOM
63
- earlyRead: () => {
64
- return this.canvas().nativeElement.getBoundingClientRect().width;
65
- },
66
- // 2. Write to the DOM (receives the result of the previous phase)
67
- write: (width) => {
68
- // NEVER read from the DOM in the write phase.
69
- setupChart(this.canvas().nativeElement, width);
70
- }
71
- });
72
- }
73
- }
74
- ```
75
-
76
- **Available Phases (executed in this order):**
77
-
78
- 1. `earlyRead`
79
- 2. `write` (Never read here)
80
- 3. `mixedReadWrite` (Avoid if possible)
81
- 4. `read` (Never write here)
82
-
83
- _Note: `afterRenderEffect` only runs on the client, never during Server-Side Rendering (SSR)._