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
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-optimization
|
|
3
|
+
description: Making code faster the right way — measure first, fix algorithms before micro-optimizing, and validate with benchmarks.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: practices
|
|
6
|
+
tags: [performance, optimization, profiling, benchmarking, algorithms]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://developer.mozilla.org/en-US/docs/Web/Performance
|
|
9
|
+
- https://en.algorithmica.org/hpc/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Code Optimization
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Code optimization is making software faster or lighter without breaking correctness — but only where measurement shows it matters. Consult this when something is genuinely slow, before reaching for a rewrite. MDN's Web Performance pages cover measuring and budgeting on the web; Algorithmica's "Algorithms for Modern Hardware" covers profiling, benchmarking, and low-level optimization on modern CPUs.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs (web performance): https://developer.mozilla.org/en-US/docs/Web/Performance
|
|
20
|
+
- Docs (high-performance computing): https://en.algorithmica.org/hpc/
|
|
21
|
+
- Repo (Algorithmica): https://github.com/algorithmica-org/algorithmica
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Measure first.** Before optimizing, establish a baseline with real tools and metrics; MDN's overarching guidance is to measure your actual performance before changing anything.
|
|
25
|
+
- **Profiling vs. benchmarking.** Profiling finds *where* time goes (instrumentation, statistical sampling, machine-code analysis — covered in Algorithmica's profiling chapter); benchmarking measures *whether* a specific change actually helped.
|
|
26
|
+
- **Algorithms still dominate, but not alone.** Asymptotic complexity (Big-O) is the first lever, yet Algorithmica stresses that on modern hardware it is no longer the sole deciding factor — constant factors and hardware behavior matter.
|
|
27
|
+
- **The memory hierarchy / cache.** Access patterns and CPU caching often determine real speed; cache-friendly layouts can beat algorithmically "equal" code (Algorithmica devotes a section to caching and memory).
|
|
28
|
+
- **Performance budgets.** MDN recommends setting budgets — explicit limits on metrics like load time or bundle size — to prevent regressions over time.
|
|
29
|
+
- **Measure user-perceived performance.** MDN notes that what matters is how users perceive performance (RUM, perceived metrics), not just raw milliseconds.
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- **Profile to find the real bottleneck, then optimize that.** Optimize the hot path the profiler identifies rather than guessing; most code is not on the critical path.
|
|
33
|
+
- **Improve the algorithm/data structure before micro-optimizing.** A better Big-O usually beats hand-tuning a poor algorithm; reach for SIMD/cache tricks only after the algorithm is right.
|
|
34
|
+
- **Benchmark every change.** Confirm each optimization is a real, repeatable speedup (and didn't regress correctness) before keeping it.
|
|
35
|
+
- **Set and enforce a performance budget.** Use budgets in CI/monitoring so performance gains don't silently erode (MDN performance budgets).
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- **Optimizing without measuring** → profile first; intuition about the bottleneck is frequently wrong, and effort lands off the hot path.
|
|
39
|
+
- **Micro-optimizing a bad algorithm** → fix the algorithm/data structure first; constant-factor tweaks can't fix a quadratic loop.
|
|
40
|
+
- **Trusting a one-shot timing** → benchmark with repetition and a stable setup; noise and warm-up effects make single runs misleading.
|
|
41
|
+
- **Sacrificing correctness/readability for speed off the hot path** → only trade clarity for performance where measurement proves it matters.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
```javascript
|
|
45
|
+
// O(n^2): membership check inside a loop
|
|
46
|
+
const dupes = a.filter(x => b.includes(x)); // includes scans b each time
|
|
47
|
+
|
|
48
|
+
// O(n): hoist the lookups into a Set — algorithmic win, then measure
|
|
49
|
+
const bSet = new Set(b);
|
|
50
|
+
const dupes2 = a.filter(x => bSet.has(x));
|
|
51
|
+
// Verify with a benchmark before assuming it's faster for your input sizes.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Further reading
|
|
55
|
+
- MDN — Measuring performance: https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Performance/Measuring_performance
|
|
56
|
+
- Algorithmica — Profiling: https://en.algorithmica.org/hpc/profiling/
|
|
57
|
+
|
|
58
|
+
## Related skills
|
|
59
|
+
- ../clean-code — keep optimized code readable; document non-obvious perf tradeoffs
|
|
60
|
+
- ../refactoring — restructure safely under test before/after optimizing
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review-practices
|
|
3
|
+
description: How to review and author code changes — what reviewers look for, review speed, and writing useful, kind review comments.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: practices
|
|
6
|
+
tags: [code-review, pull-request, review-checklist, collaboration]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://google.github.io/eng-practices/review/
|
|
9
|
+
- https://github.com/google/eng-practices
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Code Review Practices
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Code review is the process where someone other than the change's author examines the code before it lands, primarily to keep the codebase healthy over time. Consult this when reviewing a pull/change request or preparing your own change for review. Google's Engineering Practices documentation is a well-known, freely published reference for both reviewers and change authors.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://google.github.io/eng-practices/review/
|
|
20
|
+
- Repo: https://github.com/google/eng-practices
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Purpose of review.** Review exists to maintain the overall health of the codebase over time, not to demand perfection in every change.
|
|
24
|
+
- **What reviewers look at.** Google's guide enumerates areas to examine: design, functionality (does it do what the author intended), complexity/simplicity, tests, naming, comments, style-guide compliance, and documentation updates.
|
|
25
|
+
- **The reviewer/author split.** Google publishes two complementary guides — one for the *reviewer* (how to review) and one for the *change author* (how to get a change reviewed smoothly).
|
|
26
|
+
- **Speed matters.** Reviews should be fast: slow reviews block authors, delay feedback, and degrade team velocity, so reviewers are expected to respond promptly even if a full review takes longer.
|
|
27
|
+
- **Alternatives exist.** Pair programming and in-person review are valid substitutes for asynchronous review in some situations.
|
|
28
|
+
|
|
29
|
+
## Best practices
|
|
30
|
+
- **Review for design first, nits last.** Confirm the change is well-designed and does the right thing before quibbling over minor style (which a linter should catch anyway).
|
|
31
|
+
- **Be prompt.** Respond to review requests quickly to keep authors unblocked, even when the change is large enough to need follow-up.
|
|
32
|
+
- **Write kind, actionable comments.** Explain the reasoning behind a request, and clearly distinguish must-fix issues from optional suggestions (e.g. prefix non-blocking nits).
|
|
33
|
+
- **Approve once it improves overall code health.** A change does not have to be perfect to be approved — only a net improvement to the codebase that is appropriately tested.
|
|
34
|
+
|
|
35
|
+
## Common pitfalls
|
|
36
|
+
- **Demanding perfection / endless rounds** → approve once the change improves code health; capture larger ideas as follow-up rather than blocking.
|
|
37
|
+
- **Letting reviews sit for days** → prioritize prompt responses; slow reviews are a primary cause of team frustration and slowdown.
|
|
38
|
+
- **Vague comments ("this is wrong")** → state the problem, why it matters, and a concrete suggested fix; mark optional items as optional.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
```text
|
|
42
|
+
Review comment styles (author-friendly):
|
|
43
|
+
|
|
44
|
+
Blocking: This query runs inside the loop, so it's O(n) round-trips.
|
|
45
|
+
Move it out of the loop or batch the IDs.
|
|
46
|
+
|
|
47
|
+
Optional: Nit (non-blocking): `getUserData` could be `fetchUser` to
|
|
48
|
+
match the naming used elsewhere in this file.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Further reading
|
|
52
|
+
- The Standard of Code Review: https://google.github.io/eng-practices/review/reviewer/standard.html
|
|
53
|
+
- How to write code review comments: https://google.github.io/eng-practices/review/reviewer/comments.html
|
|
54
|
+
- The CL author's guide: https://google.github.io/eng-practices/review/developer/
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../clean-code — many review checks (naming, cohesion) are clean-code concerns
|
|
58
|
+
- ../git-workflow — PRs and commit hygiene that make changes reviewable
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-workflow
|
|
3
|
+
description: Day-to-day Git collaboration — branching, focused commits, pull requests, and Conventional Commits message format.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: practices
|
|
6
|
+
tags: [git, version-control, branching, commits, conventional-commits, pull-request]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://git-scm.com/docs
|
|
9
|
+
- https://www.conventionalcommits.org/en/v1.0.0/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Git Workflow
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
A Git workflow is the set of conventions a team uses for branching, committing, and integrating changes so history stays readable and changes stay reviewable. Consult this when deciding how to branch, how to structure commits, or how to format commit messages. Git's own reference manual defines the commands; the Conventional Commits spec defines a popular structured message format.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs (Git reference manual): https://git-scm.com/docs
|
|
20
|
+
- Pro Git book: https://git-scm.com/book
|
|
21
|
+
- Conventional Commits spec: https://www.conventionalcommits.org/en/v1.0.0/
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Branches isolate work.** `git branch` / `git switch` create lightweight lines of development; do feature work on a branch and integrate via `git merge` or `git rebase` (both documented in the Git reference).
|
|
25
|
+
- **Commits are the unit of history.** `git add` stages changes and `git commit` records them; a good commit captures one logical change with a message explaining what and why.
|
|
26
|
+
- **Sharing.** `git push` publishes commits to a remote and `git pull` fetches and integrates remote changes; pull requests wrap a branch for review before integration.
|
|
27
|
+
- **Conventional Commits structure.** The spec defines `<type>[optional scope]: <description>`, then an optional body and optional footer(s).
|
|
28
|
+
- **Types & semver mapping.** `feat` (a new feature → MINOR) and `fix` (a bug fix → PATCH) are the core types; `docs`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `style` are also recommended.
|
|
29
|
+
- **Breaking changes.** Indicated either by a `!` after the type/scope (`feat!:`) or a `BREAKING CHANGE:` footer; both signal a MAJOR version bump.
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- **Keep commits small and focused.** One logical change per commit makes review, revert, and `git bisect` tractable (separate refactoring from behavior change — see refactoring).
|
|
33
|
+
- **Write meaningful messages.** Use an imperative description; for non-trivial changes, explain *why* in the body. Conventional Commits adds machine-readable type/scope so tools can generate changelogs and version bumps.
|
|
34
|
+
- **Branch per change, integrate via review.** Open a pull request so a reviewer examines the change before it lands (see code-review-practices).
|
|
35
|
+
- **Mark breaking changes explicitly.** Use `!` or a `BREAKING CHANGE:` footer so consumers and release tooling correctly bump the major version.
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- **Vague messages ("fix stuff", "wip")** → write a clear type/description and a body explaining why; future readers and changelog tooling depend on it.
|
|
39
|
+
- **One huge commit mixing many concerns** → split into focused commits so each can be reviewed and reverted independently.
|
|
40
|
+
- **Hiding a breaking change in a `feat` or `fix`** → use `feat!:`/`fix!:` or a `BREAKING CHANGE:` footer so it triggers a MAJOR bump rather than surprising consumers.
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
```text
|
|
44
|
+
feat(auth): add password reset endpoint
|
|
45
|
+
|
|
46
|
+
Sends a single-use token by email and expires it after 15 minutes.
|
|
47
|
+
|
|
48
|
+
Refs: #482
|
|
49
|
+
|
|
50
|
+
# Breaking change variants:
|
|
51
|
+
feat(api)!: drop deprecated v1 user fields
|
|
52
|
+
# or, via footer:
|
|
53
|
+
BREAKING CHANGE: the `username` field is removed from the user payload
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Further reading
|
|
57
|
+
- Pro Git — Branching: https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell
|
|
58
|
+
- Conventional Commits spec (full): https://www.conventionalcommits.org/en/v1.0.0/
|
|
59
|
+
|
|
60
|
+
## Related skills
|
|
61
|
+
- ../code-review-practices — pull requests and reviewable change hygiene
|
|
62
|
+
- ../refactoring — keeping structure-only commits separate from behavior commits
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refactoring
|
|
3
|
+
description: Improving code's internal structure without changing observable behavior, via small steps verified by tests.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: practices
|
|
6
|
+
tags: [refactoring, code-smells, tests, technical-debt]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://refactoring.com/
|
|
9
|
+
- https://refactoring.com/catalog/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Refactoring
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Refactoring is changing the internal structure of software to make it easier to understand and cheaper to modify — *without* changing its observable behavior. Consult this when cleaning up code before or after adding a feature, paying down technical debt, or making a change feel hard. Martin Fowler's refactoring.com defines the discipline and catalogs the named refactorings.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs (definition): https://refactoring.com/
|
|
20
|
+
- Catalog of named refactorings: https://refactoring.com/catalog/
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Definition (behavior-preserving).** Per Fowler, refactoring is "a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior."
|
|
24
|
+
- **A series of small transformations.** The heart of refactoring is many tiny behavior-preserving steps; each does little, but the sequence produces a significant restructuring. Small steps make it less likely to go wrong.
|
|
25
|
+
- **Keep the system working.** The system is kept fully working after each refactoring, which reduces the chance it gets seriously broken mid-change.
|
|
26
|
+
- **Code smells.** Smells are easy-to-spot surface symptoms (e.g. long functions, duplicated code, large classes) that often point to a deeper problem worth refactoring. Fowler's catalog pairs common smells with the refactorings that address them.
|
|
27
|
+
- **Tests as the safety net.** Running tests after each change is what makes refactoring predictable and safe; when automated refactoring tools are unavailable, frequent testing is how mistakes get caught.
|
|
28
|
+
|
|
29
|
+
## Best practices
|
|
30
|
+
- **Refactor under green tests.** Have a passing test suite first; refactor in small steps and re-run tests after each, so any break is localized to the last change.
|
|
31
|
+
- **Separate refactoring from behavior change.** Do not mix a refactoring commit with a feature/bugfix commit — keep "tidy structure" and "change behavior" as distinct steps (and ideally distinct commits).
|
|
32
|
+
- **Refactor when it makes the next change easier.** Tidy the area you are about to modify ("preparatory refactoring") rather than scheduling a big separate cleanup.
|
|
33
|
+
- **Take small steps.** Prefer many tiny, reversible transformations over one large rewrite; this keeps the system shippable throughout.
|
|
34
|
+
|
|
35
|
+
## Common pitfalls
|
|
36
|
+
- **Refactoring without tests** → add characterization tests first; without a safety net you cannot tell whether behavior was preserved.
|
|
37
|
+
- **Mixing refactoring with feature work in one big diff** → split into structure-only changes and behavior changes so reviewers (and `git bisect`) can reason about each.
|
|
38
|
+
- **Big-bang rewrite instead of stepwise change** → break it into a sequence of small named refactorings, keeping the build green between each.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
```javascript
|
|
42
|
+
// Smell: long function mixing extraction and formatting.
|
|
43
|
+
// Step 1 — Extract Function (behavior preserved), run tests:
|
|
44
|
+
function printOwing(invoice) {
|
|
45
|
+
printBanner();
|
|
46
|
+
const outstanding = calculateOutstanding(invoice); // extracted
|
|
47
|
+
printDetails(invoice, outstanding); // extracted
|
|
48
|
+
}
|
|
49
|
+
// Each extraction is a small step; tests stay green throughout.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Further reading
|
|
53
|
+
- Catalog of refactorings: https://refactoring.com/catalog/
|
|
54
|
+
- Community: refactoring.guru groups smells/techniques into browsable categories (commercial site, not an official source): https://refactoring.guru/refactoring
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../clean-code — the target state refactoring moves toward
|
|
58
|
+
- ../code-review-practices — reviewers flag smells; refactoring resolves them
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: appsec-fundamentals
|
|
3
|
+
description: Application security fundamentals — OWASP Proactive Controls, input validation, output encoding, and secure-by-default design; consult when building any feature.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [appsec, proactive-controls, input-validation, output-encoding, owasp]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://top10proactive.owasp.org/
|
|
9
|
+
- https://cheatsheetseries.owasp.org/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Application Security Fundamentals
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
While the OWASP Top 10 describes what goes wrong, the OWASP Top 10 Proactive Controls describe what to build to prevent it. This skill summarizes the proactive controls and the foundational defenses (input validation, output/context-aware encoding, secure defaults) that every feature should apply by default. Read this at the start of building a feature, not after a vulnerability is found. For deep, topic-specific guidance, follow the linked OWASP Cheat Sheets.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Proactive Controls (2024): https://top10proactive.owasp.org/
|
|
20
|
+
- Proactive Controls repo: https://github.com/OWASP/www-project-proactive-controls/
|
|
21
|
+
- Cheat Sheet Series (130+ topic guides): https://cheatsheetseries.owasp.org/
|
|
22
|
+
- Cheat Sheet repo: https://github.com/OWASP/CheatSheetSeries
|
|
23
|
+
- License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
|
|
24
|
+
|
|
25
|
+
## Core concepts
|
|
26
|
+
The OWASP Top 10 Proactive Controls (2024) are the security techniques to include in every project:
|
|
27
|
+
|
|
28
|
+
- **C1 Implement Access Control** — enforce authorization server-side, deny by default.
|
|
29
|
+
- **C2 Use Cryptography to Protect Data** — protect data at rest and in transit with vetted algorithms and managed keys.
|
|
30
|
+
- **C3 Validate all Input & Handle Exceptions** — treat all input as untrusted; fail safely on errors.
|
|
31
|
+
- **C4 Address Security from the Start** — threat-model and design controls early (secure design).
|
|
32
|
+
- **C5 Secure By Default Configurations** — ship hardened defaults rather than relying on later hardening.
|
|
33
|
+
- **C6 Keep your Components Secure** — track and patch third-party dependencies.
|
|
34
|
+
- **C7 Secure Digital Identities** — robust authentication, session, and credential handling.
|
|
35
|
+
- **C8 Leverage Browser Security Features** — use headers/policies (CSP, cookie attributes) the browser enforces.
|
|
36
|
+
- **C9 Implement Security Logging and Monitoring** — log security events and enable detection.
|
|
37
|
+
- **C10 Stop Server Side Request Forgery** — validate and restrict outbound requests built from user input.
|
|
38
|
+
|
|
39
|
+
Two cross-cutting defenses underpin several controls:
|
|
40
|
+
- **Input validation** — prefer allow-list (positive) validation of type, length, format, and range; validation is defense-in-depth, not a substitute for safe APIs.
|
|
41
|
+
- **Output / context-aware encoding** — encode untrusted data for the exact sink it lands in (HTML body, HTML attribute, JavaScript, URL, SQL) to neutralize injection.
|
|
42
|
+
|
|
43
|
+
## Best practices
|
|
44
|
+
- Use parameterized queries and safe APIs to stop injection at the boundary; treat input validation as an additional layer, not the primary defense.
|
|
45
|
+
- Apply output encoding based on the output context, since the correct escaping differs between HTML, attributes, JavaScript, and URLs.
|
|
46
|
+
- Adopt secure-by-default configuration (C5): least privilege, disabled debug endpoints, and minimal exposed surface from day one.
|
|
47
|
+
- Consult the relevant OWASP Cheat Sheet for any non-trivial control rather than improvising (the series is the canonical implementation reference).
|
|
48
|
+
|
|
49
|
+
## Common pitfalls
|
|
50
|
+
- Relying on input validation alone to prevent injection → combine validation with parameterized queries and context-aware encoding.
|
|
51
|
+
- Using a single "escape" function everywhere → encoding is context-specific; HTML-encoding a value placed into a JavaScript string is still unsafe.
|
|
52
|
+
- Bolting on security after the build (skipping C4) → design controls in from the start; retrofitting access control and crypto is error-prone.
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
```text
|
|
56
|
+
# Context-aware output encoding (concept):
|
|
57
|
+
HTML body -> HTML entity encode ( < becomes < )
|
|
58
|
+
HTML attribute -> attribute encode + quote the attribute
|
|
59
|
+
JavaScript -> JS string encode / avoid building JS from input
|
|
60
|
+
URL parameter -> URL/percent encode
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Further reading
|
|
64
|
+
- Input Validation Cheat Sheet, Cross Site Scripting Prevention Cheat Sheet, Injection Prevention Cheat Sheet — https://cheatsheetseries.owasp.org/
|
|
65
|
+
- Proactive Controls detailed pages — https://top10proactive.owasp.org/
|
|
66
|
+
|
|
67
|
+
## Related skills
|
|
68
|
+
- ../owasp-top-10 — the risks these controls prevent
|
|
69
|
+
- ../owasp-asvs — testable requirements aligned to these controls
|
|
70
|
+
- ../secure-auth-sessions — implementation detail for C7
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-supply-chain
|
|
3
|
+
description: Manage dependency and supply-chain risk — scan for known-vulnerable components (OWASP Dependency-Check) and verify build provenance with SLSA levels.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [supply-chain, dependencies, sca, slsa, provenance, owasp]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://owasp.org/www-project-dependency-check/
|
|
9
|
+
- https://slsa.dev/
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Dependency & Supply-Chain Security
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Most applications are mostly third-party code, so a vulnerable or tampered dependency is a direct path into your system (OWASP Top 10 A03 Software Supply Chain Failures). This skill covers two complementary defenses: detecting known-vulnerable components with Software Composition Analysis (OWASP Dependency-Check) and raising the integrity of how artifacts are built using the SLSA framework. Read it when adding dependencies, configuring CI/CD, or hardening a release pipeline.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- OWASP Dependency-Check (docs): https://owasp.org/www-project-dependency-check/
|
|
20
|
+
- Dependency-Check repo: https://github.com/dependency-check/DependencyCheck
|
|
21
|
+
- SLSA (docs): https://slsa.dev/
|
|
22
|
+
- SLSA repo: https://github.com/slsa-framework/slsa (an OpenSSF project)
|
|
23
|
+
- Licenses: Dependency-Check (Apache-2.0); SLSA spec (Community Specification License 1.0)
|
|
24
|
+
|
|
25
|
+
## Install / setup
|
|
26
|
+
OWASP Dependency-Check CLI quick start (verbatim from the official repo README; macOS via Homebrew):
|
|
27
|
+
```bash
|
|
28
|
+
$ brew update && brew install dependency-check
|
|
29
|
+
$ dependency-check -h
|
|
30
|
+
$ dependency-check --out . --scan [path to jar files to be scanned]
|
|
31
|
+
```
|
|
32
|
+
On other platforms, download the latest release from GitHub, then run the bundled script:
|
|
33
|
+
```bash
|
|
34
|
+
# *nix
|
|
35
|
+
$ ./bin/dependency-check.sh -h
|
|
36
|
+
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
|
|
37
|
+
```
|
|
38
|
+
```bat
|
|
39
|
+
:: Windows
|
|
40
|
+
> .\bin\dependency-check.bat -h
|
|
41
|
+
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Core concepts
|
|
45
|
+
- **Software Composition Analysis (SCA).** Dependency-Check inventories a project's dependencies, derives CPE identifiers, and maps them to known CVEs from the National Vulnerability Database so you avoid shipping components with publicly disclosed vulnerabilities.
|
|
46
|
+
- **Pipeline integration.** Dependency-Check runs as a CLI and ships plugins/integrations for Maven, Gradle, Ant, GitHub Actions, Jenkins, Azure DevOps, and Docker (some community-maintained), so scans can gate builds.
|
|
47
|
+
- **SLSA framework.** SLSA ("Supply-chain Levels for Software Artifacts") is a checklist of standards and controls to prevent tampering and improve artifact integrity from source to service.
|
|
48
|
+
- **Provenance.** Provenance is verifiable metadata describing what entity built an artifact, what process was used, and what the inputs were. Generating provenance is the first on-ramp to SLSA.
|
|
49
|
+
- **SLSA build levels.** Build L0 = no guarantees; Build L1 = provenance exists (may be unsigned); Build L2 = signed provenance from a hosted build platform (prevents post-build tampering); Build L3 = hardened builds with strong isolation (prevents tampering during the build and cross-build interference).
|
|
50
|
+
|
|
51
|
+
## Best practices
|
|
52
|
+
- Run SCA (Dependency-Check) in CI and fail the build on newly introduced known-vulnerable dependencies, not just on a schedule.
|
|
53
|
+
- Generate and verify build provenance; aim to progress up the SLSA build levels (start at L1, sign provenance for L2, harden the builder for L3).
|
|
54
|
+
- Pin dependency versions and maintain a software bill of materials (SBOM) so you can quickly identify exposure when a new CVE drops.
|
|
55
|
+
- Keep components current and patched (OWASP Proactive Control C6) rather than letting transitive dependencies drift.
|
|
56
|
+
|
|
57
|
+
## Common pitfalls
|
|
58
|
+
- Scanning only direct dependencies → transitive dependencies carry most known CVEs; scan the full resolved tree.
|
|
59
|
+
- Trusting an artifact with no provenance → without signed provenance you cannot prove how or where it was built; require at least SLSA Build L1 and prefer L2+.
|
|
60
|
+
- Treating a one-time scan as sufficient → vulnerability data changes daily; re-scan on every build and re-evaluate released artifacts as new CVEs are published.
|
|
61
|
+
|
|
62
|
+
## Examples
|
|
63
|
+
```yaml
|
|
64
|
+
# Concept: gate a build on SCA results, then attest provenance
|
|
65
|
+
steps:
|
|
66
|
+
- run: dependency-check --out reports --scan ./build/libs --failOnCVSS 7
|
|
67
|
+
- run: generate-and-sign-provenance # work toward SLSA Build L2/L3
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Further reading
|
|
71
|
+
- SLSA build levels specification: https://slsa.dev/spec/v1.0/levels (latest spec linked from slsa.dev)
|
|
72
|
+
- OWASP Top 10 A03 Software Supply Chain Failures — ../owasp-top-10
|
|
73
|
+
|
|
74
|
+
## Related skills
|
|
75
|
+
- ../owasp-top-10 — A03 Software Supply Chain Failures
|
|
76
|
+
- ../appsec-fundamentals — C6 Keep your Components Secure
|
|
77
|
+
- ../secrets-management — protecting pipeline/build secrets
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: owasp-asvs
|
|
3
|
+
description: OWASP Application Security Verification Standard 5.0 — testable security requirements organized by chapter and verification level; consult to define or verify appsec requirements.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [owasp, asvs, security-requirements, verification, appsec]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://owasp.org/www-project-application-security-verification-standard/
|
|
9
|
+
- https://github.com/OWASP/ASVS
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# OWASP ASVS
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
The Application Security Verification Standard (ASVS) is an OWASP flagship project that provides a comprehensive, testable list of application security requirements. Unlike the awareness-oriented Top 10, ASVS is meant to be used as a measurable standard: a basis for security requirements during design, a checklist for testing/verification, and a procurement contract baseline. Read this when you need concrete, citable requirements for what "secure enough" means at a chosen rigor level.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs / project: https://owasp.org/www-project-application-security-verification-standard/
|
|
20
|
+
- Repo: https://github.com/OWASP/ASVS
|
|
21
|
+
- License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
|
|
22
|
+
- Current stable: ASVS 5.0.0 (released May 2025 at Global AppSec EU Barcelona)
|
|
23
|
+
|
|
24
|
+
## Core concepts
|
|
25
|
+
- **Verification levels (L1, L2, L3).** Requirements are tiered by increasing rigor. In 5.0, L1 is scoped to first-layer / foundational defenses (a deliberately smaller set than 4.x to lower the adoption barrier); L2 raises the bar (e.g., requiring multi-factor authentication); L3 is the most advanced (e.g., hardware-backed, attested authentication). Choose the level by the application's risk and data sensitivity.
|
|
26
|
+
- **Requirement identifiers.** Requirements use a `<chapter>.<section>.<requirement>` numbering scheme and should be cited with a version prefix, e.g. `v5.0.0-1.2.5`, so references stay unambiguous across editions.
|
|
27
|
+
- **Chapter structure (V1-V17).** ASVS 5.0 organizes requirements into chapters such as Encoding and Sanitization, Validation and Business Logic, Web Frontend Security, API and Web Service, File Handling, Authentication, Session Management, Authorization, Self-contained Tokens, OAuth and OIDC, Cryptography, Secure Communication, Configuration, Data Protection, Secure Coding and Architecture, Security Logging and Error Handling, and WebRTC.
|
|
28
|
+
- **Standard, not a tool.** ASVS defines *what* to verify; it does not prescribe a specific scanner or test method. Teams map each requirement to manual review, automated tests, or both.
|
|
29
|
+
|
|
30
|
+
## Best practices
|
|
31
|
+
- Pick a target level up front based on risk (data sensitivity, exposure, regulatory needs) and treat it as the verification floor for the whole application.
|
|
32
|
+
- Use ASVS requirement IDs (with version prefix) directly in tickets, test cases, and acceptance criteria so coverage is auditable.
|
|
33
|
+
- Integrate the relevant chapter requirements into design reviews early rather than testing for them only at the end.
|
|
34
|
+
|
|
35
|
+
## Common pitfalls
|
|
36
|
+
- Treating all of L1+L2+L3 as mandatory → each level is cumulative and chosen by risk; applying L3 everywhere wastes effort and slows delivery.
|
|
37
|
+
- Citing version 4.0.3 requirement numbers in a 5.0 program → the structure and level scoping changed substantially in 5.0; always confirm the IDs against the version you target.
|
|
38
|
+
- Using ASVS as awareness reading → it is a verification standard; pair it with the Top 10 for prioritization and with cheat sheets for implementation guidance.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
```text
|
|
42
|
+
# Referencing an ASVS requirement in a security acceptance criterion:
|
|
43
|
+
Given a login endpoint, it MUST satisfy ASVS v5.0.0 (Authentication, chapter V6)
|
|
44
|
+
at the target verification level (e.g., L2 requires multi-factor authentication).
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Further reading
|
|
48
|
+
- Downloads (PDF / Word / CSV) and bleeding-edge master branch: linked from the project page above
|
|
49
|
+
- OWASP Top 10 for risk prioritization: ../owasp-top-10
|
|
50
|
+
|
|
51
|
+
## Related skills
|
|
52
|
+
- ../owasp-top-10 — awareness/prioritization input that ASVS makes testable
|
|
53
|
+
- ../appsec-fundamentals — proactive controls aligned to ASVS chapters
|
|
54
|
+
- ../secure-auth-sessions — implementation detail for ASVS V6 and V7
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: owasp-top-10
|
|
3
|
+
description: The OWASP Top 10 web application security risks (2025 edition) and how to mitigate them; consult when threat-modeling or hardening web apps.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [owasp, web-security, vulnerabilities, threat-modeling, appsec]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://owasp.org/Top10/
|
|
9
|
+
- https://github.com/OWASP/Top10
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# OWASP Top 10
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
The OWASP Top 10 is the most widely referenced awareness document for web application security, ranking the most critical risks based on contributed data and a community survey. Read this when you need a shared vocabulary for the highest-impact classes of web vulnerabilities, when threat-modeling a feature, or when prioritizing remediation. The list is a starting point for awareness, not an exhaustive security standard (use ASVS for verification).
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://owasp.org/Top10/ (redirects to the current 2025 edition at https://owasp.org/Top10/2025/)
|
|
20
|
+
- Repo: https://github.com/OWASP/Top10
|
|
21
|
+
- License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
The 2025 edition defines ten categories (A01-A10). Each maps to a set of CWE weaknesses:
|
|
25
|
+
|
|
26
|
+
- **A01:2025 Broken Access Control** — users acting outside their intended permissions (IDOR, missing authorization checks, privilege escalation).
|
|
27
|
+
- **A02:2025 Security Misconfiguration** — insecure defaults, verbose errors, unpatched/exposed components, overly permissive settings.
|
|
28
|
+
- **A03:2025 Software Supply Chain Failures** — risks from vulnerable, compromised, or tampered third-party components and build pipelines.
|
|
29
|
+
- **A04:2025 Cryptographic Failures** — weak, missing, or misapplied cryptography exposing data in transit or at rest.
|
|
30
|
+
- **A05:2025 Injection** — untrusted input interpreted as code/commands (SQLi, OS command injection, XSS is included here).
|
|
31
|
+
- **A06:2025 Insecure Design** — flaws rooted in missing or ineffective security controls at the design stage.
|
|
32
|
+
- **A07:2025 Authentication Failures** — weaknesses in identity confirmation and session handling (credential stuffing, weak recovery).
|
|
33
|
+
- **A08:2025 Software or Data Integrity Failures** — unverified updates, insecure deserialization, untrusted CI/CD assumptions.
|
|
34
|
+
- **A09:2025 Security Logging and Alerting Failures** — insufficient detection, logging, and timely alerting on attacks.
|
|
35
|
+
- **A10:2025 Mishandling of Exceptional Conditions** — incorrect handling of errors and edge cases leading to failures or insecure states.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Treat the Top 10 as an awareness baseline and pair it with a verification standard such as OWASP ASVS for testable requirements.
|
|
39
|
+
- Address Broken Access Control (A01, consistently the top risk) by enforcing authorization server-side on every request and denying by default.
|
|
40
|
+
- Prevent Injection (A05) with parameterized queries / prepared statements and context-aware output encoding rather than manual escaping.
|
|
41
|
+
- Manage supply-chain risk (A03) with a software bill of materials (SBOM), dependency scanning, and verified provenance for build artifacts.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Relying on client-side checks for access control → enforce all authorization decisions on the server; never trust hidden fields or disabled UI.
|
|
45
|
+
- Treating the Top 10 as a complete checklist → it is a prioritization aid, not a comprehensive security program; many real risks fall outside it.
|
|
46
|
+
- Citing the outdated 2021 list (superseded) → reference the 2025 edition; category names and ordering changed (e.g., Injection moved, supply chain added).
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
```sql
|
|
50
|
+
-- A05 Injection: use a parameterized query, never string concatenation
|
|
51
|
+
-- Vulnerable: "SELECT * FROM users WHERE email = '" + input + "'"
|
|
52
|
+
-- Safe (parameterized):
|
|
53
|
+
SELECT * FROM users WHERE email = ?; -- bind `input` as a parameter
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Further reading
|
|
57
|
+
- Per-category detail pages: https://owasp.org/Top10/2025/
|
|
58
|
+
- OWASP ASVS (testable verification requirements): ../owasp-asvs
|
|
59
|
+
|
|
60
|
+
## Related skills
|
|
61
|
+
- ../owasp-asvs — turns Top 10 awareness into verifiable, level-based requirements
|
|
62
|
+
- ../appsec-fundamentals — proactive controls that prevent these risks by design
|
|
63
|
+
- ../dependency-supply-chain — mitigates A03 Software Supply Chain Failures
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: secrets-management
|
|
3
|
+
description: Store, rotate, and never commit secrets — vaults over source/env vars, encryption, least privilege, rotation, and secret detection per OWASP guidance.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [secrets, vault, rotation, credentials, owasp]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html
|
|
9
|
+
- https://github.com/OWASP/CheatSheetSeries
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Secrets Management
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Secrets (API keys, database credentials, tokens, certificates, encryption keys) are the keys to the kingdom, and leaked secrets are a leading cause of breaches. This skill summarizes the OWASP Secrets Management Cheat Sheet: where secrets should live, how to rotate and revoke them, and how to keep them out of source code. Read it before wiring any credential into an application, CI/CD pipeline, or infrastructure-as-code.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Secrets Management Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html
|
|
20
|
+
- Repo: https://github.com/OWASP/CheatSheetSeries
|
|
21
|
+
- License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
|
|
22
|
+
|
|
23
|
+
## Core concepts
|
|
24
|
+
- **Use a secrets manager, not source code.** Store secrets in a dedicated solution (cloud services like AWS Secrets Manager, Azure Key Vault, Google Secret Manager, or platform-agnostic tools like HashiCorp Vault), and inject them at deploy time via the orchestrator rather than hardcoding them.
|
|
25
|
+
- **Lifecycle: creation, rotation, revocation, expiration.** Generate cryptographically strong secrets with least privilege, rotate them regularly so stolen credentials are short-lived, revoke compromised secrets immediately, and set expirations that force rotation.
|
|
26
|
+
- **Encryption at rest and in transit.** Encrypt stored secrets with strong algorithms and never transmit them in plaintext (use TLS). Consider envelope encryption, keeping the encryption keys separate from the secrets they protect.
|
|
27
|
+
- **Least privilege access.** Apply fine-grained, secret-level permissions; engineers should not have access to all secrets, and CI/CD systems should reach only the secrets they require. Prefer identity-based access (role assumption) over shared static credentials.
|
|
28
|
+
- **Dynamic vs static secrets.** Prefer short-lived dynamic secrets (generated per session/deployment, auto-expiring) where supported; reserve static long-lived secrets for cases that require them, with rigorous rotation.
|
|
29
|
+
- **Detect secrets in code.** Use automated detection (e.g., detect-secrets) with pre-commit hooks and IDE/shift-left scanning to catch secrets before they are committed.
|
|
30
|
+
|
|
31
|
+
## Best practices
|
|
32
|
+
- Keep secrets out of source code, container images, and environment variables baked into images; resolve them at runtime from a manager.
|
|
33
|
+
- Automate rotation and minimize direct human interaction with raw secret values to reduce error and exposure.
|
|
34
|
+
- Scope access per secret and per identity; audit and monitor access rather than granting broad blanket permissions.
|
|
35
|
+
- Use distinct test secrets in detection tooling to reduce false positives while still catching real leaks.
|
|
36
|
+
|
|
37
|
+
## Common pitfalls
|
|
38
|
+
- Committing a secret to git → it persists in history; rotate/revoke the secret immediately and scrub history; add pre-commit secret scanning.
|
|
39
|
+
- Treating environment variables as a secure store → they can leak via logs, process listings, and child processes; prefer a managed secrets solution.
|
|
40
|
+
- Long-lived, never-rotated credentials → set expirations and rotate; prefer dynamic, short-lived secrets where possible.
|
|
41
|
+
- Giving every engineer or every CI job access to all secrets → enforce least privilege at the individual-secret level.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
```text
|
|
45
|
+
# Resolve a secret at runtime instead of hardcoding (concept):
|
|
46
|
+
1. App authenticates to the secrets manager using its workload identity (no static key).
|
|
47
|
+
2. Manager returns a short-lived, scoped secret (e.g., a dynamic DB credential).
|
|
48
|
+
3. App uses it; the credential auto-expires and is rotated by the manager.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Further reading
|
|
52
|
+
- Secrets Management Cheat Sheet (full lifecycle and tooling detail) — link above
|
|
53
|
+
- ASVS chapter V11 Cryptography and V13 Configuration — ../owasp-asvs
|
|
54
|
+
|
|
55
|
+
## Related skills
|
|
56
|
+
- ../appsec-fundamentals — C2 Use Cryptography to Protect Data
|
|
57
|
+
- ../secure-auth-sessions — secrets back credential/session security
|
|
58
|
+
- ../dependency-supply-chain — pipeline secrets and build integrity
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: secure-auth-sessions
|
|
3
|
+
description: Safe authentication and session management per OWASP cheat sheets — passwords, MFA, session IDs, secure cookies, regeneration, and timeouts.
|
|
4
|
+
domain: engineering
|
|
5
|
+
category: security
|
|
6
|
+
tags: [authentication, sessions, mfa, cookies, owasp]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
|
|
9
|
+
- https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Secure Authentication & Session Management
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Authentication confirms who a user is; session management keeps them authenticated across requests without re-proving identity each time. Both are high-value targets and appear in the OWASP Top 10 (A07 Authentication Failures). This skill distills the OWASP Authentication and Session Management cheat sheets into the decisions you most often get wrong. Read it when designing login, registration, password reset, or any stateful session.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Authentication Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
|
|
20
|
+
- Session Management Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
|
|
21
|
+
- Repo: https://github.com/OWASP/CheatSheetSeries
|
|
22
|
+
- License: Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)
|
|
23
|
+
|
|
24
|
+
## Core concepts
|
|
25
|
+
- **Passwords.** Enforce a minimum length (OWASP guidance: at least 8 characters with MFA, 15 without) and a generous maximum (at least 64 characters to allow passphrases). Allow all characters including Unicode and whitespace, and avoid arbitrary composition rules and mandatory periodic rotation.
|
|
26
|
+
- **Breached-password and MFA.** Block common and previously breached passwords (e.g., via a Pwned Passwords-style check). Multi-factor authentication is the single strongest defense against password-related attacks.
|
|
27
|
+
- **Generic error messages.** Use identical responses for failed login regardless of cause (e.g., "Login failed; Invalid user ID or password") so attackers cannot enumerate valid accounts.
|
|
28
|
+
- **Secure password storage.** Never store plaintext or reversible passwords; use a dedicated password-hashing function (see the Password Storage Cheat Sheet) rather than a general-purpose hash.
|
|
29
|
+
- **Session IDs.** Generate session IDs with at least 64 bits of entropy, keep their value meaningless (no embedded data), and rename framework defaults (PHPSESSID, JSESSIONID) to a generic name like `id`.
|
|
30
|
+
- **Session lifecycle.** Regenerate the session ID on any privilege change, especially at login (prevents session fixation). Enforce both an idle timeout and an absolute timeout, and provide a server-side logout that invalidates the session.
|
|
31
|
+
|
|
32
|
+
## Best practices
|
|
33
|
+
- Set cookie attributes `Secure`, `HttpOnly`, and `SameSite=Strict` (or `Lax`); for the strongest binding use the `__Host-` cookie name prefix (requires Secure, Path=/, and no Domain).
|
|
34
|
+
- Regenerate the session identifier immediately after successful authentication and after any privilege escalation.
|
|
35
|
+
- Keep authentication responses and timing uniform to avoid username/account enumeration.
|
|
36
|
+
- Prefer MFA for any account with meaningful access, and verify against breached-password lists at registration and password change.
|
|
37
|
+
|
|
38
|
+
## Common pitfalls
|
|
39
|
+
- Reusing the pre-login session ID after authentication → regenerate it on login to prevent session fixation.
|
|
40
|
+
- Distinct "user not found" vs "wrong password" messages → return one generic failure message and avoid timing oracles.
|
|
41
|
+
- Storing passwords with a fast/general hash (or imposing complexity rules and forced rotation) → use a proper password-hashing algorithm and follow modern length-over-complexity guidance.
|
|
42
|
+
- Omitting `HttpOnly`/`Secure`/`SameSite` on the session cookie → enables XSS theft, plaintext interception, and CSRF.
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
```http
|
|
46
|
+
Set-Cookie: __Host-id=<64-bit-entropy-value>; Secure; HttpOnly; SameSite=Strict; Path=/
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Further reading
|
|
50
|
+
- Password Storage Cheat Sheet, Forgot Password Cheat Sheet, Multifactor Authentication Cheat Sheet — https://cheatsheetseries.owasp.org/
|
|
51
|
+
- ASVS chapters V6 (Authentication) and V7 (Session Management) — ../owasp-asvs
|
|
52
|
+
|
|
53
|
+
## Related skills
|
|
54
|
+
- ../owasp-asvs — testable auth/session requirements (V6, V7)
|
|
55
|
+
- ../appsec-fundamentals — C7 Secure Digital Identities
|
|
56
|
+
- ../secrets-management — protecting the credentials and keys behind auth
|