🗂 The essential checklist for modern web development, for humans and AI agents
135 matches across 8 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | scripts/generate/generate-readme.ts | 174 | function buildPriorityImageReferences( |
| LOW | scripts/generate/generate-readme.ts | 271 | export function buildRulesCatalogMarkdown(rules: RuleEntry[]): string { |
| LOW | scripts/generate/generate-readme.ts | 317 | export function buildReadmeCatalogMarkdown(rules: RuleEntry[]): string { |
| LOW | scripts/lib/rule-structure.ts | 190 | export function isCanonicalVerificationHeading(text: string): boolean { |
| LOW | scripts/lib/rule-structure.ts | 194 | export function isVerificationAliasHeading(text: string): boolean { |
| LOW | scripts/lib/rule-structure.ts | 198 | export function hasVerificationLikeSection(body: string): boolean { |
| LOW | scripts/lib/rule-structure.ts | 434 | function getVerificationSectionRaw(body: string): string | null { |
| LOW | scripts/lib/rule-structure.ts | 602 | export function normalizeRuleStructureBody(body: string): RuleStructureNormalization { |
| LOW | scripts/lib/rule-inline-links.ts | 157 | function detectFormulaicMetadataParagraph(text: string): boolean { |
| LOW | scripts/lib/rule-inline-links.ts | 525 | export function buildExternalLinkCandidates(input: ExternalLinkCandidateInput): CandidateLink[] { |
| LOW | scripts/lib/rule-inline-links.ts | 622 | export function buildInternalLinkCandidates(input: InternalLinkCandidateInput): CandidateLink[] { |
| LOW | scripts/lib/rule-support-data.ts | 97 | export function getProjectSupportedBrowsers(cwd = process.cwd()): string[] { |
| LOW | scripts/validation/check-directory-structure.js | 115 | function validateComponentStructure(componentsDir) { |
| LOW | scripts/validation/check-directory-structure.js | 179 | function validateDirectoryStructure() { |
| LOW | scripts/validation/check-file-complexity.js | 155 | function estimateCognitiveComplexity(content) { |
| LOW | packages/auth/src/profile.ts | 162 | function getNonNegativeIntegerProperty(source: unknown, key: string): number | undefined { |
| LOW | packages/emails/emails/transactional-starter.tsx | 78 | export function TransactionalStarterEmail({ |
| LOW | packages/emails/src/server.ts | 79 | export function createResendContactProperties(kind: ResendContactKind): ResendContactProperties { |
| LOW | packages/emails/src/server.ts | 92 | export function createResendContactPayload( |
| LOW | packages/mcp/src/server-resources.ts | 22 | function buildChecklistResourceUri(slug: string): string { |
| LOW | packages/mcp/src/server.ts | 56 | function withDefaultTransportHeaders(request: Request, parsedBody?: unknown): Request { |
| LOW | packages/mcp/src/tools/get-workflow.ts | 47 | export function buildGetWorkflowDefinition(checklists: CuratedChecklist[]) { |
| LOW | packages/mcp/src/tools/get-checklist-rules.ts | 54 | export function buildGetChecklistRulesDefinition(checklists: CuratedChecklist[]) { |
| LOW | packages/mcp/src/tools/review-code.ts | 127 | function formatFormControlForIssue(tagName: string, inputType: string): string { |
| LOW | packages/mcp/src/tools/review-code.ts | 180 | function isLikelyFrameworkDocumentShell(code: string): boolean { |
| LOW | packages/mcp/src/tools/review-code.ts | 190 | function isLikelyMetadataDrivenSource(code: string): boolean { |
| LOW | packages/mcp/src/tools/review-code.ts | 202 | function isLikelyAsyncReactComponentSource(code: string): boolean { |
| LOW | packages/mcp/src/tools/review-code.ts | 210 | function shouldSuppressIssueForSourceContext(code: string, ruleSlug: string): boolean { |
| LOW | packages/mcp/src/utils/mdx-to-markdown.ts | 124 | function removeUnhandledComponents(content: string): string { |
| LOW | packages/storage/src/indexeddb-storage.ts | 11 | export async function initializeStorageDatabase(): Promise<IDBPDatabase<FECDatabase> | null> { |
| LOW | packages/storage/src/storage-helpers.ts | 21 | export function shouldSuppressStorageErrors(): boolean { |
| LOW | packages/storage/src/storage-helpers.ts | 86 | export function collectProjectLocalStorage(): Record<string, unknown> { |
| LOW | packages/seo/src/structured-data.ts | 26 | export function generateWebsiteStructuredData(): StructuredData { |
| LOW | packages/seo/src/structured-data.ts | 49 | export function generateRuleStructuredData(rule: Rule): StructuredData { |
| LOW | packages/seo/src/structured-data.ts | 84 | export function generateBreadcrumbStructuredData( |
| LOW | packages/seo/src/structured-data.ts | 105 | export function generateFAQStructuredData( |
| LOW | …design-system/src/motion/reduced-motion-preference.tsx | 33 | function getServerReducedMotionSnapshot() { |
| LOW | …design-system/src/motion/reduced-motion-preference.tsx | 42 | export function useReducedMotionPreference() { |
| LOW | skills/javascript-inline/references/rule.md | 140 | function initializeInputValidation() { |
| LOW | skills/webpagetest/references/rule.md | 808 | async function performanceRegressionCheck(url) { |
| LOW | skills/audio-descriptions/references/rule.md | 118 | function VideoWithDescriptionChoice({ standardSrc, extendedSrc }: { |
| LOW | skills/css-critical/references/rule.md | 476 | function measureCriticalCSSPerformance() { |
| LOW | skills/css-critical/references/rule.md | 513 | function initializeCriticalCSSTest() { |
| LOW | skills/javascript-minification/references/rule.md | 615 | function measureJavaScriptPerformance() { |
| LOW | skills/back-forward-cache/references/rule.md | 67 | function toggleUnsavedChangesProtection(isDirty) { |
| LOW | apps/web/next.config.js | 5 | function buildContentSecurityPolicy() { |
| LOW | apps/web/app/(site)/page.tsx | 102 | function normalizeChecklistDifficulty(value: string | undefined): ChecklistDifficulty { |
| LOW | apps/web/app/(site)/(account)/layout.tsx | 29 | async function AuthenticatedAccountLayout({ children }: AccountLayoutProps) { |
| LOW | apps/web/app/(site)/lists/[id]/page-client.tsx | 51 | function UserChecklistDetailContent() { |
| LOW | apps/web/app/(site)/list/[publicId]/page.tsx | 41 | async function SharedChecklistPageContent({ params }: PageProps) { |
| LOW | apps/web/app/api/mcp/route.ts | 96 | function extractToolNamesFromRequest(body: unknown): string[] { |
| LOW | apps/web/app/api/rules/[ruleId]/feedback/route.ts | 23 | function emptyRuleFeedbackResponse(): RuleFeedbackResponse { |
| LOW | apps/web/app/api/rules/[ruleId]/feedback/route.ts | 39 | function isMissingRuleFeedbackTableError( |
| LOW | apps/web/app/api/rules/[ruleId]/feedback/route.ts | 100 | async function buildRuleFeedbackResponse( |
| LOW | apps/web/components/homepage/features-bento.tsx | 31 | function subscribeToMobileViewport(onStoreChange: () => void) { |
| LOW | apps/web/components/homepage/features-bento.tsx | 41 | function getMobileViewportSnapshot() { |
| LOW | apps/web/components/homepage/features-bento.tsx | 49 | function getServerViewportSnapshot() { |
| LOW | apps/web/components/homepage/sponsors-bubbles.tsx | 87 | function calculateCirclePackPositions( |
| LOW | apps/web/hooks/use-rule-feedback.ts | 32 | function isRuleCredibilityDecision(value: unknown): value is RuleCredibilityDecision { |
| LOW | apps/web/hooks/use-rule-feedback.ts | 54 | function parseRuleFeedbackResponse(value: unknown): RuleFeedbackResponse { |
| 20 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | packages/config/src/routes.ts | 9 | // ── Site & service base URLs ──────────────────────────────────────────────── |
| MEDIUM | packages/config/src/routes.ts | 14 | // ── GitHub ────────────────────────────────────────────────────────────────── |
| MEDIUM | packages/config/src/routes.ts | 34 | // ── Social / author ───────────────────────────────────────────────────────── |
| MEDIUM | packages/config/src/routes.ts | 43 | // ── Internal route segments ───────────────────────────────────────────────── |
| MEDIUM | packages/config/src/routes.ts | 65 | // ── Route builders ────────────────────────────────────────────────────────── |
| MEDIUM | packages/config/src/routes.ts | 148 | // ── Absolute URL builders (for SEO, sitemap, llms.txt, etc.) ──────────────── |
| MEDIUM | packages/config/src/routes.ts | 158 | // ── User-Agent string (used by crawler and audit-url tool) ────────────────── |
| MEDIUM | packages/mcp/tests/unit/review-code-detection.test.ts | 148 | // ─── TRUE POSITIVE tests — bad HTML MUST trigger the rule ─────────────────── |
| MEDIUM | packages/mcp/tests/unit/review-code-detection.test.ts | 583 | // ── AST-based structural checks (node-html-parser) ────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/review-code-detection.test.ts | 625 | // ─── TRUE NEGATIVE tests — good HTML MUST NOT trigger the rule ────────────── |
| MEDIUM | packages/mcp/tests/unit/review-code-detection.test.ts | 952 | // ─── Coverage summary ──────────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/tool-performance.test.ts | 21 | // ─── Test data ──────────────────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/tool-performance.test.ts | 110 | // ─── Benchmark helper ───────────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/tool-performance.test.ts | 134 | // ─── Performance budget assertions ──────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/tool-performance.test.ts | 146 | // ─── Tests ──────────────────────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/false-positive-audit.test.ts | 141 | // ─── Exemplary HTML page ───────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/false-positive-audit.test.ts | 220 | // ─── Exemplary CSS ──────────────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/false-positive-audit.test.ts | 266 | // ─── Exemplary JavaScript ───────────────────────────────────────────────────── |
| MEDIUM | packages/mcp/tests/unit/false-positive-audit.test.ts | 312 | // ─── FALSE POSITIVE tests ───────────────────────────────────────────────────── |
| MEDIUM | skills/service-worker/references/rule.md | 81 | // ─── Install: pre-cache static assets ──────────────────────────────────────── |
| MEDIUM | skills/service-worker/references/rule.md | 91 | // ─── Activate: remove old caches ───────────────────────────────────────────── |
| MEDIUM | skills/service-worker/references/rule.md | 109 | // ─── Fetch: serve from cache, fall back to network ─────────────────────────── |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ges/design-system/src/__tests__/design-system.test.tsx | 183 | <Input type="email" defaultValue="user@example.com" /> |
| LOW | …ges/design-system/src/__tests__/design-system.test.tsx | 188 | expect(screen.getByDisplayValue('user@example.com').getAttribute('type')).toBe('email') |
| LOW | skills/srcset/references/rule.md | 50 | alt="Jane Doe" |
| LOW | skills/contract-testing/references/rule.md | 84 | name: string('Jane Doe'), |
| LOW | skills/contract-testing/references/rule.md | 98 | expect(user.name).toBe('Jane Doe') |
| LOW | skills/contract-testing/references/rule.md | 147 | email: string('user@example.com'), |
| LOW | skills/contract-testing/references/rule.md | 261 | await db.seed({ users: [{ id: 42, name: 'Jane Doe', email: 'jane@example.com', role: 'admin' }] }) |
| LOW | skills/svg-inline/references/rule.md | 58 | alt="Acme Corp" |
| LOW | skills/link-checker/references/rule.md | 930 | alerts: 'admin@example.com' |
| LOW | skills/link-checker/references/rule.md | 946 | defaultTo: 'admin@example.com' |
| LOW | skills/mock-best-practices/references/rule.md | 88 | expect(validateEmail('test@test.com')).toBe(true) |
| LOW | skills/mock-best-practices/references/rule.md | 93 | expect(validateEmail('test@test.com')).toBe(true) |
| LOW | skills/author-byline/references/rule.md | 17 | <img src="/images/authors/jane-doe.jpg" alt="Jane Doe" width="40" height="40" style="border-radius: 50%;"> |
| LOW | skills/alt-text/references/rule.md | 77 | <img src="logo.svg" alt="Acme Corp"> |
| LOW | skills/e2e-testing/references/rule.md | 18 | await page.fill('[data-testid="email"]', 'user@example.com') |
| LOW | skills/e2e-testing/references/rule.md | 56 | cy.login('user@example.com', 'password') |
| LOW | skills/e2e-testing/references/rule.md | 70 | cy.get('#address').type('123 Main St') |
| LOW | skills/e2e-testing/references/rule.md | 124 | await loginPage.login('user@example.com', 'password') |
| LOW | skills/local-business/references/rule.md | 25 | "streetAddress": "123 Main Street", |
| LOW | skills/local-business/references/rule.md | 106 | streetAddress: '123 Main St', |
| LOW | skills/article/references/rule.md | 23 | "name": "Jane Doe", |
| LOW | skills/test-coverage/references/rule.md | 117 | expect(isValidEmail('user@example.com')).toBe(true) |
| LOW | skills/test-coverage/references/rule.md | 125 | isValidEmail('test@test.com') |
| LOW | skills/nap-consistency/SKILL.md | 26 | Search the site for all instances of the business name, street address, and phone number. Compare each occurrence for ex |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | README.md | 415 | - [ ] [Audit and refine AI-generated content](https://frontendchecklist.io/rules/seo/ai-content) ![Medium][medium_img]: |
| HIGH | skills/ai-content/SKILL.md | 13 | # Audit and refine AI-generated content |
| HIGH | skills/ai-content/references/rule.md | 1 | # Audit and refine AI-generated content |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | packages/mcp/tests/unit/review-code-detection.test.ts | 256 | const js = 'async function getData() { const data = await fetch("/api"); return data.json(); }' |
| LOW | packages/mcp/tests/unit/review-code-detection.test.ts | 696 | 'async function getData() { try { const data = await fetch("/api"); return data.json(); } catch(e) { console.error |
| LOW | packages/mcp/tests/unit/false-positive-audit.test.ts | 282 | function getData() { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | packages/design-system/src/motion/marquee.tsx | 16 | // Triple items for seamless loop |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | apps/web/data/mentions.json | 279 | "content": "Check the 🔥 Front-End Checklist Application 🔥 for modern websites and meticulous developers! With more |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/workflows/pr.yml | 75 | # Check if commits follow conventional commits |