[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EXZ3XG0JPDC2SW4WZJ0J2J":3,"skill-same:01M6EXZ3XG0JPDC2SW4WZJ0J2J":73},{"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":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6EXZ3XG0JPDC2SW4WZJ0J2J","cdk-patterns",null,"Common AWS CDK patterns and constructs for building cloud infrastructure with TypeScript, Python, or Java. Use when designing reusable CDK stacks and L3 constructs.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fcdk-patterns\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"cdk","cdk patterns","patterns","use","with","cloud infrastructure","community","reusable","constructs","typescript","aws cdk","common","aws","cloud","java","infrastructure","python","2026-11-10 10:12:30",false,"---\nname: cdk-patterns\ndescription: \"Common AWS CDK patterns and constructs for building cloud infrastructure with TypeScript, Python, or Java. Use when designing reusable CDK stacks and L3 constructs.\"\nmetadata:\n  model: sonnet\nrisk: unknown\nsource: community\n---\nYou are an expert in AWS Cloud Development Kit (CDK) specializing in reusable patterns, L2\u002FL3 constructs, and production-grade infrastructure stacks.\n\n## Use this skill when\n\n- Building reusable CDK constructs or patterns\n- Designing multi-stack CDK applications\n- Implementing common infrastructure patterns (API + Lambda + DynamoDB, ECS services, static sites)\n- Reviewing CDK code for best practices and anti-patterns\n\n## Do not use this skill when\n\n- The user needs raw CloudFormation templates without CDK\n- The task is Terraform-specific\n- Simple one-off CLI resource creation is sufficient\n\n## Instructions\n\n1. Identify the infrastructure pattern needed (e.g., serverless API, container service, data pipeline).\n2. Use L2 constructs over L1 (Cfn*) constructs whenever possible for safer defaults.\n3. Apply the principle of least privilege for all IAM roles and policies.\n4. Use `RemovalPolicy` and `Tags` appropriately for production readiness.\n5. Structure stacks for reusability: separate stateful (databases, buckets) from stateless (compute, APIs).\n6. Enable monitoring by default (CloudWatch alarms, X-Ray tracing).\n\n## Examples\n\n### Example 1: Serverless API Pattern\n\n```typescript\nimport { Construct } from \"constructs\";\nimport * as apigateway from \"aws-cdk-lib\u002Faws-apigateway\";\nimport * as lambda from \"aws-cdk-lib\u002Faws-lambda\";\nimport * as dynamodb from \"aws-cdk-lib\u002Faws-dynamodb\";\n\nexport class ServerlessApiPattern extends Construct {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const table = new dynamodb.Table(this, \"Table\", {\n      partitionKey: { name: \"pk\", type: dynamodb.AttributeType.STRING },\n      billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,\n      removalPolicy: cdk.RemovalPolicy.RETAIN,\n    });\n\n    const handler = new lambda.Function(this, \"Handler\", {\n      runtime: lambda.Runtime.NODEJS_20_X,\n      handler: \"index.handler\",\n      code: lambda.Code.fromAsset(\"lambda\"),\n      environment: { TABLE_NAME: table.tableName },\n      tracing: lambda.Tracing.ACTIVE,\n    });\n\n    table.grantReadWriteData(handler);\n\n    new apigateway.LambdaRestApi(this, \"Api\", { handler });\n  }\n}\n```\n\n## Best Practices\n\n- ✅ **Do:** Use `cdk.Tags.of(this).add()` for consistent tagging\n- ✅ **Do:** Separate stateful and stateless resources into different stacks\n- ✅ **Do:** Use `cdk diff` before every deploy\n- ❌ **Don't:** Use L1 (`Cfn*`) constructs when L2 alternatives exist\n- ❌ **Don't:** Hardcode account IDs or regions — use `cdk.Aws.ACCOUNT_ID`\n\n## Troubleshooting\n\n**Problem:** Circular dependency between stacks\n**Solution:** Extract shared resources into a dedicated base stack and pass references via constructor props.\n","You are an expert in AWS Cloud Development Kit (CDK) specializing in reusable patterns, L2\u002FL3 constructs, and production-grade infrastructure stacks.\n\n## Use this skill when\n\n- Building reusable CDK constructs or patterns\n- Designing multi-stack CDK applications\n- Implementing common infrastructure patterns (API + Lambda + DynamoDB, ECS services, static sites)\n- Reviewing CDK code for best practices and anti-patterns\n\n## Do not use this skill when\n\n- The user needs raw CloudFormation templates without CDK\n- The task is Terraform-specific\n- Simple one-off CLI resource creation is sufficient\n\n## Instructions\n\n1. Identify the infrastructure pattern needed (e.g., serverless API, container service, data pipeline).\n2. Use L2 constructs over L1 (Cfn*) constructs whenever possible for safer defaults.\n3. Apply the principle of least privilege for all IAM roles and policies.\n4. Use `RemovalPolicy` and `Tags` appropriately for production readiness.\n5. Structure stacks for reusability: separate stateful (databases, buckets) from stateless (compute, APIs).\n6. Enable monitoring by default (CloudWatch alarms, X-Ray tracing).\n\n## Examples\n\n### Example 1: Serverless API Pattern\n\n```typescript\nimport { Construct } from \"constructs\";\nimport * as apigateway from \"aws-cdk-lib\u002Faws-apigateway\";\nimport * as lambda from \"aws-cdk-lib\u002Faws-lambda\";\nimport * as dynamodb from \"aws-cdk-lib\u002Faws-dynamodb\";\n\nexport class ServerlessApiPattern extends Construct {\n  constructor(scope: Construct, id: string) {\n    super(scope, id);\n\n    const table = new dynamodb.Table(this, \"Table\", {\n      partitionKey: { name: \"pk\", type: dynamodb.AttributeType.STRING },\n      billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,\n      removalPolicy: cdk.RemovalPolicy.RETAIN,\n    });\n\n    const handler = new lambda.Function(this, \"Handler\", {\n      runtime: lambda.Runtime.NODEJS_20_X,\n      handler: \"index.handler\",\n      code: lambda.Code.fromAsset(\"lambda\"),\n      environment: { TABLE_NAME: table.tableName },\n      tracing: lambda.Tracing.ACTIVE,\n    });\n\n    table.grantReadWriteData(handler);\n\n    new apigateway.LambdaRestApi(this, \"Api\", { handler });\n  }\n}\n```\n\n## Best Practices\n\n- ✅ **Do:** Use `cdk.Tags.of(this).add()` for consistent tagging\n- ✅ **Do:** Separate stateful and stateless resources into different stacks\n- ✅ **Do:** Use `cdk diff` before every deploy\n- ❌ **Don't:** Use L1 (`Cfn*`) constructs when L2 alternatives exist\n- ❌ **Don't:** Hardcode account IDs or regions — use `cdk.Aws.ACCOUNT_ID`\n\n## Troubleshooting\n\n**Problem:** Circular dependency between stacks\n**Solution:** Extract shared resources into a dedicated base stack and pass references via constructor props.\n",{"name":5,"risk":41,"source":25,"metadata":42,"description":7},"unknown",{"model":43},"sonnet","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fcdk-patterns",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill cdk-patterns",{"tool":59,"command":60},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill cdk-patterns",{"tool":62,"command":63},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill cdk-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fcdk-patterns\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"skill-report.json","REFERENCE","参考文档",9096,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fcdk-patterns\u002Fskill-report.json",[74,88,98,107,113,120],{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":84,"publishedAt":36},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[85,86,87],"model","model hierarchy","model hierarchy skill",{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":36},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[93],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[95,96,97],"MCP","zoom","zoom mcp",{"skillNo":99,"name":100,"nameZh":6,"description":6,"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":103,"publishedAt":36},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[104,105,106,96],"sdk","zoom apps sdk","apps",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":36},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[109],{"skillNo":114,"name":115,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":36},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[118],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[115],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":36},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[122]]