claude/skills/canvas-design/SKILL.md
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
npx skillsauth add lanej/dotfiles canvas-designInstall 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.
These are instructions for creating design philosophies - aesthetic movements that are then EXPRESSED VISUALLY. Output only .md files, .pdf files, and .png files.
Complete this in two steps:
First, undertake this task:
To begin, create a VISUAL PHILOSOPHY (not layouts or templates) that will be interpreted through:
Consider this approach:
The philosophy must emphasize: Visual expression. Spatial communication. Artistic interpretation. Minimal words.
Name the movement (1-2 words): "Brutalist Joy" / "Chromatic Silence" / "Metabolist Dreams"
Articulate the philosophy (4-6 paragraphs - concise but complete):
To capture the VISUAL essence, express how the philosophy manifests through:
CRITICAL GUIDELINES:
The philosophy must guide the next version to express ideas VISUALLY, not through text. Information lives in design, not paragraphs.
"Concrete Poetry" Philosophy: Communication through monumental form and bold geometry. Visual expression: Massive color blocks, sculptural typography (huge single words, tiny labels), Brutalist spatial divisions, Polish poster energy meets Le Corbusier. Ideas expressed through visual weight and spatial tension, not explanation. Text as rare, powerful gesture - never paragraphs, only essential words integrated into the visual architecture. Every element placed with the precision of a master craftsman.
"Chromatic Language" Philosophy: Color as the primary information system. Visual expression: Geometric precision where color zones create meaning. Typography minimal - small sans-serif labels letting chromatic fields communicate. Think Josef Albers' interaction meets data visualization. Information encoded spatially and chromatically. Words only to anchor what color already shows. The result of painstaking chromatic calibration.
"Analog Meditation" Philosophy: Quiet visual contemplation through texture and breathing room. Visual expression: Paper grain, ink bleeds, vast negative space. Photography and illustration dominate. Typography whispered (small, restrained, serving the visual). Japanese photobook aesthetic. Images breathe across pages. Text appears sparingly - short phrases, never explanatory blocks. Each composition balanced with the care of a meditation practice.
"Organic Systems" Philosophy: Natural clustering and modular growth patterns. Visual expression: Rounded forms, organic arrangements, color from nature through architecture. Information shown through visual diagrams, spatial relationships, iconography. Text only for key labels floating in space. The composition tells the story through expert spatial orchestration.
"Geometric Silence" Philosophy: Pure order and restraint. Visual expression: Grid-based precision, bold photography or stark graphics, dramatic negative space. Typography precise but minimal - small essential text, large quiet zones. Swiss formalism meets Brutalist material honesty. Structure communicates, not words. Every alignment the work of countless refinements.
These are condensed examples. The actual design philosophy should be 4-6 substantial paragraphs.
The design philosophy should be 4-6 paragraphs long. Fill it with poetic design philosophy that brings together the core vision. Avoid repeating the same points. Keep the design philosophy generic without mentioning the intention of the art, as if it can be used wherever. Output the design philosophy as a .md file.
CRITICAL STEP: Before creating the canvas, identify the subtle conceptual thread from the original request.
THE ESSENTIAL PRINCIPLE: The topic is a subtle, niche reference embedded within the art itself - not always literal, always sophisticated. Someone familiar with the subject should feel it intuitively, while others simply experience a masterful abstract composition. The design philosophy provides the aesthetic language. The deduced topic provides the soul - the quiet conceptual DNA woven invisibly into form, color, and composition.
This is VERY IMPORTANT: The reference must be refined so it enhances the work's depth without announcing itself. Think like a jazz musician quoting another song - only those who know will catch it, but everyone appreciates the music.
With both the philosophy and the conceptual framework established, express it on a canvas. Take a moment to gather thoughts and clear the mind. Use the design philosophy created and the instructions below to craft a masterpiece, embodying all aspects of the philosophy with expert craftsmanship.
IMPORTANT: For any type of content, even if the user requests something for a movie/game/book, the approach should still be sophisticated. Never lose sight of the idea that this should be art, not something that's cartoony or amateur.
To create museum or magazine quality work, use the design philosophy as the foundation. Create one single page, highly visual, design-forward PDF or PNG output (unless asked for more pages). Generally use repeating patterns and perfect shapes. Treat the abstract philosophical design as if it were a scientific bible, borrowing the visual language of systematic observation—dense accumulation of marks, repeated elements, or layered patterns that build meaning through patient repetition and reward sustained viewing. Add sparse, clinical typography and systematic reference markers that suggest this could be a diagram from an imaginary discipline, treating the invisible subject with the same reverence typically reserved for documenting observable phenomena. Anchor the piece with simple phrase(s) or details positioned subtly, using a limited color palette that feels intentional and cohesive. Embrace the paradox of using analytical visual language to express ideas about human experience: the result should feel like an artifact that proves something ephemeral can be studied, mapped, and understood through careful attention. This is true art.
Text as a contextual element: Text is always minimal and visual-first, but let context guide whether that means whisper-quiet labels or bold typographic gestures. A punk venue poster might have larger, more aggressive type than a minimalist ceramics studio identity. Most of the time, font should be thin. All use of fonts must be design-forward and prioritize visual communication. Regardless of text scale, nothing falls off the page and nothing overlaps. Every element must be contained within the canvas boundaries with proper margins. Check carefully that all text, graphics, and visual elements have breathing room and clear separation. This is non-negotiable for professional execution. IMPORTANT: Use different fonts if writing text. Search the ./canvas-fonts directory. Regardless of approach, sophistication is non-negotiable.
Download and use whatever fonts are needed to make this a reality. Get creative by making the typography actually part of the art itself -- if the art is abstract, bring the font onto the canvas, not typeset digitally.
To push boundaries, follow design instinct/intuition while using the philosophy as a guiding principle. Embrace ultimate design freedom and choice. Push aesthetics and design to the frontier.
CRITICAL: To achieve human-crafted quality (not AI-generated), create work that looks like it took countless hours. Make it appear as though someone at the absolute top of their field labored over every detail with painstaking care. Ensure the composition, spacing, color choices, typography - everything screams expert-level craftsmanship. Double-check that nothing overlaps, formatting is flawless, every detail perfect. Create something that could be shown to people to prove expertise and rank as undeniably impressive.
Output the final result as a single, downloadable .pdf or .png file, alongside the design philosophy used as a .md file.
IMPORTANT: The user ALREADY said "It isn't perfect enough. It must be pristine, a masterpiece if craftsmanship, as if it were about to be displayed in a museum."
CRITICAL: To refine the work, avoid adding more graphics; instead refine what has been created and make it extremely crisp, respecting the design philosophy and the principles of minimalism entirely. Rather than adding a fun filter or refactoring a font, consider how to make the existing composition more cohesive with the art. If the instinct is to call a new function or draw a new shape, STOP and instead ask: "How can I make what's already here more of a piece of art?"
Take a second pass. Go back to the code and refine/polish further to make this a philosophically designed masterpiece.
To create additional pages when requested, create more creative pages along the same lines as the design philosophy but distinctly different as well. Bundle those pages in the same .pdf or many .pngs. Treat the first page as just a single page in a whole coffee table book waiting to be filled. Make the next pages unique twists and memories of the original. Have them almost tell a story in a very tasteful way. Exercise full creative freedom.
Abstract vs. concrete output: The generative/abstract art direction is not always appropriate. When the artifact is a system diagram, icon, or informational visual for a technical document (strategy doc, Google Doc, presentation), the user needs concrete, legible illustrations — not interference patterns or generative noise. Read the request context: "visuals for each layer of a strategy ladder" means system diagram icons, not abstract art. If the domain is technical communication, default to clean diagram aesthetics: rounded rectangles, arrows, labeled nodes. Apply the art philosophy only when the output is genuinely decorative or expressive.
Consistent pixel dimensions across a figure series: bbox_inches="tight" trims each figure to its content bounds independently, producing different output sizes across figures with different content extents. For a series that must be identical dimensions, use fig.subplots_adjust(left=0, right=1, top=1, bottom=0) to fill the full figure area, and omit bbox_inches entirely when saving: fig.savefig(path, dpi=N, facecolor=bg).
Font family name after addfont(): font_manager.fontManager.addfont(path) registers a font using its internal family name, which differs from the filename. "IBMPlexMono-Regular.ttf" registers as "IBM Plex Mono", not "IBMPlexMono". Before using a registered font in ax.text(fontfamily=...), verify the correct name: from matplotlib import font_manager as fm; fm.FontProperties(fname=path).get_name(). Using the wrong name silently falls back to the default font.
Always read the output PNG before reporting: After any plt.savefig() / uv run python script.py, use the Read tool on every generated PNG and check before declaring done: (1) icon/element color-on-color invisibility — white icon on white circle is invisible; (2) elements overlapping or clipping lines/arrows — an icon centered at an arrow origin means the arrow runs through the icon; (3) stale visual artifacts — a sub-panel whose label was removed becomes mysterious noise and should be removed too. Do NOT report "done" until the image has been visually inspected.
ep-slides icon integration: ep-slides ships 60+ professionally designed RGBA PNG icons at ~/src/ep-slides/data/icons/ (browse with cat data/icons/manifest.json | python3 -m json.tool). To use in matplotlib: load with mpimg.imread(path) (float32 RGBA [0,1]), strip background via red-channel discriminator is_bg = img[:,:,0] > 0.50 — more reliable than brightness threshold because icon blue has low red (~0.14) while white background has high red (~1.0). Tint non-background pixels to target color, place with ax.imshow(img, extent=[cx-sz/2, cx+sz/2, cy-sz/2, cy+sz/2], aspect="auto", origin="upper", zorder=N). For the EasyPost brand icon: use white version on dark backgrounds, blue version on light — the icon's blue matches some banner backgrounds exactly, making it invisible without the light/dark split.
Icon placement checklist: After placing any icon, verify before rendering: (a) icon bounding box [cx±sz/2, cy±sz/2] does not overlap any arrow or line endpoint — if the arrow starts at x0 and the icon right edge is at cx+sz/2 > x0, the arrow runs through the icon; (b) foreground/background contrast — compute whether icon color matches the shape it sits on; (c) if the icon labels a filled shape, remove the shape or differentiate colors — don't stack same-color elements; (d) zorder: icon below arrow (zorder < arrow_zorder) if the arrow should terminate at the icon, above if the icon should sit on top of everything.
Diagram-specific patterns: For shape boundary math (arrow edge attachment, FancyBboxPatch clipping), diagram series consistency, and icon semantic value discipline, see the matplotlib skill — those patterns live there.
devops
DORA engineering metrics project at ~/src/dora. Load when: querying DORA BigQuery views (deployment frequency, lead time, change failure rate, alerts, review time) from any project; joining against DORA.unified_identity or DORA_clean.* views from any project; running the data pipeline (just refresh, just download-*, just upload-*); making OpenTofu infrastructure changes to DORA tables or views; working with team attribution, team identity, or engineer roster data.
development
Data pipeline architecture patterns and best practices, including medallion/three-layer architecture (Raw/Staging/Enriched or Bronze/Silver/Gold), YAML-based schema management, and ETL workflow patterns. Use when designing or implementing data pipelines, working with data warehouse layers, or managing table schemas in YAML.
data-ai
Delegate research and context-gathering tasks to a sub-agent to protect the primary context window. Use when the user asks to "research X", "look into X", "find out about X", "gather context on X", or any investigative framing where answering requires 2+ searches or multiple sources. Also use proactively before starting substantive work when prior context is unknown. Never run research inline — always delegate.
documentation
--- name: qmd-math description: Math notation conventions for Quarto/EPQ documents rendered via lualatex. Use when: writing or adding a formula, equation, or mathematical expression to a .qmd file; asked about display math, inline math, or LaTeX notation in a QMD/Quarto context; defining a where-clause or variable definitions for an equation; converting prose variable descriptions into structured math notation; fixing math that renders badly in a PDF; using \lvert, \begin{aligned}, \tfrac, \text