Development

pencil-renderer - Claude MCP Skill

Render DNA codes to Pencil .pen frames. Does ONE thing well. Input: DNA code + component type (hero, card, form, etc.) Output: .pen frame ID + screenshot Use when: design-exploration or other orchestrators need to render visual proposals using Pencil MCP backend.

SEO Guide: Enhance your AI agent with the pencil-renderer tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to render dna codes to pencil .pen frames. does one thing well. input: dna code + component type (hero... Download and configure this skill to unlock new capabilities for your AI workflow.

🌟1 stars • 1 forks
📥0 downloads

Documentation

SKILL.md
# Pencil Renderer

Translate aesthetic DNA codes into Pencil .pen frames via MCP.

## Interface

**Input:**
- DNA code: `[layout, color, typography, motion, density, background]`
- Component type: `hero | card | form | nav | footer | section | button | input`
- Optional: Name, dimensions, parent frame ID

**Output:**
- Frame ID in .pen file
- Screenshot of rendered frame

## Workflow

### 1. Ensure Document Ready

```javascript
// Check if editor open
mcp__pencil__get_editor_state({ include_schema: false })

// If no editor, open or create
mcp__pencil__open_document({ filePathOrTemplate: "new" })
```

### 2. Get Style Foundation

```javascript
// Get available style guide tags
mcp__pencil__get_style_guide_tags()

// Get style guide matching DNA mood
// Map DNA to relevant tags:
// - dark color → ["dark-mode", "moody"]
// - light color → ["light", "clean"]
// - spacious density → ["airy", "whitespace"]
// etc.
mcp__pencil__get_style_guide({ tags: [mapped_tags] })
```

### 3. Translate DNA to Pencil Properties

Reference: `references/dna-to-pencil.md`

DNA axis → Pencil property mapping is deterministic.
Example: `centered` layout → `alignItems: "center"`, symmetric padding

### 4. Execute Design Operations

Reference: `references/batch-design-patterns.md`

```javascript
mcp__pencil__batch_design({
  filePath: "<path>.pen",
  operations: `
    frame=I(document, {type: "frame", name: "Hero-Brutalist", ...properties})
    heading=I(frame, {type: "text", content: "Headline", ...typography})
    // ... additional operations
  `
})
```

### 5. Capture Result

```javascript
// Screenshot for visual verification
mcp__pencil__get_screenshot({ nodeId: "frameId" })
```

### 6. Return

```markdown
Frame ID: [id]
DNA: [layout, color, typography, motion, density, background]
```

Plus screenshot image.

## Component Templates

| Type | Structure |
|------|-----------|
| `hero` | Container + headline + subhead + CTA buttons |
| `card` | Container + image area + content + actions |
| `form` | Container + labels + inputs + submit |
| `nav` | Container + logo + links + actions |
| `footer` | Container + columns + links + legal |
| `section` | Container + heading + content grid |
| `button` | Frame + text + icon slot |
| `input` | Frame + label + field + validation |

## DNA Translation Quick Reference

| DNA Axis | Key Pencil Properties |
|----------|----------------------|
| Layout: centered | `alignItems: "center"`, equal padding |
| Layout: asymmetric | Offset positions, varied gaps |
| Layout: bento | Grid with varied spans |
| Color: dark | Dark fill, light foreground |
| Color: gradient | `fill: {type: "linear", stops: [...]}` |
| Typography: display-heavy | Large heading sizes, high contrast |
| Typography: minimal | Restrained scale, single family |
| Density: spacious | gap: 24-48, generous padding |
| Density: compact | gap: 8-16, tight padding |
| Background: solid | Single fill color |
| Background: textured | G() for patterns/images |

## Constraints

- **Single concern**: Render DNA → frame. No interview, no iteration.
- **Pencil MCP required**: Fails fast if unavailable
- **Deterministic mapping**: Same DNA always produces same structure
- **Composable**: Called by orchestrators, not users directly

## References

- `references/dna-to-pencil.md` — Complete axis mapping
- `references/batch-design-patterns.md` — Common operation sequences
- `aesthetic-system/references/dna-codes.md` — DNA axis definitions

## Integration

**Called by:**
- `design-exploration` orchestrator (when Pencil backend available)

**Composes:**
- `aesthetic-system` (for DNA interpretation)

Signals

Avg rating0.0
Reviews0
Favorites0

Information

Repository
phrazzld/claude-config
Author
phrazzld
Last Sync
2/28/2026
Repo Updated
2/27/2026
Created
1/25/2026

Reviews (0)

No reviews yet. Be the first to review this skill!

Related Skills

upgrade-webkit

Upgrade Bun's Webkit fork to the latest upstream version of Webkit.

47942Has guide

firecrawl-build-search

Integrate Firecrawl `/search` into product code and agent workflows. Use when an app needs discovery before extraction, when the feature starts with a query instead of a URL, or when the system should search the web and optionally hydrate result content.

35092

firecrawl-build-onboarding

Get Firecrawl credentials and SDK setup into a project. Use when an application needs `FIRECRAWL_API_KEY`, when an agent should add Firecrawl to `.env`, when the user wants to authenticate Firecrawl for app code, or when choosing the first SDK and docs for a new Firecrawl integration. This skill includes its own browser auth flow, so it does not depend on the website onboarding skill.

35092

firecrawl-build

Integrate Firecrawl into application code whenever a product, agent, or workflow needs web data inside the app — web search, live search results, page scraping, structured extraction, or browser interaction. Use when building any feature that needs data from the web in code, even if the user does not mention Firecrawl explicitly and only describes wanting web data, website content, search, scraping, or interaction in an application. Trigger for Firecrawl requests, "fire girl" shorthand, and generic app-level web-data needs that should map to `/scrape`, `/search`, or `/interact`. Do not use this skill for one-off terminal-only web tasks during the current session; use `firecrawl/cli` for those.

35092

Related Guides