@danieljvdm/dev-kit 1.0.2 → 2.0.0

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 (329) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +2 -33
  4. package/skill-sources.lock.json +15 -117
  5. package/skills/animate/LICENSE +21 -0
  6. package/skills/animate/NOTICE +10 -0
  7. package/skills/animate/SKILL.md +34 -0
  8. package/skills/animate/references/gestures.md +27 -0
  9. package/skills/animate/references/glossary.md +136 -0
  10. package/skills/animate/references/implementation.md +22 -0
  11. package/skills/animate/references/opportunities.md +18 -0
  12. package/skills/animate/references/principles.md +48 -0
  13. package/skills/animate/references/review.md +19 -0
  14. package/skills/cloudflare-workers/LICENSE +202 -0
  15. package/skills/cloudflare-workers/NOTICE +9 -0
  16. package/skills/cloudflare-workers/SKILL.md +26 -0
  17. package/skills/cloudflare-workers/references/durable-objects.md +68 -0
  18. package/skills/cloudflare-workers/references/sandbox.md +48 -0
  19. package/skills/cloudflare-workers/references/workers.md +63 -0
  20. package/skills/cloudflare-workers/references/wrangler.md +56 -0
  21. package/skills/design-ui/LICENSE +21 -0
  22. package/skills/design-ui/NOTICE +8 -0
  23. package/skills/design-ui/SKILL.md +29 -0
  24. package/skills/design-ui/references/appearance.md +22 -0
  25. package/skills/design-ui/references/components.md +33 -0
  26. package/skills/design-ui/references/exploration.md +50 -0
  27. package/skills/design-ui/references/libraries.md +39 -0
  28. package/skills/design-ui/references/themes.md +23 -0
  29. package/skills/dev-kit/SKILL.md +19 -38
  30. package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
  31. package/skills/dev-kit/references/skills.md +2 -2
  32. package/skills/effect-development/SKILL.md +27 -0
  33. package/skills/effect-development/agents/openai.yaml +4 -0
  34. package/skills/effect-development/references/api/index.md +32 -0
  35. package/skills/effect-development/references/api/schema-codecs.md +15 -0
  36. package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
  37. package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
  38. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
  39. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
  40. package/skills/effect-development/references/atom/index.md +40 -0
  41. package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
  42. package/skills/effect-development/references/cli/index.md +39 -0
  43. package/skills/effect-development/references/setup.md +15 -0
  44. package/skills/open-pull-request/SKILL.md +10 -70
  45. package/skills/open-pull-request/references/evidence.md +22 -0
  46. package/skills/open-pull-request/references/explanation.md +21 -0
  47. package/skills/open-pull-request/references/publication.md +21 -0
  48. package/skills/sentry/LICENSE +202 -0
  49. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  50. package/skills/sentry/NOTICE +14 -0
  51. package/skills/sentry/SKILL.md +33 -0
  52. package/skills/sentry/references/alert-payloads.md +105 -0
  53. package/skills/sentry/references/alerts.md +17 -0
  54. package/skills/sentry/references/artifacts.md +25 -0
  55. package/skills/sentry/references/auth-token.md +65 -0
  56. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  57. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  58. package/skills/sentry/references/concepts/crons.md +50 -0
  59. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  60. package/skills/sentry/references/concepts/errors.md +40 -0
  61. package/skills/sentry/references/concepts/logging.md +85 -0
  62. package/skills/sentry/references/concepts/metrics.md +49 -0
  63. package/skills/sentry/references/concepts/monitors.md +78 -0
  64. package/skills/sentry/references/concepts/profiling.md +38 -0
  65. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  66. package/skills/sentry/references/concepts/releases.md +43 -0
  67. package/skills/sentry/references/concepts/session-replay.md +35 -0
  68. package/skills/sentry/references/concepts/tracing.md +54 -0
  69. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  70. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  71. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  72. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  73. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  74. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  75. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  76. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  77. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  78. package/skills/sentry/references/first-error-setup.md +25 -0
  79. package/skills/sentry/references/instrumentation.md +30 -0
  80. package/skills/sentry/references/issues.md +32 -0
  81. package/skills/sentry/references/new-project.md +17 -0
  82. package/skills/sentry/references/otel-exporter.md +30 -0
  83. package/skills/sentry/references/release-workflow.md +31 -0
  84. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  85. package/skills/sentry/references/releases/index.md +93 -0
  86. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  87. package/skills/sentry/references/releases/tagging.md +131 -0
  88. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  89. package/skills/sentry/references/sdks/android/crons.md +305 -0
  90. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  91. package/skills/sentry/references/sdks/android/index.md +748 -0
  92. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  93. package/skills/sentry/references/sdks/android/logging.md +374 -0
  94. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  95. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  96. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  97. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  98. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  99. package/skills/sentry/references/sdks/browser/index.md +714 -0
  100. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  101. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  102. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  103. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  104. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  105. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  106. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  107. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  108. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  109. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  110. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  111. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  112. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  113. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  114. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  115. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  116. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  117. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  118. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  119. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  120. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  121. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  122. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  123. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  124. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  125. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  126. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  127. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  128. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  129. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  130. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  131. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  132. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  133. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  134. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  135. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  136. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  137. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  138. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  139. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  140. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  141. package/skills/sentry/references/sdks/go/crons.md +270 -0
  142. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  143. package/skills/sentry/references/sdks/go/index.md +324 -0
  144. package/skills/sentry/references/sdks/go/logging.md +354 -0
  145. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  146. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  147. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  148. package/skills/sentry/references/sdks/index.md +41 -0
  149. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  150. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  151. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  152. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  153. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  154. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  155. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  156. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  157. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  158. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  159. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  160. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  161. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  162. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  163. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  164. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  165. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  166. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  167. package/skills/sentry/references/sdks/node/crons.md +432 -0
  168. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  169. package/skills/sentry/references/sdks/node/index.md +942 -0
  170. package/skills/sentry/references/sdks/node/logging.md +380 -0
  171. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  172. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  173. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  174. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  175. package/skills/sentry/references/sdks/php/crons.md +265 -0
  176. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  177. package/skills/sentry/references/sdks/php/index.md +362 -0
  178. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  179. package/skills/sentry/references/sdks/php/logging.md +242 -0
  180. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  181. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  182. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  183. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  184. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  185. package/skills/sentry/references/sdks/python/crons.md +218 -0
  186. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  187. package/skills/sentry/references/sdks/python/index.md +361 -0
  188. package/skills/sentry/references/sdks/python/logging.md +234 -0
  189. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  190. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  191. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  192. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  193. package/skills/sentry/references/sdks/react/index.md +492 -0
  194. package/skills/sentry/references/sdks/react/logging.md +364 -0
  195. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  196. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  197. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  198. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  199. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  200. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  201. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  202. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  203. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  204. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  205. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  206. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  207. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  208. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  209. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  210. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  211. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  212. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  213. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  214. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  215. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  216. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  217. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  218. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  219. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  220. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  221. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  222. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  223. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  224. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  225. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  226. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  227. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  228. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  229. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  230. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  231. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  232. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  234. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  235. package/skills/sentry/references/search-query-language.md +226 -0
  236. package/skills/sentry/references/semantics/angular.md +7 -0
  237. package/skills/sentry/references/semantics/app.md +28 -0
  238. package/skills/sentry/references/semantics/art.md +17 -0
  239. package/skills/sentry/references/semantics/aws.md +43 -0
  240. package/skills/sentry/references/semantics/browser.md +34 -0
  241. package/skills/sentry/references/semantics/cache.md +12 -0
  242. package/skills/sentry/references/semantics/client.md +8 -0
  243. package/skills/sentry/references/semantics/cloud.md +12 -0
  244. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  245. package/skills/sentry/references/semantics/code.md +11 -0
  246. package/skills/sentry/references/semantics/culture.md +11 -0
  247. package/skills/sentry/references/semantics/db.md +21 -0
  248. package/skills/sentry/references/semantics/device.md +43 -0
  249. package/skills/sentry/references/semantics/error.md +7 -0
  250. package/skills/sentry/references/semantics/event.md +8 -0
  251. package/skills/sentry/references/semantics/exception.md +10 -0
  252. package/skills/sentry/references/semantics/faas.md +19 -0
  253. package/skills/sentry/references/semantics/file.md +8 -0
  254. package/skills/sentry/references/semantics/flag.md +7 -0
  255. package/skills/sentry/references/semantics/gcp.md +16 -0
  256. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  257. package/skills/sentry/references/semantics/general.md +11 -0
  258. package/skills/sentry/references/semantics/graphql.md +9 -0
  259. package/skills/sentry/references/semantics/grpc.md +19 -0
  260. package/skills/sentry/references/semantics/http.md +34 -0
  261. package/skills/sentry/references/semantics/index.md +63 -0
  262. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  263. package/skills/sentry/references/semantics/jvm.md +12 -0
  264. package/skills/sentry/references/semantics/koa.md +7 -0
  265. package/skills/sentry/references/semantics/logger.md +7 -0
  266. package/skills/sentry/references/semantics/mcp.md +37 -0
  267. package/skills/sentry/references/semantics/mdc.md +7 -0
  268. package/skills/sentry/references/semantics/messaging.md +23 -0
  269. package/skills/sentry/references/semantics/middleware.md +7 -0
  270. package/skills/sentry/references/semantics/navigation.md +9 -0
  271. package/skills/sentry/references/semantics/nel.md +11 -0
  272. package/skills/sentry/references/semantics/network.md +17 -0
  273. package/skills/sentry/references/semantics/os.md +15 -0
  274. package/skills/sentry/references/semantics/otel.md +10 -0
  275. package/skills/sentry/references/semantics/params.md +7 -0
  276. package/skills/sentry/references/semantics/process.md +14 -0
  277. package/skills/sentry/references/semantics/react.md +7 -0
  278. package/skills/sentry/references/semantics/remix.md +7 -0
  279. package/skills/sentry/references/semantics/resource.md +7 -0
  280. package/skills/sentry/references/semantics/rpc.md +10 -0
  281. package/skills/sentry/references/semantics/score.md +10 -0
  282. package/skills/sentry/references/semantics/sentry.md +69 -0
  283. package/skills/sentry/references/semantics/server.md +8 -0
  284. package/skills/sentry/references/semantics/service.md +8 -0
  285. package/skills/sentry/references/semantics/session.md +7 -0
  286. package/skills/sentry/references/semantics/state.md +7 -0
  287. package/skills/sentry/references/semantics/thread.md +8 -0
  288. package/skills/sentry/references/semantics/timber.md +7 -0
  289. package/skills/sentry/references/semantics/trpc.md +8 -0
  290. package/skills/sentry/references/semantics/ui.md +18 -0
  291. package/skills/sentry/references/semantics/url.md +15 -0
  292. package/skills/sentry/references/semantics/user.md +17 -0
  293. package/skills/sentry/references/semantics/user_agent.md +7 -0
  294. package/skills/sentry/references/semantics/vercel.md +42 -0
  295. package/skills/sentry/references/setup-verification.md +39 -0
  296. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  297. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  298. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  299. package/skills/sentry/references/snapshots/index.md +19 -0
  300. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  301. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  302. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  303. package/skills/testing/LICENSE +21 -0
  304. package/skills/testing/NOTICE +7 -0
  305. package/skills/testing/SKILL.md +13 -19
  306. package/skills/testing/agents/openai.yaml +1 -2
  307. package/skills/testing/references/selection.md +23 -0
  308. package/skills/testing/references/tdd.md +19 -0
  309. package/skills/testing/references/test-design.md +17 -0
  310. package/src/catalog.ts +1 -7
  311. package/skills/build-effect-apis/SKILL.md +0 -81
  312. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  313. package/skills/build-effect-clis/SKILL.md +0 -92
  314. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  315. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  316. package/skills/effect-atom-state/SKILL.md +0 -97
  317. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  318. package/skills/effect-ts/SKILL.md +0 -35
  319. package/skills/effect-ts/agents/openai.yaml +0 -4
  320. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  324. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  325. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  328. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,516 @@
1
+ # Tracing — Sentry PHP SDK
2
+
3
+ > Minimum SDK: `sentry/sentry` ^4.0 · `sentry/sentry-laravel` ^4.0 ·
4
+ > `sentry/sentry-symfony` ^5.0
5
+
6
+ ## Configuration
7
+
8
+ | Option | Type | Default | Purpose |
9
+ | --------------------------- | ---------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
10
+ | `traces_sample_rate` | `float` | `null` | Fraction of transactions to trace (0.0–1.0); `null` disables tracing |
11
+ | `traces_sampler` | `callable` | `null` | Per-transaction sampling function; takes precedence over `traces_sample_rate` |
12
+ | `profiles_sample_rate` | `float` | `null` | Fraction of sampled transactions to profile (relative to `traces_sample_rate`) |
13
+ | `ignore_transactions` | `array` | `[]` | Transaction names to never trace (e.g., `['/up', '/healthz']`) |
14
+ | `before_send_transaction` | `callable` | no-op | Mutate or drop transaction events before sending |
15
+ | `strict_trace_continuation` | `bool` | `false` | Only continue an incoming distributed trace if the `sentry-org_id` baggage matches the SDK’s org ID; prevents trace contamination from third-party services (>=4.21.0). Replaces deprecated `strict_trace_propagation` |
16
+
17
+ ## Code Examples
18
+
19
+ ### Enable tracing
20
+
21
+ ```php
22
+ // Plain PHP — uniform sample rate
23
+ \Sentry\init([
24
+ 'dsn' => 'https://<key>@<org>.ingest.sentry.io/<project>',
25
+ 'traces_sample_rate' => 0.2, // trace 20% of requests
26
+ ]);
27
+
28
+ // Laravel — config/sentry.php
29
+ 'traces_sample_rate' => env('SENTRY_TRACES_SAMPLE_RATE') === null
30
+ ? null
31
+ : (float) env('SENTRY_TRACES_SAMPLE_RATE'),
32
+ ```
33
+
34
+ ```yaml
35
+ # Symfony — config/packages/sentry.yaml
36
+ sentry:
37
+ options:
38
+ traces_sample_rate: 0.2
39
+ ```
40
+
41
+ ### Dynamic sampling with `traces_sampler`
42
+
43
+ ```php
44
+ // Plain PHP — closure directly in init()
45
+ \Sentry\init([
46
+ 'dsn' => '...',
47
+ 'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
48
+ $transactionName = $context->getTransactionContext()->getName();
49
+
50
+ // Drop health checks
51
+ if (in_array($transactionName, ['/healthz', '/up', '/ping'])) {
52
+ return 0.0;
53
+ }
54
+
55
+ // Honour parent sampling decision in distributed traces
56
+ $parentSampled = $context->getParentSampled();
57
+ if ($parentSampled !== null) {
58
+ return (float) $parentSampled;
59
+ }
60
+
61
+ // 50% of HTTP requests, 10% of everything else
62
+ return str_starts_with($transactionName, 'GET ') || str_starts_with($transactionName, 'POST ')
63
+ ? 0.5
64
+ : 0.1;
65
+ },
66
+ ]);
67
+ ```
68
+
69
+ ```yaml
70
+ # Symfony — traces_sampler must be wired through the service container (closures can't be serialized)
71
+ sentry:
72
+ options:
73
+ traces_sampler: "sentry.callback.traces_sampler"
74
+
75
+ services:
76
+ sentry.callback.traces_sampler:
77
+ class: 'App\Service\Sentry'
78
+ factory: ['@App\Service\Sentry', "getTracesSampler"]
79
+ ```
80
+
81
+ ```php
82
+ // src/Service/Sentry.php
83
+ namespace App\Service;
84
+
85
+ class Sentry
86
+ {
87
+ public function getTracesSampler(): callable
88
+ {
89
+ return function (\Sentry\Tracing\SamplingContext $context): float {
90
+ return 0.5;
91
+ };
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### Custom span API — `TransactionContext` and `SpanContext`
97
+
98
+ ```php
99
+ use Sentry\Tracing\TransactionContext;
100
+ use Sentry\Tracing\SpanContext;
101
+
102
+ // 1. Build and start a root transaction
103
+ $transactionContext = TransactionContext::make()
104
+ ->setName('process-order')
105
+ ->setOp('task');
106
+
107
+ $transaction = \Sentry\startTransaction($transactionContext);
108
+
109
+ // 2. Register on the hub so child spans attach to it
110
+ \Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
111
+
112
+ // 3. Add a child span
113
+ $spanContext = SpanContext::make()
114
+ ->setOp('db.query')
115
+ ->setDescription('SELECT * FROM orders WHERE id = ?');
116
+
117
+ $span = $transaction->startChild($spanContext);
118
+ // ... do work ...
119
+ $span->finish();
120
+
121
+ // 4. Finish transaction — submits everything to Sentry
122
+ $transaction->finish();
123
+ ```
124
+
125
+ ### `\Sentry\trace()` helper (recommended)
126
+
127
+ Removes boilerplate: starts the span, sets it as current, finishes it automatically.
128
+
129
+ ```php
130
+ $result = \Sentry\trace(
131
+ function (\Sentry\State\Scope $scope): array {
132
+ return fetchOrdersFromDatabase();
133
+ },
134
+ SpanContext::make()
135
+ ->setOp('db.query')
136
+ ->setDescription('fetch-orders')
137
+ );
138
+ ```
139
+
140
+ ### Safe manual span pattern (handles no-transaction case)
141
+
142
+ ```php
143
+ function expensiveOperation(): void
144
+ {
145
+ $parent = \Sentry\SentrySdk::getCurrentHub()->getSpan();
146
+ $span = null;
147
+
148
+ if ($parent !== null) {
149
+ $context = SpanContext::make()
150
+ ->setOp('some_operation')
151
+ ->setDescription('This is a description');
152
+ $span = $parent->startChild($context);
153
+ \Sentry\SentrySdk::getCurrentHub()->setSpan($span);
154
+ }
155
+
156
+ try {
157
+ // ... do work ...
158
+ } finally {
159
+ if ($span !== null) {
160
+ $span->finish();
161
+ \Sentry\SentrySdk::getCurrentHub()->setSpan($parent);
162
+ }
163
+ }
164
+ }
165
+ ```
166
+
167
+ ### Span data attributes
168
+
169
+ ```php
170
+ // At creation time
171
+ $spanContext = SpanContext::make()
172
+ ->setOp('http.client')
173
+ ->setData([
174
+ 'http.request.method' => 'GET',
175
+ 'http.response.status_code' => 200,
176
+ ]);
177
+
178
+ // On an existing span
179
+ $span->setData(['db.system' => 'postgresql', 'db.table' => 'orders']);
180
+
181
+ // Read-modify-write
182
+ $span->setData([
183
+ 'counter' => $span->getData('counter', 0) + 1,
184
+ ]);
185
+ ```
186
+
187
+ ### Span status
188
+
189
+ ```php
190
+ $span->setStatus(\Sentry\Tracing\SpanStatus::createFromHttpStatusCode($response->getStatusCode()));
191
+ $transaction->setStatus(\Sentry\Tracing\SpanStatus::ok());
192
+ $transaction->setStatus(\Sentry\Tracing\SpanStatus::internalError());
193
+ ```
194
+
195
+ ### Accessing the active span/transaction
196
+
197
+ ```php
198
+ $transaction = \Sentry\SentrySdk::getCurrentHub()->getTransaction(); // ?Transaction
199
+ $span = \Sentry\SentrySdk::getCurrentHub()->getSpan(); // ?Span
200
+
201
+ if ($transaction !== null) {
202
+ $transaction->setData(['order.type' => 'subscription']);
203
+ }
204
+ ```
205
+
206
+ ### Mutating all spans via `before_send_transaction`
207
+
208
+ ```php
209
+ \Sentry\init([
210
+ 'before_send_transaction' => function (\Sentry\Event $event, ?\Sentry\EventHint $hint): ?\Sentry\Event {
211
+ // Drop health-check transactions
212
+ if (in_array($event->getTransaction(), ['GET /up', 'GET /healthz'])) {
213
+ return null;
214
+ }
215
+
216
+ // Add data to every span in the transaction
217
+ foreach ($event->getSpans() as $span) {
218
+ $span->setData(['server' => 'web-01']);
219
+ }
220
+
221
+ return $event;
222
+ },
223
+ ]);
224
+ ```
225
+
226
+ ## Auto-Instrumentation Matrix
227
+
228
+ ### Plain PHP — No automatic instrumentation
229
+
230
+ The plain PHP SDK provides **zero automatic instrumentation**. Every transaction and
231
+ span must be created manually using the Custom Span API.
232
+
233
+ ### Laravel — Auto-instrumented operations
234
+
235
+ The `Tracing\Middleware` is auto-prepended and the `Tracing\ServiceProvider` wires all
236
+ listeners automatically.
237
+
238
+ | Operation | Span Op | Enabled by default |
239
+ | -------------------------- | -------------------- | ----------------------------------------------------- |
240
+ | HTTP request lifecycle | `http.server` | ✅ Always |
241
+ | Route handler dispatch | `http.route` | ✅ Always |
242
+ | SQL queries | `db.sql.query` | ✅ (`tracing.sql_queries`) |
243
+ | DB transactions | `db.transaction` | ✅ Always |
244
+ | Blade view rendering | `view.render` | ✅ (`tracing.views`) |
245
+ | Outgoing HTTP client | `http.client` | ✅ (`tracing.http_client_requests`, Laravel ≥ 8.45) |
246
+ | Cache operations | `cache.*` | ✅ (`tracing.cache`, Laravel ≥ 11.11) |
247
+ | Queue job processing | `queue.process` | ⚙️ `tracing.queue_jobs: true` |
248
+ | Queue job as transaction | `queue.process` | ⚙️ `tracing.queue_job_transactions: true` |
249
+ | Redis commands | (redis spans) | ⚙️ `tracing.redis_commands: true` |
250
+ | Livewire components | (livewire spans) | ⚙️ `tracing.livewire: true` |
251
+ | Notifications | (notification spans) | ✅ (`tracing.notifications`) |
252
+ | Lighthouse GraphQL | (graphql spans) | ✅ When Lighthouse installed |
253
+ | Laravel Folio routes | transaction name | ✅ When Folio installed |
254
+ | Filesystem disk operations | (file spans) | ⚙️ Opt-in via `Storage\Integration::configureDisks()` |
255
+
256
+ ```php
257
+ // Filesystem disk opt-in (config/filesystems.php)
258
+ 'disks' => \Sentry\Laravel\Features\Storage\Integration::configureDisks([
259
+ 'local' => ['driver' => 'local', 'root' => storage_path('app'), 'throw' => false],
260
+ 's3' => ['driver' => 's3', /* ... */],
261
+ ], enableSpans: true, enableBreadcrumbs: true),
262
+ ```
263
+
264
+ ### Symfony — Auto-instrumented operations
265
+
266
+ `TracingRequestListener` and other compiler-wired listeners activate automatically.
267
+
268
+ | Operation | Span Op | Origin |
269
+ | --------------------------------- | ---------------------- | ------------------ |
270
+ | HTTP main request | `http.server` | `auto.http.server` |
271
+ | HTTP sub-request | `http.server` | `auto.http.server` |
272
+ | Console command | `console.command` | `auto.console` |
273
+ | Outbound HTTP calls | `http.client` | `auto.http.client` |
274
+ | Doctrine DB query | `db.sql.query` | `auto.db` |
275
+ | Doctrine DB prepare | `db.sql.prepare` | `auto.db` |
276
+ | Doctrine DB exec | `db.sql.exec` | `auto.db` |
277
+ | Doctrine TX begin/commit/rollback | `db.sql.transaction.*` | `auto.db` |
278
+ | PSR-6 cache get/put/delete/flush | `cache.*` | `auto.cache` |
279
+ | Twig template rendering | `view.render` | `auto.view` |
280
+
281
+ ## Distributed Tracing
282
+
283
+ Two headers carry trace context between services:
284
+
285
+ | Header | Purpose |
286
+ | -------------- | ----------------------------------------------------------- |
287
+ | `sentry-trace` | Trace ID, span ID, sampling decision (Sentry native format) |
288
+ | `baggage` | Dynamic sampling context (W3C baggage spec) |
289
+
290
+ > **CORS note:** Both headers must be in your CORS allowlist if browser requests are
291
+ > involved. Proxies and API gateways may strip unknown headers.
292
+
293
+ ### Extracting incoming trace context
294
+
295
+ ```php
296
+ $sentryTrace = $_SERVER['HTTP_SENTRY_TRACE'] ?? '';
297
+ $baggage = $_SERVER['HTTP_BAGGAGE'] ?? '';
298
+
299
+ // continueTrace() returns a TransactionContext pre-populated with parent trace data
300
+ $ctx = \Sentry\continueTrace($sentryTrace, $baggage);
301
+ $ctx->setName('process-payment')->setOp('task');
302
+
303
+ $transaction = \Sentry\startTransaction($ctx);
304
+ \Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
305
+ ```
306
+
307
+ ### Injecting outgoing trace headers
308
+
309
+ ```php
310
+ // Manual header injection (e.g., Guzzle, curl, any HTTP client)
311
+ $headers = [
312
+ 'sentry-trace' => \Sentry\getTraceparent(),
313
+ 'baggage' => \Sentry\getBaggage(),
314
+ ];
315
+
316
+ $client = new \GuzzleHttp\Client();
317
+ $response = $client->get('https://internal-api.example.com', [
318
+ 'headers' => $headers,
319
+ ]);
320
+ ```
321
+
322
+ ### Guzzle middleware (automatic header injection)
323
+
324
+ ```php
325
+ use Sentry\Tracing\GuzzleTracingMiddleware;
326
+
327
+ $stack = \GuzzleHttp\HandlerStack::create();
328
+ $stack->push(GuzzleTracingMiddleware::trace());
329
+
330
+ $client = new \GuzzleHttp\Client(['handler' => $stack]);
331
+ $response = $client->get('https://example.com/');
332
+ // sentry-trace + baggage headers injected automatically; span created for the request
333
+ ```
334
+
335
+ ### `continueTrace()` full pattern (queue consumers, workers)
336
+
337
+ ```php
338
+ // Continue a distributed trace from a queue job payload
339
+ $context = \Sentry\continueTrace(
340
+ $job->getMetadata('sentry_trace'),
341
+ $job->getMetadata('baggage')
342
+ );
343
+ $context->setOp('queue.process')->setName('App\Jobs\ProcessPayment');
344
+
345
+ $transaction = \Sentry\startTransaction($context);
346
+ \Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
347
+
348
+ try {
349
+ $job->handle();
350
+ } catch (\Throwable $e) {
351
+ $transaction->setStatus(\Sentry\Tracing\SpanStatus::internalError());
352
+ throw $e;
353
+ } finally {
354
+ $transaction->finish();
355
+ }
356
+ ```
357
+
358
+ ### HTML meta tag injection (frontend/backend trace stitching)
359
+
360
+ Inject these tags into your HTML `<head>` so the Sentry JavaScript SDK can continue the
361
+ backend trace in the browser.
362
+
363
+ ```php
364
+ // Plain PHP
365
+ echo sprintf('<meta name="sentry-trace" content="%s"/>', \Sentry\getTraceparent());
366
+ echo sprintf('<meta name="baggage" content="%s"/>', \Sentry\getBaggage());
367
+ ```
368
+
369
+ ```blade
370
+ {{-- Laravel Blade template --}}
371
+ {!! \Sentry\Laravel\Integration::sentryMeta() !!}
372
+
373
+ {{-- Or individually: --}}
374
+ {!! \Sentry\Laravel\Integration::sentryTracingMeta() !!}
375
+ {!! \Sentry\Laravel\Integration::sentryBaggageMeta() !!}
376
+ ```
377
+
378
+ ```twig
379
+ {# Symfony Twig template — inject via a controller variable #}
380
+ {{ sentry_trace_meta | raw }}
381
+ {{ sentry_baggage_meta | raw }}
382
+ ```
383
+
384
+ ### Framework-automatic propagation
385
+
386
+ | Framework | Incoming (extract) | Outgoing (inject) |
387
+ | --------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
388
+ | Plain PHP | Manual `continueTrace()` | Manual header injection |
389
+ | Laravel | Auto in `Tracing\Middleware` | Auto on Laravel HTTP Client (≥ 8.45) |
390
+ | Symfony | Auto in `TracingRequestListener` (supports both `sentry-trace` and `traceparent`) | Auto via HTTP Client decorator (injects `sentry-trace`, `baggage`, `traceparent`) |
391
+
392
+ ## Profiling
393
+
394
+ Requires the **Excimer** PHP extension (Wikimedia sampling profiler).
395
+
396
+ - Platform: **Linux or macOS only** — Windows is not supported
397
+ - PHP: 7.2+
398
+
399
+ ```bash
400
+ # Install Excimer
401
+ apt-get install php-excimer # Debian/Ubuntu
402
+ pecl install excimer # PECL
403
+ phpenmod -s fpm excimer # Enable
404
+ ```
405
+
406
+ ```php
407
+ // Plain PHP — traces_sample_rate must be set; profiles_sample_rate is relative to it
408
+ \Sentry\init([
409
+ 'dsn' => '...',
410
+ 'traces_sample_rate' => 1.0,
411
+ 'profiles_sample_rate' => 1.0, // profile 100% of sampled transactions
412
+ ]);
413
+ ```
414
+
415
+ ```php
416
+ // Laravel — config/sentry.php
417
+ 'traces_sample_rate' => 1.0,
418
+ 'profiles_sample_rate' => 1.0,
419
+ ```
420
+
421
+ ```yaml
422
+ # Symfony — config/packages/sentry.yaml
423
+ sentry:
424
+ options:
425
+ traces_sample_rate: 1.0
426
+ profiles_sample_rate: 1.0
427
+ ```
428
+
429
+ `profiles_sample_rate` is a **ratio of already-sampled transactions**:
430
+
431
+ ```
432
+ Effective profiling rate = traces_sample_rate × profiles_sample_rate
433
+
434
+ Examples:
435
+ 0.5 × 0.5 = 25% of all requests profiled
436
+ 1.0 × 1.0 = 100% of all requests profiled
437
+ 0.1 × 1.0 = 10% of all requests profiled
438
+ ```
439
+
440
+ ## Framework-Specific Notes
441
+
442
+ ### Plain PHP
443
+
444
+ - Zero automatic instrumentation — create every transaction and span manually
445
+ - Call `\Sentry\flush()` before process exit in CLI scripts to ensure buffered data is
446
+ sent
447
+ - For queue workers and long-running processes, start a transaction per job with
448
+ `continueTrace()` to preserve distributed trace context
449
+
450
+ ### Laravel
451
+
452
+ - `Tracing\Middleware` is **auto-prepended** by `Tracing\ServiceProvider` — do not add
453
+ it manually
454
+ - Transaction start time is backdated to Laravel boot via `setBootedTimestamp()` —
455
+ captures full request duration including framework startup
456
+ - `missing_routes: false` (default) discards 404/unmatched route transactions; set to
457
+ `true` to trace them
458
+ - `config:cache` breaks if `traces_sampler` is a closure — use a class/callable string
459
+ or only set it at runtime
460
+ - Queue tracing: `tracing.queue_jobs: true` creates spans;
461
+ `tracing.queue_job_transactions: true` creates standalone transactions with
462
+ distributed trace propagation using payload keys `sentry_trace_parent_data` /
463
+ `sentry_baggage_data`
464
+ - On **Octane**: FastCGI terminable middleware dispatches spans after response — no
465
+ user-visible latency.
466
+ Without FastCGI, use a local Relay proxy
467
+
468
+ ### Symfony
469
+
470
+ - `TracingRequestListener` accepts both `sentry-trace` (Sentry) and `traceparent` (W3C)
471
+ headers for incoming distributed traces
472
+ - HTTP Client decorator injects three outgoing headers: `sentry-trace`, `baggage`,
473
+ `traceparent`
474
+ - Console commands are auto-traced by `TracingConsoleListener` — creates a root
475
+ transaction if none is active, otherwise creates a child span
476
+ - Messenger integration is **error-capture only** (via `MessengerListener`) — no tracing
477
+ spans for queue messages
478
+ - FastCGI: spans are sent after response via `kernel.terminate`. Without FastCGI, use a
479
+ local Relay proxy
480
+
481
+ ## Span Ops Reference
482
+
483
+ | `op` | What it tracks |
484
+ | ---------------------------------------------------- | ------------------------------------ |
485
+ | `http.server` | Incoming HTTP request |
486
+ | `http.client` | Outgoing HTTP request |
487
+ | `http.route` | Controller/action dispatch (Laravel) |
488
+ | `db.sql.query` | SQL query execution |
489
+ | `db.sql.prepare` | SQL prepare (Symfony) |
490
+ | `db.sql.exec` | SQL exec (Symfony) |
491
+ | `db.sql.execute` | Statement execute (Symfony) |
492
+ | `db.sql.transaction.begin` / `.commit` / `.rollback` | DB transaction lifecycle (Symfony) |
493
+ | `db.transaction` | DB transaction (Laravel) |
494
+ | `view.render` | Template rendering (Blade / Twig) |
495
+ | `cache.get` | Cache read |
496
+ | `cache.put` | Cache write |
497
+ | `cache.remove` | Cache delete |
498
+ | `cache.flush` | Cache clear |
499
+ | `queue.publish` | Job enqueue |
500
+ | `queue.process` | Job processing |
501
+ | `console.command` | CLI command (Symfony) |
502
+
503
+ ## Troubleshooting
504
+
505
+ | Issue | Solution |
506
+ | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
507
+ | No transactions appearing | Verify `traces_sample_rate > 0` or `traces_sampler` returns non-zero; confirm SDK is initialized before request handling |
508
+ | Spans not linked to transaction | Ensure spans are created inside an active transaction; call `setSpan($transaction)` on the hub after `startTransaction()` |
509
+ | Distributed traces broken | Verify `sentry-trace` and `baggage` headers pass through proxies, load balancers, and CORS middleware |
510
+ | `traces_sampler` ignored in Laravel | Closures break `config:cache`; use an invokable class or only configure at runtime (not in config file) |
511
+ | `traces_sampler` not working in Symfony | Must be a service factory — closures can’t be serialized. Register as a service and reference by ID |
512
+ | Missing route transactions in Laravel | Set `tracing.missing_routes: true` in sentry config (default is `false` — 404s are discarded) |
513
+ | No profiling data | Confirm Excimer extension is installed (`php -m \| grep excimer`); Windows not supported; `traces_sample_rate` must be set |
514
+ | High response latency from tracing | Use FastCGI (terminable middleware) or deploy a local Relay proxy to make uploads async |
515
+ | Queue jobs not traced | Set `tracing.queue_jobs: true`; for standalone transactions also set `tracing.queue_job_transactions: true` |
516
+ | HTML meta tags show empty values | Call `getTraceparent()` / `getBaggage()` inside an active transaction; outside a transaction these return empty strings |