feat(icons): rename module icons Rocket→Onboarding and ItManagement→Software#3785
feat(icons): rename module icons Rocket→Onboarding and ItManagement→Software#3785eliseo-juan wants to merge 3 commits intomainfrom
Conversation
Add 4 parallel AI-powered review agents that run on every PR affecting packages/react/, mirroring Factorial's agentic-checks pattern adapted to the f0 quality gate areas: - Code Review: F0 component conventions, TS strictness, exports, styling - Accessibility Review: WCAG 2.1/2.2 AA, focusRing, ARIA, keyboard - Storybook Review: story existence, Meta conventions, Snapshot, prop coverage - Test Coverage Review: test file existence, zeroRender, behavioral coverage All checks are advisory-only (never block CI) and post findings as PR comments. Uses the same trust model as Factorial (base-branch script/prompt copy to prevent prompt injection).
Remove duplicated rules from agent prompts. Each prompt now only defines the agent role, scope rules, which skills to load, and the verdict format. All review criteria live in the skills (f0-code-review, a11y, f0-storybook-stories, f0-storybook-testing, f0-unit-testing, f0-quality-gate) as the single source of truth. Reduces total prompt lines from 411 to 189 (-54%).
…oftware - Rename modules/Rocket to modules/Onboarding (matches Figma 'Onboarding' node) - Remove modules/ItManagement duplicate (identical SVG to Software, which already exists) - Update F0AvatarModule/modules.ts: get_started→Onboarding, it_management→Software - Apply same changes to react-native package
✅ No New Circular DependenciesNo new circular dependencies detected. Current count: 0 |
📦 Alpha Package Version PublishedUse Use |
🔍 Visual review for your branch is published 🔍Here are the links to: |
There was a problem hiding this comment.
Pull request overview
This PR updates the design-system module icon set by renaming/remapping specific module icons across packages/react and packages/react-native, and introduces a new “agentic checks” GitHub Action workflow + supporting scripts/prompts to run AI-based advisory reviews on PRs touching packages/react/**.
Changes:
- Rename module icon
Rocket→Onboardingand update theF0AvatarModulemodule-id → icon mapping accordingly. - Remove duplicate module icon
ItManagementand remapit_managementtoSoftware. - Add an “Agentic Checks (Beta)” workflow with a runner script and prompt files for code/a11y/storybook/test-coverage reviews.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/react/src/icons/modules/index.ts | Updates module icon barrel exports (remove Rocket/ItManagement exports, add Onboarding). |
| packages/react/src/icons/modules/Onboarding.tsx | Adds the renamed Onboarding module icon component (formerly Rocket). |
| packages/react/src/icons/modules/ItManagement.tsx | Removes duplicate ItManagement module icon. |
| packages/react/src/components/avatars/F0AvatarModule/modules.ts | Remaps get_started → Onboarding and it_management → Software while keeping keys stable. |
| packages/react-native/src/icons/modules/index.ts | Updates React Native module icon barrel exports (adds Onboarding, removes ItManagement) but currently introduces semicolons. |
| packages/react-native/src/icons/modules/Onboarding.tsx | Adds the new React Native Onboarding module icon component. |
| packages/react-native/src/icons/modules/ItManagement.tsx | Removes duplicate ItManagement module icon (RN). |
| .github/workflows/agentic-checks.yml | Adds workflow to run AI-based advisory checks for React PR changes. |
| .github/scripts/agentic-check.sh | Adds the runner script that fetches PR diff, runs Copilot CLI, and comments verdicts back to the PR. |
| .github/agent-prompts/code-review.md | Adds the code-review agent prompt template. |
| .github/agent-prompts/a11y-review.md | Adds the accessibility-review agent prompt template. |
| .github/agent-prompts/storybook-review.md | Adds the Storybook-review agent prompt template. |
| .github/agent-prompts/test-coverage-review.md | Adds the test-coverage-review agent prompt template. |
| export { default as Benefits } from "./Benefits"; | ||
| export { default as Calendar } from "./Calendar"; | ||
| export { default as Cards } from "./Cards"; | ||
| export { default as ClockIn } from "./ClockIn"; | ||
| export { default as Complaints } from "./Complaints"; | ||
| export { default as Discover } from "./Discover"; | ||
| export { default as Documents } from "./Documents"; | ||
| export { default as Engagement } from "./Engagement"; | ||
| export { default as Finance } from "./Finance"; | ||
| export { default as Goals } from "./Goals"; | ||
| export { default as Home } from "./Home"; | ||
| export { default as Hub } from "./Hub"; | ||
| export { default as Onboarding } from "./Onboarding"; | ||
| export { default as Inbox } from "./Inbox"; | ||
| export { default as Kudos } from "./Kudos"; | ||
| export { default as Marketplace } from "./Marketplace"; | ||
| export { default as Meetings } from "./Meetings"; | ||
| export { default as MyDocuments } from "./MyDocuments"; | ||
| export { default as Organization } from "./Organization"; | ||
| export { default as Overviews } from "./Overviews"; | ||
| export { default as Pages } from "./Pages"; | ||
| export { default as Payroll } from "./Payroll"; | ||
| export { default as Performance } from "./Performance"; | ||
| export { default as Profile } from "./Profile"; | ||
| export { default as Projects } from "./Projects"; | ||
| export { default as Recruitment } from "./Recruitment"; | ||
| export { default as Reports } from "./Reports"; | ||
| export { default as SalaryAdvance } from "./SalaryAdvance"; | ||
| export { default as Sales } from "./Sales"; | ||
| export { default as Settings } from "./Settings"; | ||
| export { default as Shifts } from "./Shifts"; | ||
| export { default as Social } from "./Social"; | ||
| export { default as Software } from "./Software"; | ||
| export { default as Spaces } from "./Spaces"; | ||
| export { default as Spending } from "./Spending"; | ||
| export { default as Tasks } from "./Tasks"; | ||
| export { default as TimeOff } from "./TimeOff"; | ||
| export { default as TimeTracking } from "./TimeTracking"; | ||
| export { default as Trainings } from "./Trainings"; | ||
| export { default as Treasury } from "./Treasury"; | ||
| export { default as Workflows } from "./Workflows"; |
There was a problem hiding this comment.
packages/react-native uses oxfmt with semi: false (see packages/react-native/.oxfmtrc.jsonc). This file was changed to include semicolons on every export, which will cause pnpm --filter @factorialco/f0-react-native run format:check to fail. Re-run oxfmt (or remove semicolons) so the barrel matches the repo formatting config.
| export { default as Benefits } from "./Benefits"; | |
| export { default as Calendar } from "./Calendar"; | |
| export { default as Cards } from "./Cards"; | |
| export { default as ClockIn } from "./ClockIn"; | |
| export { default as Complaints } from "./Complaints"; | |
| export { default as Discover } from "./Discover"; | |
| export { default as Documents } from "./Documents"; | |
| export { default as Engagement } from "./Engagement"; | |
| export { default as Finance } from "./Finance"; | |
| export { default as Goals } from "./Goals"; | |
| export { default as Home } from "./Home"; | |
| export { default as Hub } from "./Hub"; | |
| export { default as Onboarding } from "./Onboarding"; | |
| export { default as Inbox } from "./Inbox"; | |
| export { default as Kudos } from "./Kudos"; | |
| export { default as Marketplace } from "./Marketplace"; | |
| export { default as Meetings } from "./Meetings"; | |
| export { default as MyDocuments } from "./MyDocuments"; | |
| export { default as Organization } from "./Organization"; | |
| export { default as Overviews } from "./Overviews"; | |
| export { default as Pages } from "./Pages"; | |
| export { default as Payroll } from "./Payroll"; | |
| export { default as Performance } from "./Performance"; | |
| export { default as Profile } from "./Profile"; | |
| export { default as Projects } from "./Projects"; | |
| export { default as Recruitment } from "./Recruitment"; | |
| export { default as Reports } from "./Reports"; | |
| export { default as SalaryAdvance } from "./SalaryAdvance"; | |
| export { default as Sales } from "./Sales"; | |
| export { default as Settings } from "./Settings"; | |
| export { default as Shifts } from "./Shifts"; | |
| export { default as Social } from "./Social"; | |
| export { default as Software } from "./Software"; | |
| export { default as Spaces } from "./Spaces"; | |
| export { default as Spending } from "./Spending"; | |
| export { default as Tasks } from "./Tasks"; | |
| export { default as TimeOff } from "./TimeOff"; | |
| export { default as TimeTracking } from "./TimeTracking"; | |
| export { default as Trainings } from "./Trainings"; | |
| export { default as Treasury } from "./Treasury"; | |
| export { default as Workflows } from "./Workflows"; | |
| export { default as Benefits } from "./Benefits" | |
| export { default as Calendar } from "./Calendar" | |
| export { default as Cards } from "./Cards" | |
| export { default as ClockIn } from "./ClockIn" | |
| export { default as Complaints } from "./Complaints" | |
| export { default as Discover } from "./Discover" | |
| export { default as Documents } from "./Documents" | |
| export { default as Engagement } from "./Engagement" | |
| export { default as Finance } from "./Finance" | |
| export { default as Goals } from "./Goals" | |
| export { default as Home } from "./Home" | |
| export { default as Hub } from "./Hub" | |
| export { default as Onboarding } from "./Onboarding" | |
| export { default as Inbox } from "./Inbox" | |
| export { default as Kudos } from "./Kudos" | |
| export { default as Marketplace } from "./Marketplace" | |
| export { default as Meetings } from "./Meetings" | |
| export { default as MyDocuments } from "./MyDocuments" | |
| export { default as Organization } from "./Organization" | |
| export { default as Overviews } from "./Overviews" | |
| export { default as Pages } from "./Pages" | |
| export { default as Payroll } from "./Payroll" | |
| export { default as Performance } from "./Performance" | |
| export { default as Profile } from "./Profile" | |
| export { default as Projects } from "./Projects" | |
| export { default as Recruitment } from "./Recruitment" | |
| export { default as Reports } from "./Reports" | |
| export { default as SalaryAdvance } from "./SalaryAdvance" | |
| export { default as Sales } from "./Sales" | |
| export { default as Settings } from "./Settings" | |
| export { default as Shifts } from "./Shifts" | |
| export { default as Social } from "./Social" | |
| export { default as Software } from "./Software" | |
| export { default as Spaces } from "./Spaces" | |
| export { default as Spending } from "./Spending" | |
| export { default as Tasks } from "./Tasks" | |
| export { default as TimeOff } from "./TimeOff" | |
| export { default as TimeTracking } from "./TimeTracking" | |
| export { default as Trainings } from "./Trainings" | |
| export { default as Treasury } from "./Treasury" | |
| export { default as Workflows } from "./Workflows" |
| SUMMARY="### ${CHECK_EMOJI} ${CHECK_NAME}: Passed | ||
|
|
||
| ${VERDICT_SUMMARY}" | ||
|
|
||
| echo "${SUMMARY}" >> "${GITHUB_STEP_SUMMARY:-/dev/null}" | ||
|
|
||
| # Post a success comment to the PR (so reviewers can see it ran) | ||
| post_pr_comment "${SUMMARY}" | ||
| else |
There was a problem hiding this comment.
In the success path, VERDICT_SUMMARY is posted to the PR comment without running redact_secrets(). Since the model output is untrusted, this can leak sensitive values (e.g., tokens echoed by the agent) into a PR comment. Apply redaction to the pass path as well (and ideally to any content posted outside the Actions log).
| - synchronize | ||
| - reopened | ||
| paths: | ||
| - "packages/react/**" |
There was a problem hiding this comment.
The workflow is filtered to only run when files under packages/react/** change. That means PRs that modify the agentic-check implementation itself (e.g. .github/scripts/agentic-check.sh or .github/agent-prompts/*) won’t run this check, making it easy to break the automation without noticing. Consider expanding the paths: list to include the workflow/script/prompt locations as well.
| - "packages/react/**" | |
| - "packages/react/**" | |
| - ".github/workflows/agentic-checks.yml" | |
| - ".github/scripts/agentic-check.sh" | |
| - ".github/agent-prompts/**" |
Coverage Report for packages/react
File Coverage
|
||||||||||||||||||||||||||||||||||||||||||||
📱 Expo Go Preview Published
LinksQR Code |
Summary
Rocketmodule icon →Onboardingin bothpackages/reactandpackages/react-nativeItManagementmodule icon (was an exact duplicate ofSoftware) in both packagesF0AvatarModule/modules.tsmap:get_started→Onboarding,it_management→SoftwareDetails
packages/react
icons/modules/Onboarding.tsx(SVG from formerRocket.tsx)icons/modules/Rocket.tsxandicons/modules/ItManagement.tsxicons/modules/index.tsexportspackages/react-native
icons/modules/Onboarding.tsx(SVG from app Rocket paths)icons/modules/ItManagement.tsxicons/modules/index.tsexportsBackward compatibility
The
modules.tsmap retains theit_managementandget_startedkeys — they now point toSoftwareandOnboardingrespectively. No consumer in Factorial directly importsItManagementorRocketfrom module icons.Testing
packages/react: build + typecheck pass ✅packages/react-native: icons export correctly ✅