
character-creator-steps
Edit the Character Creator step flow in Aralia. Use when adding, removing, reordering, or conditioni
提供方 Gambitnl|开源
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.
Completion Criteria
Before concluding any character creator step task, you must satisfy the following checklist:
- State Preservation: Confirm that when the user clicks the "Go Back" button from the modified step, all newly captured data for that step is correctly cleared (resets in
getFieldsToResetOnGoBackare executed). - Navigation Gating: Verify that the step flow transitions and gating helpers (
determineNextStepAfterRace,getNextStep, etc.) prevent jumping past incomplete required steps. - Sidebar Alignment: Confirm that the sidebar visibility and completion indicator (
isStepCompleted) are updated to reflect the new step's active state. - Integration Tests: Verify that the Playwright flow tests (
tests/character-creator-flow.spec.ts) and reducer tests run and pass without failures. - No Compilation Errors: Verify the code compiles without TypeScript errors.