construct-development
について
このスキルは、AWS CDKコンストラクトの構築や修正のための開発パターンと型駆動設計原則を提供します。適切な設定パターンを持つCDKリソースを返すファクトリー関数などの実践的な例を含みます。再利用可能なインフラストラクチャコンポーネントを作成する際に、AWS CDKのベストプラクティスに従うためにご利用ください。
クイックインストール
Claude Code
推奨/plugin add https://github.com/majiayu000/claude-skill-registrygit clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/construct-developmentこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Construct Development Guidelines
Construct Pattern
Use factory functions that return CDK resources:
import {Construct} from 'constructs';
import {RemovalPolicy} from 'aws-cdk-lib';
import {Bucket, BucketEncryption, BlockPublicAccess} from 'aws-cdk-lib/aws-s3';
export type BucketProps = {
bucketName: string;
env: {
name: string;
region: string;
account: string;
};
enableVersioning?: boolean;
};
export const createBucket = (scope: Construct, props: BucketProps): Bucket => {
return new Bucket(scope, `${props.bucketName}-bucket`, {
bucketName: `${props.bucketName}-${props.env.name}-${props.env.region}`,
enforceSSL: true,
encryption: BucketEncryption.S3_MANAGED,
blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
removalPolicy: props.env.name === 'prod' ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY,
versioned: props.enableVersioning ?? props.env.name === 'prod',
});
};
Design Principles
1. Secure by Default
- Enable encryption (S3_MANAGED or KMS)
- Enforce SSL
- Block public access
- Use private subnets
2. Environment-Aware
- Gate expensive features to production
- Use
RemovalPolicy.RETAINin prod,DESTROYin dev - Enable enhanced monitoring only where needed
// Performance Insights only in prod
performanceInsightRetention: props.env.name === 'prod' ? 7 : undefined,
// Reader instances only in prod
const createReaders = props.env.account === Account.PROD && props.enableReaders;
3. Cost-Efficient
// Performance Insights only in prod
performanceInsightRetention: props.env.name === 'prod' ? 7 : undefined,
// Reader instances only in prod
const createReaders = props.env.account === Account.PROD && props.enableReaders;
4. Observable
- Include CloudWatch log groups
- Set appropriate retention periods
- Enable metrics where applicable
Type-Driven Development
Use types, not interfaces. This codebase follows type-driven development where we define all data structures using type declarations.
Why Types Over Interfaces?
- More flexible for unions and intersections
- Consistent pattern across the codebase
- Better for functional programming patterns
- Clearer intent for data structures
Define all props types in src/types/:
// src/types/bucket-types.ts
import {EnvironmentConfig} from '@cdk-constructs/cdk';
export type BucketProps = {
bucketName: string;
env: EnvironmentConfig['env'];
kmsKeyArn?: string;
lifecycleRules?: BucketLifecycleRule[];
};
export type BucketLifecycleRule = {
id: string;
expiration?: number;
transitions?: StorageTransition[];
};
Export Pattern
Export all public APIs from src/index.ts:
// src/index.ts
// Constructs
export {createBucket} from './constructs/bucket';
export {createLambda} from './constructs/lambda';
// Types
export type {BucketProps, BucketLifecycleRule} from './types/bucket-types';
export type {LambdaProps} from './types/lambda-types';
// Enums
export {StorageClass} from './enums/storage';
// Utilities
export {getAbsoluteLambdaPath} from './util/paths';
JSDoc Requirements
All public functions, types, and enums should have JSDoc comments:
/**
* Creates a CodeArtifact domain.
*
* @param scope - The parent construct
* @param id - The construct ID
* @param props - The domain properties
* @returns The created CodeArtifact domain
*
* @public
*/
export const createCodeArtifactDomain = (scope: Construct, id: string, props: CodeArtifactDomainProps): CfnDomain => {
// ...
};
GitHub リポジトリ
関連スキル
content-collections
メタThis skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.
creating-opencode-plugins
メタThis skill provides the structure and API specifications for creating OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It offers implementation patterns for JavaScript/TypeScript modules that intercept and extend the AI assistant's lifecycle. Use it when you need to build event-driven plugins for monitoring, custom handling, or extending OpenCode's capabilities.
polymarket
メタThis skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.
cloudflare-turnstile
メタThis skill provides comprehensive guidance for implementing Cloudflare Turnstile as a CAPTCHA-alternative bot protection system. It covers integration for forms, login pages, API endpoints, and frameworks like React/Next.js/Hono, while handling invisible challenges that maintain user experience. Use it when migrating from reCAPTCHA, debugging error codes, or implementing token validation and E2E tests.
