@danieljvdm/dev-kit 1.0.1 → 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.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +6 -29
- package/skill-sources.lock.json +23 -109
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Component details
|
|
2
|
+
|
|
3
|
+
## Feedback and continuity
|
|
4
|
+
|
|
5
|
+
Give a button clear pressed and pending states. Keep the control available
|
|
6
|
+
according to the action's actual lifecycle; decorative motion should not add
|
|
7
|
+
latency. Scale can provide press feedback when it does not compromise text or
|
|
8
|
+
hit targets.
|
|
9
|
+
|
|
10
|
+
For related tooltips in a toolbar, consider a shared delay policy: delay the
|
|
11
|
+
first discovery, then let nearby tooltips appear promptly as the user explores.
|
|
12
|
+
Keep hoverable surfaces reachable across small gaps and usable by keyboard.
|
|
13
|
+
|
|
14
|
+
For toasts and other transient content, consider pausing dismissal while the
|
|
15
|
+
user interacts or the page is hidden. Repeated additions and dismissals must
|
|
16
|
+
preserve readable order and stable pointer targets.
|
|
17
|
+
|
|
18
|
+
## Defaults and API design
|
|
19
|
+
|
|
20
|
+
Choose useful defaults before adding options. Expose variations that represent
|
|
21
|
+
real product needs. Keep the public API simple without concealing ownership or
|
|
22
|
+
introducing global state that conflicts with the application architecture.
|
|
23
|
+
|
|
24
|
+
Use realistic content to judge density, alignment, wrapping, and truncation.
|
|
25
|
+
Compare populated, empty, pending, error, and overflow states when they are
|
|
26
|
+
relevant to the component. Retain focus and selection through updates.
|
|
27
|
+
|
|
28
|
+
## Evaluate
|
|
29
|
+
|
|
30
|
+
Exercise the flow at normal speed before slow inspection. Compare against the
|
|
31
|
+
rest of the product. If two presentations are both viable and the user wants
|
|
32
|
+
exploration, use a small set of working prototypes with explicit tradeoffs.
|
|
33
|
+
Do not turn a small polish task into a mandatory redesign or multi-day review.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Explore UI alternatives
|
|
2
|
+
|
|
3
|
+
Build distinct responses to the requested brief. Keep the exploration separate
|
|
4
|
+
from production integration until the user chooses or delegates the choice.
|
|
5
|
+
|
|
6
|
+
## Alternatives
|
|
7
|
+
|
|
8
|
+
Identify the component's job, surrounding UI, existing tokens, and important
|
|
9
|
+
interaction states. Choose a small set of directions that differ in layout,
|
|
10
|
+
density, hierarchy, or interaction. Three is a useful starting point, not a quota.
|
|
11
|
+
Name the distinction so the user knows what each alternative explores.
|
|
12
|
+
|
|
13
|
+
Build in an isolated route or page when there is a project, or in a standalone
|
|
14
|
+
artifact when appropriate. Make relevant interactions work with realistic
|
|
15
|
+
content. Use the same surrounding context to make comparison meaningful.
|
|
16
|
+
|
|
17
|
+
Run the alternatives and check the interactions and console. Capture useful
|
|
18
|
+
evidence when tools permit. Present the picker with a short explanation of
|
|
19
|
+
each direction's tradeoff. Leave the selection to the user unless they have
|
|
20
|
+
already asked you to choose.
|
|
21
|
+
|
|
22
|
+
## Comparison control
|
|
23
|
+
|
|
24
|
+
Use a compact, accessible selector that stays clear of the work. Render one
|
|
25
|
+
alternative at full size unless side-by-side comparison better serves the
|
|
26
|
+
request. Make the active selection explicit to sighted and assistive users.
|
|
27
|
+
|
|
28
|
+
Provide buttons and optionally number or arrow shortcuts. Ignore shortcuts
|
|
29
|
+
while the user edits an input or holds a modifier. Keep the selector usable by
|
|
30
|
+
keyboard, show focus, and give each alternative a descriptive name.
|
|
31
|
+
|
|
32
|
+
Preserve selection across reload when useful, for example with a validated URL
|
|
33
|
+
parameter. Invalid or missing selections fall back to a valid alternative.
|
|
34
|
+
Switch promptly; avoid adding a transition that obscures the differences.
|
|
35
|
+
|
|
36
|
+
Add replay only for motion that needs it. Define whether changing alternatives
|
|
37
|
+
resets their interaction state; use a keyed remount when reset is intended.
|
|
38
|
+
Adapt appearance to the project and ensure the picker never covers the behavior
|
|
39
|
+
being evaluated.
|
|
40
|
+
|
|
41
|
+
## Promote a selection
|
|
42
|
+
|
|
43
|
+
Integrate the selected design using the repository's existing component,
|
|
44
|
+
state, and style ownership. Preserve the chosen behavior and verify it in the
|
|
45
|
+
real destination. The prototype may have simplified data or lifecycle handling
|
|
46
|
+
that needs the application's established implementation.
|
|
47
|
+
|
|
48
|
+
Remove temporary alternatives and the picker after integration unless the user
|
|
49
|
+
wants them retained. For another exploration round, keep useful infrastructure
|
|
50
|
+
and vary the chosen direction according to the new brief.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Choose a UI library
|
|
2
|
+
|
|
3
|
+
Match the requested capability to the choices below, then inspect dependencies
|
|
4
|
+
and architecture. If the user names a library, answer about that library; explain
|
|
5
|
+
a material mismatch before suggesting a replacement. Keep an adequate installed
|
|
6
|
+
dependency. Install or migrate only within the requested scope.
|
|
7
|
+
|
|
8
|
+
Effect Atom is our default for shared React state, queries, and mutations.
|
|
9
|
+
Preserve an existing application's state architecture unless migration is part
|
|
10
|
+
of the task. For theme handling, read [themes](themes.md).
|
|
11
|
+
|
|
12
|
+
## Curated choices
|
|
13
|
+
|
|
14
|
+
These are Dev Kit defaults, subject to the user's chosen tools and repository
|
|
15
|
+
conventions. Check current official documentation before adopting a dependency.
|
|
16
|
+
|
|
17
|
+
| Capability | Default |
|
|
18
|
+
| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
|
|
19
|
+
| Accessible unstyled dialogs, menus, selects, and popovers | [Base UI](https://base-ui.com) |
|
|
20
|
+
| Command menus | [cmdk](https://cmdk.paco.me) |
|
|
21
|
+
| Toasts | [Sonner](https://sonner.emilkowal.ski) |
|
|
22
|
+
| One-time password inputs | [input-otp](https://input-otp.rodz.dev) |
|
|
23
|
+
| Interactive control panels | [Leva](https://github.com/pmndrs/leva); consider [dialkit](https://joshpuckett.me/dialkit) for motion tuning |
|
|
24
|
+
| Springs, layout animation, exit animation, and gestures | [Motion](https://motion.dev); use CSS for simple transitions |
|
|
25
|
+
| Animated numbers | [NumberFlow](https://number-flow.barvian.me) |
|
|
26
|
+
| Animated text | [torph](https://torph.lochie.me/) |
|
|
27
|
+
| 3D globes | [Cobe](https://cobe.vercel.app) |
|
|
28
|
+
| Generated SVG or social images | [Satori](https://github.com/vercel/satori) |
|
|
29
|
+
| Syntax highlighting | [Shiki](https://shiki.style) |
|
|
30
|
+
| Streaming charts | [Liveline](https://github.com/benjitaylor/liveline) |
|
|
31
|
+
| General dashboard charts | [Recharts](https://recharts.org) |
|
|
32
|
+
| Drag and drop | [dnd kit](https://dndkit.com) |
|
|
33
|
+
| Long-list virtualization | [Virtuoso](https://virtuoso.dev) |
|
|
34
|
+
| Shared React state, server queries, mutations, and workflows | Effect Atom; consult the installed Effect documentation and `effect-development` skill when available |
|
|
35
|
+
| Conditional class names | [clsx](https://github.com/lukeed/clsx) |
|
|
36
|
+
| Typed component style variants | [CVA](https://cva.style) |
|
|
37
|
+
|
|
38
|
+
For a capability outside this list, say that the recommendation is outside the
|
|
39
|
+
curated defaults and establish its fit from current primary sources.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Theme ownership
|
|
2
|
+
|
|
3
|
+
Inspect the existing theme preference, CSS selector, document bootstrap, and
|
|
4
|
+
server rendering path before choosing a library. Reuse that implementation
|
|
5
|
+
when it already supports the requested behavior.
|
|
6
|
+
|
|
7
|
+
For our Effect Atom and TanStack applications, keep the shared preference in
|
|
8
|
+
the existing atom or settings service. Let one document integration apply the
|
|
9
|
+
resolved theme. Avoid introducing another state provider for the same value.
|
|
10
|
+
|
|
11
|
+
Distinguish the saved preference, such as light, dark, or system, from the
|
|
12
|
+
resolved color scheme. A system preference should continue following system
|
|
13
|
+
changes. Use the project's existing persistence and SSR conventions to make
|
|
14
|
+
first paint agree with hydration. A browser-only preference needs an appropriate
|
|
15
|
+
pre-paint bootstrap; a server-readable preference must still handle first visits
|
|
16
|
+
and system settings. Verify reload, navigation, and preference changes.
|
|
17
|
+
|
|
18
|
+
`next-themes` has React and React DOM peer dependencies, not a Next.js runtime
|
|
19
|
+
dependency. It can be considered when a project wants its behavior, but is not
|
|
20
|
+
our blanket default. Check how its provider and injected script fit the actual
|
|
21
|
+
SSR setup rather than copying Next.js layout instructions into TanStack Start.
|
|
22
|
+
See the [package metadata](https://github.com/pacocoursey/next-themes/blob/main/next-themes/package.json)
|
|
23
|
+
and [official usage guide](https://github.com/pacocoursey/next-themes).
|
package/skills/dev-kit/SKILL.md
CHANGED
|
@@ -1,48 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dev-kit
|
|
3
|
-
description: Set up
|
|
3
|
+
description: Set up TypeScript repositories, change project tooling, migrate legacy Dev Kit management, or maintain repository skills.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Dev Kit
|
|
7
7
|
|
|
8
|
-
Build
|
|
9
|
-
ownership. Use the transient CLI for catalog and migration mechanics;
|
|
10
|
-
|
|
8
|
+
Build from the user's requirements and leave outputs under normal repository
|
|
9
|
+
ownership. Use the transient CLI for catalog and migration mechanics; inspect
|
|
10
|
+
the existing repository before changing its architecture or configuration.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Read only the references for the requested work:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
- Scaffold or reorganize a repository: [repository setup](references/repository-setup.md).
|
|
15
|
+
- Adopt the Dev Kit default or Vite+ foundation:
|
|
16
|
+
[TypeScript defaults](references/default-typescript-repository.md).
|
|
17
|
+
- Add or configure a Cloudflare Worker API:
|
|
18
|
+
[Worker API](references/cloudflare-worker-api.md).
|
|
19
|
+
- Remove legacy Dev Kit manifests or managed configuration:
|
|
20
|
+
[legacy ejection](references/legacy-eject.md).
|
|
21
|
+
- Discover, add, update, fork, or detach skills: [skills](references/skills.md).
|
|
15
22
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- Read [cloudflare-worker-api.md](references/cloudflare-worker-api.md) when adding
|
|
21
|
-
a Cloudflare Worker, Worker API, bindings, Durable Objects, or Wrangler.
|
|
22
|
-
- Read [legacy-eject.md](references/legacy-eject.md) when `dev-kit.jsonc`,
|
|
23
|
-
`dev-kit.lock.json`, `.dev-kit/state.json`, managed markers, or Dev Kit config
|
|
24
|
-
imports exist.
|
|
25
|
-
- Read [skills.md](references/skills.md) when discovering, adding, refreshing,
|
|
26
|
-
merging, or detaching repository skills.
|
|
23
|
+
Preserve repository conventions and existing authorization. Explain material
|
|
24
|
+
architecture or dependency choices when they affect the outcome; infer routine
|
|
25
|
+
placement and naming from the project. Follow installed API documentation and
|
|
26
|
+
the repository's command authority, including its Effect and testing policies.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
1. Establish the Git root and read repository instructions. Inventory package
|
|
31
|
-
manifests, workspaces, tool configuration, source boundaries, CI, and current
|
|
32
|
-
validation commands. Finish with every existing convention that constrains
|
|
33
|
-
the change accounted for.
|
|
34
|
-
2. Translate the request into outcomes and invariants. Resolve consequential
|
|
35
|
-
choices with the user; infer naming and file placement from repository
|
|
36
|
-
evidence. Finish with a coherent target architecture rather than a list of
|
|
37
|
-
templates.
|
|
38
|
-
3. Present the material file, dependency, and command changes before broad or
|
|
39
|
-
destructive work. Treat existing files as repository-owned and reconcile
|
|
40
|
-
them in place.
|
|
41
|
-
4. Implement against current installed APIs and local documentation. When the
|
|
42
|
-
repository uses Effect, read `node_modules/effect/AGENTS.md` completely before
|
|
43
|
-
writing Effect code and follow its relevant references.
|
|
44
|
-
5. Run the repository's command authority and exercise the changed behavior.
|
|
45
|
-
Finish when validation passes and the generated setup works from the same
|
|
46
|
-
entry points future contributors will use.
|
|
47
|
-
6. Hand off the architecture and any deliberate choices. The finished repository
|
|
48
|
-
has no Dev Kit dependency, manifest, lock, lifecycle hook, or managed output.
|
|
28
|
+
Verify the changed entrypoints with the normal project commands. Generated
|
|
29
|
+
repositories keep no Dev Kit runtime dependency or lifecycle manager.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cloudflare Worker API
|
|
2
2
|
|
|
3
|
-
Use the `
|
|
3
|
+
Use the `effect-development` and `cloudflare-workers` skills when
|
|
4
4
|
they are available. Read current installed or primary Cloudflare documentation
|
|
5
5
|
before choosing Wrangler configuration, compatibility dates, bindings, or local
|
|
6
6
|
development commands.
|
|
@@ -12,8 +12,8 @@ prefer the narrowest matching skills:
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
bunx @danieljvdm/dev-kit@latest skills search cloudflare
|
|
15
|
-
bunx @danieljvdm/dev-kit@latest skills info workers
|
|
16
|
-
bunx @danieljvdm/dev-kit@latest skills add workers
|
|
15
|
+
bunx @danieljvdm/dev-kit@latest skills info cloudflare-workers
|
|
16
|
+
bunx @danieljvdm/dev-kit@latest skills add cloudflare-workers
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Treat source families as broad selections: add one only when every member applies.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: effect-development
|
|
3
|
+
description: Set up Effect, implement Atom React state, HTTP APIs or CLIs, and review Effect architecture.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Effect development
|
|
7
|
+
|
|
8
|
+
Read the repository's `node_modules/effect/AGENTS.md` completely before writing
|
|
9
|
+
or evaluating Effect code, then follow its relevant links. Installed declarations
|
|
10
|
+
and repository policy own version-sensitive APIs and verification commands.
|
|
11
|
+
|
|
12
|
+
Read only the guide for the requested boundary:
|
|
13
|
+
|
|
14
|
+
- React queries, mutations, shared state, workflows, or SSR: [Effect Atom](references/atom/index.md).
|
|
15
|
+
- HTTP contracts, handlers, middleware, or server runtimes: [HTTP APIs](references/api/index.md).
|
|
16
|
+
- Scripts, CI automation, or command-line applications: [CLIs](references/cli/index.md).
|
|
17
|
+
- A requested architecture review or service-boundary refactor: [architecture](references/architecture/index.md).
|
|
18
|
+
- Adding Effect dependencies or its agent guidance: [setup](references/setup.md).
|
|
19
|
+
|
|
20
|
+
For Effect React applications, Effect Atom owns shared state and server data;
|
|
21
|
+
React renders and dispatches. View-local state can stay in React. Keep business
|
|
22
|
+
logic in Effect workflows and declare cross-query invalidation as mutation
|
|
23
|
+
reactivity keys. Read the Atom guide for runtime and registry ownership.
|
|
24
|
+
|
|
25
|
+
Preserve the requested scope. A component edit does not require a server rewrite
|
|
26
|
+
or architecture audit. Follow repository policy for committed tests; changes to
|
|
27
|
+
an atom, endpoint, or script do not by themselves justify a new test.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Effect HTTP APIs
|
|
2
|
+
|
|
3
|
+
Use the shared `HttpApi` value as the source for request and response schemas,
|
|
4
|
+
server handlers, generated documentation, and clients. Keep transport contracts
|
|
5
|
+
isomorphic and runtime behavior in handlers, services, and Layers.
|
|
6
|
+
|
|
7
|
+
Read repository Effect instructions and inspect installed declarations for
|
|
8
|
+
version-sensitive APIs. Existing imports and the lockfile establish the version
|
|
9
|
+
being changed; a name from another release is not a reason to upgrade it.
|
|
10
|
+
|
|
11
|
+
## Read for the changed boundary
|
|
12
|
+
|
|
13
|
+
- Endpoint schemas, errors, groups, or API composition:
|
|
14
|
+
[shared contracts](shared-contracts.md).
|
|
15
|
+
- Handler implementation, middleware, or request-scoped services:
|
|
16
|
+
[server and middleware](server-and-middleware.md).
|
|
17
|
+
- Schema codec selection: [typed codecs](schema-codecs.md).
|
|
18
|
+
- Server entrypoint or generated API documentation:
|
|
19
|
+
[runtime assembly](runtime-assembly.md).
|
|
20
|
+
- Workers bindings, Durable Objects, streams, or raw transport routes:
|
|
21
|
+
[Cloudflare Workers](cloudflare-workers.md).
|
|
22
|
+
- Cross-boundary verification: [verification](verification.md).
|
|
23
|
+
|
|
24
|
+
For React client queries, mutations, and invalidation, read the
|
|
25
|
+
[Effect Atom guide](../atom/index.md).
|
|
26
|
+
Change consumers when the requested contract or server change affects them.
|
|
27
|
+
|
|
28
|
+
Let schemas own wire encoding and validation, handlers adapt transport to the
|
|
29
|
+
application, and services own orchestration and persistence. Assemble required
|
|
30
|
+
Layers at the runtime boundary. Verify changed request and failure behavior with
|
|
31
|
+
the repository's commands and testing policy; adding an endpoint does not imply
|
|
32
|
+
a new committed test.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Typed Schema codecs
|
|
2
|
+
|
|
3
|
+
Match the codec to the type known at the call site. Use the typed decode variant
|
|
4
|
+
when the input is the schema's Encoded type, and the typed encode variant when
|
|
5
|
+
it is the schema's Type. Consult installed declarations for the Effect, Sync,
|
|
6
|
+
Exit, Option, Result, or Promise form needed by that boundary.
|
|
7
|
+
|
|
8
|
+
Reserve unknown codecs for values whose declared type is actually unknown,
|
|
9
|
+
such as untyped JSON, external messages, or persistence results. A static
|
|
10
|
+
mismatch with a Schema.Class is not a reason to bypass type checking; construct
|
|
11
|
+
or map the correct schema value first.
|
|
12
|
+
|
|
13
|
+
Follow the repository's policy for lint suppressions at justified untyped
|
|
14
|
+
boundaries. Keep the explanation with the boundary rather than duplicating it
|
|
15
|
+
across contract consumers.
|
package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md
RENAMED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Verification
|
|
2
2
|
|
|
3
|
+
Follow repository testing policy. Use existing checks and direct requests when
|
|
4
|
+
sufficient; add committed tests only for an authorized or evidenced regression.
|
|
5
|
+
Choose from the scenarios below based on the changed boundary, rather than
|
|
6
|
+
creating a test suite for every endpoint edit.
|
|
7
|
+
|
|
3
8
|
Test the contract spine at its seams. Use the repository's established Effect
|
|
4
9
|
test integration and command authority.
|
|
5
10
|
|
|
@@ -48,8 +53,8 @@ decoding are skipped.
|
|
|
48
53
|
`HttpApiMiddleware.layerClient` and assert that it transforms the request.
|
|
49
54
|
- Assert params, query, headers, payload, and expected errors at least once for
|
|
50
55
|
every changed request shape.
|
|
51
|
-
- For Atom clients,
|
|
52
|
-
|
|
56
|
+
- For Atom clients, select the relevant scenarios from the
|
|
57
|
+
[Effect Atom testing reference](../atom/effect-atom-testing.md); use a deterministic HTTP
|
|
53
58
|
layer so request encoding, invalidation, and lifecycle remain observable.
|
|
54
59
|
|
|
55
60
|
## Completion matrix
|
|
@@ -60,6 +65,6 @@ Account for every changed endpoint across these columns:
|
|
|
60
65
|
| ------------------------------------------------ | -------------------------------- | -------------------------------- | ---------------------------------------------- | -------------------------------- |
|
|
61
66
|
| Params, query, headers, payload, success, errors | Scope, provided services, errors | Identifier, invariants, workflow | Typed call shape, identity, cache/invalidation | Round-trip and boundary behavior |
|
|
62
67
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
repository's
|
|
68
|
+
Use the matrix when it helps trace a cross-boundary change. Completion means
|
|
69
|
+
the changed behavior is verified, untyped boundaries are justified, and the
|
|
70
|
+
repository's required checks pass. Empty test cells do not mandate new tests.
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: effect-architecture-audit
|
|
3
|
-
description: Audit an Effect TypeScript codebase's services, Layers, dependency ownership, hidden requirements, test substitutes, Schema boundaries, assertions, unknown values, and typed error channels. Use for architecture reviews, service refactors, dependency-injection audits, and type-boundary investigations; do not use as a general Effect API reference.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Audit Effect Architecture
|
|
7
2
|
|
|
8
3
|
Read the target repository's `node_modules/effect/AGENTS.md` completely before
|
|
9
4
|
evaluating Effect code. Follow its version-matched references for library APIs;
|
|
10
5
|
use this skill only for the application-architecture judgments it does not own.
|
|
11
6
|
|
|
12
|
-
Read [service-and-boundary-audit.md](
|
|
7
|
+
Read [service-and-boundary-audit.md](service-and-boundary-audit.md),
|
|
13
8
|
then:
|
|
14
9
|
|
|
15
10
|
1. Establish the repository's local architecture and testing rules.
|
|
@@ -11,10 +11,10 @@ and expected errors owned by the contract.
|
|
|
11
11
|
|
|
12
12
|
## Inventory the client boundary
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
`AtomHttpApi.Service`,
|
|
16
|
-
|
|
17
|
-
versions before copying signatures.
|
|
14
|
+
Trace the affected queries and mutations through their `RegistryProvider`,
|
|
15
|
+
runtime, `AtomHttpApi.Service`, and reactivity keys. Expand the inspection only
|
|
16
|
+
when ownership or invalidation crosses another boundary. Confirm installed
|
|
17
|
+
`effect` and `@effect/atom-react` versions before copying signatures.
|
|
18
18
|
|
|
19
19
|
## Build one Atom API service
|
|
20
20
|
|
|
@@ -127,8 +127,10 @@ Choose invalidation breadth from the server write:
|
|
|
127
127
|
- invalidate every affected namespace when a write crosses aggregates.
|
|
128
128
|
|
|
129
129
|
Combine invalidation with manual refresh only when two requests are intended.
|
|
130
|
-
Keep
|
|
131
|
-
|
|
130
|
+
Keep mutation-dependent sequencing and optimistic state in the owning workflow
|
|
131
|
+
atom. React renders and dispatches; view-local input and presentation state can
|
|
132
|
+
stay in React. See [workflows](effect-atom-workflows.md) when the action needs
|
|
133
|
+
optimistic updates, navigation, or other follow-up behavior.
|
|
132
134
|
|
|
133
135
|
## Use a direct client outside React
|
|
134
136
|
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# Deterministic Effect Atom testing
|
|
2
2
|
|
|
3
|
+
Use this reference only when a test is requested or warranted by repository
|
|
4
|
+
policy. Select the cases that reproduce the relevant failure; this is not a
|
|
5
|
+
required suite for every changed atom. Existing tests and app verification may
|
|
6
|
+
already cover the behavior.
|
|
7
|
+
|
|
3
8
|
Test cache policy below React first with `AtomRegistry.make()`. Add a React
|
|
4
|
-
integration test
|
|
5
|
-
boundaries, hydration, or Strict Mode ownership.
|
|
9
|
+
integration test only when the failure involves provider placement, hook
|
|
10
|
+
behavior, browser-only SSR boundaries, hydration, or Strict Mode ownership.
|
|
6
11
|
|
|
7
12
|
Use fake timers, a request counter, controllable Effects, and explicit mounts:
|
|
8
13
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Effect Atom state
|
|
2
|
+
|
|
3
|
+
Effect Atom owns shared client state and server data in an Effect application.
|
|
4
|
+
React renders results and dispatches actions. Keep workflows, optimistic updates,
|
|
5
|
+
and cross-query invalidation in Effect; keep view-local state in React.
|
|
6
|
+
|
|
7
|
+
Read the repository's Effect instructions and inspect installed declarations for
|
|
8
|
+
the APIs being changed. Preserve existing runtime and registry ownership.
|
|
9
|
+
|
|
10
|
+
## Read for the changed boundary
|
|
11
|
+
|
|
12
|
+
- API clients, queries, or mutations: [client state](effect-atom-client.md).
|
|
13
|
+
- Multi-step actions, optimistic updates, or Promise dispatch:
|
|
14
|
+
[workflows](effect-atom-workflows.md).
|
|
15
|
+
- Registry scope, atom identity, retention, freshness, polling, or cancellation:
|
|
16
|
+
[lifecycle](effect-atom-lifecycle.md).
|
|
17
|
+
- TanStack Start loaders, SSR, hydration, or server functions:
|
|
18
|
+
[TanStack Start](tanstack-start.md).
|
|
19
|
+
- A regression test allowed by repository policy or explicitly requested by the
|
|
20
|
+
user: [testing](effect-atom-testing.md). Read only the relevant cases.
|
|
21
|
+
|
|
22
|
+
## Ownership constraints
|
|
23
|
+
|
|
24
|
+
- Derive clients from the shared HTTP contract. Change contracts and server
|
|
25
|
+
handlers with the [HTTP API guide](../api/index.md) when that work is in scope.
|
|
26
|
+
- Declare cross-query invalidation as mutation reactivity keys. Queries and
|
|
27
|
+
mutations that must invalidate each other need the same Reactivity instance.
|
|
28
|
+
- Compose multi-step actions in workflow atoms. Return Promise-mode dispatch
|
|
29
|
+
directly to a component with a Promise-shaped contract; put success, failure,
|
|
30
|
+
and sequencing logic in the Effect workflow.
|
|
31
|
+
- Keep optimistic state with the workflow that writes it, keyed by entity where
|
|
32
|
+
needed. Preserve ordinary controlled inputs and view-local toggles in React.
|
|
33
|
+
- Reuse the application's state layer instead of introducing another query or
|
|
34
|
+
shared-state library for a single component.
|
|
35
|
+
|
|
36
|
+
## Verify
|
|
37
|
+
|
|
38
|
+
Follow the repository's command authority and testing policy. Exercise the
|
|
39
|
+
changed user flow and the relevant invalidation or lifecycle behavior. Reuse
|
|
40
|
+
existing checks; changed atoms do not by themselves justify committed tests.
|
|
@@ -34,14 +34,18 @@ Use `BunRuntime` and `BunServices` together when Bun owns the executable. Let
|
|
|
34
34
|
If expected errors need custom presentation, catch and render them immediately
|
|
35
35
|
before `runMain` while preserving CLI control-flow errors such as help output.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Choose a verification boundary
|
|
38
|
+
|
|
39
|
+
Follow repository testing policy before adding a committed test. Use existing
|
|
40
|
+
checks or direct command execution when sufficient. The options below are
|
|
41
|
+
alternatives selected by the changed behavior, not a required three-part suite.
|
|
38
42
|
|
|
39
43
|
1. Test application services directly with deterministic Layers. Cover domain
|
|
40
44
|
success, expected failure, interruption, and plan/apply separation without
|
|
41
45
|
involving argument parsing.
|
|
42
46
|
2. Test thin command handlers through their services when CLI input mapping or
|
|
43
47
|
output-mode selection contains meaningful logic.
|
|
44
|
-
3. Spawn the real executable for boundary behavior.
|
|
48
|
+
3. Spawn the real executable for boundary behavior. Select relevant cases:
|
|
45
49
|
- root and changed-command `--help`;
|
|
46
50
|
- representative valid arguments and flags;
|
|
47
51
|
- missing or invalid input and a non-zero exit;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Effect scripts and CLIs
|
|
2
|
+
|
|
3
|
+
Use Effect for new executable TypeScript scripts in an Effect repository.
|
|
4
|
+
For an existing script, follow repository policy and the requested scope.
|
|
5
|
+
A small maintenance edit does not require converting the whole script;
|
|
6
|
+
undertake that migration when requested or necessary for the change.
|
|
7
|
+
|
|
8
|
+
When changing Effect behavior, read `node_modules/effect/AGENTS.md` and the
|
|
9
|
+
relevant CLI or process reference. A help-text-only edit in an existing script
|
|
10
|
+
needs its declared entrypoint and help output; it does not require API research.
|
|
11
|
+
Use installed signatures and sibling Effect programs when implementing behavior.
|
|
12
|
+
|
|
13
|
+
## Choose the reference
|
|
14
|
+
|
|
15
|
+
- Designing public arguments, flags, or subcommands:
|
|
16
|
+
[command design](command-design.md).
|
|
17
|
+
- Files, environment, terminal, subprocesses, or runtime differences:
|
|
18
|
+
[processes and platform](processes-and-platform.md).
|
|
19
|
+
- Executable startup, import safety, or verification:
|
|
20
|
+
[entrypoints and testing](entrypoints-and-testing.md).
|
|
21
|
+
|
|
22
|
+
## Boundaries
|
|
23
|
+
|
|
24
|
+
Use Effect platform services for capabilities. When a required capability is
|
|
25
|
+
missing, isolate the runtime call in a typed Effect adapter. Keep fixed scripts
|
|
26
|
+
simple; they need no command tree when they expose no public command syntax.
|
|
27
|
+
|
|
28
|
+
Arguments and flags own CLI input; schemas own structured input and output.
|
|
29
|
+
Handlers adapt input and presentation, services own application behavior, and
|
|
30
|
+
Layers supply capabilities. One executable edge owns the runtime and signals.
|
|
31
|
+
Keep expected failures typed and preserve a nonzero exit for failure.
|
|
32
|
+
|
|
33
|
+
Keep stdout stable for machine-readable output and send diagnostics elsewhere.
|
|
34
|
+
Automation must be able to supply required inputs without a terminal. For
|
|
35
|
+
consequential mutations, expose a preview or dry-run when useful and honor
|
|
36
|
+
existing authorization. Prompt only on intentionally interactive paths.
|
|
37
|
+
|
|
38
|
+
Verify through the declared entrypoint with the repository's command authority.
|
|
39
|
+
Test only the changed behavior and follow repository policy for committed tests.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Set up Effect
|
|
2
|
+
|
|
3
|
+
Inspect the package boundaries and existing Effect version first. Use the
|
|
4
|
+
repository's package manager and version policy to add Effect where it is
|
|
5
|
+
needed. In a monorepo, make its source and instructions available at the root
|
|
6
|
+
when that is how agents inspect installed APIs. Avoid an unrelated upgrade or
|
|
7
|
+
copying a package-manager command from a different project.
|
|
8
|
+
|
|
9
|
+
Ensure repository agent instructions direct Effect work to the installed
|
|
10
|
+
`node_modules/effect/AGENTS.md`, require reading it completely before writing
|
|
11
|
+
Effect code, and follow its relevant links. For APIs not covered there, consult
|
|
12
|
+
`node_modules/effect/src`.
|
|
13
|
+
|
|
14
|
+
Preserve existing agent guidance and keep one pointer to the installed source
|
|
15
|
+
instead of copying library instructions into the repository.
|