skills/pen-design/SKILL.md
Design and manipulate Pencil (.pen) files using MCP tools. Use this skill when (1) creating UI screens, dashboards, or layouts in .pen format, (2) reading or modifying existing .pen designs, (3) working with design system components, (4) generating code from .pen files, or (5) understanding PEN file structure, tokens, or schema.
npx skillsauth add altshiftstudio/skills pen-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.
Create and manipulate .pen design files using Pencil MCP tools.
get_editor_state → Check active file and selection
get_guidelines → Load topic-specific rules (landing-page, design-system, table, code, tailwind)
batch_get → Read file structure or find components
get_style_guide_tags → Browse available visual styles
get_style_guide → Load style guide for inspiration
open_document → Create new file if needed
batch_design → Insert, update, copy, replace, move, delete nodes (max 25 ops/call)
get_screenshot → Verify visual output after changes
snapshot_layout → Debug layout issues or find clipping problems
get_variables → Read design tokens and themes
set_variables → Update tokens for consistent styling
replace_all_matching_properties → Bulk property updates
| Type | Purpose | Key Properties |
|------|---------|----------------|
| frame | Container/layout | layout, gap, padding, children, reusable |
| text | Typography | content, fontFamily, fontSize, fontWeight |
| rectangle | Shape | width, height, fill, cornerRadius |
| ref | Component instance | ref (source ID), descendants (overrides) |
| icon_font | Icon | iconFontName, iconFontFamily ("lucide") |
| path | Vector | geometry (SVG path data) |
| Property | Values |
|----------|--------|
| layout | "none" (absolute), "horizontal", "vertical" |
| justifyContent | start, center, end, space_between |
| alignItems | start, center, end, stretch |
| width/height | 360, "fill_container", "fill_container(360)", "fit_content" |
| padding | 16, [12, 24], [8, 16, 8, 16] |
Prefix: $--
| Category | Examples |
|----------|----------|
| Colors | $--primary, $--foreground, $--background, $--border |
| Semantic | $--color-success, $--color-warning, $--color-error |
| Typography | $--font-primary, $--font-secondary |
| Radii | $--radius-none, $--radius-m, $--radius-pill |
Operations use JavaScript-like syntax. Every Insert/Copy/Replace needs a binding.
| Op | Syntax | Use |
|----|--------|-----|
| I | btn=I(parent, {type: "frame", ...}) | Insert node |
| U | U(path, {content: "New"}) | Update properties |
| C | copy=C(sourceId, parent, {...}) | Copy node |
| R | new=R(path, {type: "text", ...}) | Replace node |
| M | M(nodeId, newParent, index?) | Move node |
| D | D(nodeId) | Delete node |
| G | G(nodeId, "stock", "office") | Apply image fill |
// Insert instance and override text
card=I(container, {type: "ref", ref: "CardComp"})
U(card+"/titleText", {content: "New Title"})
// Replace slot content
newContent=R(card+"/slot", {type: "text", content: "Custom"})
id in node dataname=...descendants property, not separate U() callsget_screenshot after modifications| File | When to Read | |------|--------------| | mcp-operations.md | Detailed operation syntax, examples, and edge cases | | patterns.md | Element creation examples, styling patterns, theming | | schema.json | Authoritative property definitions for validation |
development
Create, edit, and manipulate Obsidian Canvas (.canvas) files. Use this skill when the user wants to visualize concepts, build flowcharts, or organize information spatially using the JSON Canvas format.
documentation
Create strategic design briefs that empower designers. Use when asked to write a design brief, product brief, feature brief for a new product, flow, or a feature. Triggers include "create a design brief", "brief for [feature]", or "design spec".
documentation
Generates non-obvious ideas using Verbalized Sampling (VS-CoT). Use when the user needs to brainstorm novel solutions, avoid stereotypical patterns, or write creatively.
testing
Create a durable handoff file that captures important conversation state for agent continuity. Use when the context window is getting full, when switching agents/sessions, when handing off work, or when asked to summarize progress without losing decisions, constraints, risks, and pending tasks.