VisualSpec
Structured, constraint-aware visual generation and deterministic layout for AI agents
What can you do with VisualSpec?
visual_brief_to_spec: Convert natural language requests into valid VisualSpec YAML.visual_validate_spec: Schema validation for specs.visual_render: Deterministic layout & typography rendering (zero API key).visual_generate: Full image model adapter + deterministic text overlay pipeline.visual_check_qa: Inspect safe margins, line counts, dimensions, and invariants.visual_repair: Automated diagnosis and localized typography/layout repair.visual_list_resources: List supported platform packs and templates.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
@utkarshx27/visualspecclaude mcp add visualspec -e 'OPENAI_API_KEY=<your openai_api_key>' -e 'GEMINI_API_KEY=<your gemini_api_key>' -- npx -y @utkarshx27/visualspec@0.1.0
{
"mcpServers": {
"visualspec": {
"command": "npx",
"args": [
"-y",
"@utkarshx27/visualspec@0.1.0"
],
"env": {
"OPENAI_API_KEY": "<your openai_api_key>",
"GEMINI_API_KEY": "<your gemini_api_key>"
}
}
}
}
Environment variables
OPENAI_API_KEYsecret Optional API key for OpenAI image generationGEMINI_API_KEYsecret Optional API key for Google Gemini image generation
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
VisualSpec
Deterministic visual generation for AI agents.
AI creates the imagery. VisualSpec guarantees the typography and layout.
# Instant workspace setup (no clone required)
npx @utkarshx27/visualspec init
# Launch local MCP Server for Cursor, Claude Desktop, or Antigravity
npx @utkarshx27/visualspec mcp
The Core Problem
Most image-generation workflows fail for social and marketing graphics because a single natural-language prompt is expected to handle too many concerns at once:
- subject & background
- exact typography & wording
- platform dimensions & safe margins
- visual hierarchy & negative space
- brand color rules & constraints
Image models frequently hallucinate gibberish text, truncate words, or disregard composition rules.
The Solution: Layer Separation
VisualSpec separates generative concerns from deterministic concerns:
- Generative Layers (AI Models): Photography, 3D subjects, atmospheric backgrounds, textures, lighting.
- Deterministic Layers (Code & SVG Engine): Exact headlines, subtitles, badges, logos, metrics, safe margins, and layout rules.
- Structured Visual Spec: A machine-readable YAML specification that acts as the single contract.
- Visual QA & Targeted Repair: Verifies geometry, margins, and exact copy invariants, synthesizing localized repairs without regenerating entire scenes.
User Brief / Intent
│
▼
Visual Spec (spec.yaml)
│
┌───┴──────────────┐
▼ ▼
Platform Pack Template Pack
│ │
└───┬──────────────┘
▼
Spec Resolver
│
┌───┴───────────────────────┐
▼ ▼
Model Adapter Deterministic Layout
(Generative Base) (SVG Typography / Overlay)
│ │
└───┬───────────────────────┘
▼
Compositor (Sharp)
│
▼
Visual QA (Constraints, Safe Margins, Exact Copy)
│
├── PASS ──► Final Asset Bundle
│
└── FAIL ──► Targeted Repair Planner
Documentation
- Architecture & Design Principles
- VisualSpec Schema & Contract
- MCP Server Setup (Cursor, Claude, Antigravity)
- Adding a New Image Model Provider
- Contributing Guidelines
Quickstart
Instant Run (No Install Required)
# Initialize a new VisualSpec workspace
npx @utkarshx27/visualspec init
# Launch local MCP Server for Cursor, Claude, or Antigravity IDE
npx @utkarshx27/visualspec mcp
Or Install Globally
npm install -g @utkarshx27/visualspec
# Use CLI commands directly
visual init
visual mcp
Or Build from Source
git clone https://github.com/utkarshx27/visualspec.git
cd visualspec
npm install
npm run build
1. Initialize a Project
npx @utkarshx27/visualspec init
2. Validate a Visual Spec
npx @utkarshx27/visualspec validate examples/product-launch/spec.yaml
3. Inspect the Compiled Generation Prompt
npx @utkarshx27/visualspec compile examples/product-launch/spec.yaml --provider openai
4. Deterministic Render (No API Key Required)
Render layout, typography, and background styling locally:
npx @utkarshx27/visualspec render examples/product-launch/spec.yaml --output ./output/demo-launch
5. Run the Full Generation Pipeline
npx @utkarshx27/visualspec generate examples/product-launch/spec.yaml --provider mock --output ./output/demo-launch
6. Verify Asset Quality with Visual QA
npx @utkarshx27/visualspec check ./output/demo-launch/final.png --spec examples/product-launch/spec.yaml
Model Context Protocol (MCP) Server
VisualSpec runs as a native MCP server over stdio, enabling AI coding assistants (Cursor, Claude Code, Gemini CLI, and Antigravity IDE) to invoke visual tools directly:
# Launch MCP server over stdio
npx @utkarshx27/visualspec mcp
# Or if installed globally
visual mcp
Available MCP Tools
visual_brief_to_spec: Convert natural language requests into valid VisualSpec YAML.visual_validate_spec: Schema validation for specs.visual_render: Deterministic layout & typography rendering (zero API key).visual_generate: Full image model adapter + deterministic text overlay pipeline.visual_check_qa: Inspect safe margins, line counts, dimensions, and invariants.visual_repair: Automated diagnosis and localized typography/layout repair.visual_list_resources: List supported platform packs and templates.
See the MCP Setup Guide for Cursor, Claude Desktop, and Antigravity IDE configuration snippets.
Output Bundle
Every generation creates a complete, reproducible debug bundle:
output/demo-launch/
├── final.png # Platform-ready asset
├── visual-spec.yaml # Original input specification
├── resolved-spec.yaml # Full spec with platform & template rules applied
├── generation-request.json # Exact prompt and negative parameters sent to model
├── qa-report.json # Deterministic and constraint QA verification results
└── metadata.json # Execution timestamps and file index
Supported Platforms & Templates
Platforms
- Instagram: Feed portrait (1080x1350, 4:5), Square (1080x1080, 1:1), Story (1080x1920, 9:16).
- LinkedIn: Feed portrait (1080x1350), Square (1080x1080), Banner (1200x628).
- Generic Social: Universal 1:1, 4:5, and 16:9 social formats.
Templates
- Product Launch: High-impact headline, feature pill, product visual region, supporting subhead.
- Quote Card: Center-focused editorial quote, author attribution, minimal atmospheric glow.
- Stat Card: Large numeric hero metric, descriptive label, and data context notes.
Agent Skills
The framework includes 10 standardized skill definitions located in ./skills/:
using-visualspec: Master workflow instructions.visual-brief: Brief extraction and analysis.visual-spec: YAML authoring and schema rules.composition: Spatial hierarchy and negative space allocation.typography: Font family classing and line budgeting.strict-constraints: Invariant taxonomy and forbidden parameters.social-instagram: Instagram-specific design reasoning.social-linkedin: LinkedIn-specific design reasoning.visual-qa: Automated inspection and validation.visual-repair: Localized diagnosis and patch generation.
Roadmap & Open Contributions
We welcome contributions! Key areas to build together:
- [ ] Additional Platforms: X/Twitter (Header, Post), YouTube Thumbnails, Pinterest, TikTok Cover.
- [ ] Additional Templates: Testimonial, Product Comparison, Event Announcement, Feature List.
- [ ] Additional Image Model Adapters: Flux, Stable Diffusion / ComfyUI, Midjourney API.
- [ ] Brand Packs: Multi-brand palette overrides, custom font loading, logo clear space rules.
- [ ] Visual Studio: Local web playground / viewer for real-time spec inspection and margin toggling.
Contributing
Contributions are welcome! Please check our:
Testing
Run the automated test suite:
npm test
All 28 tests run offline without requiring any third-party API keys.
License
Licensed under the Apache License, Version 2.0.
Frequently asked questions
What is VisualSpec?
Structured, constraint-aware visual generation and deterministic layout for AI agents
How do I install VisualSpec?
It runs on your machine. In Claude Code: claude mcp add visualspec -e 'OPENAI_API_KEY=<your openai_api_key>' -e 'GEMINI_API_KEY=<your gemini_api_key>' -- npx -y @utkarshx27/visualspec@0.1.0. For other clients, paste the JSON configuration from this page into their MCP settings.
Does VisualSpec need an API key?
Yes. It expects OPENAI_API_KEY, GEMINI_API_KEY, which you set in its configuration.
Is VisualSpec open source?
Yes. Its code is on GitHub under the Apache-2.0 license.
Who maintains VisualSpec?
It is published by utkarshx27. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.