ui-feature-dev

Guides adding React studios, controls, and API wiring to the HOT-Step CPP UI.

151|22|Updated Apr 19, 2026
One-click install
npx skills add https://github.com/scragnog/HOT-Step-CPP --skill ui-feature-dev-scragnog
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ui-feature-dev
Source: https://github.com/scragnog/HOT-Step-CPP/tree/main/.claude/skills/ui-feature-dev
Command: npx skills add https://github.com/scragnog/HOT-Step-CPP --skill ui-feature-dev-scragnog

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Adding UI features to HOT-Step CPP requires navigating undocumented conventions: hand-rolled pushState routing, three coexisting state-store patterns, a single request-assembly function, and strict i18n/Tailwind rules. Missing any one registration step produces silent failures like studios that break on refresh or sliders that do nothing. ## Core Features & Use Cases - Studio Registration Procedure: Walks through the five required edits (import, viewFromUrl, urlForView, renderContent branch, Sidebar NavItem) to add a new studio that survives refresh and back-button navigation. - State & API Patterns: Documents the hand-rolled useSyncExternalStore store template, the zustand globalParamsStore with per-key localStorage persistence, and the per-studio submit-then-poll API client shape. - Failure Diagnosis: Provides a symptom-to-cause table covering routing breaks, snake_case leaks, StrictMode double-invocation, and params dropped by the /lm round trip. - Use Case: You want to add a new "Mastering Studio" panel with a slider wired to a generation parameter. The skill gives the exact files, line references, and golden rules (e.g., wire the param into getGlobalParams(), never extend the LM echo pick-list) to implement it correctly. ## Quick Start Use the ui-feature-dev skill to add a new studio called Mastering Studio with a volume slider wired into the generation request.

Frequently Asked Questions about ui-feature-dev

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new studio or view to a React app without react-router?

Register it in five places: the import, viewFromUrl(), urlForView(), and a renderContent() branch in App.tsx, plus a NavItem in Sidebar.tsx. Skipping the URL mapping functions makes the studio render but break on refresh or back-button.

Why does my new slider have no effect on generation requests?

The value is not wired into getGlobalParams() in globalParamsStore.ts, the single assembly point for the request body. Server-side, the param must also be mapped in translateParams() and added to aceReq before the LM phase, since sideband params do not survive the /lm round trip.

Should I use zustand or useSyncExternalStore for React state management here?

Match the nearest existing store. Most stores in this codebase are hand-rolled useSyncExternalStore module singletons; only globalParamsStore and vstChainStore use zustand. Copy abCompareStore.ts as the template for new stores.

Why do useEffect API calls fire twice in React development mode?

React StrictMode intentionally double-invokes effects in development, as configured in main.tsx. Make mount effects idempotent rather than trying to disable the behavior; it does not occur in production builds.

Can I use a browser agent to verify UI changes visually?

No. The validated rule is to never use a browser agent for visual verification because it is too slow and unreliable in this environment. Make the change, confirm npx tsc -b is clean, then ask the human user for screenshots or feedback.