feat(skill): design-system adoption skill for whitelabel forks#327
Merged
Conversation
Adds a Claude Code skill that guides a downstream fork from a hand-rolled UI to soliplex_design: a grep-based audit scanner for hard-rule violations, a found-to-replacement mapping table, the SoliplexBranding wiring point (per PR #261), a gotchas list distilled from the first-party adoption sweeps, and the verify/checklist gate. The scanner uses plain grep (no ripgrep dependency) so it runs on any fork machine and doubles as a CI gate via its exit status. It excludes the design package itself, where literals are legal. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
91jaeminjo
reviewed
Jun 8, 2026
5971628 to
a735f6b
Compare
91jaeminjo
reviewed
Jun 8, 2026
| RULES=( | ||
| "Hex color literal (use colorScheme/SoliplexTheme tokens)|Color\(0x|Color\.fromARGB|Color\.fromRGBO" | ||
| "Material status color (use SymbolicColors: danger/success/warning/info)|Colors\.(red|green|orange|blue|yellow)" | ||
| "Raw border radius (use SoliplexTheme.of(context).radii.*)|BorderRadius\.circular\(" |
Collaborator
There was a problem hiding this comment.
should be:
"Raw border radius (use SoliplexTheme.of(context).radii.*)|BorderRadius\.circular\( *[0-9]"
to match only on hard coded numerics - otherwise, it matches on all cases including the correct use cases.
…ming Match BorderRadius.circular( only when a numeric literal follows, so the audit stops flagging the prescribed circular(radii.x) token form and reports only hardcoded radii. Reframe the scanner as a review tool rather than a pass/fail CI gate: sanctioned residuals (e.g. a raw-hex brand accent) keep the exit non-zero on a clean repo. Lead the skill description with its triggering conditions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a Claude Code skill that helps a whitelabel fork (often carrying its
own hand-rolled UI) adopt
soliplex_designand theSoliplexBrandingAPIintroduced in #261. It turns the design-system adoption knowledge — the hard
rules, the accessor cheat sheet, the branding wiring, and the traps we hit
during the first-party sweeps — into a guided, repeatable workflow.
Lives at
.claude/skills/adopt-design-system/:SKILL.md— the workflow: audit → migrate (found→replacement table) →wire
SoliplexBranding(light/dark accents, logo, app name viastandard())→ verify against the adoption checklist. Includes a gotchas section
distilled from real sweeps (e.g.
SoliplexTheme.ofcrashing under bareThemeData, icon+labelRenderFlexoverflow, the missings5spacing step,withOpacitydeprecation under the zero-warning gate).audit.sh— agrep-based scanner for hard-rule violations (hexliterals, Material status colors, raw radii,
fontSize:, font-familystrings, Material widgets with a
SoliplexXequivalent), plus an advisoryspacing/breakpoint pass. Uses plain
grepso it needs no extra tooling on afork machine, excludes the design package itself, and exits non-zero on a
hit so it doubles as a CI gate.
Why a skill
A fork can't just be handed the README — adoption is a multi-step sweep with
ordering and verification that's easy to get wrong. Encoding it as a skill
means any fork running Claude Code gets the same systematic migration, and the
hard-won edge cases don't have to be rediscovered.
Notes for reviewers
lib/or thepackages is touched.
packages/soliplex_design/README.md, the rootCLAUDE.mddesign-system rules, and the branding API from feat(branding): whitelabel branding API + light/dark theming #261; the skillabbreviates and links rather than duplicating the canonical docs.
Test plan
audit.sh libruns, reports candidates, exits non-zero on findings.bash -n audit.sh— syntax clean.markdownlint-cli2onSKILL.md— 0 errors.🤖 Generated with Claude Code