[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C32CJF4QWPKRPENTYSCS0Q":3,"skill-same:01M6C32CJF4QWPKRPENTYSCS0Q":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6C32CJF4QWPKRPENTYSCS0Q","devops",null,"Cloud-native DevOps and infrastructure automation. Covers Docker multi-stage builds, Kubernetes deployments, GitHub Actions CI\u002FCD, Vercel\u002FAWS\u002FGCP deployment, monitoring with Prometheus and Grafana, logging, health checks, infrastructure as code, and production readiness checklists. Use when deploying, containerizing, or setting up CI\u002FCD pipelines.","RaheesAhmed\u002FSajiCode","RaheesAhmed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48914925?v=4","01M6C31VY6EJ4N8QS30J585H9H","Rahees Ahmed","01M6C31W21ET706B6XTWHS52VC",68,"MIT","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fdevops\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"actions","up","vercel","use","health","gcp","aws","github actions","ci","github","monitoring","grafana","prometheus","infrastructure as code","code","deployment","automation","kubernetes","docker","2026-11-10 10:12:30",false,"---\nname: devops\ndescription: Cloud-native DevOps and infrastructure automation. Covers Docker multi-stage builds, Kubernetes deployments, GitHub Actions CI\u002FCD, Vercel\u002FAWS\u002FGCP deployment, monitoring with Prometheus and Grafana, logging, health checks, infrastructure as code, and production readiness checklists. Use when deploying, containerizing, or setting up CI\u002FCD pipelines.\n---\n\n# Cloud-Native DevOps\n\n## Docker\n\n### Multi-Stage Build (Node.js)\n```dockerfile\nFROM node:20-alpine AS deps\nWORKDIR \u002Fapp\nCOPY package*.json .\u002F\nRUN npm ci --omit=dev\n\nFROM node:20-alpine AS builder\nWORKDIR \u002Fapp\nCOPY package*.json .\u002F\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM node:20-alpine AS runner\nWORKDIR \u002Fapp\nENV NODE_ENV=production\nRUN addgroup --system --gid 1001 appgroup && adduser --system --uid 1001 appuser\nCOPY --from=deps \u002Fapp\u002Fnode_modules .\u002Fnode_modules\nCOPY --from=builder \u002Fapp\u002Fdist .\u002Fdist\nCOPY --from=builder \u002Fapp\u002Fpackage.json .\u002F\nUSER appuser\nEXPOSE 3000\nHEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http:\u002F\u002Flocalhost:3000\u002Fhealth || exit 1\nCMD [\"node\", \"dist\u002Findex.js\"]\n```\n\n### Docker Compose (dev environment)\n```yaml\nservices:\n  app:\n    build: .\n    ports: [\"3000:3000\"]\n    environment:\n      DATABASE_URL: postgresql:\u002F\u002Fpostgres:postgres@db:5432\u002Fapp\n      REDIS_URL: redis:\u002F\u002Fredis:6379\n    depends_on:\n      db: { condition: service_healthy }\n      redis: { condition: service_started }\n    volumes: [\".\u002Fsrc:\u002Fapp\u002Fsrc\"]\n\n  db:\n    image: postgres:16-alpine\n    environment:\n      POSTGRES_DB: app\n      POSTGRES_PASSWORD: postgres\n    ports: [\"5432:5432\"]\n    volumes: [\"pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\"]\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U postgres\"]\n      interval: 5s\n      timeout: 3s\n      retries: 5\n\n  redis:\n    image: redis:7-alpine\n    ports: [\"6379:6379\"]\n\nvolumes:\n  pgdata:\n```\n\n## GitHub Actions CI\u002FCD\n\n### Full Pipeline\n```yaml\nname: CI\u002FCD\non:\n  push: { branches: [main] }\n  pull_request: { branches: [main] }\n\njobs:\n  lint-and-test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: actions\u002Fsetup-node@v4\n        with: { node-version: 20, cache: npm }\n      - run: npm ci\n      - run: npm run lint\n      - run: npm run typecheck\n      - run: npm test -- --coverage\n      - uses: actions\u002Fupload-artifact@v4\n        with: { name: coverage, path: coverage\u002F }\n\n  build:\n    needs: lint-and-test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: actions\u002Fsetup-node@v4\n        with: { node-version: 20, cache: npm }\n      - run: npm ci\n      - run: npm run build\n\n  deploy:\n    needs: build\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Deploy to Vercel\n        uses: amondnet\u002Fvercel-action@v25\n        with:\n          vercel-token: ${{ secrets.VERCEL_TOKEN }}\n          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}\n          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}\n          vercel-args: \"--prod\"\n```\n\n## Deployment Platforms\n\n### Vercel (Next.js \u002F Frontend)\n```bash\nnpx vercel --prod\n# Environment variables: vercel env add SECRET_KEY production\n```\n\n### Railway \u002F Render (Backend APIs)\n```json\n{\n  \"scripts\": {\n    \"start\": \"node dist\u002Findex.js\",\n    \"build\": \"tsc\"\n  }\n}\n```\n\n### AWS (ECS Fargate)\n```bash\n# Build and push to ECR\naws ecr get-login-password | docker login --username AWS --password-stdin $ECR_URI\ndocker build -t $ECR_URI:latest .\ndocker push $ECR_URI:latest\naws ecs update-service --cluster prod --service app --force-new-deployment\n```\n\n## Monitoring & Observability\n\n### Health Check Endpoint\n```ts\napp.get(\"\u002Fhealth\", async (req, res) => {\n  const checks = {\n    uptime: process.uptime(),\n    timestamp: new Date().toISOString(),\n    database: await checkDatabase(),\n    memory: process.memoryUsage(),\n  };\n  const healthy = checks.database === \"ok\";\n  res.status(healthy ? 200 : 503).json({ status: healthy ? \"healthy\" : \"unhealthy\", ...checks });\n});\n\nasync function checkDatabase(): Promise\u003Cstring> {\n  try {\n    await prisma.$queryRaw`SELECT 1`;\n    return \"ok\";\n  } catch { return \"error\"; }\n}\n```\n\n### Structured Logging\n```ts\nimport pino from \"pino\";\n\nconst logger = pino({\n  level: process.env.LOG_LEVEL || \"info\",\n  transport: process.env.NODE_ENV === \"development\"\n    ? { target: \"pino-pretty\", options: { colorize: true } }\n    : undefined,\n  redact: [\"req.headers.authorization\", \"req.body.password\"],\n});\n```\n\n## Production Readiness Checklist\n- [ ] Build passes, all tests green\n- [ ] Environment variables documented and set\n- [ ] Database migrations applied\n- [ ] Health check endpoint at `\u002Fhealth`\n- [ ] Structured logging (JSON format)\n- [ ] Error monitoring configured (Sentry)\n- [ ] HTTPS enforced, HSTS enabled\n- [ ] Rate limiting on auth endpoints\n- [ ] Graceful shutdown handler\n- [ ] Backup strategy for database\n- [ ] Monitoring alerts configured\n- [ ] README deployment instructions updated\n","# Cloud-Native DevOps\n\n## Docker\n\n### Multi-Stage Build (Node.js)\n```dockerfile\nFROM node:20-alpine AS deps\nWORKDIR \u002Fapp\nCOPY package*.json .\u002F\nRUN npm ci --omit=dev\n\nFROM node:20-alpine AS builder\nWORKDIR \u002Fapp\nCOPY package*.json .\u002F\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM node:20-alpine AS runner\nWORKDIR \u002Fapp\nENV NODE_ENV=production\nRUN addgroup --system --gid 1001 appgroup && adduser --system --uid 1001 appuser\nCOPY --from=deps \u002Fapp\u002Fnode_modules .\u002Fnode_modules\nCOPY --from=builder \u002Fapp\u002Fdist .\u002Fdist\nCOPY --from=builder \u002Fapp\u002Fpackage.json .\u002F\nUSER appuser\nEXPOSE 3000\nHEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http:\u002F\u002Flocalhost:3000\u002Fhealth || exit 1\nCMD [\"node\", \"dist\u002Findex.js\"]\n```\n\n### Docker Compose (dev environment)\n```yaml\nservices:\n  app:\n    build: .\n    ports: [\"3000:3000\"]\n    environment:\n      DATABASE_URL: postgresql:\u002F\u002Fpostgres:postgres@db:5432\u002Fapp\n      REDIS_URL: redis:\u002F\u002Fredis:6379\n    depends_on:\n      db: { condition: service_healthy }\n      redis: { condition: service_started }\n    volumes: [\".\u002Fsrc:\u002Fapp\u002Fsrc\"]\n\n  db:\n    image: postgres:16-alpine\n    environment:\n      POSTGRES_DB: app\n      POSTGRES_PASSWORD: postgres\n    ports: [\"5432:5432\"]\n    volumes: [\"pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\"]\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U postgres\"]\n      interval: 5s\n      timeout: 3s\n      retries: 5\n\n  redis:\n    image: redis:7-alpine\n    ports: [\"6379:6379\"]\n\nvolumes:\n  pgdata:\n```\n\n## GitHub Actions CI\u002FCD\n\n### Full Pipeline\n```yaml\nname: CI\u002FCD\non:\n  push: { branches: [main] }\n  pull_request: { branches: [main] }\n\njobs:\n  lint-and-test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: actions\u002Fsetup-node@v4\n        with: { node-version: 20, cache: npm }\n      - run: npm ci\n      - run: npm run lint\n      - run: npm run typecheck\n      - run: npm test -- --coverage\n      - uses: actions\u002Fupload-artifact@v4\n        with: { name: coverage, path: coverage\u002F }\n\n  build:\n    needs: lint-and-test\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: actions\u002Fsetup-node@v4\n        with: { node-version: 20, cache: npm }\n      - run: npm ci\n      - run: npm run build\n\n  deploy:\n    needs: build\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Deploy to Vercel\n        uses: amondnet\u002Fvercel-action@v25\n        with:\n          vercel-token: ${{ secrets.VERCEL_TOKEN }}\n          vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}\n          vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}\n          vercel-args: \"--prod\"\n```\n\n## Deployment Platforms\n\n### Vercel (Next.js \u002F Frontend)\n```bash\nnpx vercel --prod\n# Environment variables: vercel env add SECRET_KEY production\n```\n\n### Railway \u002F Render (Backend APIs)\n```json\n{\n  \"scripts\": {\n    \"start\": \"node dist\u002Findex.js\",\n    \"build\": \"tsc\"\n  }\n}\n```\n\n### AWS (ECS Fargate)\n```bash\n# Build and push to ECR\naws ecr get-login-password | docker login --username AWS --password-stdin $ECR_URI\ndocker build -t $ECR_URI:latest .\ndocker push $ECR_URI:latest\naws ecs update-service --cluster prod --service app --force-new-deployment\n```\n\n## Monitoring & Observability\n\n### Health Check Endpoint\n```ts\napp.get(\"\u002Fhealth\", async (req, res) => {\n  const checks = {\n    uptime: process.uptime(),\n    timestamp: new Date().toISOString(),\n    database: await checkDatabase(),\n    memory: process.memoryUsage(),\n  };\n  const healthy = checks.database === \"ok\";\n  res.status(healthy ? 200 : 503).json({ status: healthy ? \"healthy\" : \"unhealthy\", ...checks });\n});\n\nasync function checkDatabase(): Promise\u003Cstring> {\n  try {\n    await prisma.$queryRaw`SELECT 1`;\n    return \"ok\";\n  } catch { return \"error\"; }\n}\n```\n\n### Structured Logging\n```ts\nimport pino from \"pino\";\n\nconst logger = pino({\n  level: process.env.LOG_LEVEL || \"info\",\n  transport: process.env.NODE_ENV === \"development\"\n    ? { target: \"pino-pretty\", options: { colorize: true } }\n    : undefined,\n  redact: [\"req.headers.authorization\", \"req.body.password\"],\n});\n```\n\n## Production Readiness Checklist\n- [ ] Build passes, all tests green\n- [ ] Environment variables documented and set\n- [ ] Database migrations applied\n- [ ] Health check endpoint at `\u002Fhealth`\n- [ ] Structured logging (JSON format)\n- [ ] Error monitoring configured (Sentry)\n- [ ] HTTPS enforced, HSTS enabled\n- [ ] Rate limiting on auth endpoints\n- [ ] Graceful shutdown handler\n- [ ] Backup strategy for database\n- [ ] Monitoring alerts configured\n- [ ] README deployment instructions updated\n",{"name":5,"description":7},"main","791249e54ef4db28bf9af93993479d2e0c6a8a9d","skills\u002Fdevops",15,"https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode","https:\u002F\u002Fgithub.com\u002FRaheesAhmed","https:\u002F\u002Fraheesahmed.vercel.app\u002F","Forward Deployed AI Engineer | AI Agents, MCP Servers & Business Automation","2026-09-14 17:21:11",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add RaheesAhmed\u002FSajiCode --skill devops",{"tool":63,"command":64},"bunx","bunx skills add RaheesAhmed\u002FSajiCode --skill devops",{"tool":66,"command":67},"pnpm","pnpm dlx skills add RaheesAhmed\u002FSajiCode --skill devops","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fdevops\u002FSKILL.md",true,[],[72,85,97,120,145,166],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":43},"01M6C33MP48R5GWR13P2VFHWB0","demo-skill","Demo plugin skill for tests.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fdemo-plugin\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[82,83,84],"demo skill","demo","plugin",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":92,"publishedAt":43},"01M6C33JV7RMPM5AVS7SCCGDR8","write-a-skill","Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-a-skill\u002FSKILL.MD",[91],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},[93,94,95,96,27],"write","write a skill","create","user",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":106,"publishedAt":43},"01M6C33G0SX1683HER40XB8047","web-research","Deep web research and data extraction skill. Systematically research ANY topic by fetching URLs, reading documentation, crawling API docs, evaluating npm\u002Fpypi packages, comparing technologies, and synthesizing findings into actionable recommendations. Use when researching libraries, frameworks, APIs, solutions, or any topic requiring web investigation.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fweb-research\u002FSKILL.md",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[107,108,109,110,111,112,113,114,115,116,117,118,119,27],"research","web","web research","docs","documentation","libraries","packages","npm","extraction","pypi","data","investigation","api",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":129,"publishedAt":43},"01M6C33CRE3D30CHTTV1ZVR1ZM","testing","Design and implement comprehensive test suites. Covers unit testing, integration testing, E2E testing with Playwright, API testing, mocking strategies, test data factories, TDD workflow, snapshot testing, coverage targets, and CI integration. Use when writing tests, designing test architecture, or debugging test failures.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Ftesting\u002FSKILL.md",[126],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[122,32,27,130,131,132,119,133,117,134,135,136,137,138,139,140,141,142,143,144],"playwright","snapshot","coverage","e2e","tdd","integration","test","architecture","writing tests","debugging","workflow","implement","writing","design","e2e testing",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":43},"01M6C33AER10BH236SAP89GJP6","superpowers","Core engineering workflow that activates on EVERY task. Enforces systematic plan-before-code methodology, multi-file refactoring safety, dependency-aware changes, pre-flight verification, and zero-placeholder quality standards. Use PROACTIVELY on all coding tasks.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fsuperpowers\u002FSKILL.md",[],[147,152,153,154,140,38,155,156,27,157,158,159,160,161,162,163,164,165],"core","tasks","placeholder","coding","dependency","quality","refactoring","plan","Safety","methodology","ZeRO","engineering","file","verification",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":175,"publishedAt":43},"01M6C3380VVQHM6CCC843MH5S3","styling","Implement production styling systems with Tailwind CSS, vanilla CSS, or CSS-in-JS. Covers CSS architecture (BEM, utility-first, modules), design tokens, responsive patterns, animation systems, dark mode, container queries, print styles, and performance optimization. Use when implementing designs or building CSS architectures.","https:\u002F\u002Fgithub.com\u002FRaheesAhmed\u002FSajiCode\u002Fblob\u002Fmain\u002Fskills\u002Fstyling\u002FSKILL.md",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",[168,176,177,27,178,179,180,181,182,183,137,141,184,185,143],"Tailwind","container","performance optimization","js","Animation","first","Production","Optimization","performance","css"]