A React component library with built-in motion, themeable tokens, and AI skill packs for Claude Code and Cursor.
SaferSkills independently audited forge (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Forge is a React component library that ships as wss3-forge. Every UI concern (layout, forms, overlays, data display, charts, motion) is covered by a component. All colors, spacing, radius, shadows, and motion live in CSS variables injected by ForgeProvider.
Decision rule: if the task changes what the user sees, touches, or waits for, load this skill.
Lookup table for the most common requests. Jump straight to the relevant anchor.
| If you're trying to | Read | Skip ahead |
|---|---|---|
| Build a login screen | patterns.md | #auth |
| Build signup or forgot-password | patterns.md | #auth-forgot |
| Show a toast on user action | components.md | #feedback-toast |
| Inline alert (success, error, info) | components.md | #feedback-decision |
| Errored input with screen-reader feedback | a11y.md | #inputs |
| Icon-only button | a11y.md | #buttons |
| Pricing strip with monthly/yearly toggle | patterns.md | #pricing |
| Pick Modal vs Sheet vs Drawer vs Popover | components.md | #overlay-decision |
| Pick Card vs StatCard vs KpiCard | components.md | #cards-decision |
| Pick VStack vs HStack vs Grid vs Box | components.md | #layout-decision |
| Pick Input vs Select vs Combobox | components.md | #forms-decision |
| Pick Checkbox vs Switch vs Radio vs Tabs | components.md | #selection-decision |
| Animate items into view, one by one | motion.md | #stagger |
| Sticky scroll-jacked phase | motion.md | #sticky-section |
| Brand color customization | theming.md | #brand-customization-in-30-seconds |
| Theme color won't apply | faq.md | faq.md |
| Empty state | patterns.md | #empty-state |
| Loading or error or empty triad | patterns.md | #triad |
| Settings page (profile, billing, team) | patterns.md | #settings |
| Marketing page (hero, pricing, testimonials) | patterns.md | #marketing |
| Data screen (table, master-detail, kanban) | patterns.md | #data |
| Dashboard with sidebar | patterns.md | #dashboard-sidebar--content |
| Build a docs site | patterns.md | #docs |
| Pick Navbar vs AppSidebar (horizontal vs vertical menu) | components.md | #navigation |
aria-label on icon-only buttons, aria-invalid/aria-describedby on errored inputs, keyboard navigation works, reduced motion respected. See a11y.md.Heading not styled <h1>, Button not styled <button>, VStack/HStack not flex <div>, Card not styled container. See anti-patterns.md.ForgeProvider, no animations over 500ms for UI feedback. See motion.md.darkTheme and lightTheme. No hardcoded rgba(255, 255, 255, ...) or #xxx. Use CSS vars or color-mix(in srgb, currentColor N%, transparent).VirtualList when rendering more than 100 rows, lazy routes, <Motion whileInView> over animate for offscreen content.'wss3-forge'. No deep imports.<ForgeProvider>. Without it every component renders unstyled.@fluentui/react-icons. Convention: {Name}{Size}{Style} (e.g. ArrowRight20Regular).var(--...). No hardcoded hex, RGB, or color names.px/rem when a semantic key exists.VStack, HStack, Stack, Grid, Flex, Box, Center, Spacer, AspectRatio. No flex divs.useIsMobile, useBreakpoint, or responsive object props. No @media queries in app code.Heading, Text, Label. Never style <h1>, <span>, or <p> manually.style={{ color: '...' }}. Only StatusBadge, Avatar status, and colored Badge variants keep a tinted surface.For the reasoning behind each rule, see design.md. For concrete wrong/right pairs, see anti-patterns.md.
Forge is a restrained design system. These are baseline anti-aesthetics:
When in doubt, restrain. Forge ships polished defaults; consumers reach for them, not around them.
Before claiming done, verify:
tsc --noEmit clean.aria-label or tooltip.size="sm" (32px) on mobile flows.Load the file that matches your task. Do not load them all at once.
ForgeProvider props, ForgeTheme fields, default darkTheme and lightTheme, createTheme, useForge. Read this when configuring the provider or building a custom theme.Motion, AnimatePresence, Stagger, gesture, scroll, text/visual effects, canvas backgrounds, motion hooks). Read this when adding animations.@media query, or a hardcoded color.wss3-forge.tsc --noEmit before claiming done.Block templates live under src/pages/blocks/blocks/{category}/{slug}/. Categories: marketing | dashboard | auth | commerce | settings | content | utility. Block creation rules are documented in patterns.md.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.