diagrams-as-code
Use only when creating architecture diagrams with Python's `diagrams` library (mingrammer/diagrams).
Skill by sammcj
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/sammcj-diagrams-as-code
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/diagrams-as-code
Tools it pre-approves 13
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(python3*)Bash(uvBash(pipinstallBash(command-vBash(brewReadWriteEditGlob
Show 1 more
Grep
What's inside
- Skill name
diagrams-as-code- Description
- Use only when creating architecture diagrams with Python's `diagrams` library (mingrammer/diagrams).
- License
- Apache-2.0
- Allowed tools
- Bash(python3, *), Bash(uv, *), Bash(pip, install, *), Bash(command, -v, *), Bash(brew, install, *), Read, Write, Edit, Glob, Grep
- Instructions
- 116 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
Files (2)
- SKILL.md
- providers.md · references/
SKILL.md (first lines)
# Diagrams as Code
Generate architecture and infrastructure diagrams using the Python `diagrams` library. Diagrams are Python scripts that render to image files via Graphviz.
## Workflow
1. **Check prerequisites** - verify graphviz and diagrams are installed
2. **Write the diagram script** to a `.py` file in the user's working directory
3. **Run it** with `python3 <file>.py`
4. **Report the output path** to the user (image appears in working directory)
### Prerequisites check
```bash
command -v dot >/dev/null || brew install graphviz
uv pip install --system diagrams 2>/dev/null || pip install diagrams
```
Without graphviz, the script fails with a cryptic error. Always verify first.
## Core API
### Diagram context manager
```python
from diagrams import Diagram
with Diagram(
name="Title", # used as default filename (slugified)
filename="output", # override filename (no extension)
direction="LR", # LR | RL | TB | BT
curvestyle="spline", # spline | ortho | curved | polyline
outformat="png", # png | jpg | svg | pdf | dot (or list)
show=False, # ALWAYS False - prevents auto-opening
strict=False, # merge duplicate edges
autolabel=False, # prefix labels with provider/type
graph_attr={}, # graphviz graph attributes
node_attr={}, # graphviz node attributes
edge_attr={}, # graphviz edge attributes
):
...
```
Always set `show=False` so the script runs non-interactively.
### Nodes
Import from `diagrams.<provider>.<category>`:
```python
from diagrams.aws.compute import EC2, Lambda, ECS
from diagrams.aws.database import RDS, Aurora
from diagrams.aws.network import ELB, Route53, CloudFront
from diagrams.k8s.compute import Pod, Deployment
from diagrams.onprem.database import PostgreSQL, MySQL
from diagrams.onprem.network import Nginx
```
See `references/providers.md` for the full provider and category listing with common node names.
### Data flow operators
```python
ELB("lb") >> EC2("web") >> RDS("db") # left to right
RDS("db") << EC2("web") # right to left
RDS("primary") - RDS("replica") # undirected
ELB("lb") >> [EC2("w1"), EC2("w2")] # fan-out to list
```
Operator precedence matters: `-` (subtraction) binds more tightly than `>>` / `<<` (bitshift) in Python, so `A >> B - C` parses as `A >> (B - C)`. Wrap in parentheses when mixing: `(A >> B) - C`.
### Clusters
```python
from diagrams import Cluster
with Cluster("VPC"):
with Cluster("Private Subnet"):
svc = [ECS("svc1"), ECS("svc2")]
```
Unlimited nesting depth. Clusters accept `graph_attr` for styling (e.g. background colour).
### Edges
```python
from diagrams import Edge
node_a >> Edge(label="HTTPS", color="darkgreen", style="dashed") >> node_b
```
Attributes: `label` (text on the edge), `color` (X11 name or hex), `style` (solid | dashed | dotted | bold).
### Custom nodes
```python
from diagrams.custom import Custom
svc = Custom("My Service", "./icon.png") # local PNG, ideally 256x256
```
## Key Techniques
- **Direction**: use `TB` for layered/hierarchical diagrams, `LR` for pipelines and flows
- **Transparent background**: `graph_attr={"bgcolor": "transparent"}`
- **Multiple outputs**: `outformat=["png", "svg"]`
- **Reduce edge noise**: import `Node` from `diagrams` and create blank junctions with `Node("", shape="plaintext", width="0", height="0")`, or merge overlapping edges with `graph_attr={"concentrate": "true", "splines": "spline"}`
- **Assign nodes to variables** when they connect to multiple other nodes
- **PEP 723** for standalone scripts so `uv run` handles the dependency automatically:
```python
# /// script
# dependencies = ["diagrams"]
# ///
```From sammcj/agentic-coding, Apache-2.0.
More from sammcj/agentic-coding
- 0.740score
release-debrief
Sam McLeod (adapted from Arjen Schwarz)
Summarises the delta between a tool's latest release and the last summary the user saw.
SkillBFreshness: B★ 167Claude Code - 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
rewrite-slop
sammcj
Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
skill-creator-primer
sammcj
You **MUST** load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
prompt-enhancer
sammcj
Transform poor or overly simple prompts with expert-level framing.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
find-docs
sammcj
Retrieves up-to-date documentation, API references and code examples for any developer technology.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
backlog
sammcj
Capture single backlog items, or list and triage an existing project backlog.
SkillAFreshness: A★ 167Claude Code +9 - 0.727score
creating-development-plans
sammcj
Creates structured development plans with phased task breakdowns, requirements, and QA checklists.
SkillAFreshness: A★ 167Claude Code +9
Signals
- Stars
- 167
- Forks
- 25
- Open issues
- 0
- Last commit (this folder)
- Apr 27, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/sammcj/agentic-coding
- Website
- smcleod.net
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from sammcj
- 0.732score
extract-wisdom
sammcj
Extract wisdom, insights, and actionable takeaways from YouTube videos, blog posts, articles, or text files.
SkillAFreshness: A★ 167Claude Code - 0.732score
rewrite-slop
sammcj
Use when explicitly asked to review or rewrite AI-generated text or UI so it reads as human, or with phrasings like "de-slop", "humanise this", "make it sound…
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ai-changelog
sammcj
Set up an AI-driven changelog system in any project, code or not.
SkillAFreshness: A★ 167Claude Code +9 - 0.732score
ambitious-model-use
sammcj
Use when the user asks to be more ambitious with an AI task: aim at the outcome behind it, work it like a field-leading expert from raw data, or bring in…
SkillAFreshness: A★ 167Claude Code +9 - 0.729score
retro
sammcj
Retrospective on a coding session that proposes changes to the agent's environment (checks, pointers, steering, tooling) so the next run goes better.
SkillAFreshness: A★ 167Claude Code +9 - 0.728score
deferred-task-execution
sammcj
Delays execution of a task until a specified time or after a duration.
SkillAFreshness: A★ 167Claude Code +9
Cite this page
diagrams-as-code skill. Agent Mart. https://agentmart.dev/skills/sammcj-diagrams-as-code (last updated 2026-10-24)