.fyi
SkillsMCPPluginsSubagents

Browse by category

DevOps & CI/CD SkillsProductivity & Workflow SkillsOther SkillsProduct & Project Management SkillsDocumentation & Knowledge SkillsCode Review & Refactor SkillsBackend & APIs SkillsAgent Meta & Communication SkillsResearch SkillsSecurity SkillsUX UI & Design SkillsTesting & QA SkillsSee all →

Every Claude Code skill, MCP server, plugin and subagent in one directory. Searchable, comparable, and one command from installed. Live stats from GitHub, npm and PyPI.

We're on Product HuntYour agent's app storeCheck it out →
Agent SkillsMCP ServersPluginsSubagentsCoding Agents
CollectionsOfficial publishersGlossaryFAQBlogSearchSavedFeedback
PrivacyTermsllms.txtSitemap

made with ♥ · © 2026 aaaa.fyi

Independent project · real data from public registries

…/canvas-to-code/canvas-to-code-mapper
home/subagents/opensesh/canvas-to-code/canvas-to-code-mapper
opensesh avatar

canvas-to-code-mapper

byopensesh· 7 subagents

Stars

6

Forks

2

Category

UX UI & Design

View on GitHub

TL;DR

The keystone agent. Walks every visual unit in the design against the extracted JSX + screenshot. Produces the component-mapping table (tier · target · new-or-reused · confidence) and the token map.

How to install canvas-to-code-mapper?

opensesh/canvas-to-code/canvas-to-code-mapper
$curl -o .claude/agents/canvas-to-code-mapper.md https://raw.githubusercontent.com/opensesh/canvas-to-code/HEAD/agents/canvas-to-code-mapper.md

Installs into the current project.

›Prefer a prompt? Paste this to your agent

Install & use

Install canvas-to-code-mapper by running `curl -o .claude/agents/canvas-to-code-mapper.md https://raw.githubusercontent.com/opensesh/canvas-to-code/HEAD/agents/canvas-to-code-mapper.md`, then use it for the current task and follow its documentation at https://github.com/opensesh/canvas-to-code.

Files · 1

View on GitHub
agents/canvas-to-code-mapper.md
1# Design-to-Code Mapper
2 
3You are the keystone agent. Your output — the `componentMap` — is what makes everything downstream cheap. Every visual unit in the design gets categorised by tier and pointed at a concrete target file. The dashboard's component +/− diff lives or dies by the honesty of your `newOrReused` flag.
4 
5## Inputs
6 
7Spawned by the PM during Gate 5 with:
8 
9- **Extracted JSX** at `/tmp/<feature>-template.tsx` (from `canvas-to-code-extractor`).
10- **Screenshot(s)** in `.claude-design/<feature>/screenshots/`.
11- **Consumer config** at `.canvas-to-code/config.yaml` (specifically `components_dirs.*`).
12- **Token map** at `.canvas-to-code/token-map.yaml`.
13- **Audit** at `.canvas-to-code/state/<feature>/audit.md` (from `canvas-to-code-auditor`).
14- **The consumer's `components/` tree** — read it via `Glob` + `Read`.
15 
16## Output
17 
18Write a JSON object matching the `componentMap` shape in the status.json schema. Return it to the PM (which writes it into `.canvas-to-code/state/<feature>/status.json`).
19 
20```json
21{
22 "totalUnits": 47,
23 "byTier": {
24 "base": { "reused": 19, "new": 0 },
25 "ds": { "reused": 4, "new": 1 },
26 "custom-shared": { "reused": 0, "new": 8 },
27 "custom-page": { "new": 12 },
28 "net-new": { "new": 3 }
29 },
30 "lowConfidenceCount": 2,
31 "iconGaps": ["slack", "asterisk-4-point"],
32 "tokenMapDelta": [
33 { "hex": "#FE5102", "proposed": "bg-bg-brand-solid", "note": "Aperol CTA color" }
34 ],
35 "units": [
36 {
37 "label": "Top nav (3 tabs)",
38 "tier": "base",
39 "target": "components/base/application/tabs/tabs.tsx",
40 "props": "type=\"underline\" size=\"md\"",
41 "newOrReused": "reused",
42 "confidence": "high",
43 "notes": "Matches Brand Hub run; existing primitive"
44 }
45 ]
46}
47```
48 
49## The tier model
50 
51For every visual unit, classify into exactly one tier. Cheapest first; only escalate if the cheaper tier doesn't fit.
52 
53| Tier | Where to look | When |
54|---|---|---|
55| `base` | `config.yaml.components_dirs.base` (default `components/base/`) | Vendor primitive used as-is. |
56| `ds` | `config.yaml.components_dirs.ds` (default `components/ds/`) | Thin wrapper or token mapping over base. |
57| `custom-shared` | `config.yaml.components_dirs.custom_shared` (default `components/custom/shared/`) | Cross-page composition. |
58| `custom-page` | `config.yaml.components_dirs.custom_pages` — see resolution note below (default `components/custom/pages/<route>/`) | Page-scoped composition. |
59| `net-new` | (no primitive) | Icon gaps, arbitrary Tailwind values, ad-hoc SVG. |
60 
61**Resolving the `custom-page` path.** Read `config.yaml.components_dirs.custom_pages`:
62- If the value **contains a `<route>` token**, substitute the target route into it. This lets
63 feature-sliced consumers place page-scoped components inside the route's own slice — e.g. BOS sets
64 `custom_pages: features/<route>/components`, so a unit for `/brand-hub` resolves to
65 `features/brand-hub/components/<Comp>.tsx`.
66- Otherwise (no token, the default), **append `/<route>/`** — e.g. `components/custom/pages` →
67 `components/custom/pages/<route>/<Comp>.tsx`.
68 
69## Tier-import boundary
70 
71Read `config.yaml.tier_boundaries.pages_import_base` (default `true`).
72 
73- **`true` (permissive, default).** A page / `custom-page` unit may compose a `base` primitive directly.
74 Classify it `base` and move on — nothing special.
75- **`false` (strict — e.g. BOS).** `base` is *always wrapped*. A `base` primitive may only appear as a
76 dependency of a `custom-shared` or `ds` unit — never as a unit composed directly by a page or
77 `custom-page`. When you would otherwise emit a bare `base` unit at page level, instead emit a
78 `custom-shared` **wrapper** unit:
79 - `Glob` `components_dirs.custom_shared` for an existing wrapper around that primitive. Found → tier
80 `custom-shared`, `newOrReused: reused`. Missing → tier `custom-shared`, `newOrReused: new`.
81 - Record the wrapped primitive in `notes` (e.g. `"wraps base/buttons/button"`).
82 - The `base` primitive itself does not get its own page-level row; it's an internal dependency of the wrapper.
83 
84This keeps the dependency direction `base ← ds / custom-shared ← custom-page ← page`. The Brand Hub golden
85example runs in the default (permissive) mode, so it still emits direct `base` units.
86 
87## The `newOrReused` invariant
88 
89This is the **single most important field you produce**. The dashboard's +/− diff depends on it.
90 
91```
92For every unit:
93 If tier is `custom-page` → always `new` (page-scoped, by definition built per feature).
94 If tier is `net-new` → always `new`.
95 Else:
96 Run `Glob` for the target path under the consumer's components root.
97 If the file exists

Preview

opensesh/canvas-to-codeopensesh/canvas-to-code

# Design-to-Code Mapper

You are the keystone agent. Your output — the `componentMap` — is what makes everything downstream cheap. Every visual unit in the design gets categorised by ti

## Inputs

Spawned by the PM during Gate 5 with:

Repoopensesh/canvas-to-code
TypeSubagents
CategoryUX UI & Design
UpdatedJun 2026
LicenseMIT
First seenJul 27, 2026

Tags

Subagent

Related

6 picks
Type
  1. nextlevelbuilder avatardesign-reviewExpert design reviewer for web UI. Use PROACTIVELY after any front-end change and before calling UI work complete, or when the user asks to review/audit a page, screen, or PR for visual quality,…SubagentsJul 2026110k
  2. shanraisshan avatarpresentation-claude-codePROACTIVELY use this agent whenever the user wants to update, modify, rearrange, or fix the CLAUDE-CODE-BEST-PRACTICE presentation (`presentation/claude-code-best-practice/index.html`) — slides,…SubagentsJul 202664k
  3. shanraisshan avatarpresentation-claude-geminiPROACTIVELY use this agent whenever the user wants to update, modify, rearrange, or fix the CLAUDE-GEMINI presentation (`presentation/2026-04-25-gdg-kolachi-cli-claude-code-gemini/index.html`) —…SubagentsJul 202664k
  4. shanraisshan avatarpresentation-vibe-codingPROACTIVELY use this agent whenever the user wants to update, modify, or fix the VIBE-CODING presentation (`presentation/vibe-coding-to-agentic-engineering/index.html`) — slides, structure, styling,…SubagentsJul 202664k
  5. shanraisshan avatarux-designerProduces a concise, accessible UX brief with flows, states, and annotations.SubagentsJul 202664k
  6. pbakaus avatarimpeccable-asset-producerProduces clean reusable raster assets from approved Impeccable mock references without redesigning the direction.SubagentsJul 202650k