Coding conventions, architecture patterns, and testing rules for the SkillHub React frontend. Ensures agents follow Feature-Sliced Design and use the generated OpenAPI types.
62
72%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/frontend-conventions/SKILL.mdUse this skill when:
Place code at the lowest appropriate layer:
| Layer | Path | Purpose |
|---|---|---|
| Pages | web/src/pages/ | Route-level page components |
| Features | web/src/features/ | Business features (search, upload, review, etc.) |
| Entities | web/src/entities/ | Domain entity display logic (skill, user, namespace) |
| Shared | web/src/shared/ | Reusable UI components, hooks, utilities |
Current features:
admin — Admin panel (user management, labels, search)auth — Login, OAuth flows, device authgovernance — Skill governance actions (hide, yank, archive)namespace — Namespace management (members, settings)notification — User notifications and inboxpromotion — Skill promotion between scopespublish — Skill upload/publish UIreport — Skill reportingreview — Review workflow UIsearch — Skill search and filteringsecurity-audit — Security audit viewerskill — Skill detail, listing, cardssocial — Stars, ratings, subscriptionstoken — API token management@tanstack/react-query) for server state.useEffect for data fetching.openapi-fetch client with generated types from web/src/api/generated/schema.d.ts.any types.@radix-ui/react-dropdown-menu, @radix-ui/react-selectcn() utility: web/src/shared/lib/utils.tsWhen backend OpenAPI contracts change:
make generate-apiThis runs openapi-typescript http://localhost:8080/v3/api-docs -o src/api/generated/schema.d.ts.
Commit the updated web/src/api/generated/schema.d.ts with the PR.
To verify the generated file is not stale:
./scripts/check-openapi-generated.shcn() utility for conditional class mergingweb/src/shared/components/web/src/i18n/make dev-web # Start Vite dev server (HMR enabled)
make build-frontend # Production build
make typecheck-web # TypeScript type check (tsc --noEmit)
make lint-web # ESLint check
make test-frontend # Vitest unit tests
make test-e2e-frontend # Playwright E2E tests
make test-e2e-smoke-frontend # Playwright smoke testsVite HMR is enabled by default — save a file and the browser updates instantly.
Key dependencies (from web/package.json):
react 19, react-dom 19@tanstack/react-query 5@tanstack/react-router 1@radix-ui/react-dropdown-menu, @radix-ui/react-selectclass-variance-authority, clsx, tailwind-mergeopenapi-fetch 0.13i18next, react-i18nextzustand 5react-markdown, rehype-highlight, rehype-sanitizelucide-react (icons)sonner (toasts)Build tools: Vite 6, TypeScript 5.7, Vitest 3.2, Playwright 1.58
ac46ad5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.