codeply-cli 0.5.6 → 0.6.0

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 (429) hide show
  1. package/LICENSE +21 -21
  2. package/THIRD_PARTY_NOTICES.md +65 -65
  3. package/bin/codeply.js +8 -3
  4. package/lib/agent.mjs +2596 -2268
  5. package/lib/ai.js +135 -27
  6. package/lib/ai.mjs +6 -6
  7. package/lib/apply-patch.js +217 -217
  8. package/lib/arity-table.json +138 -138
  9. package/lib/arity.js +70 -70
  10. package/lib/auth.mjs +6 -6
  11. package/lib/autopilot.js +84 -0
  12. package/lib/bot-mail.js +46 -0
  13. package/lib/bots.js +142 -15
  14. package/lib/brain.js +914 -0
  15. package/lib/call-assist.js +120 -0
  16. package/lib/chatgpt.js +282 -282
  17. package/lib/cloud-browser.mjs +143 -143
  18. package/lib/cloud.mjs +1396 -1320
  19. package/lib/commands.js +103 -103
  20. package/lib/computer.js +136 -0
  21. package/lib/design-library/assemble-artifact.mjs +21 -21
  22. package/lib/design-library/cleanup.mjs +45 -45
  23. package/lib/design-library/index.json +22379 -22379
  24. package/lib/design-library/make-table-data.mjs +39 -39
  25. package/lib/design-tools.mjs +173 -0
  26. package/lib/diagnostics.js +192 -192
  27. package/lib/dsh-acp.mjs +444 -0
  28. package/lib/edit-engine.js +364 -364
  29. package/lib/github-agent.mjs +326 -326
  30. package/lib/handoff.mjs +245 -0
  31. package/lib/history.js +78 -75
  32. package/lib/life-sources.js +319 -0
  33. package/lib/life-store.js +356 -0
  34. package/lib/life-triggers.js +286 -0
  35. package/lib/life.js +487 -0
  36. package/lib/mail-watch.js +3 -3
  37. package/lib/mcp.js +258 -258
  38. package/lib/native-tools.mjs +17 -5
  39. package/lib/oauth-connectors.js +76 -21
  40. package/lib/permissions.js +109 -109
  41. package/lib/plugins.js +356 -353
  42. package/lib/reach.js +67 -67
  43. package/lib/render-md.mjs +647 -617
  44. package/lib/screen.js +77 -0
  45. package/lib/server.mjs +458 -457
  46. package/lib/session-db.js +220 -220
  47. package/lib/share.js +208 -168
  48. package/lib/skills.js +4 -1
  49. package/lib/snapshot.js +146 -146
  50. package/lib/subagents.js +4 -2
  51. package/lib/telemetry.js +105 -105
  52. package/lib/terminal-hints.js +154 -154
  53. package/lib/textarea.mjs +264 -258
  54. package/lib/tools.mjs +326 -40
  55. package/lib/tui.mjs +1459 -1086
  56. package/lib/typecheck-worker.js +147 -147
  57. package/lib/web-tools.js +209 -209
  58. package/package.json +1 -1
  59. package/skills/SOURCE.md +58 -58
  60. package/skills/accessibility/SKILL.md +147 -147
  61. package/skills/agent-architecture-audit/SKILL.md +257 -257
  62. package/skills/agent-eval/SKILL.md +147 -147
  63. package/skills/agent-harness-construction/SKILL.md +74 -74
  64. package/skills/agent-introspection-debugging/SKILL.md +154 -154
  65. package/skills/agent-payment-x402/SKILL.md +225 -225
  66. package/skills/agent-self-evaluation/SKILL.md +182 -182
  67. package/skills/agent-self-evaluation/references/evaluation-criteria.md +71 -71
  68. package/skills/agent-self-evaluation/references/hook-integration.md +64 -64
  69. package/skills/agent-sort/SKILL.md +216 -216
  70. package/skills/agentic-engineering/SKILL.md +64 -64
  71. package/skills/agentic-os/SKILL.md +388 -388
  72. package/skills/ai-first-engineering/SKILL.md +52 -52
  73. package/skills/ai-regression-testing/SKILL.md +386 -386
  74. package/skills/android-clean-architecture/SKILL.md +340 -340
  75. package/skills/angular-developer/SKILL.md +155 -155
  76. package/skills/angular-developer/references/angular-animations.md +160 -160
  77. package/skills/angular-developer/references/angular-aria.md +410 -410
  78. package/skills/angular-developer/references/cli.md +86 -86
  79. package/skills/angular-developer/references/component-harnesses.md +59 -59
  80. package/skills/angular-developer/references/component-styling.md +91 -91
  81. package/skills/angular-developer/references/components.md +117 -117
  82. package/skills/angular-developer/references/creating-services.md +97 -97
  83. package/skills/angular-developer/references/data-resolvers.md +69 -69
  84. package/skills/angular-developer/references/define-routes.md +67 -67
  85. package/skills/angular-developer/references/defining-providers.md +72 -72
  86. package/skills/angular-developer/references/di-fundamentals.md +120 -120
  87. package/skills/angular-developer/references/e2e-testing.md +56 -56
  88. package/skills/angular-developer/references/effects.md +83 -83
  89. package/skills/angular-developer/references/hierarchical-injectors.md +43 -43
  90. package/skills/angular-developer/references/host-elements.md +80 -80
  91. package/skills/angular-developer/references/injection-context.md +63 -63
  92. package/skills/angular-developer/references/inputs.md +101 -101
  93. package/skills/angular-developer/references/linked-signal.md +59 -59
  94. package/skills/angular-developer/references/loading-strategies.md +61 -61
  95. package/skills/angular-developer/references/mcp.md +108 -108
  96. package/skills/angular-developer/references/navigate-to-routes.md +69 -69
  97. package/skills/angular-developer/references/outputs.md +86 -86
  98. package/skills/angular-developer/references/reactive-forms.md +122 -122
  99. package/skills/angular-developer/references/rendering-strategies.md +44 -44
  100. package/skills/angular-developer/references/resource.md +77 -77
  101. package/skills/angular-developer/references/route-animations.md +56 -56
  102. package/skills/angular-developer/references/route-guards.md +52 -52
  103. package/skills/angular-developer/references/router-lifecycle.md +45 -45
  104. package/skills/angular-developer/references/router-testing.md +87 -87
  105. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -68
  106. package/skills/angular-developer/references/signal-forms.md +795 -795
  107. package/skills/angular-developer/references/signals-overview.md +94 -94
  108. package/skills/angular-developer/references/tailwind-css.md +69 -69
  109. package/skills/angular-developer/references/template-driven-forms.md +114 -114
  110. package/skills/angular-developer/references/testing-fundamentals.md +65 -65
  111. package/skills/api-connector-builder/SKILL.md +121 -121
  112. package/skills/api-design/SKILL.md +524 -524
  113. package/skills/architecture-decision-records/SKILL.md +180 -180
  114. package/skills/article-writing/SKILL.md +80 -80
  115. package/skills/automation-audit-ops/SKILL.md +143 -143
  116. package/skills/autonomous-agent-harness/SKILL.md +274 -274
  117. package/skills/autonomous-loops/SKILL.md +611 -611
  118. package/skills/backend-patterns/SKILL.md +562 -562
  119. package/skills/benchmark/SKILL.md +95 -95
  120. package/skills/benchmark-methodology/SKILL.md +191 -191
  121. package/skills/benchmark-optimization-loop/SKILL.md +71 -71
  122. package/skills/blender-motion-state-inspection/SKILL.md +165 -165
  123. package/skills/blueprint/SKILL.md +106 -106
  124. package/skills/brand-discovery/SKILL.md +145 -145
  125. package/skills/brand-discovery/references/10_purpose-why.md +40 -40
  126. package/skills/brand-discovery/references/20_positioning.md +44 -44
  127. package/skills/brand-discovery/references/30_audience-niche.md +52 -52
  128. package/skills/brand-discovery/references/40_personality-archetype.md +57 -57
  129. package/skills/brand-discovery/references/50_voice-tone.md +59 -59
  130. package/skills/brand-discovery/references/60_narrative-story.md +50 -50
  131. package/skills/brand-discovery/references/70_founder-tension.md +49 -49
  132. package/skills/brand-discovery/references/90_SYNTHESIS.md +133 -133
  133. package/skills/brand-voice/SKILL.md +98 -98
  134. package/skills/brand-voice/references/voice-profile-schema.md +55 -55
  135. package/skills/browser-qa/SKILL.md +105 -105
  136. package/skills/bun-runtime/SKILL.md +85 -85
  137. package/skills/canary-watch/SKILL.md +108 -108
  138. package/skills/carrier-relationship-management/SKILL.md +212 -212
  139. package/skills/cisco-ios-patterns/SKILL.md +164 -164
  140. package/skills/ck/SKILL.md +148 -148
  141. package/skills/claude-devfleet/SKILL.md +112 -112
  142. package/skills/click-path-audit/SKILL.md +245 -245
  143. package/skills/clickhouse-io/SKILL.md +445 -445
  144. package/skills/code-tour/SKILL.md +254 -254
  145. package/skills/codebase-onboarding/SKILL.md +234 -234
  146. package/skills/codehealth-mcp/SKILL.md +167 -167
  147. package/skills/codeply-taste/LICENSE +21 -0
  148. package/skills/codeply-taste/SKILL.md +100 -0
  149. package/skills/codeply-taste/SOURCE.md +10 -0
  150. package/skills/codeply-taste/assets/base.css +100 -0
  151. package/skills/codeply-taste/assets/base.js +37 -0
  152. package/skills/codeply-taste/library/directions.json +1078 -0
  153. package/skills/codeply-taste/library/heroes.json +894 -0
  154. package/skills/codeply-taste/library/motions.json +57 -0
  155. package/skills/codeply-taste/library/palettes.json +1485 -0
  156. package/skills/codeply-taste/library/photos.json +7240 -0
  157. package/skills/codeply-taste/library/sections.json +4136 -0
  158. package/skills/codeply-taste/library/sites.json +7274 -0
  159. package/skills/codeply-taste/library/type.json +2024 -0
  160. package/skills/codeply-taste/references/colour.md +141 -0
  161. package/skills/codeply-taste/references/copy.md +177 -0
  162. package/skills/codeply-taste/references/critique.md +171 -0
  163. package/skills/codeply-taste/references/imagery.md +377 -0
  164. package/skills/codeply-taste/references/layout.md +178 -0
  165. package/skills/codeply-taste/references/motion.md +292 -0
  166. package/skills/codeply-taste/references/research.md +306 -0
  167. package/skills/codeply-taste/references/tells.md +115 -0
  168. package/skills/codeply-taste/references/type.md +170 -0
  169. package/skills/codeply-taste/scripts/assets.mjs +865 -0
  170. package/skills/codeply-taste/scripts/draw.mjs +525 -0
  171. package/skills/codeply-taste/scripts/inspect.mjs +205 -0
  172. package/skills/codeply-taste/scripts/lib/cdp.mjs +205 -0
  173. package/skills/codeply-taste/scripts/lib/probe.mjs +569 -0
  174. package/skills/codeply-taste/scripts/lib/rules.mjs +137 -0
  175. package/skills/codeply-taste/scripts/lint.mjs +108 -0
  176. package/skills/coding-standards/SKILL.md +551 -551
  177. package/skills/competitive-platform-analysis/SKILL.md +214 -214
  178. package/skills/competitive-report-structure/SKILL.md +162 -162
  179. package/skills/compose-multiplatform-patterns/SKILL.md +300 -300
  180. package/skills/config-gc/SKILL.md +120 -120
  181. package/skills/configure-ecc/SKILL.md +385 -385
  182. package/skills/connections-optimizer/SKILL.md +190 -190
  183. package/skills/content-engine/SKILL.md +132 -132
  184. package/skills/content-hash-cache-pattern/SKILL.md +162 -162
  185. package/skills/context-budget/SKILL.md +136 -136
  186. package/skills/continuous-agent-loop/SKILL.md +46 -46
  187. package/skills/continuous-learning/SKILL.md +132 -132
  188. package/skills/continuous-learning-v2/SKILL.md +361 -361
  189. package/skills/contract-first/SKILL.md +287 -287
  190. package/skills/cost-aware-llm-pipeline/SKILL.md +184 -184
  191. package/skills/cost-tracking/SKILL.md +97 -97
  192. package/skills/council/SKILL.md +204 -204
  193. package/skills/cpp-coding-standards/SKILL.md +724 -724
  194. package/skills/cpp-testing/SKILL.md +325 -325
  195. package/skills/crosspost/SKILL.md +112 -112
  196. package/skills/csharp-testing/SKILL.md +322 -322
  197. package/skills/customer-billing-ops/SKILL.md +141 -141
  198. package/skills/customs-trade-compliance/SKILL.md +263 -263
  199. package/skills/dart-flutter-patterns/SKILL.md +564 -564
  200. package/skills/dashboard-builder/SKILL.md +109 -109
  201. package/skills/data-scraper-agent/SKILL.md +765 -765
  202. package/skills/data-throughput-accelerator/SKILL.md +74 -74
  203. package/skills/database-migrations/SKILL.md +430 -430
  204. package/skills/deep-research/SKILL.md +160 -160
  205. package/skills/defi-amm-security/SKILL.md +167 -167
  206. package/skills/delivery-gate/SKILL.md +126 -126
  207. package/skills/deployment-patterns/SKILL.md +428 -428
  208. package/skills/design-system/SKILL.md +83 -83
  209. package/skills/django-celery/SKILL.md +458 -458
  210. package/skills/django-patterns/SKILL.md +735 -735
  211. package/skills/django-security/SKILL.md +644 -644
  212. package/skills/django-tdd/SKILL.md +730 -730
  213. package/skills/django-verification/SKILL.md +470 -470
  214. package/skills/dmux-workflows/SKILL.md +192 -192
  215. package/skills/docker-patterns/SKILL.md +365 -365
  216. package/skills/documentation-lookup/SKILL.md +91 -91
  217. package/skills/dotnet-patterns/SKILL.md +322 -322
  218. package/skills/dynamic-workflow-mode/SKILL.md +124 -124
  219. package/skills/e2e-testing/SKILL.md +327 -327
  220. package/skills/ecc-guide/SKILL.md +190 -190
  221. package/skills/ecc-recipes/SKILL.md +149 -149
  222. package/skills/ecc-tools-cost-audit/SKILL.md +161 -161
  223. package/skills/email-ops/SKILL.md +122 -122
  224. package/skills/energy-procurement/SKILL.md +228 -228
  225. package/skills/enterprise-agent-ops/SKILL.md +51 -51
  226. package/skills/error-handling/SKILL.md +377 -377
  227. package/skills/eval-harness/SKILL.md +271 -271
  228. package/skills/evm-token-decimals/SKILL.md +131 -131
  229. package/skills/exa-search/SKILL.md +108 -108
  230. package/skills/fal-ai-media/SKILL.md +289 -289
  231. package/skills/fastapi-patterns/SKILL.md +514 -514
  232. package/skills/finance-billing-ops/SKILL.md +128 -128
  233. package/skills/flox-environments/SKILL.md +497 -497
  234. package/skills/flutter-dart-code-review/SKILL.md +436 -436
  235. package/skills/foundation-models-on-device/SKILL.md +243 -243
  236. package/skills/frontend-a11y/SKILL.md +446 -446
  237. package/skills/frontend-design-direction/SKILL.md +93 -93
  238. package/skills/frontend-patterns/SKILL.md +657 -657
  239. package/skills/frontend-slides/SKILL.md +185 -185
  240. package/skills/fsharp-testing/SKILL.md +281 -281
  241. package/skills/gan-style-harness/SKILL.md +279 -279
  242. package/skills/gateguard/SKILL.md +133 -133
  243. package/skills/generating-python-installer/SKILL.md +820 -820
  244. package/skills/git-workflow/SKILL.md +716 -716
  245. package/skills/github-ops/SKILL.md +145 -145
  246. package/skills/golang-patterns/SKILL.md +676 -676
  247. package/skills/golang-testing/SKILL.md +721 -721
  248. package/skills/google-workspace-ops/SKILL.md +96 -96
  249. package/skills/growth-log/SKILL.md +128 -128
  250. package/skills/healthcare-cdss-patterns/SKILL.md +246 -246
  251. package/skills/healthcare-emr-patterns/SKILL.md +160 -160
  252. package/skills/healthcare-eval-harness/SKILL.md +208 -208
  253. package/skills/healthcare-phi-compliance/SKILL.md +146 -146
  254. package/skills/hermes-imports/SKILL.md +89 -89
  255. package/skills/hexagonal-architecture/SKILL.md +277 -277
  256. package/skills/hipaa-compliance/SKILL.md +79 -79
  257. package/skills/homelab-network-readiness/SKILL.md +170 -170
  258. package/skills/homelab-network-setup/SKILL.md +130 -130
  259. package/skills/homelab-pihole-dns/SKILL.md +275 -275
  260. package/skills/homelab-vlan-segmentation/SKILL.md +312 -312
  261. package/skills/homelab-wireguard-vpn/SKILL.md +306 -306
  262. package/skills/hookify-rules/SKILL.md +128 -128
  263. package/skills/inherit-legacy-style/SKILL.md +157 -157
  264. package/skills/intent-driven-development/SKILL.md +360 -360
  265. package/skills/inventory-demand-planning/SKILL.md +247 -247
  266. package/skills/investor-materials/SKILL.md +97 -97
  267. package/skills/investor-outreach/SKILL.md +92 -92
  268. package/skills/ios-icon-gen/SKILL.md +158 -158
  269. package/skills/iterative-retrieval/SKILL.md +212 -212
  270. package/skills/ito-basket-compare/SKILL.md +64 -64
  271. package/skills/ito-compute/SKILL.md +129 -129
  272. package/skills/ito-data-atlas-agent/SKILL.md +64 -64
  273. package/skills/ito-market-intelligence/SKILL.md +61 -61
  274. package/skills/ito-trade-planner/SKILL.md +68 -68
  275. package/skills/java-coding-standards/SKILL.md +384 -384
  276. package/skills/jira-integration/SKILL.md +303 -303
  277. package/skills/jpa-patterns/SKILL.md +152 -152
  278. package/skills/knowledge-ops/SKILL.md +155 -155
  279. package/skills/kotlin-coroutines-flows/SKILL.md +285 -285
  280. package/skills/kotlin-exposed-patterns/SKILL.md +720 -720
  281. package/skills/kotlin-ktor-patterns/SKILL.md +690 -690
  282. package/skills/kotlin-patterns/SKILL.md +712 -712
  283. package/skills/kotlin-testing/SKILL.md +825 -825
  284. package/skills/kubernetes-patterns/SKILL.md +756 -756
  285. package/skills/laravel-patterns/SKILL.md +416 -416
  286. package/skills/laravel-plugin-discovery/SKILL.md +230 -230
  287. package/skills/laravel-security/SKILL.md +948 -948
  288. package/skills/laravel-tdd/SKILL.md +675 -675
  289. package/skills/laravel-verification/SKILL.md +180 -180
  290. package/skills/latency-critical-systems/SKILL.md +75 -75
  291. package/skills/lead-intelligence/SKILL.md +322 -322
  292. package/skills/liquid-glass-design/SKILL.md +279 -279
  293. package/skills/llm-trading-agent-security/SKILL.md +147 -147
  294. package/skills/logistics-exception-management/SKILL.md +222 -222
  295. package/skills/loop-design-check/SKILL.md +143 -143
  296. package/skills/mailtrap-email-integration/SKILL.md +77 -77
  297. package/skills/make-interfaces-feel-better/SKILL.md +152 -152
  298. package/skills/manim-video/SKILL.md +90 -90
  299. package/skills/market-research/SKILL.md +76 -76
  300. package/skills/marketing-campaign/SKILL.md +114 -114
  301. package/skills/mcp-server-patterns/SKILL.md +70 -70
  302. package/skills/messages-ops/SKILL.md +105 -105
  303. package/skills/ml-adoption-playbook/SKILL.md +57 -57
  304. package/skills/mle-workflow/SKILL.md +348 -348
  305. package/skills/motion-advanced/SKILL.md +596 -596
  306. package/skills/motion-foundations/SKILL.md +299 -299
  307. package/skills/motion-patterns/SKILL.md +434 -434
  308. package/skills/motion-ui/SKILL.md +576 -576
  309. package/skills/mysql-patterns/SKILL.md +413 -413
  310. package/skills/nanoclaw-repl/SKILL.md +34 -34
  311. package/skills/nestjs-patterns/SKILL.md +231 -231
  312. package/skills/netmiko-ssh-automation/SKILL.md +174 -174
  313. package/skills/network-bgp-diagnostics/SKILL.md +168 -168
  314. package/skills/network-config-validation/SKILL.md +211 -211
  315. package/skills/network-interface-health/SKILL.md +153 -153
  316. package/skills/nextjs-turbopack/SKILL.md +58 -58
  317. package/skills/nodejs-keccak256/SKILL.md +103 -103
  318. package/skills/nutrient-document-processing/SKILL.md +168 -168
  319. package/skills/nuxt4-patterns/SKILL.md +101 -101
  320. package/skills/openclaw-persona-forge/SKILL.md +289 -289
  321. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -124
  322. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -53
  323. package/skills/openclaw-persona-forge/references/error-handling.md +53 -53
  324. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -48
  325. package/skills/openclaw-persona-forge/references/naming-system.md +39 -39
  326. package/skills/openclaw-persona-forge/references/output-template.md +166 -166
  327. package/skills/opensource-pipeline/SKILL.md +256 -256
  328. package/skills/orch-add-feature/SKILL.md +45 -45
  329. package/skills/orch-build-mvp/SKILL.md +49 -49
  330. package/skills/orch-change-feature/SKILL.md +43 -43
  331. package/skills/orch-fix-defect/SKILL.md +43 -43
  332. package/skills/orch-pipeline/SKILL.md +121 -121
  333. package/skills/orch-refine-code/SKILL.md +44 -44
  334. package/skills/parallel-execution-optimizer/SKILL.md +74 -74
  335. package/skills/perl-patterns/SKILL.md +505 -505
  336. package/skills/perl-security/SKILL.md +504 -504
  337. package/skills/perl-testing/SKILL.md +476 -476
  338. package/skills/plan-canvas/SKILL.md +153 -153
  339. package/skills/plan-orchestrate/SKILL.md +263 -263
  340. package/skills/plankton-code-quality/SKILL.md +237 -237
  341. package/skills/postgres-patterns/SKILL.md +148 -148
  342. package/skills/prediction-market-oracle-research/SKILL.md +64 -64
  343. package/skills/prediction-market-risk-review/SKILL.md +61 -61
  344. package/skills/premium-web-design/SKILL.md +154 -154
  345. package/skills/prisma-patterns/SKILL.md +401 -401
  346. package/skills/product-capability/SKILL.md +142 -142
  347. package/skills/product-lens/SKILL.md +93 -93
  348. package/skills/production-audit/SKILL.md +207 -207
  349. package/skills/production-scheduling/SKILL.md +238 -238
  350. package/skills/project-flow-ops/SKILL.md +112 -112
  351. package/skills/prompt-optimizer/SKILL.md +398 -398
  352. package/skills/python-patterns/SKILL.md +751 -751
  353. package/skills/python-testing/SKILL.md +817 -817
  354. package/skills/pytorch-patterns/SKILL.md +397 -397
  355. package/skills/quality-nonconformance/SKILL.md +260 -260
  356. package/skills/quarkus-patterns/SKILL.md +723 -723
  357. package/skills/quarkus-security/SKILL.md +468 -468
  358. package/skills/quarkus-tdd/SKILL.md +812 -812
  359. package/skills/quarkus-verification/SKILL.md +480 -480
  360. package/skills/ralphinho-rfc-pipeline/SKILL.md +68 -68
  361. package/skills/react-native-patterns/SKILL.md +326 -326
  362. package/skills/react-patterns/SKILL.md +342 -342
  363. package/skills/react-performance/SKILL.md +575 -575
  364. package/skills/react-testing/SKILL.md +424 -424
  365. package/skills/recsys-pipeline-architect/SKILL.md +115 -115
  366. package/skills/recursive-decision-ledger/SKILL.md +81 -81
  367. package/skills/redis-patterns/SKILL.md +404 -404
  368. package/skills/regex-vs-llm-structured-text/SKILL.md +221 -221
  369. package/skills/remotion-video-creation/SKILL.md +43 -43
  370. package/skills/repo-scan/SKILL.md +79 -79
  371. package/skills/research-ops/SKILL.md +113 -113
  372. package/skills/returns-reverse-logistics/SKILL.md +240 -240
  373. package/skills/rules-distill/SKILL.md +265 -265
  374. package/skills/rust-patterns/SKILL.md +500 -500
  375. package/skills/rust-testing/SKILL.md +501 -501
  376. package/skills/safety-guard/SKILL.md +76 -76
  377. package/skills/santa-method/SKILL.md +307 -307
  378. package/skills/scientific-db-pubmed-database/SKILL.md +176 -176
  379. package/skills/scientific-db-uspto-database/SKILL.md +178 -178
  380. package/skills/scientific-pkg-gget/SKILL.md +167 -167
  381. package/skills/scientific-thinking-literature-review/SKILL.md +193 -193
  382. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -161
  383. package/skills/search-first/SKILL.md +183 -183
  384. package/skills/security-bounty-hunter/SKILL.md +100 -100
  385. package/skills/security-review/SKILL.md +504 -504
  386. package/skills/security-scan/SKILL.md +166 -166
  387. package/skills/seo/SKILL.md +155 -155
  388. package/skills/skill-comply/SKILL.md +59 -59
  389. package/skills/skill-scout/SKILL.md +141 -141
  390. package/skills/skill-stocktake/SKILL.md +195 -195
  391. package/skills/social-graph-ranker/SKILL.md +155 -155
  392. package/skills/social-publisher/SKILL.md +130 -130
  393. package/skills/springboot-patterns/SKILL.md +315 -315
  394. package/skills/springboot-security/SKILL.md +273 -273
  395. package/skills/springboot-tdd/SKILL.md +159 -159
  396. package/skills/springboot-verification/SKILL.md +232 -232
  397. package/skills/strategic-compact/SKILL.md +142 -142
  398. package/skills/swift-actor-persistence/SKILL.md +144 -144
  399. package/skills/swift-concurrency-6-2/SKILL.md +216 -216
  400. package/skills/swift-protocol-di-testing/SKILL.md +191 -191
  401. package/skills/swiftui-patterns/SKILL.md +259 -259
  402. package/skills/taste/SKILL.md +264 -264
  403. package/skills/taste/references/genre-taxonomy.md +87 -87
  404. package/skills/tdd-workflow/SKILL.md +583 -583
  405. package/skills/team-agent-orchestration/SKILL.md +111 -111
  406. package/skills/team-builder/SKILL.md +169 -169
  407. package/skills/terminal-ops/SKILL.md +110 -110
  408. package/skills/tinystruct-patterns/SKILL.md +279 -279
  409. package/skills/tinystruct-patterns/references/architecture.md +90 -90
  410. package/skills/tinystruct-patterns/references/data-handling.md +60 -60
  411. package/skills/tinystruct-patterns/references/database.md +99 -99
  412. package/skills/tinystruct-patterns/references/routing.md +64 -64
  413. package/skills/tinystruct-patterns/references/system-usage.md +97 -97
  414. package/skills/tinystruct-patterns/references/testing.md +72 -72
  415. package/skills/token-budget-advisor/SKILL.md +134 -134
  416. package/skills/ui-demo/SKILL.md +466 -466
  417. package/skills/ui-to-vue/SKILL.md +135 -135
  418. package/skills/uncloud/SKILL.md +344 -344
  419. package/skills/unified-memory/SKILL.md +170 -170
  420. package/skills/unified-notifications-ops/SKILL.md +188 -188
  421. package/skills/verification-loop/SKILL.md +129 -129
  422. package/skills/video-editing/SKILL.md +311 -311
  423. package/skills/videodb/SKILL.md +375 -375
  424. package/skills/visa-doc-translate/SKILL.md +117 -117
  425. package/skills/vite-patterns/SKILL.md +450 -450
  426. package/skills/vue-patterns/SKILL.md +471 -471
  427. package/skills/windows-desktop-e2e/SKILL.md +888 -888
  428. package/skills/workspace-surface-audit/SKILL.md +126 -126
  429. package/skills/x-api/SKILL.md +235 -235
@@ -0,0 +1,292 @@
1
+ # Motion
2
+
3
+ Read this before adding any animation. The static page must already be finished and passing
4
+ `inspect.mjs`; motion is the last pass, never a way to rescue a weak layout.
5
+
6
+ ## Contents
7
+
8
+ 1. The budget
9
+ 2. Four questions before any animation
10
+ 3. Tokens
11
+ 4. Recipes (copy, then adapt)
12
+ 5. Signature moves
13
+ 6. Reduced motion and performance
14
+ 7. What gives generated motion away
15
+
16
+ ## 1. The budget
17
+
18
+ A page that does not move reads as a mock-up; the inspector counts what moves while the page loads and
19
+ scrolls, and fails it under eight elements. The motion layer has four parts:
20
+
21
+ - **One signature moment:** the thing a visitor would describe an hour later: the headline that rises
22
+ out of a mask, the image that opens like a shutter, the wordmark that scales with the scroll. The
23
+ direction sheet from `draw.mjs` names one. Build that one well; it is the only move allowed to be
24
+ loud.
25
+ - **Section entrances, choreographed per section:** the parts of each section arrive in reading order
26
+ (heading, text, picture, details), staggered 60–90ms, rising 16–32px with opacity, once. Vary the
27
+ manner with the content instead of stamping one preset everywhere: a list arrives row by row, a
28
+ picture opens from a mask or settles from a slight scale, a figure counts up once, a statement rises
29
+ line by line.
30
+ - **Feedback under the hand:** buttons that give on press, links that answer the pointer, cards and
31
+ pictures that respond on hover, a menu that opens from where it was clicked.
32
+ - **One moving picture:** a found clip as a muted loop with a poster frame, a slow drift or scale on
33
+ a large photograph, or a scroll-linked move on the hero picture.
34
+
35
+ What is still banned: the same fade-and-slide-up with the same timing on every block, which is the most
36
+ cited motion tell of generated pages; motion that hides content until a script runs, with no fallback;
37
+ bounce and elastic easing; anything that animates layout properties. Uniform motion says nobody decided
38
+ anything; choreographed motion with one protected moment says somebody did.
39
+
40
+ ## 2. Four questions before any animation
41
+
42
+ 1. **How often will someone see it?** Once per visit (hero load, a section reveal): it can take its
43
+ time. Many times per visit (hover, menu, accordion): fast and small. Hundreds of times (keyboard
44
+ actions, typing): no animation.
45
+ 2. **What is it for?** Valid answers: it shows where something came from, it confirms an action, it
46
+ keeps a change from being jarring, it explains how the product works, it is the signature moment.
47
+ "It looks nice" is only valid for the signature moment.
48
+ 3. **Which easing?** Entering or leaving: ease-out, so movement starts the instant the eye arrives.
49
+ Moving between two places on screen: ease-in-out. Colour and opacity on hover: `ease`. Constant
50
+ travel (marquee, progress): `linear`. `ease-in` makes interfaces feel slow because the first frames
51
+ barely move; do not use it. The CSS keyword curves are weak, so use the tokens below.
52
+ 4. **How long?** Press feedback 100–160ms. Hover 150–200ms. Menus and popovers 150–250ms. Dialogs and
53
+ drawers 250–450ms. Section and hero reveals 500–900ms. Leaving is quicker than arriving (about 70%).
54
+
55
+ ## 3. Tokens
56
+
57
+ ```css
58
+ :root {
59
+ --ease-out: cubic-bezier(0.22, 1, 0.36, 1); /* enters, exits, reveals */
60
+ --ease-in-out: cubic-bezier(0.76, 0, 0.24, 1); /* things that travel while visible */
61
+ --ease-soft: cubic-bezier(0.33, 1, 0.68, 1); /* long quiet reveals, image scale */
62
+ --t-press: 140ms;
63
+ --t-hover: 180ms;
64
+ --t-ui: 240ms;
65
+ --t-reveal: 800ms;
66
+ }
67
+ ```
68
+
69
+ Name the properties you animate. `transition: all` animates things you did not intend (and costs
70
+ layout); write `transition: transform var(--t-press) var(--ease-out)`.
71
+
72
+ ## 4. Recipes
73
+
74
+ All recipes keep content visible when JavaScript is off or slow: the hidden state only applies under
75
+ `html.js`, which a one-line inline script sets.
76
+
77
+ ```html
78
+ <script>document.documentElement.classList.add('js')</script>
79
+ ```
80
+
81
+ ### Hero load sequence (CSS only)
82
+
83
+ Stagger at most four things. With a headline of two lines this is short and reads as one gesture.
84
+
85
+ ```css
86
+ @media (prefers-reduced-motion: no-preference) {
87
+ .js [data-rise] {
88
+ opacity: 0;
89
+ transform: translateY(18px);
90
+ animation: rise var(--t-reveal) var(--ease-out) forwards;
91
+ animation-delay: calc(var(--i, 0) * 90ms + 120ms);
92
+ }
93
+ }
94
+ @keyframes rise { to { opacity: 1; transform: none; } }
95
+ ```
96
+
97
+ ```html
98
+ <h1 data-rise style="--i:0">…</h1>
99
+ <p data-rise style="--i:1">…</p>
100
+ <a data-rise style="--i:2" class="button">…</a>
101
+ ```
102
+
103
+ ### Masked line reveal (the classic gallery headline)
104
+
105
+ Each line slides up from behind its own baseline. Because headlines are capped at two lines, you set
106
+ the line breaks yourself and wrap each line.
107
+
108
+ ```html
109
+ <h1 class="lines">
110
+ <span class="line"><span data-line style="--i:0">Stools for</span></span>
111
+ <span class="line"><span data-line style="--i:1">small kitchens</span></span>
112
+ </h1>
113
+ ```
114
+
115
+ ```css
116
+ .lines .line { display: block; overflow: hidden; padding-bottom: 0.08em; margin-bottom: -0.08em; }
117
+ .lines [data-line] { display: block; }
118
+ @media (prefers-reduced-motion: no-preference) {
119
+ .js .lines [data-line] {
120
+ transform: translateY(105%);
121
+ animation: line-up 900ms var(--ease-out) forwards;
122
+ animation-delay: calc(var(--i) * 110ms + 150ms);
123
+ }
124
+ }
125
+ @keyframes line-up { to { transform: none; } }
126
+ ```
127
+
128
+ The `padding-bottom` / negative margin pair stops descenders (g, y, p) being clipped by the mask.
129
+ On a narrow phone the two authored lines may each wrap; check the mobile screenshot, and if they do,
130
+ author a shorter mobile break with a `<br class="only-wide">` pattern or reduce the size.
131
+
132
+ ### Reveal on scroll (once)
133
+
134
+ For the two or three sections that deserve it, not for every block.
135
+
136
+ ```css
137
+ @media (prefers-reduced-motion: no-preference) {
138
+ .js [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity 700ms var(--ease-out), transform 900ms var(--ease-out); }
139
+ .js [data-reveal].is-in { opacity: 1; transform: none; }
140
+ }
141
+ ```
142
+
143
+ ```js
144
+ const io = new IntersectionObserver((entries) => {
145
+ for (const e of entries) if (e.isIntersecting) { e.target.classList.add('is-in'); io.unobserve(e.target); }
146
+ }, { rootMargin: '0px 0px -12% 0px', threshold: 0.1 });
147
+ document.querySelectorAll('[data-reveal]').forEach((el) => io.observe(el));
148
+ ```
149
+
150
+ Never attach reveals with a scroll listener, never replay them when the element re-enters, and never
151
+ leave anything at `opacity: 0` if the observer fails to fire (the `html.js` gate handles no-JS; the
152
+ `unobserve` handles replays).
153
+
154
+ ### Image shutter
155
+
156
+ An image opens from one edge while scaling down slightly inside its frame. Gallery staple; use it for
157
+ the one hero or showcase image.
158
+
159
+ ```css
160
+ .shutter { overflow: hidden; }
161
+ @media (prefers-reduced-motion: no-preference) {
162
+ .js .shutter { clip-path: inset(0 0 100% 0); transition: clip-path 1100ms var(--ease-in-out); }
163
+ .js .shutter img { transform: scale(1.12); transition: transform 1500ms var(--ease-soft); }
164
+ .js .shutter.is-in { clip-path: inset(0); }
165
+ .js .shutter.is-in img { transform: none; }
166
+ }
167
+ ```
168
+
169
+ ### Press and hover
170
+
171
+ ```css
172
+ .button { transition: transform var(--t-press) var(--ease-out), background-color var(--t-hover) ease, color var(--t-hover) ease; }
173
+ .button:active { transform: scale(0.97); }
174
+ .link { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 0.2em; text-decoration-thickness: 0.07em; transition: text-decoration-color var(--t-hover) ease; }
175
+ @media (hover: hover) and (pointer: fine) {
176
+ .button:hover { background-color: var(--accent-strong); }
177
+ .link:hover { text-decoration-color: currentColor; }
178
+ }
179
+ ```
180
+
181
+ Hover styles go behind `(hover: hover)` because touch devices fire hover on tap and leave it stuck.
182
+ Hover should raise contrast, never lower it. Do not change font weight on hover (the text reflows).
183
+ Do not lift or scale every card on hover; one consistent, small response is enough.
184
+
185
+ ### Scroll-linked progress without JavaScript
186
+
187
+ For a wordmark that scales as the hero leaves, an image that drifts a few percent, or a progress bar.
188
+ Wrap in `@supports` so browsers without scroll timelines get the static state.
189
+
190
+ ```css
191
+ @supports (animation-timeline: view()) {
192
+ @media (prefers-reduced-motion: no-preference) {
193
+ .drift { animation: drift linear both; animation-timeline: view(); animation-range: entry 0% exit 100%; }
194
+ @keyframes drift { from { transform: translateY(-4%); } to { transform: translateY(4%); } }
195
+ }
196
+ }
197
+ ```
198
+
199
+ Keep the travel small (under 8% of the element). Large parallax makes text hard to read and looks
200
+ dated.
201
+
202
+ ### Pinned story
203
+
204
+ A section whose heading stays put while items pass. Use `position: sticky`; do not hijack scrolling.
205
+
206
+ ```css
207
+ .story { display: grid; grid-template-columns: 5fr 7fr; gap: var(--gutter); align-items: start; }
208
+ .story__title { position: sticky; top: 18vh; }
209
+ @media (max-width: 800px) { .story { grid-template-columns: 1fr; } .story__title { position: static; } }
210
+ ```
211
+
212
+ ### List with image preview (work index, menu, team)
213
+
214
+ Rows of large text; hovering a row shows its image in a fixed frame beside or behind the list.
215
+
216
+ ```css
217
+ .index { position: relative; }
218
+ .index__row { display: flex; justify-content: space-between; align-items: baseline; padding-block: 0.35em; font-size: var(--step-4); }
219
+ .index__frame { position: absolute; inset-block: 0; right: 0; width: 34%; pointer-events: none; }
220
+ .index__frame img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity var(--t-ui) ease; }
221
+ .index__frame img.is-on { opacity: 1; }
222
+ @media (hover: hover) and (pointer: fine) { .index:hover .index__row:not(:hover) { opacity: 0.35; } .index__row { transition: opacity var(--t-hover) ease; } }
223
+ ```
224
+
225
+ On touch there is no hover, so each row shows its image inline above the title instead.
226
+
227
+ ### Accordion
228
+
229
+ ```css
230
+ .acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 320ms var(--ease-out); }
231
+ .acc__panel > div { overflow: hidden; }
232
+ .acc[open] .acc__panel, .acc__item.is-open .acc__panel { grid-template-rows: 1fr; }
233
+ ```
234
+
235
+ Animating `grid-template-rows` from `0fr` to `1fr` opens to the content's real height without measuring
236
+ it in JavaScript.
237
+
238
+ ### Menu or dialog
239
+
240
+ ```css
241
+ .menu { transform-origin: top right; transition: opacity var(--t-ui) var(--ease-out), transform var(--t-ui) var(--ease-out); }
242
+ .menu[hidden], .menu.is-closed { opacity: 0; transform: scale(0.97) translateY(-6px); pointer-events: none; }
243
+ ```
244
+
245
+ Things open from where they were triggered (`transform-origin` at the trigger). Nothing enters from
246
+ `scale(0)`; start at 0.95–0.98. A centred dialog is the one case that scales from its centre.
247
+
248
+ ## 5. Signature moves
249
+
250
+ The direction sheet names one. Each of these was seen repeatedly on the studied gallery sites.
251
+
252
+ | Move | What happens | Build with |
253
+ | --- | --- | --- |
254
+ | Masked headline | Lines rise from behind their baselines on load | Masked line reveal recipe |
255
+ | Shutter image | Hero or showcase image opens from an edge, settling from 1.12 scale | Image shutter recipe |
256
+ | Scaling wordmark | A giant wordmark shrinks or grows a few percent as the hero scrolls out | Scroll-linked recipe on `scale` |
257
+ | Pinned story | A heading holds while its items scroll past | Sticky recipe |
258
+ | Index with preview | Text rows; the hovered row shows its image | List with image preview recipe |
259
+ | Curtain footer | The last section is revealed from under the page as you reach the end | `position: sticky; bottom: 0` footer under a main with a background and `z-index` |
260
+ | Slow crossfade | Hero image crossfades through 3–4 photographs, 5–6s each | Stacked images, opacity keyframes, pause when the tab is hidden |
261
+ | Edge-to-edge marquee | One line of very large type travels sideways, slowly | Duplicate the content, `translateX(-50%)` linear loop, pause on hover and under reduced motion |
262
+ | Drag row | A horizontally scrollable row of large images with scroll snapping | `overflow-x: auto; scroll-snap-type: x mandatory`, no library |
263
+ | Colour by chapter | Each chapter is its own full-bleed colour field, so the ground changes at section edges; a fixed header takes the ink of the chapter beneath | Section backgrounds in CSS; `base.js` sets `--header-ink` from `data-ink`. Never recolour the whole page from an observer |
264
+
265
+ Pick by subject. A portfolio wants the index with preview; a restaurant wants the slow crossfade; a
266
+ product wants the shutter on its hero object. If the move says nothing about the subject, it is
267
+ decoration and the page is better without it.
268
+
269
+ ## 6. Reduced motion and performance
270
+
271
+ - `prefers-reduced-motion: reduce` means fewer and gentler, not none: keep opacity and colour changes,
272
+ drop travel, scale, parallax and autoplay. All recipes above are written inside
273
+ `no-preference` blocks so the reduced state is simply the finished state.
274
+ - Animate `transform`, `opacity` and `clip-path`. Animating `width`, `height`, `top`, `left`, `margin`
275
+ or `padding` forces layout on every frame. `grid-template-rows` for accordions is the accepted
276
+ exception because it is short and rare.
277
+ - Do not drive many children from one changing CSS variable on a parent; set the transform on the
278
+ element that moves.
279
+ - `will-change` only on an element that is about to animate, removed afterwards.
280
+ - Pause loops when off screen or when the tab is hidden.
281
+ - No scroll hijacking, no smooth-scroll library by default, no custom cursor. They cost usability,
282
+ which is 30% of an Awwwards score and the line most winners score lowest on.
283
+
284
+ ## 7. What gives generated motion away
285
+
286
+ - The same fade-up on every block.
287
+ - A dozen staggered entrances in the hero.
288
+ - Hover lift or zoom on every card and image.
289
+ - Bounce or elastic easing on interface elements.
290
+ - Infinite loops that mean nothing: pulsing dots, floating shapes, shimmering text, rotating badges.
291
+ - A reveal that never fires and leaves a blank band in the page. Run `inspect.mjs` after the motion
292
+ pass and look at every screenshot for missing content.
@@ -0,0 +1,306 @@
1
+ # The study
2
+
3
+ Everything numeric in this skill comes from here. Cite these figures; do not round them up or invent
4
+ others.
5
+
6
+ ## Contents
7
+
8
+ 1. Method and its limits
9
+ 2. Scores
10
+ 3. Where the idea comes from
11
+ 4. Headlines
12
+ 5. Type
13
+ 6. Devices: what separates strong from weak, and what does not
14
+ 7. Colour and shape
15
+ 8. Imagery and page structure
16
+ 9. What the inspector says about the gallery itself
17
+ 10. The 25 highest-scored sites and their ideas
18
+ 11. How the skill was tested
19
+
20
+ ## 1. Method and its limits
21
+
22
+ - **Sample.** 248 sites collected on 5 October 2026: 156 from One Page Love (the latest gallery pages
23
+ and the category listings) and 92 Awwwards Sites of the Day (the three most recent listing pages).
24
+ 247 loaded; 246 were re-measured with the final probe.
25
+ - **Capture.** Headless Chrome at 1440×900 and 390×844. For each site: the first viewport, five more
26
+ frames while scrolling with real wheel input, the mobile first viewport, and a measurement pass in
27
+ the page (computed styles, text geometry, colours, fonts actually loaded).
28
+ - **Panel.** 21 model reviewers each studied about 12 sites from the screenshots and the measurements,
29
+ described them (idea, hero, type, colour, imagery, layout, sections) and scored them the Awwwards
30
+ way: design 40%, usability 30%, creativity 20%, content 10%. These are model judgements from still
31
+ frames, not human jurors and not the real Awwwards scores. Batches mixed both sources so each
32
+ reviewer saw a spread.
33
+ - **Usable sets.** 235 sites were usable for the panel (12 showed only a preloader, an entry gate or a
34
+ bot wall). 202 were measurable for typography (a page with at least 25 words and a detectable
35
+ headline). "Top" below means panel score 7.5 or higher (82 measurable sites); "weak" means under 6.5
36
+ (23 measurable sites).
37
+ - **Limits.** One capture per site on one day. Some heroes were caught mid-animation or behind a cookie
38
+ notice. WebGL-heavy sites are under-described by text measurements. The eyebrow detector counts any
39
+ small short label directly above a large heading, so it over-counts against the panel's stricter
40
+ reading (60% measured against 35% observed). Motion was inferred from frames, not watched. The sample
41
+ is whatever the two galleries had recently featured; it is fashion as much as quality.
42
+
43
+ ## 2. Scores
44
+
45
+ | | All 235 | One Page Love (151) | Awwwards (84) |
46
+ | --- | --- | --- | --- |
47
+ | Median overall | 7.2 | 7.1 | 7.5 |
48
+ | Middle half | 6.8–7.6 | | |
49
+ | 8.0 or higher | 25 sites (11%) | | |
50
+ | 7.5 or higher | 90 sites (38%) | | |
51
+ | Under 6.5 | 29 sites | | |
52
+
53
+ Median by criterion: design 8, usability 7, creativity 7, content 7. Among the top 25: design 9,
54
+ usability 7, creativity 8, content 8. Usability is the one line that does not rise with the rest: the
55
+ best sites are no easier to use than the average one. Do not copy their gates, preloaders, tiny text
56
+ or hidden navigation.
57
+
58
+ ## 3. Where the idea comes from
59
+
60
+ The clearest pattern in the panel's notes: high scores go with a concept taken from the subject, and
61
+ low scores go with its absence. The weakest entries' ideas were recorded in words like "none beyond the
62
+ standard dark SaaS launch formula", "no visual idea beyond clarity", "no strong idea". The strongest
63
+ were sentences only that subject could own (section 10).
64
+
65
+ Recurring engines among the 7.3+ sites, each the basis of a direction in the library:
66
+
67
+ - **The product demonstrates itself.** A colour picker's loupe reads the page's own background; a list
68
+ tool is sold with tiny working lists; a photo app's page is a wall of its own output.
69
+ - **The page is an artefact from the subject's world.** A wedding site that is the invitation; an
70
+ archive as tabbed folders; a coupon with a cut line; a portfolio as a contact sheet.
71
+ - **The name is the hero.** Wordmarks as wide as the screen, a photograph set inside the name like a
72
+ letter, a name split to opposite corners with the page between.
73
+ - **One motif from the subject drives everything.** A tool's octagonal section as button, mask and
74
+ loader; two circles for two accounts; a café's stripes.
75
+ - **Dressed as another category.** A money app as a streetwear drop; an industrial roaster as a design
76
+ object; a parcel service as a fairground.
77
+ - **The place carries it.** One full-bleed view and a name along the bottom edge.
78
+ - **A fixed stage.** A title or object stays put while content swaps beneath it.
79
+ - **One section, one colour.** Flat fields as chapters.
80
+ - **Radical understatement.** A 27px headline and tiny live demonstrations, carried through completely.
81
+
82
+ Hero types, by the panel's classification (top sites against weak sites): full-bleed media with type
83
+ over it 16% / 10%; giant wordmark 14% / 0%; typographic poster 13% / 7%; text beside media 10% / 3%;
84
+ **centred statement with media below 7% / 24%**. The centred headline over a screenshot is the weak
85
+ sites' signature layout.
86
+
87
+ ## 4. Headlines
88
+
89
+ | Hero headline | All | Top | Weak |
90
+ | --- | --- | --- | --- |
91
+ | Words, median | 5 | 5 | 5 |
92
+ | Words, middle half | 3–9 | 2–8 | 3–8 |
93
+ | Characters, median | 32 | | |
94
+ | One line at 1440 | 47% | | |
95
+ | Two lines or fewer at 1440 | 70% | 71% | 83% |
96
+ | Two lines or fewer at 390 | 57% | | |
97
+ | Three lines or fewer at 390 | 82% | | |
98
+
99
+ Awwwards heroes are shorter (median 4 words, 76% within two lines) than One Page Love's (6 words, 66%).
100
+ Section headings have a median of 3 words. Length does not separate strong from weak; nearly everyone
101
+ in the gallery writes short headlines. The two-line limit in this skill is a house rule that most of
102
+ the gallery already meets on desktop and that takes care to meet on a phone.
103
+
104
+ ## 5. Type
105
+
106
+ | | All | Top | Weak |
107
+ | --- | --- | --- | --- |
108
+ | Hero size, median | 72px (5.0vw) | 6.0vw | 4.7vw |
109
+ | Hero size, middle half | 3.0–7.6vw | 2.5–9.7vw | 2.7–6.1vw |
110
+ | Largest text on the page, median | 6.4vw | 8.4vw | 5.0vw |
111
+ | Largest text, upper quarter starts at | 10.4vw | 12.5vw | 6.7vw |
112
+ | Hero on a phone, median | 40px | | |
113
+ | Hero tracking, median (middle half) | -0.01em (-0.03 to 0) | | |
114
+ | Hero leading, median (middle half) | 1.0 (0.95–1.1) | | |
115
+ | Body size, median (middle half) | 16px (14–18) | | |
116
+ | Headline ÷ body, median | 4.3 | 4.7 | 4.0 |
117
+ | Typefaces carrying 3%+ of text | one 31%, two 45%, three 22% | | |
118
+ | Distinct font sizes, median | 8 | | |
119
+
120
+ Hero weight: regular 48%, medium 18%, semibold 6%, bold or heavier 22%, light 6%. Capitals 24%.
121
+ Centred 39% overall, 52% on weak sites. Display classes by the panel: neo-grotesk 48%, transitional
122
+ serif 11%, geometric sans 10%, condensed 6%, extended 6%, old-style serif 4%, custom lettering 4%.
123
+
124
+ Strong sites push the extremes: their biggest type is bigger and their range is wider. Weak sites
125
+ cluster in the middle.
126
+
127
+ ## 6. Devices: what separates strong from weak, and what does not
128
+
129
+ Measured in the page unless marked (panel).
130
+
131
+ **More common on weak sites (the data supports avoiding them):**
132
+
133
+ | Device | Top | Weak |
134
+ | --- | --- | --- |
135
+ | Icon-topped feature cards (panel) | 1% | 28% |
136
+ | Rows of identical cards with a small icon (measured) | 7% | 26% |
137
+ | Pill badges (panel) | 14% | 34% |
138
+ | Pill-shaped label above a heading (measured) | 5% | 26% |
139
+ | Tiny uppercase letter-spaced labels, any | 16% | 57% |
140
+ | Tiny uppercase letter-spaced labels, three or more | 6% | 43% |
141
+ | Gradient fills (not counting scrims) | 22% | 52% |
142
+ | Gradient text | 2% | 13% |
143
+ | Shadows on resting elements, any | 24% | 48% |
144
+ | Shadows, five or more | 10% | 30% |
145
+ | Emoji in the page | 10% | 26% |
146
+ | Eyebrow labels (panel) | 32% | 45% |
147
+
148
+ **No real difference:**
149
+
150
+ | Device | Top | Weak |
151
+ | --- | --- | --- |
152
+ | Backdrop blur anywhere | 32% | 39% |
153
+ | Italic-serif accent word (panel) | 4% | 7% |
154
+ | Thin rules, any | 61% | 52% |
155
+
156
+ **More common on strong sites (banned here anyway, as house style):**
157
+
158
+ | Device | Top | Weak |
159
+ | --- | --- | --- |
160
+ | Monospace labels (panel) | 44% | 24% |
161
+ | Monospace anywhere outside code (measured) | 45% | 26% |
162
+ | Index numbering (panel) | 38% | 21% |
163
+
164
+ Monospace captions, index numbers and ruled grids are the present fashion of award sites. They are
165
+ excluded from this skill by the owner's choice, not by the data: they are the devices generators copy
166
+ first, and a page that cannot lean on them has to find structure in space, tone and scale.
167
+
168
+ ## 7. Colour and shape
169
+
170
+ - Dark page ground 41%; pure white 25%; pure black 12%; a warm off-white 13%.
171
+ - Scheme (panel): monochrome plus one accent 23%, light neutral 22%, dark neutral 14%, several flat
172
+ colours 13%, two-tone 12%, photographic 9%, one colour field 6%.
173
+ - Primary buttons are neutral (black, white, grey) on 52% of sites. One site in 246 has a terracotta
174
+ button; none has a violet one.
175
+ - Median number of distinct section grounds: 2 on top sites, 1 on weak sites.
176
+ - Button shape: top sites square (0–2px) 52%, fully round 23%, small radius 19%, medium (9–16px) 6%.
177
+ Weak sites fully round 59%, medium 24%, square 18%.
178
+ - Media corners are square on 73% of sites; where rounded, the median radius is 12px.
179
+ - Buttons in the first viewport: none on 55% of top sites and 39% of weak ones.
180
+
181
+ ## 8. Imagery and page structure
182
+
183
+ - Hero media covers at least half the first viewport on 60% of sites (top 68%, weak 48%) and nearly
184
+ all of it on 50% (top 56%, weak 39%). No hero media: 15%.
185
+ - Video is present on 49% of sites and a canvas element on 49% (top 62%, weak 35%).
186
+ - Images per page, median: 24 overall, 37 on top sites, 5 on weak ones.
187
+ - Imagery kind (panel): mixed 32%, photography 14%, generative or WebGL 13%, product interface 12%,
188
+ 3D render 11%, illustration 9%, video 6%, type only 3%. Median panel score is lowest for
189
+ illustration-led (6.9) and product-interface-led (7.1) pages and highest for video and type-only
190
+ (7.5).
191
+ - Page length, median: 8.7 screens and 575 words (middle half 1.6–14.4 screens, 250–956 words). A
192
+ quarter of the sites are a single screen or two.
193
+ - Navigation: a median of 3 links; fixed or sticky on 66%.
194
+ - Density (panel): airy 46%, balanced 45%, dense 9%. Alignment: centred 33%, mixed 31%, left-anchored
195
+ 17%, modular grid 13%, free 6%.
196
+ - Asked to describe each site's most interesting sections, the panel picked a pricing, testimonial or
197
+ FAQ section only 7, 12 and 9 times across 235 sites. Where strong sites have them at all, they are
198
+ not where the design effort goes, and they avoid the stock form.
199
+
200
+ **From the panel's written notes on the 114 sites scoring 7.3 or more** (hand tallies, approximate;
201
+ `layout.md` turns these into practice):
202
+
203
+ - Outer margins of 32px or less on about 45; 80px or more on about 8. A centred 700–1300px container
204
+ on about 15, several of them the pages the panel called stock.
205
+ - Text anchored to a fixed off-centre line on about 22. Text docked in corners or at opposite ends of
206
+ a baseline on about 25 and 15.
207
+ - Two or three type sizes with nothing between on about 30; no note describes a graded five-step
208
+ scale.
209
+ - One thing per screen on about 20. A full background colour per section on about 20; alternating
210
+ light and dark on about 12.
211
+ - Every section recomposed on about 14; one planned exception to the page's own system on about 14.
212
+ - No conventional top navigation bar on about 45; small corner links on about 22; a single link or
213
+ button on about 10.
214
+ - Endings: the name at full width about 18, the hero repeated inverted about 12, a closing scene of
215
+ its own about 14, no footer or a single line about 22. Link-column footers are mentioned only as
216
+ criticism.
217
+ - Motion (inferred from frames): autoplaying video about 50; pinned or fixed stages about 40; text
218
+ reveals about 30 (blur-in 10, masked line rises 8, scroll-tied word colouring 7); horizontal strips
219
+ about 27; marquees about 26; media swapped behind a fixed element about 15; scroll-linked scaling
220
+ about 12. Rare: hover effects (4 mentions), parallax (6), accordions (5), bounce or spring motion
221
+ (none). About 10 strong sites show little or no motion at all.
222
+ - How weak sites fail (54 sites under 6.8): the category's stock template about 20; centred headline,
223
+ pill badge, two buttons and a screenshot about 9; stock modules after a distinctive hero about 8,
224
+ plus about 17 in the middle band; a characterless default typeface about 13; text too small or too
225
+ faint about 13; never saying what the thing is about 12.
226
+ - Faults of the best sites (90 at 7.5 or more), not to be copied: text at 9–13px about 24;
227
+ information hidden behind the concept about 20; the idea running out mid-page about 15; text over
228
+ footage with no scrim about 12; gates, preloaders and blank first paints about 12.
229
+
230
+ ## 9. What the inspector says about the gallery itself
231
+
232
+ Running this skill's own `inspect.mjs` rules over the 202 measurable gallery sites: the median site
233
+ has 4 `FAIL`s and only 4% have none. The rules that fire most: headline over two lines somewhere on
234
+ the page 60%, eyebrow-like label 60%, thin rules 50%, monospace 37%, shadows 32%, gradients 29%, index
235
+ numbering 29%.
236
+
237
+ So the house style is deliberately stricter than the gallery. It is not a description of award sites;
238
+ it is a narrower target inside what they do: their scale, their ideas, their imagery and restraint,
239
+ without the ornaments that have since become a uniform.
240
+
241
+ ## 10. The 25 highest-scored sites and their ideas
242
+
243
+ The panel's one-sentence reading of each. Notice that every one names something only that subject
244
+ could own. (Several use devices this skill bans; take the idea, not the ornament.)
245
+
246
+ | Site | Source | Score | Idea |
247
+ | --- | --- | --- | --- |
248
+ | PP Neue Montreal | Awwwards | 8.6 | A typeface specimen dressed as a vintage city travel guide: the font named after Montreal is sold through guidebook titling, postcards and old tourist footage. |
249
+ | Seasats | Awwwards | 8.4 | Calm, dusk-lit seascapes sell autonomous boats as serene instruments, and the navigation is a column of stacked colour swatches taken from that sea-and-sand palette. |
250
+ | AI in Design Report 2026 | Awwwards | 8.4 | A research report laid out like a colour-blocked print annual: a video collage on top, an oversized tight grotesk title, and flat orange, lilac, sage and black blocks carrying stats, quotes and chapters. |
251
+ | House of Honey | Awwwards | 8.4 | A block-heavy wordmark pierced by a fine script: the bold-against-delicate contrast is repeated at every scale, with giant pink script behind quiet serif statements. |
252
+ | White Desert | Awwwards | 8.4 | One word, the destination, set a third of the screen tall over footage like a film title card; sheer scale stands in for remoteness. |
253
+ | Applied Imagination | One Page Love | 8.3 | An essay conceived on a flight is read as a descent: an altimeter ticks from 30,000 ft to zero while you scroll down through clouds to mountains at ground level. |
254
+ | Cursor Compile | One Page Love | 8.3 | The event name drawn as seven looping one-line curves in seven colours, more signature than logotype, on an otherwise whisper-quiet off-white page. |
255
+ | The New Industrials | One Page Love | 8.3 | A long-read essay laid out inside a drafting grid, where colour fields shift as you read and machine parts drift through the margins and finally assemble into the publisher's initials. |
256
+ | Wild | One Page Love | 8.3 | A studio essay in which everything decorative is drawn on one square-pixel grid: the hero heatmap, the icons, the diagrams, the lettering and the footer. |
257
+ | Hildén & Kaira | Awwwards | 8.3 | The agency name is cast in liquid chrome across the full width, and the same chrome becomes the objects that float through the page, tying the pitch to one material. |
258
+ | PX Push | Awwwards | 8.2 | A design subscription presented as a retro broadcast: the entire site is seen through a CRT screen, with a chrome logo token as its mascot. |
259
+ | Illoca | Awwwards | 8.2 | Software for architects sold as a drafting table: a two-colour illustrated studio on graph paper that the scroll pushes into until the drawing fills the screen. |
260
+ | Aspen Search | Awwwards | 8.2 | The page is a tile system with no margins: the two-word name is split across cells that alternate type, dithered image, black and one mint green. |
261
+ | Dragonfly Redux | Awwwards | 8.2 | A crypto fund presented as a terminal artefact: every picture is rendered in characters, framed by four letters of the name pinned to the viewport corners. |
262
+ | Monolog | Awwwards | 8.2 | A studio pitch run as an asymmetric sheet: a narrow left column carries the sales talk while a wide right column stacks a very heavy headline and the proof. |
263
+ | The Queue | One Page Love | 8.1 | An essay on queueing where the queue is the ornament: a line of drawn figures stands along the bottom of the hero and returns between chapters in changing period dress. |
264
+ | Paul Kalkbrenner | Awwwards | 8.1 | Swiss poster typography for a techno artist: the name as one black line with a photo set inside it like a glyph, then every chapter gets its own flat colour. |
265
+ | Vero New York | Awwwards | 8.1 | A keepsake treated like couture: a slow close-up film opens, then a white sculpture of a dress stays pinned at centre while one sentence passes over it. |
266
+ | Depo Luxe | Awwwards | 8.1 | A film production roster shown as a full-screen reel in which every step is one film with only a title, a director and a client, set like credits at body size. |
267
+ | Longbow | Awwwards | 8.1 | The page is built on a visible four-column construction grid, and cars, cards and a giant condensed marquee are slotted into its cells like objects on an artboard. |
268
+ | Mosby's Files | Awwwards | 8.0 | An archive of architects presented as a physical stack of coloured index-tab file folders that you flip through. |
269
+ | Sarah & Matt Wedding | One Page Love | 8.0 | The site is the invitation: a letterpress-style card opens the page, and its ornaments and small typographic parts become the components for everything after it. |
270
+ | Zara Webb | One Page Love | 8.0 | A one-woman newborn-care practice presented like a hand-made keepsake: a mascot rabbit, scalloped and flower-shaped cut-outs, candid film photographs. |
271
+ | Noho | Awwwards | 8.0 | Furniture sold through people misusing it (wearing, balancing on, hiding behind chairs on flat colour backdrops) while the interface stays quiet. |
272
+ | Juggle | One Page Love | 8.0 | The headline literally drowns: a flat blue field rises to half height and the lines below the waterline change colour. |
273
+
274
+ Full notes on any studied site: `node scripts/draw.mjs --site <id>` (ids appear on direction sheets).
275
+
276
+ ## 11. How the skill was tested
277
+
278
+ Six client briefs (an invoicing tool, a restaurant, a designer's portfolio, a ceramic product, a
279
+ guesthouse, a design conference), each with no photographs. For every brief a fresh agent built the
280
+ page three ways: with no skill (baseline), with another published design skill (atelier, three briefs)
281
+ and with this skill. Every build was photographed by `inspect.mjs` in the same way and judged blind
282
+ by a separate agent with the juror brief (Awwwards weights, anonymous A/B/C folders, screenshots
283
+ only). The skill was revised after each round from the jurors' reasons and the builders' notes.
284
+
285
+ | Round | Briefs | This skill | Baseline | Atelier | Wins |
286
+ | --- | --- | --- | --- | --- | --- |
287
+ | 1 | 4 | 6.6 | 7.7 | 6.8 | 1 of 4 |
288
+ | 2 | 3 | 7.1 | 8.0 | | 0 of 3 |
289
+ | 3 | 3 | 7.5 | 7.5 | | 1 of 3 |
290
+ | 4 (unseen briefs) | 3 | 6.9 | 7.9 | 7.5 | 0 of 3 |
291
+ | 5 (same three) | 3 | 7.7 | 7.8 | 7.2 | 2 of 3 |
292
+
293
+ Under the inspector, the final builds measured 0 FAIL each; the baselines measured 8 to 13 FAIL each
294
+ (eyebrows, monospace labels, 01/02/03 numbering, hairlines, gradients, shadows, three-line headlines,
295
+ text under 13px).
296
+
297
+ What the jurors rewarded, in the order they named it: an idea that belongs to this client and not to
298
+ the category (the competitor test); one live thing on the page; full content at a readable size; a
299
+ first screen with one dominant element and a real button; drawings of the subject with detail. What
300
+ they punished: a quiet page that read as empty, a small headline, text sliding over pictures or cut
301
+ at the top, a page recoloured mid-section, rows cut at the right edge, a large sentence over three or
302
+ more lines (read as a long headline whatever its markup), navigation that took over the first screen.
303
+ Each of these is now a rule in SKILL.md or a check in the inspector.
304
+
305
+ Limits: one juror per brief per round, so single scores carry about half a point of noise; the round-5
306
+ briefs had been seen in round 4; jurors are models, not people.