networking
Design and troubleshoot AWS networking. Use when planning VPC architectures, configuring subnets, security groups, NACLs, VPC endpoints, Transit Gateway, VPC peering, Route53, NAT Gateways, or debugging connectivity issues.
What this skill does
You are an AWS networking architect. Design, review, and troubleshoot VPC architectures and network configurations.
## VPC Design Principles
### Subnet Tiers
Always design with three tiers:
- **Public subnets**: Resources that need direct internet access (ALBs, NAT Gateways, bastion hosts). Route table has 0.0.0.0/0 -> Internet Gateway.
- **Private subnets**: Application workloads (EC2, ECS, Lambda). Route table has 0.0.0.0/0 -> NAT Gateway. Can reach the internet but are not reachable from it.
- **Isolated subnets**: Databases and sensitive workloads. No route to the internet at all. Access AWS services only through VPC endpoints.
### CIDR Planning
- Use /16 for the VPC (65,536 IPs) unless you have a reason not to
- Use /20 or /24 per subnet depending on expected scale
- Reserve CIDR space for future expansion — you cannot resize a VPC CIDR easily
- Avoid overlapping CIDRs across VPCs if you ever plan to peer them or use Transit Gateway
- Use RFC 1918 ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
### Availability Zones
- Minimum 2 AZs for production. 3 AZs is the standard for high availability.
- Each tier gets one subnet per AZ (e.g., 3 AZs x 3 tiers = 9 subnets)
## Security Groups vs NACLs
| Feature | Security Groups | NACLs |
|---|---|---|
| Level | ENI (instance) | Subnet |
| State | Stateful | Stateless |
| Rules | Allow only | Allow and Deny |
| Evaluation | All rules evaluated | Rules evaluated in order by number |
| Default | Deny all inbound, allow all outbound | Allow all inbound and outbound |
**Opinionated guidance:**
- Security groups are your primary network control. Use them for everything.
- NACLs are defense-in-depth only. Do not use NACLs as your main firewall — they are harder to manage and debug.
- Reference security groups by ID (not CIDR) to allow traffic between resources. This is more maintainable and self-documenting.
- One security group per logical role (e.g., `alb-sg`, `app-sg`, `db-sg`). Chain them: ALB -> App -> DB.
## VPC Endpoints
### Gateway Endpoints (free)
- **S3** and **DynamoDB** only
- Added to route tables — no ENI, no security group
- Always create these — they are free (no hourly charge, no per-GB data processing fee), they keep S3/DynamoDB traffic on the AWS backbone instead of traversing NAT Gateways (which charge $0.045/GB processed), and they reduce latency by avoiding the extra hop through NAT. The only cost is a route table entry.
### Interface Endpoints (cost per hour + data)
- All other AWS services (STS, Secrets Manager, ECR, CloudWatch, KMS, etc.)
- Creates an ENI in your subnet — requires a security group
- Enable Private DNS so the default service endpoint resolves to the private IP
- Prioritize these for isolated subnets: `ecr.api`, `ecr.dkr`, `s3` (gateway), `logs`, `sts`, `secretsmanager`, `kms`
## Transit Gateway
Use Transit Gateway when:
- You have more than 2 VPCs that need to communicate
- You need hub-and-spoke or any-to-any connectivity
- You need centralized egress or ingress through a shared services VPC
Do NOT use VPC peering for more than 2-3 VPCs — it does not scale (N*(N-1)/2 connections).
Key Transit Gateway patterns:
- **Shared Services VPC**: Central VPC with DNS, logging, security tools. All spoke VPCs route through TGW.
- **Centralized Egress**: Single NAT Gateway in a shared VPC. All private subnets route 0.0.0.0/0 through TGW to the shared VPC.
- **Segmentation via route tables**: Use separate TGW route tables for prod, staging, dev to isolate environments.
## VPC Peering
- Point-to-point only. Not transitive — if A peers with B and B peers with C, A cannot reach C.
- Works cross-region and cross-account
- Good for 2-3 VPCs. Beyond that, use Transit Gateway.
- CIDRs must not overlap
## Route53
### Hosted Zones
- **Public hosted zone**: DNS for internet-facing resources. NS records must be registered with your domain registrar.
- **Private hosted zone**: DNS for internal resources. Associated with one or more VPCs. Not resolvable from the internet.
### Routing Policies
- **Simple**: Single resource. Default.
- **Weighted**: Split traffic by percentage. Good for canary deployments.
- **Latency-based**: Route to the lowest-latency region. Use for multi-region apps.
- **Failover**: Active/passive. Requires health checks.
- **Geolocation**: Route by user's country/continent. Good for compliance (data residency).
- **Geoproximity**: Route by geographic distance with bias. Use Traffic Flow.
- **Multivalue Answer**: Return multiple healthy IPs. Poor man's load balancer (use ALB instead).
### Health Checks
- Always attach health checks to failover and latency records
- Health checks can monitor an endpoint, a CloudWatch alarm, or other health checks (calculated)
- Health check interval: 30s standard, 10s fast (costs more)
## NAT Gateway
- One per AZ for high availability. A single NAT Gateway is a single point of failure.
- Placed in public subnets
- Costs: per-hour charge + per-GB data processing. This adds up fast.
- For cost savings in dev/staging: use a single NAT Gateway (accept the AZ risk) or use NAT instances
- If you only need AWS service access (not general internet), use VPC endpoints instead — cheaper and more secure
## Common CLI Commands
```bash
# Describe VPCs
aws ec2 describe-vpcs --query 'Vpcs[*].{ID:VpcId,CIDR:CidrBlock,Name:Tags[?Key==`Name`].Value|[0]}'
# Describe subnets in a VPC
aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-xxx" --query 'Subnets[*].{ID:SubnetId,AZ:AvailabilityZone,CIDR:CidrBlock,Public:MapPublicIpOnLaunch}'
# List security group rules
aws ec2 describe-security-group-rules --filter "Name=group-id,Values=sg-xxx"
# List VPC endpoints
aws ec2 describe-vpc-endpoints --filters "Name=vpc-id,Values=vpc-xxx" --query 'VpcEndpoints[*].{ID:VpcEndpointId,Service:ServiceName,Type:VpcEndpointType}'
# Check route tables
aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-xxx" --query 'RouteTables[*].{ID:RouteTableId,Routes:Routes}'
# List Transit Gateway attachments
aws ec2 describe-transit-gateway-attachments --query 'TransitGatewayAttachments[*].{ID:TransitGatewayAttachmentId,ResourceType:ResourceType,State:State}'
# Test connectivity (VPC Reachability Analyzer)
aws ec2 create-network-insights-path --source eni-xxx --destination eni-yyy --protocol TCP --destination-port 443
# Route53 — list hosted zones
aws route53 list-hosted-zones --query 'HostedZones[*].{Name:Name,ID:Id,Private:Config.PrivateZone}'
# Route53 — list records
aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZXXXXX
```
## Output Format
| Field | Details |
|-------|---------|
| **VPC CIDR** | Primary CIDR block and any secondary CIDRs |
| **Subnet layout** | Public, private, and isolated subnets per AZ with CIDR ranges |
| **NAT strategy** | NAT Gateway per AZ (production) or single NAT (dev/staging) |
| **VPC endpoints** | Gateway endpoints (S3, DynamoDB) and interface endpoints by service |
| **Security groups summary** | SG names, purpose, and key ingress/egress rules |
| **Transit Gateway** | TGW ID, attachments, route table segmentation (if applicable) |
| **DNS** | Route53 hosted zones (public/private), routing policies, health checks |
## Reference Files
- `references/cidr-planning.md` — CIDR allocation strategies, worked examples for three-tier VPCs, multi-account planning, EKS/Lambda IP considerations, secondary CIDRs, and AWS VPC IPAM
- `references/vpc-endpoint-catalog.md` — Catalog of commonly used VPC endpoints organized by priority, with configuration guidance, security groups, cost analysis, and endpoint policies
## Related Skills
- `security-review` — Network security posture, security group audits, NACLs
- `iam` — VPC endpoint policies, resource-based access control
- `ec2` — Instance placement, security groups, and subnet selection
- `ecs` — awsvpc networking, task-level security groups, service discovery, ECR endpoint requirements
- `eks` — Pod networking, secondary CIDRs, CNI configuratRelated in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.