design-prd — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-prd (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.
Degree of freedom: MIXED. Clarifying questions, scope, and requirements [HIGH freedom]; stack/feature/schema detection [LOW freedom — run exactly].
Create detailed, actionable Product Requirements Documents through structured conversation, informed by codebase analysis and competitive research.
Discover: Next.js + Supabase;notificationstable missing; noprd-*.md. Clarify: in-app vs email vs push? (user: 1A in-app only). MVP vs polish? (2A MVP). Scope: P0 in-app bell + read state; non-goal: email/push (design-email/mobile-capacitor-platform). Specify: FR-1 "unread count on the header within 2s of insert" — not "feel realtime".
workflow-build-feature; UI from scratch → design-frontend; RLS matrix → plan-rls-auditBefore writing any PRD, understand the project from its source code.
Read package.json (or equivalent) to extract:
Glob: **/app/**/page.tsx → Next.js routes (features)
Glob: **/features/*/ → Feature directories
Glob: **/src/routes/**/*.tsx → Route-based features
Grep: pattern "export default" glob "**/page.tsx" output_mode "files_with_matches"Read feature READMEs if they exist:
Glob: **/*README*.md → Feature docs
Glob: **/docs/*.md → DocumentationGlob: **/supabase/migrations/*.sql → SQL migrations
Glob: **/prisma/schema.prisma → Prisma schema
Glob: **/drizzle/schema.ts → Drizzle schema
Glob: **/types/*.ts → TypeScript type definitionsGlob: **/tasks/prd-*.md → Existing PRDs
Glob: **/docs/prd-*.md → Existing PRDs (alt location)
Glob: **/specs/*.md → Spec documentsPROJECT CONTEXT:
- Framework: [name + version]
- Database: [type + ORM]
- Existing features: [list of routes/feature dirs]
- Existing PRDs: [list or none]
- Data entities: [list from schema]
- Auth system: [provider]When the user describes a feature, research how others have solved it:
firecrawl:firecrawl_search
{
"query": "<FEATURE_TYPE> UX patterns best practices [current year]",
"limit": 5,
"sources": [{ "type": "web" }]
}Feature-type search queries (CRUD, dashboard, onboarding, e-commerce, social, CMS, search, settings): references/research-and-questions.md §Feature-type search queries.
Scrape the most relevant result for detailed patterns. Competitor rows in section 7 come from fetched pages, not memory — recognizing a product name is not knowing its current feature set; search the name as written:
firecrawl:firecrawl_scrape
{
"url": "<BEST_RESULT_URL>",
"formats": ["markdown"],
"onlyMainContent": true
}Check if the framework supports what the feature needs:
context7:resolve-library-id
{
"libraryName": "<FRAMEWORK>",
"query": "<FEATURE_CAPABILITY> support"
}context7:query-docs
{
"libraryId": "<RESOLVED_ID>",
"query": "<FEATURE_CAPABILITY> implementation guide"
}If the feature involves data, check the existing schema:
supabase:list_tables
{
"schemas": ["public"],
"verbose": true
}Or for specific tables:
supabase:execute_sql
{
"query": "SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = '<RELEVANT_TABLE>' ORDER BY ordinal_position"
}Determine:
When the user describes a feature, sort what is clear from what is unclear before writing anything:
SemanticSearch: "How does the app currently handle <FEATURE_AREA>?" target: []
Grep: pattern "<FEATURE_KEYWORDS>" glob "*.{ts,tsx,js,jsx}"If similar functionality already exists, the PRD should extend it rather than duplicate.
| Category | Ask When... |
|---|---|
| Problem / Goal | The "why" is unclear |
| Core Functionality | The "what" is vague |
| Scope Boundaries | Request is broad |
| Target User | Multiple user types possible |
| Success Criteria | No clear definition of "done" |
Numbered questions, lettered A–D options, closing with Reply with selections (e.g., "1B, 2A, 3B"): references/research-and-questions.md §Clarifying questions.
Ten sections, in order: Overview (problem, proposed solution) → Goals table with success metrics → User Stories (primary + edge case) → Functional Requirements as P0/P1/P2 checkboxes → Non-Goals → Technical Feasibility (existing vs new infrastructure, complexity table) → Competitive Analysis table from the Firecrawl research → UI/UX Considerations (screens, borrowed patterns, accessibility) → Data Model (tables used, SQL for new tables, RLS policies) → Open Questions.
Full template: references/prd-template.md.
Present the PRD, take the user's edits, resolve the open questions, and confirm it is ready to save before writing the file.
Location: tasks/prd-[feature-name].md
Naming:
prd-dark-mode.md, prd-export-csv.md, prd-user-onboarding.mdTarget audience: a junior developer should understand this.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.