SculptForge
ZBrush-style sculpting for VFX, animation and games. VFX Reference Platform CY2026 and CY2027 builds, OpenUSD, a Python API and Send to Unreal. Free built-in AI: describe a brush and get it, or turn a
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Two universal design-polish skills for Claude Code, Cursor, Codex, Windsurf, Aider, Continue and Zed: ultrapolish-ios (Swift/SwiftUI) and ultrapolish-web (React/TypeScript/CSS). Motion, colour, type, layout, sheets, haptics, sound, buttons, icons, copy, states, onboarding, paywalls, widgets, accessibility. Any app, its own style, 6/10 to 11/10.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Two universal design-polish skills that take any app from 6/10 to 11/10 on attention to detail, UX, and cohesion, inside its own visual style.
Not a style. A craft standard and a procedure.
It reads your tokens first, then makes what is already there feel considered, continuous, and alive.
Live before-and-after demos at jamesfrewin.com/ultrapolish.查看完整 README ↗Two universal design-polish skills that take any app from 6/10 to 11/10 on attention to detail, UX, and cohesion, inside its own visual style.
Not a style. A craft standard and a procedure. It reads your tokens first, then makes what is already there feel considered, continuous, and alive.
Live before-and-after demos at jamesfrewin.com/ultrapolish.
Most "make it look good" prompts give you a second style that fights the first: a new font, a purple gradient, a breathing icon, confetti on save. ultrapolish does the opposite. It starts by inventorying the project's own type, colour, radii, spacing, motion, and copy, then applies a universal standard of detail inside that system.
| Skill | For | Covers | Lines |
|---|---|---|---|
| ultrapolish-ios | Swift / SwiftUI (UIKit where it matters) | Motion and springs, gestures and physics, colour (OKLCH, Display P3, dark mode), typography and Dynamic Type, 4pt layout, hierarchy, buttons, sheets and detents, navigation, haptics, sound, SF Symbols, copy and naming, empty/loading/error states, onboarding, paywalls and StoreKit, widgets, Live Activities, Dynamic Island, Liquid Glass, accessibility | ~4672 |
| ultrapolish-web | React / TypeScript / CSS (Tailwind and Motion noted, never required) | Easing and springs (linear()), gestures and scroll, colour (OKLCH, APCA, theming), typography, 4px layout, surfaces and depth, buttons, forms, overlays, haptics and sound on the web, icons, copy, states, onboarding and pricing, touch and mobile web, performance as a design property, accessibility, marketing pages | ~4954 |
Each skill is a lean SKILL.md (the workflow, the ten laws, every cheat-sheet number, the anti-pattern list, a 90-item checklist, and a decisions register) plus ~20 topic references loaded on demand, plus a handful of style-neutral drop-in files (Motion.swift, PressableButtonStyle.swift, motion.css, gen-springs.mjs, base.css, and so on).
npx skills add heyimjames/ultrapolish
One skill, one agent, globally:
npx skills add heyimjames/ultrapolish --skill ultrapolish-ios -a claude-code -g
npx skills add heyimjames/ultrapolish --skill ultrapolish-web -a cursor -g
/plugin marketplace add heyimjames/ultrapolish
/plugin install ultrapolish@ultrapolish
Skills are then namespaced as ultrapolish:ultrapolish-ios and ultrapolish:ultrapolish-web. Claude Code also auto-invokes them from the trigger words in each description, so you rarely need to type the name.
git clone https://github.com/heyimjames/ultrapolish
cd ultrapolish
./install.sh cursor # project-level .cursor/rules/ (add --global for ~/.cursor/rules/)
./install.sh codex # appends to ./AGENTS.md (add --global for ~/.codex/AGENTS.md)
./install.sh windsurf # .windsurfrules
./install.sh aider # CONVENTIONS.md
./install.sh continue # .continue/rules/
./install.sh zed # .rules/
These tools have no on-demand loading, so the dist/ builds inline every reference into one file per skill. ./install.sh <tool> uninstall removes them.
Copy skills/ultrapolish-ios or skills/ultrapolish-web into ~/.claude/skills/ (or your agent's skills directory). Done.
Three prompts cover most of it.
Audit a screen or a flow
/ultrapolish-ios full audit of the onboarding flow and the paywall
Polish while you build
/ultrapolish-web build mode: add the settings sheet, apply the standard as you go
Write the design contract for a project that has none
/ultrapolish-ios this app has no design system yet; run the intake and propose the contract
Every audit returns the same shape, grouped by root cause, with the user-facing consequence spelled out:
| # | Sev | Location | Before | After | What this changes for the user |
|---|---|---|---|---|---|
| 1 | HIGH | Button.tsx:12 (every button) | Submit disabled until valid | Enabled; validate on submit; focus first invalid field | Users learn what is wrong instead of guessing why the button is dead |
| 2 | HIGH | ListView.swift:42, DetailView.swift:18 | Title animates out on push and back in | Title lives in the parent; only content transitions | The screen feels like one place that changed, not two screens swapped |
| 3 | MED | theme.css (token) | Muted text is four hand-picked greys | One ink stepped in alpha (1 / .62 / .45 / .28) | Dark mode flips one base and the hierarchy holds everywhere |
| 4 | MED | SendButton.swift:31 | Spinner on the tapped button | Progress in the pending bubble at 60% opacity | Eye stays on the message; the app feels faster at the same speed |
| 5 | MED | Sheet.tsx:8 | Backdrop 200ms ease, panel 300ms spring | Same curve pair; contents enter 80ms after the panel | The sheet arrives as one container with things inside |
| 6 | LOW | Toast.tsx:22 | Error toast vanishes in 3s | Inline under the field; persists until fixed | Nobody loses the only explanation of what went wrong |
Followed by a "Considered but rejected" table (so restraint is visible), a "Verified how" list, and a verdict: Ship, Needs changes, or Block.
transition: allWhere sources disagree (exit easing, press scale, grid, dark-mode black, stagger, reduced motion, toasts), each skill carries a decisions register with the position it takes and why. Override any of them in your project's design contract.
The thinking here stands on people who wrote it down well: Emil Kowalski on easing and the frequency principle, Benji Taylor on earned motion, Josh Puckett on storyboards and critique, Rauno Freiberg on the web feeling native, and Apple's Designing Fluid Interfaces and Human Interface Guidelines. If you recognise a rule of yours here, it is because it was right.
ultrapolish/
├── skills/
│ ├── ultrapolish-ios/
│ │ ├── SKILL.md workflow, laws, cheat sheets, checklist, decisions
│ │ ├── references/*.md one file per topic, loaded on demand
│ │ └── assets/*.swift Motion, Haptics, PressableButtonStyle, DisplayP3Color, ...
│ └── ultrapolish-web/
│ ├── SKILL.md
│ ├── references/*.md
│ └── assets/ motion.css, gen-springs.mjs, motion.ts, base.css, ...
├── .claude-plugin/ marketplace.json + plugin.json (Claude Code)
├── dist/ generated per-tool builds, committed so clone-and-install works
├── scripts/build.py regenerates dist/ (stdlib only)
├── scripts/validate.py frontmatter, links, assets, line budgets, no em-dashes
├── install.sh per-tool installer
└── build.sh
git pull
./build.sh all # only needed if you edit the skills
./install.sh <tool> # re-copy for Cursor / Codex / Windsurf / Aider / Continue / Zed
Claude Code marketplace and npx skills installs update through their own commands.
One rule per pull request, with the number and the why. If it contradicts an existing rule, say which one and argue the case; the decisions register exists so that disagreements are recorded, not buried. Run python3 scripts/validate.py && ./build.sh all before opening the PR and commit the regenerated dist/.
MIT. Use it in anything.
Made by James Frewin of October · @james_frewin