cuelo 0.10.83 → 0.10.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +31 -29
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/routes-manifest.json +14 -0
  8. package/.next/server/app/_global-error/page.js +3 -3
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +1 -1
  11. package/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  25. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  26. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/api/agent/[id]/account/route.js +1 -1
  29. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  30. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  31. package/.next/server/app/api/agent/[id]/route.js +1 -1
  32. package/.next/server/app/api/agent/new/route.js +1 -1
  33. package/.next/server/app/api/agent/running/route.js +1 -1
  34. package/.next/server/app/api/attachment-settings/route.js +1 -1
  35. package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
  36. package/.next/server/app/api/attachments/draft/route.js +1 -1
  37. package/.next/server/app/api/attachments/route.js +2 -2
  38. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  39. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  40. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  41. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  42. package/.next/server/app/api/auth/providers/route.js +1 -1
  43. package/.next/server/app/api/character-mode/route.js +2 -0
  44. package/.next/server/app/api/character-mode/route.js.nft.json +1 -0
  45. package/.next/server/app/api/character-mode/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/cwd/browse/route.js +1 -1
  47. package/.next/server/app/api/cwd/validate/route.js +1 -1
  48. package/.next/server/app/api/default-cwd/route.js +1 -1
  49. package/.next/server/app/api/display-settings/route.js +1 -1
  50. package/.next/server/app/api/document-text/route.js +2 -2
  51. package/.next/server/app/api/experiments/route.js +1 -1
  52. package/.next/server/app/api/file-index/route.js +1 -1
  53. package/.next/server/app/api/files/[...path]/route.js +1 -1
  54. package/.next/server/app/api/git/diff/route.js +2 -2
  55. package/.next/server/app/api/git/status/route.js +2 -2
  56. package/.next/server/app/api/github/projects/route.js +1 -1
  57. package/.next/server/app/api/gpt6/handles/route.js +1 -1
  58. package/.next/server/app/api/gpt6/reply/route.js +1 -1
  59. package/.next/server/app/api/gpt6/token/route.js +1 -1
  60. package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
  61. package/.next/server/app/api/home/route.js +1 -1
  62. package/.next/server/app/api/live/call/[callId]/route.js +1 -1
  63. package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
  64. package/.next/server/app/api/live/events/route.js +2 -2
  65. package/.next/server/app/api/live/events/route.js.nft.json +1 -1
  66. package/.next/server/app/api/live/interpret/cloud/events/route.js +2 -2
  67. package/.next/server/app/api/live/interpret/cloud/events/route.js.nft.json +1 -1
  68. package/.next/server/app/api/live/interpret/cloud/input/route.js +1 -1
  69. package/.next/server/app/api/live/interpret/cloud/input/route.js.nft.json +1 -1
  70. package/.next/server/app/api/live/interpret/cloud/route.js +1 -1
  71. package/.next/server/app/api/live/interpret/cloud/route.js.nft.json +1 -1
  72. package/.next/server/app/api/live/interpret/route.js +1 -1
  73. package/.next/server/app/api/live/interpret/route.js.nft.json +1 -1
  74. package/.next/server/app/api/live/offer/route.js +1 -1
  75. package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
  76. package/.next/server/app/api/live/voices/route.js +1 -1
  77. package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/route.js +2 -2
  79. package/.next/server/app/api/model-roles/route.js +1 -1
  80. package/.next/server/app/api/models/route.js +1 -1
  81. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  82. package/.next/server/app/api/models-config/discover/route.js +1 -1
  83. package/.next/server/app/api/models-config/route.js +2 -2
  84. package/.next/server/app/api/models-config/test/route.js +1 -1
  85. package/.next/server/app/api/office-characters/[...path]/route.js +2 -0
  86. package/.next/server/app/api/office-characters/[...path]/route.js.nft.json +1 -0
  87. package/.next/server/app/api/office-characters/[...path]/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/plugins/route.js +1 -1
  89. package/.next/server/app/api/project-docs/route.js +1 -1
  90. package/.next/server/app/api/project-trust/route.js +1 -1
  91. package/.next/server/app/api/projects/route.js +1 -1
  92. package/.next/server/app/api/runs/[runId]/prelude/route.js +1 -1
  93. package/.next/server/app/api/runs/[runId]/route.js +1 -1
  94. package/.next/server/app/api/runs/[runId]/turns/route.js +1 -1
  95. package/.next/server/app/api/runs/route.js +1 -1
  96. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  97. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  98. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  99. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  100. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  101. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  102. package/.next/server/app/api/sessions/route.js +1 -1
  103. package/.next/server/app/api/sessions/search/route.js +1 -1
  104. package/.next/server/app/api/settings/route.js +1 -1
  105. package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
  106. package/.next/server/app/api/skills/check/route.js +1 -1
  107. package/.next/server/app/api/skills/install/route.js +2 -2
  108. package/.next/server/app/api/skills/route.js +2 -2
  109. package/.next/server/app/api/skills/search/route.js +1 -1
  110. package/.next/server/app/api/skills/update/route.js +1 -1
  111. package/.next/server/app/api/subagents/eta/route.js +1 -1
  112. package/.next/server/app/api/theme/route.js +1 -1
  113. package/.next/server/app/api/tool-image/route.js +1 -1
  114. package/.next/server/app/api/update-maintenance/route.js +2 -2
  115. package/.next/server/app/api/updates/route.js +1 -1
  116. package/.next/server/app/api/web-access/recovery/route.js +1 -1
  117. package/.next/server/app/api/web-access/route.js +1 -1
  118. package/.next/server/app/api/web6/consults/route.js +1 -1
  119. package/.next/server/app/api/worktrees/route.js +1 -1
  120. package/.next/server/app/favicon.ico/route.js +1 -1
  121. package/.next/server/app/index.html +1 -1
  122. package/.next/server/app/index.rsc +4 -4
  123. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  124. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  125. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  126. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  127. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  128. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  129. package/.next/server/app/page.js +21 -21
  130. package/.next/server/app/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/recover/page.js +2 -2
  132. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  133. package/.next/server/app/recover.html +1 -1
  134. package/.next/server/app/recover.rsc +2 -2
  135. package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
  136. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  137. package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
  138. package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
  139. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  140. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  141. package/.next/server/app-paths-manifest.json +31 -29
  142. package/.next/server/chunks/{6775.js → 205.js} +2 -2
  143. package/.next/server/chunks/3379.js +1 -1
  144. package/.next/server/chunks/7738.js +1 -0
  145. package/.next/server/functions-config-manifest.json +2 -0
  146. package/.next/server/middleware-build-manifest.js +1 -1
  147. package/.next/server/pages/404.html +1 -1
  148. package/.next/server/pages/500.html +1 -1
  149. package/.next/server/server-reference-manifest.json +1 -1
  150. package/.next/static/chunks/app/_global-error/page-436da0332762a8e3.js +1 -0
  151. package/.next/static/chunks/app/api/agent/[id]/account/route-436da0332762a8e3.js +1 -0
  152. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-436da0332762a8e3.js +1 -0
  153. package/.next/static/chunks/app/api/agent/[id]/events/route-436da0332762a8e3.js +1 -0
  154. package/.next/static/chunks/app/api/agent/[id]/route-436da0332762a8e3.js +1 -0
  155. package/.next/static/chunks/app/api/agent/new/route-436da0332762a8e3.js +1 -0
  156. package/.next/static/chunks/app/api/agent/running/route-436da0332762a8e3.js +1 -0
  157. package/.next/static/chunks/app/api/attachment-settings/route-436da0332762a8e3.js +1 -0
  158. package/.next/static/chunks/app/api/attachments/[id]/transcription/route-436da0332762a8e3.js +1 -0
  159. package/.next/static/chunks/app/api/attachments/draft/route-436da0332762a8e3.js +1 -0
  160. package/.next/static/chunks/app/api/attachments/route-436da0332762a8e3.js +1 -0
  161. package/.next/static/chunks/app/api/auth/all-providers/route-436da0332762a8e3.js +1 -0
  162. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-436da0332762a8e3.js +1 -0
  163. package/.next/static/chunks/app/api/auth/login/[provider]/route-436da0332762a8e3.js +1 -0
  164. package/.next/static/chunks/app/api/auth/logout/[provider]/route-436da0332762a8e3.js +1 -0
  165. package/.next/static/chunks/app/api/auth/providers/route-436da0332762a8e3.js +1 -0
  166. package/.next/static/chunks/app/api/character-mode/route-436da0332762a8e3.js +1 -0
  167. package/.next/static/chunks/app/api/cwd/browse/route-436da0332762a8e3.js +1 -0
  168. package/.next/static/chunks/app/api/cwd/validate/route-436da0332762a8e3.js +1 -0
  169. package/.next/static/chunks/app/api/default-cwd/route-436da0332762a8e3.js +1 -0
  170. package/.next/static/chunks/app/api/display-settings/route-436da0332762a8e3.js +1 -0
  171. package/.next/static/chunks/app/api/document-text/route-436da0332762a8e3.js +1 -0
  172. package/.next/static/chunks/app/api/experiments/route-436da0332762a8e3.js +1 -0
  173. package/.next/static/chunks/app/api/file-index/route-436da0332762a8e3.js +1 -0
  174. package/.next/static/chunks/app/api/files/[...path]/route-436da0332762a8e3.js +1 -0
  175. package/.next/static/chunks/app/api/git/diff/route-436da0332762a8e3.js +1 -0
  176. package/.next/static/chunks/app/api/git/status/route-436da0332762a8e3.js +1 -0
  177. package/.next/static/chunks/app/api/github/projects/route-436da0332762a8e3.js +1 -0
  178. package/.next/static/chunks/app/api/gpt6/handles/route-436da0332762a8e3.js +1 -0
  179. package/.next/static/chunks/app/api/gpt6/reply/route-436da0332762a8e3.js +1 -0
  180. package/.next/static/chunks/app/api/gpt6/token/route-436da0332762a8e3.js +1 -0
  181. package/.next/static/chunks/app/api/gpt6/web6-session/route-436da0332762a8e3.js +1 -0
  182. package/.next/static/chunks/app/api/home/route-436da0332762a8e3.js +1 -0
  183. package/.next/static/chunks/app/api/live/call/[callId]/route-436da0332762a8e3.js +1 -0
  184. package/.next/static/chunks/app/api/live/events/route-436da0332762a8e3.js +1 -0
  185. package/.next/static/chunks/app/api/live/interpret/cloud/events/route-436da0332762a8e3.js +1 -0
  186. package/.next/static/chunks/app/api/live/interpret/cloud/input/route-436da0332762a8e3.js +1 -0
  187. package/.next/static/chunks/app/api/live/interpret/cloud/route-436da0332762a8e3.js +1 -0
  188. package/.next/static/chunks/app/api/live/interpret/route-436da0332762a8e3.js +1 -0
  189. package/.next/static/chunks/app/api/live/offer/route-436da0332762a8e3.js +1 -0
  190. package/.next/static/chunks/app/api/live/voices/route-436da0332762a8e3.js +1 -0
  191. package/.next/static/chunks/app/api/mcp/route-436da0332762a8e3.js +1 -0
  192. package/.next/static/chunks/app/api/model-roles/route-436da0332762a8e3.js +1 -0
  193. package/.next/static/chunks/app/api/models/route-436da0332762a8e3.js +1 -0
  194. package/.next/static/chunks/app/api/models-config/catalog/route-436da0332762a8e3.js +1 -0
  195. package/.next/static/chunks/app/api/models-config/discover/route-436da0332762a8e3.js +1 -0
  196. package/.next/static/chunks/app/api/models-config/route-436da0332762a8e3.js +1 -0
  197. package/.next/static/chunks/app/api/models-config/test/route-436da0332762a8e3.js +1 -0
  198. package/.next/static/chunks/app/api/office-characters/[...path]/route-436da0332762a8e3.js +1 -0
  199. package/.next/static/chunks/app/api/plugins/route-436da0332762a8e3.js +1 -0
  200. package/.next/static/chunks/app/api/project-docs/route-436da0332762a8e3.js +1 -0
  201. package/.next/static/chunks/app/api/project-trust/route-436da0332762a8e3.js +1 -0
  202. package/.next/static/chunks/app/api/projects/route-436da0332762a8e3.js +1 -0
  203. package/.next/static/chunks/app/api/runs/[runId]/prelude/route-436da0332762a8e3.js +1 -0
  204. package/.next/static/chunks/app/api/runs/[runId]/route-436da0332762a8e3.js +1 -0
  205. package/.next/static/chunks/app/api/runs/[runId]/turns/route-436da0332762a8e3.js +1 -0
  206. package/.next/static/chunks/app/api/runs/route-436da0332762a8e3.js +1 -0
  207. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-436da0332762a8e3.js +1 -0
  208. package/.next/static/chunks/app/api/sessions/[id]/context/route-436da0332762a8e3.js +1 -0
  209. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-436da0332762a8e3.js +1 -0
  210. package/.next/static/chunks/app/api/sessions/[id]/export/route-436da0332762a8e3.js +1 -0
  211. package/.next/static/chunks/app/api/sessions/[id]/route-436da0332762a8e3.js +1 -0
  212. package/.next/static/chunks/app/api/sessions/[id]/state/route-436da0332762a8e3.js +1 -0
  213. package/.next/static/chunks/app/api/sessions/route-436da0332762a8e3.js +1 -0
  214. package/.next/static/chunks/app/api/sessions/search/route-436da0332762a8e3.js +1 -0
  215. package/.next/static/chunks/app/api/settings/route-436da0332762a8e3.js +1 -0
  216. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-436da0332762a8e3.js +1 -0
  217. package/.next/static/chunks/app/api/skills/check/route-436da0332762a8e3.js +1 -0
  218. package/.next/static/chunks/app/api/skills/install/route-436da0332762a8e3.js +1 -0
  219. package/.next/static/chunks/app/api/skills/route-436da0332762a8e3.js +1 -0
  220. package/.next/static/chunks/app/api/skills/search/route-436da0332762a8e3.js +1 -0
  221. package/.next/static/chunks/app/api/skills/update/route-436da0332762a8e3.js +1 -0
  222. package/.next/static/chunks/app/api/subagents/eta/route-436da0332762a8e3.js +1 -0
  223. package/.next/static/chunks/app/api/theme/route-436da0332762a8e3.js +1 -0
  224. package/.next/static/chunks/app/api/tool-image/route-436da0332762a8e3.js +1 -0
  225. package/.next/static/chunks/app/api/update-maintenance/route-436da0332762a8e3.js +1 -0
  226. package/.next/static/chunks/app/api/updates/route-436da0332762a8e3.js +1 -0
  227. package/.next/static/chunks/app/api/web-access/recovery/route-436da0332762a8e3.js +1 -0
  228. package/.next/static/chunks/app/api/web-access/route-436da0332762a8e3.js +1 -0
  229. package/.next/static/chunks/app/api/web6/consults/route-436da0332762a8e3.js +1 -0
  230. package/.next/static/chunks/app/api/worktrees/route-436da0332762a8e3.js +1 -0
  231. package/.next/static/chunks/app/{layout-4e22adaca20b3c57.js → layout-9732ddae4dc9638c.js} +1 -1
  232. package/.next/static/chunks/app/manifest.webmanifest/route-436da0332762a8e3.js +1 -0
  233. package/.next/static/chunks/app/page-8e9c8449e2f53ae8.js +75 -0
  234. package/.next/static/chunks/next/dist/client/components/builtin/app-error-436da0332762a8e3.js +1 -0
  235. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-436da0332762a8e3.js +1 -0
  236. package/.next/static/chunks/next/dist/client/components/builtin/not-found-436da0332762a8e3.js +1 -0
  237. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-436da0332762a8e3.js +1 -0
  238. package/.next/static/y4k_8nU4FYWcP7nTP4oCU/_buildManifest.js +1 -0
  239. package/.next/trace +108 -108
  240. package/.next/trace-build +1 -1
  241. package/.next/types/app/api/character-mode/route.ts +351 -0
  242. package/.next/types/app/api/office-characters/[...path]/route.ts +351 -0
  243. package/.next/types/routes.d.ts +3 -1
  244. package/.next/types/validator.ts +18 -0
  245. package/README.md +1 -1
  246. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  247. package/Tools/OMP_Global_Config/agent/extensions/character-voice.ts +217 -22
  248. package/Tools/OMP_Global_Config/agent/extensions/slop-gate/review.ts +1 -1
  249. package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +2 -1
  250. package/Tools/OMP_Global_Config/agent/skills/humanizer/LICENSE.txt +21 -0
  251. package/Tools/OMP_Global_Config/agent/skills/humanizer/SKILL.md +357 -0
  252. package/Tools/OMP_Global_Config/agent/skills/humanizer/UPSTREAM.json +37 -0
  253. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-1.md +17 -0
  254. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-2.md +27 -0
  255. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-3.md +60 -0
  256. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-4.md +50 -0
  257. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-1.md +15 -0
  258. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-2.md +27 -0
  259. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-3.md +29 -0
  260. package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-4.md +23 -0
  261. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/pos-patterns.md +132 -0
  262. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/punctuation-patterns.md +353 -0
  263. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/spacing-patterns.md +132 -0
  264. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/structure-patterns.md +186 -0
  265. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/translation-ese-patterns.md +641 -0
  266. package/Tools/OMP_Global_Config/agent/skills/humanizer/references/vocabulary-patterns.md +511 -0
  267. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/LICENSE +202 -0
  268. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/README.md +113 -0
  269. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/SKILL.md +121 -0
  270. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/detection.md +411 -0
  271. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/fixes.md +368 -0
  272. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/taxonomy.md +343 -0
  273. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/scripts/rules.ru.mjs +23 -0
  274. package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/scripts/scan.mjs +508 -0
  275. package/Tools/OMP_Global_Config/agent/skills/stop-slop/LICENSE +21 -0
  276. package/Tools/OMP_Global_Config/agent/skills/stop-slop/README.md +62 -0
  277. package/Tools/OMP_Global_Config/agent/skills/stop-slop/SKILL.md +68 -0
  278. package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/examples.md +59 -0
  279. package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/phrases.md +128 -0
  280. package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/structures.md +134 -0
  281. package/package.json +4 -1
  282. package/.next/static/chunks/app/_global-error/page-60d4ba1619c3b27a.js +0 -1
  283. package/.next/static/chunks/app/api/agent/[id]/account/route-60d4ba1619c3b27a.js +0 -1
  284. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-60d4ba1619c3b27a.js +0 -1
  285. package/.next/static/chunks/app/api/agent/[id]/events/route-60d4ba1619c3b27a.js +0 -1
  286. package/.next/static/chunks/app/api/agent/[id]/route-60d4ba1619c3b27a.js +0 -1
  287. package/.next/static/chunks/app/api/agent/new/route-60d4ba1619c3b27a.js +0 -1
  288. package/.next/static/chunks/app/api/agent/running/route-60d4ba1619c3b27a.js +0 -1
  289. package/.next/static/chunks/app/api/attachment-settings/route-60d4ba1619c3b27a.js +0 -1
  290. package/.next/static/chunks/app/api/attachments/[id]/transcription/route-60d4ba1619c3b27a.js +0 -1
  291. package/.next/static/chunks/app/api/attachments/draft/route-60d4ba1619c3b27a.js +0 -1
  292. package/.next/static/chunks/app/api/attachments/route-60d4ba1619c3b27a.js +0 -1
  293. package/.next/static/chunks/app/api/auth/all-providers/route-60d4ba1619c3b27a.js +0 -1
  294. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-60d4ba1619c3b27a.js +0 -1
  295. package/.next/static/chunks/app/api/auth/login/[provider]/route-60d4ba1619c3b27a.js +0 -1
  296. package/.next/static/chunks/app/api/auth/logout/[provider]/route-60d4ba1619c3b27a.js +0 -1
  297. package/.next/static/chunks/app/api/auth/providers/route-60d4ba1619c3b27a.js +0 -1
  298. package/.next/static/chunks/app/api/cwd/browse/route-60d4ba1619c3b27a.js +0 -1
  299. package/.next/static/chunks/app/api/cwd/validate/route-60d4ba1619c3b27a.js +0 -1
  300. package/.next/static/chunks/app/api/default-cwd/route-60d4ba1619c3b27a.js +0 -1
  301. package/.next/static/chunks/app/api/display-settings/route-60d4ba1619c3b27a.js +0 -1
  302. package/.next/static/chunks/app/api/document-text/route-60d4ba1619c3b27a.js +0 -1
  303. package/.next/static/chunks/app/api/experiments/route-60d4ba1619c3b27a.js +0 -1
  304. package/.next/static/chunks/app/api/file-index/route-60d4ba1619c3b27a.js +0 -1
  305. package/.next/static/chunks/app/api/files/[...path]/route-60d4ba1619c3b27a.js +0 -1
  306. package/.next/static/chunks/app/api/git/diff/route-60d4ba1619c3b27a.js +0 -1
  307. package/.next/static/chunks/app/api/git/status/route-60d4ba1619c3b27a.js +0 -1
  308. package/.next/static/chunks/app/api/github/projects/route-60d4ba1619c3b27a.js +0 -1
  309. package/.next/static/chunks/app/api/gpt6/handles/route-60d4ba1619c3b27a.js +0 -1
  310. package/.next/static/chunks/app/api/gpt6/reply/route-60d4ba1619c3b27a.js +0 -1
  311. package/.next/static/chunks/app/api/gpt6/token/route-60d4ba1619c3b27a.js +0 -1
  312. package/.next/static/chunks/app/api/gpt6/web6-session/route-60d4ba1619c3b27a.js +0 -1
  313. package/.next/static/chunks/app/api/home/route-60d4ba1619c3b27a.js +0 -1
  314. package/.next/static/chunks/app/api/live/call/[callId]/route-60d4ba1619c3b27a.js +0 -1
  315. package/.next/static/chunks/app/api/live/events/route-60d4ba1619c3b27a.js +0 -1
  316. package/.next/static/chunks/app/api/live/interpret/cloud/events/route-60d4ba1619c3b27a.js +0 -1
  317. package/.next/static/chunks/app/api/live/interpret/cloud/input/route-60d4ba1619c3b27a.js +0 -1
  318. package/.next/static/chunks/app/api/live/interpret/cloud/route-60d4ba1619c3b27a.js +0 -1
  319. package/.next/static/chunks/app/api/live/interpret/route-60d4ba1619c3b27a.js +0 -1
  320. package/.next/static/chunks/app/api/live/offer/route-60d4ba1619c3b27a.js +0 -1
  321. package/.next/static/chunks/app/api/live/voices/route-60d4ba1619c3b27a.js +0 -1
  322. package/.next/static/chunks/app/api/mcp/route-60d4ba1619c3b27a.js +0 -1
  323. package/.next/static/chunks/app/api/model-roles/route-60d4ba1619c3b27a.js +0 -1
  324. package/.next/static/chunks/app/api/models/route-60d4ba1619c3b27a.js +0 -1
  325. package/.next/static/chunks/app/api/models-config/catalog/route-60d4ba1619c3b27a.js +0 -1
  326. package/.next/static/chunks/app/api/models-config/discover/route-60d4ba1619c3b27a.js +0 -1
  327. package/.next/static/chunks/app/api/models-config/route-60d4ba1619c3b27a.js +0 -1
  328. package/.next/static/chunks/app/api/models-config/test/route-60d4ba1619c3b27a.js +0 -1
  329. package/.next/static/chunks/app/api/plugins/route-60d4ba1619c3b27a.js +0 -1
  330. package/.next/static/chunks/app/api/project-docs/route-60d4ba1619c3b27a.js +0 -1
  331. package/.next/static/chunks/app/api/project-trust/route-60d4ba1619c3b27a.js +0 -1
  332. package/.next/static/chunks/app/api/projects/route-60d4ba1619c3b27a.js +0 -1
  333. package/.next/static/chunks/app/api/runs/[runId]/prelude/route-60d4ba1619c3b27a.js +0 -1
  334. package/.next/static/chunks/app/api/runs/[runId]/route-60d4ba1619c3b27a.js +0 -1
  335. package/.next/static/chunks/app/api/runs/[runId]/turns/route-60d4ba1619c3b27a.js +0 -1
  336. package/.next/static/chunks/app/api/runs/route-60d4ba1619c3b27a.js +0 -1
  337. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-60d4ba1619c3b27a.js +0 -1
  338. package/.next/static/chunks/app/api/sessions/[id]/context/route-60d4ba1619c3b27a.js +0 -1
  339. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-60d4ba1619c3b27a.js +0 -1
  340. package/.next/static/chunks/app/api/sessions/[id]/export/route-60d4ba1619c3b27a.js +0 -1
  341. package/.next/static/chunks/app/api/sessions/[id]/route-60d4ba1619c3b27a.js +0 -1
  342. package/.next/static/chunks/app/api/sessions/[id]/state/route-60d4ba1619c3b27a.js +0 -1
  343. package/.next/static/chunks/app/api/sessions/route-60d4ba1619c3b27a.js +0 -1
  344. package/.next/static/chunks/app/api/sessions/search/route-60d4ba1619c3b27a.js +0 -1
  345. package/.next/static/chunks/app/api/settings/route-60d4ba1619c3b27a.js +0 -1
  346. package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-60d4ba1619c3b27a.js +0 -1
  347. package/.next/static/chunks/app/api/skills/check/route-60d4ba1619c3b27a.js +0 -1
  348. package/.next/static/chunks/app/api/skills/install/route-60d4ba1619c3b27a.js +0 -1
  349. package/.next/static/chunks/app/api/skills/route-60d4ba1619c3b27a.js +0 -1
  350. package/.next/static/chunks/app/api/skills/search/route-60d4ba1619c3b27a.js +0 -1
  351. package/.next/static/chunks/app/api/skills/update/route-60d4ba1619c3b27a.js +0 -1
  352. package/.next/static/chunks/app/api/subagents/eta/route-60d4ba1619c3b27a.js +0 -1
  353. package/.next/static/chunks/app/api/theme/route-60d4ba1619c3b27a.js +0 -1
  354. package/.next/static/chunks/app/api/tool-image/route-60d4ba1619c3b27a.js +0 -1
  355. package/.next/static/chunks/app/api/update-maintenance/route-60d4ba1619c3b27a.js +0 -1
  356. package/.next/static/chunks/app/api/updates/route-60d4ba1619c3b27a.js +0 -1
  357. package/.next/static/chunks/app/api/web-access/recovery/route-60d4ba1619c3b27a.js +0 -1
  358. package/.next/static/chunks/app/api/web-access/route-60d4ba1619c3b27a.js +0 -1
  359. package/.next/static/chunks/app/api/web6/consults/route-60d4ba1619c3b27a.js +0 -1
  360. package/.next/static/chunks/app/api/worktrees/route-60d4ba1619c3b27a.js +0 -1
  361. package/.next/static/chunks/app/manifest.webmanifest/route-60d4ba1619c3b27a.js +0 -1
  362. package/.next/static/chunks/app/page-b61cdb3a88126c55.js +0 -75
  363. package/.next/static/chunks/next/dist/client/components/builtin/app-error-60d4ba1619c3b27a.js +0 -1
  364. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-60d4ba1619c3b27a.js +0 -1
  365. package/.next/static/chunks/next/dist/client/components/builtin/not-found-60d4ba1619c3b27a.js +0 -1
  366. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60d4ba1619c3b27a.js +0 -1
  367. package/.next/static/vdQU0PJ0EqoAWyaBUHRpd/_buildManifest.js +0 -1
  368. /package/.next/static/{vdQU0PJ0EqoAWyaBUHRpd → y4k_8nU4FYWcP7nTP4oCU}/_ssgManifest.js +0 -0
@@ -0,0 +1,411 @@
1
+ # Detection patterns
2
+
3
+ Concrete signals for each tell. `scripts/scan.mjs` encodes these; this file is
4
+ the human reference and the place to widen patterns for a specific stack.
5
+
6
+ **Scan scope.** Frontend source only: `.html .css .scss .tsx .jsx .ts .js .vue
7
+ .svelte .astro .md .mdx .php .twig` plus `tailwind.config.*`. Skip
8
+ `node_modules dist build .git out .next .astro coverage vendor` and anything
9
+ `*.min.*` or a lockfile.
10
+
11
+ **Every match is a lead, not a verdict.** Open the file and confirm. The false
12
+ positives noted below are the usual ways a pattern lies.
13
+
14
+ **Suppression.** Once the user has defended a hit, pin the decision so re-scans
15
+ stay quiet: `--only=` / `--skip=` filter by tell id, `--exclude=` drops paths,
16
+ and comment directives suppress in source — `deslop-ignore` (this line),
17
+ `deslop-ignore-next-line`, `deslop-ignore-file`, each optionally followed by
18
+ tell ids (`/* deslop-ignore-next-line 06 */`). Prefer id-scoped directives so
19
+ other tells still surface on those lines.
20
+
21
+ **Extension.** `--rules=extra.mjs` loads additional tells (same shape as the
22
+ core ones; string patterns compile case-insensitive). Use it for
23
+ language-specific copy rules — English patterns like tell 14's don't fire on
24
+ non-English slop. `scripts/rules.ru.mjs` is a shipped Russian example. Remember
25
+ JavaScript's `\b` is ASCII-only: it never matches next to Cyrillic and most
26
+ non-Latin scripts, so write plain substrings instead.
27
+
28
+ ---
29
+
30
+ ### 01 Indigo→violet gradient
31
+ ```
32
+ rg -n -i 'from-(indigo|violet|purple|fuchsia)-[0-9]+ ?.*to-(purple|violet|fuchsia|pink)-[0-9]+'
33
+ rg -n -i '(linear-gradient|bg-gradient)[^;]*(#6366f1|#8b5cf6|#a855f7|#7c3aed)'
34
+ rg -n -i 'shadow-(purple|violet|indigo)-[0-9]+/[0-9]+'
35
+ ```
36
+ *False positives:* a brand that genuinely is purple (check the logo / design
37
+ tokens); a one-off illustration. Slop is the *combination* — purple gradient +
38
+ glow + pill button + "AI-powered" eyebrow.
39
+
40
+ ### 02 Gradient headline text
41
+ ```
42
+ rg -n 'bg-clip-text.*text-transparent|text-transparent.*bg-clip-text'
43
+ rg -n '(-webkit-)?background-clip:\s*text'
44
+ rg -n -i '-webkit-text-fill-color:\s*transparent'
45
+ ```
46
+ *False positives:* a logo wordmark; a single deliberate hero treatment. Slop is
47
+ gradient text used as the default heading style.
48
+
49
+ ### 03 Warm "cozy" palette
50
+ ```
51
+ rg -n -i '\b(amber|orange|stone)-(50|100|200|300)\b'
52
+ rg -n -i 'bg-\[#(fdf6ec|fef3e2|faf3e8|fff7ed|fdf4e3)\]'
53
+ rg -n -i 'text-amber-[0-9]+|border-amber-[0-9]+'
54
+ rg -n -i 'text-(gray|slate|zinc|neutral)-(400|500)[^"]{0,60}bg-(amber|stone|orange|rose|blue|indigo|green)-'
55
+ ```
56
+ *False positives:* a food/coffee/craft brand where warm is the identity. Slop is
57
+ warm-as-default with no brand reason. The last pattern is the sibling tell:
58
+ default gray text dropped onto a tinted surface — the gray was never toned to
59
+ the background; use a darker shade of the surface hue instead.
60
+
61
+ ### 04 Default semantic palette
62
+ ```
63
+ rg -n -i 'bg-(blue|indigo)-50|bg-amber-50|bg-green-50|bg-emerald-50|bg-red-50'
64
+ rg -n -i 'text-(blue|indigo)-(600|700).*text-(green|emerald)-(600|700)' # multiple stock hues near each other
65
+ rg -n -i 'info.*blue|warning.*amber|success.*green|error.*red'
66
+ ```
67
+ *Confirm:* three or four of the stock `-50 / -600` semantic pairs used together
68
+ (info=blue, tip=amber, success=green, error=red), unrelated to the brand. A
69
+ single, deliberate status colour is fine.
70
+
71
+ ### 05 One-hue status box
72
+ ```
73
+ rg -n -i 'border-(red|amber|yellow|green|blue)-[0-9]+[^"]*text-\1-[0-9]+'
74
+ rg -n -i 'bg-(red|amber|yellow|green)-[0-9]+/(5|10|15|20)'
75
+ rg -n -i '(error|warning|success)[^\n]{0,40}(red|amber|yellow|green)-[0-9]+'
76
+ ```
77
+ *Confirm:* one box where border, text, and a `/10` background are all the same
78
+ hue — the whole alert is one colour at three opacities. A single muted accent on
79
+ a neutral surface is fine.
80
+
81
+ ### 06 Gradients as atmosphere
82
+ ```
83
+ rg -n -i 'radial-gradient|bg-\[radial-gradient'
84
+ rg -n -i 'linear-gradient[^;]*(to bottom|180deg|to top)' # top-lighter surface fill
85
+ rg -n -i 'bg-gradient-to-(b|t)\b[\s\S]{0,40}from-'
86
+ rg -n -i 'repeating-(linear|radial)-gradient'
87
+ rg -n -i 'bg-gradient-to-(br|tr|bl|tl)\b[\s\S]{0,40}from-(emerald|green|teal|cyan|purple|violet|fuchsia)-\d+/(5|10|15|20|25)' # per-card accent-hue wash
88
+ rg -n -i 'box-shadow:[^;]*(#(6366f1|8b5cf6|a855f7|22d3ee|06b6d4)|rgba?\(139|rgba?\(168)' # colored glow accents
89
+ ```
90
+ *Confirm:* a page-wide radial glow behind everything, or card surfaces filled
91
+ with a top-to-bottom gradient where a flat colour would do; bento cards each
92
+ washed in a tint of their own accent (green card → green gradient, purple →
93
+ purple); repeating-gradient stripes as surface decoration; colored box-shadow
94
+ glows as dark-mode accents. A gradient that points at something specific is a
95
+ choice, not slop.
96
+
97
+ ### 07 Serif-italic on one word
98
+ Hard to grep purely; look for a serif font family or `<em>/italic` applied
99
+ *inside* an otherwise-sans heading.
100
+ ```
101
+ rg -n -i 'font-serif|font-family:\s*(georgia|"?playfair|"?lora|"?cormorant)'
102
+ rg -n '<em>|italic' -g '*.{tsx,jsx,vue,svelte,astro,html}'
103
+ ```
104
+ *Confirm:* the italic/serif span sits within an `<h1>/<h2>` whose base font is
105
+ sans.
106
+
107
+ ### 08 Serif where sans belongs
108
+ ```
109
+ rg -n -i 'font-family:\s*[^;]*(playfair|cormorant|lora|"?dm serif|"?libre baskerville)'
110
+ rg -n -i "fontFamily.*(Playfair|Cormorant|Lora)"
111
+ rg -n -i 'font-serif[^"]{0,60}(italic|text-[4-9]xl)|(italic|text-[4-9]xl)[^"]{0,60}font-serif'
112
+ ```
113
+ *False positives:* an editorial/publishing product that wants serif. Slop is
114
+ display serif as UI/body on a tool or dashboard — or the oversized italic-serif
115
+ hero headline, now the universal AI-startup landing page uniform. Set it roman
116
+ or use a non-serif display face; a genuinely editorial register may keep it.
117
+
118
+ ### 09 Decorative strikes & highlights
119
+ ```
120
+ rg -n -i 'line-through' -g '*.{css,scss,tsx,jsx,vue,svelte,astro,html}'
121
+ rg -n '<(mark|s|u|del|strike)[\s>]' -g '*.{md,mdx,html,tsx,jsx,vue,svelte,astro}'
122
+ rg -n -i 'text-decoration:\s*(line-through|underline)'
123
+ ```
124
+ *Confirm:* a strike over text that isn't being deleted, an underline that isn't
125
+ a link, a highlighter swipe under a heading — decoration, not annotation. Real
126
+ edits, links, and annotations are fine.
127
+
128
+ ### 10 The kicker above every heading
129
+ ```
130
+ rg -n -i 'uppercase[\s\S]{0,40}tracking-(wide|wider|widest)|tracking-(wide|wider|widest)[\s\S]{0,40}uppercase'
131
+ rg -n -i '\b(eyebrow|kicker|overline)\b' -g '*.{css,scss,tsx,jsx,vue,svelte,astro,html}'
132
+ rg -n -i 'text-transform:\s*uppercase[\s\S]{0,80}letter-spacing:\s*0?\.[0-9]+em'
133
+ ```
134
+ *Confirm:* the same tracked-caps micro-label above the hero *and* every section
135
+ heading, saying what the heading already says (FEATURES over features). A
136
+ kicker that adds a real dimension — a category, a date, a number in a genuine
137
+ sequence — is an editorial device doing its job.
138
+
139
+ ### 11 Full-sentence display headline
140
+ ```
141
+ rg -n 'text-(5|6|7|8|9)xl' -g '*.{tsx,jsx,vue,svelte,astro,html}'
142
+ rg -n -i 'tracking-tighter?\b[\s\S]{0,40}font-(extrabold|black)|font-(extrabold|black)[\s\S]{0,40}tracking-tighter?\b'
143
+ rg -n -i 'font-size:\s*(clamp\([^)]*[4-9](rem|\.[0-9]+rem)|[5-9][0-9]px|[4-9]rem)'
144
+ ```
145
+ *Confirm:* a full sentence (10+ words) at display size, usually extrabold with
146
+ crushed tracking, wrapping to 3+ lines. Two or three words at display size is
147
+ what display sizes are for. Crushed tracking on its own is the same tell:
148
+ `letter-spacing` past the point where characters keep their shapes
149
+ (`rg -n -i 'letter-spacing:\s*-0?\.0[5-9]'`).
150
+
151
+ ### 12 Flat type hierarchy
152
+ ```
153
+ rg -n '<h[12][^>]*text-(sm|base|lg)\b'
154
+ rg -n -i 'font-size:\s*1[4-8]px' -g '*.css' # then count distinct sizes
155
+ ```
156
+ Mostly a visual judgment: open the page and count the sizes actually in use.
157
+ *Confirm:* headings barely bigger than body (steps under ~1.25×), hierarchy
158
+ carried by gray shades instead of size. A deliberately quiet, single-size
159
+ editorial layout with strong spacing is a choice; a dashboard where the page
160
+ title and a table cell match is not.
161
+
162
+ ### 13 Highlighted keywords
163
+ ```
164
+ rg -n '<mark' -g '*.{md,mdx,html,tsx,jsx,vue,svelte,astro}'
165
+ rg -n 'text-(primary|indigo|purple|violet)-[0-9]+' -g '*.{tsx,jsx,vue,svelte,astro,html}'
166
+ rg -n -i 'font-semibold|font-bold' -g '*.{md,mdx}'
167
+ ```
168
+ *Confirm:* multiple colored/`font-semibold` spans inside one paragraph of body
169
+ copy. One accented phrase is fine.
170
+
171
+ ### 14 AI copywriting voice
172
+ ```
173
+ rg -n -i "not just .{1,40}\bit'?s\b|say goodbye to|meet your new|supercharge|unlock the power|in seconds, not"
174
+ rg -n -i '\b(blazing[- ]fast|effortless|seamless|game[- ]changer|next[- ]level)\b'
175
+ rg -n -i '\b(growth|security|process|privacy|productivity|compliance|feature|innovation) theater\b'
176
+ ```
177
+ Also flag paragraphs built from three-word sentences ("Fast. Beautiful. Yours."),
178
+ em-dash triplets, and "we killed the X theater" framing — dismissing something
179
+ as *theater* is a recurring generated-copy tic; say plainly what the thing does
180
+ or doesn't do. *False positives:* a genuine quote; a doc that discusses these
181
+ phrases (like this one).
182
+
183
+ ### 15 Emoji everywhere
184
+ ```
185
+ rg -n '[\x{1F000}-\x{1FAFF}\x{2600}-\x{27BF}\x{2190}-\x{21FF}\x{2B00}-\x{2BFF}]' -g '*.{md,mdx,html,tsx,jsx,vue,svelte,astro}'
186
+ rg -n -i '(🚀|✨|⚡|🔒|🎉).{0,40}(<|$)' # emoji leading a heading/button/bullet
187
+ ```
188
+ *False positives:* emoji inside a code sample being documented; an emoji picker
189
+ feature; user-generated content. Slop is an emoji stuck on *every* heading,
190
+ button, and bullet in your chrome.
191
+
192
+ ### 16 Glowing status dot
193
+ ```
194
+ rg -n -i 'animate-ping|animate-pulse'
195
+ rg -n -i 'shadow-(green|emerald|lime)-[0-9]+/[0-9]+|box-shadow:[^;]*(0 0|glow)'
196
+ rg -n -i '(ready|online|live)[\s\S]{0,40}(●|rounded-full)'
197
+ ```
198
+ *Confirm:* a status dot with a pulsing halo or coloured glow — usually saturated
199
+ green "● Ready / Online." A small flat dot is fine.
200
+
201
+ ### 17 Rounded card, colored left border
202
+ ```
203
+ rg -n -i 'border-l-4 .*rounded|rounded.* border-l-4'
204
+ rg -n -i 'border-left:\s*[0-9]+px .*;.*border-radius|admonition|callout|\bnote-box\b'
205
+ rg -n -i 'border-2\b[\s\S]{0,40}border-(indigo|purple|violet|blue|pink|green)-[0-9]+'
206
+ ```
207
+ *Confirm:* stacked callouts used as decoration on plain list items, not one
208
+ semantic aside. The last pattern is the sibling: a thick accent ring around a
209
+ rounded card to make one tier "pop" — the border fights the rounded corners;
210
+ remove the ring or carry the emphasis another way.
211
+
212
+ ### 18 Rounded-square icon tiles
213
+ ```
214
+ rg -n -i 'rounded-(lg|xl|2xl) bg-(indigo|purple|blue|green|amber|pink)-(50|100)'
215
+ rg -n -i '(lucide|heroicons|@tabler/icons|react-icons)'
216
+ rg -n -i '\b[wh]-(20|24|28|32)\b[\s\S]{0,40}(<svg|Icon)'
217
+ rg -n '<svg[^>]*(width|height)="(9[6-9]|[1-9][0-9]{2})"'
218
+ ```
219
+ *Confirm:* one icon-in-a-tile per feature, in a grid, icons unrelated to
220
+ content — or the same reflex at another size, a giant decorative line icon
221
+ parked in a card as filler.
222
+
223
+ ### 19 Max radius + glassmorphism
224
+ ```
225
+ rg -n 'rounded-full' -g '*.{tsx,jsx,vue,svelte,astro,html}'
226
+ rg -n -i 'backdrop-blur|backdrop-filter:\s*blur|bg-white/(5|10|20|30)|bg-black/(5|10|20|30)'
227
+ rg -n -i 'border-radius:\s*(9999px|50%|2rem|24px)'
228
+ ```
229
+ *Confirm:* `rounded-full` on cards/inputs (not just avatars/pills); blur used as
230
+ the default surface; radius values that don't agree with each other.
231
+
232
+ ### 20 Oversized drop shadow
233
+ ```
234
+ rg -n -i 'box-shadow:[^;{}]*\b([6-9][0-9]|[0-9]{3,})px' # a 60px+ blur/spread
235
+ rg -n -i 'shadow-\[[^\]]*\b([6-9][0-9]|[0-9]{3,})px' # tailwind arbitrary shadow
236
+ rg -n -i 'filter:[^;{}]*drop-shadow\([^)]*\b([6-9][0-9]|[0-9]{3,})px'
237
+ rg -n -i '\bborder\b[\s\S]{0,40}shadow-(xl|2xl)|shadow-(xl|2xl)[\s\S]{0,40}\bborder\b'
238
+ ```
239
+ *Confirm:* the shadow's render range is far bigger than the element casting it —
240
+ a small card/icon under a huge, faint, barely-offset blur (a fog, not a drop).
241
+ A genuinely large surface (a modal, a full hero) with a proportionate shadow is
242
+ fine; so is one small, tight elevation shadow. The last pattern is the "ghost
243
+ card" variant: a hairline border *and* a wide diffuse shadow on the same card —
244
+ two separators doing one job; commit to an edge or an elevation.
245
+
246
+ ### 21 Corners that don't nest
247
+ Hard to grep with certainty; flag the same radius token on nested containers.
248
+ ```
249
+ rg -n -i 'rounded-(xl|2xl|3xl)' -g '*.{tsx,jsx,vue,svelte,astro,html}' # then check for nesting
250
+ rg -n -i 'border-radius:\s*(1rem|1\.5rem|24px|32px)'
251
+ ```
252
+ *Confirm:* an outer box and an inner box carrying the *same* big radius, so the
253
+ corners don't sit concentric. Inner radius should be outer minus the padding; a
254
+ single flat radius scale that already nests correctly is fine.
255
+
256
+ ### 22 Border that dies at the corner
257
+ The break is visual (a stroke on the straight edges, none along the arcs);
258
+ grep for the code that produces it — a radius and a border on different boxes.
259
+ ```
260
+ rg -n -i 'rounded-(lg|xl|2xl|3xl)[^"]{0,60}overflow-(hidden|clip)|overflow-(hidden|clip)[^"]{0,60}rounded-(lg|xl|2xl|3xl)' # clipping wrapper: check the child for a border
261
+ rg -n -i 'clip-path:\s*inset\([^)]*round'
262
+ rg -n -i 'border-[trbl]\b[^"]{0,60}rounded-(lg|xl|2xl|3xl)|rounded-(lg|xl|2xl|3xl)[^"]{0,60}border-[trbl]\b'
263
+ ```
264
+ *Confirm:* a `rounded overflow-hidden` wrapper whose child carries the 1px
265
+ border/dividers — the square ring is erased at every corner by the clip; a
266
+ `clip-path: inset(… round …)` cutting a border off; or a single-side border
267
+ stopping mid-arc on a rounded box. A border set on the rounded element itself
268
+ wraps the arc and is fine; so are straight dividers between square-cornered
269
+ regions.
270
+
271
+ ### 23 Badge & pill spam
272
+ ```
273
+ rg -n -i 'rounded-full .*(bg-(indigo|purple|green|amber|pink)-(50|100|200))'
274
+ rg -n -i '>(\s*[✨🔥🎉🚀]\s*)?(new|beta|hot|popular|pro|coming soon)\s*<'
275
+ ```
276
+ *Confirm:* several decorative pills in chrome. A real version tag is fine.
277
+
278
+ ### 24 AI-drawn SVG icons
279
+ Grep finds inline SVG; the judgment is visual.
280
+ ```
281
+ rg -n '<svg' -g '*.{tsx,jsx,vue,svelte,astro,html,svg}'
282
+ rg -n -i '<circle[^>]*r="[0-9]' # dot eyes / blob body built from primitives
283
+ rg -n -i '(mascot|blob|logo)\.svg'
284
+ ```
285
+ *Confirm:* an inline `<svg>` that's a blob-with-dot-eyes or a cartoon creature
286
+ built from primitive shapes, shipped as the product's mark. A drawn icon set or
287
+ a real designed logo is fine.
288
+
289
+ ### 25 Icon in a tint of itself
290
+ ```
291
+ rg -n -i 'bg-(indigo|blue|green|amber|red|purple|pink)-[0-9]+/(5|10|15|20)[\s\S]{0,60}text-\1-'
292
+ rg -n -i 'text-(indigo|blue|green|amber|red|purple|pink)-[0-9]+[\s\S]{0,60}bg-\1-[0-9]+/(5|10|15|20)'
293
+ rg -n -i 'rounded-(md|lg|xl)\s+bg-(indigo|blue|green|amber|red)-[0-9]+/(5|10|15|20)'
294
+ ```
295
+ *Confirm:* an icon tile whose translucent background is the same hue as the icon
296
+ inside it — every glyph wrapped in a soft colored square. A deliberate opaque
297
+ button surface is fine.
298
+
299
+ ### 26 The springy hover
300
+ ```
301
+ rg -n -i 'hover:(scale-1[01][0-9]|-translate-y-)'
302
+ rg -n '\btransition-all\b'
303
+ rg -n -i 'cubic-bezier\([^)]*,\s*1\.[2-9][0-9]*' # overshoot easing = bounce
304
+ rg -n -i 'animate-bounce|transition:[^;]*\b(width|height|margin|padding)\b'
305
+ ```
306
+ *Confirm:* scale/lift/bounce on hover across cards, buttons, and images, and
307
+ `transition-all` as the default. A drawer that springs as it physically slides
308
+ in is motion doing a job; a card that jumps when the cursor grazes it is not.
309
+ Also flag animating layout properties (width/height/margin/padding) — jank on
310
+ top of the decoration.
311
+
312
+ ### 27 The wobbling spinner
313
+ ```
314
+ rg -n 'translate\(-50%, ?-50%\)' -g '*.{css,tsx,jsx,vue,svelte,astro,html}'
315
+ rg -n '@keyframes +[a-zA-Z-]*(spin|rotate|load)'
316
+ rg -n -i 'animate-spin'
317
+ rg -n 'transform-origin: *[0-9]'
318
+ ```
319
+ *Confirm:* run the page and watch one full revolution — the arc's centre must
320
+ not trace a circle. Code tells: a spin keyframe that sets `transform:
321
+ rotate(…)` on an element centered with `transform: translate(-50%, -50%)` (the
322
+ keyframe replaces the whole property, so the element snaps off-centre and
323
+ orbits); a `transform-origin` that isn't the element's centre; `animate-spin`
324
+ on an emoji or on an SVG whose artwork isn't centred in its viewBox. A
325
+ centered element whose keyframe re-states the translate (`translate(-50%,
326
+ -50%) rotate(360deg)`) is fine.
327
+
328
+ ### 28 The all-caps card grid
329
+ ```
330
+ rg -n -i 'grid-cols-3'
331
+ rg -n -i 'uppercase[\s\S]{0,30}(text-xs|tracking-wide|tracking-wider)|text-transform:\s*uppercase'
332
+ rg -n -i 'everything you need|why (you.?ll love|choose|teams)'
333
+ ```
334
+ *Confirm:* an ALL-CAPS micro-label + number/icon repeated across interchangeable
335
+ cards — a feature grid or a stat-card grid — points unrelated.
336
+
337
+ ### 29 The invented stat row
338
+ ```
339
+ rg -n -i '\b[0-9]+[km]\+'
340
+ rg -n '99\.9%|24/7'
341
+ rg -n -i '(10k|50k|99\.9|24/7)[\s\S]{0,60}(developers|users|teams|uptime|support|countries)'
342
+ ```
343
+ *Confirm:* three big round numbers in a row — a `Nk+`, a `99.9%`, a `24/7` —
344
+ with tiny uppercase labels, in the hero or above the fold. A real, odd,
345
+ sourced figure ("1,847 CI runs yesterday") is the fix, not a hit.
346
+
347
+ ### 30 The 01 / 02 / 03 section markers
348
+ ```
349
+ rg -n '["'\''>`]0[1-9]["'\''<`]' -g '*.{tsx,jsx,vue,svelte,astro,html}'
350
+ rg -n -i 'text-(7|8|9)xl[\s\S]{0,50}(text-(gray|slate|zinc|neutral)-(100|200)|opacity-(5|10|20))'
351
+ rg -n -i 'step[- ](one|two|three)'
352
+ ```
353
+ *Confirm:* giant faint ordinals stapled to *unordered* marketing sections. A
354
+ genuinely ordered sequence — install steps, a changelog, an indexed catalogue —
355
+ has earned its numbers.
356
+
357
+ ### 31 Cards inside cards
358
+ Grep gives leads; the judgment is in the rendered DOM.
359
+ ```
360
+ rg -n '<(Card|Panel|Box)[^>]*>\s*<\1' -g '*.{tsx,jsx,vue,svelte}'
361
+ rg -n -i 'rounded[^"]*border[^"]*"[\s\S]{0,120}rounded[^"]*border' -g '*.{tsx,jsx,vue,svelte,astro,html}'
362
+ ```
363
+ *Confirm:* three or more nested surfaces each with its own border/radius/shadow
364
+ and shrinking padding. A child that is genuinely a separate object (a preview,
365
+ an embed) may keep its own surface.
366
+
367
+ ### 32 One gap everywhere
368
+ ```
369
+ rg -n '(space-y-4|gap-4)[^"'\''`]{0,80}(space-y-4|gap-4)' # the token twice on one line
370
+ rg -n -c 'space-y-4|gap-4' # per-file counts; high = lead
371
+ ```
372
+ Mostly a visual judgment: the grep only finds the token, the tell is the
373
+ *absence of any other value*. Count the distinct spacing values in a component;
374
+ one value for both within-group and between-group distances is the tell.
375
+ *Confirm:* a heading equidistant from its own body and from the previous
376
+ section. A deliberate uniform grid (a photo wall, a calendar) is a choice.
377
+
378
+ ### 33 Inter everywhere (evolved)
379
+ ```
380
+ rg -n -i 'fonts\.googleapis\.com/css2\?family=(Inter|Space\+Grotesk|Manrope|Plus\+Jakarta)'
381
+ rg -n -i 'font-family:\s*[^;]*("?Inter"?|"?Space Grotesk"?|"?Manrope"?|"?Plus Jakarta Sans"?|"?Geist"?)'
382
+ rg -n 'from ["'\'']next/font/google' -g '*.{ts,tsx,js,jsx}'
383
+ ```
384
+ *Confirm:* judgment tell — the faces themselves are good. Slop is the stock
385
+ pairing (Space Grotesk display + Inter body) or Inter-by-default with no sign
386
+ anyone compared alternatives. A team that tried others and landed on Inter made
387
+ a choice; check for any evidence of one (a comment, a brand doc, a deliberate
388
+ fallback stack).
389
+
390
+ ### 34 The tasteful terminal (evolved)
391
+ ```
392
+ rg -n -i 'font-mono' -g '*.{tsx,jsx,vue,svelte,astro,html}'
393
+ rg -n -i 'font-family:\s*[^;]*(mono|jetbrains|fira code|ibm plex mono|geist mono)'
394
+ rg -n '[╔╗╚╝║═▓▒░]|\$ [a-z]' -g '*.{tsx,jsx,vue,svelte,astro,html,md}'
395
+ ```
396
+ *Confirm:* monospace on non-code UI chrome; ASCII banners as decoration;
397
+ near-black with a single warm accent. This one needs judgment most — it's a
398
+ current default, so weigh whether the terminal metaphor actually serves the
399
+ product.
400
+
401
+ ### 35 The editorial dashboard (evolved)
402
+ ```
403
+ rg -n -i '>\s*Good (morning|afternoon|evening),' -g '*.{tsx,jsx,vue,svelte,astro,html}'
404
+ rg -n -i 'font-serif' -g '*.{tsx,jsx,vue,svelte,astro,html}'
405
+ rg -n -i 'font-family:\s*[^;]*(fraunces|canela|tiempos|didot|freight|reckless|newsreader)'
406
+ rg -n -i 'oldstyle-nums|font-variant-numeric:\s*oldstyle'
407
+ ```
408
+ *Confirm:* the serif is on app chrome (a dashboard h1, stat-card numerals),
409
+ not on genuinely editorial content; the greeting-as-headline sits on an
410
+ operational surface; the cream + tracked-caps kicker + deep accent kit came
411
+ as a set. A docs site or essay page in a text serif is not this tell.