constella 0.1.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/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +53 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +36 -0
- package/.next/react-loadable-manifest.json +14 -0
- package/.next/required-server-files.js +343 -0
- package/.next/required-server-files.json +343 -0
- package/.next/routes-manifest.json +362 -0
- package/.next/server/app/(app)/activity/page.js +2 -0
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
- package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/code/page.js +2 -0
- package/.next/server/app/(app)/code/page.js.nft.json +1 -0
- package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/config/page.js +2 -0
- package/.next/server/app/(app)/config/page.js.nft.json +1 -0
- package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/costs/page.js +2 -0
- package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/cron/page.js +2 -0
- package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
- package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/dashboard/page.js +2 -0
- package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
- package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/[id]/page.js +2 -0
- package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/page.js +2 -0
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/github/page.js +2 -0
- package/.next/server/app/(app)/github/page.js.nft.json +1 -0
- package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/goals/page.js +2 -0
- package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
- package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/inbox/page.js +2 -0
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/knowledge/page.js +3 -0
- package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
- package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/models/page.js +2 -0
- package/.next/server/app/(app)/models/page.js.nft.json +1 -0
- package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/notifications/page.js +2 -0
- package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
- package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/org/page.js +2 -0
- package/.next/server/app/(app)/org/page.js.nft.json +1 -0
- package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/organizations/page.js +2 -0
- package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
- package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/page.js +3 -0
- package/.next/server/app/(app)/page.js.nft.json +1 -0
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/planner/page.js +2 -0
- package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
- package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/plugins/page.js +2 -0
- package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
- package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pm/page.js +2 -0
- package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
- package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
- package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/profile/page.js +2 -0
- package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
- package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pulse/page.js +2 -0
- package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/[id]/page.js +3 -0
- package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/page.js +5 -0
- package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/routines/page.js +2 -0
- package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
- package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/search/page.js +2 -0
- package/.next/server/app/(app)/search/page.js.nft.json +1 -0
- package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/security/page.js +2 -0
- package/.next/server/app/(app)/security/page.js.nft.json +1 -0
- package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/skills/page.js +18 -0
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/tasks/page.js +2 -0
- package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
- package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/test-dev/page.js +2 -0
- package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
- package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/update/page.js +2 -0
- package/.next/server/app/(app)/update/page.js.nft.json +1 -0
- package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/login/page.js +2 -0
- package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/onboarding/page.js +18 -0
- package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error/page.js +32 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +16 -0
- package/.next/server/app/_global-error.rsc +15 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page.js +2 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cron/tick/route.js +52 -0
- package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
- package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/dev-login/route.js +1 -0
- package/.next/server/app/api/dev-login/route.js.nft.json +1 -0
- package/.next/server/app/api/dev-login/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
- package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/progress/route.js +1 -0
- package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
- package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/stream/route.js +4 -0
- package/.next/server/app/api/stream/route.js.nft.json +1 -0
- package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sync/file/route.js +2 -0
- package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
- package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/telegram/poll/route.js +15 -0
- package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
- package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/upload/route.js +1 -0
- package/.next/server/app/api/upload/route.js.nft.json +1 -0
- package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
- package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +53 -0
- package/.next/server/chunks/1003.js +1 -0
- package/.next/server/chunks/127.js +26 -0
- package/.next/server/chunks/1388.js +1 -0
- package/.next/server/chunks/1408.js +21 -0
- package/.next/server/chunks/1572.js +1 -0
- package/.next/server/chunks/1591.js +24 -0
- package/.next/server/chunks/1619.js +188 -0
- package/.next/server/chunks/162.js +1 -0
- package/.next/server/chunks/1881.js +1 -0
- package/.next/server/chunks/1968.js +1 -0
- package/.next/server/chunks/2297.js +348 -0
- package/.next/server/chunks/2341.js +1 -0
- package/.next/server/chunks/2517.js +1 -0
- package/.next/server/chunks/2549.js +1 -0
- package/.next/server/chunks/259.js +14 -0
- package/.next/server/chunks/2599.js +1 -0
- package/.next/server/chunks/260.js +1 -0
- package/.next/server/chunks/2867.js +147 -0
- package/.next/server/chunks/3018.js +1 -0
- package/.next/server/chunks/3050.js +18 -0
- package/.next/server/chunks/3085.js +12 -0
- package/.next/server/chunks/3131.js +1 -0
- package/.next/server/chunks/3242.js +1 -0
- package/.next/server/chunks/3266.js +15 -0
- package/.next/server/chunks/3524.js +1 -0
- package/.next/server/chunks/3527.js +479 -0
- package/.next/server/chunks/3533.js +869 -0
- package/.next/server/chunks/3550.js +1 -0
- package/.next/server/chunks/3609.js +2 -0
- package/.next/server/chunks/3667.js +462 -0
- package/.next/server/chunks/3760.js +4 -0
- package/.next/server/chunks/4679.js +1 -0
- package/.next/server/chunks/4804.js +1 -0
- package/.next/server/chunks/4832.js +2 -0
- package/.next/server/chunks/4853.js +1 -0
- package/.next/server/chunks/4979.js +67 -0
- package/.next/server/chunks/5060.js +1 -0
- package/.next/server/chunks/5278.js +1 -0
- package/.next/server/chunks/5614.js +1 -0
- package/.next/server/chunks/5818.js +1 -0
- package/.next/server/chunks/6479.js +1 -0
- package/.next/server/chunks/6658.js +1 -0
- package/.next/server/chunks/6706.js +1 -0
- package/.next/server/chunks/6719.js +1 -0
- package/.next/server/chunks/678.js +1 -0
- package/.next/server/chunks/683.js +1 -0
- package/.next/server/chunks/6862.js +1 -0
- package/.next/server/chunks/6882.js +1 -0
- package/.next/server/chunks/7037.js +1 -0
- package/.next/server/chunks/7107.js +741 -0
- package/.next/server/chunks/73.js +17 -0
- package/.next/server/chunks/7327.js +1 -0
- package/.next/server/chunks/7514.js +1 -0
- package/.next/server/chunks/7622.js +1 -0
- package/.next/server/chunks/7778.js +1 -0
- package/.next/server/chunks/7912.js +1 -0
- package/.next/server/chunks/7949.js +1 -0
- package/.next/server/chunks/7971.js +1 -0
- package/.next/server/chunks/7989.js +1 -0
- package/.next/server/chunks/842.js +22 -0
- package/.next/server/chunks/8762.js +15 -0
- package/.next/server/chunks/8823.js +77 -0
- package/.next/server/chunks/9146.js +4 -0
- package/.next/server/chunks/9676.js +1 -0
- package/.next/server/chunks/9783.js +22 -0
- package/.next/server/chunks/9969.js +3 -0
- package/.next/server/functions-config-manifest.json +18 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/middleware.js +18 -0
- package/.next/server/middleware.js.nft.json +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +3 -0
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/chunks/1858-339516f78a4b00da.js +1 -0
- package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
- package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
- package/.next/static/chunks/3219-ebb3c23be38c838d.js +1 -0
- package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
- package/.next/static/chunks/5479-0cceab68cd0ca9c7.js +1 -0
- package/.next/static/chunks/5701-665b927b06158b76.js +1 -0
- package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
- package/.next/static/chunks/6575-5c9139720bb0f5bf.js +4 -0
- package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
- package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
- package/.next/static/chunks/8264-1ca011989ee2b231.js +1 -0
- package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
- package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
- package/.next/static/chunks/app/(app)/activity/page-3973534281ecea81.js +1 -0
- package/.next/static/chunks/app/(app)/agents/[handle]/page-83662a175c098282.js +1 -0
- package/.next/static/chunks/app/(app)/code/page-33979545192cd137.js +1 -0
- package/.next/static/chunks/app/(app)/config/page-9933aed1ca8a85c1.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-131c4dc580efcc19.js +1 -0
- package/.next/static/chunks/app/(app)/cron/page-53ea1aff998a87ca.js +1 -0
- package/.next/static/chunks/app/(app)/dashboard/page-deed83aaa9d0d447.js +1 -0
- package/.next/static/chunks/app/(app)/docs/[id]/page-38c993d73c0eab4f.js +1 -0
- package/.next/static/chunks/app/(app)/docs/page-bf463b55d0554e86.js +1 -0
- package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-62678b4e82dfecb6.js +1 -0
- package/.next/static/chunks/app/(app)/goals/page-4adb426fe1c96106.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-e347dc55ab467310.js +1 -0
- package/.next/static/chunks/app/(app)/knowledge/page-65393a045b4349be.js +1 -0
- package/.next/static/chunks/app/(app)/layout-7f65675705b011d8.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-e01f1dd7e49a2951.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-56548ac87aef00da.js +1 -0
- package/.next/static/chunks/app/(app)/org/page-699e6a6dc0db7d81.js +1 -0
- package/.next/static/chunks/app/(app)/organizations/page-36051a380a7e8eb7.js +1 -0
- package/.next/static/chunks/app/(app)/page-7d1011a566f81520.js +1 -0
- package/.next/static/chunks/app/(app)/planner/page-dab7ced94083373a.js +1 -0
- package/.next/static/chunks/app/(app)/plugins/page-5b5a1f53389be42e.js +1 -0
- package/.next/static/chunks/app/(app)/pm/page-0de5c08c0b227bb0.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-e426038552df8d41.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-608dfcaf8aae0a69.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-309ccaca91de1faa.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/page-53ea1aff998a87ca.js +1 -0
- package/.next/static/chunks/app/(app)/reports/page-68cdc6dcfa472d86.js +1 -0
- package/.next/static/chunks/app/(app)/routines/page-bcc55550b197a9fa.js +1 -0
- package/.next/static/chunks/app/(app)/search/page-5c5f67558d0dbf0d.js +1 -0
- package/.next/static/chunks/app/(app)/security/page-a7d41e36aa366b45.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-c5b21e89593b8336.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/page-08ae079e3e54d2ce.js +1 -0
- package/.next/static/chunks/app/(app)/test-dev/page-633f82dfd9c3ce23.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-4be019054351bfac.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-6e85d3377062acae.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/page-ebb10c175abf3b85.js +1 -0
- package/.next/static/chunks/app/_global-error/page-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
- package/.next/static/chunks/app/api/auth/[...all]/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/cron/tick/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/dev-login/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/locks/acquire/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/models/progress/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/options/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/verify/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/options/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/verify/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/stream/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/sync/file/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/telegram/poll/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/upload/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/v1/[[...path]]/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
- package/.next/static/chunks/app/global-error-b8050d4d886f448c.js +1 -0
- package/.next/static/chunks/app/layout-ab9deed1e7e2e9df.js +1 -0
- package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
- package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
- package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
- package/.next/static/css/0a9b5805594444e3.css +1 -0
- package/.next/static/yztMvBwyrWWkSqP6jfXoa/_buildManifest.js +1 -0
- package/.next/static/yztMvBwyrWWkSqP6jfXoa/_ssgManifest.js +1 -0
- package/.next/trace-build +1 -0
- package/.next/types/app/(app)/activity/page.ts +87 -0
- package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
- package/.next/types/app/(app)/code/page.ts +87 -0
- package/.next/types/app/(app)/config/page.ts +87 -0
- package/.next/types/app/(app)/costs/page.ts +87 -0
- package/.next/types/app/(app)/cron/page.ts +87 -0
- package/.next/types/app/(app)/dashboard/page.ts +87 -0
- package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
- package/.next/types/app/(app)/docs/page.ts +87 -0
- package/.next/types/app/(app)/github/page.ts +87 -0
- package/.next/types/app/(app)/goals/page.ts +87 -0
- package/.next/types/app/(app)/inbox/page.ts +87 -0
- package/.next/types/app/(app)/knowledge/page.ts +87 -0
- package/.next/types/app/(app)/models/page.ts +87 -0
- package/.next/types/app/(app)/notifications/page.ts +87 -0
- package/.next/types/app/(app)/org/page.ts +87 -0
- package/.next/types/app/(app)/organizations/page.ts +87 -0
- package/.next/types/app/(app)/page.ts +87 -0
- package/.next/types/app/(app)/planner/page.ts +87 -0
- package/.next/types/app/(app)/plugins/page.ts +87 -0
- package/.next/types/app/(app)/pm/page.ts +87 -0
- package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
- package/.next/types/app/(app)/profile/page.ts +87 -0
- package/.next/types/app/(app)/pulse/page.ts +87 -0
- package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
- package/.next/types/app/(app)/reports/page.ts +87 -0
- package/.next/types/app/(app)/routines/page.ts +87 -0
- package/.next/types/app/(app)/search/page.ts +87 -0
- package/.next/types/app/(app)/security/page.ts +87 -0
- package/.next/types/app/(app)/skills/page.ts +87 -0
- package/.next/types/app/(app)/tasks/page.ts +87 -0
- package/.next/types/app/(app)/test-dev/page.ts +87 -0
- package/.next/types/app/(app)/update/page.ts +87 -0
- package/.next/types/app/(auth)/login/page.ts +87 -0
- package/.next/types/app/(auth)/onboarding/page.ts +87 -0
- package/.next/types/app/api/auth/[...all]/route.ts +351 -0
- package/.next/types/app/api/cron/tick/route.ts +351 -0
- package/.next/types/app/api/dev-login/route.ts +351 -0
- package/.next/types/app/api/locks/acquire/route.ts +351 -0
- package/.next/types/app/api/models/progress/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
- package/.next/types/app/api/passkey/register/options/route.ts +351 -0
- package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
- package/.next/types/app/api/stream/route.ts +351 -0
- package/.next/types/app/api/sync/file/route.ts +351 -0
- package/.next/types/app/api/telegram/poll/route.ts +351 -0
- package/.next/types/app/api/upload/route.ts +351 -0
- package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/link.d.ts +210 -0
- package/.next/types/package.json +1 -0
- package/.next/types/routes.d.ts +120 -0
- package/.next/types/validator.ts +511 -0
- package/CHANGELOG.md +312 -0
- package/LICENSE +21 -0
- package/README.md +382 -0
- package/README.pt-BR.md +391 -0
- package/bin/constella.mjs +329 -0
- package/bin/guard-hook.mjs +44 -0
- package/bin/lock-hook.mjs +49 -0
- package/bin/worker.mjs +142 -0
- package/docs/assets/arch-orbit.svg +56 -0
- package/docs/assets/blackhole.svg +37 -0
- package/docs/assets/divider-orbit.svg +23 -0
- package/docs/assets/hero-constella.svg +72 -0
- package/docs/en/AGENTS.md +279 -0
- package/docs/en/AI_ARCHITECTURE.md +373 -0
- package/docs/en/ARCHITECTURE.md +334 -0
- package/docs/en/AUTH_MODE.md +247 -0
- package/docs/en/CHAT_COMMANDS.md +305 -0
- package/docs/en/CONFIGURATION.md +340 -0
- package/docs/en/DEPLOY.md +331 -0
- package/docs/en/DM.md +297 -0
- package/docs/en/FAQ.md +258 -0
- package/docs/en/GITHUB.md +341 -0
- package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/en/INBOX.md +340 -0
- package/docs/en/INSTALLATION.md +329 -0
- package/docs/en/KB_AGENT.md +305 -0
- package/docs/en/KB_RAG.md +356 -0
- package/docs/en/MCP.md +313 -0
- package/docs/en/MEMORY_RAG.md +289 -0
- package/docs/en/MODELS.md +341 -0
- package/docs/en/ONBOARDING.md +327 -0
- package/docs/en/PLUGINS.md +290 -0
- package/docs/en/PORTABLE_MODE.md +387 -0
- package/docs/en/PO_AGENT.md +379 -0
- package/docs/en/PREPARE_DEPLOY.md +308 -0
- package/docs/en/PROJECT_STACKS.md +258 -0
- package/docs/en/PUBLIC_API.md +315 -0
- package/docs/en/PUBLISHING.md +343 -0
- package/docs/en/README.md +95 -0
- package/docs/en/SECURITY.md +280 -0
- package/docs/en/SKILLS.md +349 -0
- package/docs/en/START_MODE.md +340 -0
- package/docs/en/SYNCED_BLOCKS.md +320 -0
- package/docs/en/TEAM_ROOM.md +285 -0
- package/docs/en/TELEGRAM.md +294 -0
- package/docs/en/TEST_DEV.md +321 -0
- package/docs/en/TROUBLESHOOTING.md +294 -0
- package/docs/en/UPDATE.md +301 -0
- package/docs/en/VPS_MODE.md +334 -0
- package/docs/en/WORKFLOW.md +321 -0
- package/docs/pt/AGENTS.md +279 -0
- package/docs/pt/AI_ARCHITECTURE.md +373 -0
- package/docs/pt/ARCHITECTURE.md +334 -0
- package/docs/pt/AUTH_MODE.md +247 -0
- package/docs/pt/CHAT_COMMANDS.md +307 -0
- package/docs/pt/CONFIGURATION.md +340 -0
- package/docs/pt/DEPLOY.md +331 -0
- package/docs/pt/DM.md +297 -0
- package/docs/pt/FAQ.md +258 -0
- package/docs/pt/GITHUB.md +341 -0
- package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/pt/INBOX.md +340 -0
- package/docs/pt/INSTALLATION.md +329 -0
- package/docs/pt/KB_AGENT.md +305 -0
- package/docs/pt/KB_RAG.md +356 -0
- package/docs/pt/MCP.md +313 -0
- package/docs/pt/MEMORY_RAG.md +289 -0
- package/docs/pt/MODELS.md +341 -0
- package/docs/pt/ONBOARDING.md +327 -0
- package/docs/pt/PLUGINS.md +290 -0
- package/docs/pt/PORTABLE_MODE.md +387 -0
- package/docs/pt/PO_AGENT.md +379 -0
- package/docs/pt/PREPARE_DEPLOY.md +308 -0
- package/docs/pt/PROJECT_STACKS.md +258 -0
- package/docs/pt/PUBLIC_API.md +315 -0
- package/docs/pt/PUBLISHING.md +343 -0
- package/docs/pt/README.md +95 -0
- package/docs/pt/SECURITY.md +280 -0
- package/docs/pt/SKILLS.md +349 -0
- package/docs/pt/START_MODE.md +340 -0
- package/docs/pt/SYNCED_BLOCKS.md +320 -0
- package/docs/pt/TEAM_ROOM.md +285 -0
- package/docs/pt/TELEGRAM.md +294 -0
- package/docs/pt/TEST_DEV.md +321 -0
- package/docs/pt/TROUBLESHOOTING.md +294 -0
- package/docs/pt/UPDATE.md +301 -0
- package/docs/pt/VPS_MODE.md +334 -0
- package/docs/pt/WORKFLOW.md +321 -0
- package/drizzle/0000_regular_nightshade.sql +644 -0
- package/drizzle/0001_mixed_zombie.sql +106 -0
- package/drizzle/meta/0000_snapshot.json +4650 -0
- package/drizzle/meta/0001_snapshot.json +5418 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.mjs +16 -0
- package/next.config.mjs +18 -0
- package/package.json +130 -0
- package/scripts/clean-repo.mjs +20 -0
- package/scripts/dev-all.mjs +46 -0
- package/scripts/i18n-parity.mjs +57 -0
- package/scripts/mcp-server.mjs +100 -0
- package/scripts/postbuild.mjs +11 -0
- package/scripts/publish-public.mjs +116 -0
- package/scripts/start-all.mjs +45 -0
- package/scripts/trim-next.mjs +23 -0
- package/scripts/vps-install.sh +39 -0
- package/skills/CONTRIBUTING.md +122 -0
- package/skills/COVERAGE.md +129 -0
- package/skills/INDEX.json +3443 -0
- package/skills/README.md +57 -0
- package/skills/design/animation-motion/SKILL.md +60 -0
- package/skills/design/color-and-typography/SKILL.md +60 -0
- package/skills/design/css-techniques/SKILL.md +58 -0
- package/skills/design/design-systems/SKILL.md +60 -0
- package/skills/design/gradients/SKILL.md +59 -0
- package/skills/design/graphic-design-basics/SKILL.md +55 -0
- package/skills/design/microinteractions/SKILL.md +58 -0
- package/skills/design/responsive-layout/SKILL.md +59 -0
- package/skills/design/ui-ux-principles/SKILL.md +58 -0
- package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
- package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
- package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
- package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
- package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
- package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
- package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
- package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
- package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
- package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
- package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
- package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
- package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
- package/skills/engineering/frontend/state-management/SKILL.md +69 -0
- package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
- package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
- package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
- package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
- package/skills/engineering/practices/clean-code/SKILL.md +61 -0
- package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
- package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
- package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
- package/skills/engineering/practices/refactoring/SKILL.md +58 -0
- package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
- package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
- package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
- package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
- package/skills/engineering/security/secrets-management/SKILL.md +58 -0
- package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
- package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
- package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
- package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
- package/skills/languages/c/SKILL.md +74 -0
- package/skills/languages/clojure/SKILL.md +73 -0
- package/skills/languages/cpp/SKILL.md +75 -0
- package/skills/languages/csharp/SKILL.md +75 -0
- package/skills/languages/dart/SKILL.md +82 -0
- package/skills/languages/elixir/SKILL.md +74 -0
- package/skills/languages/erlang/SKILL.md +76 -0
- package/skills/languages/go/SKILL.md +83 -0
- package/skills/languages/haskell/SKILL.md +70 -0
- package/skills/languages/java/SKILL.md +71 -0
- package/skills/languages/javascript/SKILL.md +62 -0
- package/skills/languages/kotlin/SKILL.md +68 -0
- package/skills/languages/lua/SKILL.md +79 -0
- package/skills/languages/objectivec/SKILL.md +83 -0
- package/skills/languages/php/SKILL.md +74 -0
- package/skills/languages/python/SKILL.md +68 -0
- package/skills/languages/r/SKILL.md +70 -0
- package/skills/languages/ruby/SKILL.md +67 -0
- package/skills/languages/rust/SKILL.md +72 -0
- package/skills/languages/scala/SKILL.md +73 -0
- package/skills/languages/swift/SKILL.md +73 -0
- package/skills/languages/typescript/SKILL.md +69 -0
- package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
- package/skills/meta/progressive-disclosure/SKILL.md +65 -0
- package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
- package/skills/process/adr-technical-decisions/SKILL.md +59 -0
- package/skills/process/app-planning/SKILL.md +63 -0
- package/skills/process/architecture-before-code/SKILL.md +52 -0
- package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
- package/skills/process/idea-to-product/SKILL.md +50 -0
- package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
- package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
- package/skills/process/problem-framing/SKILL.md +51 -0
- package/skills/process/product-discovery/SKILL.md +53 -0
- package/skills/process/readme-generation/SKILL.md +90 -0
- package/skills/process/requirements-to-specs/SKILL.md +53 -0
- package/skills/process/research-official-docs/SKILL.md +58 -0
- package/skills/process/review-code-perf-security/SKILL.md +65 -0
- package/skills/process/security-by-design/SKILL.md +68 -0
- package/skills/process/specs-to-issues/SKILL.md +53 -0
- package/skills/process/testing-before-done/SKILL.md +61 -0
- package/skills/process/validating-ux-navigation/SKILL.md +63 -0
- package/skills/references/ai-attachments-ui/SKILL.md +66 -0
- package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
- package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
- package/skills/references/component-patterns-gallery/SKILL.md +62 -0
- package/skills/references/gradient-resources/SKILL.md +66 -0
- package/skills/references/react-component-libraries/SKILL.md +61 -0
- package/skills/references/saas-landing-patterns/SKILL.md +67 -0
- package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
- package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
- package/skills/references/web-animation-codrops/SKILL.md +68 -0
- package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
- package/skills/stacks/aiml/keras/SKILL.md +77 -0
- package/skills/stacks/aiml/numpy/SKILL.md +69 -0
- package/skills/stacks/aiml/pandas/SKILL.md +72 -0
- package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
- package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
- package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
- package/skills/stacks/auth/auth0/SKILL.md +63 -0
- package/skills/stacks/auth/authjs/SKILL.md +69 -0
- package/skills/stacks/auth/clerk/SKILL.md +72 -0
- package/skills/stacks/auth/keycloak/SKILL.md +63 -0
- package/skills/stacks/auth/lucia/SKILL.md +56 -0
- package/skills/stacks/auth/passport/SKILL.md +70 -0
- package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
- package/skills/stacks/baas/amplify/SKILL.md +71 -0
- package/skills/stacks/baas/appwrite/SKILL.md +79 -0
- package/skills/stacks/baas/firebase/SKILL.md +73 -0
- package/skills/stacks/baas/heroku/SKILL.md +71 -0
- package/skills/stacks/backend/actix/SKILL.md +77 -0
- package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
- package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
- package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
- package/skills/stacks/backend/django/SKILL.md +62 -0
- package/skills/stacks/backend/express/SKILL.md +65 -0
- package/skills/stacks/backend/fastapi/SKILL.md +64 -0
- package/skills/stacks/backend/fastify/SKILL.md +64 -0
- package/skills/stacks/backend/fiber/SKILL.md +68 -0
- package/skills/stacks/backend/flask/SKILL.md +71 -0
- package/skills/stacks/backend/gin/SKILL.md +68 -0
- package/skills/stacks/backend/graphql/SKILL.md +70 -0
- package/skills/stacks/backend/hono/SKILL.md +64 -0
- package/skills/stacks/backend/koa/SKILL.md +63 -0
- package/skills/stacks/backend/laravel/SKILL.md +73 -0
- package/skills/stacks/backend/nestjs/SKILL.md +70 -0
- package/skills/stacks/backend/nginx/SKILL.md +77 -0
- package/skills/stacks/backend/phoenix/SKILL.md +68 -0
- package/skills/stacks/backend/rails/SKILL.md +67 -0
- package/skills/stacks/backend/spring/SKILL.md +70 -0
- package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
- package/skills/stacks/backend/symfony/SKILL.md +77 -0
- package/skills/stacks/container/containerd/SKILL.md +75 -0
- package/skills/stacks/container/docker/SKILL.md +90 -0
- package/skills/stacks/container/podman/SKILL.md +93 -0
- package/skills/stacks/database/cassandra/SKILL.md +74 -0
- package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
- package/skills/stacks/database/dynamodb/SKILL.md +62 -0
- package/skills/stacks/database/mariadb/SKILL.md +71 -0
- package/skills/stacks/database/mongodb/SKILL.md +71 -0
- package/skills/stacks/database/mysql/SKILL.md +72 -0
- package/skills/stacks/database/neon/SKILL.md +68 -0
- package/skills/stacks/database/planetscale/SKILL.md +70 -0
- package/skills/stacks/database/postgresql/SKILL.md +81 -0
- package/skills/stacks/database/redis/SKILL.md +78 -0
- package/skills/stacks/database/sqlite/SKILL.md +70 -0
- package/skills/stacks/database/supabase/SKILL.md +79 -0
- package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
- package/skills/stacks/dataviz/d3/SKILL.md +77 -0
- package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
- package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
- package/skills/stacks/frontend/alpine/SKILL.md +75 -0
- package/skills/stacks/frontend/angular/SKILL.md +75 -0
- package/skills/stacks/frontend/backbone/SKILL.md +82 -0
- package/skills/stacks/frontend/ember/SKILL.md +85 -0
- package/skills/stacks/frontend/htmx/SKILL.md +73 -0
- package/skills/stacks/frontend/lit/SKILL.md +76 -0
- package/skills/stacks/frontend/preact/SKILL.md +74 -0
- package/skills/stacks/frontend/qwik/SKILL.md +65 -0
- package/skills/stacks/frontend/react/SKILL.md +77 -0
- package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
- package/skills/stacks/frontend/svelte/SKILL.md +70 -0
- package/skills/stacks/frontend/vue/SKILL.md +69 -0
- package/skills/stacks/infra/ansible/SKILL.md +76 -0
- package/skills/stacks/infra/aws/SKILL.md +66 -0
- package/skills/stacks/infra/azure/SKILL.md +72 -0
- package/skills/stacks/infra/circleci/SKILL.md +78 -0
- package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
- package/skills/stacks/infra/fly-io/SKILL.md +63 -0
- package/skills/stacks/infra/gcp/SKILL.md +66 -0
- package/skills/stacks/infra/jenkins/SKILL.md +73 -0
- package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
- package/skills/stacks/infra/netlify/SKILL.md +60 -0
- package/skills/stacks/infra/railway/SKILL.md +63 -0
- package/skills/stacks/infra/tailscale/SKILL.md +65 -0
- package/skills/stacks/infra/terraform/SKILL.md +75 -0
- package/skills/stacks/infra/vagrant/SKILL.md +70 -0
- package/skills/stacks/infra/vercel/SKILL.md +60 -0
- package/skills/stacks/meta/astro/SKILL.md +64 -0
- package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
- package/skills/stacks/meta/eleventy/SKILL.md +69 -0
- package/skills/stacks/meta/gatsby/SKILL.md +63 -0
- package/skills/stacks/meta/hugo/SKILL.md +73 -0
- package/skills/stacks/meta/jekyll/SKILL.md +70 -0
- package/skills/stacks/meta/nextjs/SKILL.md +62 -0
- package/skills/stacks/meta/nuxt/SKILL.md +66 -0
- package/skills/stacks/meta/remix/SKILL.md +67 -0
- package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
- package/skills/stacks/meta/vite/SKILL.md +63 -0
- package/skills/stacks/mobile/android/SKILL.md +77 -0
- package/skills/stacks/mobile/flutter/SKILL.md +77 -0
- package/skills/stacks/mobile/ionic/SKILL.md +72 -0
- package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
- package/skills/stacks/mobile/react-native/SKILL.md +75 -0
- package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
- package/skills/stacks/orm/diesel/SKILL.md +72 -0
- package/skills/stacks/orm/django-orm/SKILL.md +58 -0
- package/skills/stacks/orm/drizzle/SKILL.md +67 -0
- package/skills/stacks/orm/gorm/SKILL.md +73 -0
- package/skills/stacks/orm/knex/SKILL.md +64 -0
- package/skills/stacks/orm/mongoose/SKILL.md +64 -0
- package/skills/stacks/orm/prisma/SKILL.md +64 -0
- package/skills/stacks/orm/sequelize/SKILL.md +65 -0
- package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
- package/skills/stacks/orm/typeorm/SKILL.md +70 -0
- package/skills/stacks/queue/bullmq/SKILL.md +69 -0
- package/skills/stacks/queue/celery/SKILL.md +68 -0
- package/skills/stacks/queue/kafka/SKILL.md +66 -0
- package/skills/stacks/queue/nats/SKILL.md +66 -0
- package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
- package/skills/stacks/queue/redis/SKILL.md +66 -0
- package/skills/stacks/runtime/beam/SKILL.md +72 -0
- package/skills/stacks/runtime/bun/SKILL.md +80 -0
- package/skills/stacks/runtime/deno/SKILL.md +74 -0
- package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
- package/skills/stacks/runtime/jvm/SKILL.md +66 -0
- package/skills/stacks/runtime/node/SKILL.md +70 -0
- package/skills/stacks/runtime/pypy/SKILL.md +69 -0
- package/skills/stacks/runtime/python3/SKILL.md +70 -0
- package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
- package/skills/stacks/styling/bulma/SKILL.md +80 -0
- package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
- package/skills/stacks/styling/css-modules/SKILL.md +54 -0
- package/skills/stacks/styling/mui/SKILL.md +60 -0
- package/skills/stacks/styling/sass/SKILL.md +63 -0
- package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
- package/skills/stacks/styling/styled-components/SKILL.md +62 -0
- package/skills/stacks/styling/tailwind/SKILL.md +59 -0
- package/skills/stacks/styling/unocss/SKILL.md +64 -0
- package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
- package/skills/stacks/styling/vuetify/SKILL.md +89 -0
- package/skills/stacks/testing/cypress/SKILL.md +68 -0
- package/skills/stacks/testing/jasmine/SKILL.md +67 -0
- package/skills/stacks/testing/jest/SKILL.md +67 -0
- package/skills/stacks/testing/mocha/SKILL.md +71 -0
- package/skills/stacks/testing/playwright/SKILL.md +68 -0
- package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
- package/skills/stacks/testing/selenium/SKILL.md +70 -0
- package/skills/stacks/testing/vitest/SKILL.md +68 -0
package/skills/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Constella skills — agent knowledge base
|
|
2
|
+
|
|
3
|
+
A curated, research-backed reference library for AI agents working on Constella. **182 skills**, each grounded in official documentation, repositories, and standards — every URL verified live (`verified: 2026-06-16`).
|
|
4
|
+
|
|
5
|
+
## What this is — and is not
|
|
6
|
+
- **Is:** knowledge agents *consult* before/while building — official docs, install commands, core concepts, best practices, pitfalls, and an executable process playbook.
|
|
7
|
+
- **Is not:** the runtime `.claude/skills/` directory (those are per-org executable procedures indexed by `src/server/sync.ts`). This library lives at the repo root, **outside** the org workspace jail, and is **not** auto-indexed into the app DB/UI.
|
|
8
|
+
|
|
9
|
+
## How an agent uses it
|
|
10
|
+
1. Identify the task **domain** (e.g. backend, security, CSS) and the project's declared **stack** (from `.claude/CLAUDE.md`).
|
|
11
|
+
2. Open the matching `SKILL.md`. Stack lookup is deterministic — `orm: Drizzle` → [`stacks/orm/drizzle/SKILL.md`](stacks/orm/drizzle/SKILL.md). Full map below and in [COVERAGE.md](COVERAGE.md).
|
|
12
|
+
3. Read `Further reading` / `reference.md` only if you need depth (progressive disclosure).
|
|
13
|
+
4. Trust the **Official sources**. If `verified:` is stale, re-check before relying on version-specific details.
|
|
14
|
+
5. For the `process/` skills, follow the numbered **Procedure** — they are executable playbooks, not background reading.
|
|
15
|
+
|
|
16
|
+
## Two formats (hybrid)
|
|
17
|
+
- **Knowledge `SKILL.md`** — YAML frontmatter (`name`, `description`, `domain`, `category`, `tags`, `official_sources`, `verified`) + sections Overview / Official sources / Install / Core concepts / Best practices / Common pitfalls / Examples / Further reading / Related. Used by `meta/`, `engineering/`, `design/`, `languages/`, `stacks/`, `references/`.
|
|
18
|
+
- **Runtime `# Skill —` procedure** — `**Trigger:**` + When to use / Procedure / Quality & validation / Failure handling. Matches the existing `.claude/skills/` convention so a process skill could be promoted into a workspace later. Used by `process/`.
|
|
19
|
+
|
|
20
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full templates and the non-negotiable trust rules (official sources only, never invent, cite & summarize never copy).
|
|
21
|
+
|
|
22
|
+
## Taxonomy
|
|
23
|
+
| Group | Count | What's inside |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| [`process/`](process/) | 15 | Build it right **before** coding: discovery, framing, idea→product, mocks & flows, architecture-first, requirements→specs, specs→issues, sprints, prioritization (MoSCoW/RICE), app planning, UX/nav validation, security-by-design, testing-before-done, ADRs, code/perf/security review |
|
|
26
|
+
| [`engineering/`](engineering/) | 32 | `security/` (OWASP Top 10, ASVS, appsec, auth/sessions, secrets, supply chain) · `architecture/` (system design, patterns, API design, data modeling, caching, queues, scalability) · `performance/` · `testing/` · `frontend/` · `backend/` · `practices/` (clean code, review, refactoring, git, optimization) |
|
|
27
|
+
| [`design/`](design/) | 9 | UI/UX principles, design systems, CSS techniques, graphic design, animation/motion, microinteractions, gradients, color & typography, responsive layout |
|
|
28
|
+
| [`languages/`](languages/) | 15 | Per-language techniques for every catalog language (TypeScript … Dart) |
|
|
29
|
+
| [`stacks/`](stacks/) | 98 | One skill per catalog option across `runtime/ frontend/ meta/ backend/ database/ orm/ styling/ container/ infra/ queue/ auth/` |
|
|
30
|
+
| [`references/`](references/) | 10 | External product/AI-UI references distilled: WebLLM, AI SDK Elements, attachments UI, AI tool UI, SaaS landing patterns, Codrops animation, component galleries, shadcn/Tailwind theming, React component libraries, gradients |
|
|
31
|
+
| [`meta/`](meta/) | 3 | How to author agent skills (frontmatter spec, progressive disclosure) |
|
|
32
|
+
|
|
33
|
+
Machine-readable manifest: [INDEX.json](INDEX.json) (one object per skill: name, path, domain, category, description, tags, official_sources, verified). Coverage report + full stack table: [COVERAGE.md](COVERAGE.md).
|
|
34
|
+
|
|
35
|
+
## Stack lookup (catalog option → skill)
|
|
36
|
+
Every selectable catalog option in [`src/data/stack-catalog.ts`](../src/data/stack-catalog.ts) resolves to a skill (**113/113**, "None" excluded). `Redis` is canonical at [`stacks/database/redis`](stacks/database/redis/SKILL.md) with a queue-focused cross-link at [`stacks/queue/redis`](stacks/queue/redis/SKILL.md).
|
|
37
|
+
|
|
38
|
+
- **language** → `languages/<slug>` (typescript, javascript, python, go, rust, java, kotlin, csharp, ruby, php, elixir, swift, cpp, scala, dart)
|
|
39
|
+
- **runtime** → `stacks/runtime/<slug>` (node, bun, deno, python3, pypy, jvm, dotnet, beam)
|
|
40
|
+
- **frontend** → `stacks/frontend/<slug>` (react, vue, svelte, angular, solidjs, preact, qwik, lit, htmx, alpine)
|
|
41
|
+
- **meta** → `stacks/meta/<slug>` (nextjs, nuxt, remix, sveltekit, astro, gatsby, vite)
|
|
42
|
+
- **backend** → `stacks/backend/<slug>` (nestjs, fastify, express, hono, koa, django, flask, fastapi, spring-boot, laravel, rails, gin, fiber, actix, phoenix, aspnet-core, adonisjs)
|
|
43
|
+
- **database** → `stacks/database/<slug>` (postgresql, mysql, mariadb, sqlite, mongodb, redis, cockroachdb, cassandra, dynamodb, supabase, planetscale, neon)
|
|
44
|
+
- **orm** → `stacks/orm/<slug>` (prisma, drizzle, typeorm, sequelize, sqlalchemy, django-orm, mongoose, knex, diesel, gorm)
|
|
45
|
+
- **styling** → `stacks/styling/<slug>` (tailwind, css-modules, styled-components, sass, vanilla-extract, unocss, shadcn-ui, mui, chakra-ui)
|
|
46
|
+
- **container** → `stacks/container/<slug>` (docker, podman, containerd)
|
|
47
|
+
- **infra** → `stacks/infra/<slug>` (tailscale, cloudflare, vercel, netlify, fly-io, railway, aws, gcp, kubernetes)
|
|
48
|
+
- **queue** → `stacks/queue/<slug>` (redis, bullmq, rabbitmq, kafka, nats, celery)
|
|
49
|
+
- **auth** → `stacks/auth/<slug>` (authjs, clerk, lucia, supabase-auth, keycloak, auth0, passport)
|
|
50
|
+
|
|
51
|
+
The full option-by-option table (with ✅ presence checks) is in [COVERAGE.md](COVERAGE.md).
|
|
52
|
+
|
|
53
|
+
## Relationship to runtime skills
|
|
54
|
+
To make a piece of this knowledge executable inside an org workspace, author a separate `# Skill — <name>` file under that workspace's `.claude/skills/` (the indexed, runtime format). This library is the source material; it is not wired into the scaffold.
|
|
55
|
+
|
|
56
|
+
## Maintenance
|
|
57
|
+
Sources drift. The `verified:` date on each knowledge skill enables a staleness sweep. Known volatile entries are flagged in-skill: **Lucia** (now a learning resource, not a maintained library), **PlanetScale/Neon** (evolving products), and the fast-moving AI-UI reference sites. Re-run the URL-integrity check and re-verify before relying on version-specific details past the verified date.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: animation-motion
|
|
3
|
+
description: Motion design principles and the Web Animations API for purposeful, performant UI animation; consult when adding transitions or animated feedback.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [animation, motion, web-animations-api, easing, transitions]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API
|
|
9
|
+
- https://m3.material.io/styles/motion/overview
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Animation & Motion
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Motion communicates change, hierarchy, and continuity when used purposefully; the Web Animations API (WAAPI) is the standard scriptable way to create and control animations in JavaScript. MDN documents the API; Material Design 3 motion guidance supplies the principles (easing, duration, transitions). Read this when adding animated feedback, page/element transitions, or coordinated motion.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- MDN — Web Animations API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API
|
|
20
|
+
- Material Design 3 — Motion overview: https://m3.material.io/styles/motion/overview
|
|
21
|
+
- Material Design 3 — Easing and duration: https://m3.material.io/styles/motion/easing-and-duration/tokens-specs
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Element.animate()** — shortcut that creates and plays an animation on an element and returns an `Animation` object (MDN WAAPI).
|
|
25
|
+
- **KeyframeEffect** — describes the animatable properties/values (keyframes) plus timing options (MDN WAAPI).
|
|
26
|
+
- **Animation** — object exposing playback controls (play, pause, reverse, finish) and a timeline (MDN WAAPI).
|
|
27
|
+
- **AnimationTimeline / DocumentTimeline** — the time source; `document.timeline` is the default (MDN WAAPI).
|
|
28
|
+
- **Element.getAnimations() / Document.getAnimations()** — enumerate animations affecting an element or document (MDN WAAPI).
|
|
29
|
+
- **Easing and duration** — motion tokens that define acceleration curves and timing for consistent, natural movement (M3 easing and duration).
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Use `Element.animate()` for imperative, controllable animations and `getAnimations()` to coordinate or cancel them (MDN WAAPI).
|
|
33
|
+
- Apply system easing/duration tokens so motion is consistent across the product rather than ad-hoc per component (M3 easing and duration).
|
|
34
|
+
- Animate compositor-friendly properties (transform, opacity) for smooth, performant motion.
|
|
35
|
+
- Make motion purposeful — reinforce a state change or spatial relationship, not decoration (M3 motion overview).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Long or non-interruptible animations that block the user → keep durations short and let `Animation` controls pause/reverse (MDN WAAPI; M3 duration).
|
|
39
|
+
- Inconsistent easing per component → centralize on shared easing/duration tokens (M3 easing and duration).
|
|
40
|
+
- Ignoring reduced-motion users → respect `prefers-reduced-motion` and scale back non-essential animation.
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```js
|
|
44
|
+
// WAAPI: fade + slide in, then control playback
|
|
45
|
+
const anim = card.animate(
|
|
46
|
+
[{ opacity: 0, transform: 'translateY(8px)' }, { opacity: 1, transform: 'none' }],
|
|
47
|
+
{ duration: 200, easing: 'cubic-bezier(0.2, 0, 0, 1)', fill: 'both' }
|
|
48
|
+
);
|
|
49
|
+
anim.onfinish = () => card.classList.add('is-ready');
|
|
50
|
+
// Respect user preference
|
|
51
|
+
if (matchMedia('(prefers-reduced-motion: reduce)').matches) anim.finish();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Further reading
|
|
55
|
+
- MDN WAAPI guides and interfaces: https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API
|
|
56
|
+
- M3 motion specs and tokens: https://m3.material.io/styles/motion/overview
|
|
57
|
+
|
|
58
|
+
## Related skills
|
|
59
|
+
- ../microinteractions — small animated feedback cues built on these APIs
|
|
60
|
+
- ../css-techniques — transitions and keyframes as a declarative alternative
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: color-and-typography
|
|
3
|
+
description: Color systems, type scale, and WCAG contrast ratios for legible, accessible UI; consult when defining palettes, text styles, or checking contrast.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [color, typography, contrast, wcag, accessibility, type-scale]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html
|
|
9
|
+
- https://m3.material.io/styles/color/system/overview
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Color & Typography
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Color and typography decisions determine whether an interface is legible and accessible. WCAG 2.2 defines the minimum contrast ratios text must meet; Material Design 3 defines a role-based color system and a tokenized type scale. Read this when building a palette, defining text styles, or validating that foreground/background pairs are readable.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- W3C WCAG 2.2 — Understanding Contrast (Minimum): https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html
|
|
20
|
+
- Material Design 3 — Color system overview: https://m3.material.io/styles/color/system/overview
|
|
21
|
+
- Material Design 3 — Type scale tokens: https://m3.material.io/styles/typography/type-scale-tokens
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Contrast ratio (AA)** — normal text needs at least 4.5:1; large-scale text needs at least 3:1 (WCAG 2.2 SC 1.4.3).
|
|
25
|
+
- **Large text definition** — at least 18pt, or 14pt bold, qualifies for the 3:1 threshold (WCAG 2.2 SC 1.4.3).
|
|
26
|
+
- **Color roles** — M3 assigns semantic roles (primary, on-primary, surface, etc.) rather than raw colors, so pairs are designed to be legible (M3 color system).
|
|
27
|
+
- **Color schemes** — light/dark schemes derived from a source color keep contrast and harmony consistent (M3 color system).
|
|
28
|
+
- **Type scale** — a tokenized set of named styles (display, headline, title, body, label) encoding size/weight/line-height (M3 type scale tokens).
|
|
29
|
+
- **Typographic hierarchy** — using the scale to signal importance and reading order.
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Verify every text/background pair meets at least 4.5:1 (normal) or 3:1 (large) for WCAG AA (WCAG 2.2 SC 1.4.3).
|
|
33
|
+
- Pair color roles deliberately (e.g., `on-primary` over `primary`) so contrast is built into the system, not guessed (M3 color roles).
|
|
34
|
+
- Define both light and dark schemes from the same source color to preserve contrast across modes (M3 color system).
|
|
35
|
+
- Use the type scale tokens for consistent hierarchy instead of arbitrary font sizes (M3 type scale tokens).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Choosing colors by aesthetics alone and failing AA contrast → measure the ratio and adjust lightness (WCAG 2.2 SC 1.4.3).
|
|
39
|
+
- Assuming large text needs 4.5:1 → it only needs 3:1 once it meets the large-text size threshold (WCAG 2.2 SC 1.4.3).
|
|
40
|
+
- Hardcoding colors per component instead of using semantic roles → use role tokens so theming and dark mode stay legible (M3 color roles).
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```css
|
|
44
|
+
/* Role-based tokens with a verified-contrast pairing */
|
|
45
|
+
:root {
|
|
46
|
+
--color-primary: #4a3aff; /* background */
|
|
47
|
+
--color-on-primary: #ffffff; /* text: meets >= 4.5:1 for normal text */
|
|
48
|
+
}
|
|
49
|
+
.cta { background: var(--color-primary); color: var(--color-on-primary); }
|
|
50
|
+
/* Type scale token example */
|
|
51
|
+
.headline-large { font-size: 2rem; line-height: 2.5rem; font-weight: 400; }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Further reading
|
|
55
|
+
- WCAG 2.2 contrast understanding doc: https://www.w3.org/WAI/WCAG22/Understanding/contrast-minimum.html
|
|
56
|
+
- M3 color & typography styles: https://m3.material.io/styles/color/system/overview
|
|
57
|
+
|
|
58
|
+
## Related skills
|
|
59
|
+
- ../design-systems — encoding color roles and type scale as tokens
|
|
60
|
+
- ../graphic-design-basics — applying contrast and hierarchy in layout
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: css-techniques
|
|
3
|
+
description: Modern CSS layout and styling — grid, flexbox, container queries, custom properties; consult when building responsive, maintainable styles.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [css, grid, flexbox, container-queries, custom-properties]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS
|
|
9
|
+
- https://web.dev/learn/css
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# CSS Techniques
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Modern CSS provides dedicated layout systems (Grid for two dimensions, Flexbox for one), element-aware responsiveness (container queries), and reusable values (custom properties), replacing older float and hack-based approaches. MDN is the canonical reference; web.dev's Learn CSS is the official structured course. Read this when laying out pages and components or modernizing legacy stylesheets.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- MDN CSS reference: https://developer.mozilla.org/en-US/docs/Web/CSS
|
|
20
|
+
- web.dev — Learn CSS: https://web.dev/learn/css
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Box model** — every element is a box of content, padding, border, and margin; `box-sizing` controls how width is computed (MDN/web.dev Box Model).
|
|
24
|
+
- **Flexbox** — one-dimensional layout distributing space along a single axis (row or column) (MDN Flexbox; web.dev Flexbox).
|
|
25
|
+
- **Grid** — two-dimensional layout using tracks, lines, and named areas for rows and columns simultaneously (MDN Grid; web.dev Grid).
|
|
26
|
+
- **Container queries** — style elements based on the size (and style) of their container rather than the viewport (MDN Container Queries; web.dev module 38).
|
|
27
|
+
- **Custom properties** — `--name` variables that cascade and can be read at runtime for theming (web.dev Custom Properties).
|
|
28
|
+
- **Cascade, specificity, inheritance** — the rules that decide which declaration wins and which values pass to children (web.dev Cascade/Specificity/Inheritance).
|
|
29
|
+
- **Logical properties** — writing-mode-aware properties (e.g. `margin-inline`) that adapt to text direction (web.dev Logical Properties).
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Choose Flexbox for one-axis distribution and Grid for two-axis layout instead of forcing one tool to do both (MDN layout modules).
|
|
33
|
+
- Use container queries so components adapt to where they are placed, not just the viewport width (MDN Container Queries).
|
|
34
|
+
- Drive theming and repeated values through custom properties to avoid magic numbers (web.dev Custom Properties).
|
|
35
|
+
- Prefer logical properties (`inline`/`block`) for internationalized, direction-agnostic layouts (web.dev Logical Properties).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Using absolute positioning or floats for layout → use Grid/Flexbox, which handle alignment and spacing natively (MDN layout).
|
|
39
|
+
- Fighting the cascade with `!important` → resolve via specificity and source order per the cascade rules (web.dev Cascade).
|
|
40
|
+
- Assuming viewport media queries suffice for reusable components → add container queries so a component reflows in any context (MDN Container Queries).
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```css
|
|
44
|
+
/* Responsive card grid: auto-fit tracks with a minimum width */
|
|
45
|
+
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: 1rem; }
|
|
46
|
+
|
|
47
|
+
/* Container query: stack below the container's own breakpoint */
|
|
48
|
+
.card-wrap { container-type: inline-size; }
|
|
49
|
+
@container (max-width: 24rem) { .card { flex-direction: column; } }
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Further reading
|
|
53
|
+
- MDN CSS layout guides: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout
|
|
54
|
+
- web.dev Learn CSS full module list: https://web.dev/learn/css
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../responsive-layout — fluid and intrinsic layout strategies built on these primitives
|
|
58
|
+
- ../gradients — modern background/image techniques in CSS
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-systems
|
|
3
|
+
description: Design tokens, reusable components, and governance for scalable UI; consult when building or maintaining a shared component library.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [design-systems, design-tokens, components, governance, material-design]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://m3.material.io/foundations/design-tokens
|
|
9
|
+
- https://www.designsystems.com/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Design Systems
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
A design system is a shared source of truth that pairs design tokens, reusable components, and usage guidelines so designers and engineers ship consistent UI at scale. Material Design 3 (Google's open-source system) defines the token model and component foundations; designsystems.com (Figma's publication) covers process, operations, and governance. Read this when starting, scaling, or governing a component library.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Material Design 3 — Design tokens: https://m3.material.io/foundations/design-tokens
|
|
20
|
+
- Material Design 3 — Foundations: https://m3.material.io/foundations
|
|
21
|
+
- DesignSystems.com (by Figma): https://www.designsystems.com/
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Design tokens** — named, tokenized values that are the building blocks of UI and are used identically in design, tooling, and code (M3 design tokens).
|
|
25
|
+
- **Reference tokens** — the full set of available raw tokenized values, e.g. `md.ref.palette.secondary200` (M3 glossary).
|
|
26
|
+
- **System tokens** — semantic roles/choices that make up the system: color, typography, elevation, shape (M3 glossary).
|
|
27
|
+
- **Component tokens** — design attributes scoped to a component, such as a button container's color (M3 glossary).
|
|
28
|
+
- **Components** — reusable building blocks (buttons, fields, cards) wired to system tokens so a token change propagates everywhere.
|
|
29
|
+
- **Foundations** — cross-cutting bases like accessibility, layout, and interaction patterns that underpin every component (M3 foundations).
|
|
30
|
+
- **Governance** — the operations and process layer (contribution, versioning, ownership) covered under Design Operations on designsystems.com.
|
|
31
|
+
|
|
32
|
+
## Best practices
|
|
33
|
+
- Layer tokens reference → system → component so raw values stay decoupled from semantic intent (M3 token tiers).
|
|
34
|
+
- Use one token set across design tools and code so a single change updates designs and production together (M3 design tokens).
|
|
35
|
+
- Bake accessibility into foundations (contrast, focus, hit targets) rather than retrofitting per component (M3 foundations).
|
|
36
|
+
- Establish governance — contribution model, ownership, and versioning — so the system evolves without fragmenting (designsystems.com Design Operations).
|
|
37
|
+
|
|
38
|
+
## Common pitfalls
|
|
39
|
+
- Hardcoding raw hex/spacing values in components → reference system tokens so themes and rebrands cascade (M3 token tiers).
|
|
40
|
+
- Treating the library as "done" with no governance → assign owners and a contribution/versioning process (designsystems.com).
|
|
41
|
+
- Building components before defining tokens and foundations → settle tokens and accessibility bases first, then compose components.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
```css
|
|
45
|
+
/* System tokens (semantic) reference raw palette tokens */
|
|
46
|
+
:root {
|
|
47
|
+
--md-sys-color-primary: var(--md-ref-palette-primary40);
|
|
48
|
+
--md-sys-color-on-primary: var(--md-ref-palette-primary100);
|
|
49
|
+
}
|
|
50
|
+
/* Component consumes only system tokens */
|
|
51
|
+
.button { background: var(--md-sys-color-primary); color: var(--md-sys-color-on-primary); }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Further reading
|
|
55
|
+
- M3 customization & theming: https://m3.material.io/foundations/customization
|
|
56
|
+
- designsystems.com articles on tokens, ops, and governance: https://www.designsystems.com/
|
|
57
|
+
|
|
58
|
+
## Related skills
|
|
59
|
+
- ../color-and-typography — color roles and type scale that tokens encode
|
|
60
|
+
- ../ui-ux-principles — consistency and standards realized via shared components
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gradients
|
|
3
|
+
description: Tasteful CSS gradients — linear, radial, conic, repeating, and layered meshes; consult when adding depth or color washes to backgrounds.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [css, gradients, backgrounds, color, mesh]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_images/Using_CSS_gradients
|
|
9
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS/gradient
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Gradients
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
CSS gradients are image-type values that transition smoothly between colors without raster assets, used for backgrounds, fills, and layered "mesh" effects. They are widely available (baseline since 2015). MDN documents the gradient data type and a practical usage guide. Read this when adding color washes, subtle depth, or decorative backgrounds in CSS.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- MDN — Using CSS gradients (guide): https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_images/Using_CSS_gradients
|
|
20
|
+
- MDN — `<gradient>` data type: https://developer.mozilla.org/en-US/docs/Web/CSS/gradient
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **linear-gradient()** — colors progress along a straight line at a given angle or direction (MDN gradient).
|
|
24
|
+
- **radial-gradient()** — colors radiate outward from a center origin (MDN gradient).
|
|
25
|
+
- **conic-gradient()** — colors transition around a center point, useful for pie charts and color wheels (MDN gradient).
|
|
26
|
+
- **Repeating variants** — `repeating-linear-gradient()`, `repeating-radial-gradient()`, `repeating-conic-gradient()` tile a gradient to fill the area (MDN gradient).
|
|
27
|
+
- **Color stops & hints** — positions control where colors land; hints adjust the midpoint of interpolation (MDN Using gradients).
|
|
28
|
+
- **Layering / meshes** — multiple gradients stacked in one `background` (comma-separated) create mesh-like blends (MDN Using gradients).
|
|
29
|
+
- **Premultiplied interpolation** — gradients interpolate in alpha-premultiplied space to avoid muddy gray transitions (MDN gradient).
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Stack several positioned radial gradients to approximate a soft "mesh" without images (MDN Using gradients — overlaying gradients).
|
|
33
|
+
- Place explicit color stops to control band placement and create hard lines when desired (MDN Using gradients).
|
|
34
|
+
- Use `background-blend-mode` to mix layered gradients for richer results (MDN Using gradients).
|
|
35
|
+
- When fading to transparent, beware default interpolation muddiness — premultiplied space mitigates it, but verify the midpoint (MDN gradient).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Fading a color to `transparent` and getting a gray haze → fade to the same hue with `0` alpha (e.g., `rgb(0 0 0 / 0)`) instead of the keyword (MDN gradient interpolation note).
|
|
39
|
+
- Overusing high-contrast gradients behind text → keep washes subtle and check contrast of overlaid content.
|
|
40
|
+
- Forgetting repeating gradients exist for patterns → use `repeating-*` instead of manually duplicating stops (MDN gradient).
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```css
|
|
44
|
+
/* Layered "mesh": multiple soft radial gradients stacked */
|
|
45
|
+
.hero {
|
|
46
|
+
background:
|
|
47
|
+
radial-gradient(40rem 40rem at 10% 20%, #6d5efc55, transparent 60%),
|
|
48
|
+
radial-gradient(30rem 30rem at 90% 30%, #00d4ff44, transparent 60%),
|
|
49
|
+
linear-gradient(160deg, #0b1020, #131a33);
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Further reading
|
|
54
|
+
- MDN Using CSS gradients (overlaying, hints, blending): https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_images/Using_CSS_gradients
|
|
55
|
+
- MDN `<gradient>` reference: https://developer.mozilla.org/en-US/docs/Web/CSS/gradient
|
|
56
|
+
|
|
57
|
+
## Related skills
|
|
58
|
+
- ../css-techniques — backgrounds and modern CSS context
|
|
59
|
+
- ../color-and-typography — choosing harmonious, accessible colors
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: graphic-design-basics
|
|
3
|
+
description: Visual hierarchy, grids, contrast, and spacing fundamentals for UI; consult when composing layouts and establishing visual order.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [visual-hierarchy, grids, contrast, spacing, layout]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://m3.material.io/foundations
|
|
9
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Graphic Design Basics
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Graphic design basics for interfaces are the visual mechanics that guide attention: hierarchy, grids/layout, contrast, and consistent spacing. Material Design 3 foundations codify layout, spacing, and accessible contrast as system-level guidance, while MDN documents the CSS properties that implement them. Read this when a layout feels flat, cluttered, or hard to scan.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Material Design 3 — Foundations: https://m3.material.io/foundations
|
|
20
|
+
- MDN CSS reference: https://developer.mozilla.org/en-US/docs/Web/CSS
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Visual hierarchy** — using size, weight, color, and position to signal what matters most and the order to read it (M3 foundations: layout/typography).
|
|
24
|
+
- **Grids and layout** — a consistent column/row structure that aligns content and creates rhythm (M3 foundations: layout).
|
|
25
|
+
- **Spacing** — predictable gaps between and within elements (margins, padding, gap) that group related items and separate unrelated ones (MDN spacing properties; M3 layout).
|
|
26
|
+
- **Contrast** — differences in value/color/scale that make foreground readable and draw the eye; tied to accessible color (M3 foundations: accessibility).
|
|
27
|
+
- **Alignment** — shared edges and baselines that make composition feel intentional, expressible via CSS box alignment (MDN alignment).
|
|
28
|
+
- **Typographic scale** — a stepped set of sizes/weights that encodes hierarchy in text (M3 type/foundations).
|
|
29
|
+
|
|
30
|
+
## Best practices
|
|
31
|
+
- Establish hierarchy first: decide the primary, secondary, and tertiary elements, then assign size/weight/color accordingly (M3 layout/typography).
|
|
32
|
+
- Use a consistent spacing system (multiples of a base unit) rather than ad-hoc pixel values to create rhythm (M3 layout; MDN spacing).
|
|
33
|
+
- Ground contrast choices in accessibility so hierarchy is legible to all users (M3 accessibility foundation).
|
|
34
|
+
- Align elements to a shared grid; alignment is a low-cost way to make a layout look composed (M3 layout).
|
|
35
|
+
|
|
36
|
+
## Common pitfalls
|
|
37
|
+
- Everything emphasized equally (all bold/large) → establish one clear focal point and demote the rest (M3 hierarchy).
|
|
38
|
+
- Random, inconsistent spacing → adopt a spacing scale and apply it systematically (M3 layout; MDN `gap`/`margin`).
|
|
39
|
+
- Low-contrast decorative text that fails legibility → verify against accessible contrast guidance (M3 accessibility; see color-and-typography skill).
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
```css
|
|
43
|
+
/* Spacing scale via custom properties + grid rhythm */
|
|
44
|
+
:root { --space-1: .25rem; --space-2: .5rem; --space-4: 1rem; --space-8: 2rem; }
|
|
45
|
+
.section { display: grid; gap: var(--space-8); }
|
|
46
|
+
.stack > * + * { margin-block-start: var(--space-4); } /* consistent vertical rhythm */
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Further reading
|
|
50
|
+
- M3 foundations (layout, accessibility): https://m3.material.io/foundations
|
|
51
|
+
- MDN box alignment & spacing: https://developer.mozilla.org/en-US/docs/Web/CSS
|
|
52
|
+
|
|
53
|
+
## Related skills
|
|
54
|
+
- ../color-and-typography — type scale and accessible contrast detail
|
|
55
|
+
- ../responsive-layout — translating grids into responsive layouts
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: microinteractions
|
|
3
|
+
description: Trigger-feedback pairs, state cues, and transitions that confirm actions; consult when designing button states, validation, and small feedback moments.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [microinteractions, feedback, transitions, state, ux]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.nngroup.com/articles/microinteractions/
|
|
9
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS/transition
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Microinteractions
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Microinteractions are small, single-purpose trigger-feedback pairs that confirm an action or communicate a state change through contextual UI changes. Nielsen Norman Group defines the concept; MDN documents CSS transitions, a primary way to implement smooth state feedback. Read this when designing button/hover/focus states, form validation, toggles, loading, or any small "did that work?" moment.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Nielsen Norman Group — Microinteractions: https://www.nngroup.com/articles/microinteractions/
|
|
20
|
+
- MDN — CSS transition: https://developer.mozilla.org/en-US/docs/Web/CSS/transition
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Microinteraction** — a trigger-feedback pair where feedback is a narrowly targeted, contextual (usually visual) response to the trigger (NN/g).
|
|
24
|
+
- **Trigger** — what starts it: a user action (click, gesture, voice) or a change in system state (NN/g).
|
|
25
|
+
- **Feedback** — the small, highly contextual UI change that responds to the trigger, often visual, sometimes auditory (NN/g).
|
|
26
|
+
- **State cues** — visible distinctions between default, hover, focus, active, disabled, loading, success, and error states.
|
|
27
|
+
- **Transitions** — `transition` smoothly interpolates between state property values over a duration, easing, and optional delay (MDN transition).
|
|
28
|
+
|
|
29
|
+
## Best practices
|
|
30
|
+
- Pair every meaningful trigger with immediate, proportionate feedback so the user knows it registered (NN/g).
|
|
31
|
+
- Keep microinteractions single-purpose and narrowly targeted rather than bundling multiple effects (NN/g).
|
|
32
|
+
- Use CSS transitions for smooth, declarative state changes and list only the properties you intend to animate (MDN transition).
|
|
33
|
+
- Cover the full state matrix (hover, focus-visible, active, disabled, loading, error/success) so feedback is complete and accessible.
|
|
34
|
+
|
|
35
|
+
## Common pitfalls
|
|
36
|
+
- Transitioning `all` → name specific properties to avoid janky, unintended animations (MDN transition).
|
|
37
|
+
- Silent triggers with no feedback (e.g., a submit that appears to do nothing) → add an immediate visual response (NN/g).
|
|
38
|
+
- Overloading one microinteraction with several effects → keep it focused on a single, contextual response (NN/g).
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
```css
|
|
42
|
+
/* State cues with a scoped transition */
|
|
43
|
+
.btn {
|
|
44
|
+
background: var(--bg);
|
|
45
|
+
transition: background-color 150ms ease, box-shadow 150ms ease;
|
|
46
|
+
}
|
|
47
|
+
.btn:hover { background: var(--bg-hover); }
|
|
48
|
+
.btn:focus-visible { box-shadow: 0 0 0 3px var(--focus-ring); }
|
|
49
|
+
.btn[aria-busy="true"] { opacity: .6; cursor: progress; } /* loading cue */
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Further reading
|
|
53
|
+
- NN/g microinteractions article: https://www.nngroup.com/articles/microinteractions/
|
|
54
|
+
- MDN transition reference: https://developer.mozilla.org/en-US/docs/Web/CSS/transition
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../animation-motion — richer scripted motion via the Web Animations API
|
|
58
|
+
- ../ui-ux-principles — "visibility of system status" that feedback fulfills
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: responsive-layout
|
|
3
|
+
description: Fluid, breakpoint, and intrinsic layout strategies for any screen; consult when making pages and components adapt across viewports and containers.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [responsive, layout, css-grid, media-queries, container-queries, intrinsic]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://web.dev/learn/design/
|
|
9
|
+
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Responsive Layout
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Responsive layout makes content adapt gracefully across screen sizes using a mix of fluid units, breakpoints (media queries), and intrinsic techniques where the layout itself flexes without explicit breakpoints. web.dev's Learn Responsive Design is the official course; MDN's Grid module is the canonical reference for the two-dimensional engine that powers intrinsic layouts. Read this when building pages or components that must work everywhere.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- web.dev — Learn Responsive Design: https://web.dev/learn/design/
|
|
20
|
+
- MDN — CSS Grid Layout: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Media queries** — adapt designs to screen/device characteristics at chosen breakpoints (web.dev — Media queries).
|
|
24
|
+
- **Macro vs. micro layouts** — page-level structure vs. flexible components that can be placed anywhere (web.dev — Macro/Micro layouts).
|
|
25
|
+
- **Intrinsic layout** — let content and the grid decide sizing (e.g., `auto-fit` + `minmax`) so fewer hard breakpoints are needed (MDN Grid; web.dev layout).
|
|
26
|
+
- **Grid tracks, lines, areas** — the structural primitives for two-dimensional responsive layouts (MDN Grid).
|
|
27
|
+
- **`fr`, `minmax()`, `auto-fill`/`auto-fit`** — flexible track sizing that distributes space and wraps automatically (MDN Grid).
|
|
28
|
+
- **Container queries** — components respond to their container's size, complementing viewport media queries (web.dev — Micro layouts / container queries).
|
|
29
|
+
- **Theming & media features** — adapt to preferences like dark mode and reduced motion (web.dev — Theming/Media features).
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Build components as micro layouts that flex anywhere, rather than assuming a fixed page position (web.dev — Micro layouts).
|
|
33
|
+
- Prefer intrinsic sizing (`repeat(auto-fit, minmax(...))`) to reduce the number of manual breakpoints (MDN Grid).
|
|
34
|
+
- Use media queries for macro page structure and container queries for component-level adaptation (web.dev).
|
|
35
|
+
- Honor user preferences (dark mode, reduced motion) via media features as part of responsiveness (web.dev — Media features/Theming).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Pixel-perfect fixed widths that break between breakpoints → use fluid units and `minmax()` so layouts fill the gaps (MDN Grid).
|
|
39
|
+
- Relying only on viewport media queries for reusable components → add container queries so they reflow in any context (web.dev).
|
|
40
|
+
- Designing desktop-first and retrofitting small screens → start from flexible, content-driven layouts (web.dev — Macro layouts).
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```css
|
|
44
|
+
/* Intrinsic, breakpoint-light card layout */
|
|
45
|
+
.cards { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); }
|
|
46
|
+
|
|
47
|
+
/* Macro layout switch at a deliberate breakpoint */
|
|
48
|
+
@media (min-width: 64rem) {
|
|
49
|
+
.page { grid-template-columns: 16rem 1fr; } /* sidebar + content */
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Further reading
|
|
54
|
+
- web.dev Learn Responsive Design modules: https://web.dev/learn/design/
|
|
55
|
+
- MDN Grid layout guides: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout
|
|
56
|
+
|
|
57
|
+
## Related skills
|
|
58
|
+
- ../css-techniques — grid, flexbox, and container query fundamentals
|
|
59
|
+
- ../graphic-design-basics — grid and spacing principles behind layouts
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-ux-principles
|
|
3
|
+
description: Usability heuristics, affordances, and laws of UX to evaluate and design interfaces; consult when reviewing or building user-facing flows.
|
|
4
|
+
domain: design
|
|
5
|
+
category: design
|
|
6
|
+
tags: [usability, heuristics, ux, laws-of-ux, interaction-design]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.nngroup.com/articles/ten-usability-heuristics/
|
|
9
|
+
- https://lawsofux.com/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# UI/UX Principles
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
UI/UX principles are evaluative lenses for making interfaces understandable, efficient, and forgiving. The two most-cited canons are Nielsen's 10 usability heuristics (broad rules of thumb for evaluating interaction design) and the Laws of UX (psychology and cognitive-science principles applied to design). Read this when designing a new flow, doing a heuristic review, or justifying a design decision.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Nielsen Norman Group — 10 Usability Heuristics: https://www.nngroup.com/articles/ten-usability-heuristics/
|
|
20
|
+
- Laws of UX: https://lawsofux.com/
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Visibility of system status** — the design keeps users informed about what is happening through timely, appropriate feedback (NN/g heuristic #1).
|
|
24
|
+
- **Match between system and the real world** — speak the users' language with familiar words and concepts rather than internal jargon (NN/g #2).
|
|
25
|
+
- **User control and freedom** — provide clear "emergency exits" (undo/cancel) so users can leave unwanted states (NN/g #3).
|
|
26
|
+
- **Consistency and standards** — users should not have to wonder whether different words or actions mean the same thing; follow platform conventions (NN/g #4).
|
|
27
|
+
- **Recognition rather than recall** — minimize memory load by making elements, actions, and options visible (NN/g #6).
|
|
28
|
+
- **Aesthetic and minimalist design** — keep only relevant content so it does not compete with the essential (NN/g #8).
|
|
29
|
+
- **Laws of UX** — psychology-based principles such as Jakob's Law (users prefer familiar patterns), Hick's Law (more choices increase decision time), Fitts's Law (target acquisition depends on size and distance), and the Aesthetic-Usability Effect (per lawsofux.com).
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Run a heuristic evaluation against NN/g's 10 heuristics before usability testing; they catch a large share of problems cheaply (NN/g).
|
|
33
|
+
- Prevent errors rather than only reporting them — the best designs stop problems before they occur (NN/g heuristic #5).
|
|
34
|
+
- Apply Hick's Law: reduce or group choices to speed decisions, and stage complex tasks progressively (lawsofux.com).
|
|
35
|
+
- Lean on Jakob's Law: reuse established conventions so users transfer existing mental models instead of learning yours (lawsofux.com).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Treating heuristics as rigid pass/fail checks → use them as discussion prompts to surface issues, weighting severity by frequency and impact (NN/g).
|
|
39
|
+
- Hiding system state (no loading or success feedback) → always signal status within a reasonable time (NN/g heuristic #1).
|
|
40
|
+
- Overloading a screen to look "complete" → remove non-essential content; clutter reduces relative visibility of what matters (NN/g heuristic #8).
|
|
41
|
+
- Inventing novel interaction patterns for common tasks → favor familiar conventions (Jakob's Law) unless a measured benefit justifies the learning cost.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
```text
|
|
45
|
+
Heuristic review checklist (excerpt):
|
|
46
|
+
[ ] #1 Status: is progress/loading/success visibly communicated?
|
|
47
|
+
[ ] #3 Control: can the user undo or cancel every destructive action?
|
|
48
|
+
[ ] #5 Prevention: are invalid inputs blocked before submission?
|
|
49
|
+
[ ] #6 Recognition: are key options visible rather than memorized?
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Further reading
|
|
53
|
+
- NN/g full heuristic articles (one deep-dive per heuristic): https://www.nngroup.com/articles/ten-usability-heuristics/
|
|
54
|
+
- Laws of UX individual law pages: https://lawsofux.com/
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../microinteractions — feedback and state cues that realize "visibility of system status"
|
|
58
|
+
- ../design-systems — encoding consistency and standards as reusable components
|