Scanner refinements:
- Exclude services/<svc>/src/ (Fastify backends, not UI)
- Exclude packages/config/ (schema/defaults, not UI)
- Exclude packages/devops/ (internal tooling)
- Exclude packages/create-app/.../templates (scaffolder templates)
- Exclude *.storybook/, /stories/, *.stories.{ts,tsx} (demo/docs)
- Exclude SVG fill=, stroke= hex (brand-mandated, e.g. Google G logo)
- Exclude ThemeEditor.tsx, theme-defaults.* (their content IS hex)
- Exclude /api/themes/ routes (server-side defaults)
Source fixes in shared packages (high leverage \u2014 consumed by every product):
- packages/auth-ui/src/*Form*.tsx + OnboardingShell + MfaChallenge (7)
- packages/dashboard-shell/src/{TopBar,ProfilePage}.tsx (3)
- dashboards/tracker-web/src/app/health/page.tsx (6)
All use the canonical var(--bl-<token>, #fallback) pattern that:
- Lets product themes override (e.g., each product sets --bl-danger differently)
- Falls back to a sensible default if tokens haven't loaded yet (defensive)
common_plat hex: 59 \u2192 0 \u2713 (Tier 2 complete)
Ecosystem total: 1569 \u2192 1402
Tier progress:
Tier 1 (critical): 13 \u2192 0 \u2713
Tier 2 (common_plat hex): 59 \u2192 0 \u2713
Tier 3 (mac_tooling, efforise): NEXT
Tier 4 (mindlyst, fastgap, flowmonk)
Tier 5 (non-hex rules)
20 KiB
20 KiB
Rule Violations Report — 2026-05-23
Generated by
scripts/check-rule-violations.shagainst canonical rules inAI.dev/SKILLS/agent-behavior-guidelines.md.
Severity legend: critical = data/security risk · major = rule violation · minor = style
learning_ai_common_plat
Counts: critical=0 · major=80 · minor=86 · total=166
- [major]
packages/logger/src/logger.ts:40— console.log: console.log(${prefix} ${message}${extras}); - [major]
packages/create-app/src/scaffolder.ts:60— console.log: console.log(` - [major]
packages/create-app/src/scaffolder.ts:115— console.log: console.log('\n📦 ByteLyst Product Scaffolder\n'); - [major]
packages/create-app/src/scaffolder.ts:126— console.log: console.log('\nPlatforms (comma-separated: web, mobile, ios, android)'); - [major]
packages/create-app/src/scaffolder.ts:135— console.log: console.log('\nFeatures (comma-separated: auth, billing, telemetry, flags, syn - [major]
packages/create-app/src/scaffolder.ts:257— console.log: console.log(\n🚀 Scaffolding ${manifest.displayName}); - [major]
packages/create-app/src/scaffolder.ts:259— console.log: console.log(Product ID: ${manifest.productId}); - [major]
packages/create-app/src/scaffolder.ts:261— console.log: console.log(Output: ${outPath}); - [major]
packages/create-app/src/scaffolder.ts:263— console.log: console.log(Platforms: ${manifest.platforms.join(', ')}); - [major]
packages/create-app/src/scaffolder.ts:265— console.log: console.log(Features: ${manifest.features.join(', ')}); - [major]
packages/create-app/src/scaffolder.ts:268— console.log: console.log(' ⚠️ DRY RUN\n'); - [major]
packages/create-app/src/scaffolder.ts:275— console.log: console.log(📄 ${files.length} files would be generated:\n); - [major]
packages/create-app/src/scaffolder.ts:278— console.log: console.log(── ${file.path} ──────────────────────────────────────); - [major]
packages/create-app/src/scaffolder.ts:280— console.log: console.log(file.content); - [major]
packages/create-app/src/scaffolder.ts:283— console.log: console.log(\n✨ Dry run complete. Re-run without --dry-run to write files. - [major]
packages/create-app/src/scaffolder.ts:293— console.log: console.log(✅ ${file.path}); - [major]
packages/create-app/src/scaffolder.ts:297— console.log: console.log(\n✨ ${manifest.displayName} scaffolded at ${outPath}); - [major]
packages/create-app/src/scaffolder.ts:299— console.log: console.log(\nNext steps:); - [major]
packages/create-app/src/scaffolder.ts:301— console.log: console.log(cd ${outDir}/backend && npm install && npm run dev); - [major]
packages/create-app/src/scaffolder.ts:304— console.log: console.log(cd ${outDir}/web && npm install && npm run dev); - [major]
packages/create-app/src/generators/agents-md.ts:49— console.log: console.log(` - [major]
packages/create-app/src/generators/agents-md.ts:528— console.log: console.log(📝 Would create symlink: ${target} → AGENTS.md); - [major]
packages/create-app/src/generators/agents-md.ts:533— console.log: console.log(✅ ${target} → AGENTS.md); - [major]
packages/create-app/src/generators/agents-md.ts:535— console.log: console.log( - [major]
packages/create-app/src/generators/agents-md.ts:549— console.log: console.log(\n📄 AGENTS.md Generator); - [major]
packages/create-app/src/generators/agents-md.ts:550— console.log: console.log(Repo: ${repoPath}); - [major]
packages/create-app/src/generators/agents-md.ts:551— console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n'); - [major]
packages/create-app/src/generators/agents-md.ts:552— console.log: if (update) console.log(' 🔄 UPDATE mode — preserving custom sections\n'); - [major]
packages/create-app/src/generators/agents-md.ts:556— console.log: console.log(Product: ${manifest.displayName} (${manifest.productId})); - [major]
packages/create-app/src/generators/agents-md.ts:560— console.log: console.log(Backend modules: ${info.backendModules.length}); - [major]
packages/create-app/src/generators/agents-md.ts:561— console.log: console.log(` Tests: ~${info.backendTestCount + info.webTestCount + info.mob - [major]
packages/create-app/src/generators/agents-md.ts:562— console.log: console.log(''); - [major]
packages/create-app/src/generators/agents-md.ts:574— console.log: console.log(🔄 Preserving ${customSections.size} custom section(s)); - [major]
packages/create-app/src/generators/agents-md.ts:578— console.log: console.log(' ℹ️ No existing AGENTS.md to preserve custom sections from - [major]
packages/create-app/src/generators/agents-md.ts:583— console.log: console.log('── AGENTS.md ──────────────────────────────────────'); - [major]
packages/create-app/src/generators/agents-md.ts:584— console.log: console.log(content); - [major]
packages/create-app/src/generators/agents-md.ts:585— console.log: console.log('\n── Symlinks ──────────────────────────────────────'); - [major]
packages/create-app/src/generators/agents-md.ts:587— console.log: console.log('\n✨ Dry run complete.'); - [major]
packages/create-app/src/generators/agents-md.ts:594— console.log: console.log(✅ AGENTS.md written); - [major]
packages/create-app/src/generators/agents-md.ts:599— console.log: console.log(\n✨ AGENTS.md generated for ${manifest.displayName}.); - [major]
packages/create-app/src/generators/api-routes.ts:92— console.log: console.log(` - [major]
packages/create-app/src/generators/api-routes.ts:670— console.log: console.log(\n🚀 Generating API routes: ${name}); - [major]
packages/create-app/src/generators/api-routes.ts:671— console.log: console.log(Mode: ${mode}); - [major]
packages/create-app/src/generators/api-routes.ts:672— console.log: console.log(Methods: ${methods.join(', ')}); - [major]
packages/create-app/src/generators/api-routes.ts:673— console.log: console.log(Target: ${target}); - [major]
packages/create-app/src/generators/api-routes.ts:674— console.log: if (fields) console.log(Fields: ${fields}); - [major]
packages/create-app/src/generators/api-routes.ts:675— console.log: if (dryRun) console.log(' ⚠️ DRY RUN — no files will be written\n'); - [major]
packages/create-app/src/generators/api-routes.ts:725— console.log: console.log('📄 Generated files:\n'); - [major]
packages/create-app/src/generators/api-routes.ts:727— console.log: console.log(── ${file.path} ──────────────────────────────────────); - [major]
packages/create-app/src/generators/api-routes.ts:728— console.log: console.log(file.content); - [major]
packages/create-app/src/generators/api-routes.ts:730— console.log: console.log(\n✨ Dry run complete. Re-run without --dry-run to write files. - [major]
packages/create-app/src/generators/api-routes.ts:742— console.log: console.log(⚠️ SKIP ${file.path} (already exists)); - [major]
packages/create-app/src/generators/api-routes.ts:749— console.log: console.log(✅ ${file.path}); - [major]
packages/create-app/src/generators/api-routes.ts:752— console.log: console.log(\n✨ API routes generated for "${name}".); - [major]
packages/create-app/src/generators/api-routes.ts:754— console.log: console.log(\nPrerequisites (if not already present):); - [major]
packages/create-app/src/generators/api-routes.ts:755— console.log: console.log(- lib/auth-server.ts — getCurrentUser(authHeader) function) - [major]
packages/create-app/src/generators/api-routes.ts:756— console.log: console.log(- lib/api-handler.ts — withErrorHandler HOF); - [major]
packages/create-app/src/generators/api-routes.ts:757— console.log: console.log(- lib/datastore.ts — getCosmosContainer + PRODUCT_ID); - [major]
packages/create-app/src/generators/api-routes.ts:758— console.log: console.log(- zod installed — npm install zod); - [major]
packages/create-app/src/generators/api-routes.ts:760— console.log: console.log(\nPrerequisites (if not already present):); - [major]
packages/create-app/src/generators/api-routes.ts:761— console.log: console.log(- lib/api-helpers.ts — getAccessToken(req) function); - [major]
packages/create-app/src/generators/api-routes.ts:762— console.log: console.log(- lib/api-handler.ts — withErrorHandler HOF); - [major]
packages/create-app/src/generators/api-routes.ts:763— console.log: console.log(` - NEXT_PUBLIC_BACKEND_URL env var (or defaults to localhost: - [major]
packages/mcp-client/src/index.ts:51— console.log: console.log( - [major]
packages/mcp-client/src/index.ts:76— console.log: console.log('[MCP] Successfully connected to MCP server'); - [major]
packages/mcp-client/src/index.ts:102— console.log: console.log('[MCP] Disconnected from MCP server'); - [major]
packages/mcp-client/src/index.ts:155— console.log: console.log([MCP] Tool ${toolName} executed successfully); - [major]
packages/mcp-client/src/index.ts:321— console.log: console.log(`[MCP-AUDIT] Tool called: ${toolName}, Args: ${JSON.stringify(sa - [major]
packages/mcp-client/src/index.ts:325— console.log: console.log([MCP-AUDIT] Tool succeeded: ${toolName}); - [major]
services/extraction-service/src/modules/extract/product-rate-limit.ts:408— console.log: console.log([product-rate-limit] Cleaned up ${cleaned} expired entries - [major]
services/extraction-service/src/modules/extract/sidecar-monitor.ts:295— console.log: console.log( - [major]
services/monitoring/health-check.ts:39— console.log: console.log(🩺 Monitoring dashboard running on http://localhost:${PORT}); - [major]
services/monitoring/health-check.ts:40— console.log: console.log(Checking ${DEFAULT_SERVICES.length} services every request) - [major]
services/monitoring/health-check.ts:46— console.log: console.log(`\n${icon[report.overall]} Overall: ${report.overall.toUpperCase() - [major]
services/monitoring/health-check.ts:50— console.log: console.log( - [major]
services/monitoring/health-check.ts:55— console.log: console.log(\nHealthy: ${report.summary.healthy}/${report.summary.total}); - [major]
packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:88— Swift print(): print("[DEBUG] (message)") - [major]
packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:93— Swift print(): print("[INFO] (message)") - [major]
packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:97— Swift print(): print("[WARN] (message)") - [major]
packages/swift-diagnostics/Sources/ByteLystDiagnostics/Core/Configuration.swift:101— Swift print(): print("[ERROR] (message)") - [minor]
dashboards/admin-web/src/app/(dashboard)/ops/ab-testing/page.tsx:135— any type: return <Badge variant={config.variant as any}>{config.label}; - [minor]
packages/mcp-client/src/index.ts:16— any type: inputSchema?: any; - [minor]
packages/mcp-client/src/index.ts:20— any type: data: any; - [minor]
packages/mcp-client/src/index.ts:77— any type: } catch (error: any) { - [minor]
packages/mcp-client/src/index.ts:103— any type: } catch (error: any) { - [minor]
packages/mcp-client/src/index.ts:109— any type: async callTool(toolName: string, args: any = {}): Promise { - [minor]
packages/mcp-client/src/index.ts:143— any type: const response = result.content as any[]; - [minor]
packages/mcp-client/src/index.ts:160— any type: } catch (error: any) { - [minor]
packages/mcp-client/src/index.ts:190— any type: return response.tools.map((tool: any) => ({ - [minor]
packages/mcp-client/src/index.ts:195— any type: } catch (error: any) { - [minor]
packages/mcp-client/src/index.ts:225— any type: private getCacheKey(toolName: string, args: any): string { - [minor]
packages/mcp-client/src/index.ts:229— any type: private getFromCache(key: string): any | null { - [minor]
packages/mcp-client/src/index.ts:244— any type: private setCache(key: string, data: any): void { - [minor]
packages/mcp-client/src/index.ts:269— any type: private isNonRetriableError(error: any): boolean { - [minor]
packages/mcp-client/src/index.ts:318— any type: private auditLogToolCall(toolName: string, args: any): void { - [minor]
packages/mcp-client/src/index.ts:332— any type: private sanitizeArgs(args: any): any { - [minor]
services/platform-service/src/server.ts:304— any type: const auth = (request as any).auth; - [minor]
services/platform-service/src/server.ts:335— any type: } catch (error: any) { - [minor]
services/extraction-service/src/modules/transcribe/routes.ts:5— any type: * Product-agnostic: any product backend can call this endpoint. - [minor]
dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:21— Emoji in code: 📊 - [minor]
dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:22— Emoji in code: 📝 - [minor]
dashboards/admin-web/src/app/(dashboard)/surveys/[id]/page.tsx:23— Emoji in code: 📄 - [minor]
dashboards/tracker-web/src/app/roadmap/page.tsx:513— Emoji in code: 💬 - [minor]
dashboards/tracker-web/src/app/roadmap/page.tsx:569— Emoji in code: 💬 - [minor]
dashboards/tracker-web/src/app/dashboard/items/[id]/page.tsx:232— Emoji in code: 🌐 - [minor]
scripts/encrypt-migrate.ts:507— Emoji in code: 📦 - [minor]
scripts/encrypt-migrate.ts:510— Emoji in code: 🔐 - [minor]
scripts/encrypt-migrate.ts:589— Emoji in code: 🏢 - [minor]
packages/dashboard-shell/src/TopBar.tsx:80— Emoji in code: 🔔 - [minor]
packages/celebrations/src/index.ts:7— Emoji in code: 👏 - [minor]
packages/celebrations/src/index.ts:12— Emoji in code: 🎉 - [minor]
packages/celebrations/src/index.ts:14— Emoji in code: 🔥 - [minor]
packages/celebrations/src/index.ts:15— Emoji in code: 🏆 - [minor]
packages/swift-platform-sdk/Tests/BLFieldEncryptTests.swift:32— Emoji in code: 🌍 - [minor]
packages/create-app/src/scaffolder.ts:115— Emoji in code: 📦 - [minor]
packages/create-app/src/scaffolder.ts:257— Emoji in code: 🚀 - [minor]
packages/create-app/src/scaffolder.ts:275— Emoji in code: 📄 - [minor]
packages/create-app/src/generators/agents-md.ts:528— Emoji in code: 📝 - [minor]
packages/create-app/src/generators/agents-md.ts:549— Emoji in code: 📄 - [minor]
packages/create-app/src/generators/agents-md.ts:552— Emoji in code: 🔄 - [minor]
packages/create-app/src/generators/agents-md.ts:574— Emoji in code: 🔄 - [minor]
packages/create-app/src/generators/api-routes.ts:670— Emoji in code: 🚀 - [minor]
packages/create-app/src/generators/api-routes.ts:725— Emoji in code: 📄 - [minor]
packages/time-references/src/client.ts:16— Emoji in code: 🎵 - [minor]
packages/time-references/src/client.ts:23— Emoji in code: 📺 - [minor]
packages/time-references/src/client.ts:24— Emoji in code: 🚶 - [minor]
packages/time-references/src/client.ts:31— Emoji in code: 🧘 - [minor]
packages/time-references/src/client.ts:32— Emoji in code: 📺 - [minor]
packages/time-references/src/client.ts:39— Emoji in code: 🎬 - [minor]
packages/time-references/src/client.ts:40— Emoji in code: 🚴 - [minor]
packages/time-references/src/client.ts:47— Emoji in code: 🚗 - [minor]
packages/time-references/src/client.ts:48— Emoji in code: 📺 - [minor]
packages/time-references/src/client.ts:55— Emoji in code: 💼 - [minor]
packages/time-references/src/client.ts:56— Emoji in code: 😴 - [minor]
packages/time-references/src/client.ts:64— Emoji in code: 🌅 - [minor]
packages/time-references/src/client.ts:74— Emoji in code: 🧙 - [minor]
packages/time-references/src/client.ts:83— Emoji in code: 🌍 - [minor]
packages/time-references/src/client.ts:84— Emoji in code: 🥾 - [minor]
packages/time-references/src/client.ts:91— Emoji in code: 🏆 - [minor]
packages/time-references/src/client.ts:99— Emoji in code: 🌟 - [minor]
packages/time-references/src/index.ts:11— Emoji in code: 🎬 - [minor]
packages/time-references/src/index.ts:17— Emoji in code: 🌙 - [minor]
packages/time-references/src/index.ts:20— Emoji in code: 🏔 - [minor]
packages/time-references/src/index.ts:23— Emoji in code: 🌍 - [minor]
packages/time-references/src/index.ts:26— Emoji in code: 🚂 - [minor]
packages/time-references/src/index.ts:31— Emoji in code: 🏕 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:156— Emoji in code: 📊 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:164— Emoji in code: 🚨 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:183— Emoji in code: 🐛 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:185— Emoji in code: 📚 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:186— Emoji in code: 🧪 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:187— Emoji in code: 🔧 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:189— Emoji in code: 🎨 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:190— Emoji in code: 🔄 - [minor]
services/mcp-server/src/modules/dev/changelog-tools.ts:191— Emoji in code: 📝 - [minor]
services/platform-service/scripts/gen-module.ts:515— Emoji in code: 📝 - [minor]
services/platform-service/scripts/gen-module.ts:551— Emoji in code: 📝 - [minor]
services/platform-service/scripts/gen-module.ts:608— Emoji in code: 🚀 - [minor]
services/platform-service/scripts/gen-module.ts:636— Emoji in code: 📄 - [minor]
services/platform-service/src/modules/predictive-analytics/campaign-engine.ts:451— Emoji in code: 🚨 - [minor]
services/platform-service/src/modules/diagnostics/auto-triggers.ts:393— Emoji in code: 🚨 - [minor]
services/platform-service/src/modules/diagnostics/auto-triggers.ts:427— Emoji in code: 🚨 - [minor]
services/platform-service/src/modules/delivery/templates.ts:203— Emoji in code: 🚨 - [minor]
services/platform-service/src/modules/delivery/templates.ts:205— Emoji in code: 🚨 - [minor]
services/platform-service/src/modules/delivery/templates.ts:214— Emoji in code: 🚨 - [minor]
services/monitoring/health-check.ts:39— Emoji in code: 🩺
Ecosystem totals by rule
| Rule | Total findings |
|---|---|
b4-console-log |
76 |
b7-emoji-in-code |
67 |
ts-any-type |
19 |
b4-swift-print |
4 |
Grand total: 166 findings across 1 repos.