skills/7nohe/yaml-authoring/SKILL.md
Create and validate YAML diagram files. Use when writing new diagrams or troubleshooting YAML syntax.
npx skillsauth add aiskillstore/marketplace yaml-authoringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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
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:
x/y overrides auto-positioningx or only y (both or neither)The kind field uses a hierarchical format: category.type or category.subcategory.type
| Kind | Description |
|------|-------------|
| network.vpc | Virtual Private Cloud |
| network.subnet | Subnet within VPC |
| 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 |
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
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"
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
# 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
Error: Missing required field "version"
Error: Missing required field "docId"
Ensure version and docId are at the document root.
Error: Duplicate node id: "my-node"
Each node and edge must have a unique id.
Error: Edge must have an id
All edges require an id field.
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.
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.
Error: Node "child" references unknown parent: "missing-vpc"
Ensure parent references an existing container node.
Error: Edge references unknown node: "missing-id"
Ensure from and to reference existing node IDs.
Error: YAML parse error at line 5
Check indentation (2 spaces) and proper quoting.
user-api not n1parent to nest resources inside VPC/Subnet containersw and h in layoutlayout entirely for automatic grid positioning# for documentationkind field is flexible - use any string that makes sense for your architecturedevelopment
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.