opencode-skills-collection 4.0.67 → 4.0.69
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 +281 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/anti-slop-design/SKILL.md +393 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +1 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/artifact-yylo/SKILL.md +122 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/google-no-code/SKILL.md +136 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/idea-evaluator/SKILL.md +75 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +64 -0
- package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +64 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/ledger-tasks-yylo/SKILL.md +219 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/plan-ledger-tasks-yylo/SKILL.md +52 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/ralph-loop-yylo/SKILL.md +55 -0
- package/bundled-skills/ralph-loop-yylo/references/first_check.md +18 -0
- package/bundled-skills/ralph-loop-yylo/references/implement.md +60 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/resumable-implementation-contracts/SKILL.md +254 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/understand-project-yylo/SKILL.md +62 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/weather-model-data-fetching/SKILL.md +277 -0
- package/bundled-skills/weather-observation-fetching/SKILL.md +246 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/wiki-yylo/SKILL.md +114 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/workflow-yylo/SKILL.md +107 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6924 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: convex-backend
|
|
3
|
+
description: Build reactive backends with Convex functions, schema validation, auth
|
|
4
|
+
integration, and deployment workflows. Use when building real-time apps with type-safe
|
|
5
|
+
server functions and automatic caching.
|
|
6
|
+
category: devops
|
|
7
|
+
risk: critical
|
|
8
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
9
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
10
|
+
source_type: community
|
|
11
|
+
date_added: '2026-09-20'
|
|
12
|
+
license: MIT
|
|
13
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
14
|
+
compatibility: Requires the relevant OS/platform tooling and privileged access where
|
|
15
|
+
noted. Docs-only; helper scripts and templates not bundled.
|
|
16
|
+
metadata:
|
|
17
|
+
author: devops-skills
|
|
18
|
+
version: '1.0'
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Convex Backend
|
|
22
|
+
|
|
23
|
+
Use Convex to build type-safe backend logic with realtime data sync.
|
|
24
|
+
|
|
25
|
+
## When to Use This Skill
|
|
26
|
+
|
|
27
|
+
Use this skill when:
|
|
28
|
+
- Building real-time collaborative apps (chat, dashboards, multiplayer)
|
|
29
|
+
- Need a backend with zero infrastructure management
|
|
30
|
+
- Want type-safe server functions with automatic caching
|
|
31
|
+
- Building AI apps that need reactive data (agent status, streaming results)
|
|
32
|
+
- Prototyping quickly with a managed database + functions
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- Node.js 18+
|
|
37
|
+
- npm or pnpm
|
|
38
|
+
- Convex account (free tier: 1M function calls/month)
|
|
39
|
+
|
|
40
|
+
## Quick Start
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Initialize Convex in an existing project
|
|
44
|
+
npm install convex
|
|
45
|
+
npx convex dev # Start local development (syncs with cloud)
|
|
46
|
+
|
|
47
|
+
# In a new project
|
|
48
|
+
npm create convex@latest
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Schema Definition
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// convex/schema.ts
|
|
55
|
+
import { defineSchema, defineTable } from "convex/server";
|
|
56
|
+
import { v } from "convex/values";
|
|
57
|
+
|
|
58
|
+
export default defineSchema({
|
|
59
|
+
users: defineTable({
|
|
60
|
+
name: v.string(),
|
|
61
|
+
email: v.string(),
|
|
62
|
+
role: v.union(v.literal("admin"), v.literal("member")),
|
|
63
|
+
avatarUrl: v.optional(v.string()),
|
|
64
|
+
createdAt: v.number(),
|
|
65
|
+
})
|
|
66
|
+
.index("by_email", ["email"])
|
|
67
|
+
.index("by_role", ["role"]),
|
|
68
|
+
|
|
69
|
+
messages: defineTable({
|
|
70
|
+
userId: v.id("users"),
|
|
71
|
+
channelId: v.id("channels"),
|
|
72
|
+
body: v.string(),
|
|
73
|
+
attachments: v.optional(v.array(v.string())),
|
|
74
|
+
createdAt: v.number(),
|
|
75
|
+
})
|
|
76
|
+
.index("by_channel", ["channelId", "createdAt"])
|
|
77
|
+
.index("by_user", ["userId"]),
|
|
78
|
+
|
|
79
|
+
channels: defineTable({
|
|
80
|
+
name: v.string(),
|
|
81
|
+
description: v.optional(v.string()),
|
|
82
|
+
isPrivate: v.boolean(),
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Queries (Real-Time Reads)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// convex/messages.ts
|
|
91
|
+
import { query } from "./_generated/server";
|
|
92
|
+
import { v } from "convex/values";
|
|
93
|
+
|
|
94
|
+
export const listByChannel = query({
|
|
95
|
+
args: {
|
|
96
|
+
channelId: v.id("channels"),
|
|
97
|
+
limit: v.optional(v.number()),
|
|
98
|
+
},
|
|
99
|
+
handler: async (ctx, args) => {
|
|
100
|
+
const messages = await ctx.db
|
|
101
|
+
.query("messages")
|
|
102
|
+
.withIndex("by_channel", (q) => q.eq("channelId", args.channelId))
|
|
103
|
+
.order("desc")
|
|
104
|
+
.take(args.limit ?? 50);
|
|
105
|
+
|
|
106
|
+
// Resolve user data for each message
|
|
107
|
+
return Promise.all(
|
|
108
|
+
messages.map(async (msg) => {
|
|
109
|
+
const user = await ctx.db.get(msg.userId);
|
|
110
|
+
return { ...msg, user: user ? { name: user.name, avatarUrl: user.avatarUrl } : null };
|
|
111
|
+
})
|
|
112
|
+
);
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Mutations (Writes)
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// convex/messages.ts
|
|
121
|
+
import { mutation } from "./_generated/server";
|
|
122
|
+
import { v } from "convex/values";
|
|
123
|
+
|
|
124
|
+
export const send = mutation({
|
|
125
|
+
args: {
|
|
126
|
+
channelId: v.id("channels"),
|
|
127
|
+
body: v.string(),
|
|
128
|
+
},
|
|
129
|
+
handler: async (ctx, args) => {
|
|
130
|
+
const identity = await ctx.auth.getUserIdentity();
|
|
131
|
+
if (!identity) throw new Error("Not authenticated");
|
|
132
|
+
|
|
133
|
+
// Find or create user
|
|
134
|
+
const user = await ctx.db
|
|
135
|
+
.query("users")
|
|
136
|
+
.withIndex("by_email", (q) => q.eq("email", identity.email!))
|
|
137
|
+
.unique();
|
|
138
|
+
if (!user) throw new Error("User not found");
|
|
139
|
+
|
|
140
|
+
return await ctx.db.insert("messages", {
|
|
141
|
+
userId: user._id,
|
|
142
|
+
channelId: args.channelId,
|
|
143
|
+
body: args.body,
|
|
144
|
+
createdAt: Date.now(),
|
|
145
|
+
});
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Actions (External APIs, AI)
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// convex/ai.ts
|
|
154
|
+
import { action } from "./_generated/server";
|
|
155
|
+
import { v } from "convex/values";
|
|
156
|
+
import { api } from "./_generated/api";
|
|
157
|
+
|
|
158
|
+
export const generateResponse = action({
|
|
159
|
+
args: { prompt: v.string(), channelId: v.id("channels") },
|
|
160
|
+
handler: async (ctx, args) => {
|
|
161
|
+
// Call external AI API
|
|
162
|
+
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
163
|
+
method: "POST",
|
|
164
|
+
headers: {
|
|
165
|
+
"Content-Type": "application/json",
|
|
166
|
+
"x-api-key": process.env.ANTHROPIC_API_KEY!,
|
|
167
|
+
"anthropic-version": "2023-06-01",
|
|
168
|
+
},
|
|
169
|
+
body: JSON.stringify({
|
|
170
|
+
model: "claude-sonnet-4-6",
|
|
171
|
+
max_tokens: 1024,
|
|
172
|
+
messages: [{ role: "user", content: args.prompt }],
|
|
173
|
+
}),
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
const data = await response.json();
|
|
177
|
+
const aiMessage = data.content[0].text;
|
|
178
|
+
|
|
179
|
+
// Save AI response as a message via mutation
|
|
180
|
+
await ctx.runMutation(api.messages.send, {
|
|
181
|
+
channelId: args.channelId,
|
|
182
|
+
body: aiMessage,
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
return aiMessage;
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Scheduled Functions (Cron Jobs)
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
// convex/crons.ts
|
|
194
|
+
import { cronJobs } from "convex/server";
|
|
195
|
+
import { internal } from "./_generated/api";
|
|
196
|
+
|
|
197
|
+
const crons = cronJobs();
|
|
198
|
+
|
|
199
|
+
// Run every hour
|
|
200
|
+
crons.interval("cleanup old messages", { hours: 1 }, internal.maintenance.cleanupOldMessages);
|
|
201
|
+
|
|
202
|
+
// Run daily at midnight UTC
|
|
203
|
+
crons.cron("daily report", "0 0 * * *", internal.reports.generateDailyReport);
|
|
204
|
+
|
|
205
|
+
export default crons;
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Auth Integration
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// convex/auth.config.ts
|
|
212
|
+
export default {
|
|
213
|
+
providers: [
|
|
214
|
+
{
|
|
215
|
+
domain: process.env.AUTH_DOMAIN,
|
|
216
|
+
applicationID: "convex",
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
// React client setup
|
|
224
|
+
import { ConvexProviderWithClerk } from "convex/react-clerk";
|
|
225
|
+
import { ClerkProvider, useAuth } from "@clerk/clerk-react";
|
|
226
|
+
|
|
227
|
+
function App() {
|
|
228
|
+
return (
|
|
229
|
+
<ClerkProvider publishableKey={CLERK_KEY}>
|
|
230
|
+
<ConvexProviderWithClerk client={convex} useAuth={useAuth}>
|
|
231
|
+
<MyApp />
|
|
232
|
+
</ConvexProviderWithClerk>
|
|
233
|
+
</ClerkProvider>
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
## React Client Usage
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// src/components/Chat.tsx
|
|
242
|
+
import { useQuery, useMutation } from "convex/react";
|
|
243
|
+
import { api } from "../convex/_generated/api";
|
|
244
|
+
|
|
245
|
+
export function Chat({ channelId }: { channelId: string }) {
|
|
246
|
+
// Real-time query — auto-updates when data changes
|
|
247
|
+
const messages = useQuery(api.messages.listByChannel, { channelId });
|
|
248
|
+
const sendMessage = useMutation(api.messages.send);
|
|
249
|
+
|
|
250
|
+
const handleSend = async (body: string) => {
|
|
251
|
+
await sendMessage({ channelId, body });
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
if (messages === undefined) return <div>Loading...</div>;
|
|
255
|
+
|
|
256
|
+
return (
|
|
257
|
+
<div>
|
|
258
|
+
{messages.map((msg) => (
|
|
259
|
+
<div key={msg._id}>
|
|
260
|
+
<strong>{msg.user?.name}</strong>: {msg.body}
|
|
261
|
+
</div>
|
|
262
|
+
))}
|
|
263
|
+
</div>
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
## Deployment
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
# Deploy to production
|
|
272
|
+
npx convex deploy
|
|
273
|
+
|
|
274
|
+
# Deploy with environment variables
|
|
275
|
+
npx convex deploy --env-file .env.production
|
|
276
|
+
|
|
277
|
+
# Set environment variables
|
|
278
|
+
npx convex env set ANTHROPIC_API_KEY sk-ant-...
|
|
279
|
+
npx convex env list
|
|
280
|
+
|
|
281
|
+
# View logs
|
|
282
|
+
npx convex logs
|
|
283
|
+
npx convex logs --follow
|
|
284
|
+
|
|
285
|
+
# Run a function manually
|
|
286
|
+
npx convex run messages:listByChannel '{"channelId": "abc123"}'
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## File Storage
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
// convex/files.ts
|
|
293
|
+
import { mutation, query } from "./_generated/server";
|
|
294
|
+
import { v } from "convex/values";
|
|
295
|
+
|
|
296
|
+
export const generateUploadUrl = mutation(async (ctx) => {
|
|
297
|
+
return await ctx.storage.generateUploadUrl();
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
export const getFileUrl = query({
|
|
301
|
+
args: { storageId: v.id("_storage") },
|
|
302
|
+
handler: async (ctx, args) => {
|
|
303
|
+
return await ctx.storage.getUrl(args.storageId);
|
|
304
|
+
},
|
|
305
|
+
});
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Best Practices
|
|
309
|
+
|
|
310
|
+
- Define schema and validation before writing functions
|
|
311
|
+
- Keep mutations idempotent where possible
|
|
312
|
+
- Use auth identity checks in every privileged query/mutation
|
|
313
|
+
- Add indexes early for high-read collections
|
|
314
|
+
- Use `internal` functions for server-only logic (crons, webhooks)
|
|
315
|
+
- Store secrets in Convex environment variables, never in code
|
|
316
|
+
- Use optimistic updates in the React client for instant UI feedback
|
|
317
|
+
|
|
318
|
+
## Troubleshooting
|
|
319
|
+
|
|
320
|
+
| Issue | Solution |
|
|
321
|
+
|-------|---------|
|
|
322
|
+
| Function timeout | Actions have 10min limit; break into smaller steps |
|
|
323
|
+
| Query too slow | Add database index matching your query pattern |
|
|
324
|
+
| Type errors | Run `npx convex dev` to regenerate types |
|
|
325
|
+
| Auth not working | Check `auth.config.ts` and provider domain |
|
|
326
|
+
| Deploy fails | Check `npx convex logs`, verify env vars are set |
|
|
327
|
+
|
|
328
|
+
## Related Skills
|
|
329
|
+
|
|
330
|
+
- firebase-app-platform (`firebase-app-platform`) — Alternative managed backend
|
|
331
|
+
- vercel-deployments (`vercel-deployments`) — Frontend hosting
|
|
332
|
+
- agent-observability (`agent-observability`) — Instrument AI-driven backend flows
|
|
333
|
+
|
|
334
|
+
## Limitations
|
|
335
|
+
|
|
336
|
+
- Infrastructure commands can disrupt services: confirm target host/scope and have backups/snapshots before mutating state.
|
|
337
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
338
|
+
|