markilo 0.0.0-stage → 1.0.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 (303) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +10 -0
  3. package/README.md +348 -2
  4. package/THIRD_PARTY_NOTICES.md +72 -0
  5. package/package.json +89 -4
  6. package/plugin/.claude-plugin/icon.png +0 -0
  7. package/plugin/.claude-plugin/plugin.json +24 -0
  8. package/plugin/LICENSE +202 -0
  9. package/plugin/NOTICE +10 -0
  10. package/plugin/README.md +14 -0
  11. package/plugin/THIRD_PARTY_NOTICES.md +72 -0
  12. package/plugin/agents/brand-researcher.md +46 -0
  13. package/plugin/agents/concept-designer.md +91 -0
  14. package/plugin/agents/design-critic.md +109 -0
  15. package/plugin/dist/markilo.mjs +622 -0
  16. package/plugin/dist/pathkit.wasm +0 -0
  17. package/plugin/dist/resvg.wasm +0 -0
  18. package/plugin/evals/README.md +21 -0
  19. package/plugin/evals/asks-before-network/graders/asks.md +8 -0
  20. package/plugin/evals/asks-before-network/graders/no-network.md +9 -0
  21. package/plugin/evals/asks-before-network/prompt.md +13 -0
  22. package/plugin/evals/concept-verified/graders/looked.md +7 -0
  23. package/plugin/evals/concept-verified/graders/report.md +8 -0
  24. package/plugin/evals/concept-verified/graders/symbol.md +5 -0
  25. package/plugin/evals/concept-verified/graders/verified.md +7 -0
  26. package/plugin/evals/concept-verified/prompt.md +14 -0
  27. package/plugin/evals/doctor-smoke/graders/ran-doctor.md +7 -0
  28. package/plugin/evals/doctor-smoke/prompt.md +13 -0
  29. package/plugin/evals/locked-brand/graders/explains.md +8 -0
  30. package/plugin/evals/locked-brand/graders/locked.md +7 -0
  31. package/plugin/evals/locked-brand/graders/no-concept.md +9 -0
  32. package/plugin/evals/locked-brand/prompt.md +13 -0
  33. package/plugin/evals/refuses-copy/graders/refusal.md +8 -0
  34. package/plugin/evals/refuses-copy/prompt.md +13 -0
  35. package/plugin/evals/results/2026-10-30T00-24-04-123Z/aggregate-result.json +525 -0
  36. package/plugin/evals/results/2026-10-30T00-24-04-123Z/report.html +704 -0
  37. package/plugin/evals/results/2026-10-30T00-28-53-497Z/aggregate-result.json +119 -0
  38. package/plugin/evals/results/2026-10-30T00-28-53-497Z/report.html +282 -0
  39. package/plugin/evals/results/2026-10-30T00-29-38-075Z/aggregate-result.json +82 -0
  40. package/plugin/evals/results/2026-10-30T00-29-38-075Z/report.html +260 -0
  41. package/plugin/evals/results/2026-10-30T00-29-53-409Z/aggregate-result.json +119 -0
  42. package/plugin/evals/results/2026-10-30T00-29-53-409Z/report.html +282 -0
  43. package/plugin/evals/results/2026-10-30T00-30-34-064Z/aggregate-result.json +126 -0
  44. package/plugin/evals/results/2026-10-30T00-30-34-064Z/report.html +301 -0
  45. package/plugin/evals/results/2026-10-30T00-31-33-704Z/aggregate-result.json +119 -0
  46. package/plugin/evals/results/2026-10-30T00-31-33-704Z/report.html +282 -0
  47. package/plugin/evals/results/2026-10-30T00-32-27-214Z/aggregate-result.json +155 -0
  48. package/plugin/evals/results/2026-10-30T00-32-27-214Z/report.html +304 -0
  49. package/plugin/evals/results/2026-10-30T00-33-03-882Z/aggregate-result.json +544 -0
  50. package/plugin/evals/results/2026-10-30T00-33-03-882Z/report.html +701 -0
  51. package/plugin/evals/wordmark-outlined/graders/no-network.md +9 -0
  52. package/plugin/evals/wordmark-outlined/graders/sora.md +6 -0
  53. package/plugin/evals/wordmark-outlined/graders/svg-created.md +5 -0
  54. package/plugin/evals/wordmark-outlined/graders/used-wordmark.md +7 -0
  55. package/plugin/evals/wordmark-outlined/graders/workspace.md +5 -0
  56. package/plugin/evals/wordmark-outlined/prompt.md +13 -0
  57. package/plugin/fonts/alegreya-sans/OFL.txt +93 -0
  58. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-400-normal.woff +0 -0
  59. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-500-normal.woff +0 -0
  60. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-700-normal.woff +0 -0
  61. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-800-normal.woff +0 -0
  62. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-400-normal.woff +0 -0
  63. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-500-normal.woff +0 -0
  64. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-700-normal.woff +0 -0
  65. package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-800-normal.woff +0 -0
  66. package/plugin/fonts/archivo/OFL.txt +93 -0
  67. package/plugin/fonts/archivo/archivo-latin-400-normal.woff +0 -0
  68. package/plugin/fonts/archivo/archivo-latin-500-normal.woff +0 -0
  69. package/plugin/fonts/archivo/archivo-latin-600-normal.woff +0 -0
  70. package/plugin/fonts/archivo/archivo-latin-700-normal.woff +0 -0
  71. package/plugin/fonts/archivo/archivo-latin-800-normal.woff +0 -0
  72. package/plugin/fonts/archivo/archivo-latin-900-normal.woff +0 -0
  73. package/plugin/fonts/archivo/archivo-latin-ext-400-normal.woff +0 -0
  74. package/plugin/fonts/archivo/archivo-latin-ext-500-normal.woff +0 -0
  75. package/plugin/fonts/archivo/archivo-latin-ext-600-normal.woff +0 -0
  76. package/plugin/fonts/archivo/archivo-latin-ext-700-normal.woff +0 -0
  77. package/plugin/fonts/archivo/archivo-latin-ext-800-normal.woff +0 -0
  78. package/plugin/fonts/archivo/archivo-latin-ext-900-normal.woff +0 -0
  79. package/plugin/fonts/atkinson-hyperlegible-next/OFL.txt +93 -0
  80. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-400-normal.woff +0 -0
  81. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-500-normal.woff +0 -0
  82. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-600-normal.woff +0 -0
  83. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-700-normal.woff +0 -0
  84. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-800-normal.woff +0 -0
  85. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-400-normal.woff +0 -0
  86. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-500-normal.woff +0 -0
  87. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-600-normal.woff +0 -0
  88. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-700-normal.woff +0 -0
  89. package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-800-normal.woff +0 -0
  90. package/plugin/fonts/bricolage-grotesque/OFL.txt +93 -0
  91. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-400-normal.woff +0 -0
  92. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-500-normal.woff +0 -0
  93. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-600-normal.woff +0 -0
  94. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-700-normal.woff +0 -0
  95. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-800-normal.woff +0 -0
  96. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-400-normal.woff +0 -0
  97. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-500-normal.woff +0 -0
  98. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-600-normal.woff +0 -0
  99. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-700-normal.woff +0 -0
  100. package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-800-normal.woff +0 -0
  101. package/plugin/fonts/dm-sans/OFL.txt +93 -0
  102. package/plugin/fonts/dm-sans/dm-sans-latin-400-normal.woff +0 -0
  103. package/plugin/fonts/dm-sans/dm-sans-latin-500-normal.woff +0 -0
  104. package/plugin/fonts/dm-sans/dm-sans-latin-600-normal.woff +0 -0
  105. package/plugin/fonts/dm-sans/dm-sans-latin-700-normal.woff +0 -0
  106. package/plugin/fonts/dm-sans/dm-sans-latin-800-normal.woff +0 -0
  107. package/plugin/fonts/dm-sans/dm-sans-latin-ext-400-normal.woff +0 -0
  108. package/plugin/fonts/dm-sans/dm-sans-latin-ext-500-normal.woff +0 -0
  109. package/plugin/fonts/dm-sans/dm-sans-latin-ext-600-normal.woff +0 -0
  110. package/plugin/fonts/dm-sans/dm-sans-latin-ext-700-normal.woff +0 -0
  111. package/plugin/fonts/dm-sans/dm-sans-latin-ext-800-normal.woff +0 -0
  112. package/plugin/fonts/dm-serif-display/OFL.txt +93 -0
  113. package/plugin/fonts/dm-serif-display/dm-serif-display-latin-400-normal.woff +0 -0
  114. package/plugin/fonts/dm-serif-display/dm-serif-display-latin-ext-400-normal.woff +0 -0
  115. package/plugin/fonts/familjen-grotesk/OFL.txt +93 -0
  116. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-400-normal.woff +0 -0
  117. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-500-normal.woff +0 -0
  118. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-600-normal.woff +0 -0
  119. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-700-normal.woff +0 -0
  120. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-400-normal.woff +0 -0
  121. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-500-normal.woff +0 -0
  122. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-600-normal.woff +0 -0
  123. package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-700-normal.woff +0 -0
  124. package/plugin/fonts/fonts.json +1014 -0
  125. package/plugin/fonts/fraunces/OFL.txt +93 -0
  126. package/plugin/fonts/fraunces/fraunces-latin-400-normal.woff +0 -0
  127. package/plugin/fonts/fraunces/fraunces-latin-500-normal.woff +0 -0
  128. package/plugin/fonts/fraunces/fraunces-latin-600-normal.woff +0 -0
  129. package/plugin/fonts/fraunces/fraunces-latin-700-normal.woff +0 -0
  130. package/plugin/fonts/fraunces/fraunces-latin-800-normal.woff +0 -0
  131. package/plugin/fonts/fraunces/fraunces-latin-ext-400-normal.woff +0 -0
  132. package/plugin/fonts/fraunces/fraunces-latin-ext-500-normal.woff +0 -0
  133. package/plugin/fonts/fraunces/fraunces-latin-ext-600-normal.woff +0 -0
  134. package/plugin/fonts/fraunces/fraunces-latin-ext-700-normal.woff +0 -0
  135. package/plugin/fonts/fraunces/fraunces-latin-ext-800-normal.woff +0 -0
  136. package/plugin/fonts/ibm-plex-serif/OFL.txt +93 -0
  137. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-400-normal.woff +0 -0
  138. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-500-normal.woff +0 -0
  139. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-600-normal.woff +0 -0
  140. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-700-normal.woff +0 -0
  141. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-400-normal.woff +0 -0
  142. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-500-normal.woff +0 -0
  143. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-600-normal.woff +0 -0
  144. package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-700-normal.woff +0 -0
  145. package/plugin/fonts/instrument-serif/OFL.txt +93 -0
  146. package/plugin/fonts/instrument-serif/instrument-serif-latin-400-normal.woff +0 -0
  147. package/plugin/fonts/instrument-serif/instrument-serif-latin-ext-400-normal.woff +0 -0
  148. package/plugin/fonts/inter/OFL.txt +93 -0
  149. package/plugin/fonts/inter/inter-latin-400-normal.woff +0 -0
  150. package/plugin/fonts/inter/inter-latin-500-normal.woff +0 -0
  151. package/plugin/fonts/inter/inter-latin-600-normal.woff +0 -0
  152. package/plugin/fonts/inter/inter-latin-700-normal.woff +0 -0
  153. package/plugin/fonts/inter/inter-latin-800-normal.woff +0 -0
  154. package/plugin/fonts/inter/inter-latin-ext-400-normal.woff +0 -0
  155. package/plugin/fonts/inter/inter-latin-ext-500-normal.woff +0 -0
  156. package/plugin/fonts/inter/inter-latin-ext-600-normal.woff +0 -0
  157. package/plugin/fonts/inter/inter-latin-ext-700-normal.woff +0 -0
  158. package/plugin/fonts/inter/inter-latin-ext-800-normal.woff +0 -0
  159. package/plugin/fonts/jetbrains-mono/OFL.txt +93 -0
  160. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-400-normal.woff +0 -0
  161. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-500-normal.woff +0 -0
  162. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-600-normal.woff +0 -0
  163. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-700-normal.woff +0 -0
  164. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-800-normal.woff +0 -0
  165. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-400-normal.woff +0 -0
  166. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-500-normal.woff +0 -0
  167. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-600-normal.woff +0 -0
  168. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-700-normal.woff +0 -0
  169. package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-800-normal.woff +0 -0
  170. package/plugin/fonts/manrope/OFL.txt +93 -0
  171. package/plugin/fonts/manrope/manrope-latin-400-normal.woff +0 -0
  172. package/plugin/fonts/manrope/manrope-latin-500-normal.woff +0 -0
  173. package/plugin/fonts/manrope/manrope-latin-600-normal.woff +0 -0
  174. package/plugin/fonts/manrope/manrope-latin-700-normal.woff +0 -0
  175. package/plugin/fonts/manrope/manrope-latin-800-normal.woff +0 -0
  176. package/plugin/fonts/manrope/manrope-latin-ext-400-normal.woff +0 -0
  177. package/plugin/fonts/manrope/manrope-latin-ext-500-normal.woff +0 -0
  178. package/plugin/fonts/manrope/manrope-latin-ext-600-normal.woff +0 -0
  179. package/plugin/fonts/manrope/manrope-latin-ext-700-normal.woff +0 -0
  180. package/plugin/fonts/manrope/manrope-latin-ext-800-normal.woff +0 -0
  181. package/plugin/fonts/newsreader/OFL.txt +93 -0
  182. package/plugin/fonts/newsreader/newsreader-latin-400-normal.woff +0 -0
  183. package/plugin/fonts/newsreader/newsreader-latin-500-normal.woff +0 -0
  184. package/plugin/fonts/newsreader/newsreader-latin-600-normal.woff +0 -0
  185. package/plugin/fonts/newsreader/newsreader-latin-700-normal.woff +0 -0
  186. package/plugin/fonts/newsreader/newsreader-latin-800-normal.woff +0 -0
  187. package/plugin/fonts/newsreader/newsreader-latin-ext-400-normal.woff +0 -0
  188. package/plugin/fonts/newsreader/newsreader-latin-ext-500-normal.woff +0 -0
  189. package/plugin/fonts/newsreader/newsreader-latin-ext-600-normal.woff +0 -0
  190. package/plugin/fonts/newsreader/newsreader-latin-ext-700-normal.woff +0 -0
  191. package/plugin/fonts/newsreader/newsreader-latin-ext-800-normal.woff +0 -0
  192. package/plugin/fonts/outfit/OFL.txt +93 -0
  193. package/plugin/fonts/outfit/outfit-latin-400-normal.woff +0 -0
  194. package/plugin/fonts/outfit/outfit-latin-500-normal.woff +0 -0
  195. package/plugin/fonts/outfit/outfit-latin-600-normal.woff +0 -0
  196. package/plugin/fonts/outfit/outfit-latin-700-normal.woff +0 -0
  197. package/plugin/fonts/outfit/outfit-latin-800-normal.woff +0 -0
  198. package/plugin/fonts/outfit/outfit-latin-ext-400-normal.woff +0 -0
  199. package/plugin/fonts/outfit/outfit-latin-ext-500-normal.woff +0 -0
  200. package/plugin/fonts/outfit/outfit-latin-ext-600-normal.woff +0 -0
  201. package/plugin/fonts/outfit/outfit-latin-ext-700-normal.woff +0 -0
  202. package/plugin/fonts/outfit/outfit-latin-ext-800-normal.woff +0 -0
  203. package/plugin/fonts/plus-jakarta-sans/OFL.txt +93 -0
  204. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-400-normal.woff +0 -0
  205. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-500-normal.woff +0 -0
  206. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-600-normal.woff +0 -0
  207. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-700-normal.woff +0 -0
  208. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-800-normal.woff +0 -0
  209. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-400-normal.woff +0 -0
  210. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-500-normal.woff +0 -0
  211. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-600-normal.woff +0 -0
  212. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-700-normal.woff +0 -0
  213. package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-800-normal.woff +0 -0
  214. package/plugin/fonts/schibsted-grotesk/OFL.txt +93 -0
  215. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-400-normal.woff +0 -0
  216. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-500-normal.woff +0 -0
  217. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-600-normal.woff +0 -0
  218. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-700-normal.woff +0 -0
  219. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-800-normal.woff +0 -0
  220. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-900-normal.woff +0 -0
  221. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-400-normal.woff +0 -0
  222. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-500-normal.woff +0 -0
  223. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-600-normal.woff +0 -0
  224. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-700-normal.woff +0 -0
  225. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-800-normal.woff +0 -0
  226. package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-900-normal.woff +0 -0
  227. package/plugin/fonts/sora/OFL.txt +93 -0
  228. package/plugin/fonts/sora/sora-latin-400-normal.woff +0 -0
  229. package/plugin/fonts/sora/sora-latin-500-normal.woff +0 -0
  230. package/plugin/fonts/sora/sora-latin-600-normal.woff +0 -0
  231. package/plugin/fonts/sora/sora-latin-700-normal.woff +0 -0
  232. package/plugin/fonts/sora/sora-latin-800-normal.woff +0 -0
  233. package/plugin/fonts/sora/sora-latin-ext-400-normal.woff +0 -0
  234. package/plugin/fonts/sora/sora-latin-ext-500-normal.woff +0 -0
  235. package/plugin/fonts/sora/sora-latin-ext-600-normal.woff +0 -0
  236. package/plugin/fonts/sora/sora-latin-ext-700-normal.woff +0 -0
  237. package/plugin/fonts/sora/sora-latin-ext-800-normal.woff +0 -0
  238. package/plugin/fonts/space-grotesk/OFL.txt +93 -0
  239. package/plugin/fonts/space-grotesk/space-grotesk-latin-400-normal.woff +0 -0
  240. package/plugin/fonts/space-grotesk/space-grotesk-latin-500-normal.woff +0 -0
  241. package/plugin/fonts/space-grotesk/space-grotesk-latin-600-normal.woff +0 -0
  242. package/plugin/fonts/space-grotesk/space-grotesk-latin-700-normal.woff +0 -0
  243. package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-400-normal.woff +0 -0
  244. package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-500-normal.woff +0 -0
  245. package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-600-normal.woff +0 -0
  246. package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-700-normal.woff +0 -0
  247. package/plugin/fonts/space-mono/OFL.txt +93 -0
  248. package/plugin/fonts/space-mono/space-mono-latin-400-normal.woff +0 -0
  249. package/plugin/fonts/space-mono/space-mono-latin-700-normal.woff +0 -0
  250. package/plugin/fonts/space-mono/space-mono-latin-ext-400-normal.woff +0 -0
  251. package/plugin/fonts/space-mono/space-mono-latin-ext-700-normal.woff +0 -0
  252. package/plugin/fonts/syne/OFL.txt +93 -0
  253. package/plugin/fonts/syne/syne-latin-400-normal.woff +0 -0
  254. package/plugin/fonts/syne/syne-latin-500-normal.woff +0 -0
  255. package/plugin/fonts/syne/syne-latin-600-normal.woff +0 -0
  256. package/plugin/fonts/syne/syne-latin-700-normal.woff +0 -0
  257. package/plugin/fonts/syne/syne-latin-800-normal.woff +0 -0
  258. package/plugin/fonts/syne/syne-latin-ext-400-normal.woff +0 -0
  259. package/plugin/fonts/syne/syne-latin-ext-500-normal.woff +0 -0
  260. package/plugin/fonts/syne/syne-latin-ext-600-normal.woff +0 -0
  261. package/plugin/fonts/syne/syne-latin-ext-700-normal.woff +0 -0
  262. package/plugin/fonts/syne/syne-latin-ext-800-normal.woff +0 -0
  263. package/plugin/fonts/unbounded/OFL.txt +93 -0
  264. package/plugin/fonts/unbounded/unbounded-latin-400-normal.woff +0 -0
  265. package/plugin/fonts/unbounded/unbounded-latin-500-normal.woff +0 -0
  266. package/plugin/fonts/unbounded/unbounded-latin-600-normal.woff +0 -0
  267. package/plugin/fonts/unbounded/unbounded-latin-700-normal.woff +0 -0
  268. package/plugin/fonts/unbounded/unbounded-latin-800-normal.woff +0 -0
  269. package/plugin/fonts/unbounded/unbounded-latin-900-normal.woff +0 -0
  270. package/plugin/fonts/unbounded/unbounded-latin-ext-400-normal.woff +0 -0
  271. package/plugin/fonts/unbounded/unbounded-latin-ext-500-normal.woff +0 -0
  272. package/plugin/fonts/unbounded/unbounded-latin-ext-600-normal.woff +0 -0
  273. package/plugin/fonts/unbounded/unbounded-latin-ext-700-normal.woff +0 -0
  274. package/plugin/fonts/unbounded/unbounded-latin-ext-800-normal.woff +0 -0
  275. package/plugin/fonts/unbounded/unbounded-latin-ext-900-normal.woff +0 -0
  276. package/plugin/fonts/young-serif/OFL.txt +93 -0
  277. package/plugin/fonts/young-serif/young-serif-latin-400-normal.woff +0 -0
  278. package/plugin/fonts/young-serif/young-serif-latin-ext-400-normal.woff +0 -0
  279. package/plugin/fonts/zilla-slab/OFL.txt +93 -0
  280. package/plugin/fonts/zilla-slab/zilla-slab-latin-400-normal.woff +0 -0
  281. package/plugin/fonts/zilla-slab/zilla-slab-latin-500-normal.woff +0 -0
  282. package/plugin/fonts/zilla-slab/zilla-slab-latin-600-normal.woff +0 -0
  283. package/plugin/fonts/zilla-slab/zilla-slab-latin-700-normal.woff +0 -0
  284. package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-400-normal.woff +0 -0
  285. package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-500-normal.woff +0 -0
  286. package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-600-normal.woff +0 -0
  287. package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-700-normal.woff +0 -0
  288. package/plugin/skills/audit/SKILL.md +22 -0
  289. package/plugin/skills/concepts/SKILL.md +35 -0
  290. package/plugin/skills/design/SKILL.md +149 -0
  291. package/plugin/skills/design/references/cli.md +96 -0
  292. package/plugin/skills/design/references/construction.md +254 -0
  293. package/plugin/skills/design/references/design-principles.md +163 -0
  294. package/plugin/skills/design/references/originality.md +44 -0
  295. package/plugin/skills/design/references/research-playbook.md +95 -0
  296. package/plugin/skills/design/references/svg-authoring.md +50 -0
  297. package/plugin/skills/design/references/workflow.md +79 -0
  298. package/plugin/skills/export/SKILL.md +38 -0
  299. package/plugin/skills/gallery/SKILL.md +30 -0
  300. package/plugin/skills/markilo/SKILL.md +12 -0
  301. package/plugin/skills/originality/SKILL.md +25 -0
  302. package/plugin/skills/refine/SKILL.md +25 -0
  303. package/plugin/skills/research/SKILL.md +28 -0
@@ -0,0 +1,304 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <title>Eval report — markilo v0.1.0</title>
7
+ </head>
8
+ <body>
9
+ <style>
10
+ :root{--plane:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--ink-3:#6b6a64;--hairline:rgba(11,11,11,.10);--grid:#e1e0d9;--inset:rgba(11,11,11,.04);--accent:#2a78d6;--base-fill:#6b6a64;--delta-good:#006300;--good:#067d06;--warning:#8a6100;--critical:#d03b3b;
11
+ color-scheme:light dark;
12
+ }
13
+ @media (prefers-color-scheme:dark){:root{--plane:#0d0d0d;--surface:#1a1a19;--ink:#ffffff;--ink-2:#c3c2b7;--ink-3:#898781;--hairline:rgba(255,255,255,.10);--grid:#2c2c2a;--inset:rgba(255,255,255,.05);--accent:#3987e5;--base-fill:#898781;--delta-good:#0ca30c;--good:#0ca30c;--warning:#fab219;--critical:#e06c6c;color-scheme:dark}}
14
+ :root[data-theme="dark"]{--plane:#0d0d0d;--surface:#1a1a19;--ink:#ffffff;--ink-2:#c3c2b7;--ink-3:#898781;--hairline:rgba(255,255,255,.10);--grid:#2c2c2a;--inset:rgba(255,255,255,.05);--accent:#3987e5;--base-fill:#898781;--delta-good:#0ca30c;--good:#0ca30c;--warning:#fab219;--critical:#e06c6c;color-scheme:dark}
15
+ :root[data-theme="light"]{--plane:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--ink-3:#6b6a64;--hairline:rgba(11,11,11,.10);--grid:#e1e0d9;--inset:rgba(11,11,11,.04);--accent:#2a78d6;--base-fill:#6b6a64;--delta-good:#006300;--good:#067d06;--warning:#8a6100;--critical:#d03b3b;color-scheme:light}
16
+ *{box-sizing:border-box}
17
+ body{margin:0;background:var(--plane);color:var(--ink);
18
+ font:14px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;
19
+ -webkit-text-size-adjust:100%}
20
+ .wrap{max-width:880px;margin:0 auto;padding:40px 24px 64px;display:flex;flex-direction:column;gap:20px}
21
+ .eyebrow{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
22
+ header h1{margin:2px 0 0;font-size:24px;font-weight:600;line-height:1.25;text-wrap:balance}
23
+ .meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;color:var(--ink-2);font-size:13px}
24
+ .meta .num{font-variant-numeric:tabular-nums lining-nums}
25
+ .banner{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:8px;
26
+ border:1px solid var(--hairline);background:var(--surface);font-size:13px}
27
+ .banner .chip-warn{color:var(--warning);font-weight:600}
28
+ .tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
29
+ .tile{background:var(--surface);border:1px solid var(--hairline);border-radius:10px;padding:14px 16px;
30
+ display:flex;flex-direction:column;gap:4px}
31
+ .tile .label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
32
+ .tile .value{font-size:26px;font-weight:600;font-variant-numeric:tabular-nums lining-nums;line-height:1.1}
33
+ .tile.hero .value{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:48px}
34
+ .tile .sub{font-size:12px;color:var(--ink-2);font-variant-numeric:tabular-nums}
35
+ .tile .value.delta-pos{color:var(--delta-good)}
36
+ .tile .value.delta-neg{color:var(--critical)}
37
+ .toolbar{display:flex;gap:8px;justify-content:flex-end}
38
+ .toolbar button{font:12px system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink-2);
39
+ background:var(--surface);border:1px solid var(--hairline);border-radius:6px;padding:4px 10px;cursor:pointer}
40
+ .toolbar button:hover{color:var(--ink)}
41
+ .toolbar button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
42
+ .case{background:var(--surface);border:1px solid var(--hairline);border-radius:10px;padding:18px 20px;
43
+ display:flex;flex-direction:column;gap:10px}
44
+ .case-regressed{border-left:3px solid var(--critical)}
45
+ .verdict{margin:6px 0 0;font-size:15px}
46
+ .verdict .delta{font-size:15px}
47
+ .flag{font-size:11px;font-weight:600;color:var(--warning);white-space:nowrap}
48
+ .star{color:var(--warning);font-size:.45em;vertical-align:super;line-height:0;cursor:help}
49
+ .legend summary{cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2)}
50
+ .legend-list{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-2)}
51
+ .case-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
52
+ .case-head h2{margin:0;font-size:16px;font-weight:600}
53
+ .case-head .spacer{flex:1}
54
+ .case-score{font-size:15px;font-weight:600}
55
+ .mono{font:12px "SF Mono",ui-monospace,Menlo,Consolas,monospace}
56
+ .num{font-variant-numeric:tabular-nums lining-nums}
57
+ .muted{color:var(--ink-3);font-size:12px}
58
+ .meter{display:inline-block;position:relative;width:120px;height:6px;border-radius:4px;background:var(--grid);
59
+ vertical-align:middle}
60
+ .meter>span{display:block;height:100%;border-radius:4px;max-width:100%}
61
+ .meter .tick{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink-3);border-radius:1px}
62
+ .m-accent>span{background:var(--accent)}
63
+ .m-base>span{background:var(--base-fill)}
64
+ .delta{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
65
+ .delta-pos{color:var(--delta-good)}
66
+ .delta-neg{color:var(--critical)}
67
+ .delta-zero{color:var(--ink-3)}
68
+ details.section{border-top:1px solid var(--grid);padding-top:10px}
69
+ details.section>summary{cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.04em;
70
+ text-transform:uppercase;color:var(--ink-2);list-style-position:outside;margin-left:2px}
71
+ details.section>summary:hover{color:var(--ink)}
72
+ details.section[open]>summary{margin-bottom:8px}
73
+ .md{display:flex;flex-direction:column;gap:8px;background:var(--inset);border-radius:8px;
74
+ padding:12px 14px;overflow-wrap:break-word}
75
+ .md>:first-child{margin-top:0}
76
+ .md h1,.md h2,.md h3,.md h4,.md h5,.md h6{margin:4px 0 0;font-size:1em;font-weight:600;line-height:1.3}
77
+ .md p,.md ul,.md ol,.md blockquote,.md table,.md pre,.md hr{margin:0}
78
+ .md ul,.md ol{display:flex;flex-direction:column;gap:4px;padding-left:20px}
79
+ .md blockquote{border-left:2px solid var(--hairline);padding-left:10px;color:var(--ink-2)}
80
+ .md :not(pre)>code{background:var(--inset);padding:1px 4px;border-radius:4px;
81
+ font:.92em "SF Mono",ui-monospace,Menlo,Consolas,monospace}
82
+ .md pre{background:var(--inset);border:1px solid var(--hairline);padding:10px 12px;border-radius:6px;
83
+ overflow-x:auto;font:12px/1.5 "SF Mono",ui-monospace,Menlo,Consolas,monospace}
84
+ .md pre code{background:none;padding:0;font:inherit}
85
+ .md table{width:100%;border-collapse:collapse}
86
+ .md th,.md td{padding:5px 8px;text-align:left;vertical-align:top;border-bottom:1px solid var(--grid)}
87
+ .md th{font-weight:600;color:var(--ink-2)}
88
+ .md a{color:var(--accent);text-decoration:none}
89
+ .md a:hover{text-decoration:underline}
90
+ .grader-def{display:flex;flex-direction:column;gap:6px;padding:8px 0}
91
+ .grader-def+.grader-def{border-top:1px solid var(--grid)}
92
+ .grader-def-head{display:flex;align-items:baseline;gap:8px}
93
+ .grader-name{font:13px "SF Mono",ui-monospace,Menlo,Consolas,monospace;font-weight:600}
94
+ .badge{font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);
95
+ border:1px solid var(--hairline);border-radius:999px;padding:1px 8px}
96
+ .config{display:flex;flex-direction:column;gap:2px;background:var(--inset);border-radius:8px;padding:10px 14px}
97
+ .config code{font:12px "SF Mono",ui-monospace,Menlo,Consolas,monospace;overflow-wrap:anywhere}
98
+ .arm{display:flex;flex-direction:column;gap:8px;padding:6px 0}
99
+ .arm+.arm{border-top:1px dashed var(--grid);margin-top:4px;padding-top:12px}
100
+ .arm-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
101
+ .arm-label{font-size:13px;font-weight:600}
102
+ .run{border:1px solid var(--grid);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
103
+ .run-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
104
+ .run-title{font-size:12px;font-weight:600;color:var(--ink-2)}
105
+ .run-error .explanation{color:var(--ink-2)}
106
+ .note{font-size:12px;color:var(--ink-2)}
107
+ .graders{display:flex;flex-direction:column;gap:4px}
108
+ details.grader{border-radius:6px}
109
+ details.grader>summary{cursor:pointer;display:flex;align-items:baseline;gap:8px;padding:3px 4px;
110
+ border-radius:6px;list-style:none}
111
+ details.grader>summary::-webkit-details-marker{display:none}
112
+ details.grader>summary::before{content:'▸';font-size:10px;color:var(--ink-3);flex:none;
113
+ transition:transform .12s ease}
114
+ details.grader[open]>summary::before{transform:rotate(90deg)}
115
+ details.grader>summary:hover{background:var(--inset)}
116
+ details.grader>summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
117
+ .grader-body{padding:6px 8px 8px 24px;display:flex;flex-direction:column;gap:6px}
118
+ .chip{font-size:11px;font-weight:600;border-radius:999px;padding:1px 8px;white-space:nowrap}
119
+ .chip-pass{color:var(--good);border:1px solid currentColor}
120
+ .chip-fail{color:var(--critical);border:1px solid currentColor}
121
+ .chip.chip-warn{color:var(--warning);border:1px solid currentColor}
122
+ .explanation{margin:0;font-size:13px;color:var(--ink-2);white-space:pre-wrap;overflow-wrap:break-word}
123
+ .kv{display:flex;gap:8px;font-size:12px;color:var(--ink-3)}
124
+ .votes{font-variant-numeric:tabular-nums;letter-spacing:.1em}
125
+ pre.evidence{margin:0;background:var(--inset);border:1px solid var(--hairline);border-radius:6px;
126
+ padding:8px 10px;overflow-x:auto;max-height:320px;
127
+ font:12px/1.5 "SF Mono",ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:break-word}
128
+ footer{color:var(--ink-3);font-size:12px;text-align:center;padding-top:8px}
129
+ @media (prefers-reduced-motion:no-preference){
130
+ details.grader>summary,.toolbar button{transition:background .12s ease,color .12s ease}
131
+ }
132
+ @media (prefers-reduced-motion:reduce){
133
+ details.grader>summary::before{transition:none}
134
+ }
135
+ @media print{
136
+ :root,:root[data-theme="dark"],:root[data-theme="light"]{--plane:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--ink-3:#6b6a64;--hairline:rgba(11,11,11,.10);--grid:#e1e0d9;--inset:rgba(11,11,11,.04);--accent:#2a78d6;--base-fill:#6b6a64;--delta-good:#006300;--good:#067d06;--warning:#8a6100;--critical:#d03b3b;color-scheme:light}
137
+ body{background:#fff}
138
+ .toolbar{display:none}
139
+ .case,.run,.grader-def{break-inside:avoid}
140
+ pre.evidence{max-height:none}
141
+ }
142
+ </style>
143
+ <div class="wrap">
144
+ <header>
145
+ <div class="eyebrow">Plugin eval report</div>
146
+ <h1>markilo v0.1.0</h1>
147
+
148
+ <div class="meta">
149
+ <span class="mono">.</span>
150
+ <span>Claude Code v2.1.308</span>
151
+ <span class="num">2026-10-30 00:32 UTC</span>
152
+ <span class="num">22s</span>
153
+ <span class="num">$0.10</span>
154
+ <span class="num">1 runs</span>
155
+
156
+
157
+ <span>model sonnet</span>
158
+ <span>judge default</span>
159
+ <span class="num">threshold 100%</span>
160
+ <span>filtered: --case wordmark-outlined</span>
161
+ </div>
162
+ </header>
163
+
164
+ <section class="tiles">
165
+ <div class="tile hero"><span class="label">Suite score</span><span class="value">100%</span><span class="sub">mean of per-case scores</span></div>
166
+
167
+ <div class="tile"><span class="label">Cases</span><span class="value num">1</span><span class="sub">1 of 1 ≥ 100% threshold</span></div>
168
+ <div class="tile"><span class="label">Perfect runs</span><span class="value num">100%</span><span class="sub">runs where every grader passed</span></div>
169
+ </section>
170
+ <details class="section legend">
171
+ <summary>How to read this report</summary>
172
+ <ul class="legend-list">
173
+ <li>A run's score is the weighted fraction of its graders that passed; a "perfect" run passed every grader.</li>
174
+ <li>A case's score is the mean of its runs; a case passes when its score is at or above the 100% threshold (the tick on each case bar).</li>
175
+ <li>The suite score is the mean of the per-case scores.</li>
176
+ <li>Judge votes are independent samples of the LLM judge; the majority decides pass or fail.</li>
177
+ <li><strong>No baseline arm was run</strong> (ablation off) — this report shows absolute scores only and cannot say whether the plugin caused them. Re-run with <code>--ablation with-without</code> to measure the plugin’s effect.</li>
178
+
179
+ </ul>
180
+ </details>
181
+ <div class="toolbar"><button type="button" data-act="expand">Expand all</button><button type="button" data-act="collapse">Collapse all</button></div>
182
+ <article class="case" id="case-1">
183
+ <div class="case-head">
184
+ <h2>wordmark-outlined</h2>
185
+ <span class="muted mono">evals/wordmark-outlined</span>
186
+ <span class="spacer"></span>
187
+
188
+
189
+
190
+ <span class="meter m-accent" aria-hidden="true"><span style="width:100.0%"></span><i class="tick" style="left:100.0%"></i></span>
191
+ <span class="num case-score">100%</span>
192
+ </div>
193
+
194
+ <details class="section" open>
195
+ <summary>Results</summary>
196
+ <section class="arm">
197
+ <div class="arm-head">
198
+ <span class="arm-label">Runs</span>
199
+ <span class="meter m-accent" aria-hidden="true"><span style="width:100.0%"></span></span>
200
+ <span class="num">100%</span>
201
+ <span class="muted num">100% of runs perfect</span>
202
+ </div>
203
+ <div class="run">
204
+ <div class="run-head">
205
+ <span class="run-title">Run 1</span>
206
+ <span class="meter m-accent" aria-hidden="true"><span style="width:100.0%"></span></span>
207
+ <span class="num">100%</span>
208
+ <span class="muted num">8 turns · $0.10 · 00:32:27 UTC</span>
209
+ </div>
210
+
211
+ <div class="graders"><details class="grader">
212
+ <summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">no-network</span> </summary>
213
+ <div class="grader-body">
214
+ <p class="explanation">Bash called 0x (expected 0..0)</p>
215
+
216
+ </div>
217
+ </details>
218
+ <details class="grader">
219
+ <summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">sora</span> </summary>
220
+ <div class="grader-body">
221
+ <p class="explanation">matched Sora 600</p>
222
+
223
+ </div>
224
+ </details>
225
+ <details class="grader">
226
+ <summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">svg-created</span> </summary>
227
+ <div class="grader-body">
228
+ <p class="explanation">**/*.svg exists as expected</p>
229
+
230
+ </div>
231
+ </details>
232
+ <details class="grader">
233
+ <summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">used-wordmark</span> </summary>
234
+ <div class="grader-body">
235
+ <p class="explanation">Bash called 2x (expected 1..∞)</p>
236
+
237
+ </div>
238
+ </details>
239
+ <details class="grader">
240
+ <summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">workspace</span> </summary>
241
+ <div class="grader-body">
242
+ <p class="explanation">**/markilo.json exists as expected</p>
243
+
244
+ </div>
245
+ </details></div>
246
+ </div>
247
+ </section>
248
+ </details>
249
+ <details class="section" open>
250
+ <summary>Prompt</summary>
251
+ <div class="md"><p>/markilo:design Set up a Markilo workspace here for a fictional brand called "Velora" (a travel journal app). For now I only need a wordmark: lowercase, Sora 600, slightly tight tracking, ink color #1b1f2a. Save it in the workspace and tell me where it is. Do not design a symbol yet and do not research anything online.</p>
252
+ </div>
253
+ </details>
254
+ <details class="section" open>
255
+ <summary>Graders — what "good" means for this case</summary>
256
+ <div class="grader-def">
257
+ <div class="grader-def-head"><span class="grader-name">no-network</span><span class="badge">tool_used</span></div>
258
+ <div class="config"><div class="kv"><span>tool</span><code>&quot;Bash&quot;</code></div><div class="kv"><span>input_match</span><code>&quot;allow-network&quot;</code></div><div class="kv"><span>min</span><code>0</code></div><div class="kv"><span>max</span><code>0</code></div><div class="kv"><span>arm</span><code>&quot;both&quot;</code></div></div>
259
+ </div>
260
+ <div class="grader-def">
261
+ <div class="grader-def-head"><span class="grader-name">sora</span><span class="badge">regex</span></div>
262
+ <div class="config"><div class="kv"><span>target</span><code>&quot;trace&quot;</code></div><div class="kv"><span>pattern</span><code>&quot;Sora 600&quot;</code></div><div class="kv"><span>flags</span><code>&quot;&quot;</code></div><div class="kv"><span>match</span><code>&quot;contains&quot;</code></div></div>
263
+ </div>
264
+ <div class="grader-def">
265
+ <div class="grader-def-head"><span class="grader-name">svg-created</span><span class="badge">file_exists</span></div>
266
+ <div class="config"><div class="kv"><span>path</span><code>&quot;**/*.svg&quot;</code></div><div class="kv"><span>exists</span><code>true</code></div></div>
267
+ </div>
268
+ <div class="grader-def">
269
+ <div class="grader-def-head"><span class="grader-name">used-wordmark</span><span class="badge">tool_used</span></div>
270
+ <div class="config"><div class="kv"><span>tool</span><code>&quot;Bash&quot;</code></div><div class="kv"><span>input_match</span><code>&quot;markilo\\.mjs\\S*\\s+wordmark&quot;</code></div><div class="kv"><span>arm</span><code>&quot;both&quot;</code></div></div>
271
+ </div>
272
+ <div class="grader-def">
273
+ <div class="grader-def-head"><span class="grader-name">workspace</span><span class="badge">file_exists</span></div>
274
+ <div class="config"><div class="kv"><span>path</span><code>&quot;**/markilo.json&quot;</code></div><div class="kv"><span>exists</span><code>true</code></div></div>
275
+ </div>
276
+ </details>
277
+ </article>
278
+ <footer>Generated by <code>claude plugin eval</code> · schema v1 · scores are not comparable across different suites</footer>
279
+ </div>
280
+ <script>
281
+ document.addEventListener('DOMContentLoaded',function(){
282
+ var bar=document.querySelector('.toolbar');
283
+ if(!bar)return;
284
+ bar.addEventListener('click',function(e){
285
+ var b=e.target&&e.target.closest('button');
286
+ if(!b)return;
287
+ var open=b.dataset.act==='expand';
288
+ document.querySelectorAll('details.section, details.grader').forEach(function(d){d.open=open});
289
+ });
290
+ });
291
+ // Collapsed details vanish from print/PDF; these pages are share artifacts.
292
+ window.addEventListener('beforeprint',function(){
293
+ document.querySelectorAll('details').forEach(function(d){
294
+ if(!d.open){d.dataset.printOpened='1';d.open=true}
295
+ });
296
+ });
297
+ window.addEventListener('afterprint',function(){
298
+ document.querySelectorAll('details[data-print-opened]').forEach(function(d){
299
+ d.open=false;delete d.dataset.printOpened;
300
+ });
301
+ });
302
+ </script>
303
+ </body>
304
+ </html>