@bcelep/capint 0.4.2 → 0.6.5
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/AGENT.md +11 -1
- package/CHANGELOG.md +101 -0
- package/README.md +38 -10
- package/bin/capint.js +13 -1
- package/docs/PRD-v0.5-agent-capability-activation.md +430 -0
- package/docs/conventions/cli-scripting.md +60 -0
- package/docs/conventions/daily-use.md +132 -0
- package/docs/conventions/task-to-capability-cheatsheet.md +29 -0
- package/docs/execution-intent-contract.md +31 -3
- package/docs/kullanim-kilavuzu.md +374 -0
- package/docs/maintainer-dogfood.md +90 -0
- package/package.json +11 -2
- package/projections/session-start.md +14 -6
- package/registry.json +117 -4
- package/schemas/explanation.v1.json +48 -0
- package/scripts/capint-task.ps1 +38 -0
- package/scripts/capint-task.sh +40 -0
- package/scripts/release-check.mjs +14 -1
- package/scripts/validate-registry.mjs +44 -0
- package/skill-routing-matrix.json +50 -4
- package/skills/agent-browser/LICENSE +201 -0
- package/skills/agent-browser/SKILL.md +522 -0
- package/skills/agent-browser/agents/verdent.yaml +7 -0
- package/skills/agent-browser/assets/icon-dark.png +0 -0
- package/skills/agent-browser/assets/icon-light.png +0 -0
- package/skills/agent-browser/references/authentication.md +202 -0
- package/skills/agent-browser/references/commands.md +263 -0
- package/skills/agent-browser/references/profiling.md +120 -0
- package/skills/agent-browser/references/proxy-support.md +194 -0
- package/skills/agent-browser/references/session-management.md +193 -0
- package/skills/agent-browser/references/snapshot-refs.md +194 -0
- package/skills/agent-browser/references/video-recording.md +173 -0
- package/skills/agent-browser/templates/authenticated-session.sh +105 -0
- package/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/skills/agent-browser/templates/form-automation.sh +62 -0
- package/skills/algorithmic-art/LICENSE.txt +202 -0
- package/skills/algorithmic-art/SKILL.md +410 -0
- package/skills/algorithmic-art/agents/verdent.yaml +11 -0
- package/skills/algorithmic-art/assets/icon-dark.png +0 -0
- package/skills/algorithmic-art/assets/icon-light.png +0 -0
- package/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/algorithmic-art/templates/viewer.html +599 -0
- package/skills/api-and-interface-design/SKILL.md +294 -0
- package/skills/aspnet-core/LICENSE.txt +202 -0
- package/skills/aspnet-core/SKILL.md +67 -0
- package/skills/aspnet-core/agents/verdent.yaml +11 -0
- package/skills/aspnet-core/assets/dotnet-logo.png +0 -0
- package/skills/aspnet-core/assets/icon-dark.png +0 -0
- package/skills/aspnet-core/assets/icon-light.png +0 -0
- package/skills/aspnet-core/references/_sections.md +40 -0
- package/skills/aspnet-core/references/apis-minimal-and-controllers.md +81 -0
- package/skills/aspnet-core/references/data-state-and-services.md +69 -0
- package/skills/aspnet-core/references/program-and-pipeline.md +103 -0
- package/skills/aspnet-core/references/realtime-grpc-and-background-work.md +58 -0
- package/skills/aspnet-core/references/security-and-identity.md +75 -0
- package/skills/aspnet-core/references/source-map.md +43 -0
- package/skills/aspnet-core/references/stack-selection.md +63 -0
- package/skills/aspnet-core/references/testing-performance-and-operations.md +92 -0
- package/skills/aspnet-core/references/ui-blazor.md +53 -0
- package/skills/aspnet-core/references/ui-mvc.md +56 -0
- package/skills/aspnet-core/references/ui-razor-pages.md +55 -0
- package/skills/aspnet-core/references/versioning-and-upgrades.md +51 -0
- package/skills/auth-patterns/SKILL.md +549 -0
- package/skills/best-practices/SKILL.md +641 -0
- package/skills/better-auth-best-practices/SKILL.md +180 -0
- package/skills/better-auth-best-practices/agents/verdent.yaml +11 -0
- package/skills/better-auth-best-practices/assets/icon-dark.png +0 -0
- package/skills/better-auth-best-practices/assets/icon-light.png +0 -0
- package/skills/brainstorming/SKILL.md +164 -0
- package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/brainstorming/visual-companion.md +287 -0
- package/skills/canvas-design/LICENSE.txt +202 -0
- package/skills/canvas-design/SKILL.md +135 -0
- package/skills/canvas-design/agents/verdent.yaml +11 -0
- package/skills/canvas-design/assets/icon-dark.png +0 -0
- package/skills/canvas-design/assets/icon-light.png +0 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/skills/cloudflare/SKILL.md +233 -0
- package/skills/cloudflare/agents/verdent.yaml +12 -0
- package/skills/cloudflare/assets/icon-dark.png +0 -0
- package/skills/cloudflare/assets/icon-light.png +0 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +188 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +105 -0
- package/skills/cloudflare/references/pipelines/api.md +208 -0
- package/skills/cloudflare/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +80 -0
- package/skills/cloudflare/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +149 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +198 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare/references/r2-sql/README.md +128 -0
- package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
- package/skills/cloudflare/references/r2-sql/api.md +158 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +147 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +212 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +222 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +136 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +69 -0
- package/skills/cloudflare/references/workflows/api.md +185 -0
- package/skills/cloudflare/references/workflows/configuration.md +151 -0
- package/skills/cloudflare/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/code-reviewer/SKILL.md +347 -0
- package/skills/code-simplifier/SKILL.md +124 -0
- package/skills/code-simplifier/agents/verdent.yaml +11 -0
- package/skills/code-simplifier/assets/icon-dark.png +0 -0
- package/skills/code-simplifier/assets/icon-light.png +0 -0
- package/skills/concept-modeler/SKILL.md +178 -0
- package/skills/context-engineering/SKILL.md +289 -0
- package/skills/copywriting/SKILL.md +252 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/copy-frameworks.md +344 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/core-web-vitals/SKILL.md +483 -0
- package/skills/core-web-vitals/references/LCP.md +208 -0
- package/skills/craft-authoring/SKILL.md +123 -0
- package/skills/create-design-system-rules/SKILL.md +530 -0
- package/skills/create-design-system-rules/agents/verdent.yaml +11 -0
- package/skills/create-design-system-rules/assets/icon-dark.png +0 -0
- package/skills/create-design-system-rules/assets/icon-light.png +0 -0
- package/skills/database-and-data-modeling/SKILL.md +515 -0
- package/skills/database-blueprints/SKILL.md +60 -0
- package/skills/database-blueprints/agents/verdent.yaml +13 -0
- package/skills/database-blueprints/assets/icon-dark.png +0 -0
- package/skills/database-blueprints/assets/icon-light.png +0 -0
- package/skills/database-blueprints/references/core-schema.md +68 -0
- package/skills/database-blueprints/references/migration-safety.md +55 -0
- package/skills/database-blueprints/references/mysql.md +50 -0
- package/skills/database-blueprints/references/prisma.md +47 -0
- package/skills/database-blueprints/references/supabase-postgres.md +63 -0
- package/skills/delivery-acceptance/SKILL.md +60 -0
- package/skills/delivery-acceptance/agents/verdent.yaml +12 -0
- package/skills/delivery-acceptance/assets/icon-dark.png +0 -0
- package/skills/delivery-acceptance/assets/icon-light.png +0 -0
- package/skills/delivery-acceptance/references/acceptance-checklist.md +44 -0
- package/skills/delivery-acceptance/references/mobile-print-file.md +19 -0
- package/skills/delivery-acceptance/references/playwright-smoke.md +35 -0
- package/skills/dependency-audit/SKILL.md +97 -0
- package/skills/deprecation-and-migration/SKILL.md +206 -0
- package/skills/design-reviewer/SKILL.md +189 -0
- package/skills/develop-web-game/LICENSE.txt +201 -0
- package/skills/develop-web-game/SKILL.md +154 -0
- package/skills/develop-web-game/agents/verdent.yaml +12 -0
- package/skills/develop-web-game/assets/game-small.svg +4 -0
- package/skills/develop-web-game/assets/game.png +0 -0
- package/skills/develop-web-game/assets/icon-dark.png +0 -0
- package/skills/develop-web-game/assets/icon-light.png +0 -0
- package/skills/develop-web-game/references/action_payloads.json +7 -0
- package/skills/develop-web-game/scripts/web_game_playwright_client.js +356 -0
- package/skills/dignified-python/SKILL.md +175 -0
- package/skills/dignified-python/agents/verdent.yaml +11 -0
- package/skills/dignified-python/assets/icon-dark.png +0 -0
- package/skills/dignified-python/assets/icon-light.png +0 -0
- package/skills/dignified-python/cli-patterns.md +156 -0
- package/skills/dignified-python/dignified-python-core.md +345 -0
- package/skills/dignified-python/references/README.md +319 -0
- package/skills/dignified-python/references/advanced/api-design.md +230 -0
- package/skills/dignified-python/references/advanced/exception-handling.md +185 -0
- package/skills/dignified-python/references/advanced/interfaces.md +183 -0
- package/skills/dignified-python/references/advanced/typing-advanced.md +158 -0
- package/skills/dignified-python/references/checklists.md +134 -0
- package/skills/dignified-python/references/module-design.md +214 -0
- package/skills/dignified-python/subprocess.md +99 -0
- package/skills/dignified-python/versions/python-3.10.md +520 -0
- package/skills/dignified-python/versions/python-3.11.md +538 -0
- package/skills/dignified-python/versions/python-3.12.md +664 -0
- package/skills/dignified-python/versions/python-3.13.md +657 -0
- package/skills/dispatching-parallel-agents/SKILL.md +182 -0
- package/skills/documentation-and-adrs/SKILL.md +278 -0
- package/skills/documentation-sync/SKILL.md +76 -0
- package/skills/documentation-writer/SKILL.md +50 -0
- package/skills/documentation-writer/agents/verdent.yaml +10 -0
- package/skills/documentation-writer/assets/icon-dark.png +0 -0
- package/skills/documentation-writer/assets/icon-light.png +0 -0
- package/skills/docx/SKILL.md +186 -0
- package/skills/docx/agents/verdent.yaml +9 -0
- package/skills/docx/assets/docx.png +0 -0
- package/skills/docx/assets/icon-dark.png +0 -0
- package/skills/docx/assets/icon-light.png +0 -0
- package/skills/docx/references/creation-guide.md +309 -0
- package/skills/docx/references/xml-editing-guide.md +237 -0
- package/skills/docx/scripts/docx_tool.py +164 -0
- package/skills/docx/scripts/fixtures/comments.xml +3 -0
- package/skills/docx/scripts/fixtures/commentsExtended.xml +3 -0
- package/skills/docx/scripts/fixtures/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/fixtures/commentsIds.xml +3 -0
- package/skills/docx/scripts/fixtures/people.xml +3 -0
- package/skills/docx/scripts/internals/__init__.py +0 -0
- package/skills/docx/scripts/internals/content.py +307 -0
- package/skills/docx/scripts/internals/integrity/__init__.py +0 -0
- package/skills/docx/scripts/internals/integrity/foundation.py +559 -0
- package/skills/docx/scripts/internals/integrity/orchestrator.py +66 -0
- package/skills/docx/scripts/internals/integrity/revision_checker.py +181 -0
- package/skills/docx/scripts/internals/integrity/schema_checker.py +294 -0
- package/skills/docx/scripts/internals/packaging.py +193 -0
- package/skills/docx/scripts/internals/preprocessing/__init__.py +0 -0
- package/skills/docx/scripts/internals/preprocessing/revision_merger.py +193 -0
- package/skills/docx/scripts/internals/preprocessing/run_consolidator.py +179 -0
- package/skills/docx/scripts/internals/runtime/__init__.py +0 -0
- package/skills/docx/scripts/internals/runtime/converter.py +184 -0
- package/skills/docx/scripts/internals/runtime/renderer.py +60 -0
- package/skills/docx/scripts/internals/runtime/revision_acceptor.py +122 -0
- package/skills/docx/scripts/render_docx.py +296 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/scripts/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/scripts/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/scripts/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/scripts/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/scripts/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/scripts/schemas/mce/mc.xsd +75 -0
- package/skills/docx/scripts/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/scripts/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/scripts/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/scripts/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/scripts/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/scripts/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/scripts/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/doubt-driven-development/SKILL.md +243 -0
- package/skills/e2e-testing-guide/SKILL.md +204 -0
- package/skills/emil-design-eng/SKILL.md +679 -0
- package/skills/environment-and-config/SKILL.md +849 -0
- package/skills/error-handling/SKILL.md +757 -0
- package/skills/excalidraw-diagram-generator/SKILL.md +618 -0
- package/skills/excalidraw-diagram-generator/agents/verdent.yaml +11 -0
- package/skills/excalidraw-diagram-generator/assets/icon-dark.png +0 -0
- package/skills/excalidraw-diagram-generator/assets/icon-light.png +0 -0
- package/skills/excalidraw-diagram-generator/references/element-types.md +497 -0
- package/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +350 -0
- package/skills/excalidraw-diagram-generator/scripts/README.md +193 -0
- package/skills/excalidraw-diagram-generator/scripts/add-arrow.py +312 -0
- package/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +404 -0
- package/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +183 -0
- package/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +334 -0
- package/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +558 -0
- package/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +279 -0
- package/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +662 -0
- package/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +179 -0
- package/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +244 -0
- package/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +145 -0
- package/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +509 -0
- package/skills/executing-plans/SKILL.md +245 -0
- package/skills/figma/LICENSE.txt +202 -0
- package/skills/figma/SKILL.md +53 -0
- package/skills/figma/agents/verdent.yaml +7 -0
- package/skills/figma/assets/figma.png +0 -0
- package/skills/figma/assets/icon-dark.png +0 -0
- package/skills/figma/assets/icon-light.png +0 -0
- package/skills/figma/assets/icon.svg +28 -0
- package/skills/figma/references/figma-mcp-config.md +49 -0
- package/skills/figma/references/figma-tools-and-prompts.md +39 -0
- package/skills/figma-implement-design/LICENSE.txt +202 -0
- package/skills/figma-implement-design/SKILL.md +265 -0
- package/skills/figma-implement-design/agents/verdent.yaml +7 -0
- package/skills/figma-implement-design/assets/figma.png +0 -0
- package/skills/figma-implement-design/assets/icon-dark.png +0 -0
- package/skills/figma-implement-design/assets/icon-light.png +0 -0
- package/skills/figma-implement-design/assets/icon.svg +28 -0
- package/skills/find-docs/SKILL.md +164 -0
- package/skills/find-docs/agents/verdent.yaml +11 -0
- package/skills/find-docs/assets/icon-dark.png +0 -0
- package/skills/find-docs/assets/icon-light.png +0 -0
- package/skills/find-skills/SKILL.md +142 -0
- package/skills/firecrawl/SKILL.md +131 -0
- package/skills/firecrawl/agents/verdent.yaml +11 -0
- package/skills/firecrawl/assets/icon-dark.png +0 -0
- package/skills/firecrawl/assets/icon-light.png +0 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/flutter-architecting-apps/SKILL.md +164 -0
- package/skills/flutter-architecting-apps/agents/verdent.yaml +11 -0
- package/skills/flutter-architecting-apps/assets/icon-dark.png +0 -0
- package/skills/flutter-architecting-apps/assets/icon-light.png +0 -0
- package/skills/frontend-design-pro/SKILL.md +328 -0
- package/skills/frontend-slides/LICENSE +21 -0
- package/skills/frontend-slides/SKILL.md +1169 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +561 -0
- package/skills/frontend-slides/agents/verdent.yaml +7 -0
- package/skills/frontend-slides/assets/icon-dark.png +0 -0
- package/skills/frontend-slides/assets/icon-light.png +0 -0
- package/skills/gh-cli/SKILL.md +2192 -0
- package/skills/gh-cli/agents/verdent.yaml +12 -0
- package/skills/gh-cli/assets/icon-dark.png +0 -0
- package/skills/gh-cli/assets/icon-light.png +0 -0
- package/skills/git-commit/SKILL.md +129 -0
- package/skills/git-commit/agents/verdent.yaml +11 -0
- package/skills/git-commit/assets/icon-dark.png +0 -0
- package/skills/git-commit/assets/icon-light.png +0 -0
- package/skills/git-workflow-and-versioning/SKILL.md +300 -0
- package/skills/graphql-operations/SKILL.md +247 -0
- package/skills/graphql-operations/agents/verdent.yaml +11 -0
- package/skills/graphql-operations/assets/icon-dark.png +0 -0
- package/skills/graphql-operations/assets/icon-light.png +0 -0
- package/skills/graphql-operations/references/fragments.md +536 -0
- package/skills/graphql-operations/references/mutations.md +435 -0
- package/skills/graphql-operations/references/queries.md +504 -0
- package/skills/graphql-operations/references/tooling.md +404 -0
- package/skills/graphql-operations/references/variables.md +440 -0
- package/skills/graphql-schema/SKILL.md +175 -0
- package/skills/graphql-schema/agents/verdent.yaml +11 -0
- package/skills/graphql-schema/assets/icon-dark.png +0 -0
- package/skills/graphql-schema/assets/icon-light.png +0 -0
- package/skills/graphql-schema/references/errors.md +388 -0
- package/skills/graphql-schema/references/naming.md +400 -0
- package/skills/graphql-schema/references/pagination.md +396 -0
- package/skills/graphql-schema/references/security.md +484 -0
- package/skills/graphql-schema/references/types.md +445 -0
- package/skills/hugging-face-model-trainer/SKILL.md +722 -0
- package/skills/hugging-face-model-trainer/agents/verdent.yaml +12 -0
- package/skills/hugging-face-model-trainer/assets/icon-dark.png +0 -0
- package/skills/hugging-face-model-trainer/assets/icon-light.png +0 -0
- package/skills/hugging-face-model-trainer/references/gguf_conversion.md +296 -0
- package/skills/hugging-face-model-trainer/references/hardware_guide.md +283 -0
- package/skills/hugging-face-model-trainer/references/hub_saving.md +364 -0
- package/skills/hugging-face-model-trainer/references/local_training_macos.md +231 -0
- package/skills/hugging-face-model-trainer/references/reliability_principles.md +371 -0
- package/skills/hugging-face-model-trainer/references/trackio_guide.md +189 -0
- package/skills/hugging-face-model-trainer/references/training_methods.md +150 -0
- package/skills/hugging-face-model-trainer/references/training_patterns.md +203 -0
- package/skills/hugging-face-model-trainer/references/troubleshooting.md +282 -0
- package/skills/hugging-face-model-trainer/references/unsloth.md +313 -0
- package/skills/hugging-face-model-trainer/scripts/convert_to_gguf.py +424 -0
- package/skills/hugging-face-model-trainer/scripts/dataset_inspector.py +417 -0
- package/skills/hugging-face-model-trainer/scripts/estimate_cost.py +150 -0
- package/skills/hugging-face-model-trainer/scripts/train_dpo_example.py +106 -0
- package/skills/hugging-face-model-trainer/scripts/train_grpo_example.py +89 -0
- package/skills/hugging-face-model-trainer/scripts/train_sft_example.py +122 -0
- package/skills/hugging-face-model-trainer/scripts/unsloth_sft_example.py +512 -0
- package/skills/imagegen/LICENSE.txt +201 -0
- package/skills/imagegen/SKILL.md +180 -0
- package/skills/imagegen/agents/verdent.yaml +11 -0
- package/skills/imagegen/assets/icon-dark.png +0 -0
- package/skills/imagegen/assets/icon-light.png +0 -0
- package/skills/imagegen/assets/imagegen-small.svg +5 -0
- package/skills/imagegen/assets/imagegen.png +0 -0
- package/skills/imagegen/references/cli.md +132 -0
- package/skills/imagegen/references/image-api.md +36 -0
- package/skills/imagegen/references/network-notes.md +28 -0
- package/skills/imagegen/references/prompting.md +81 -0
- package/skills/imagegen/references/sample-prompts.md +384 -0
- package/skills/imagegen/scripts/image_gen.py +876 -0
- package/skills/impeccable/SKILL.md +450 -0
- package/skills/impeccable/reference/adapt.md +190 -0
- package/skills/impeccable/reference/animate.md +175 -0
- package/skills/impeccable/reference/audit.md +133 -0
- package/skills/impeccable/reference/bolder.md +113 -0
- package/skills/impeccable/reference/brand.md +114 -0
- package/skills/impeccable/reference/clarify.md +174 -0
- package/skills/impeccable/reference/cognitive-load.md +106 -0
- package/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/skills/impeccable/reference/colorize.md +154 -0
- package/skills/impeccable/reference/craft.md +193 -0
- package/skills/impeccable/reference/critique.md +213 -0
- package/skills/impeccable/reference/delight.md +302 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/document.md +427 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +347 -0
- package/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/skills/impeccable/reference/interaction-design.md +195 -0
- package/skills/impeccable/reference/layout.md +141 -0
- package/skills/impeccable/reference/live.md +622 -0
- package/skills/impeccable/reference/motion-design.md +109 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +130 -0
- package/skills/impeccable/reference/personas.md +179 -0
- package/skills/impeccable/reference/polish.md +233 -0
- package/skills/impeccable/reference/product.md +62 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/responsive-design.md +114 -0
- package/skills/impeccable/reference/shape.md +151 -0
- package/skills/impeccable/reference/spatial-design.md +100 -0
- package/skills/impeccable/reference/teach.md +156 -0
- package/skills/impeccable/reference/typeset.md +124 -0
- package/skills/impeccable/reference/typography.md +159 -0
- package/skills/impeccable/reference/ux-writing.md +107 -0
- package/skills/impeccable/references/A11Y-PATTERNS.md +233 -0
- package/skills/impeccable/references/WCAG.md +191 -0
- package/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/impeccable-paths.mjs +105 -0
- package/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +4860 -0
- package/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/skills/impeccable/scripts/live-server.mjs +836 -0
- package/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/skills/impeccable/scripts/live-status.mjs +47 -0
- package/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/skills/impeccable/scripts/live.mjs +247 -0
- package/skills/impeccable/scripts/load-context.mjs +141 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/pin.mjs +214 -0
- package/skills/improve-codebase-architecture/DEEPENING.md +37 -0
- package/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -0
- package/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
- package/skills/improve-codebase-architecture/SKILL.md +331 -0
- package/skills/incident-response/SKILL.md +97 -0
- package/skills/interview-me/SKILL.md +221 -0
- package/skills/knowledge-base-update/SKILL.md +90 -0
- package/skills/langchain-rag/SKILL.md +522 -0
- package/skills/langchain-rag/agents/verdent.yaml +12 -0
- package/skills/langchain-rag/assets/icon-dark.png +0 -0
- package/skills/langchain-rag/assets/icon-light.png +0 -0
- package/skills/linear/LICENSE.txt +202 -0
- package/skills/linear/SKILL.md +102 -0
- package/skills/linear/agents/verdent.yaml +7 -0
- package/skills/linear/assets/icon-dark.png +0 -0
- package/skills/linear/assets/icon-light.png +0 -0
- package/skills/linear/assets/linear.png +0 -0
- package/skills/localization-hub/ai-batch.md +23 -0
- package/skills/localization-hub/key-naming.md +15 -0
- package/skills/localization-hub/route-slugs.md +14 -0
- package/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/mcp-builder/SKILL.md +260 -0
- package/skills/mcp-builder/agents/verdent.yaml +7 -0
- package/skills/mcp-builder/assets/icon-dark.png +0 -0
- package/skills/mcp-builder/assets/icon-light.png +0 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +269 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +980 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +737 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/netlify-deploy/LICENSE.txt +201 -0
- package/skills/netlify-deploy/SKILL.md +261 -0
- package/skills/netlify-deploy/agents/verdent.yaml +7 -0
- package/skills/netlify-deploy/assets/icon-dark.png +0 -0
- package/skills/netlify-deploy/assets/icon-light.png +0 -0
- package/skills/netlify-deploy/assets/netlify.png +0 -0
- package/skills/netlify-deploy/references/cli-commands.md +162 -0
- package/skills/netlify-deploy/references/deployment-patterns.md +319 -0
- package/skills/netlify-deploy/references/netlify-toml.md +259 -0
- package/skills/nexus-mapper/SKILL.md +314 -0
- package/skills/nexus-mapper/references/language-customization.md +164 -0
- package/skills/nexus-mapper/references/output-schema.md +298 -0
- package/skills/nexus-mapper/references/probe-protocol.md +246 -0
- package/skills/nexus-mapper/scripts/extract_ast.py +705 -0
- package/skills/nexus-mapper/scripts/git_detective.py +194 -0
- package/skills/nexus-mapper/scripts/languages.json +127 -0
- package/skills/nexus-mapper/scripts/query_graph.py +556 -0
- package/skills/nexus-mapper/scripts/requirements.txt +6 -0
- package/skills/notion-spec-to-implementation/LICENSE.txt +7 -0
- package/skills/notion-spec-to-implementation/SKILL.md +67 -0
- package/skills/notion-spec-to-implementation/agents/verdent.yaml +7 -0
- package/skills/notion-spec-to-implementation/assets/icon-dark.png +0 -0
- package/skills/notion-spec-to-implementation/assets/icon-light.png +0 -0
- package/skills/notion-spec-to-implementation/assets/notion.png +0 -0
- package/skills/notion-spec-to-implementation/evaluations/README.md +130 -0
- package/skills/notion-spec-to-implementation/evaluations/basic-spec-implementation.json +31 -0
- package/skills/notion-spec-to-implementation/evaluations/spec-to-tasks.json +34 -0
- package/skills/notion-spec-to-implementation/examples/api-feature.md +511 -0
- package/skills/notion-spec-to-implementation/examples/database-migration.md +89 -0
- package/skills/notion-spec-to-implementation/examples/ui-component.md +78 -0
- package/skills/notion-spec-to-implementation/reference/milestone-summary-template.md +31 -0
- package/skills/notion-spec-to-implementation/reference/progress-tracking.md +507 -0
- package/skills/notion-spec-to-implementation/reference/progress-update-template.md +29 -0
- package/skills/notion-spec-to-implementation/reference/quick-implementation-plan.md +30 -0
- package/skills/notion-spec-to-implementation/reference/spec-parsing.md +406 -0
- package/skills/notion-spec-to-implementation/reference/standard-implementation-plan.md +170 -0
- package/skills/notion-spec-to-implementation/reference/task-creation-template.md +40 -0
- package/skills/notion-spec-to-implementation/reference/task-creation.md +467 -0
- package/skills/pdf/LICENSE.txt +201 -0
- package/skills/pdf/SKILL.md +715 -0
- package/skills/pdf/agents/verdent.yaml +9 -0
- package/skills/pdf/assets/icon-dark.png +0 -0
- package/skills/pdf/assets/icon-light.png +0 -0
- package/skills/pdf/assets/pdf.png +0 -0
- package/skills/pdf/reference.md +221 -0
- package/skills/performance/SKILL.md +400 -0
- package/skills/playwright/LICENSE.txt +201 -0
- package/skills/playwright/NOTICE.txt +14 -0
- package/skills/playwright/SKILL.md +151 -0
- package/skills/playwright/agents/verdent.yaml +7 -0
- package/skills/playwright/assets/icon-dark.png +0 -0
- package/skills/playwright/assets/icon-light.png +0 -0
- package/skills/playwright/assets/playwright.png +0 -0
- package/skills/playwright/references/cli.md +116 -0
- package/skills/playwright/references/workflows.md +95 -0
- package/skills/playwright/scripts/playwright_cli.sh +25 -0
- package/skills/playwriter/SKILL.md +69 -0
- package/skills/playwriter/agents/verdent.yaml +7 -0
- package/skills/playwriter/assets/icon-dark.png +0 -0
- package/skills/playwriter/assets/icon-light.png +0 -0
- package/skills/pptx/SKILL.md +302 -0
- package/skills/pptx/agents/verdent.yaml +9 -0
- package/skills/pptx/assets/icon-dark.png +0 -0
- package/skills/pptx/assets/icon-light.png +0 -0
- package/skills/pptx/references/generate-with-js.md +412 -0
- package/skills/pptx/references/modify-workflow.md +157 -0
- package/skills/pptx/references/python-charts.md +91 -0
- package/skills/pptx/scripts/check_env.py +207 -0
- package/skills/pptx/scripts/deck.py +161 -0
- package/skills/pptx/scripts/internals/__init__.py +0 -0
- package/skills/pptx/scripts/internals/cleanup.py +194 -0
- package/skills/pptx/scripts/internals/content.py +62 -0
- package/skills/pptx/scripts/internals/create.py +122 -0
- package/skills/pptx/scripts/internals/gridshot.py +181 -0
- package/skills/pptx/scripts/internals/imaging.py +77 -0
- package/skills/pptx/scripts/internals/integrity/__init__.py +0 -0
- package/skills/pptx/scripts/internals/integrity/checks.py +318 -0
- package/skills/pptx/scripts/internals/packaging.py +127 -0
- package/skills/pptx/scripts/internals/runtime/__init__.py +0 -0
- package/skills/pptx/scripts/internals/runtime/converter.py +154 -0
- package/skills/pptx/scripts/internals/structure.py +162 -0
- package/skills/pr-creator/SKILL.md +98 -0
- package/skills/pr-creator/agents/verdent.yaml +11 -0
- package/skills/pr-creator/assets/icon-dark.png +0 -0
- package/skills/pr-creator/assets/icon-light.png +0 -0
- package/skills/prd/SKILL.md +148 -0
- package/skills/prd/agents/verdent.yaml +11 -0
- package/skills/prd/assets/icon-dark.png +0 -0
- package/skills/prd/assets/icon-light.png +0 -0
- package/skills/prismx-skill-gateway/SKILL.md +179 -0
- package/skills/prismx-skill-gateway/references/installed-skills.md +38 -0
- package/skills/prismx-skills-catalog/SKILL.md +51 -0
- package/skills/prismx-skills-catalog/references/inventory.json +1092 -0
- package/skills/prompt-enhancer/SKILL.md +90 -0
- package/skills/react-native-best-practices/SKILL.md +241 -0
- package/skills/react-native-best-practices/agents/verdent.yaml +11 -0
- package/skills/react-native-best-practices/assets/icon-dark.png +0 -0
- package/skills/react-native-best-practices/assets/icon-light.png +0 -0
- package/skills/react-native-best-practices/references/bundle-analyze-app.md +211 -0
- package/skills/react-native-best-practices/references/bundle-analyze-js.md +262 -0
- package/skills/react-native-best-practices/references/bundle-barrel-exports.md +248 -0
- package/skills/react-native-best-practices/references/bundle-code-splitting.md +224 -0
- package/skills/react-native-best-practices/references/bundle-hermes-mmap.md +167 -0
- package/skills/react-native-best-practices/references/bundle-library-size.md +177 -0
- package/skills/react-native-best-practices/references/bundle-native-assets.md +214 -0
- package/skills/react-native-best-practices/references/bundle-r8-android.md +225 -0
- package/skills/react-native-best-practices/references/bundle-tree-shaking.md +214 -0
- package/skills/react-native-best-practices/references/images/bundle-treemap-source-map-explorer.png +0 -0
- package/skills/react-native-best-practices/references/images/controlled-textinput-pingpong.png +0 -0
- package/skills/react-native-best-practices/references/images/devtools-flamegraph.png +0 -0
- package/skills/react-native-best-practices/references/images/emerge-xray-ios.png +0 -0
- package/skills/react-native-best-practices/references/images/expo-atlas-treemap.png +0 -0
- package/skills/react-native-best-practices/references/images/flashlight-flatlist-vs-flashlist.png +0 -0
- package/skills/react-native-best-practices/references/images/fps-drop-graph.png +0 -0
- package/skills/react-native-best-practices/references/images/memory-heap-snapshot.png +0 -0
- package/skills/react-native-best-practices/references/images/tti-warm-start-diagram.png +0 -0
- package/skills/react-native-best-practices/references/images/view-hierarchy-flattening.png +0 -0
- package/skills/react-native-best-practices/references/images/xcode-instruments-templates.png +0 -0
- package/skills/react-native-best-practices/references/images/xcode-thread-view.png +0 -0
- package/skills/react-native-best-practices/references/js-animations-reanimated.md +254 -0
- package/skills/react-native-best-practices/references/js-atomic-state.md +245 -0
- package/skills/react-native-best-practices/references/js-concurrent-react.md +236 -0
- package/skills/react-native-best-practices/references/js-lists-flatlist-flashlist.md +236 -0
- package/skills/react-native-best-practices/references/js-measure-fps.md +180 -0
- package/skills/react-native-best-practices/references/js-memory-leaks.md +205 -0
- package/skills/react-native-best-practices/references/js-profile-react.md +161 -0
- package/skills/react-native-best-practices/references/js-react-compiler.md +368 -0
- package/skills/react-native-best-practices/references/js-uncontrolled-components.md +216 -0
- package/skills/react-native-best-practices/references/native-android-16kb-alignment.md +113 -0
- package/skills/react-native-best-practices/references/native-measure-tti.md +262 -0
- package/skills/react-native-best-practices/references/native-memory-leaks.md +240 -0
- package/skills/react-native-best-practices/references/native-memory-patterns.md +274 -0
- package/skills/react-native-best-practices/references/native-platform-setup.md +110 -0
- package/skills/react-native-best-practices/references/native-profiling.md +176 -0
- package/skills/react-native-best-practices/references/native-sdks-over-polyfills.md +183 -0
- package/skills/react-native-best-practices/references/native-threading-model.md +234 -0
- package/skills/react-native-best-practices/references/native-turbo-modules.md +292 -0
- package/skills/react-native-best-practices/references/native-view-flattening.md +201 -0
- package/skills/redis-development/FULL_GUIDE.md +2216 -0
- package/skills/redis-development/SKILL.md +124 -0
- package/skills/redis-development/agents/verdent.yaml +12 -0
- package/skills/redis-development/assets/icon-dark.png +0 -0
- package/skills/redis-development/assets/icon-light.png +0 -0
- package/skills/redis-development/assets/logo.png +0 -0
- package/skills/redis-development/rules/_contributing.md +97 -0
- package/skills/redis-development/rules/_sections.md +50 -0
- package/skills/redis-development/rules/_template.md +52 -0
- package/skills/redis-development/rules/cluster-hash-tags.md +78 -0
- package/skills/redis-development/rules/cluster-read-replicas.md +55 -0
- package/skills/redis-development/rules/conn-blocking.md +75 -0
- package/skills/redis-development/rules/conn-client-cache.md +70 -0
- package/skills/redis-development/rules/conn-pipelining.md +58 -0
- package/skills/redis-development/rules/conn-pooling.md +71 -0
- package/skills/redis-development/rules/conn-timeouts.md +41 -0
- package/skills/redis-development/rules/data-choose-structure.md +76 -0
- package/skills/redis-development/rules/data-hash-field-expiry.md +62 -0
- package/skills/redis-development/rules/data-incr.md +76 -0
- package/skills/redis-development/rules/data-key-naming.md +62 -0
- package/skills/redis-development/rules/data-transactions.md +74 -0
- package/skills/redis-development/rules/json-partial-updates.md +49 -0
- package/skills/redis-development/rules/json-vs-hash.md +105 -0
- package/skills/redis-development/rules/observe-commands.md +53 -0
- package/skills/redis-development/rules/observe-metrics.md +39 -0
- package/skills/redis-development/rules/ram-limits.md +42 -0
- package/skills/redis-development/rules/ram-ttl.md +55 -0
- package/skills/redis-development/rules/rqe-dialect.md +47 -0
- package/skills/redis-development/rules/rqe-field-types.md +81 -0
- package/skills/redis-development/rules/rqe-index-creation.md +73 -0
- package/skills/redis-development/rules/rqe-index-management.md +49 -0
- package/skills/redis-development/rules/rqe-query-optimization.md +49 -0
- package/skills/redis-development/rules/rqe-skip-initial-scan.md +82 -0
- package/skills/redis-development/rules/security-acls.md +41 -0
- package/skills/redis-development/rules/security-auth.md +78 -0
- package/skills/redis-development/rules/security-network.md +52 -0
- package/skills/redis-development/rules/semantic-cache-best-practices.md +72 -0
- package/skills/redis-development/rules/semantic-cache-langcache-usage.md +86 -0
- package/skills/redis-development/rules/stream-choosing-pattern.md +44 -0
- package/skills/redis-development/rules/vector-algorithm-choice.md +60 -0
- package/skills/redis-development/rules/vector-hybrid-search.md +49 -0
- package/skills/redis-development/rules/vector-index-creation.md +83 -0
- package/skills/redis-development/rules/vector-rag-pattern.md +51 -0
- package/skills/refactor/agents/verdent.yaml +11 -0
- package/skills/refactor/assets/icon-dark.png +0 -0
- package/skills/refactor/assets/icon-light.png +0 -0
- package/skills/runtime-inspector/SKILL.md +99 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/screenshot/LICENSE.txt +201 -0
- package/skills/screenshot/SKILL.md +271 -0
- package/skills/screenshot/agents/verdent.yaml +7 -0
- package/skills/screenshot/assets/icon-dark.png +0 -0
- package/skills/screenshot/assets/icon-light.png +0 -0
- package/skills/screenshot/assets/screenshot.png +0 -0
- package/skills/screenshot/scripts/ensure_macos_permissions.sh +54 -0
- package/skills/screenshot/scripts/macos_display_info.swift +22 -0
- package/skills/screenshot/scripts/macos_permissions.swift +40 -0
- package/skills/screenshot/scripts/macos_window_info.swift +126 -0
- package/skills/screenshot/scripts/take_screenshot.ps1 +163 -0
- package/skills/screenshot/scripts/take_screenshot.py +585 -0
- package/skills/security-and-hardening/SKILL.md +349 -0
- package/skills/security-best-practices/LICENSE.txt +201 -0
- package/skills/security-best-practices/SKILL.md +91 -0
- package/skills/security-best-practices/agents/verdent.yaml +7 -0
- package/skills/security-best-practices/assets/icon-dark.png +0 -0
- package/skills/security-best-practices/assets/icon-light.png +0 -0
- package/skills/security-best-practices/references/golang-general-backend-security.md +988 -0
- package/skills/security-best-practices/references/javascript-express-web-server-security.md +1151 -0
- package/skills/security-best-practices/references/javascript-general-web-frontend-security.md +725 -0
- package/skills/security-best-practices/references/javascript-jquery-web-frontend-security.md +672 -0
- package/skills/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1138 -0
- package/skills/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +975 -0
- package/skills/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +789 -0
- package/skills/security-best-practices/references/python-django-web-server-security.md +880 -0
- package/skills/security-best-practices/references/python-fastapi-web-server-security.md +1030 -0
- package/skills/security-best-practices/references/python-flask-web-server-security.md +835 -0
- package/skills/security-ownership-map/LICENSE.txt +201 -0
- package/skills/security-ownership-map/SKILL.md +212 -0
- package/skills/security-ownership-map/agents/verdent.yaml +12 -0
- package/skills/security-ownership-map/assets/icon-dark.png +0 -0
- package/skills/security-ownership-map/assets/icon-light.png +0 -0
- package/skills/security-ownership-map/references/neo4j-import.md +60 -0
- package/skills/security-ownership-map/scripts/build_ownership_map.py +956 -0
- package/skills/security-ownership-map/scripts/community_maintainers.py +544 -0
- package/skills/security-ownership-map/scripts/query_ownership.py +483 -0
- package/skills/security-ownership-map/scripts/run_ownership_map.py +200 -0
- package/skills/security-threat-model/LICENSE.txt +201 -0
- package/skills/security-threat-model/SKILL.md +94 -0
- package/skills/security-threat-model/agents/verdent.yaml +7 -0
- package/skills/security-threat-model/assets/icon-dark.png +0 -0
- package/skills/security-threat-model/assets/icon-light.png +0 -0
- package/skills/security-threat-model/references/prompt-template.md +254 -0
- package/skills/security-threat-model/references/security-controls-and-assets.md +35 -0
- package/skills/seo-audit/SKILL.md +527 -0
- package/skills/seo-audit/evals/evals.json +136 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/international-seo.md +230 -0
- package/skills/sequential-thinking/SKILL.md +224 -0
- package/skills/session-context-primer/SKILL.md +69 -0
- package/skills/shipping-and-launch/SKILL.md +309 -0
- package/skills/source-driven-development/SKILL.md +194 -0
- package/skills/spec-writer/SKILL.md +200 -0
- package/skills/speech/LICENSE.txt +201 -0
- package/skills/speech/SKILL.md +150 -0
- package/skills/speech/agents/verdent.yaml +12 -0
- package/skills/speech/assets/icon-dark.png +0 -0
- package/skills/speech/assets/icon-light.png +0 -0
- package/skills/speech/assets/speech-small.svg +3 -0
- package/skills/speech/assets/speech.png +0 -0
- package/skills/speech/references/accessibility.md +32 -0
- package/skills/speech/references/audio-api.md +31 -0
- package/skills/speech/references/cli.md +99 -0
- package/skills/speech/references/ivr.md +32 -0
- package/skills/speech/references/narration.md +31 -0
- package/skills/speech/references/network-notes.md +28 -0
- package/skills/speech/references/prompting.md +38 -0
- package/skills/speech/references/sample-prompts.md +44 -0
- package/skills/speech/references/voice-directions.md +80 -0
- package/skills/speech/references/voiceover.md +31 -0
- package/skills/speech/scripts/text_to_speech.py +528 -0
- package/skills/system-architect/SKILL.md +677 -0
- package/skills/system-designer/SKILL.md +601 -0
- package/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/task-planner/SKILL.md +699 -0
- package/skills/task-reviewer/SKILL.md +387 -0
- package/skills/task-skill-router/SKILL.md +105 -0
- package/skills/tech-evaluator/SKILL.md +181 -0
- package/skills/tech-evaluator/references/ADR_TEMPLATE.md +80 -0
- package/skills/tech-evaluator/scripts/evaluate_matrix.py +190 -0
- package/skills/test-driven-development/SKILL.md +383 -0
- package/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/theme-factory/SKILL.md +64 -0
- package/skills/theme-factory/agents/verdent.yaml +11 -0
- package/skills/theme-factory/assets/icon-dark.png +0 -0
- package/skills/theme-factory/assets/icon-light.png +0 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/transcribe/LICENSE.txt +201 -0
- package/skills/transcribe/SKILL.md +86 -0
- package/skills/transcribe/agents/verdent.yaml +12 -0
- package/skills/transcribe/assets/icon-dark.png +0 -0
- package/skills/transcribe/assets/icon-light.png +0 -0
- package/skills/transcribe/assets/transcribe-small.svg +3 -0
- package/skills/transcribe/assets/transcribe.png +0 -0
- package/skills/transcribe/references/api.md +8 -0
- package/skills/transcribe/scripts/transcribe_diarize.py +276 -0
- package/skills/vercel-composition-patterns/FULL_GUIDE.md +946 -0
- package/skills/vercel-composition-patterns/SKILL.md +92 -0
- package/skills/vercel-composition-patterns/agents/verdent.yaml +12 -0
- package/skills/vercel-composition-patterns/assets/icon-dark.png +0 -0
- package/skills/vercel-composition-patterns/assets/icon-light.png +0 -0
- package/skills/vercel-composition-patterns/rules/_sections.md +29 -0
- package/skills/vercel-composition-patterns/rules/_template.md +24 -0
- package/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/vercel-deploy/LICENSE.txt +21 -0
- package/skills/vercel-deploy/SKILL.md +75 -0
- package/skills/vercel-deploy/agents/verdent.yaml +7 -0
- package/skills/vercel-deploy/assets/icon-dark.png +0 -0
- package/skills/vercel-deploy/assets/icon-light.png +0 -0
- package/skills/vercel-deploy/assets/vercel.png +0 -0
- package/skills/vercel-deploy/scripts/deploy.sh +301 -0
- package/skills/vercel-react-best-practices/FULL_GUIDE.md +3254 -0
- package/skills/vercel-react-best-practices/SKILL.md +144 -0
- package/skills/vercel-react-best-practices/agents/verdent.yaml +12 -0
- package/skills/vercel-react-best-practices/assets/icon-dark.png +0 -0
- package/skills/vercel-react-best-practices/assets/icon-light.png +0 -0
- package/skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +142 -0
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/skills/verdent-image-cli/SKILL.md +218 -0
- package/skills/verdent-image-cli/agents/verdent.yaml +11 -0
- package/skills/verdent-image-cli/assets/icon-dark.png +0 -0
- package/skills/verdent-image-cli/assets/icon-light.png +0 -0
- package/skills/verdent-skills-catalog/SKILL.md +72 -0
- package/skills/verdent-skills-catalog/references/categories.json +158 -0
- package/skills/verdent-skills-catalog/references/inventory.json +493 -0
- package/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/web-quality-audit/SKILL.md +172 -0
- package/skills/web-quality-audit/scripts/analyze.sh +113 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +302 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +110 -0
- package/skills/workers-best-practices/SKILL.md +132 -0
- package/skills/workers-best-practices/agents/verdent.yaml +11 -0
- package/skills/workers-best-practices/assets/icon-dark.png +0 -0
- package/skills/workers-best-practices/assets/icon-light.png +0 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +463 -0
- package/skills/xlsx/SKILL.md +318 -0
- package/skills/xlsx/agents/verdent.yaml +9 -0
- package/skills/xlsx/assets/icon-dark.png +0 -0
- package/skills/xlsx/assets/icon-light.png +0 -0
- package/skills/xlsx/assets/spreadsheet.png +0 -0
- package/skills/xlsx/references/advanced-analysis.md +272 -0
- package/skills/xlsx/references/examples/openpyxl/create_basic_spreadsheet.py +51 -0
- package/skills/xlsx/references/examples/openpyxl/create_spreadsheet_with_styling.py +96 -0
- package/skills/xlsx/references/examples/openpyxl/read_existing_spreadsheet.py +59 -0
- package/skills/xlsx/references/examples/openpyxl/styling_spreadsheet.py +79 -0
- package/skills/xlsx/scripts/formula_engine.py +219 -0
- package/skills/xlsx/scripts/profile.py +62 -0
- package/src/commands/init.js +27 -3
- package/src/commands/pipeline.js +31 -0
- package/src/commands/recover.js +62 -0
- package/src/commands/route.js +7 -0
- package/src/commands/scaffold.js +7 -1
- package/src/commands/skill.js +114 -0
- package/src/commands/ui.js +50 -0
- package/src/commands/upgrade.js +2 -2
- package/src/lib/capability-router.js +4 -3
- package/src/lib/contract.js +49 -0
- package/src/lib/disabled-skills.js +86 -0
- package/src/lib/doctor.js +32 -1
- package/src/lib/env-flags.js +35 -0
- package/src/lib/execution-policy.js +78 -4
- package/src/lib/explanation.js +159 -0
- package/src/lib/ide-sync.js +4 -3
- package/src/lib/pipeline.js +68 -0
- package/src/lib/recover.js +93 -0
- package/src/lib/registry.js +79 -0
- package/src/lib/route-engine.js +21 -1
- package/src/lib/scaffold/index.js +23 -7
- package/src/lib/scaffold/presets.js +200 -31
- package/src/lib/ui-server.js +139 -0
- package/src/lib/upgrade-matrix.js +16 -1
- package/src/lib/workspace-boundary.js +60 -0
- package/templates/minimal/AGENT.md +10 -1
- package/templates/minimal/GUNLUK.md +12 -0
- package/templates/minimal/docs/conventions/daily-use.md +130 -0
- package/templates/minimal/docs/conventions/task-to-capability-cheatsheet.md +29 -0
- package/templates/minimal/docs/kullanim-kilavuzu.md +374 -0
- package/ui/app.js +167 -0
- package/ui/index.html +75 -0
- package/ui/styles.css +227 -0
- package/workflows/audit.md +143 -0
- package/workflows/blueprint.md +374 -0
- package/workflows/challenge.md +322 -0
- package/workflows/change.md +162 -0
- package/workflows/craft.md +135 -0
- package/workflows/design-system.md +248 -0
- package/workflows/explore.md +226 -0
- package/workflows/forge.md +570 -34
- package/workflows/genesis.md +307 -0
- package/workflows/ingest.md +145 -0
- package/workflows/init.md +216 -0
- package/workflows/probe.md +181 -0
- package/workflows/query-to-page.md +134 -0
- package/workflows/quickstart.md +111 -0
- package/workflows/retro.md +78 -0
- package/workflows/upgrade.md +146 -0
- package/workflows/wiki-lint.md +159 -0
- package/templates/bundle/skills/capability-router/SKILL.md +0 -12
- package/templates/bundle/skills/context-memory-bridge/SKILL.md +0 -17
- package/templates/bundle/skills/localization-hub/SKILL.md +0 -17
- package/templates/bundle/skills/refactor/SKILL.md +0 -17
- package/templates/bundle/skills/systematic-debugging/SKILL.md +0 -19
- package/templates/bundle/workflows/forge.md +0 -51
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-and-hardening
|
|
3
|
+
description: Hardens code against vulnerabilities. Use when handling user input, authentication, data storage, or external integrations. Use when building any feature that accepts untrusted data, manages user sessions, or interacts with third-party services.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security and Hardening
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Security-first development practices for web applications. Treat every external input as hostile, every secret as sacred, and every authorization check as mandatory. Security isn't a phase — it's a constraint on every line of code that touches user data, authentication, or external systems.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- Building anything that accepts user input
|
|
15
|
+
- Implementing authentication or authorization
|
|
16
|
+
- Storing or transmitting sensitive data
|
|
17
|
+
- Integrating with external APIs or services
|
|
18
|
+
- Adding file uploads, webhooks, or callbacks
|
|
19
|
+
- Handling payment or PII data
|
|
20
|
+
|
|
21
|
+
## The Three-Tier Boundary System
|
|
22
|
+
|
|
23
|
+
### Always Do (No Exceptions)
|
|
24
|
+
|
|
25
|
+
- **Validate all external input** at the system boundary (API routes, form handlers)
|
|
26
|
+
- **Parameterize all database queries** — never concatenate user input into SQL
|
|
27
|
+
- **Encode output** to prevent XSS (use framework auto-escaping, don't bypass it)
|
|
28
|
+
- **Use HTTPS** for all external communication
|
|
29
|
+
- **Hash passwords** with bcrypt/scrypt/argon2 (never store plaintext)
|
|
30
|
+
- **Set security headers** (CSP, HSTS, X-Frame-Options, X-Content-Type-Options)
|
|
31
|
+
- **Use httpOnly, secure, sameSite cookies** for sessions
|
|
32
|
+
- **Run `npm audit`** (or equivalent) before every release
|
|
33
|
+
|
|
34
|
+
### Ask First (Requires Human Approval)
|
|
35
|
+
|
|
36
|
+
- Adding new authentication flows or changing auth logic
|
|
37
|
+
- Storing new categories of sensitive data (PII, payment info)
|
|
38
|
+
- Adding new external service integrations
|
|
39
|
+
- Changing CORS configuration
|
|
40
|
+
- Adding file upload handlers
|
|
41
|
+
- Modifying rate limiting or throttling
|
|
42
|
+
- Granting elevated permissions or roles
|
|
43
|
+
|
|
44
|
+
### Never Do
|
|
45
|
+
|
|
46
|
+
- **Never commit secrets** to version control (API keys, passwords, tokens)
|
|
47
|
+
- **Never log sensitive data** (passwords, tokens, full credit card numbers)
|
|
48
|
+
- **Never trust client-side validation** as a security boundary
|
|
49
|
+
- **Never disable security headers** for convenience
|
|
50
|
+
- **Never use `eval()` or `innerHTML`** with user-provided data
|
|
51
|
+
- **Never store sessions in client-accessible storage** (localStorage for auth tokens)
|
|
52
|
+
- **Never expose stack traces** or internal error details to users
|
|
53
|
+
|
|
54
|
+
## OWASP Top 10 Prevention
|
|
55
|
+
|
|
56
|
+
### 1. Injection (SQL, NoSQL, OS Command)
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// BAD: SQL injection via string concatenation
|
|
60
|
+
const query = `SELECT * FROM users WHERE id = '${userId}'`;
|
|
61
|
+
|
|
62
|
+
// GOOD: Parameterized query
|
|
63
|
+
const user = await db.query('SELECT * FROM users WHERE id = $1', [userId]);
|
|
64
|
+
|
|
65
|
+
// GOOD: ORM with parameterized input
|
|
66
|
+
const user = await prisma.user.findUnique({ where: { id: userId } });
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. Broken Authentication
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// Password hashing
|
|
73
|
+
import { hash, compare } from 'bcrypt';
|
|
74
|
+
|
|
75
|
+
const SALT_ROUNDS = 12;
|
|
76
|
+
const hashedPassword = await hash(plaintext, SALT_ROUNDS);
|
|
77
|
+
const isValid = await compare(plaintext, hashedPassword);
|
|
78
|
+
|
|
79
|
+
// Session management
|
|
80
|
+
app.use(session({
|
|
81
|
+
secret: process.env.SESSION_SECRET, // From environment, not code
|
|
82
|
+
resave: false,
|
|
83
|
+
saveUninitialized: false,
|
|
84
|
+
cookie: {
|
|
85
|
+
httpOnly: true, // Not accessible via JavaScript
|
|
86
|
+
secure: true, // HTTPS only
|
|
87
|
+
sameSite: 'lax', // CSRF protection
|
|
88
|
+
maxAge: 24 * 60 * 60 * 1000, // 24 hours
|
|
89
|
+
},
|
|
90
|
+
}));
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 3. Cross-Site Scripting (XSS)
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
// BAD: Rendering user input as HTML
|
|
97
|
+
element.innerHTML = userInput;
|
|
98
|
+
|
|
99
|
+
// GOOD: Use framework auto-escaping (React does this by default)
|
|
100
|
+
return <div>{userInput}</div>;
|
|
101
|
+
|
|
102
|
+
// If you MUST render HTML, sanitize first
|
|
103
|
+
import DOMPurify from 'dompurify';
|
|
104
|
+
const clean = DOMPurify.sanitize(userInput);
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 4. Broken Access Control
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// Always check authorization, not just authentication
|
|
111
|
+
app.patch('/api/tasks/:id', authenticate, async (req, res) => {
|
|
112
|
+
const task = await taskService.findById(req.params.id);
|
|
113
|
+
|
|
114
|
+
// Check that the authenticated user owns this resource
|
|
115
|
+
if (task.ownerId !== req.user.id) {
|
|
116
|
+
return res.status(403).json({
|
|
117
|
+
error: { code: 'FORBIDDEN', message: 'Not authorized to modify this task' }
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Proceed with update
|
|
122
|
+
const updated = await taskService.update(req.params.id, req.body);
|
|
123
|
+
return res.json(updated);
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 5. Security Misconfiguration
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// Security headers (use helmet for Express)
|
|
131
|
+
import helmet from 'helmet';
|
|
132
|
+
app.use(helmet());
|
|
133
|
+
|
|
134
|
+
// Content Security Policy
|
|
135
|
+
app.use(helmet.contentSecurityPolicy({
|
|
136
|
+
directives: {
|
|
137
|
+
defaultSrc: ["'self'"],
|
|
138
|
+
scriptSrc: ["'self'"],
|
|
139
|
+
styleSrc: ["'self'", "'unsafe-inline'"], // Tighten if possible
|
|
140
|
+
imgSrc: ["'self'", 'data:', 'https:'],
|
|
141
|
+
connectSrc: ["'self'"],
|
|
142
|
+
},
|
|
143
|
+
}));
|
|
144
|
+
|
|
145
|
+
// CORS — restrict to known origins
|
|
146
|
+
app.use(cors({
|
|
147
|
+
origin: process.env.ALLOWED_ORIGINS?.split(',') || 'http://localhost:3000',
|
|
148
|
+
credentials: true,
|
|
149
|
+
}));
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 6. Sensitive Data Exposure
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
// Never return sensitive fields in API responses
|
|
156
|
+
function sanitizeUser(user: UserRecord): PublicUser {
|
|
157
|
+
const { passwordHash, resetToken, ...publicFields } = user;
|
|
158
|
+
return publicFields;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Use environment variables for secrets
|
|
162
|
+
const API_KEY = process.env.STRIPE_API_KEY;
|
|
163
|
+
if (!API_KEY) throw new Error('STRIPE_API_KEY not configured');
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Input Validation Patterns
|
|
167
|
+
|
|
168
|
+
### Schema Validation at Boundaries
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import { z } from 'zod';
|
|
172
|
+
|
|
173
|
+
const CreateTaskSchema = z.object({
|
|
174
|
+
title: z.string().min(1).max(200).trim(),
|
|
175
|
+
description: z.string().max(2000).optional(),
|
|
176
|
+
priority: z.enum(['low', 'medium', 'high']).default('medium'),
|
|
177
|
+
dueDate: z.string().datetime().optional(),
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
// Validate at the route handler
|
|
181
|
+
app.post('/api/tasks', async (req, res) => {
|
|
182
|
+
const result = CreateTaskSchema.safeParse(req.body);
|
|
183
|
+
if (!result.success) {
|
|
184
|
+
return res.status(422).json({
|
|
185
|
+
error: {
|
|
186
|
+
code: 'VALIDATION_ERROR',
|
|
187
|
+
message: 'Invalid input',
|
|
188
|
+
details: result.error.flatten(),
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
// result.data is now typed and validated
|
|
193
|
+
const task = await taskService.create(result.data);
|
|
194
|
+
return res.status(201).json(task);
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### File Upload Safety
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
// Restrict file types and sizes
|
|
202
|
+
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
|
|
203
|
+
const MAX_SIZE = 5 * 1024 * 1024; // 5MB
|
|
204
|
+
|
|
205
|
+
function validateUpload(file: UploadedFile) {
|
|
206
|
+
if (!ALLOWED_TYPES.includes(file.mimetype)) {
|
|
207
|
+
throw new ValidationError('File type not allowed');
|
|
208
|
+
}
|
|
209
|
+
if (file.size > MAX_SIZE) {
|
|
210
|
+
throw new ValidationError('File too large (max 5MB)');
|
|
211
|
+
}
|
|
212
|
+
// Don't trust the file extension — check magic bytes if critical
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Triaging npm audit Results
|
|
217
|
+
|
|
218
|
+
Not all audit findings require immediate action. Use this decision tree:
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
npm audit reports a vulnerability
|
|
222
|
+
├── Severity: critical or high
|
|
223
|
+
│ ├── Is the vulnerable code reachable in your app?
|
|
224
|
+
│ │ ├── YES --> Fix immediately (update, patch, or replace the dependency)
|
|
225
|
+
│ │ └── NO (dev-only dep, unused code path) --> Fix soon, but not a blocker
|
|
226
|
+
│ └── Is a fix available?
|
|
227
|
+
│ ├── YES --> Update to the patched version
|
|
228
|
+
│ └── NO --> Check for workarounds, consider replacing the dependency, or add to allowlist with a review date
|
|
229
|
+
├── Severity: moderate
|
|
230
|
+
│ ├── Reachable in production? --> Fix in the next release cycle
|
|
231
|
+
│ └── Dev-only? --> Fix when convenient, track in backlog
|
|
232
|
+
└── Severity: low
|
|
233
|
+
└── Track and fix during regular dependency updates
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Key questions:**
|
|
237
|
+
- Is the vulnerable function actually called in your code path?
|
|
238
|
+
- Is the dependency a runtime dependency or dev-only?
|
|
239
|
+
- Is the vulnerability exploitable given your deployment context (e.g., a server-side vulnerability in a client-only app)?
|
|
240
|
+
|
|
241
|
+
When you defer a fix, document the reason and set a review date.
|
|
242
|
+
|
|
243
|
+
## Rate Limiting
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
import rateLimit from 'express-rate-limit';
|
|
247
|
+
|
|
248
|
+
// General API rate limit
|
|
249
|
+
app.use('/api/', rateLimit({
|
|
250
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
251
|
+
max: 100, // 100 requests per window
|
|
252
|
+
standardHeaders: true,
|
|
253
|
+
legacyHeaders: false,
|
|
254
|
+
}));
|
|
255
|
+
|
|
256
|
+
// Stricter limit for auth endpoints
|
|
257
|
+
app.use('/api/auth/', rateLimit({
|
|
258
|
+
windowMs: 15 * 60 * 1000,
|
|
259
|
+
max: 10, // 10 attempts per 15 minutes
|
|
260
|
+
}));
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Secrets Management
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
.env files:
|
|
267
|
+
├── .env.example → Committed (template with placeholder values)
|
|
268
|
+
├── .env → NOT committed (contains real secrets)
|
|
269
|
+
└── .env.local → NOT committed (local overrides)
|
|
270
|
+
|
|
271
|
+
.gitignore must include:
|
|
272
|
+
.env
|
|
273
|
+
.env.local
|
|
274
|
+
.env.*.local
|
|
275
|
+
*.pem
|
|
276
|
+
*.key
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**Always check before committing:**
|
|
280
|
+
```bash
|
|
281
|
+
# Check for accidentally staged secrets
|
|
282
|
+
git diff --cached | grep -i "password\|secret\|api_key\|token"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Security Review Checklist
|
|
286
|
+
|
|
287
|
+
```markdown
|
|
288
|
+
### Authentication
|
|
289
|
+
- [ ] Passwords hashed with bcrypt/scrypt/argon2 (salt rounds ≥ 12)
|
|
290
|
+
- [ ] Session tokens are httpOnly, secure, sameSite
|
|
291
|
+
- [ ] Login has rate limiting
|
|
292
|
+
- [ ] Password reset tokens expire
|
|
293
|
+
|
|
294
|
+
### Authorization
|
|
295
|
+
- [ ] Every endpoint checks user permissions
|
|
296
|
+
- [ ] Users can only access their own resources
|
|
297
|
+
- [ ] Admin actions require admin role verification
|
|
298
|
+
|
|
299
|
+
### Input
|
|
300
|
+
- [ ] All user input validated at the boundary
|
|
301
|
+
- [ ] SQL queries are parameterized
|
|
302
|
+
- [ ] HTML output is encoded/escaped
|
|
303
|
+
|
|
304
|
+
### Data
|
|
305
|
+
- [ ] No secrets in code or version control
|
|
306
|
+
- [ ] Sensitive fields excluded from API responses
|
|
307
|
+
- [ ] PII encrypted at rest (if applicable)
|
|
308
|
+
|
|
309
|
+
### Infrastructure
|
|
310
|
+
- [ ] Security headers configured (CSP, HSTS, etc.)
|
|
311
|
+
- [ ] CORS restricted to known origins
|
|
312
|
+
- [ ] Dependencies audited for vulnerabilities
|
|
313
|
+
- [ ] Error messages don't expose internals
|
|
314
|
+
```
|
|
315
|
+
## See Also
|
|
316
|
+
|
|
317
|
+
For detailed security checklists and pre-commit verification steps, see `references/security-checklist.md`.
|
|
318
|
+
|
|
319
|
+
## Common Rationalizations
|
|
320
|
+
|
|
321
|
+
| Rationalization | Reality |
|
|
322
|
+
|---|---|
|
|
323
|
+
| "This is an internal tool, security doesn't matter" | Internal tools get compromised. Attackers target the weakest link. |
|
|
324
|
+
| "We'll add security later" | Security retrofitting is 10x harder than building it in. Add it now. |
|
|
325
|
+
| "No one would try to exploit this" | Automated scanners will find it. Security by obscurity is not security. |
|
|
326
|
+
| "The framework handles security" | Frameworks provide tools, not guarantees. You still need to use them correctly. |
|
|
327
|
+
| "It's just a prototype" | Prototypes become production. Security habits from day one. |
|
|
328
|
+
|
|
329
|
+
## Red Flags
|
|
330
|
+
|
|
331
|
+
- User input passed directly to database queries, shell commands, or HTML rendering
|
|
332
|
+
- Secrets in source code or commit history
|
|
333
|
+
- API endpoints without authentication or authorization checks
|
|
334
|
+
- Missing CORS configuration or wildcard (`*`) origins
|
|
335
|
+
- No rate limiting on authentication endpoints
|
|
336
|
+
- Stack traces or internal errors exposed to users
|
|
337
|
+
- Dependencies with known critical vulnerabilities
|
|
338
|
+
|
|
339
|
+
## Verification
|
|
340
|
+
|
|
341
|
+
After implementing security-relevant code:
|
|
342
|
+
|
|
343
|
+
- [ ] `npm audit` shows no critical or high vulnerabilities
|
|
344
|
+
- [ ] No secrets in source code or git history
|
|
345
|
+
- [ ] All user input validated at system boundaries
|
|
346
|
+
- [ ] Authentication and authorization checked on every protected endpoint
|
|
347
|
+
- [ ] Security headers present in response (check with browser DevTools)
|
|
348
|
+
- [ ] Error responses don't expose internal details
|
|
349
|
+
- [ ] Rate limiting active on auth endpoints
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf of
|
|
171
|
+
any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don\'t include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'security-best-practices'
|
|
3
|
+
description: 'Perform language and framework specific security best-practice reviews and suggest improvements. Trigger only when the user explicitly requests security best practices guidance, a security review/report, or secure-by-default coding help. Trigger only for supported languages (python, javascript/typescript, go). Do not trigger for general code review, debugging, or non-security tasks.'
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.0.1
|
|
6
|
+
origin: verdent
|
|
7
|
+
prismx_bundle: verdent
|
|
8
|
+
prismx_imported_at: 2026-05-27
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Security Best Practices
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
This skill provides a description of how to identify the language and frameworks used by the current context, and then to load information from this skill's references directory about the security best practices for this language and or frameworks.
|
|
16
|
+
|
|
17
|
+
This information, if present, can be used to write new secure by default code, or to passively detect major issues within existing code, or (if requested by the user) provide a vulnerability report and suggest fixes.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
The initial step for this skill is to identify ALL languages and ALL frameworks which you are being asked to use or already exist in the scope of the project you are working in. Focus on the primary core frameworks. Often you will want to identify both frontend and backend languages and frameworks.
|
|
22
|
+
|
|
23
|
+
Then check this skill's references directory to see if there are any relevant documentation for the language and or frameworks. Make sure you read ALL reference files which relate to the specific framework or language. The format of the filenames is `<language>-<framework>-<stack>-security.md`. You should also check if there is a `<language>-general-<stack>-security.md` which is agnostic to the framework you may be using.
|
|
24
|
+
|
|
25
|
+
If working on a web application which includes a frontend and a backend, make sure you have checked for reference documents for BOTH the frontend and backend!
|
|
26
|
+
|
|
27
|
+
If you are asked to make a web app which will include both a frontend and backend, but the frontend framework is not specified, also check out `javascript-general-web-frontend-security.md`. It is important that you understand how to secure both the frontend and backend.
|
|
28
|
+
|
|
29
|
+
If no relevant information is available in the skill's references directory, think a little bit about what you know about the language, the framework, and all well known security best practices for it. If you are unsure you can try to search online for documentation on security best practices.
|
|
30
|
+
|
|
31
|
+
From there it can operate in a few ways.
|
|
32
|
+
|
|
33
|
+
1. The primary mode is to just use the information to write secure by default code from this point forward. This is useful for starting a new project or when writing new code.
|
|
34
|
+
|
|
35
|
+
2. The secondary mode is to passively detect vulnerabilities while working in the project and writing code for the user. Critical or very important vulnerabilities or major issues going against security guidance can be flagged and the user can be told about them. This passive mode should focus on the largest impact vulnerabilities and secure defaults.
|
|
36
|
+
|
|
37
|
+
3. The user can ask for a security report or to improve the security of the codebase. In this case a full report should be produced describe anyways the project fails to follow security best practices guidance. The report should be prioritized and have clear sections of severity and urgency. Then offer to start working on fixes for these issues. See #fixes below.
|
|
38
|
+
|
|
39
|
+
## Workflow Decision Tree
|
|
40
|
+
|
|
41
|
+
- If the language/framework is unclear, inspect the repo to determine it and list your evidence.
|
|
42
|
+
- If matching guidance exists in `references/`, load only the relevant files and follow their instructions.
|
|
43
|
+
- If no matching guidance exists, consider if you know any well known security best practices for the chosen language and or frameworks, but if asked to generate a report, let the user know that concrete guidance is not available (you can still generate the report or detect for sure critical vulnerabilities)
|
|
44
|
+
|
|
45
|
+
# Overrides
|
|
46
|
+
|
|
47
|
+
While these references contain the security best practices for languages and frameworks, customers may have cases where they need to bypass or override these practices. Pay attention to specific rules and instructions in the project's documentation and prompt files which may require you to override certain best practices. When overriding a best practice, you MAY report it to the user, but do not fight with them. If a security best practice needs to be bypassed / ignored for some project specific reason, you can also suggest to add documentation about this to the project so it is clear why the best practice is not being followed and to follow that bypass in the future.
|
|
48
|
+
|
|
49
|
+
# Report Format
|
|
50
|
+
|
|
51
|
+
When producing a report, you should write the report as a markdown file in `security_best_practices_report.md` or some other location if provided by the user. You can ask the user where they would like the report to be written to.
|
|
52
|
+
|
|
53
|
+
The report should have a short executive summary at the top.
|
|
54
|
+
|
|
55
|
+
The report should be clearly delineated into multiple sections based on severity of the vulnerability. The report should focus on the most critical findings as these have the highest impact for the user. All findings should be noted with an numeric ID to make them easier to reference.
|
|
56
|
+
|
|
57
|
+
For critical findings include a one sentence impact statement.
|
|
58
|
+
|
|
59
|
+
Once the report is written, also report it to the user directly, although you may be less verbose. You can offer to explain any of the findings or the reasons behind the security best practices guidance if the user wants more info on any findings.
|
|
60
|
+
|
|
61
|
+
Important: When referencing code in the report, make sure to find and include line numbers for the code you are referencing.
|
|
62
|
+
|
|
63
|
+
After you write the report file, summarize the findings to the user.
|
|
64
|
+
|
|
65
|
+
Also tell the user where the final report was written to
|
|
66
|
+
|
|
67
|
+
# Fixes
|
|
68
|
+
|
|
69
|
+
If you produced a report, let the user read the report and ask to begin performing fixes.
|
|
70
|
+
|
|
71
|
+
If you passively found a critical finding, notify the user and ask if they would like you to fix this finding.
|
|
72
|
+
|
|
73
|
+
When producing fixes, focus on fixing a single finding at a time. The fixes should have concise clear comments explaining that the new code is based on the specific security best practice, and perhaps a very short reason why it would be dangerous to not do it in this way.
|
|
74
|
+
|
|
75
|
+
Always consider if the changes you want to make will impact the functionality of the user's code. Consider if the changes may cause regressions with how the project works currently. It is often the case that insecure code is relied on for other reasons (and this is why insecure code lives on for so long). Avoid breaking the user's project as this may make them not want to apply security fixes in the future. It is better to write a well thought out, well informed by the rest of the project, fix, then a quick slapdash change.
|
|
76
|
+
|
|
77
|
+
Always follow any normal change or commit flow the user has configured. If making git commits, provide clear commit messages explaining this is to align with security best practices. Try to avoid bunching a number of unrelated findings into a single commit.
|
|
78
|
+
|
|
79
|
+
Always follow any normal testing flows the user has configured (if any) to confirm that your changes are not introducing regressions. Consider the second order impacts the changes may have and inform the user before making them if there are any.
|
|
80
|
+
|
|
81
|
+
# General Security Advice
|
|
82
|
+
|
|
83
|
+
Below is a few bits of secure coding advice that applies to almost any language or framework.
|
|
84
|
+
|
|
85
|
+
### Avoid Using Incrementing IDs for Public IDs of Resources
|
|
86
|
+
|
|
87
|
+
When assigning an ID for some resource, which will then be used by exposed to the internet, avoid using small auto-incrementing IDs. Use longer, random UUID4 or random hex string instead. This will prevent users from learning the quantity of a resource and being able to guess resource IDs.
|
|
88
|
+
|
|
89
|
+
### A note on TLS
|
|
90
|
+
|
|
91
|
+
While TLS is important for production deployments, most development work will be with TLS disabled or provided by some out-of-scope TLS proxy. Due to this, be very careful about not reporting lack of TLS as a security issue. Also be very careful around use of "secure" cookies. They should only be set if the application will actually be over TLS. If they are set on non-TLS applications (such as when deployed for local dev or testing), it will break the application. You can provide a env or other flag to override setting secure as a way to keep it off until on a TLS production deployment. Additionally avoid recommending HSTS. It is dangerous to use without full understanding of the lasting impacts (can cause major outages and user lockout) and it is not generally recommended for the scope of projects being reviewed by verdent.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
category: Security
|
|
2
|
+
interface:
|
|
3
|
+
display_name: 'Security Best Practices'
|
|
4
|
+
short_description: 'Security reviews and secure-by-default guidance'
|
|
5
|
+
icon_dark: './assets/icon-dark.png'
|
|
6
|
+
icon_light: './assets/icon-light.png'
|
|
7
|
+
default_prompt: 'Review this code for security best practices.'
|
|
Binary file
|
|
Binary file
|