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