Character Creator Steps
Use this skill to modify the multi-step character creation flow. Focus on the reducer-driven step map, render switch, and sidebar config so navigation, backtracking, and visibility stay consistent.
Entry Points
- •
src/components/CharacterCreator/state/characterCreatorState.tsforCreationStep, reducer transitions,stepDefinitions,GO_BACKresets, and step gating helpers. - •
src/components/CharacterCreator/CharacterCreator.tsxforrenderStep()and step-level handlers. - •
src/components/CharacterCreator/config/sidebarSteps.tsfor sidebar labels, grouping, visibility, and completion summaries. - •
src/components/CharacterCreator/CreationSidebar.tsxif sidebar layout or grouping behavior changes. - •
src/components/CharacterCreator/CharacterCreator.README.mdandsrc/components/CharacterCreator/state/characterCreatorState.README.mdfor state/flow notes. - •
tests/character-creator-flow.spec.tsandsrc/components/CharacterCreator/state/__tests__/characterCreatorReducer.test.tsfor flow coverage.
Workflow
- •Map the change: Identify whether the update is add, remove, reorder, or conditional. Note the current step order and dependencies (race, class, ability scores, feats).
- •Update the state model:
- •Add/remove the
CreationStepenum entry. - •Add any new
CharacterCreationStatefields and action types. - •Update
determineNextStepAfterRace,getNextStep, and any gating helpers (canOfferFeatAtLevelOne,getFeatStepOrReview,getPreviousStepBeforeFeat) if the path changes.
- •Add/remove the
- •Wire reducer transitions:
- •Add new
casehandlers incharacterCreatorReducer. - •Update
stepDefinitionsfor back navigation. - •Update
getFieldsToResetOnGoBackto clear the data captured by the step.
- •Add new
- •Render the step UI:
- •Add a
renderStep()branch inCharacterCreator.tsx. - •Ensure navigation (
SET_STEP,GO_BACK,NAVIGATE_TO_STEP) keeps the user in valid state.
- •Add a
- •Keep the sidebar honest:
- •Add/update entries in
SIDEBAR_STEPSwith label, group, visibility, and selection summary. - •Update
isStepCompletedfor the new step.
- •Add/update entries in
- •Validate flow:
- •Update Playwright flow if the screen order changes.
- •Add/adjust reducer tests for step transitions and backtracking.
- •Confirm docs still match current behavior.
Change Patterns
Add a new step
- •Add enum + reducer action + state field.
- •Insert into forward path (e.g., after
AbilityScoresor beforeClassFeatures) and update thestepDefinitionsprevious step mapping. - •Add sidebar config and completion logic.
- •Add test coverage for forward and back navigation.
Remove a step
- •Remove enum, reducer case, and related state fields.
- •Remove from
stepDefinitions,SIDEBAR_STEPS, and completion logic. - •Collapse adjacent steps to keep the flow continuous.
- •Prune tests that depended on the removed step.
Reorder steps
- •Update
stepDefinitionsfor back navigation and forward flow helpers. - •Audit all
SET_STEPtransitions that assume the old order. - •Update sidebar grouping order if needed.
Conditional steps
- •Gate visibility in
SIDEBAR_STEPS.isVisible. - •Gate the transition in reducer logic (often in
SELECT_*orSET_ABILITY_SCORES). - •Ensure
GO_BACKresets the conditional data if the step is skipped or revisited.
Guardrails
- •Prefer inline race variant selection in
RaceDetailPaneunless a step must block forward progress (see existing centaur/changeling patterns). - •Keep
NAVIGATE_TO_STEPconservative: it must not allow jumping past incomplete data. - •If the step affects stats, sync with
useCharacterAssemblyso preview and final assembly match.