
yaml-authoring
by aiskillstore
Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.
SKILL.md
name: yaml-authoring description: Create and validate YAML diagram files. Use when writing new diagrams or troubleshooting YAML syntax.
YAML Diagram Authoring
Basic Structure
version: 1
docId: unique-document-id
title: "My Architecture Diagram" # optional
nodes:
- id: unique-id
provider: aws # Provider name (e.g., aws, gcp, azure)
kind: compute.lambda # Service category.type
label: "Display Name" # optional
parent: container-id # optional, for nesting in VPC/Subnet
layout: # optional for child nodes (auto-positioned)
x: 100 # optional for child nodes
y: 200 # optional for child nodes
w: 200 # required for containers (VPC/Subnet)
h: 150 # required for containers
edges:
- id: edge-1
from: source-node-id
to: target-node-id
label: "optional label" # optional
Auto-Layout
Child nodes (with parent) can omit layout entirely for automatic positioning:
nodes:
- id: vpc
provider: aws
kind: network.vpc
layout: { x: 0, y: 0, w: 800, h: 600 } # Container: explicit layout
- id: ec2_1
provider: aws
kind: compute.ec2
parent: vpc
# No layout - auto-positioned at (40, 40)
- id: ec2_2
provider: aws
kind: compute.ec2
parent: vpc
# No layout - auto-positioned at (200, 40)
Auto-layout rules:
- 3 columns per row
- 60px padding, 160px horizontal spacing, 140px vertical spacing
- Explicit
x/yoverrides auto-positioning - Cannot specify only
xor onlyy(both or neither)
Node Kind Categories
The kind field uses a hierarchical format: category.type or category.subcategory.type
Container Types (require w/h in layout)
| Kind | Description |
|---|---|
network.vpc | Virtual Private Cloud |
network.subnet | Subnet within VPC |
Resource Types
| Category | Kind Examples |
|---|---|
compute | compute.lambda, compute.ec2, compute.ecs, compute.eks |
compute.lb | compute.lb.alb, compute.lb.nlb, compute.lb.elb |
database | database.dynamodb, database.rds, database.aurora |
storage | storage.s3, storage.efs, storage.ebs |
integration | integration.apiGateway, integration.sns, integration.sqs, integration.eventBridge |
security | security.iam, security.cognito, security.waf |
analytics | analytics.kinesis, analytics.athena, analytics.glue |
Examples
Simple Lambda + S3
version: 1
docId: lambda-s3-example
title: "Lambda S3 Integration"
nodes:
- id: fn
provider: aws
kind: compute.lambda
label: "Process Upload"
layout:
x: 100
y: 100
- id: bucket
provider: aws
kind: storage.s3
label: "uploads-bucket"
layout:
x: 300
y: 100
edges:
- id: fn-to-bucket
from: fn
to: bucket
API with Database
version: 1
docId: api-db-example
title: "REST API Architecture"
nodes:
- id: api
provider: aws
kind: integration.apiGateway
label: "REST API"
layout:
x: 100
y: 200
- id: handler
provider: aws
kind: compute.lambda
label: "Handler"
layout:
x: 300
y: 200
- id: db
provider: aws
kind: database.dynamodb
label: "Users Table"
layout:
x: 500
y: 200
edges:
- id: api-to-handler
from: api
to: handler
label: "invoke"
- id: handler-to-db
from: handler
to: db
label: "read/write"
VPC with Nested Resources
version: 1
docId: vpc-example
title: "VPC Architecture"
nodes:
- id: vpc
provider: aws
kind: network.vpc
label: "Production VPC"
layout:
x: 50
y: 50
w: 600
h: 400
- id: public-subnet
provider: aws
kind: network.subnet
label: "Public Subnet"
parent: vpc
layout:
x: 70
y: 100
w: 250
h: 300
- id: alb
provider: aws
kind: compute.lb.alb
label: "Application LB"
parent: public-subnet
layout:
x: 100
y: 150
- id: lambda
provider: aws
kind: compute.lambda
label: "API Handler"
parent: public-subnet
layout:
x: 100
y: 280
edges:
- id: alb-to-lambda
from: alb
to: lambda
Validation
# Validate and build to JSON
bun run packages/cli/src/index.ts build diagram.yaml
# Serve with live reload (default port: 3456)
bun run packages/cli/src/index.ts serve diagram.yaml
Common Errors
Missing Required Fields
Error: Missing required field "version"
Error: Missing required field "docId"
Ensure version and docId are at the document root.
Duplicate IDs
Error: Duplicate node id: "my-node"
Each node and edge must have a unique id.
Missing Edge ID
Error: Edge must have an id
All edges require an id field.
Missing Layout
Error: layout is required for top-level nodes
Error: layout.x is required for top-level nodes
Top-level nodes (without parent) must have a layout with x and y. Child nodes can omit layout for auto-positioning.
Partial Coordinates
Error: layout.x and layout.y must be both specified or both omitted
You cannot specify only x or only y. Either provide both, or omit both for auto-layout.
Invalid Parent Reference
Error: Node "child" references unknown parent: "missing-vpc"
Ensure parent references an existing container node.
Missing Edge Target
Error: Edge references unknown node: "missing-id"
Ensure from and to reference existing node IDs.
YAML Syntax Error
Error: YAML parse error at line 5
Check indentation (2 spaces) and proper quoting.
Tips
- Use descriptive IDs:
user-apinotn1 - Labels can include spaces and special characters (use quotes)
- Use
parentto nest resources inside VPC/Subnet containers - Container nodes (VPC, Subnet) require
wandhin layout - Child nodes can omit
layoutentirely for automatic grid positioning - Use comments with
#for documentation - The
kindfield is flexible - use any string that makes sense for your architecture
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
