← ClaudeAtlas

migrate-browse-viewlisted

Add or change a dictionary browse view (any `?view=` surface) on the shared `<dictionary-trick-row>` partial. Use when a task adds a new browse view, moves a legacy view off inline markup, or changes grouping or ordering on an existing one. Preserves the row contract, which is mechanically tested across every browse view.
davidleberknight/footbag-platform · ★ 0 · Testing & QA · score 60
Install: claude install-skill davidleberknight/footbag-platform
# Migrate Browse View ## When to use this skill Use this skill (not general editing) when a task does any of the following: - Adds a new browse view at `/freestyle/tricks?view={new}` - Moves an existing browse view off legacy markup (table, spreadsheet, inline `<li>` rows) onto the shared `<dictionary-trick-row>` partial - Renames a view (the historical `?view=sets → ?view=component` is the precedent) - Adds a new grouping wrapper that consumes existing `DictionaryTrickCard[]` data - Changes within-group ordering rules for any browse view Do **not** use this skill to: - Modify the `<dictionary-trick-row>` partial itself. That changes every browse view at once, so it is a row-contract change: route through `extend-service-contract` + `add-public-page` - Touch ontology, ADD math, parser, alias, or schema (forbidden across every browse-view change) - Add new modifier-link types or new symbolic-grammar groups (curator-track work) ## The pattern this skill encodes Every browse view in the `allowedViews` set in `src/services/freestyleService.ts` renders the same row. There is no per-view density choice and no view-specific row variant: a trick reads the same way whichever view a visitor arrived through, and that is the whole point. A view that grows a rendering of its own is the defect this skill exists to prevent. ``` Step 1 → READ the row contract and one shipped view (no writing yet) Step 2 → SERVICE: group type + builder Step 3 → TEMPLATE: grouping wrapper around the s