working-with-playground-app-a0babf — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited working-with-playground-app-a0babf (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The playground app (apps/playground/) is a standalone Vite + React environment for iterating on UI/UX of Packmind features — both new and existing. Prototypes built here are meant to be easily convertible into production-ready code.
Before writing any code, think like a UX designer. The playground exists to explore how a feature feels to use — not just how it looks. Apply these principles to every prototype:
Never prototype only the happy path. Before building, identify and plan for every state the user might encounter:
Prototype each state explicitly — use local state toggles or tabs to let reviewers switch between them.
Mock data should stress-test the design, not just fill space:
Prototypes should be clickable and stateful, not static mockups:
Guide the user's eye to what matters most:
Users should understand what they can do without instructions:
Show enough to be useful, hide enough to avoid overwhelm:
Before designing something new, check how the existing product handles similar patterns:
To start the playground dev server:
nx dev playgroundThe app runs on localhost:4300. It is not part of the Docker Compose setup — it runs in isolation via Vite's dev server.
Each prototype lives under apps/playground/src/prototypes/. For non-trivial prototypes, create a dedicated folder organized by domain — mirroring the frontend app structure. Consult references/frontend-domain-structure.md for the domain folder list.
apps/playground/src/prototypes/
├── index.ts # Prototype registry
├── ButtonsPrototype.tsx # Simple single-file prototype
└── my-feature/ # Multi-component prototype
├── MyFeaturePrototype.tsx # Root component (entry point)
├── components/
│ ├── domain-a/
│ │ ├── SomeComponent.tsx
│ │ └── AnotherComponent.tsx
│ └── domain-b/
│ └── SomethingElse.tsx
└── types.ts # Shared types for this prototypeFor simple prototypes (e.g., showcasing a single component), a single file is acceptable.
Create a default-exported React component:
import { PMBox, PMHeading } from '@packmind/ui';
export default function MyFeaturePrototype() {
return (
<PMBox padding="6">
<PMHeading size="lg">My Feature</PMHeading>
{/* Prototype content */}
</PMBox>
);
}Add the prototype to apps/playground/src/prototypes/index.ts:
import MyFeaturePrototype from './my-feature/MyFeaturePrototype';
export const prototypes: Prototype[] = [
// ... existing prototypes
{
name: 'My Feature',
description: 'Optional description',
component: MyFeaturePrototype,
},
];The prototype will appear in the dropdown selector in the playground nav bar.
data.ts file within the prototype folder.apps/frontend/src/) and shared type packages (packages/).PM* components from @packmind/ui (e.g., PMBox, PMButton, PMHeading, PMVStack, PMHStack, PMText).PM* wrapper before using. If no wrapper exists, ask the user before using the raw Chakra component.react-icons/lu (Lucide icons, prefixed with Lu).useState, useCallback, useMemo for local state and performance.frontend-domain-structure.md — Domain folder structure from the frontend app, to guide component organization in prototypes.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.