Contenuto dal repository con titoli, esempi, codice, tabelle, link e immagini preservati.
Product Page Scaffolder
Registry-first artifact boundary
When .styleseed/project.json and .styleseed/artifacts/index.json exist, resolve the requested artifact ID first, then read only .styleseed/bundles/<artifact-id>.md and .styleseed/manifests/<artifact-id>.json. Never fall back to the global legacy bundle for a registry project. Legacy projects may use .styleseed/effective-rules.md only when no registry exists.
When NOT to use
- For a single composed pattern within an existing page → use
/ss-pattern - For multi-page navigation structure → use
/ss-flowfirst - For tweaking an existing page — edit the file directly
Create a new page: $0 Description: $ARGUMENTS
Instructions
- Resolve and read the active design method:
- If either registry file exists, require a complete valid registry and resolve the selected
artifact with --artifact <id>. Read .styleseed/bundles/<id>.md and .styleseed/manifests/<id>.json; never restart setup or use a legacy fallback on errors.
- Only when neither registry file exists, resolve
STYLESEED.mdand read
.styleseed/effective-rules.md and .styleseed/manifest.json.
- For missing/stale outputs in this authorized build, resolve from the corresponding
project-owned configuration and re-check without changing approved decisions.
components/patterns/page-shell.tsxfor page layoutcomponents/patterns/top-bar.tsxfor header patterncomponents/patterns/bottom-nav.tsxfor navigation
- Page structure template:
import { PageShell, PageContent } from "@/components/patterns/page-shell"
import { TopBar, TopBarAction } from "@/components/patterns/top-bar"
import { BottomNav } from "@/components/patterns/bottom-nav"
export default function PageName() {
return (
<PageShell recipe="enterprise-workbench">
<TopBar
logo={/* logo or page title */}
subtitle={/* optional subtitle */}
actions={/* optional action buttons */}
/>
<PageContent>
{/* Compose the grammar's focal point and recipe-fit sections */}
</PageContent>
<BottomNav items={[/* nav items */]} activeIndex={0} />
</PageShell>
)
}- Apply the selected adapter and recipe:
- Set
recipe="<manifest selection.recipe>"onPageShell, or
data-styleseed-recipe="<id>" on a custom artifact root.
- Use the lock's viewports and the adapter's responsive contract. Do not assume 430px mobile.
- Use
ss-page-padding,ss-page-gutter,ss-pattern-stack,ss-pattern-surface,
ss-pattern-inset, ss-pattern-control, and ss-pattern-icon where bundled patterns fit.
- Select components by recipe: aligned panels/rows for workbenches, flat steps for public
service, reading flow for editorial, focused canvas/tool groups for creative tools, and soft grouping only when the recipe calls for it.
- A page may contain cards, panels, rules, whitespace, rows, tables, or a canvas. Never force
every content block into a card.
- Use semantic tokens for all colors — never hardcode hex values.
- Compose the page from existing components (ui/ and patterns/) wherever possible.
- Safe area: include
env(safe-area-inset-*)padding for modern devices.
- Post-generation verification (MANDATORY):
Run /ss-score then /ss-verify. Confirm:
- [ ] The first viewport exposes the grammar's user job and one focal point
- [ ] Containment, geometry, controls, collections, density, and navigation fit the recipe
- [ ] One identifiable primary action; additional colors have contract-defined roles
- [ ] No hardcoded hex values (all semantic tokens)
- [ ] Section types alternate (no two identical types in a row)
- [ ] Spacing uses one repeatable recipe-fit rhythm
- [ ] Touch targets ≥ 44px on touch surfaces; pointer-first desktop controls follow the
approved adapter/component contract, which may allow 36–40px Follow the bounded build gate loops. Report actual results and remaining failures even when a gate does not pass; never replace approved decisions or claim acceptance to end the loop.

