# Rule Violations Report — 2026-05-23 > Generated by `scripts/check-rule-violations.sh` against canonical rules in > [`AI.dev/SKILLS/agent-behavior-guidelines.md`](../AI.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=0 · minor=18 · total=18 - **[minor]** `services/platform-service/src/server.ts:304` — any type: const auth = (request as any).auth; - **[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/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]** `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/monitoring/health-check.ts:39` — Emoji in code: 🩺 ## `learning_voice_ai_agent` **Counts:** critical=0 · major=0 · minor=36 · total=36 - **[minor]** `mobile_app/common/kill_switch.py:58` — Emoji in code: 📱 - **[minor]** `mobile_app/common/kill_switch.py:66` — Emoji in code: 🛑 - **[minor]** `scripts/test_stress.py:46` — Emoji in code: 🏋 - **[minor]** `scripts/test_stress.py:110` — Emoji in code: 📊 - **[minor]** `scripts/test_security.py:136` — Emoji in code: 🔒 - **[minor]** `scripts/test_security.py:140` — Emoji in code: 🔑 - **[minor]** `scripts/test_security.py:148` — Emoji in code: 📝 - **[minor]** `scripts/test_security.py:156` — Emoji in code: 📁 - **[minor]** `scripts/test_security.py:163` — Emoji in code: 💥 - **[minor]** `scripts/test_security.py:176` — Emoji in code: 🔐 - **[minor]** `scripts/churn-alert.ts:205` — Emoji in code: 📊 - **[minor]** `scripts/churn-alert.ts:238` — Emoji in code: 🔍 - **[minor]** `scripts/test_multi_app_paste.py:75` — Emoji in code: 🧪 - **[minor]** `scripts/test_multi_app_paste.py:92` — Emoji in code: 📋 - **[minor]** `scripts/prove_kill_switch.py:97` — Emoji in code: 🔌 - **[minor]** `scripts/prove_kill_switch.py:108` — Emoji in code: 📖 - **[minor]** `scripts/prove_kill_switch.py:119` — Emoji in code: 🔴 - **[minor]** `scripts/test_ui_crossplatform.py:42` — Emoji in code: 🖥 - **[minor]** `scripts/test_ui_crossplatform.py:46` — Emoji in code: 🪟 - **[minor]** `scripts/test_ui_crossplatform.py:60` — Emoji in code: 🎯 - **[minor]** `scripts/test_ui_crossplatform.py:96` — Emoji in code: 🎨 - **[minor]** `scripts/test_ui_crossplatform.py:126` — Emoji in code: 🔧 - **[minor]** `scripts/prove_cosmos_rw.py:92` — Emoji in code: 📖 - **[minor]** `scripts/prove_cosmos_rw.py:100` — Emoji in code: 🗑 - **[minor]** `scripts/prove_cosmos_rw.py:111` — Emoji in code: 🔬 - **[minor]** `scripts/test_accessibility.py:45` — Emoji in code: 📢 - **[minor]** `scripts/test_accessibility.py:57` — Emoji in code: 🎨 - **[minor]** `scripts/test_accessibility.py:80` — Emoji in code: 🎯 - **[minor]** `scripts/test_accessibility.py:92` — Emoji in code: 🪟 - **[minor]** `scripts/test_accessibility.py:102` — Emoji in code: 🔊 - **[minor]** `scripts/test_accessibility.py:113` — Emoji in code: 📏 - **[minor]** `assets/generate-store-assets.py:165` — Emoji in code: 📱 - **[minor]** `assets/generate-store-assets.py:581` — Emoji in code: 📸 - **[minor]** `assets/generate-store-assets.py:623` — Emoji in code: 🎨 - **[minor]** `assets/generate-store-assets.py:670` — Emoji in code: 💫 - **[minor]** `assets/generate-store-assets.py:731` — Emoji in code: 📁 ## `learning_multimodal_memory_agents` **Counts:** critical=0 · major=0 · minor=17 · total=17 - **[minor]** `backend/src/modules/brains/repository.ts:30` — any type: const decrypted = await getEncryptor().decrypt(doc.rolePrompt as any, { - **[minor]** `backend/src/modules/reflections/repository.ts:28` — any type: const decrypted = await enc.decrypt(val as any, { userId, context }); - **[minor]** `backend/src/modules/reflections/repository.ts:36` — any type: result.repeatedThemes = await encryptStringArray(result.repeatedThemes, uid, ' - **[minor]** `backend/src/modules/reflections/repository.ts:37` — any type: result.postponedItems = await encryptStringArray(result.postponedItems, uid, ' - **[minor]** `backend/src/modules/reflections/repository.ts:38` — any type: result.roleImbalanceSignals = await encryptStringArray(result.roleImbalanceSig - **[minor]** `backend/src/modules/reflections/repository.ts:39` — any type: result.suggestedAdjustments = await encryptStringArray(result.suggestedAdjustm - **[minor]** `backend/src/modules/reflections/repository.ts:61` — any type: const decrypted = await enc.decrypt(result.vsLastWeek!.summary as any, { use - **[minor]** `backend/src/modules/memory/repository.ts:42` — any type: const decrypted = await enc.decrypt(result.rawContent as any, ctx); - **[minor]** `backend/src/modules/memory/repository.ts:47` — any type: const decrypted = await enc.decrypt(result.triageResult.summary as any, { .. - **[minor]** `backend/src/modules/palace/repository.ts:59` — any type: const decrypted = await getEncryptor().decrypt(doc.content as any, { - **[minor]** `backend/src/modules/daily-briefs/repository.ts:29` — any type: result.priorityItems = encrypted as any; - **[minor]** `backend/src/modules/daily-briefs/repository.ts:34` — any type: result.brainSummaries = encrypted as any; - **[minor]** `backend/src/modules/daily-briefs/repository.ts:56` — any type: result.greeting = await enc.decrypt(result.greeting as any, ctx); - **[minor]** `backend/src/modules/daily-briefs/repository.ts:60` — any type: const decrypted = await enc.decrypt(result.priorityItems as any, { ...ctx, c - **[minor]** `backend/src/modules/daily-briefs/repository.ts:65` — any type: const decrypted = await enc.decrypt(result.brainSummaries as any, { ...ctx, - **[minor]** `backend/src/modules/daily-briefs/repository.ts:70` — any type: result.streakMessage = await enc.decrypt(result.streakMessage as any, { ...c - **[minor]** `backend/src/modules/daily-briefs/repository.ts:74` — any type: result.motivationalQuote = await enc.decrypt(result.motivationalQuote as any ## `learning_ai_clock` **Counts:** critical=0 · major=0 · minor=6 · total=6 - **[minor]** `backend/src/modules/shared-timers/repository.ts:31` — any type: const decrypted = await getEncryptor().decrypt(doc.description as any, { - **[minor]** `backend/src/modules/timers/repository.ts:32` — any type: const decrypted = await getEncryptor().decrypt(doc.description as any, { - **[minor]** `backend/src/modules/routines/repository.ts:49` — any type: const decrypted = await enc.decrypt(result.description as any, ctx); - **[minor]** `backend/src/modules/routines/repository.ts:56` — any type: const decrypted = await enc.decrypt(step.notes as any, { ...ctx, context - **[minor]** `backend/src/modules/webhooks/repository.ts:46` — any type: const decrypted = await enc.decrypt(result.secret as any, ctx); - **[minor]** `backend/src/modules/webhooks/repository.ts:51` — any type: const decrypted = await enc.decrypt(result.description as any, { ...ctx, con ## `learning_ai_fastgap` ✅ No violations found. ## `learning_ai_jarvis_jr` ✅ No violations found. ## `learning_ai_peakpulse` **Counts:** critical=0 · major=0 · minor=1 · total=1 - **[minor]** `backend/src/modules/peak-sessions/repository.ts:31` — any type: const decrypted = await getEncryptor().decrypt(doc.notes as any, { ## `learning_ai_notes` **Counts:** critical=0 · major=0 · minor=2 · total=2 - **[minor]** `web/src/app/(app)/workspaces/page.tsx:198` — any type: owner:any - **[minor]** `web/src/app/(app)/workspaces/page.tsx:199` — any type: visibility:any ## `learning_ai_flowmonk` **Counts:** critical=0 · major=0 · minor=2 · total=2 - **[minor]** `web/src/app/(app)/tasks/page.tsx:153` — any type: { value: '', label: 'Energy: any' }, - **[minor]** `backend/src/modules/tasks/repository.ts:28` — any type: const decrypted = await getEncryptor().decrypt(task.description as any, { ## `learning_ai_trails` ✅ No violations found. ## `learning_ai_local_memory_gpt` ✅ No violations found. ## `learning_ai_efforise` **Counts:** critical=0 · major=0 · minor=4 · total=4 - **[minor]** `client/src/components/ui/dialog.tsx:107` — any type: const isCurrentlyComposing = (e as any).isComposing || isComposing(); - **[minor]** `client/src/components/ui/textarea.tsx:24` — any type: const isComposing = (e.nativeEvent as any).isComposing || dialogCompositio - **[minor]** `client/src/components/ui/input.tsx:25` — any type: const isComposing = (e.nativeEvent as any).isComposing || dialogCompositio - **[minor]** `client/src/hooks/usePersistFn.ts:3` — any type: type noop = (...args: any[]) => any; ## `learning_ai_local_llms` ✅ No violations found. ## `learning_ai_talk2obsidian` ✅ No violations found. ## `learning_ai_smart_auth` ✅ No violations found. ## `learning_ai_auth_app` ✅ No violations found. ## `learning_ai_productivity_web` ✅ No violations found. ## `oss/learning_ai_claw-cowork` **Counts:** critical=0 · major=0 · minor=2 · total=2 - **[minor]** `crates/cowork-desktop/src/components/ChatView.tsx:543` — any type: path: (f as any).path || f.name, - **[minor]** `crates/cowork-desktop/src/components/ChatView.tsx:616` — any type: path: (f as any).path || f.name, ## `learning_ai_mac_tooling` ✅ No violations found. ## Ecosystem totals by rule | Rule | Total findings | |------|----------------| | `b7-emoji-in-code` | 53 | | `ts-any-type` | 35 | **Grand total: 88 findings across 19 repos.**