create-canvas
Skill10k starsChanged 16 days agoMITView on GitHub
Build a freeform canvas to explore, compare, and iterate on anything.
We split this skill into the rules it gives an agent
57 rules. About 0 are common, 54 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈54
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Read repository rules, routes, component APIs, themes, design tokens, and tests.
- Distinctive: line 13
Look for an existing canvas before creating another.
- Distinctive: line 14
Use the project's framework, components, typography, design tokens, themes, and access controls.
- Distinctive: line 16
Ask before changing scope, adding dependencies, changing shared code, or exposing the canvas publicly.
- Distinctive: line 17
If safe isolation is unclear, ask before proceeding.
- Distinctive: line 19
Keep canvas code together.
- Distinctive: line 20
Start with one safe live preview, a readable label, and a separate move handle.
- Distinctive: line 21
Add the registry and requested content next.
- Distinctive: line 27
Keep the registry easy to find.
- Distinctive: line 28
Add, duplicate, rename, and remove items through source edits.
- Distinctive: line 29
Keep membership, names, dimensions, and implementations in source.
- Distinctive: line 30
Never evaluate stored strings or model responses as code at runtime.
- Distinctive: line 31
Update the existing workspace for follow-up requests.
- Distinctive: line 32
If a reference is ambiguous, ask which item the user means.
- Distinctive: line 36
When comparing one feature, keep other data, content, dimensions, and the global theme the same.
- Distinctive: line 38
Place additions in nearby empty space using measured bounds.
- Distinctive: line 44
Use each preview's intended dimensions.
- Distinctive: line 45
Do not add decorative cards, banners, or background patterns.
- Very specific: line 46
Put each name above its preview, such as Pricing card · compact.
- Distinctive: line 50
Use the clipboard API when available.
- Distinctive: line 51
If clipboard access fails or is unavailable, offer selectable text.
- Distinctive: line 52
Put a visible move handle beside the label.
- Very specific: line 55
Use cursor: default on canvas navigation surfaces and handles, including during gestures.
- Distinctive: line 58
Use the existing theme API for light, dark, and named themes.
- Distinctive: line 59
Do not invent themes or add per-preview themes.
- Distinctive: line 60
If portal themes fail through public APIs, report the limit.
- Distinctive: line 67
Keep production components independent of canvas code.
- Distinctive: line 68
Keep experiments local to the canvas.
- Distinctive: line 69
Before mounting, use synthetic data, mock services, safe providers, and existing callbacks to prevent real requests and writes.
- Distinctive: line 70
Never use personal data or production credentials.
- Distinctive: line 71
If safe isolation is unavailable, omit the preview and explain why.
- Distinctive: line 74
Do not remount previews or erase input when moving items, copying names, changing themes, or changing the camera.
- Distinctive: line 76
Keep portals in their native roots at screen-space size.
- Distinctive: line 77
Use public container APIs only when needed.
- Distinctive: line 78
If transforms break portals, report the limit or propose a separate preview document.
- Distinctive: line 79
Do not patch libraries, browser APIs, preview DOM, or portal roots.
- Distinctive: line 88
Keep the canvas point under the pointer fixed during wheel or pinch zoom.
- Distinctive: line 94
Keep accessible fit-all and reset-camera controls fixed and reachable when items are offscreen.
- Distinctive: line 95
Run fit-all after layout settles.
- Distinctive: line 99
After a pan, do not activate controls, copy labels, follow links, or trigger middle-click autoscroll.
- Distinctive: line 100
If an interactive control or editable region has focus, do not arm Space-to-pan.
- Distinctive: line 102
Keep modal portals outside canvas gesture handling.
- Distinctive: line 104
If a nested scroll area can scroll in the gesture direction, let it scroll.
- Distinctive: line 107
Use one finger to move items through their handles.
- Very specific: line 115
Do not trap history with pushState, patch browser APIs, or leave permanent global handlers.
- Distinctive: line 119
Keep active gesture values outside component-wide React state.
- Distinctive: line 120
Update only canvas-owned wrappers.
- Distinctive: line 123
Do not measure every preview each frame or alternate layout reads and writes.
- Distinctive: line 127
Add virtualization or memoization only with profiling evidence.
- Distinctive: line 132
Use a small versioned document under a project-specific and canvas-specific key.
- Distinctive: line 136
Always show new entries. Use current source names and dimensions immediately.
- Distinctive: line 140
Never store or deserialize executable components, secrets, tokens, account data, or form contents.
- Distinctive: line 145
Run repository-required checks.
- Distinctive: line 149
Use a supported device for touch tests.
- Distinctive: line 151
Test zoom in both directions over empty space and previews.
- Distinctive: line 153
Only report a test as passed if you ran it.
- Distinctive: line 161
Not working or not tested: Limits, omissions, and reasons.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Create canvas
Build a freeform workspace for exploration and iteration through conversation. The model changes content in source files. The canvas makes that content live, named, movable, and easy to reference.
Start with the project
- Read repository rules, routes, component APIs, themes, design tokens, and tests.
- Look for an existing canvas before creating another.
- Use the project's framework, components, typography, design tokens, themes, and access controls.
- Respect restrictions on edits, commands, and browser access.
- Ask before changing scope, adding dependencies, changing shared code, or exposing the canvas publicly.
- If safe isolation is unclear, ask before proceeding. Never mount an unsafe preview.
- Choose sensible defaults for other decisions. Do not ask the user to repeat clear requests.
- Keep canvas code together. Separate camera and placement logic from previews, test data, and their registry. Do not build a framework.
- Start with one safe live preview, a readable label, and a separate move handle. Make sure that it mounts.
- Add the registry and requested content next. Then add copying, camera controls, existing themes, and saved layout.
Keep content in source
A registry is a typed list of canvas items. Each entry defines a stable ID, unique readable name, component, safe test data, initial position, and dimensions.
- Keep the registry easy to find. Adding an item must not require changes to the camera or gesture code.
- Add, duplicate, rename, and remove items through source edits. Do not add runtime editor controls or delete shortcuts.
- Keep membership, names, dimensions, and implementations in source. Browser storage must not create or hide items.
- Never evaluate stored strings or model responses as code at runtime.
- Update the existing workspace for follow-up requests. Preserve names, IDs, positions, and unrelated experiments.
- If a reference is ambiguous, ask which item the user means.
- For “try another version,” preserve the original. Give each variation a new ID, unique readable name, and independent state.
- For “change this version,” update that item in place. Rename it only when asked.
- For removal requests, remove only the requested registry entry. Preserve shared components and unrelated work.
- When comparing one feature, keep other data, content, dimensions, and the global theme the same.
- For broader alternatives, name the layout differences. Do not create a full variant matrix unless requested.
- Place additions in nearby empty space using measured bounds. Reveal them with the camera without rearranging existing items or resetting the view.
- Preserve positions after content expansion, resizing, and reload. Allow intentional overlap. Keep move handles accessible when items overlap.
Keep the workspace quiet
- Fill the viewport with a plain background, subtle preview boundaries, and minimal fixed controls.
- Use each preview's intended dimensions. Do not stretch content into oversized frames.
- Do not add decorative cards, banners, or background patterns.
- Put each name above its preview, such as
Pricing card · compact. Do not use vague names or opaque IDs as labels. - Give the name button behavior without button styling or a separate copy button.
- Copy the exact name on click, Enter, Space, or touch. Do not copy an ID, code, or URL.
- Explain copying on hover and keyboard focus. Hover alone must not copy. Touch activation must not require hover.
- Use the clipboard API when available. Announce brief “Copied” feedback only after success. Keep the name visible during feedback.
- If clipboard access fails or is unavailable, offer selectable text. Do not crash or claim success.
- Put a visible move handle beside the label. The label copies without dragging. The handle moves the item, not its body.
- Convert pointer movement to canvas coordinates at the current zoom.
- Support keyboard movement on the focused handle. Provide visible focus and accessible instructions.
- Use
cursor: defaulton canvas navigation surfaces and handles, including during gestures. - Preserve native text, link, input, and resize cursors inside previews. Do not apply cursor rules to all descendants.
- Include pan, zoom, fit-all, reset-camera, one global theme selector, and saved layout.
- Use the existing theme API for light, dark, and named themes. Apply the same theme to canvas controls, previews, menus, and dialogs.
- Do not invent themes or add per-preview themes. If themes are unsupported, omit the selector and explain why.
- If portal themes fail through public APIs, report the limit.
- Unless requested, omit resizing, width presets, comparison arrangements, drawing, connectors, catalogs, property editors, multi-selection, snapping, and undo/redo.
- For requested mobile or desktop previews, define their dimensions in the registry.
Preserve live content
- Reuse production components through public APIs. Do not change their source, exports, hooks, or styles to support the canvas.
- Keep production components independent of canvas code.
- Keep experiments local to the canvas. Move them into production only when asked.
- Before mounting, use synthetic data, mock services, safe providers, and existing callbacks to prevent real requests and writes.
- Never use personal data or production credentials.
- If safe isolation is unavailable, omit the preview and explain why. An iframe or separate document alone does not provide isolation.
- Preserve clicking, typing, text selection, shortcuts, focus, nested scrolling, and touch input.
- Preserve the real behavior of disabled and read-only examples.
- Do not remount previews or erase input when moving items, copying names, changing themes, or changing the camera.
- Preview drafts do not need to survive reload.
- Keep portals in their native roots at screen-space size. Let the library manage positioning and modal focus.
- Use public container APIs only when needed. Make sure that portal alignment and clickable areas work at different zoom levels.
- If transforms break portals, report the limit or propose a separate preview document.
- Do not patch libraries, browser APIs, preview DOM, or portal roots.
- Define navigation in the canvas host, including links in portals. Do not change component links or router internals.
- Canvas-item links reveal their target instead of scrolling the page.
- Other navigation must not perform real project actions or silently lose the workspace.
Keep gestures separate from preview input
- Support mouse drag to pan from empty space.
- Support Ctrl/Meta + wheel and trackpad pinch to zoom over empty space and previews.
- Keep the canvas point under the pointer fixed during wheel or pinch zoom.
- Provide zoom-in and zoom-out buttons and keyboard controls. Center their zoom on the viewport.
- Zoom smoothly in both directions without jumps or drift. Preserve item positions and preview state.
- Support touch pan and pinch where the browser permits them.
- Support keyboard camera navigation when the canvas shell has focus.
- Show visible keyboard focus on all canvas controls.
- Keep accessible fit-all and reset-camera controls fixed and reachable when items are offscreen.
- Run fit-all after layout settles. Fit the actual bounds, including each title, handle, and boundary. Do not rearrange items.
- Reset only the camera. Preserve membership, positions, themes, and drafts.
- Support Space + primary-button drag and middle-button drag to pan anywhere on the canvas, including over previews.
- Give explicit pan gestures priority over item movement and name copying.
- After a pan, do not activate controls, copy labels, follow links, or trigger middle-click autoscroll.
- If an interactive control or editable region has focus, do not arm Space-to-pan.
- Preserve Space activation of buttons and labels. Preserve preview arrow keys, Escape, and undo.
- Keep modal portals outside canvas gesture handling. Preserve their focus, backdrop behavior, and native controls.
- Support two-finger trackpad pan over empty space and previews.
- If a nested scroll area can scroll in the gesture direction, let it scroll. Otherwise, pan the canvas.
- Give modified-wheel and pinch zoom priority over scroll routing. Keep other portal scrolling native.
- Restrict event cancellation and touch restrictions to owned gestures. Do not disable native input across preview content.
- Use one finger to move items through their handles. Preserve ordinary one-finger preview interactions.
- Support two-finger canvas pan and pinch without breaking native preview gestures. Report browser limits instead of disabling preview touch.
- Track which gesture owns each interaction. Clear held keys on cancellation, window blur, and hidden tabs.
- Handle changes in pointer count, pointer cancellation, and lost pointer capture.
- On teardown, release captures and clean up listeners, observers, timers, and animation frames.
- While the route is active, apply
overscroll-behavior-x: noneto the document viewport and canvas scroll boundary. - Block Chrome horizontal history swipes. An inner wrapper alone does not guarantee prevention.
- Restore prior document styles on teardown. Preserve nested horizontal scrolling, Back/Forward controls, and navigation shortcuts.
- Do not trap history with
pushState, patch browser APIs, or leave permanent global handlers. - Prevent native page scrolling from moving the canvas. Reveal offscreen keyboard focus through camera movement instead.
- Require finite, bounded camera coordinates, item positions, and zoom.
- Combine pointer and wheel updates into at most one transform write per animation frame.
- Keep active gesture values outside component-wide React state. Camera movement must not rerender previews.
- Update only canvas-owned wrappers. Do not change preview DOM or layout-affecting positions during gestures.
- Cache measured bounds. Refresh them together when content, dimensions, or layout changes.
- Ignore temporary rendering placeholders when measuring content bounds.
- Do not measure every preview each frame or alternate layout reads and writes.
- Save after gestures or with a bounded debounce. Do not write storage on every pointer event.
- On teardown, safely flush pending saves when possible.
- Prevent expensive effects, permanent per-preview compositing hints, and full-canvas work for one item's movement.
- Add virtualization or memoization only with profiling evidence. Offscreen unmounting can lose input and break focus or portals.
Save layout, not content
- Save only the camera, supported theme preference, and positions keyed by stable registry ID.
- Use a small versioned document under a project-specific and canvas-specific key.
- Respect existing app preferences and unrelated theme configuration. Do not create a competing theme preference.
- Apply the same numeric limits to saved layout. Use project conventions to validate IDs, supported themes, document size, and position counts.
- Render every current registry entry. Apply valid saved positions and ignore stale IDs.
- Always show new entries. Use current source names and dimensions immediately.
- Handle malformed data, unavailable storage, and quota errors without breaking the canvas.
- For known older formats, retain only valid camera values, themes, and positions for current IDs.
- Discard saved membership, names, dimensions, duplicates, and hidden or removed state. For unknown versions, use safe defaults.
- Never store or deserialize executable components, secrets, tokens, account data, or form contents.
- Unless explicitly requested, do not save preview drafts or interaction history.
Test and report honestly
Run repository-required checks. Make sure that the route mounts, imports resolve, and the console shows no errors. Inspect the diff for unintended production changes.
For a new canvas or controller changes, test every behavior above. For content-only changes, test affected behaviors without rebuilding the controller. Include several zoom levels, viewport sizes, and reloads with an existing saved layout.
Use a supported device for touch tests. Use actual trackpad input and a real history entry for Chrome history-swipe tests.
Test zoom in both directions over empty space and previews. Make sure that the zoom anchor stays fixed without jumps or drift. Test buttons and keyboard zoom around the viewport center. Test trackpad pan over preview content and nested scroll areas, including their scroll limits.
Only report a test as passed if you ran it. Compilation and source review do not prove browser behavior. Report unavailable device tests and browser limits.
Before claiming smooth performance, profile a representative populated canvas, not one empty example. Record the preview count, browser, device, and measurements during pan, zoom, and movement. Investigate long tasks, repeated layout, synchronous storage writes, and preview rerenders. Report observed stalls and untested cases. A preview-only edit does not require rebuilding or profiling an unchanged controller.
Finish with a short report that includes these details:
- Changed: Paths, purpose, local experiments, shared component changes, and exact names of new previews.
- Checks run: Tests that you ran and their results.
- Not working or not tested: Limits, omissions, and reasons.
- Decisions made: Defaults that you chose without asking.
Trending
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Who's talking about ibelick/ui-skills
- @github-trending-js.bsky.social“🎉 Celebrating! 🎉 (500+ new stars) 📦 ibelick / ui-skills ⭐ 5,581 (+536) 🗒 TypeScript Skills for Design …”Bluesky · Jul 21, 2026 · 5 likes
- A Hacker News story“UI-Skills”Hacker News · Jul 15, 2026 · 5 points
- @yug1224.com“デザインエンジニアに必要なスキルを体系的にまとめた学習リソース集らしい UI実装の引き出しを増やしたいときにかなり役立ちそう yug1224 starred ibelick/ui-skills …”Bluesky · Jun 10, 2026 · 3 likes
- @github-trending-js.bsky.social“🔥 Hot Repo! 🔥 (100+ new stars) 📦 ibelick / ui-skills ⭐ 3,919 (+141) 🗒 TypeScript Skills for Design …”Bluesky · Jul 16, 2026 · 2 likes
- @github-trending-js.bsky.social“🚀 Skyrocketing! 🚀 (200+ new stars) 📦 ibelick / ui-skills ⭐ 2,103 (+258) 🗒 TypeScript Skills for Design …”Bluesky · Jun 9, 2026 · 2 likes
The biggest 5 of 43 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 43
Talked about on GitHub, Bluesky, the web and Hacker News (43 times).
On GitHub · 32
- Jul 19, 2026fp-design: add form-error association to §Accessibility checklist — jackypanster/pipeline-frontend1 reaction · 2 comments
- Oct 28, 2026docs: UI/UX 外部專案研究與畫面健檢(派工單 CA) — a91453/railway-game-ios0 reactions
- Oct 18, 2026P1 — Evidence-driven UX/UI audit and marketer-first redesign of weak product states — Rajeev-SG/gog-marketing0 reactions · 1 comment
- Oct 18, 2026docs(engineering): add a guide to designing web-app interfaces, UX evaluation and UX monitoring — a6m1n/my-claude-best0 reactions · 1 comment
- Oct 4, 2026[Candidate] ibelick/ui-skills/skills/fixing-accessibility - fixing-accessibility — ProSkillsMD/proskills0 reactions · 1 comment
27 more on GitHub
- Oct 4, 2026[Candidate] ibelick/ui-skills/skills/create-design-md - create-design-md — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 4, 2026[Candidate] ibelick/ui-skills/skills/baseline-ui - baseline-ui — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 4, 2026claude-code-plugins.github.ibelick.ui-skills: init at 0.2.3 — sudosubin/agents.nix0 reactions
- Sep 29, 2026Add ibelick/ui-skills as a categorized Skill Catalog source — garnser/codex-web0 reactions
- Sep 28, 2026agent-skills.github.ibelick.ui-skills: init at 0.2.3 — sudosubin/agents.nix0 reactions
- Sep 13, 2026[P1 UX HARDENING] Add interaction semantics and adversarial usability testing for frustrating UI failures — loftwah/clubsays it tested it0 reactions
- Aug 1, 2026[chore] fixing-accessibilityスキル導入と既存UIのアクセシビリティ改善 — ebichan88/swiss-stage0 reactions
- Jul 24, 2026feat: add ui-skills-root skill from ibelick/ui-skills — rajumanoj333/Zippy0 reactions · 4 comments
- Jul 19, 2026Github trending [ibelick/ui-skills] AI代理UI技能路由CLI — web1992/github-trending0 reactions
- Jul 17, 2026docs: ibelick/ui-skills のビジュアル解説を追加 — 53able/docs-site0 reactions
- Jul 15, 2026Design restraint pass: less glow, fewer dividers, spacing + de-slop DESIGN.md + improve-ui/emil — thomasluizon/orbit-ui-mobile0 reactions · 14 comments
- Jul 8, 2026Update skill sources from monitor run 28912227495 — aiskillstore/marketplace0 reactions
- Jun 8, 2026docs: add ui-skills visual doc page — 53able/docs-site0 reactions
- Feb 20, 2026fixing-motion-performance — AAswordman/OperitSkillMarket0 reactions
- Feb 20, 2026fixing-metadata — AAswordman/OperitSkillMarket0 reactions
- Feb 20, 2026fixing-accessibility — AAswordman/OperitSkillMarket0 reactions
- Feb 20, 2026baseline-ui — AAswordman/OperitSkillMarket0 reactions
- Feb 17, 2026New skill: /ibelick-fixing-metadata (safe risk) — aiskillstore/marketplace0 reactions
- Feb 16, 2026New skill: /ibelick-fixing-accessibility (safe risk) — aiskillstore/marketplace0 reactions
- Feb 11, 2026New skill: /ibelick-fixing-motion-performance (safe risk) — aiskillstore/marketplace0 reactions
- Feb 10, 2026New skill: /ibelick-baseline-ui (safe risk) — aiskillstore/marketplace0 reactions
- Feb 9, 2026New skill: /ibelick-baseline-ui (safe risk) — aiskillstore/marketplace0 reactions
- Jan 16, 2026Add skill: ibelick/ui-skills — VoltAgent/awesome-agent-skills0 reactions
- Jan 15, 2026[ADD SKILL] — Keith-CY/my-crazy-skills0 reactions · 1 comment
- Jan 15, 2026🤖 Auto-Add Skills with OpenCode: 2 new skill(s) — Keith-CY/my-crazy-skills0 reactions
- Jan 15, 2026[ADD SKILL] — Keith-CY/my-crazy-skills0 reactions · 1 comment
- Jan 11, 2026ui skill — edheltzel/old-atlas0 reactions · 1 comment
On Bluesky · 7
- Jul 21, 2026🎉 Celebrating! 🎉 (500+ new stars) 📦 ibelick / ui-skills ⭐ 5,581 (+536) 🗒 TypeScript Skills for Design Engineers — @github-trending-js.bsky.social5 likes and reposts · 1 reply
- Jun 10, 2026デザインエンジニアに必要なスキルを体系的にまとめた学習リソース集らしい UI実装の引き出しを増やしたいときにかなり役立ちそう yug1224 starred ibelick/ui-skills https://github.com/ibelick/ui-skills — @yug1224.com3 likes and reposts
- Jul 16, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 ibelick / ui-skills ⭐ 3,919 (+141) 🗒 TypeScript Skills for Design Engineers — @github-trending-js.bsky.social2 likes and reposts
- Jun 9, 2026🚀 Skyrocketing! 🚀 (200+ new stars) 📦 ibelick / ui-skills ⭐ 2,103 (+258) 🗒 TypeScript Skills for Design Engineers — @github-trending-js.bsky.social2 likes and reposts · 1 reply
- Oct 9, 2026📦 ibelick / ui-skills ⭐ 9,543 (+47) 🗒 TypeScript Skills for Design Engineers — @github-trending-js.bsky.social1 likes and repost
2 more on Bluesky
- Aug 23, 2026🔥 Hot Repo! 🔥 (100+ new stars) 📦 ibelick / ui-skills ⭐ 7,485 (+110) 🗒 TypeScript Skills for Design Engineers — @github-trending-js.bsky.social1 likes and repost
- Jun 10, 2026https://github.com/ibelick/ui-skills — @tom-doerr.bsky.social1 likes and repost
On the web · 3
- Oct 29, 2026baseline-ui | Skills Marketplace — lobehub.com
- Oct 17, 2026improve-ui — AI agent skill — google.com
- Sep 27, 2026UI Skills by ibelick: Design Skills for Code Agents — google.com
On Hacker News · 1
- Jul 15, 2026UI-Skills5 points
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- microsoft/vscode★ 194ksame name
- github/gh-aw★ 5.4ksame name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- baseline-uiSkill
- component-canvasSkill
- create-design-mdSkill
- fixing-accessibilitySkill
- fixing-metadataSkill
- fixing-motion-performanceSkill
- improve-uiSkill
- ui-skills-rootSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

