opencode-skills-collection 4.0.53 → 4.0.55
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/bundled-skills/.antigravity-install-manifest.json +3 -2
- package/bundled-skills/00-andruia-consultant/SKILL.md +6 -0
- package/bundled-skills/007/SKILL.md +2 -610
- package/bundled-skills/007/references/detailed-guide.md +647 -0
- package/bundled-skills/10-andruia-skill-smith/SKILL.md +6 -0
- package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +6 -0
- package/bundled-skills/2slides-ppt-generator/SKILL.md +2 -741
- package/bundled-skills/2slides-ppt-generator/references/detailed-guide.md +761 -0
- package/bundled-skills/ab-test-setup/SKILL.md +59 -27
- package/bundled-skills/ab-testing/SKILL.md +1 -1
- package/bundled-skills/acceptance-orchestrator/SKILL.md +6 -0
- package/bundled-skills/accint-commitments/SKILL.md +6 -0
- package/bundled-skills/accint-frames/SKILL.md +6 -0
- package/bundled-skills/accint-solve/SKILL.md +6 -0
- package/bundled-skills/advogado-criminal/SKILL.md +2 -912
- package/bundled-skills/advogado-criminal/references/detailed-guide.md +946 -0
- package/bundled-skills/advogado-especialista/SKILL.md +2 -1071
- package/bundled-skills/advogado-especialista/references/detailed-guide.md +1114 -0
- package/bundled-skills/agent-evaluation/SKILL.md +53 -1102
- package/bundled-skills/agent-evaluation/references/architecture-sketches.md +1112 -0
- package/bundled-skills/agent-memory/SKILL.md +6 -0
- package/bundled-skills/agent-memory-systems/SKILL.md +8 -1042
- package/bundled-skills/agent-memory-systems/references/detailed-guide.md +1088 -0
- package/bundled-skills/agent-squad/SKILL.md +1 -0
- package/bundled-skills/agent-tool-builder/SKILL.md +2 -624
- package/bundled-skills/agent-tool-builder/references/detailed-guide.md +650 -0
- package/bundled-skills/agentic-actions-auditor/SKILL.md +6 -0
- package/bundled-skills/agentmail/SKILL.md +1 -0
- package/bundled-skills/agentphone/SKILL.md +5 -1323
- package/bundled-skills/agentphone/references/detailed-guide.md +1333 -0
- package/bundled-skills/agents-v2-py/SKILL.md +23 -5
- package/bundled-skills/ai-agents-architect/SKILL.md +25 -25
- package/bundled-skills/ai-analyzer/SKILL.md +1 -0
- package/bundled-skills/ai-md/SKILL.md +25 -0
- package/bundled-skills/ai-md/references/detailed-guide.md +512 -0
- package/bundled-skills/ai-product/SKILL.md +2 -726
- package/bundled-skills/ai-product/references/detailed-guide.md +746 -0
- package/bundled-skills/ai-wrapper-product/SKILL.md +2 -641
- package/bundled-skills/ai-wrapper-product/references/detailed-guide.md +659 -0
- package/bundled-skills/airtable-automation/SKILL.md +6 -0
- package/bundled-skills/algolia-search/SKILL.md +2 -893
- package/bundled-skills/algolia-search/references/detailed-guide.md +901 -0
- package/bundled-skills/alpha-vantage/SKILL.md +1 -0
- package/bundled-skills/alternatives-pages/SKILL.md +7 -1
- package/bundled-skills/amazon-alexa/SKILL.md +2 -627
- package/bundled-skills/amazon-alexa/references/detailed-guide.md +644 -0
- package/bundled-skills/analytics/SKILL.md +1 -1
- package/bundled-skills/analytics-product/SKILL.md +57 -44
- package/bundled-skills/analytics-tracking/SKILL.md +21 -12
- package/bundled-skills/analyze-project/SKILL.md +1 -0
- package/bundled-skills/android-dev/SKILL.md +2 -490
- package/bundled-skills/android-dev/references/detailed-guide.md +506 -0
- package/bundled-skills/angular/SKILL.md +4 -783
- package/bundled-skills/angular/references/detailed-guide.md +801 -0
- package/bundled-skills/angular-best-practices/SKILL.md +4 -535
- package/bundled-skills/angular-best-practices/references/detailed-guide.md +549 -0
- package/bundled-skills/angular-state-management/SKILL.md +4 -608
- package/bundled-skills/angular-state-management/references/detailed-guide.md +618 -0
- package/bundled-skills/angular-ui-patterns/SKILL.md +2 -498
- package/bundled-skills/angular-ui-patterns/references/detailed-guide.md +513 -0
- package/bundled-skills/animejs-animation/SKILL.md +6 -0
- package/bundled-skills/anti-deception/SKILL.md +7 -1
- package/bundled-skills/antigravity-design-expert/SKILL.md +6 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +16 -0
- package/bundled-skills/antigravity-workflows/SKILL.md +20 -3
- package/bundled-skills/antigravity-workflows/references/workflow-cards.md +78 -0
- package/bundled-skills/api-analyzer/SKILL.md +1 -1
- package/bundled-skills/api-designer/SKILL.md +1 -1
- package/bundled-skills/api-integration/SKILL.md +1 -1
- package/bundled-skills/api-onboarding/SKILL.md +1 -1
- package/bundled-skills/api-patterns/SKILL.md +19 -8
- package/bundled-skills/api-patterns/api-style.md +2 -2
- package/bundled-skills/api-patterns/auth.md +3 -2
- package/bundled-skills/api-patterns/graphql.md +1 -1
- package/bundled-skills/api-patterns/scripts/api_validator.py +9 -7
- package/bundled-skills/api-patterns/trpc.md +2 -2
- package/bundled-skills/api-patterns/versioning.md +1 -1
- package/bundled-skills/api-sdk-generator/SKILL.md +1 -1
- package/bundled-skills/api-security-best-practices/SKILL.md +179 -879
- package/bundled-skills/apify-actor-development/SKILL.md +1 -0
- package/bundled-skills/apify-actorization/SKILL.md +1 -0
- package/bundled-skills/apify-audience-analysis/SKILL.md +1 -0
- package/bundled-skills/apify-brand-reputation-monitoring/SKILL.md +1 -0
- package/bundled-skills/apify-competitor-intelligence/SKILL.md +1 -0
- package/bundled-skills/apify-content-analytics/SKILL.md +1 -0
- package/bundled-skills/apify-ecommerce/SKILL.md +1 -0
- package/bundled-skills/apify-influencer-discovery/SKILL.md +1 -0
- package/bundled-skills/apify-lead-generation/SKILL.md +1 -0
- package/bundled-skills/apify-market-research/SKILL.md +1 -0
- package/bundled-skills/apify-trend-analysis/SKILL.md +1 -0
- package/bundled-skills/apify-ultimate-scraper/SKILL.md +1 -0
- package/bundled-skills/appium-skill/SKILL.md +1 -1
- package/bundled-skills/apple-notes-search/SKILL.md +6 -0
- package/bundled-skills/application-performance-performance-optimization/SKILL.md +6 -0
- package/bundled-skills/applicationinsights-web-ts/SKILL.md +1 -1
- package/bundled-skills/ask-matt/SKILL.md +5 -0
- package/bundled-skills/ask-questions-if-underspecified/SKILL.md +1 -0
- package/bundled-skills/astropy/SKILL.md +1 -0
- package/bundled-skills/atlas-contract/SKILL.md +117 -0
- package/bundled-skills/atlas-contract/references/detailed-guide.md +572 -0
- package/bundled-skills/audio-transcriber/SKILL.md +2 -425
- package/bundled-skills/audio-transcriber/references/detailed-guide.md +430 -0
- package/bundled-skills/audit-context-building/SKILL.md +1 -0
- package/bundled-skills/auri-core/SKILL.md +5 -562
- package/bundled-skills/auri-core/references/detailed-guide.md +623 -0
- package/bundled-skills/auth-implementation-patterns/SKILL.md +14 -4
- package/bundled-skills/auth-implementation-patterns/resources/implementation-playbook.md +72 -180
- package/bundled-skills/automated-triage/SKILL.md +6 -0
- package/bundled-skills/autonomous-agent-patterns/SKILL.md +4 -741
- package/bundled-skills/autonomous-agent-patterns/references/detailed-guide.md +751 -0
- package/bundled-skills/autonomous-agents/SKILL.md +8 -1010
- package/bundled-skills/autonomous-agents/references/detailed-guide.md +1065 -0
- package/bundled-skills/awareness-stage-mapper/SKILL.md +6 -0
- package/bundled-skills/aws-agentic-ai/SKILL.md +7 -1
- package/bundled-skills/aws-cdk-development/SKILL.md +1 -1
- package/bundled-skills/aws-cost-operations/SKILL.md +1 -1
- package/bundled-skills/aws-mcp-setup/SKILL.md +1 -1
- package/bundled-skills/aws-serverless/SKILL.md +2 -1305
- package/bundled-skills/aws-serverless/references/detailed-guide.md +1340 -0
- package/bundled-skills/aws-serverless-eda/SKILL.md +1 -1
- package/bundled-skills/aws-skills/SKILL.md +6 -0
- package/bundled-skills/aws-sst-development/SKILL.md +7 -1
- package/bundled-skills/awt-e2e-testing/SKILL.md +7 -0
- package/bundled-skills/azure-functions/SKILL.md +2 -1321
- package/bundled-skills/azure-functions/references/detailed-guide.md +1356 -0
- package/bundled-skills/azure-maps-search-dotnet/SKILL.md +2 -482
- package/bundled-skills/azure-maps-search-dotnet/references/detailed-guide.md +496 -0
- package/bundled-skills/azure-search-documents-py/SKILL.md +2 -515
- package/bundled-skills/azure-search-documents-py/references/detailed-guide.md +548 -0
- package/bundled-skills/azure-storage-file-share-ts/SKILL.md +2 -481
- package/bundled-skills/azure-storage-file-share-ts/references/detailed-guide.md +500 -0
- package/bundled-skills/azure-storage-queue-ts/SKILL.md +2 -512
- package/bundled-skills/azure-storage-queue-ts/references/detailed-guide.md +530 -0
- package/bundled-skills/backend-development-feature-development/SKILL.md +6 -0
- package/bundled-skills/backend-security-coder/resources/implementation-playbook.md +23 -0
- package/bundled-skills/basecamp-automation/SKILL.md +6 -0
- package/bundled-skills/baseline-ui/SKILL.md +6 -0
- package/bundled-skills/bash-pro/SKILL.md +6 -0
- package/bundled-skills/bdi-mental-states/SKILL.md +1 -0
- package/bundled-skills/beautiful-prose/SKILL.md +1 -0
- package/bundled-skills/bill-gates/SKILL.md +2 -778
- package/bundled-skills/bill-gates/references/detailed-guide.md +784 -0
- package/bundled-skills/biopython/SKILL.md +1 -0
- package/bundled-skills/bitbucket-automation/SKILL.md +6 -0
- package/bundled-skills/blog-writing-guide/SKILL.md +6 -0
- package/bundled-skills/box-automation/SKILL.md +6 -0
- package/bundled-skills/brain-to-docs/SKILL.md +6 -0
- package/bundled-skills/brainstorming/SKILL.md +6 -0
- package/bundled-skills/brand-guidelines/SKILL.md +1 -0
- package/bundled-skills/brand-guidelines-anthropic/SKILL.md +23 -8
- package/bundled-skills/brand-guidelines-community/SKILL.md +23 -8
- package/bundled-skills/brand-perception-psychologist/SKILL.md +6 -0
- package/bundled-skills/brooks-audit/SKILL.md +1 -1
- package/bundled-skills/brooks-debt/SKILL.md +1 -1
- package/bundled-skills/brooks-harness/SKILL.md +1 -1
- package/bundled-skills/brooks-review/SKILL.md +7 -1
- package/bundled-skills/brooks-sweep/SKILL.md +1 -1
- package/bundled-skills/brooks-test/SKILL.md +1 -1
- package/bundled-skills/browser-automation/SKILL.md +18 -1044
- package/bundled-skills/browser-automation/references/detailed-guide.md +852 -0
- package/bundled-skills/bug-hunt-swarm/SKILL.md +7 -1
- package/bundled-skills/build/SKILL.md +5 -627
- package/bundled-skills/build/references/detailed-guide.md +637 -0
- package/bundled-skills/bun-development/SKILL.md +4 -678
- package/bundled-skills/bun-development/references/detailed-guide.md +691 -0
- package/bundled-skills/burpsuite-project-parser/SKILL.md +1 -0
- package/bundled-skills/business-analyst/resources/implementation-playbook.md +23 -0
- package/bundled-skills/c-pro/SKILL.md +6 -0
- package/bundled-skills/calendly-automation/SKILL.md +6 -0
- package/bundled-skills/cc-skill-backend-patterns/SKILL.md +2 -572
- package/bundled-skills/cc-skill-backend-patterns/references/detailed-guide.md +584 -0
- package/bundled-skills/cc-skill-coding-standards/SKILL.md +2 -510
- package/bundled-skills/cc-skill-coding-standards/references/detailed-guide.md +523 -0
- package/bundled-skills/cc-skill-continuous-learning/SKILL.md +49 -7
- package/bundled-skills/cc-skill-continuous-learning/config.json +1 -16
- package/bundled-skills/cc-skill-continuous-learning/evaluate-session.sh +56 -59
- package/bundled-skills/cc-skill-frontend-patterns/SKILL.md +2 -621
- package/bundled-skills/cc-skill-frontend-patterns/references/detailed-guide.md +633 -0
- package/bundled-skills/cc-skill-security-review/SKILL.md +4 -36
- package/bundled-skills/cc-skill-security-review/references/detailed-guide.md +40 -0
- package/bundled-skills/cc-skill-strategic-compact/SKILL.md +53 -7
- package/bundled-skills/cc-skill-strategic-compact/suggest-compact.sh +20 -51
- package/bundled-skills/changelog-updates/SKILL.md +6 -528
- package/bundled-skills/changelog-updates/references/detailed-guide.md +540 -0
- package/bundled-skills/chat-widget/SKILL.md +5 -879
- package/bundled-skills/chat-widget/references/detailed-guide.md +890 -0
- package/bundled-skills/cirq/SKILL.md +1 -0
- package/bundled-skills/citation-management/SKILL.md +3 -960
- package/bundled-skills/citation-management/references/detailed-guide.md +975 -0
- package/bundled-skills/ckw-design/SKILL.md +6 -0
- package/bundled-skills/claimable-postgres/SKILL.md +1 -1
- package/bundled-skills/clarity-gate/SKILL.md +3 -635
- package/bundled-skills/clarity-gate/references/detailed-guide.md +653 -0
- package/bundled-skills/claude-ally-health/SKILL.md +6 -0
- package/bundled-skills/claude-code-expert/SKILL.md +2 -527
- package/bundled-skills/claude-code-expert/references/detailed-guide.md +548 -0
- package/bundled-skills/claude-d3js-skill/SKILL.md +2 -798
- package/bundled-skills/claude-d3js-skill/references/detailed-guide.md +811 -0
- package/bundled-skills/claude-in-chrome-troubleshooting/SKILL.md +1 -0
- package/bundled-skills/claude-scientific-skills/SKILL.md +6 -0
- package/bundled-skills/claude-settings-audit/SKILL.md +1 -0
- package/bundled-skills/claude-speed-reader/SKILL.md +6 -0
- package/bundled-skills/claude-win11-speckit-update-skill/SKILL.md +6 -0
- package/bundled-skills/clean-code/SKILL.md +6 -0
- package/bundled-skills/clerk-auth/SKILL.md +2 -812
- package/bundled-skills/clerk-auth/references/detailed-guide.md +820 -0
- package/bundled-skills/clickup-automation/SKILL.md +6 -0
- package/bundled-skills/closed-loop-delivery/SKILL.md +6 -0
- package/bundled-skills/co-marketing/SKILL.md +1 -1
- package/bundled-skills/code-documentation-doc-generate/SKILL.md +16 -1
- package/bundled-skills/code-documentation-doc-generate/resources/implementation-playbook.md +33 -55
- package/bundled-skills/code-refactoring-context-restore/SKILL.md +40 -177
- package/bundled-skills/code-refactoring-tech-debt/SKILL.md +20 -9
- package/bundled-skills/code-simplifier/SKILL.md +1 -0
- package/bundled-skills/codebase-cleanup-tech-debt/SKILL.md +20 -9
- package/bundled-skills/cold-email/SKILL.md +6 -0
- package/bundled-skills/commit/SKILL.md +1 -0
- package/bundled-skills/community-building/SKILL.md +1 -1
- package/bundled-skills/competitor-alternatives/SKILL.md +2 -740
- package/bundled-skills/competitor-alternatives/references/detailed-guide.md +756 -0
- package/bundled-skills/competitor-profiling/SKILL.md +1 -1
- package/bundled-skills/competitor-tracking/SKILL.md +1 -1
- package/bundled-skills/comprehensive-review-full-review/SKILL.md +6 -0
- package/bundled-skills/comprehensive-review-pr-enhance/SKILL.md +1 -0
- package/bundled-skills/computer-use-agents/SKILL.md +2 -2131
- package/bundled-skills/computer-use-agents/references/detailed-guide.md +2158 -0
- package/bundled-skills/computer-vision-expert/SKILL.md +6 -0
- package/bundled-skills/conductor-setup/SKILL.md +1 -0
- package/bundled-skills/confluence-automation/SKILL.md +6 -0
- package/bundled-skills/constant-time-analysis/SKILL.md +1 -0
- package/bundled-skills/container-security-hardening/SKILL.md +4 -915
- package/bundled-skills/container-security-hardening/references/detailed-guide.md +927 -0
- package/bundled-skills/content-creator/SKILL.md +53 -23
- package/bundled-skills/content-creator/assets/content_calendar_template.md +5 -2
- package/bundled-skills/content-creator/references/brand_guidelines.md +7 -3
- package/bundled-skills/content-creator/references/content_frameworks.md +12 -7
- package/bundled-skills/content-creator/references/social_media_optimization.md +61 -317
- package/bundled-skills/content-creator/scripts/brand_voice_analyzer.py +14 -9
- package/bundled-skills/content-creator/scripts/seo_optimizer.py +31 -94
- package/bundled-skills/context-compression/SKILL.md +1 -0
- package/bundled-skills/context-degradation/SKILL.md +1 -0
- package/bundled-skills/context-fundamentals/SKILL.md +1 -0
- package/bundled-skills/context-management-context-restore/SKILL.md +40 -177
- package/bundled-skills/context-optimization/SKILL.md +1 -0
- package/bundled-skills/convex/SKILL.md +4 -766
- package/bundled-skills/convex/references/detailed-guide.md +772 -0
- package/bundled-skills/copilot-sdk/SKILL.md +4 -496
- package/bundled-skills/copilot-sdk/references/detailed-guide.md +516 -0
- package/bundled-skills/copy-editing/SKILL.md +6 -0
- package/bundled-skills/copywriting/SKILL.md +6 -0
- package/bundled-skills/copywriting-psychologist/SKILL.md +6 -0
- package/bundled-skills/create-branch/SKILL.md +1 -0
- package/bundled-skills/create-pr/SKILL.md +7 -0
- package/bundled-skills/cred-omega/SKILL.md +2 -847
- package/bundled-skills/cred-omega/references/detailed-guide.md +872 -0
- package/bundled-skills/cro/SKILL.md +1 -1
- package/bundled-skills/csharp-pro/SKILL.md +6 -0
- package/bundled-skills/cucumber-skill/SKILL.md +1 -1
- package/bundled-skills/customer-psychographic-profiler/SKILL.md +6 -0
- package/bundled-skills/customer-research/SKILL.md +1 -1
- package/bundled-skills/cv-generator/SKILL.md +4 -828
- package/bundled-skills/cv-generator/references/detailed-guide.md +845 -0
- package/bundled-skills/cypress-skill/SKILL.md +1 -1
- package/bundled-skills/daily-gift/SKILL.md +6 -0
- package/bundled-skills/debug-buttercup/SKILL.md +1 -0
- package/bundled-skills/debugger/SKILL.md +6 -0
- package/bundled-skills/debugging-code/SKILL.md +1 -1
- package/bundled-skills/deepapi/SKILL.md +4 -619
- package/bundled-skills/deepapi/references/detailed-guide.md +627 -0
- package/bundled-skills/delegating-to-agents/SKILL.md +6 -0
- package/bundled-skills/deployment-validation-config-validate/SKILL.md +4 -478
- package/bundled-skills/deployment-validation-config-validate/references/detailed-guide.md +484 -0
- package/bundled-skills/design-it/SKILL.md +6 -0
- package/bundled-skills/design-orchestration/SKILL.md +6 -0
- package/bundled-skills/design-spells/SKILL.md +6 -0
- package/bundled-skills/design-system/SKILL.md +7 -1
- package/bundled-skills/design-taste-frontend/SKILL.md +6 -0
- package/bundled-skills/design-thinking/SKILL.md +6 -0
- package/bundled-skills/design-ux/SKILL.md +7 -1
- package/bundled-skills/deterministic-design/SKILL.md +6 -0
- package/bundled-skills/developer-advocacy/SKILL.md +1 -1
- package/bundled-skills/developer-audience-context/SKILL.md +1 -1
- package/bundled-skills/developer-churn/SKILL.md +5 -625
- package/bundled-skills/developer-churn/references/detailed-guide.md +639 -0
- package/bundled-skills/developer-listening/SKILL.md +7 -1
- package/bundled-skills/developer-onboarding/SKILL.md +6 -474
- package/bundled-skills/developer-onboarding/references/detailed-guide.md +486 -0
- package/bundled-skills/developer-sandbox/SKILL.md +6 -414
- package/bundled-skills/developer-sandbox/references/detailed-guide.md +425 -0
- package/bundled-skills/developer-seo/SKILL.md +1 -1
- package/bundled-skills/developer-signup-flow/SKILL.md +1 -1
- package/bundled-skills/devops-troubleshooter/resources/implementation-playbook.md +23 -0
- package/bundled-skills/devrel-content/SKILL.md +1 -1
- package/bundled-skills/diagnosing-bugs/SKILL.md +5 -0
- package/bundled-skills/diary/SKILL.md +1 -0
- package/bundled-skills/differential-review/SKILL.md +1 -0
- package/bundled-skills/discord-automation/SKILL.md +6 -0
- package/bundled-skills/discord-bot-architect/SKILL.md +2 -1434
- package/bundled-skills/discord-bot-architect/references/detailed-guide.md +1465 -0
- package/bundled-skills/distributed-tracing/SKILL.md +22 -435
- package/bundled-skills/distributed-tracing/references/instrumentation.md +13 -0
- package/bundled-skills/distributed-tracing/references/jaeger-setup.md +13 -0
- package/bundled-skills/distributed-tracing/resources/implementation-playbook.md +23 -0
- package/bundled-skills/django-access-review/SKILL.md +1 -0
- package/bundled-skills/django-perf-review/SKILL.md +1 -0
- package/bundled-skills/django-pro/resources/implementation-playbook.md +23 -0
- package/bundled-skills/doc-coauthoring/SKILL.md +6 -0
- package/bundled-skills/docs-architect/SKILL.md +6 -0
- package/bundled-skills/docs-as-marketing/SKILL.md +1 -1
- package/bundled-skills/documentation-generation-doc-generate/SKILL.md +16 -1
- package/bundled-skills/documentation-generation-doc-generate/resources/implementation-playbook.md +33 -55
- package/bundled-skills/doubt-driven-development/SKILL.md +1 -1
- package/bundled-skills/dropbox-automation/SKILL.md +6 -0
- package/bundled-skills/dwarf-expert/SKILL.md +1 -0
- package/bundled-skills/dx-optimizer/SKILL.md +6 -0
- package/bundled-skills/e2e-testing-patterns/SKILL.md +14 -4
- package/bundled-skills/e2e-testing-patterns/resources/implementation-playbook.md +22 -41
- package/bundled-skills/eas-update-insights/SKILL.md +1 -1
- package/bundled-skills/ecl-harness-engineer/SKILL.md +4 -681
- package/bundled-skills/ecl-harness-engineer/references/detailed-guide.md +691 -0
- package/bundled-skills/efficient-web-research/SKILL.md +1 -0
- package/bundled-skills/electron-development/SKILL.md +4 -820
- package/bundled-skills/electron-development/references/detailed-guide.md +828 -0
- package/bundled-skills/elixir-pro/SKILL.md +6 -0
- package/bundled-skills/elon-musk/SKILL.md +5 -1278
- package/bundled-skills/elon-musk/references/detailed-guide.md +1293 -0
- package/bundled-skills/email-sequence/SKILL.md +2 -915
- package/bundled-skills/email-sequence/references/detailed-guide.md +932 -0
- package/bundled-skills/email-systems/SKILL.md +2 -654
- package/bundled-skills/email-systems/references/detailed-guide.md +669 -0
- package/bundled-skills/embedding-strategies/SKILL.md +40 -64
- package/bundled-skills/embedding-strategies/resources/implementation-playbook.md +23 -0
- package/bundled-skills/emergency-card/SKILL.md +1 -0
- package/bundled-skills/emil-design-eng/SKILL.md +4 -673
- package/bundled-skills/emil-design-eng/references/detailed-guide.md +690 -0
- package/bundled-skills/emotional-arc-designer/SKILL.md +6 -0
- package/bundled-skills/enhance-prompt/SKILL.md +1 -0
- package/bundled-skills/error-debugging-error-analysis/SKILL.md +15 -0
- package/bundled-skills/error-debugging-error-analysis/resources/implementation-playbook.md +122 -1125
- package/bundled-skills/error-debugging-multi-agent-review/SKILL.md +42 -214
- package/bundled-skills/error-detective/SKILL.md +6 -0
- package/bundled-skills/error-diagnostics-error-analysis/SKILL.md +15 -0
- package/bundled-skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +122 -1125
- package/bundled-skills/event-sourcing-architect/SKILL.md +6 -0
- package/bundled-skills/event-staffing-compliance/SKILL.md +6 -0
- package/bundled-skills/event-staffing-ordering/SKILL.md +6 -0
- package/bundled-skills/evolution/SKILL.md +1 -0
- package/bundled-skills/executing-plans/SKILL.md +6 -0
- package/bundled-skills/explain-like-socrates/SKILL.md +6 -0
- package/bundled-skills/expo-deployment/SKILL.md +1 -1
- package/bundled-skills/expo-examples/SKILL.md +1 -1
- package/bundled-skills/expo-module/SKILL.md +1 -1
- package/bundled-skills/expo-observe/SKILL.md +1 -1
- package/bundled-skills/expo-ui/SKILL.md +1 -1
- package/bundled-skills/expo-ui-jetpack-compose/SKILL.md +1 -0
- package/bundled-skills/expo-ui-swift-ui/SKILL.md +1 -0
- package/bundled-skills/fable-safe-prompt/SKILL.md +6 -0
- package/bundled-skills/fal-audio/SKILL.md +6 -0
- package/bundled-skills/fal-generate/SKILL.md +6 -0
- package/bundled-skills/fal-image-edit/SKILL.md +6 -0
- package/bundled-skills/fal-platform/SKILL.md +6 -0
- package/bundled-skills/fal-upscale/SKILL.md +6 -0
- package/bundled-skills/fal-workflow/SKILL.md +6 -0
- package/bundled-skills/family-health-analyzer/SKILL.md +1 -0
- package/bundled-skills/fastapi-pro/resources/implementation-playbook.md +23 -0
- package/bundled-skills/favicon/SKILL.md +1 -0
- package/bundled-skills/fda-food-safety-auditor/SKILL.md +1 -0
- package/bundled-skills/fda-medtech-compliance-auditor/SKILL.md +1 -0
- package/bundled-skills/ffuf-claude-skill/SKILL.md +6 -0
- package/bundled-skills/ffuf-web-fuzzing/SKILL.md +5 -492
- package/bundled-skills/ffuf-web-fuzzing/references/detailed-guide.md +510 -0
- package/bundled-skills/file-organizer/SKILL.md +6 -0
- package/bundled-skills/file-uploads/SKILL.md +6 -0
- package/bundled-skills/filesystem-context/SKILL.md +1 -0
- package/bundled-skills/find-bugs/SKILL.md +7 -0
- package/bundled-skills/find-complementary-founders/scripts/assess_profile.py +7 -1
- package/bundled-skills/firebase/SKILL.md +8 -651
- package/bundled-skills/firebase/references/detailed-guide.md +662 -0
- package/bundled-skills/fitness-analyzer/SKILL.md +1 -0
- package/bundled-skills/fix-review/SKILL.md +6 -0
- package/bundled-skills/fixing-metadata/SKILL.md +7 -1
- package/bundled-skills/food-database-query/SKILL.md +5 -772
- package/bundled-skills/food-database-query/references/detailed-guide.md +785 -0
- package/bundled-skills/form-cro/SKILL.md +6 -0
- package/bundled-skills/fp-async/SKILL.md +5 -716
- package/bundled-skills/fp-async/references/detailed-guide.md +726 -0
- package/bundled-skills/fp-backend/SKILL.md +5 -1313
- package/bundled-skills/fp-backend/references/detailed-guide.md +1323 -0
- package/bundled-skills/fp-data-transforms/SKILL.md +5 -1181
- package/bundled-skills/fp-data-transforms/references/detailed-guide.md +1190 -0
- package/bundled-skills/fp-either-ref/SKILL.md +1 -0
- package/bundled-skills/fp-errors/SKILL.md +5 -835
- package/bundled-skills/fp-errors/references/detailed-guide.md +846 -0
- package/bundled-skills/fp-option-ref/SKILL.md +1 -0
- package/bundled-skills/fp-pipe-ref/SKILL.md +1 -0
- package/bundled-skills/fp-pragmatic/SKILL.md +5 -500
- package/bundled-skills/fp-pragmatic/references/detailed-guide.md +510 -0
- package/bundled-skills/fp-react/SKILL.md +3 -761
- package/bundled-skills/fp-react/references/detailed-guide.md +775 -0
- package/bundled-skills/fp-refactor/SKILL.md +5 -1761
- package/bundled-skills/fp-refactor/references/detailed-guide.md +1775 -0
- package/bundled-skills/fp-taskeither-ref/SKILL.md +1 -0
- package/bundled-skills/fp-ts-errors/SKILL.md +4 -835
- package/bundled-skills/fp-ts-errors/references/detailed-guide.md +846 -0
- package/bundled-skills/fp-ts-pragmatic/SKILL.md +4 -500
- package/bundled-skills/fp-ts-pragmatic/references/detailed-guide.md +510 -0
- package/bundled-skills/fp-ts-react/SKILL.md +4 -763
- package/bundled-skills/fp-ts-react/references/detailed-guide.md +775 -0
- package/bundled-skills/fp-types-ref/SKILL.md +1 -0
- package/bundled-skills/framework-migration-legacy-modernize/SKILL.md +6 -0
- package/bundled-skills/free-tool-strategy/SKILL.md +2 -532
- package/bundled-skills/free-tool-strategy/references/detailed-guide.md +550 -0
- package/bundled-skills/freshdesk-automation/SKILL.md +6 -0
- package/bundled-skills/frontend-architecture/SKILL.md +1 -1
- package/bundled-skills/frontend-data-contracts/SKILL.md +1 -1
- package/bundled-skills/frontend-design/SKILL.md +33 -34
- package/bundled-skills/frontend-observability/SKILL.md +1 -1
- package/bundled-skills/frontend-optimistic-mutations/SKILL.md +1 -1
- package/bundled-skills/frontend-security-coder/SKILL.md +5 -5
- package/bundled-skills/frontend-security-coder/resources/implementation-playbook.md +23 -0
- package/bundled-skills/frontend-seo/SKILL.md +6 -675
- package/bundled-skills/frontend-seo/references/detailed-guide.md +688 -0
- package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +7 -1
- package/bundled-skills/frontend-ui-dark-ts/SKILL.md +2 -561
- package/bundled-skills/frontend-ui-dark-ts/references/detailed-guide.md +573 -0
- package/bundled-skills/full-stack-orchestration-full-stack-feature/SKILL.md +6 -0
- package/bundled-skills/game-development/2d-games/SKILL.md +6 -0
- package/bundled-skills/game-development/mobile-games/SKILL.md +6 -0
- package/bundled-skills/game-development/vr-ar/SKILL.md +6 -0
- package/bundled-skills/gcp-cloud-run/SKILL.md +2 -1303
- package/bundled-skills/gcp-cloud-run/references/detailed-guide.md +1350 -0
- package/bundled-skills/gemini-api-dev/SKILL.md +1 -1
- package/bundled-skills/gemini-live-api-dev/SKILL.md +1 -1
- package/bundled-skills/gemini-omni-flash-api/SKILL.md +1 -1
- package/bundled-skills/geo-fundamentals/SKILL.md +6 -0
- package/bundled-skills/geoffrey-hinton/SKILL.md +5 -1235
- package/bundled-skills/geoffrey-hinton/references/detailed-guide.md +1324 -0
- package/bundled-skills/gh-review-requests/SKILL.md +1 -0
- package/bundled-skills/github-actions-advanced/SKILL.md +4 -971
- package/bundled-skills/github-actions-advanced/references/detailed-guide.md +991 -0
- package/bundled-skills/github-actions-templates/SKILL.md +34 -314
- package/bundled-skills/github-actions-templates/references/common-workflows.md +13 -0
- package/bundled-skills/github-actions-templates/resources/implementation-playbook.md +23 -0
- package/bundled-skills/github-automation/SKILL.md +6 -0
- package/bundled-skills/github-workflow-automation/SKILL.md +4 -826
- package/bundled-skills/github-workflow-automation/references/detailed-guide.md +832 -0
- package/bundled-skills/gitlab-automation/SKILL.md +6 -0
- package/bundled-skills/gmail-automation/SKILL.md +1 -0
- package/bundled-skills/go-rod-master/SKILL.md +2 -496
- package/bundled-skills/go-rod-master/references/detailed-guide.md +508 -0
- package/bundled-skills/goal-analyzer/SKILL.md +5 -596
- package/bundled-skills/goal-analyzer/references/detailed-guide.md +602 -0
- package/bundled-skills/google-calendar-automation/SKILL.md +1 -0
- package/bundled-skills/google-docs-automation/SKILL.md +20 -69
- package/bundled-skills/google-drive-automation/SKILL.md +1 -0
- package/bundled-skills/google-sheets-automation/SKILL.md +21 -128
- package/bundled-skills/google-slides-automation/SKILL.md +20 -128
- package/bundled-skills/googlesheets-automation/SKILL.md +6 -0
- package/bundled-skills/gpt-taste/SKILL.md +6 -0
- package/bundled-skills/grafana-dashboards/SKILL.md +6 -6
- package/bundled-skills/grafana-dashboards/references/dashboard-design.md +13 -0
- package/bundled-skills/grafana-dashboards/resources/implementation-playbook.md +23 -0
- package/bundled-skills/graphql/SKILL.md +8 -1031
- package/bundled-skills/graphql/references/detailed-guide.md +1044 -0
- package/bundled-skills/grill-me/SKILL.md +5 -0
- package/bundled-skills/grill-with-docs/SKILL.md +5 -0
- package/bundled-skills/grilling/SKILL.md +5 -0
- package/bundled-skills/growth-engine/SKILL.md +6 -0
- package/bundled-skills/handoff/SKILL.md +5 -0
- package/bundled-skills/haskell-pro/SKILL.md +6 -0
- package/bundled-skills/headline-psychologist/SKILL.md +6 -0
- package/bundled-skills/health-trend-analyzer/SKILL.md +1 -0
- package/bundled-skills/hig-components-content/SKILL.md +6 -0
- package/bundled-skills/hig-components-controls/SKILL.md +6 -0
- package/bundled-skills/hig-components-dialogs/SKILL.md +6 -0
- package/bundled-skills/hig-components-layout/SKILL.md +6 -0
- package/bundled-skills/hig-components-menus/SKILL.md +6 -0
- package/bundled-skills/hig-components-search/SKILL.md +6 -0
- package/bundled-skills/hig-components-status/SKILL.md +6 -0
- package/bundled-skills/hig-components-system/SKILL.md +6 -0
- package/bundled-skills/hig-foundations/SKILL.md +6 -0
- package/bundled-skills/hig-inputs/SKILL.md +6 -0
- package/bundled-skills/hig-patterns/SKILL.md +6 -0
- package/bundled-skills/hig-platforms/SKILL.md +6 -0
- package/bundled-skills/hig-technologies/SKILL.md +6 -0
- package/bundled-skills/high-end-visual-design/SKILL.md +6 -0
- package/bundled-skills/hosted-agents/SKILL.md +7 -0
- package/bundled-skills/hosted-agents-v2-py/SKILL.md +23 -5
- package/bundled-skills/html-injection-testing/SKILL.md +2 -453
- package/bundled-skills/html-injection-testing/references/detailed-guide.md +462 -0
- package/bundled-skills/hubspot-automation/SKILL.md +6 -0
- package/bundled-skills/hubspot-integration/SKILL.md +8 -807
- package/bundled-skills/hubspot-integration/references/detailed-guide.md +815 -0
- package/bundled-skills/hugging-face-cli/SKILL.md +7 -1
- package/bundled-skills/hugging-face-community-evals/SKILL.md +1 -1
- package/bundled-skills/hugging-face-datasets/SKILL.md +5 -430
- package/bundled-skills/hugging-face-datasets/references/detailed-guide.md +442 -0
- package/bundled-skills/hugging-face-evaluation/SKILL.md +5 -640
- package/bundled-skills/hugging-face-evaluation/references/detailed-guide.md +652 -0
- package/bundled-skills/hugging-face-jobs/SKILL.md +3 -801
- package/bundled-skills/hugging-face-jobs/references/detailed-guide.md +821 -0
- package/bundled-skills/hugging-face-model-trainer/SKILL.md +3 -681
- package/bundled-skills/hugging-face-model-trainer/references/detailed-guide.md +702 -0
- package/bundled-skills/hugging-face-paper-publisher/SKILL.md +5 -617
- package/bundled-skills/hugging-face-paper-publisher/references/detailed-guide.md +624 -0
- package/bundled-skills/hugging-face-papers/SKILL.md +1 -1
- package/bundled-skills/hugging-face-tool-builder/SKILL.md +1 -0
- package/bundled-skills/hugging-face-trackio/SKILL.md +1 -1
- package/bundled-skills/hugging-face-vision-trainer/SKILL.md +5 -534
- package/bundled-skills/hugging-face-vision-trainer/references/detailed-guide.md +549 -0
- package/bundled-skills/huggingface-best/SKILL.md +1 -1
- package/bundled-skills/huggingface-lora-space-builder/SKILL.md +1 -1
- package/bundled-skills/huggingface-spaces/SKILL.md +1 -1
- package/bundled-skills/huggingface-tool-builder/SKILL.md +1 -1
- package/bundled-skills/huggingface-zerogpu/SKILL.md +1 -1
- package/bundled-skills/hugo-to-markdown/SKILL.md +1 -1
- package/bundled-skills/hyperexecute-skill/SKILL.md +7 -1
- package/bundled-skills/iconsax-library/SKILL.md +6 -0
- package/bundled-skills/idea-refine/SKILL.md +1 -1
- package/bundled-skills/identity-mirror/SKILL.md +6 -0
- package/bundled-skills/ilya-sutskever/SKILL.md +2 -1126
- package/bundled-skills/ilya-sutskever/references/detailed-guide.md +1167 -0
- package/bundled-skills/image-generator/SKILL.md +4 -320
- package/bundled-skills/image-generator/references/detailed-guide.md +332 -0
- package/bundled-skills/implement/SKILL.md +6 -0
- package/bundled-skills/incident-responder/SKILL.md +6 -0
- package/bundled-skills/incident-responder/resources/implementation-playbook.md +23 -0
- package/bundled-skills/incident-response-incident-response/SKILL.md +6 -0
- package/bundled-skills/industrial-brutalist-ui/SKILL.md +6 -0
- package/bundled-skills/instagram/scripts/config.py +33 -8
- package/bundled-skills/interactive-portfolio/SKILL.md +2 -482
- package/bundled-skills/interactive-portfolio/references/detailed-guide.md +500 -0
- package/bundled-skills/internal-comms/SKILL.md +20 -1
- package/bundled-skills/internal-comms/examples/3p-updates.md +5 -4
- package/bundled-skills/internal-comms/examples/company-newsletter.md +3 -2
- package/bundled-skills/internal-comms/examples/faq-answers.md +1 -0
- package/bundled-skills/internal-comms/examples/general-comms.md +1 -0
- package/bundled-skills/internal-comms-anthropic/SKILL.md +21 -2
- package/bundled-skills/internal-comms-anthropic/examples/3p-updates.md +5 -4
- package/bundled-skills/internal-comms-anthropic/examples/company-newsletter.md +3 -2
- package/bundled-skills/internal-comms-anthropic/examples/faq-answers.md +1 -0
- package/bundled-skills/internal-comms-anthropic/examples/general-comms.md +1 -0
- package/bundled-skills/internal-comms-community/SKILL.md +21 -2
- package/bundled-skills/internal-comms-community/examples/3p-updates.md +48 -0
- package/bundled-skills/internal-comms-community/examples/company-newsletter.md +66 -0
- package/bundled-skills/internal-comms-community/examples/faq-answers.md +31 -0
- package/bundled-skills/internal-comms-community/examples/general-comms.md +17 -0
- package/bundled-skills/ios-debugger-agent/SKILL.md +6 -0
- package/bundled-skills/ios-developer/resources/implementation-playbook.md +23 -0
- package/bundled-skills/issues/SKILL.md +1 -0
- package/bundled-skills/iterate-pr/SKILL.md +1 -0
- package/bundled-skills/javascript-mastery/SKILL.md +4 -625
- package/bundled-skills/javascript-mastery/references/detailed-guide.md +636 -0
- package/bundled-skills/javascript-pro/SKILL.md +6 -0
- package/bundled-skills/jest-skill/SKILL.md +1 -1
- package/bundled-skills/jira-automation/SKILL.md +6 -0
- package/bundled-skills/jobs-to-be-done-analyst/SKILL.md +6 -0
- package/bundled-skills/junit-5-skill/SKILL.md +1 -1
- package/bundled-skills/junta-leiloeiros/scripts/.snyk +5 -0
- package/bundled-skills/junta-leiloeiros/scripts/requirements.txt +2 -0
- package/bundled-skills/k6-load-testing/SKILL.md +2 -544
- package/bundled-skills/k6-load-testing/references/detailed-guide.md +563 -0
- package/bundled-skills/kaizen/SKILL.md +2 -711
- package/bundled-skills/kaizen/references/detailed-guide.md +720 -0
- package/bundled-skills/kpi-dashboard-design/SKILL.md +7 -67
- package/bundled-skills/kpi-dashboard-design/resources/implementation-playbook.md +23 -0
- package/bundled-skills/kpi-dashboard-design/resources/metric-queries.sql +30 -0
- package/bundled-skills/langfuse/SKILL.md +41 -468
- package/bundled-skills/langgraph/SKILL.md +2 -445
- package/bundled-skills/langgraph/references/detailed-guide.md +455 -0
- package/bundled-skills/laravel-expert/SKILL.md +6 -0
- package/bundled-skills/launch-strategy/SKILL.md +6 -0
- package/bundled-skills/lead-magnets/SKILL.md +6 -0
- package/bundled-skills/learn/SKILL.md +5 -0
- package/bundled-skills/legacy-modernizer/SKILL.md +6 -0
- package/bundled-skills/legal-advisor/SKILL.md +6 -0
- package/bundled-skills/leiloeiro-avaliacao/SKILL.md +2 -469
- package/bundled-skills/leiloeiro-avaliacao/references/detailed-guide.md +503 -0
- package/bundled-skills/leiloeiro-edital/SKILL.md +2 -468
- package/bundled-skills/leiloeiro-edital/references/detailed-guide.md +491 -0
- package/bundled-skills/leiloeiro-mercado/SKILL.md +2 -458
- package/bundled-skills/leiloeiro-mercado/references/detailed-guide.md +488 -0
- package/bundled-skills/leiloeiro-risco/SKILL.md +2 -457
- package/bundled-skills/leiloeiro-risco/references/detailed-guide.md +482 -0
- package/bundled-skills/lesson-generator/SKILL.md +5 -0
- package/bundled-skills/lightning-architecture-review/SKILL.md +6 -0
- package/bundled-skills/lightning-channel-factories/SKILL.md +6 -0
- package/bundled-skills/lightning-factory-explainer/SKILL.md +6 -0
- package/bundled-skills/linear-claude-skill/SKILL.md +4 -502
- package/bundled-skills/linear-claude-skill/references/detailed-guide.md +517 -0
- package/bundled-skills/linkedin-cli/SKILL.md +4 -513
- package/bundled-skills/linkedin-cli/references/detailed-guide.md +520 -0
- package/bundled-skills/lint-and-validate/SKILL.md +17 -39
- package/bundled-skills/lint-and-validate/scripts/lint_runner.py +17 -8
- package/bundled-skills/lint-and-validate/scripts/type_coverage.py +77 -167
- package/bundled-skills/linux-privilege-escalation/SKILL.md +2 -426
- package/bundled-skills/linux-privilege-escalation/references/detailed-guide.md +436 -0
- package/bundled-skills/linux-shell-scripting/SKILL.md +2 -473
- package/bundled-skills/linux-shell-scripting/references/detailed-guide.md +481 -0
- package/bundled-skills/llm-app-patterns/SKILL.md +16 -741
- package/bundled-skills/llm-app-patterns/references/detailed-guide.md +760 -0
- package/bundled-skills/llm-council/SKILL.md +4 -550
- package/bundled-skills/llm-council/references/detailed-guide.md +556 -0
- package/bundled-skills/llm-ops/SKILL.md +6 -0
- package/bundled-skills/local-legal-seo-audit/SKILL.md +6 -0
- package/bundled-skills/logic-diff/SKILL.md +1 -1
- package/bundled-skills/logic-explain/SKILL.md +7 -1
- package/bundled-skills/logic-fix-all/SKILL.md +1 -1
- package/bundled-skills/logic-locate/SKILL.md +1 -1
- package/bundled-skills/logic-review/SKILL.md +1 -1
- package/bundled-skills/loki-mode/SKILL.md +4 -696
- package/bundled-skills/loki-mode/references/detailed-guide.md +717 -0
- package/bundled-skills/longbridge-content/SKILL.md +1 -1
- package/bundled-skills/longbridge-fundamentals/SKILL.md +1 -1
- package/bundled-skills/longbridge-market-data/SKILL.md +1 -1
- package/bundled-skills/lookdev-auto/SKILL.md +6 -0
- package/bundled-skills/loopy/SKILL.md +1 -1
- package/bundled-skills/loss-aversion-designer/SKILL.md +6 -0
- package/bundled-skills/machine-learning-ops-ml-pipeline/SKILL.md +6 -0
- package/bundled-skills/magic-animator/SKILL.md +6 -0
- package/bundled-skills/magic-ui-generator/SKILL.md +6 -0
- package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +6 -0
- package/bundled-skills/makepad-animation/SKILL.md +1 -0
- package/bundled-skills/makepad-basics/SKILL.md +1 -0
- package/bundled-skills/makepad-deployment/SKILL.md +1 -0
- package/bundled-skills/makepad-dsl/SKILL.md +1 -0
- package/bundled-skills/makepad-event-action/SKILL.md +1 -0
- package/bundled-skills/makepad-font/SKILL.md +1 -0
- package/bundled-skills/makepad-layout/SKILL.md +1 -0
- package/bundled-skills/makepad-platform/SKILL.md +1 -0
- package/bundled-skills/makepad-reference/SKILL.md +1 -0
- package/bundled-skills/makepad-shaders/SKILL.md +1 -0
- package/bundled-skills/makepad-skills/SKILL.md +6 -0
- package/bundled-skills/makepad-splash/SKILL.md +1 -0
- package/bundled-skills/makepad-widgets/SKILL.md +1 -0
- package/bundled-skills/manage-skills/SKILL.md +1 -0
- package/bundled-skills/marketing-plan/SKILL.md +1 -1
- package/bundled-skills/matematico-tao/SKILL.md +2 -632
- package/bundled-skills/matematico-tao/references/detailed-guide.md +651 -0
- package/bundled-skills/matplotlib/SKILL.md +1 -0
- package/bundled-skills/maxia/SKILL.md +1 -0
- package/bundled-skills/mcp-builder/SKILL.md +46 -14
- package/bundled-skills/mcp-builder/reference/evaluation.md +69 -226
- package/bundled-skills/mcp-builder/reference/mcp_best_practices.md +8 -5
- package/bundled-skills/mcp-builder/reference/node_mcp_server.md +46 -144
- package/bundled-skills/mcp-builder/reference/python_mcp_server.md +42 -80
- package/bundled-skills/mcp-builder/scripts/connections.py +18 -11
- package/bundled-skills/mcp-builder/scripts/evaluation.py +88 -95
- package/bundled-skills/mcp-builder/scripts/example_evaluation.xml +1 -1
- package/bundled-skills/mcp-builder/scripts/requirements.txt +4 -2
- package/bundled-skills/mental-health-analyzer/SKILL.md +5 -974
- package/bundled-skills/mental-health-analyzer/references/detailed-guide.md +1014 -0
- package/bundled-skills/micro-saas-launcher/SKILL.md +2 -473
- package/bundled-skills/micro-saas-launcher/references/detailed-guide.md +491 -0
- package/bundled-skills/minecraft-bukkit-pro/SKILL.md +6 -0
- package/bundled-skills/minimalist-ui/SKILL.md +6 -0
- package/bundled-skills/moatmri/SKILL.md +6 -0
- package/bundled-skills/mobile-developer/resources/implementation-playbook.md +23 -0
- package/bundled-skills/molykit/SKILL.md +1 -0
- package/bundled-skills/monday-automation/SKILL.md +6 -0
- package/bundled-skills/monopoly/SKILL.md +1 -0
- package/bundled-skills/monopoly/patterns/SKILL.md +1 -0
- package/bundled-skills/monopoly/scale-benchmarks/SKILL.md +1 -0
- package/bundled-skills/monopoly/security-checklist/SKILL.md +6 -0
- package/bundled-skills/monopoly/tech-matrix/SKILL.md +1 -0
- package/bundled-skills/monorepo-architect/SKILL.md +6 -0
- package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +1 -1
- package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +7 -1
- package/bundled-skills/monte-carlo-validation-notebook/SKILL.md +4 -601
- package/bundled-skills/monte-carlo-validation-notebook/references/detailed-guide.md +613 -0
- package/bundled-skills/moodle-external-api-development/SKILL.md +4 -517
- package/bundled-skills/moodle-external-api-development/references/detailed-guide.md +529 -0
- package/bundled-skills/multi-agent-architect/SKILL.md +1 -0
- package/bundled-skills/multi-agent-brainstorming/SKILL.md +6 -0
- package/bundled-skills/multi-agent-patterns/SKILL.md +1 -0
- package/bundled-skills/multi-platform-apps-multi-platform/SKILL.md +6 -0
- package/bundled-skills/multi-platform-apps-multi-platform/resources/implementation-playbook.md +23 -0
- package/bundled-skills/n8n-code-javascript/SKILL.md +3 -667
- package/bundled-skills/n8n-code-javascript/references/detailed-guide.md +683 -0
- package/bundled-skills/n8n-code-python/SKILL.md +3 -664
- package/bundled-skills/n8n-code-python/references/detailed-guide.md +682 -0
- package/bundled-skills/n8n-expression-syntax/SKILL.md +5 -401
- package/bundled-skills/n8n-expression-syntax/references/detailed-guide.md +416 -0
- package/bundled-skills/n8n-mcp-tools-expert/SKILL.md +5 -485
- package/bundled-skills/n8n-mcp-tools-expert/references/detailed-guide.md +499 -0
- package/bundled-skills/n8n-node-configuration/SKILL.md +5 -775
- package/bundled-skills/n8n-node-configuration/references/detailed-guide.md +789 -0
- package/bundled-skills/n8n-validation-expert/SKILL.md +5 -679
- package/bundled-skills/n8n-validation-expert/references/detailed-guide.md +694 -0
- package/bundled-skills/n8n-workflow-patterns/SKILL.md +1 -0
- package/bundled-skills/nanobanana-ppt-skills/SKILL.md +6 -0
- package/bundled-skills/native-data-fetching/SKILL.md +2 -456
- package/bundled-skills/native-data-fetching/references/detailed-guide.md +465 -0
- package/bundled-skills/neon-ai-gateway/SKILL.md +1 -1
- package/bundled-skills/neon-functions/SKILL.md +1 -1
- package/bundled-skills/neon-object-storage/SKILL.md +1 -1
- package/bundled-skills/neon-postgres/SKILL.md +1 -1
- package/bundled-skills/neon-postgres-branches/SKILL.md +1 -1
- package/bundled-skills/neon-postgres-egress-optimizer/SKILL.md +1 -1
- package/bundled-skills/nerdzao-elite/SKILL.md +6 -0
- package/bundled-skills/nerdzao-elite-gemini-high/SKILL.md +6 -0
- package/bundled-skills/nestjs-expert/SKILL.md +2 -524
- package/bundled-skills/nestjs-expert/references/detailed-guide.md +539 -0
- package/bundled-skills/networkx/SKILL.md +1 -0
- package/bundled-skills/new-rails-project/SKILL.md +7 -0
- package/bundled-skills/newman-cicd-integration/SKILL.md +1 -1
- package/bundled-skills/nika/SKILL.md +1 -0
- package/bundled-skills/nosql-expert/SKILL.md +6 -0
- package/bundled-skills/not-a-vibe-coder/SKILL.md +7 -0
- package/bundled-skills/notebooklm/scripts/config.py +33 -11
- package/bundled-skills/notion-template-business/SKILL.md +2 -505
- package/bundled-skills/notion-template-business/references/detailed-guide.md +523 -0
- package/bundled-skills/nutrition-analyzer/SKILL.md +5 -766
- package/bundled-skills/nutrition-analyzer/references/detailed-guide.md +775 -0
- package/bundled-skills/objection-preemptor/SKILL.md +6 -0
- package/bundled-skills/observability-and-instrumentation/SKILL.md +5 -2
- package/bundled-skills/observability-and-instrumentation/references/observability-checklist.md +13 -0
- package/bundled-skills/observability-engineer/SKILL.md +16 -8
- package/bundled-skills/obsidian-bases/SKILL.md +4 -366
- package/bundled-skills/obsidian-bases/references/detailed-guide.md +380 -0
- package/bundled-skills/occupational-health-analyzer/SKILL.md +1 -0
- package/bundled-skills/odoo-accounting-setup/SKILL.md +1 -0
- package/bundled-skills/odoo-automated-tests/SKILL.md +1 -0
- package/bundled-skills/odoo-backup-strategy/SKILL.md +1 -0
- package/bundled-skills/odoo-docker-deployment/SKILL.md +1 -0
- package/bundled-skills/odoo-ecommerce-configurator/SKILL.md +1 -0
- package/bundled-skills/odoo-edi-connector/SKILL.md +1 -0
- package/bundled-skills/odoo-hr-payroll-setup/SKILL.md +1 -0
- package/bundled-skills/odoo-inventory-optimizer/SKILL.md +1 -0
- package/bundled-skills/odoo-l10n-compliance/SKILL.md +1 -0
- package/bundled-skills/odoo-manufacturing-advisor/SKILL.md +1 -0
- package/bundled-skills/odoo-migration-helper/SKILL.md +1 -0
- package/bundled-skills/odoo-module-developer/SKILL.md +1 -0
- package/bundled-skills/odoo-orm-expert/SKILL.md +1 -0
- package/bundled-skills/odoo-performance-tuner/SKILL.md +1 -0
- package/bundled-skills/odoo-project-timesheet/SKILL.md +1 -0
- package/bundled-skills/odoo-purchase-workflow/SKILL.md +1 -0
- package/bundled-skills/odoo-qweb-templates/SKILL.md +1 -0
- package/bundled-skills/odoo-rpc-api/SKILL.md +1 -0
- package/bundled-skills/odoo-sales-crm-expert/SKILL.md +1 -0
- package/bundled-skills/odoo-security-rules/SKILL.md +1 -0
- package/bundled-skills/odoo-shopify-integration/SKILL.md +1 -0
- package/bundled-skills/odoo-upgrade-advisor/SKILL.md +1 -0
- package/bundled-skills/odoo-woocommerce-bridge/SKILL.md +1 -0
- package/bundled-skills/odoo-xml-views-builder/SKILL.md +1 -0
- package/bundled-skills/odw/SKILL.md +6 -0
- package/bundled-skills/offers/SKILL.md +1 -1
- package/bundled-skills/onboarding/SKILL.md +1 -1
- package/bundled-skills/onboarding-psychologist/SKILL.md +6 -0
- package/bundled-skills/one-drive-automation/SKILL.md +6 -0
- package/bundled-skills/openapi-spec-generator/SKILL.md +1 -1
- package/bundled-skills/oral-health-analyzer/SKILL.md +8 -515
- package/bundled-skills/oral-health-analyzer/references/detailed-guide.md +529 -0
- package/bundled-skills/outlook-automation/SKILL.md +6 -0
- package/bundled-skills/pagespeed-enhancer/SKILL.md +4 -520
- package/bundled-skills/pagespeed-enhancer/references/detailed-guide.md +533 -0
- package/bundled-skills/paid-ads/SKILL.md +2 -541
- package/bundled-skills/paid-ads/references/detailed-guide.md +558 -0
- package/bundled-skills/parallel-search-mcp/SKILL.md +134 -0
- package/bundled-skills/payment-integration/SKILL.md +6 -0
- package/bundled-skills/paywall-upgrade-cro/SKILL.md +2 -560
- package/bundled-skills/paywall-upgrade-cro/references/detailed-guide.md +579 -0
- package/bundled-skills/pci-compliance/SKILL.md +23 -469
- package/bundled-skills/pci-compliance/resources/implementation-playbook.md +23 -0
- package/bundled-skills/performance-testing-review-multi-agent-review/SKILL.md +42 -214
- package/bundled-skills/personal-tool-builder/SKILL.md +2 -688
- package/bundled-skills/personal-tool-builder/references/detailed-guide.md +705 -0
- package/bundled-skills/phase-gated-debugging/SKILL.md +6 -0
- package/bundled-skills/photopea-embedded-editor/SKILL.md +3 -1218
- package/bundled-skills/photopea-embedded-editor/references/detailed-guide.md +1252 -0
- package/bundled-skills/php-pro/SKILL.md +6 -0
- package/bundled-skills/pi-custom-model/SKILL.md +6 -0
- package/bundled-skills/pipedrive-automation/SKILL.md +6 -0
- package/bundled-skills/pitch-psychologist/SKILL.md +6 -0
- package/bundled-skills/plaid-fintech/SKILL.md +8 -829
- package/bundled-skills/plaid-fintech/references/detailed-guide.md +837 -0
- package/bundled-skills/plotly/SKILL.md +1 -0
- package/bundled-skills/polars/SKILL.md +1 -0
- package/bundled-skills/popup-cro/SKILL.md +6 -0
- package/bundled-skills/posix-shell-pro/SKILL.md +6 -0
- package/bundled-skills/postgresql-cli/SKILL.md +1 -1
- package/bundled-skills/postman-collection-generator/SKILL.md +1 -1
- package/bundled-skills/postman-newman-automation/SKILL.md +1 -1
- package/bundled-skills/postman-openapi-converter/SKILL.md +1 -1
- package/bundled-skills/postmortem-writing/SKILL.md +1 -1
- package/bundled-skills/postmortem-writing/resources/implementation-playbook.md +23 -0
- package/bundled-skills/power-user-cultivation/SKILL.md +6 -572
- package/bundled-skills/power-user-cultivation/references/detailed-guide.md +585 -0
- package/bundled-skills/pr-writer/SKILL.md +1 -0
- package/bundled-skills/price-psychology-strategist/SKILL.md +6 -0
- package/bundled-skills/pricing/SKILL.md +1 -1
- package/bundled-skills/privacy-mask/SKILL.md +1 -1
- package/bundled-skills/product-decision-agent/SKILL.md +6 -0
- package/bundled-skills/product-inventor/SKILL.md +2 -627
- package/bundled-skills/product-inventor/references/detailed-guide.md +646 -0
- package/bundled-skills/product-manager/SKILL.md +6 -0
- package/bundled-skills/product-marketing/SKILL.md +1 -1
- package/bundled-skills/production-code-audit/SKILL.md +2 -264
- package/bundled-skills/production-code-audit/references/detailed-guide.md +277 -0
- package/bundled-skills/professional-proofreader/SKILL.md +6 -0
- package/bundled-skills/programmatic-seo/SKILL.md +6 -0
- package/bundled-skills/project-development/SKILL.md +1 -0
- package/bundled-skills/project-skill-audit/SKILL.md +6 -0
- package/bundled-skills/public-relations/SKILL.md +1 -1
- package/bundled-skills/pubmed-database/SKILL.md +1 -0
- package/bundled-skills/push-skill-to-github/SKILL.md +6 -0
- package/bundled-skills/pydantic-models-py/SKILL.md +1 -3
- package/bundled-skills/pypict-skill/SKILL.md +6 -0
- package/bundled-skills/pytest-skill/SKILL.md +1 -1
- package/bundled-skills/qiskit/SKILL.md +1 -0
- package/bundled-skills/quant-analyst/SKILL.md +6 -0
- package/bundled-skills/radix-ui-design-system/SKILL.md +2 -693
- package/bundled-skills/radix-ui-design-system/references/detailed-guide.md +711 -0
- package/bundled-skills/rag-engineer/SKILL.md +6 -0
- package/bundled-skills/rclone-cli/SKILL.md +1 -1
- package/bundled-skills/react-flow-architect/SKILL.md +2 -507
- package/bundled-skills/react-flow-architect/references/detailed-guide.md +517 -0
- package/bundled-skills/react-patterns/SKILL.md +6 -0
- package/bundled-skills/read-all-adrs/SKILL.md +6 -0
- package/bundled-skills/readme/SKILL.md +4 -822
- package/bundled-skills/readme/references/detailed-guide.md +829 -0
- package/bundled-skills/redesign-existing-projects/SKILL.md +6 -0
- package/bundled-skills/redis-cli/SKILL.md +1 -1
- package/bundled-skills/referral-program/SKILL.md +2 -508
- package/bundled-skills/referral-program/references/detailed-guide.md +524 -0
- package/bundled-skills/rehabilitation-analyzer/SKILL.md +5 -629
- package/bundled-skills/rehabilitation-analyzer/references/detailed-guide.md +641 -0
- package/bundled-skills/remotion/SKILL.md +1 -0
- package/bundled-skills/research-prompt/SKILL.md +6 -0
- package/bundled-skills/resolving-merge-conflicts/SKILL.md +6 -0
- package/bundled-skills/review-and-simplify-changes/SKILL.md +7 -1
- package/bundled-skills/review-swarm/SKILL.md +7 -1
- package/bundled-skills/risk-manager/SKILL.md +6 -0
- package/bundled-skills/robius-app-architecture/SKILL.md +1 -0
- package/bundled-skills/robius-event-action/SKILL.md +1 -0
- package/bundled-skills/robius-matrix-integration/SKILL.md +1 -0
- package/bundled-skills/robius-state-management/SKILL.md +1 -0
- package/bundled-skills/robius-widget-patterns/SKILL.md +1 -0
- package/bundled-skills/robot-framework-skill/SKILL.md +1 -1
- package/bundled-skills/ruby-pro/SKILL.md +6 -0
- package/bundled-skills/saga-orchestration/SKILL.md +4 -482
- package/bundled-skills/saga-orchestration/references/detailed-guide.md +491 -0
- package/bundled-skills/sales-automator/SKILL.md +6 -0
- package/bundled-skills/salesforce-development/SKILL.md +2 -985
- package/bundled-skills/salesforce-development/references/detailed-guide.md +994 -0
- package/bundled-skills/sam-altman/SKILL.md +5 -1040
- package/bundled-skills/sam-altman/references/detailed-guide.md +1102 -0
- package/bundled-skills/scala-pro/SKILL.md +6 -0
- package/bundled-skills/scanning-tools/SKILL.md +2 -546
- package/bundled-skills/scanning-tools/references/detailed-guide.md +555 -0
- package/bundled-skills/scanpy/SKILL.md +1 -0
- package/bundled-skills/scarcity-urgency-psychologist/SKILL.md +6 -0
- package/bundled-skills/scientific-writing/SKILL.md +3 -691
- package/bundled-skills/scientific-writing/references/detailed-guide.md +702 -0
- package/bundled-skills/scikit-learn/SKILL.md +3 -462
- package/bundled-skills/scikit-learn/references/detailed-guide.md +475 -0
- package/bundled-skills/scroll-experience/SKILL.md +2 -560
- package/bundled-skills/scroll-experience/references/detailed-guide.md +578 -0
- package/bundled-skills/sdk-dx/SKILL.md +6 -517
- package/bundled-skills/sdk-dx/references/detailed-guide.md +530 -0
- package/bundled-skills/seaborn/SKILL.md +5 -661
- package/bundled-skills/seaborn/references/detailed-guide.md +677 -0
- package/bundled-skills/search-specialist/SKILL.md +6 -0
- package/bundled-skills/secrets-management/SKILL.md +24 -349
- package/bundled-skills/secrets-management/references/github-secrets.md +13 -0
- package/bundled-skills/secrets-management/references/vault-setup.md +13 -0
- package/bundled-skills/security/aws-compliance-checker/SKILL.md +4 -492
- package/bundled-skills/security/aws-compliance-checker/references/detailed-guide.md +502 -0
- package/bundled-skills/security-and-hardening/SKILL.md +8 -6
- package/bundled-skills/security-and-hardening/references/security-checklist.md +13 -0
- package/bundled-skills/security-bluebook-builder/SKILL.md +7 -0
- package/bundled-skills/security-scanning-security-hardening/SKILL.md +6 -0
- package/bundled-skills/security-scanning-security-sast/SKILL.md +2 -463
- package/bundled-skills/security-scanning-security-sast/references/detailed-guide.md +476 -0
- package/bundled-skills/segment-cdp/SKILL.md +8 -822
- package/bundled-skills/segment-cdp/references/detailed-guide.md +830 -0
- package/bundled-skills/selenium-skill/SKILL.md +1 -1
- package/bundled-skills/semgrep-rule-creator/SKILL.md +1 -0
- package/bundled-skills/semgrep-rule-variant-creator/SKILL.md +1 -0
- package/bundled-skills/sendgrid-automation/SKILL.md +6 -0
- package/bundled-skills/seo-audit/SKILL.md +33 -44
- package/bundled-skills/seo-content/SKILL.md +6 -0
- package/bundled-skills/seo-content-auditor/SKILL.md +6 -0
- package/bundled-skills/seo-content-planner/resources/implementation-playbook.md +23 -0
- package/bundled-skills/seo-content-writer/SKILL.md +8 -2
- package/bundled-skills/seo-content-writer/resources/implementation-playbook.md +23 -0
- package/bundled-skills/seo-forensic-incident-response/SKILL.md +6 -0
- package/bundled-skills/seo-fundamentals/SKILL.md +6 -0
- package/bundled-skills/seo-programmatic/SKILL.md +6 -0
- package/bundled-skills/sequence-psychologist/SKILL.md +6 -0
- package/bundled-skills/server-management/SKILL.md +6 -0
- package/bundled-skills/service-mesh-expert/SKILL.md +6 -0
- package/bundled-skills/setup-help/SKILL.md +6 -0
- package/bundled-skills/sexual-health-analyzer/SKILL.md +8 -1109
- package/bundled-skills/sexual-health-analyzer/references/detailed-guide.md +1123 -0
- package/bundled-skills/sharp-coder/SKILL.md +1 -0
- package/bundled-skills/sharp-edges/SKILL.md +1 -0
- package/bundled-skills/shodan-reconnaissance/SKILL.md +2 -356
- package/bundled-skills/shodan-reconnaissance/references/detailed-guide.md +366 -0
- package/bundled-skills/shopify-apps/SKILL.md +2 -1477
- package/bundled-skills/shopify-apps/references/detailed-guide.md +1512 -0
- package/bundled-skills/shopify-development/scripts/.snyk +3 -0
- package/bundled-skills/short/SKILL.md +6 -0
- package/bundled-skills/signup-flow-cro/SKILL.md +6 -0
- package/bundled-skills/simplify-code/SKILL.md +6 -0
- package/bundled-skills/skill-creator/SKILL.md +2 -568
- package/bundled-skills/skill-creator/references/detailed-guide.md +581 -0
- package/bundled-skills/skill-creator-ms/SKILL.md +2 -601
- package/bundled-skills/skill-creator-ms/references/detailed-guide.md +614 -0
- package/bundled-skills/skill-improver/SKILL.md +1 -0
- package/bundled-skills/skill-router/SKILL.md +1 -0
- package/bundled-skills/skill-scanner/SKILL.md +1 -0
- package/bundled-skills/skill-security-audit/SKILL.md +87 -0
- package/bundled-skills/skill-seekers/SKILL.md +6 -0
- package/bundled-skills/skill-writer/SKILL.md +1 -0
- package/bundled-skills/skin-health-analyzer/SKILL.md +8 -696
- package/bundled-skills/skin-health-analyzer/references/detailed-guide.md +710 -0
- package/bundled-skills/slack-automation/SKILL.md +6 -0
- package/bundled-skills/slack-bot-builder/SKILL.md +2 -1372
- package/bundled-skills/slack-bot-builder/references/detailed-guide.md +1395 -0
- package/bundled-skills/slack-gif-creator/.snyk +5 -0
- package/bundled-skills/slack-gif-creator/requirements.txt +2 -2
- package/bundled-skills/sleep-analyzer/SKILL.md +5 -764
- package/bundled-skills/sleep-analyzer/references/detailed-guide.md +773 -0
- package/bundled-skills/slo-implementation/SKILL.md +24 -9
- package/bundled-skills/slo-implementation/references/error-budget.md +13 -0
- package/bundled-skills/slo-implementation/references/slo-definitions.md +13 -0
- package/bundled-skills/slo-implementation/resources/implementation-playbook.md +23 -0
- package/bundled-skills/smartui-skill/SKILL.md +1 -1
- package/bundled-skills/smtp-penetration-testing/SKILL.md +2 -346
- package/bundled-skills/smtp-penetration-testing/references/detailed-guide.md +355 -0
- package/bundled-skills/social-content/SKILL.md +2 -797
- package/bundled-skills/social-content/references/detailed-guide.md +816 -0
- package/bundled-skills/social-proof-architect/SKILL.md +6 -0
- package/bundled-skills/software-architecture/SKILL.md +6 -0
- package/bundled-skills/spec-to-code-compliance/SKILL.md +7 -0
- package/bundled-skills/speckit-updater/SKILL.md +1 -0
- package/bundled-skills/speed/SKILL.md +7 -0
- package/bundled-skills/sql-optimization-patterns/SKILL.md +10 -6
- package/bundled-skills/sql-optimization-patterns/resources/implementation-playbook.md +52 -56
- package/bundled-skills/sred-project-organizer/SKILL.md +1 -0
- package/bundled-skills/sred-work-summary/SKILL.md +1 -0
- package/bundled-skills/statsmodels/SKILL.md +3 -586
- package/bundled-skills/statsmodels/references/detailed-guide.md +600 -0
- package/bundled-skills/steve-jobs/SKILL.md +2 -564
- package/bundled-skills/steve-jobs/references/detailed-guide.md +574 -0
- package/bundled-skills/stitch-loop/SKILL.md +1 -0
- package/bundled-skills/stripe-automation/SKILL.md +6 -0
- package/bundled-skills/stripe-integration/SKILL.md +60 -79
- package/bundled-skills/styleseed-design-review/SKILL.md +1 -1
- package/bundled-skills/subagent-orchestrator/SKILL.md +1 -0
- package/bundled-skills/subject-line-psychologist/SKILL.md +6 -0
- package/bundled-skills/supabase/SKILL.md +1 -1
- package/bundled-skills/supabase-automation/SKILL.md +6 -0
- package/bundled-skills/superpowers-lab/SKILL.md +6 -0
- package/bundled-skills/supply-chain-risk-auditor/SKILL.md +7 -0
- package/bundled-skills/swiftui-expert-skill/SKILL.md +1 -1
- package/bundled-skills/sympy/SKILL.md +3 -426
- package/bundled-skills/sympy/references/detailed-guide.md +439 -0
- package/bundled-skills/systematic-debugging/CREATION-LOG.md +3 -0
- package/bundled-skills/systematic-debugging/SKILL.md +30 -34
- package/bundled-skills/systematic-debugging/condition-based-waiting.md +9 -6
- package/bundled-skills/systematic-debugging/defense-in-depth.md +13 -7
- package/bundled-skills/systematic-debugging/find-polluter.sh +77 -57
- package/bundled-skills/systematic-debugging/root-cause-tracing.md +7 -5
- package/bundled-skills/systematic-debugging/test-academic.md +3 -0
- package/bundled-skills/systematic-debugging/test-pressure-1.md +3 -0
- package/bundled-skills/systematic-debugging/test-pressure-2.md +3 -0
- package/bundled-skills/systematic-debugging/test-pressure-3.md +3 -0
- package/bundled-skills/tcm-constitution-analyzer/SKILL.md +5 -655
- package/bundled-skills/tcm-constitution-analyzer/references/detailed-guide.md +660 -0
- package/bundled-skills/tdd-workflows-tdd-cycle/SKILL.md +6 -0
- package/bundled-skills/technical-tutorials/SKILL.md +5 -483
- package/bundled-skills/technical-tutorials/references/detailed-guide.md +496 -0
- package/bundled-skills/telegram/SKILL.md +2 -541
- package/bundled-skills/telegram/assets/boilerplate/nodejs/package-lock.json +1888 -0
- package/bundled-skills/telegram/assets/boilerplate/nodejs/package.json +3 -0
- package/bundled-skills/telegram/references/detailed-guide.md +569 -0
- package/bundled-skills/telegram-mini-app/SKILL.md +2 -643
- package/bundled-skills/telegram-mini-app/references/detailed-guide.md +661 -0
- package/bundled-skills/temporal-python-pro/SKILL.md +6 -0
- package/bundled-skills/terraform-skill/SKILL.md +4 -417
- package/bundled-skills/terraform-skill/references/detailed-guide.md +430 -0
- package/bundled-skills/test-driven-development/SKILL.md +21 -124
- package/bundled-skills/test-driven-development/testing-anti-patterns.md +6 -6
- package/bundled-skills/test-framework-migration-skill/SKILL.md +7 -1
- package/bundled-skills/threat-modeling-expert/SKILL.md +6 -0
- package/bundled-skills/threejs-animation/SKILL.md +5 -551
- package/bundled-skills/threejs-animation/references/detailed-guide.md +566 -0
- package/bundled-skills/threejs-fundamentals/SKILL.md +5 -525
- package/bundled-skills/threejs-fundamentals/references/detailed-guide.md +535 -0
- package/bundled-skills/threejs-geometry/SKILL.md +5 -572
- package/bundled-skills/threejs-geometry/references/detailed-guide.md +587 -0
- package/bundled-skills/threejs-interaction/SKILL.md +5 -666
- package/bundled-skills/threejs-interaction/references/detailed-guide.md +679 -0
- package/bundled-skills/threejs-lighting/SKILL.md +1 -0
- package/bundled-skills/threejs-loaders/SKILL.md +5 -637
- package/bundled-skills/threejs-loaders/references/detailed-guide.md +651 -0
- package/bundled-skills/threejs-materials/SKILL.md +3 -535
- package/bundled-skills/threejs-materials/references/detailed-guide.md +560 -0
- package/bundled-skills/threejs-postprocessing/SKILL.md +5 -617
- package/bundled-skills/threejs-postprocessing/references/detailed-guide.md +630 -0
- package/bundled-skills/threejs-shaders/SKILL.md +5 -679
- package/bundled-skills/threejs-shaders/references/detailed-guide.md +695 -0
- package/bundled-skills/threejs-skills/SKILL.md +4 -683
- package/bundled-skills/threejs-skills/references/detailed-guide.md +693 -0
- package/bundled-skills/threejs-textures/SKILL.md +5 -630
- package/bundled-skills/threejs-textures/references/detailed-guide.md +649 -0
- package/bundled-skills/to-issues/SKILL.md +5 -0
- package/bundled-skills/to-prd/SKILL.md +5 -0
- package/bundled-skills/todoist-automation/SKILL.md +6 -0
- package/bundled-skills/tools-page-seo-optimizer/SKILL.md +2 -580
- package/bundled-skills/tools-page-seo-optimizer/references/detailed-guide.md +602 -0
- package/bundled-skills/top-web-vulnerabilities/SKILL.md +2 -513
- package/bundled-skills/top-web-vulnerabilities/references/detailed-guide.md +523 -0
- package/bundled-skills/train-sentence-transformers/SKILL.md +1 -1
- package/bundled-skills/transformers-js/SKILL.md +5 -669
- package/bundled-skills/transformers-js/references/detailed-guide.md +683 -0
- package/bundled-skills/travel-health-analyzer/SKILL.md +1 -0
- package/bundled-skills/trello-automation/SKILL.md +6 -0
- package/bundled-skills/trigger-dev/SKILL.md +2 -937
- package/bundled-skills/trigger-dev/references/detailed-guide.md +950 -0
- package/bundled-skills/trust-calibrator/SKILL.md +6 -0
- package/bundled-skills/tutorial-engineer/SKILL.md +6 -0
- package/bundled-skills/twilio-communications/SKILL.md +2 -1549
- package/bundled-skills/twilio-communications/references/detailed-guide.md +1574 -0
- package/bundled-skills/typescript-pro/SKILL.md +6 -0
- package/bundled-skills/ui-a11y/SKILL.md +6 -0
- package/bundled-skills/ui-component/SKILL.md +6 -0
- package/bundled-skills/ui-motion/SKILL.md +7 -1
- package/bundled-skills/ui-pattern/SKILL.md +6 -0
- package/bundled-skills/ui-review/SKILL.md +6 -0
- package/bundled-skills/ui-skills/SKILL.md +6 -0
- package/bundled-skills/ui-tokens/SKILL.md +6 -0
- package/bundled-skills/uniprot-database/SKILL.md +1 -0
- package/bundled-skills/unslop-commit/SKILL.md +1 -1
- package/bundled-skills/unslop-file/SKILL.md +1 -1
- package/bundled-skills/unslop-review/SKILL.md +1 -1
- package/bundled-skills/unsplash-integration/SKILL.md +6 -0
- package/bundled-skills/update-swiftui-apis/SKILL.md +1 -1
- package/bundled-skills/upstash-qstash/SKILL.md +2 -919
- package/bundled-skills/upstash-qstash/references/detailed-guide.md +932 -0
- package/bundled-skills/usage-based-pricing/SKILL.md +5 -395
- package/bundled-skills/usage-based-pricing/references/detailed-guide.md +407 -0
- package/bundled-skills/ux-audit/SKILL.md +6 -0
- package/bundled-skills/ux-flow/SKILL.md +6 -0
- package/bundled-skills/ux-persuasion-engineer/SKILL.md +6 -0
- package/bundled-skills/variant-analysis/SKILL.md +1 -0
- package/bundled-skills/varlock/SKILL.md +1 -0
- package/bundled-skills/varlock-claude-skill/SKILL.md +6 -0
- package/bundled-skills/vector-database-engineer/SKILL.md +6 -0
- package/bundled-skills/vector-database-engineer/resources/implementation-playbook.md +23 -0
- package/bundled-skills/vercel-deployment/SKILL.md +2 -650
- package/bundled-skills/vercel-deployment/references/detailed-guide.md +660 -0
- package/bundled-skills/vexor/SKILL.md +6 -0
- package/bundled-skills/vexor-cli/SKILL.md +1 -0
- package/bundled-skills/videodb/scripts/ws_listener.py +8 -1
- package/bundled-skills/visual-emotion-engineer/SKILL.md +6 -0
- package/bundled-skills/vizcom/SKILL.md +6 -0
- package/bundled-skills/voice-agents/SKILL.md +2 -867
- package/bundled-skills/voice-agents/references/detailed-guide.md +890 -0
- package/bundled-skills/voice-ai-development/SKILL.md +2 -583
- package/bundled-skills/voice-ai-development/references/detailed-guide.md +594 -0
- package/bundled-skills/voice-ai-engine-development/SKILL.md +2 -702
- package/bundled-skills/voice-ai-engine-development/references/detailed-guide.md +720 -0
- package/bundled-skills/warren-buffett/SKILL.md +2 -577
- package/bundled-skills/warren-buffett/references/detailed-guide.md +583 -0
- package/bundled-skills/web-performance-optimization/SKILL.md +2 -214
- package/bundled-skills/web-performance-optimization/references/detailed-guide.md +226 -0
- package/bundled-skills/web-scraper/SKILL.md +2 -728
- package/bundled-skills/web-scraper/references/detailed-guide.md +792 -0
- package/bundled-skills/webflow-automation/SKILL.md +6 -0
- package/bundled-skills/weightloss-analyzer/SKILL.md +1 -0
- package/bundled-skills/wellally-tech/SKILL.md +5 -367
- package/bundled-skills/wellally-tech/references/detailed-guide.md +379 -0
- package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package-lock.json +1881 -0
- package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +3 -0
- package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/python/.snyk +3 -0
- package/bundled-skills/wiki-architect/SKILL.md +6 -0
- package/bundled-skills/wiki-changelog/SKILL.md +6 -0
- package/bundled-skills/wiki-onboarding/SKILL.md +6 -0
- package/bundled-skills/wiki-qa/SKILL.md +6 -0
- package/bundled-skills/wiki-researcher/SKILL.md +6 -0
- package/bundled-skills/windows-privilege-escalation/SKILL.md +131 -0
- package/bundled-skills/windows-privilege-escalation/references/detailed-guide.md +397 -0
- package/bundled-skills/wireshark-analysis/SKILL.md +2 -419
- package/bundled-skills/wireshark-analysis/references/detailed-guide.md +429 -0
- package/bundled-skills/wjttc-builder/SKILL.md +1 -1
- package/bundled-skills/wjttc-tester/SKILL.md +1 -1
- package/bundled-skills/wordpress/SKILL.md +2 -572
- package/bundled-skills/wordpress/references/detailed-guide.md +582 -0
- package/bundled-skills/wordpress-penetration-testing/SKILL.md +68 -0
- package/bundled-skills/wordpress-penetration-testing/references/detailed-guide.md +555 -0
- package/bundled-skills/wordpress-plugin-development/SKILL.md +2 -474
- package/bundled-skills/wordpress-plugin-development/references/detailed-guide.md +485 -0
- package/bundled-skills/wordpress-theme-development/SKILL.md +2 -479
- package/bundled-skills/wordpress-theme-development/references/detailed-guide.md +490 -0
- package/bundled-skills/wordpress-woocommerce-development/SKILL.md +2 -605
- package/bundled-skills/wordpress-woocommerce-development/references/detailed-guide.md +615 -0
- package/bundled-skills/workflow-automation/SKILL.md +2 -875
- package/bundled-skills/workflow-automation/references/detailed-guide.md +902 -0
- package/bundled-skills/writing-great-skills/SKILL.md +5 -0
- package/bundled-skills/x-article-publisher-skill/SKILL.md +6 -0
- package/bundled-skills/x402-express-wrapper/SKILL.md +1 -0
- package/bundled-skills/xss-html-injection/SKILL.md +2 -389
- package/bundled-skills/xss-html-injection/references/detailed-guide.md +399 -0
- package/bundled-skills/yann-lecun/SKILL.md +2 -1431
- package/bundled-skills/yann-lecun/references/detailed-guide.md +1484 -0
- package/bundled-skills/yann-lecun-filosofia/SKILL.md +6 -0
- package/bundled-skills/yann-lecun-tecnico/SKILL.md +2 -485
- package/bundled-skills/yann-lecun-tecnico/references/detailed-guide.md +502 -0
- package/bundled-skills/youtube-seo-optimizer/SKILL.md +4 -884
- package/bundled-skills/youtube-seo-optimizer/references/detailed-guide.md +907 -0
- package/bundled-skills/zapier-make-patterns/SKILL.md +2 -728
- package/bundled-skills/zapier-make-patterns/references/detailed-guide.md +752 -0
- package/bundled-skills/zipai-optimizer/SKILL.md +7 -0
- package/bundled-skills/zoom-automation/SKILL.md +6 -0
- package/package.json +1 -1
- package/skills_index.json +541 -383
- package/bundled-skills/docs/AUDIT.md +0 -3
- package/bundled-skills/docs/BUNDLES.md +0 -3
- package/bundled-skills/docs/CATEGORIZATION_IMPLEMENTATION.md +0 -3
- package/bundled-skills/docs/CI_DRIFT_FIX.md +0 -3
- package/bundled-skills/docs/COMMUNITY_GUIDELINES.md +0 -3
- package/bundled-skills/docs/DATE_TRACKING_IMPLEMENTATION.md +0 -3
- package/bundled-skills/docs/EXAMPLES.md +0 -3
- package/bundled-skills/docs/FAQ.md +0 -3
- package/bundled-skills/docs/GETTING_STARTED.md +0 -3
- package/bundled-skills/docs/KIRO_INTEGRATION.md +0 -3
- package/bundled-skills/docs/QUALITY_BAR.md +0 -3
- package/bundled-skills/docs/README.md +0 -51
- package/bundled-skills/docs/SECURITY_GUARDRAILS.md +0 -3
- package/bundled-skills/docs/SEC_SKILLS.md +0 -3
- package/bundled-skills/docs/SKILLS_DATE_TRACKING.md +0 -3
- package/bundled-skills/docs/SKILL_ANATOMY.md +0 -3
- package/bundled-skills/docs/SKILL_TEMPLATE.md +0 -3
- package/bundled-skills/docs/SMART_AUTO_CATEGORIZATION.md +0 -3
- package/bundled-skills/docs/SOURCES.md +0 -3
- package/bundled-skills/docs/USAGE.md +0 -3
- package/bundled-skills/docs/VISUAL_GUIDE.md +0 -3
- package/bundled-skills/docs/WORKFLOWS.md +0 -3
- package/bundled-skills/docs/contributors/community-guidelines.md +0 -4
- package/bundled-skills/docs/contributors/examples.md +0 -760
- package/bundled-skills/docs/contributors/quality-bar.md +0 -104
- package/bundled-skills/docs/contributors/security-guardrails.md +0 -70
- package/bundled-skills/docs/contributors/skill-anatomy.md +0 -637
- package/bundled-skills/docs/contributors/skill-template.md +0 -93
- package/bundled-skills/docs/integrations/jetski-cortex.md +0 -282
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +0 -103
- package/bundled-skills/docs/integrations/jetski-gemini-loader/loader.mjs +0 -154
- package/bundled-skills/docs/integrations/jetski-gemini-loader/package.json +0 -1
- package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-preview-profile.md +0 -63
- package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-design.md +0 -304
- package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-goal.md +0 -171
- package/bundled-skills/docs/maintainers/aas-agent-first-control-plane-v1-worklog.md +0 -104
- package/bundled-skills/docs/maintainers/audit.md +0 -89
- package/bundled-skills/docs/maintainers/backups/README-2026-06-02.md +0 -687
- package/bundled-skills/docs/maintainers/categorization-implementation.md +0 -160
- package/bundled-skills/docs/maintainers/ci-drift-fix.md +0 -64
- package/bundled-skills/docs/maintainers/date-tracking-implementation.md +0 -66
- package/bundled-skills/docs/maintainers/full-repo-audit-2026-05-23.md +0 -289
- package/bundled-skills/docs/maintainers/legacy-redirect-bridge.md +0 -46
- package/bundled-skills/docs/maintainers/merge-batch.md +0 -81
- package/bundled-skills/docs/maintainers/merging-prs.md +0 -79
- package/bundled-skills/docs/maintainers/pr-autonomy.md +0 -102
- package/bundled-skills/docs/maintainers/provenance-identity-exceptions.json +0 -14
- package/bundled-skills/docs/maintainers/release-notes-7.2.0.md +0 -32
- package/bundled-skills/docs/maintainers/release-process.md +0 -124
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +0 -133
- package/bundled-skills/docs/maintainers/rollback-procedure.md +0 -43
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.csv +0 -34
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-15.md +0 -60
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-18-addendum.md +0 -22
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-addendum.md +0 -48
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.csv +0 -34
- package/bundled-skills/docs/maintainers/security-findings-triage-2026-03-29-refresh.md +0 -86
- package/bundled-skills/docs/maintainers/skills-date-tracking.md +0 -228
- package/bundled-skills/docs/maintainers/skills-import-2026-03-21.md +0 -81
- package/bundled-skills/docs/maintainers/skills-update-guide.md +0 -92
- package/bundled-skills/docs/maintainers/smart-auto-categorization.md +0 -218
- package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/README.md +0 -19
- package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-cases.json +0 -74
- package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/evaluation-results.json +0 -86
- package/bundled-skills/docs/plugin-submissions/aas-agent-mcp-builder/submission.json +0 -41
- package/bundled-skills/docs/sources/LICENSE-MICROSOFT +0 -21
- package/bundled-skills/docs/sources/microsoft-skills-attribution.json +0 -709
- package/bundled-skills/docs/sources/sources.md +0 -179
- package/bundled-skills/docs/users/aas-core.md +0 -225
- package/bundled-skills/docs/users/agent-overload-recovery.md +0 -54
- package/bundled-skills/docs/users/agentic-awesome-skills-vs-awesome-claude-skills.md +0 -44
- package/bundled-skills/docs/users/ai-agent-skills.md +0 -48
- package/bundled-skills/docs/users/best-claude-code-skills-github.md +0 -62
- package/bundled-skills/docs/users/best-cursor-skills-github.md +0 -62
- package/bundled-skills/docs/users/bundles.md +0 -1067
- package/bundled-skills/docs/users/claude-code-skills.md +0 -89
- package/bundled-skills/docs/users/codex-cli-skills.md +0 -88
- package/bundled-skills/docs/users/cursor-skills.md +0 -56
- package/bundled-skills/docs/users/discovery-manifest.md +0 -65
- package/bundled-skills/docs/users/faq.md +0 -521
- package/bundled-skills/docs/users/gemini-cli-skills.md +0 -56
- package/bundled-skills/docs/users/getting-started.md +0 -233
- package/bundled-skills/docs/users/kiro-integration.md +0 -304
- package/bundled-skills/docs/users/local-config.md +0 -152
- package/bundled-skills/docs/users/plugins.md +0 -201
- package/bundled-skills/docs/users/security-and-antivirus.md +0 -63
- package/bundled-skills/docs/users/security-skills.md +0 -1722
- package/bundled-skills/docs/users/skills-library-overview.md +0 -87
- package/bundled-skills/docs/users/skills-vs-mcp-tools.md +0 -108
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +0 -101
- package/bundled-skills/docs/users/usage.md +0 -465
- package/bundled-skills/docs/users/visual-guide.md +0 -515
- package/bundled-skills/docs/users/walkthrough.md +0 -46
- package/bundled-skills/docs/users/windows-truncation-recovery.md +0 -135
- package/bundled-skills/docs/users/workflows.md +0 -215
- package/bundled-skills/docs/vietnamese/AAS_CORE.vi.md +0 -28
- package/bundled-skills/docs/vietnamese/BUNDLES.vi.md +0 -124
- package/bundled-skills/docs/vietnamese/CONTRIBUTING.vi.md +0 -242
- package/bundled-skills/docs/vietnamese/EXAMPLES.vi.md +0 -56
- package/bundled-skills/docs/vietnamese/FAQ.vi.md +0 -195
- package/bundled-skills/docs/vietnamese/GETTING_STARTED.vi.md +0 -123
- package/bundled-skills/docs/vietnamese/QUALITY_BAR.vi.md +0 -69
- package/bundled-skills/docs/vietnamese/README.vi.md +0 -191
- package/bundled-skills/docs/vietnamese/SECURITY.vi.md +0 -19
- package/bundled-skills/docs/vietnamese/SECURITY_GUARDRAILS.vi.md +0 -51
- package/bundled-skills/docs/vietnamese/SKILLS_README.vi.md +0 -106
- package/bundled-skills/docs/vietnamese/SKILL_ANATOMY.vi.md +0 -633
- package/bundled-skills/docs/vietnamese/SOURCES.vi.md +0 -21
- package/bundled-skills/docs/vietnamese/TRANSLATION_PLAN.vi.md +0 -65
- package/bundled-skills/docs/vietnamese/VISUAL_GUIDE.vi.md +0 -511
- package/bundled-skills/docs/walkthrough.md +0 -3
|
@@ -8,908 +8,208 @@ date_added: "2026-02-27"
|
|
|
8
8
|
|
|
9
9
|
# API Security Best Practices
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Review the request boundary from caller identity through authorization, validated
|
|
12
|
+
input, storage and observable response. Preserve the application's actual identity
|
|
13
|
+
provider and data model rather than introducing a second authentication system.
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
## When to Use
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Use when adding a protected endpoint, reviewing object access, replacing permissive
|
|
18
|
+
request parsing, or investigating an API abuse path. For a concrete defect, start
|
|
19
|
+
with the failing route and its callers; do not deploy unrelated security infrastructure.
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
- Use when securing existing APIs
|
|
19
|
-
- Use when implementing authentication and authorization
|
|
20
|
-
- Use when protecting against API attacks (injection, DDoS, etc.)
|
|
21
|
-
- Use when conducting API security reviews
|
|
22
|
-
- Use when preparing for security audits
|
|
23
|
-
- Use when implementing rate limiting and throttling
|
|
24
|
-
- Use when handling sensitive data in APIs
|
|
21
|
+
## Inputs and prerequisites
|
|
25
22
|
|
|
26
|
-
|
|
23
|
+
Record the routes, caller/tenant model, identity provider, token contract, runtime and
|
|
24
|
+
locked dependency versions, database schema, proxy topology and authorized test scope.
|
|
25
|
+
Use synthetic identities in a test environment. Existing task authorization carries
|
|
26
|
+
forward; production scans, account writes and message sends need their own authority.
|
|
27
|
+
The Node examples below are integration sketches for Express, jsonwebtoken and Zod;
|
|
28
|
+
application/database adapters are deliberately named rather than presented as a full
|
|
29
|
+
runnable service. Confirm APIs against the installed versions before integrating.
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
## 1. Authenticate the exact token contract
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- Secure session management
|
|
35
|
-
- Implement multi-factor authentication (MFA)
|
|
33
|
+
Prefer the established provider/session middleware. When the service owns an HMAC
|
|
34
|
+
JWT contract, require a strong server-owned key, a fixed algorithm, exact issuer and
|
|
35
|
+
audience, and required runtime claims. Do not infer permissions from a decoded token
|
|
36
|
+
before signature verification. Never accept a caller-selected verification algorithm.
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Protect against injection attacks:
|
|
40
|
-
- Validate all input data
|
|
41
|
-
- Sanitize user inputs
|
|
42
|
-
- Use parameterized queries
|
|
43
|
-
- Implement request schema validation
|
|
44
|
-
- Prevent SQL injection, XSS, and command injection
|
|
45
|
-
|
|
46
|
-
### Step 3: Rate Limiting & Throttling
|
|
47
|
-
|
|
48
|
-
Prevent abuse and DDoS attacks:
|
|
49
|
-
- Implement rate limiting per user/IP
|
|
50
|
-
- Set up API throttling
|
|
51
|
-
- Configure request quotas
|
|
52
|
-
- Handle rate limit errors gracefully
|
|
53
|
-
- Monitor for suspicious activity
|
|
54
|
-
|
|
55
|
-
### Step 4: Data Protection
|
|
56
|
-
|
|
57
|
-
Secure sensitive data:
|
|
58
|
-
- Encrypt data in transit (HTTPS/TLS)
|
|
59
|
-
- Encrypt sensitive data at rest
|
|
60
|
-
- Implement proper error handling (no data leaks)
|
|
61
|
-
- Sanitize error messages
|
|
62
|
-
- Use secure headers
|
|
63
|
-
|
|
64
|
-
### Step 5: API Security Testing
|
|
65
|
-
|
|
66
|
-
Verify security implementation:
|
|
67
|
-
- Test authentication and authorization
|
|
68
|
-
- Perform penetration testing
|
|
69
|
-
- Check for common vulnerabilities (OWASP API Top 10)
|
|
70
|
-
- Validate input handling
|
|
71
|
-
- Test rate limiting
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
## Examples
|
|
75
|
-
|
|
76
|
-
### Example 1: Implementing JWT Authentication
|
|
77
|
-
|
|
78
|
-
```markdown
|
|
79
|
-
## Secure JWT Authentication Implementation
|
|
80
|
-
|
|
81
|
-
### Authentication Flow
|
|
82
|
-
|
|
83
|
-
1. User logs in with credentials
|
|
84
|
-
2. Server validates credentials
|
|
85
|
-
3. Server generates JWT token
|
|
86
|
-
4. Client stores token securely
|
|
87
|
-
5. Client sends token with each request
|
|
88
|
-
6. Server validates token
|
|
89
|
-
|
|
90
|
-
### Implementation
|
|
91
|
-
|
|
92
|
-
#### 1. Generate Secure JWT Tokens
|
|
93
|
-
|
|
94
|
-
\`\`\`javascript
|
|
95
|
-
// auth.js
|
|
96
|
-
const jwt = require('jsonwebtoken');
|
|
97
|
-
const bcrypt = require('bcrypt');
|
|
98
|
-
|
|
99
|
-
// Login endpoint
|
|
100
|
-
app.post('/api/auth/login', async (req, res) => {
|
|
101
|
-
try {
|
|
102
|
-
const { email, password } = req.body;
|
|
103
|
-
|
|
104
|
-
// Validate input
|
|
105
|
-
if (!email || !password) {
|
|
106
|
-
return res.status(400).json({
|
|
107
|
-
error: 'Email and password are required'
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Find user
|
|
112
|
-
const user = await db.user.findUnique({
|
|
113
|
-
where: { email }
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
if (!user) {
|
|
117
|
-
// Don't reveal if user exists
|
|
118
|
-
return res.status(401).json({
|
|
119
|
-
error: 'Invalid credentials'
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Verify password
|
|
124
|
-
const validPassword = await bcrypt.compare(
|
|
125
|
-
password,
|
|
126
|
-
user.passwordHash
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
if (!validPassword) {
|
|
130
|
-
return res.status(401).json({
|
|
131
|
-
error: 'Invalid credentials'
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Generate JWT token
|
|
136
|
-
const token = jwt.sign(
|
|
137
|
-
{
|
|
138
|
-
userId: user.id,
|
|
139
|
-
email: user.email,
|
|
140
|
-
role: user.role
|
|
141
|
-
},
|
|
142
|
-
process.env.JWT_SECRET,
|
|
143
|
-
{
|
|
144
|
-
expiresIn: '1h',
|
|
145
|
-
issuer: 'your-app',
|
|
146
|
-
audience: 'your-app-users'
|
|
147
|
-
}
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
// Generate refresh token
|
|
151
|
-
const refreshToken = jwt.sign(
|
|
152
|
-
{ userId: user.id },
|
|
153
|
-
process.env.JWT_REFRESH_SECRET,
|
|
154
|
-
{ expiresIn: '7d' }
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
// Store refresh token in database
|
|
158
|
-
await db.refreshToken.create({
|
|
159
|
-
data: {
|
|
160
|
-
token: refreshToken,
|
|
161
|
-
userId: user.id,
|
|
162
|
-
expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000)
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
res.json({
|
|
167
|
-
token,
|
|
168
|
-
refreshToken,
|
|
169
|
-
expiresIn: 3600
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
} catch (error) {
|
|
173
|
-
console.error('Login error:', error);
|
|
174
|
-
res.status(500).json({
|
|
175
|
-
error: 'An error occurred during login'
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
\`\`\`
|
|
180
|
-
|
|
181
|
-
#### 2. Verify JWT Tokens (Middleware)
|
|
182
|
-
|
|
183
|
-
\`\`\`javascript
|
|
184
|
-
// middleware/auth.js
|
|
38
|
+
```javascript
|
|
185
39
|
const jwt = require('jsonwebtoken');
|
|
186
40
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
(err, user) => {
|
|
207
|
-
if (err) {
|
|
208
|
-
if (err.name === 'TokenExpiredError') {
|
|
209
|
-
return res.status(401).json({
|
|
210
|
-
error: 'Token expired'
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return res.status(403).json({
|
|
214
|
-
error: 'Invalid token'
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
// Attach user to request
|
|
219
|
-
req.user = user;
|
|
220
|
-
next();
|
|
221
|
-
}
|
|
222
|
-
);
|
|
41
|
+
// Illustrative first-party access-token contract; not a third-party OAuth adapter.
|
|
42
|
+
const ACCESS_POLICY = {
|
|
43
|
+
algorithms: ['HS256'], issuer: 'example-auth', audience: 'example-api'
|
|
44
|
+
};
|
|
45
|
+
function verifyAccessToken(token, signingKey) {
|
|
46
|
+
const claims = jwt.verify(token, signingKey, ACCESS_POLICY);
|
|
47
|
+
if (!claims || typeof claims !== 'object' ||
|
|
48
|
+
typeof claims.sub !== 'string' || !claims.sub ||
|
|
49
|
+
typeof claims.tenantId !== 'string' || !claims.tenantId ||
|
|
50
|
+
!Number.isSafeInteger(claims.exp) || !Number.isSafeInteger(claims.iat) ||
|
|
51
|
+
claims.exp <= claims.iat) {
|
|
52
|
+
throw new Error('Invalid access claims');
|
|
53
|
+
}
|
|
54
|
+
return { subject: claims.sub, tenantId: claims.tenantId };
|
|
55
|
+
}
|
|
56
|
+
function readBearer(header) {
|
|
57
|
+
if (typeof header !== 'string' || header.length > 8192) return null;
|
|
58
|
+
const match = /^Bearer ([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+)$/i.exec(header);
|
|
59
|
+
return match ? match[1] : null;
|
|
223
60
|
}
|
|
224
|
-
|
|
225
|
-
module.exports = { authenticateToken };
|
|
226
|
-
\`\`\`
|
|
227
|
-
|
|
228
|
-
#### 3. Protect Routes
|
|
229
|
-
|
|
230
|
-
\`\`\`javascript
|
|
231
|
-
const { authenticateToken } = require('./middleware/auth');
|
|
232
|
-
|
|
233
|
-
// Protected route
|
|
234
|
-
app.get('/api/user/profile', authenticateToken, async (req, res) => {
|
|
235
|
-
try {
|
|
236
|
-
const user = await db.user.findUnique({
|
|
237
|
-
where: { id: req.user.userId },
|
|
238
|
-
select: {
|
|
239
|
-
id: true,
|
|
240
|
-
email: true,
|
|
241
|
-
name: true,
|
|
242
|
-
// Don't return passwordHash
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
res.json(user);
|
|
247
|
-
} catch (error) {
|
|
248
|
-
res.status(500).json({ error: 'Server error' });
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
\`\`\`
|
|
252
|
-
|
|
253
|
-
#### 4. Implement Token Refresh
|
|
254
|
-
|
|
255
|
-
\`\`\`javascript
|
|
256
|
-
app.post('/api/auth/refresh', async (req, res) => {
|
|
257
|
-
const { refreshToken } = req.body;
|
|
258
|
-
|
|
259
|
-
if (!refreshToken) {
|
|
260
|
-
return res.status(401).json({
|
|
261
|
-
error: 'Refresh token required'
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
try {
|
|
266
|
-
// Verify refresh token
|
|
267
|
-
const decoded = jwt.verify(
|
|
268
|
-
refreshToken,
|
|
269
|
-
process.env.JWT_REFRESH_SECRET
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
// Check if refresh token exists in database
|
|
273
|
-
const storedToken = await db.refreshToken.findFirst({
|
|
274
|
-
where: {
|
|
275
|
-
token: refreshToken,
|
|
276
|
-
userId: decoded.userId,
|
|
277
|
-
expiresAt: { gt: new Date() }
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
if (!storedToken) {
|
|
282
|
-
return res.status(403).json({
|
|
283
|
-
error: 'Invalid refresh token'
|
|
284
|
-
});
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// Generate new access token
|
|
288
|
-
const user = await db.user.findUnique({
|
|
289
|
-
where: { id: decoded.userId }
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
const newToken = jwt.sign(
|
|
293
|
-
{
|
|
294
|
-
userId: user.id,
|
|
295
|
-
email: user.email,
|
|
296
|
-
role: user.role
|
|
297
|
-
},
|
|
298
|
-
process.env.JWT_SECRET,
|
|
299
|
-
{ expiresIn: '1h' }
|
|
300
|
-
);
|
|
301
|
-
|
|
302
|
-
res.json({
|
|
303
|
-
token: newToken,
|
|
304
|
-
expiresIn: 3600
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
} catch (error) {
|
|
308
|
-
res.status(403).json({
|
|
309
|
-
error: 'Invalid refresh token'
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
});
|
|
313
|
-
\`\`\`
|
|
314
|
-
|
|
315
|
-
### Security Best Practices
|
|
316
|
-
|
|
317
|
-
- ✅ Use strong JWT secrets (256-bit minimum)
|
|
318
|
-
- ✅ Set short expiration times (1 hour for access tokens)
|
|
319
|
-
- ✅ Implement refresh tokens for long-lived sessions
|
|
320
|
-
- ✅ Store refresh tokens in database (can be revoked)
|
|
321
|
-
- ✅ Use HTTPS only
|
|
322
|
-
- ✅ Don't store sensitive data in JWT payload
|
|
323
|
-
- ✅ Validate token issuer and audience
|
|
324
|
-
- ✅ Implement token blacklisting for logout
|
|
325
61
|
```
|
|
326
62
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
app.get('/api/users/:id', async (req, res) => {
|
|
360
|
-
const userId = req.params.id;
|
|
361
|
-
|
|
362
|
-
// Validate input first
|
|
363
|
-
if (!userId || !/^\d+$/.test(userId)) {
|
|
364
|
-
return res.status(400).json({
|
|
365
|
-
error: 'Invalid user ID'
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// Use parameterized query
|
|
370
|
-
const user = await db.query(
|
|
371
|
-
'SELECT id, email, name FROM users WHERE id = $1',
|
|
372
|
-
[userId]
|
|
373
|
-
);
|
|
374
|
-
|
|
375
|
-
if (!user) {
|
|
376
|
-
return res.status(404).json({
|
|
377
|
-
error: 'User not found'
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
res.json(user);
|
|
382
|
-
});
|
|
383
|
-
\`\`\`
|
|
384
|
-
|
|
385
|
-
#### 2. Use ORM with Proper Escaping
|
|
386
|
-
|
|
387
|
-
\`\`\`javascript
|
|
388
|
-
// ✅ Safe: Using Prisma ORM
|
|
389
|
-
app.get('/api/users/:id', async (req, res) => {
|
|
390
|
-
const userId = parseInt(req.params.id);
|
|
391
|
-
|
|
392
|
-
if (isNaN(userId)) {
|
|
393
|
-
return res.status(400).json({
|
|
394
|
-
error: 'Invalid user ID'
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
const user = await prisma.user.findUnique({
|
|
399
|
-
where: { id: userId },
|
|
400
|
-
select: {
|
|
401
|
-
id: true,
|
|
402
|
-
email: true,
|
|
403
|
-
name: true,
|
|
404
|
-
// Don't select sensitive fields
|
|
405
|
-
}
|
|
63
|
+
Issue access tokens with the same issuer/audience/algorithm and a short application-
|
|
64
|
+
approved expiration. Handle verification failure as a generic 401 without echoing the
|
|
65
|
+
token or exception. Expiration alone does not revoke a token; define revocation or
|
|
66
|
+
short-lived sessions according to the actual threat model. A service using asymmetric
|
|
67
|
+
provider keys needs the provider's discovery/JWKS validation and key-rotation policy,
|
|
68
|
+
not this HMAC example. Never reuse an access token as a refresh token.
|
|
69
|
+
|
|
70
|
+
### Refresh sessions
|
|
71
|
+
|
|
72
|
+
Use the provider's supported session flow or a server-side opaque refresh design:
|
|
73
|
+
store only a digest, expiry, user/session family and revocation state. In one atomic
|
|
74
|
+
transaction consume the old active token and create the replacement. Concurrent reuse
|
|
75
|
+
must not issue two successors; defined reuse handling revokes the affected family.
|
|
76
|
+
Check current user status and permissions when issuing new access tokens. Bind refresh
|
|
77
|
+
to the intended client/session and protect cookie-based requests against CSRF. Do not
|
|
78
|
+
log tokens, store them plaintext in a database, or return a refresh token through a URL.
|
|
79
|
+
Test simultaneous refresh, expiry, replay, revocation and transaction failure before
|
|
80
|
+
calling the flow complete. No database transaction adapter is bundled here.
|
|
81
|
+
|
|
82
|
+
## 2. Authorize the resource and operation
|
|
83
|
+
|
|
84
|
+
Authentication identifies the caller; authorization decides the exact operation on
|
|
85
|
+
an object and tenant. A role name does not automatically grant cross-tenant access.
|
|
86
|
+
Apply the owner/tenant predicate in the database mutation to avoid a check-then-write
|
|
87
|
+
race, and allowlist writable properties. Use 404/403 consistently with the product's
|
|
88
|
+
resource-disclosure policy.
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
// Prisma-style sketch; id and tenant types must match your actual schema.
|
|
92
|
+
async function deleteOwnedPost(prisma, postId, principal) {
|
|
93
|
+
const result = await prisma.post.deleteMany({
|
|
94
|
+
where: { id: postId, userId: principal.subject, tenantId: principal.tenantId }
|
|
406
95
|
});
|
|
407
|
-
|
|
408
|
-
if (!user) {
|
|
409
|
-
return res.status(404).json({
|
|
410
|
-
error: 'User not found'
|
|
411
|
-
});
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
res.json(user);
|
|
415
|
-
});
|
|
416
|
-
\`\`\`
|
|
417
|
-
|
|
418
|
-
#### 3. Implement Request Validation with Zod
|
|
419
|
-
|
|
420
|
-
\`\`\`javascript
|
|
421
|
-
const { z } = require('zod');
|
|
422
|
-
|
|
423
|
-
// Define validation schema
|
|
424
|
-
const createUserSchema = z.object({
|
|
425
|
-
email: z.string().email('Invalid email format'),
|
|
426
|
-
password: z.string()
|
|
427
|
-
.min(8, 'Password must be at least 8 characters')
|
|
428
|
-
.regex(/[A-Z]/, 'Password must contain uppercase letter')
|
|
429
|
-
.regex(/[a-z]/, 'Password must contain lowercase letter')
|
|
430
|
-
.regex(/[0-9]/, 'Password must contain number'),
|
|
431
|
-
name: z.string()
|
|
432
|
-
.min(2, 'Name must be at least 2 characters')
|
|
433
|
-
.max(100, 'Name too long'),
|
|
434
|
-
age: z.number()
|
|
435
|
-
.int('Age must be an integer')
|
|
436
|
-
.min(18, 'Must be 18 or older')
|
|
437
|
-
.max(120, 'Invalid age')
|
|
438
|
-
.optional()
|
|
439
|
-
});
|
|
440
|
-
|
|
441
|
-
// Validation middleware
|
|
442
|
-
function validateRequest(schema) {
|
|
443
|
-
return (req, res, next) => {
|
|
444
|
-
try {
|
|
445
|
-
schema.parse(req.body);
|
|
446
|
-
next();
|
|
447
|
-
} catch (error) {
|
|
448
|
-
res.status(400).json({
|
|
449
|
-
error: 'Validation failed',
|
|
450
|
-
details: error.errors
|
|
451
|
-
});
|
|
452
|
-
}
|
|
453
|
-
};
|
|
96
|
+
return result.count === 1;
|
|
454
97
|
}
|
|
455
|
-
|
|
456
|
-
// Use validation
|
|
457
|
-
app.post('/api/users',
|
|
458
|
-
validateRequest(createUserSchema),
|
|
459
|
-
async (req, res) => {
|
|
460
|
-
// Input is validated at this point
|
|
461
|
-
const { email, password, name, age } = req.body;
|
|
462
|
-
|
|
463
|
-
// Hash password
|
|
464
|
-
const passwordHash = await bcrypt.hash(password, 10);
|
|
465
|
-
|
|
466
|
-
// Create user
|
|
467
|
-
const user = await prisma.user.create({
|
|
468
|
-
data: {
|
|
469
|
-
email,
|
|
470
|
-
passwordHash,
|
|
471
|
-
name,
|
|
472
|
-
age
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
|
|
476
|
-
// Don't return password hash
|
|
477
|
-
const { passwordHash: _, ...userWithoutPassword } = user;
|
|
478
|
-
res.status(201).json(userWithoutPassword);
|
|
479
|
-
}
|
|
480
|
-
);
|
|
481
|
-
\`\`\`
|
|
482
|
-
|
|
483
|
-
#### 4. Sanitize Output to Prevent XSS
|
|
484
|
-
|
|
485
|
-
\`\`\`javascript
|
|
486
|
-
const DOMPurify = require('isomorphic-dompurify');
|
|
487
|
-
|
|
488
|
-
app.post('/api/comments', authenticateToken, async (req, res) => {
|
|
489
|
-
const { content } = req.body;
|
|
490
|
-
|
|
491
|
-
// Validate
|
|
492
|
-
if (!content || content.length > 1000) {
|
|
493
|
-
return res.status(400).json({
|
|
494
|
-
error: 'Invalid comment content'
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
// Sanitize HTML to prevent XSS
|
|
499
|
-
const sanitizedContent = DOMPurify.sanitize(content, {
|
|
500
|
-
ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a'],
|
|
501
|
-
ALLOWED_ATTR: ['href']
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
const comment = await prisma.comment.create({
|
|
505
|
-
data: {
|
|
506
|
-
content: sanitizedContent,
|
|
507
|
-
userId: req.user.userId
|
|
508
|
-
}
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
res.status(201).json(comment);
|
|
512
|
-
});
|
|
513
|
-
\`\`\`
|
|
514
|
-
|
|
515
|
-
### Validation Checklist
|
|
516
|
-
|
|
517
|
-
- [ ] Validate all user inputs
|
|
518
|
-
- [ ] Use parameterized queries or ORM
|
|
519
|
-
- [ ] Validate data types (string, number, email, etc.)
|
|
520
|
-
- [ ] Validate data ranges (min/max length, value ranges)
|
|
521
|
-
- [ ] Sanitize HTML content
|
|
522
|
-
- [ ] Escape special characters
|
|
523
|
-
- [ ] Validate file uploads (type, size, content)
|
|
524
|
-
- [ ] Use allowlists, not blocklists
|
|
525
98
|
```
|
|
526
99
|
|
|
100
|
+
An administrator path needs an explicit separate policy and audit event; do not add
|
|
101
|
+
an implicit admin bypass to every owner check. Test a valid user accessing another
|
|
102
|
+
user's object, the same ID in another tenant, deleted memberships and bulk endpoints.
|
|
527
103
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
```markdown
|
|
531
|
-
## Implementing Rate Limiting
|
|
532
|
-
|
|
533
|
-
### Why Rate Limiting?
|
|
534
|
-
|
|
535
|
-
- Prevent brute force attacks
|
|
536
|
-
- Protect against DDoS
|
|
537
|
-
- Prevent API abuse
|
|
538
|
-
- Ensure fair usage
|
|
539
|
-
- Reduce server costs
|
|
540
|
-
|
|
541
|
-
### Implementation with Express Rate Limit
|
|
542
|
-
|
|
543
|
-
\`\`\`javascript
|
|
544
|
-
const rateLimit = require('express-rate-limit');
|
|
545
|
-
const RedisStore = require('rate-limit-redis');
|
|
546
|
-
const Redis = require('ioredis');
|
|
547
|
-
|
|
548
|
-
// Create Redis client
|
|
549
|
-
const redis = new Redis({
|
|
550
|
-
host: process.env.REDIS_HOST,
|
|
551
|
-
port: process.env.REDIS_PORT
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
// General API rate limit
|
|
555
|
-
const apiLimiter = rateLimit({
|
|
556
|
-
store: new RedisStore({
|
|
557
|
-
client: redis,
|
|
558
|
-
prefix: 'rl:api:'
|
|
559
|
-
}),
|
|
560
|
-
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
561
|
-
max: 100, // 100 requests per window
|
|
562
|
-
message: {
|
|
563
|
-
error: 'Too many requests, please try again later',
|
|
564
|
-
retryAfter: 900 // seconds
|
|
565
|
-
},
|
|
566
|
-
standardHeaders: true, // Return rate limit info in headers
|
|
567
|
-
legacyHeaders: false,
|
|
568
|
-
// Custom key generator (by user ID or IP)
|
|
569
|
-
keyGenerator: (req) => {
|
|
570
|
-
return req.user?.userId || req.ip;
|
|
571
|
-
}
|
|
572
|
-
});
|
|
573
|
-
|
|
574
|
-
// Strict rate limit for authentication endpoints
|
|
575
|
-
const authLimiter = rateLimit({
|
|
576
|
-
store: new RedisStore({
|
|
577
|
-
client: redis,
|
|
578
|
-
prefix: 'rl:auth:'
|
|
579
|
-
}),
|
|
580
|
-
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
581
|
-
max: 5, // Only 5 login attempts per 15 minutes
|
|
582
|
-
skipSuccessfulRequests: true, // Don't count successful logins
|
|
583
|
-
message: {
|
|
584
|
-
error: 'Too many login attempts, please try again later',
|
|
585
|
-
retryAfter: 900
|
|
586
|
-
}
|
|
587
|
-
});
|
|
588
|
-
|
|
589
|
-
// Apply rate limiters
|
|
590
|
-
app.use('/api/', apiLimiter);
|
|
591
|
-
app.use('/api/auth/login', authLimiter);
|
|
592
|
-
app.use('/api/auth/register', authLimiter);
|
|
593
|
-
|
|
594
|
-
// Custom rate limiter for expensive operations
|
|
595
|
-
const expensiveLimiter = rateLimit({
|
|
596
|
-
windowMs: 60 * 60 * 1000, // 1 hour
|
|
597
|
-
max: 10, // 10 requests per hour
|
|
598
|
-
message: {
|
|
599
|
-
error: 'Rate limit exceeded for this operation'
|
|
600
|
-
}
|
|
601
|
-
});
|
|
104
|
+
## 3. Parse once, then use the validated value
|
|
602
105
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
);
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
return async (req, res, next) => {
|
|
624
|
-
const user = req.user;
|
|
625
|
-
const tier = user?.tier || 'free';
|
|
626
|
-
const limit = limits[tier];
|
|
627
|
-
|
|
628
|
-
const key = \`rl:user:\${user.userId}\`;
|
|
629
|
-
const current = await redis.incr(key);
|
|
630
|
-
|
|
631
|
-
if (current === 1) {
|
|
632
|
-
await redis.expire(key, limit.windowMs / 1000);
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
if (current > limit.max) {
|
|
636
|
-
return res.status(429).json({
|
|
637
|
-
error: 'Rate limit exceeded',
|
|
638
|
-
limit: limit.max,
|
|
639
|
-
remaining: 0,
|
|
640
|
-
reset: await redis.ttl(key)
|
|
641
|
-
});
|
|
106
|
+
Reject partial numeric parses (`12abc` is not ID 12), unsafe integers, unexpected
|
|
107
|
+
properties and oversized requests. Use parameterized database queries. An ORM does
|
|
108
|
+
not provide business authorization or make unsafe raw SQL safe.
|
|
109
|
+
|
|
110
|
+
```javascript
|
|
111
|
+
function parsePositiveId(raw) {
|
|
112
|
+
if (typeof raw !== 'string' || !/^[1-9][0-9]{0,15}$/.test(raw)) return null;
|
|
113
|
+
const value = Number(raw);
|
|
114
|
+
return Number.isSafeInteger(value) && value > 0 ? value : null;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const { z } = require('zod');
|
|
118
|
+
const profileUpdate = z.object({
|
|
119
|
+
displayName: z.string().trim().min(1).max(100)
|
|
120
|
+
}).strict();
|
|
121
|
+
function validateBody(schema) {
|
|
122
|
+
return (req, res, next) => {
|
|
123
|
+
const parsed = schema.safeParse(req.body);
|
|
124
|
+
if (!parsed.success) {
|
|
125
|
+
return res.status(400).json({ error: 'Invalid request' });
|
|
642
126
|
}
|
|
643
|
-
|
|
644
|
-
// Set rate limit headers
|
|
645
|
-
res.set({
|
|
646
|
-
'X-RateLimit-Limit': limit.max,
|
|
647
|
-
'X-RateLimit-Remaining': limit.max - current,
|
|
648
|
-
'X-RateLimit-Reset': await redis.ttl(key)
|
|
649
|
-
});
|
|
650
|
-
|
|
127
|
+
req.validatedBody = parsed.data; // Defaults/transforms must reach the handler.
|
|
651
128
|
next();
|
|
652
129
|
};
|
|
653
130
|
}
|
|
654
|
-
|
|
655
|
-
app.use('/api/', authenticateToken, createTieredRateLimiter());
|
|
656
|
-
\`\`\`
|
|
657
|
-
|
|
658
|
-
### DDoS Protection with Helmet
|
|
659
|
-
|
|
660
|
-
\`\`\`javascript
|
|
661
|
-
const helmet = require('helmet');
|
|
662
|
-
|
|
663
|
-
app.use(helmet({
|
|
664
|
-
// Content Security Policy
|
|
665
|
-
contentSecurityPolicy: {
|
|
666
|
-
directives: {
|
|
667
|
-
defaultSrc: ["'self'"],
|
|
668
|
-
styleSrc: ["'self'", "'unsafe-inline'"],
|
|
669
|
-
scriptSrc: ["'self'"],
|
|
670
|
-
imgSrc: ["'self'", 'data:', 'https:']
|
|
671
|
-
}
|
|
672
|
-
},
|
|
673
|
-
// Prevent clickjacking
|
|
674
|
-
frameguard: { action: 'deny' },
|
|
675
|
-
// Hide X-Powered-By header
|
|
676
|
-
hidePoweredBy: true,
|
|
677
|
-
// Prevent MIME type sniffing
|
|
678
|
-
noSniff: true,
|
|
679
|
-
// Enable HSTS
|
|
680
|
-
hsts: {
|
|
681
|
-
maxAge: 31536000,
|
|
682
|
-
includeSubDomains: true,
|
|
683
|
-
preload: true
|
|
684
|
-
}
|
|
685
|
-
}));
|
|
686
|
-
\`\`\`
|
|
687
|
-
|
|
688
|
-
### Rate Limit Response Headers
|
|
689
|
-
|
|
690
|
-
\`\`\`
|
|
691
|
-
X-RateLimit-Limit: 100
|
|
692
|
-
X-RateLimit-Remaining: 87
|
|
693
|
-
X-RateLimit-Reset: 1640000000
|
|
694
|
-
Retry-After: 900
|
|
695
|
-
\`\`\`
|
|
131
|
+
// Handler uses req.validatedBody, never the original body or an arbitrary spread.
|
|
696
132
|
```
|
|
697
133
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
return res.status(400).json({
|
|
763
|
-
error: 'Password too weak',
|
|
764
|
-
suggestions: result.feedback.suggestions
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
\`\`\`
|
|
768
|
-
|
|
769
|
-
### Problem: Missing Authorization Checks
|
|
770
|
-
**Symptoms:** Users can access resources they shouldn't
|
|
771
|
-
**Solution:**
|
|
772
|
-
\`\`\`javascript
|
|
773
|
-
// ❌ Bad: Only checks authentication
|
|
774
|
-
app.delete('/api/posts/:id', authenticateToken, async (req, res) => {
|
|
775
|
-
await prisma.post.delete({ where: { id: req.params.id } });
|
|
776
|
-
res.json({ success: true });
|
|
777
|
-
});
|
|
778
|
-
|
|
779
|
-
// ✅ Good: Checks both authentication and authorization
|
|
780
|
-
app.delete('/api/posts/:id', authenticateToken, async (req, res) => {
|
|
781
|
-
const post = await prisma.post.findUnique({
|
|
782
|
-
where: { id: req.params.id }
|
|
783
|
-
});
|
|
784
|
-
|
|
785
|
-
if (!post) {
|
|
786
|
-
return res.status(404).json({ error: 'Post not found' });
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
// Check if user owns the post or is admin
|
|
790
|
-
if (post.userId !== req.user.userId && req.user.role !== 'admin') {
|
|
791
|
-
return res.status(403).json({
|
|
792
|
-
error: 'Not authorized to delete this post'
|
|
793
|
-
});
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
await prisma.post.delete({ where: { id: req.params.id } });
|
|
797
|
-
res.json({ success: true });
|
|
798
|
-
});
|
|
799
|
-
\`\`\`
|
|
800
|
-
|
|
801
|
-
### Problem: Verbose Error Messages
|
|
802
|
-
**Symptoms:** Error messages reveal system details
|
|
803
|
-
**Solution:**
|
|
804
|
-
\`\`\`javascript
|
|
805
|
-
// ❌ Bad: Exposes database details
|
|
806
|
-
app.post('/api/users', async (req, res) => {
|
|
807
|
-
try {
|
|
808
|
-
const user = await prisma.user.create({ data: req.body });
|
|
809
|
-
res.json(user);
|
|
810
|
-
} catch (error) {
|
|
811
|
-
res.status(500).json({ error: error.message });
|
|
812
|
-
// Error: "Unique constraint failed on the fields: (`email`)"
|
|
813
|
-
}
|
|
814
|
-
});
|
|
815
|
-
|
|
816
|
-
// ✅ Good: Generic error message
|
|
817
|
-
app.post('/api/users', async (req, res) => {
|
|
818
|
-
try {
|
|
819
|
-
const user = await prisma.user.create({ data: req.body });
|
|
820
|
-
res.json(user);
|
|
821
|
-
} catch (error) {
|
|
822
|
-
console.error('User creation error:', error); // Log full error
|
|
823
|
-
|
|
824
|
-
if (error.code === 'P2002') {
|
|
825
|
-
return res.status(400).json({
|
|
826
|
-
error: 'Email already exists'
|
|
827
|
-
});
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
res.status(500).json({
|
|
831
|
-
error: 'An error occurred while creating user'
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
});
|
|
835
|
-
\`\`\`
|
|
836
|
-
|
|
837
|
-
## Security Checklist
|
|
838
|
-
|
|
839
|
-
### Authentication & Authorization
|
|
840
|
-
- [ ] Implement strong authentication (JWT, OAuth 2.0)
|
|
841
|
-
- [ ] Use HTTPS for all endpoints
|
|
842
|
-
- [ ] Hash passwords with bcrypt (salt rounds >= 10)
|
|
843
|
-
- [ ] Implement token expiration
|
|
844
|
-
- [ ] Add refresh token mechanism
|
|
845
|
-
- [ ] Verify user authorization for each request
|
|
846
|
-
- [ ] Implement role-based access control (RBAC)
|
|
847
|
-
|
|
848
|
-
### Input Validation
|
|
849
|
-
- [ ] Validate all user inputs
|
|
850
|
-
- [ ] Use parameterized queries or ORM
|
|
851
|
-
- [ ] Sanitize HTML content
|
|
852
|
-
- [ ] Validate file uploads
|
|
853
|
-
- [ ] Implement request schema validation
|
|
854
|
-
- [ ] Use allowlists, not blocklists
|
|
855
|
-
|
|
856
|
-
### Rate Limiting & DDoS Protection
|
|
857
|
-
- [ ] Implement rate limiting per user/IP
|
|
858
|
-
- [ ] Add stricter limits for auth endpoints
|
|
859
|
-
- [ ] Use Redis for distributed rate limiting
|
|
860
|
-
- [ ] Return proper rate limit headers
|
|
861
|
-
- [ ] Implement request throttling
|
|
862
|
-
|
|
863
|
-
### Data Protection
|
|
864
|
-
- [ ] Use HTTPS/TLS for all traffic
|
|
865
|
-
- [ ] Encrypt sensitive data at rest
|
|
866
|
-
- [ ] Don't store sensitive data in JWT
|
|
867
|
-
- [ ] Sanitize error messages
|
|
868
|
-
- [ ] Implement proper CORS configuration
|
|
869
|
-
- [ ] Use security headers (Helmet.js)
|
|
870
|
-
|
|
871
|
-
### Monitoring & Logging
|
|
872
|
-
- [ ] Log security events
|
|
873
|
-
- [ ] Monitor for suspicious activity
|
|
874
|
-
- [ ] Set up alerts for failed auth attempts
|
|
875
|
-
- [ ] Track API usage patterns
|
|
876
|
-
- [ ] Don't log sensitive data
|
|
877
|
-
|
|
878
|
-
## OWASP API Security Top 10
|
|
879
|
-
|
|
880
|
-
1. **Broken Object Level Authorization** - Always verify user can access resource
|
|
881
|
-
2. **Broken Authentication** - Implement strong authentication mechanisms
|
|
882
|
-
3. **Broken Object Property Level Authorization** - Validate which properties user can access
|
|
883
|
-
4. **Unrestricted Resource Consumption** - Implement rate limiting and quotas
|
|
884
|
-
5. **Broken Function Level Authorization** - Verify user role for each function
|
|
885
|
-
6. **Unrestricted Access to Sensitive Business Flows** - Protect critical workflows
|
|
886
|
-
7. **Server Side Request Forgery (SSRF)** - Validate and sanitize URLs
|
|
887
|
-
8. **Security Misconfiguration** - Use security best practices and headers
|
|
888
|
-
9. **Improper Inventory Management** - Document and secure all API endpoints
|
|
889
|
-
10. **Unsafe Consumption of APIs** - Validate data from third-party APIs
|
|
890
|
-
|
|
891
|
-
## Related Skills
|
|
892
|
-
|
|
893
|
-
- `@ethical-hacking-methodology` - Security testing perspective
|
|
894
|
-
- `@sql-injection-testing` - Testing for SQL injection
|
|
895
|
-
- `@xss-html-injection` - Testing for XSS vulnerabilities
|
|
896
|
-
- `@broken-authentication` - Authentication vulnerabilities
|
|
897
|
-
- `@backend-dev-guidelines` - Backend development standards
|
|
898
|
-
- `@systematic-debugging` - Debug security issues
|
|
899
|
-
|
|
900
|
-
## Additional Resources
|
|
901
|
-
|
|
902
|
-
- [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
|
|
903
|
-
- [JWT Best Practices](https://tools.ietf.org/html/rfc8725)
|
|
904
|
-
- [Express Security Best Practices](https://expressjs.com/en/advanced/best-practice-security.html)
|
|
905
|
-
- [Node.js Security Checklist](https://blog.risingstack.com/node-js-security-checklist/)
|
|
906
|
-
- [API Security Checklist](https://github.com/shieldfy/API-Security-Checklist)
|
|
907
|
-
|
|
908
|
-
---
|
|
909
|
-
|
|
910
|
-
**Pro Tip:** Security is not a one-time task - regularly audit your APIs, keep dependencies updated, and stay informed about new vulnerabilities!
|
|
134
|
+
Set body limits before parsing. Zod shape validation is only one layer: check current
|
|
135
|
+
ownership, allowed transitions and uniqueness in the transaction. For HTML allow only
|
|
136
|
+
needed tags/attributes with a maintained sanitizer, then render with the destination's
|
|
137
|
+
safe output API. For plain comments prefer plain text; sanitizing a string does not
|
|
138
|
+
make it safe in every JavaScript, URL or HTML context. Validate upstream API responses
|
|
139
|
+
as untrusted input too.
|
|
140
|
+
|
|
141
|
+
For outbound URLs, define the allowed scheme/hosts, redirect behavior, resolved IP
|
|
142
|
+
ranges, credentials policy, timeout and response size. A regex or a URL parser alone
|
|
143
|
+
does not prevent SSRF or DNS rebinding. File uploads likewise need type/content checks,
|
|
144
|
+
size limits, isolated storage and authorization on reads.
|
|
145
|
+
|
|
146
|
+
## 4. Control abuse without claiming DDoS protection
|
|
147
|
+
|
|
148
|
+
Use the existing gateway and maintained rate-limit store. Authenticate before deriving
|
|
149
|
+
an authenticated-user key, and never trust a user-supplied tier. For anonymous traffic,
|
|
150
|
+
use the library's supported IPv6-aware IP key handling and configure Express trust
|
|
151
|
+
proxy to the actual trusted hops; do not blindly enable it for all callers.
|
|
152
|
+
|
|
153
|
+
For a distributed quota, use an atomic counter-plus-expiration implementation with
|
|
154
|
+
defined store-outage behavior. Avoid a handwritten `INCR` followed by `EXPIRE`: a crash
|
|
155
|
+
between them can leave a permanent key. Distinguish per-user quotas, per-IP abuse
|
|
156
|
+
controls, concurrency limits and upstream service budgets. Record actual window/reset
|
|
157
|
+
semantics and send an accurate Retry-After rather than a hardcoded full-window value.
|
|
158
|
+
An in-memory limiter is per-process unless a shared store is configured.
|
|
159
|
+
|
|
160
|
+
Test concurrent requests, IPv4/IPv6, forged forwarding headers, unknown tiers, absent
|
|
161
|
+
identity, Redis failure and expiration. Application rate limits cannot absorb network
|
|
162
|
+
saturation. Helmet configures HTTP response headers; it is not DDoS protection, access
|
|
163
|
+
control or a substitute for upstream capacity controls. Roll out CSP/HSTS against the
|
|
164
|
+
actual deployment and subdomain policy; do not copy preload settings blindly.
|
|
165
|
+
|
|
166
|
+
## 5. Passwords, secrets and logging
|
|
167
|
+
|
|
168
|
+
Use the established identity provider where possible. For stored passwords, use a
|
|
169
|
+
maintained password-hashing scheme with calibrated parameters (prefer Argon2id for
|
|
170
|
+
new designs). Check breached/common passwords and support passphrases. Do not impose
|
|
171
|
+
arbitrary uppercase/symbol composition rules or silently truncate long passwords.
|
|
172
|
+
Legacy bcrypt has an input-byte limit that must be accounted for explicitly during
|
|
173
|
+
migration; password length in characters and UTF-8 bytes are different.
|
|
174
|
+
|
|
175
|
+
Keep secrets in the approved secret mechanism, check required configuration at startup
|
|
176
|
+
without printing values, and rotate exposed credentials. Never include raw tokens,
|
|
177
|
+
passwords, request bodies or complete database exceptions in routine logs. Log bounded
|
|
178
|
+
event names, request correlation and safe status/error classes under an appropriate
|
|
179
|
+
retention/access policy. Sanitized errors should not return mass-assigned user objects.
|
|
180
|
+
CORS controls browser cross-origin access; it is not API authentication or CSRF protection.
|
|
181
|
+
|
|
182
|
+
## Worked example: a profile update boundary
|
|
183
|
+
|
|
184
|
+
Given `PATCH /users/:id` with a string ID and an editable display name:
|
|
185
|
+
|
|
186
|
+
1. Record the authorized caller/tenant and current endpoint behavior in fixtures.
|
|
187
|
+
2. Check missing/expired/wrong-audience tokens return 401 before storage access.
|
|
188
|
+
3. Send `12abc`, an unsafe integer, an empty name and an extra `role` field; expect 400
|
|
189
|
+
and no database mutation. Send a padded valid name; confirm only the parsed trimmed
|
|
190
|
+
value reaches the owner-and-tenant-scoped update.
|
|
191
|
+
4. Try a different user's valid ID and a cross-tenant ID; expect the documented denial
|
|
192
|
+
and no mutation. A valid owner request updates only the allowed property.
|
|
193
|
+
5. Exercise quota/store failure and confirm logs contain no request token or name.
|
|
194
|
+
|
|
195
|
+
Return the route policy, reproduced failure cases, exact test command/output and
|
|
196
|
+
remaining gaps. These are expected checks to execute in the target application, not
|
|
197
|
+
claims that this repository has tested a deployed API.
|
|
911
198
|
|
|
912
199
|
## Limitations
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
200
|
+
|
|
201
|
+
This guide is not a full identity service, certified security audit or penetration
|
|
202
|
+
test. Snippets omit application adapters and integration error middleware. Unit tests
|
|
203
|
+
of a parser do not verify database transactions, proxy behavior or provider sessions.
|
|
204
|
+
Report any untested route, tenant path and failure mode explicitly. Do not infer a
|
|
205
|
+
clean security posture from passing structural checks or from a risk metadata label.
|
|
206
|
+
|
|
207
|
+
## References
|
|
208
|
+
|
|
209
|
+
- [OWASP API Security](https://owasp.org/www-project-api-security/)
|
|
210
|
+
- [JWT best current practices, RFC 8725](https://www.rfc-editor.org/rfc/rfc8725)
|
|
211
|
+
- [OWASP Session Management](https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html)
|
|
212
|
+
- [OWASP Password Storage](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html)
|
|
213
|
+
- [Express production security](https://expressjs.com/en/advanced/best-practice-security.html)
|
|
214
|
+
- [Zod basic parsing](https://zod.dev/basics)
|
|
215
|
+
- Related skills: `auth-implementation-patterns`, `api-patterns`, `systematic-debugging`.
|