diff --git a/docs/security/software-security.mdx b/docs/security/software-security.mdx index 3fee8d1251..64c2645d3f 100644 --- a/docs/security/software-security.mdx +++ b/docs/security/software-security.mdx @@ -158,7 +158,7 @@ The MCP Server has a small direct-dependency surface and does not yet declare a The UI uses [pnpm](https://pnpm.io) with supply-chain controls configured in [`ui/pnpm-workspace.yaml`](https://github.com/prowler-cloud/prowler/blob/master/ui/pnpm-workspace.yaml). - **Minimum release age** (`minimumReleaseAge: 1440`): packages must publish at least 24 hours before install. This reduces exposure during the window when a compromised release has not yet been detected and yanked. -- **Lifecycle script allow-list** (`strictDepBuilds: true` + `allowBuilds`): only explicitly approved packages may run `install` or `postinstall` scripts (currently `sharp`, `esbuild`, `@sentry/cli`, `@heroui/shared-utils`, `unrs-resolver`, `msw`). Any unlisted package with lifecycle scripts fails the install. +- **Lifecycle script allow-list** (`strictDepBuilds: true` + `allowBuilds`): only explicitly approved packages may run `install` or `postinstall` scripts (currently `sharp`, `esbuild`, `@sentry/cli`, `unrs-resolver`, `msw`). Any unlisted package with lifecycle scripts fails the install. - **Trust policy** (`trustPolicy: no-downgrade`): the install fails when a package's trust evidence drops, for example after a new publisher takes over. - **Block exotic subdeps** (`blockExoticSubdeps: true`): transitive dependencies cannot ship as git URLs or tarballs. Every package in the tree resolves from the configured registry. - **Transitive overrides** in [`ui/package.json`](https://github.com/prowler-cloud/prowler/blob/master/ui/package.json) force specific versions for transitive packages (`lodash`, `serialize-javascript`, `qs`, `rollup`, `minimatch`, `ajv`, and others). diff --git a/skills/prowler-ui/SKILL.md b/skills/prowler-ui/SKILL.md index f0f2bae08e..eae8591d9f 100644 --- a/skills/prowler-ui/SKILL.md +++ b/skills/prowler-ui/SKILL.md @@ -2,7 +2,7 @@ name: prowler-ui description: > Prowler UI-specific patterns. For generic patterns, see: typescript, react-19, nextjs-16, tailwind-4. - Trigger: When working inside ui/ on Prowler-specific conventions (shadcn vs HeroUI legacy, folder placement, actions/adapters, shared types/hooks/lib). + Trigger: When working inside ui/ on Prowler-specific conventions (shadcn, folder placement, actions/adapters, shared types/hooks/lib). license: Apache-2.0 metadata: author: prowler-cloud @@ -31,21 +31,14 @@ allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task Next.js 16.2.3 | React 19.2.5 | Tailwind 4.1.18 | shadcn/ui Zod 4.1.11 | React Hook Form 7.62.0 | Zustand 5.0.8 NextAuth 5.0.0-beta.30 | Recharts 2.15.4 -HeroUI 2.8.4 (LEGACY - do not add new components) ``` -## CRITICAL: Component Library Rule - -- **ALWAYS**: Use `shadcn/ui` + Tailwind (`components/shadcn/`) -- **NEVER**: Add new HeroUI components (`components/ui/` is legacy only) - ## DECISION TREES ### Component Placement ```text New feature UI? → shadcn/ui + Tailwind -Existing HeroUI feature? → Keep HeroUI (don't mix) Used 1 feature? → features/{feature}/components/ Used 2+ features? → components/shared/ Needs state/hooks? → "use client" @@ -311,16 +304,6 @@ Before requesting re-review from a reviewer: - [ ] If you disagreed: the reply explains why with clear reasoning — do not leave threads silently open - [ ] Re-request review only after all threads are in a clean state -## Migrations Reference - -| From | To | Key Changes | -|------|-----|-------------| -| React 18 | 19.1 | Async components, React Compiler (no useMemo/useCallback) | -| Next.js 14 | 15.5 | Improved App Router, better streaming | -| NextUI | HeroUI 2.8.4 | Package rename only, same API | -| Zod 3 | 4 | `z.email()` not `z.string().email()`, `error` not `message` | -| AI SDK 4 | 5 | `@ai-sdk/react`, `sendMessage` not `handleSubmit`, `parts` not `content` | - ## Resources - **Documentation**: See [references/](references/) for links to local developer guide diff --git a/ui/AGENTS.md b/ui/AGENTS.md index af04c838f8..52d00dd4f7 100644 --- a/ui/AGENTS.md +++ b/ui/AGENTS.md @@ -96,7 +96,7 @@ When performing these actions, ALWAYS invoke the corresponding skill FIRST: ### Component Placement ```text -New/Existing UI? → shadcn/ui + Tailwind (NEVER HeroUI for new code) +New/Existing UI? → shadcn/ui + Tailwind Used 1 feature? → features/{feature}/components | Used 2+? → components/{domain}/ Needs state/hooks? → "use client" | Server component? → No directive ```