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,260 @@
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:29 UTC</span>
152
+ <span class="num">8s</span>
153
+ <span class="num">$0.07</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 doctor-smoke</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>doctor-smoke</h2>
185
+ <span class="muted mono">evals/doctor-smoke</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">3 turns · $0.07 · 00:29:38 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">ran-doctor</span> </summary>
213
+ <div class="grader-body">
214
+ <p class="explanation">Bash called 1x (expected 1..∞)</p>
215
+
216
+ </div>
217
+ </details></div>
218
+ </div>
219
+ </section>
220
+ </details>
221
+ <details class="section" open>
222
+ <summary>Prompt</summary>
223
+ <div class="md"><p>/markilo:design Before we start anything, check that the Markilo toolchain works on this machine and tell me the result in one sentence.</p>
224
+ </div>
225
+ </details>
226
+ <details class="section" open>
227
+ <summary>Graders — what "good" means for this case</summary>
228
+ <div class="grader-def">
229
+ <div class="grader-def-head"><span class="grader-name">ran-doctor</span><span class="badge">tool_used</span></div>
230
+ <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.*doctor&quot;</code></div><div class="kv"><span>arm</span><code>&quot;both&quot;</code></div></div>
231
+ </div>
232
+ </details>
233
+ </article>
234
+ <footer>Generated by <code>claude plugin eval</code> · schema v1 · scores are not comparable across different suites</footer>
235
+ </div>
236
+ <script>
237
+ document.addEventListener('DOMContentLoaded',function(){
238
+ var bar=document.querySelector('.toolbar');
239
+ if(!bar)return;
240
+ bar.addEventListener('click',function(e){
241
+ var b=e.target&&e.target.closest('button');
242
+ if(!b)return;
243
+ var open=b.dataset.act==='expand';
244
+ document.querySelectorAll('details.section, details.grader').forEach(function(d){d.open=open});
245
+ });
246
+ });
247
+ // Collapsed details vanish from print/PDF; these pages are share artifacts.
248
+ window.addEventListener('beforeprint',function(){
249
+ document.querySelectorAll('details').forEach(function(d){
250
+ if(!d.open){d.dataset.printOpened='1';d.open=true}
251
+ });
252
+ });
253
+ window.addEventListener('afterprint',function(){
254
+ document.querySelectorAll('details[data-print-opened]').forEach(function(d){
255
+ d.open=false;delete d.dataset.printOpened;
256
+ });
257
+ });
258
+ </script>
259
+ </body>
260
+ </html>
@@ -0,0 +1,119 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "claudeVersion": "2.1.308",
4
+ "startedAt": "2026-10-30T00:29:53.409Z",
5
+ "durationSeconds": 35,
6
+ "costUsd": 0.11078160000000001,
7
+ "partial": false,
8
+ "suite": {
9
+ "root": "/Users/cihan/Developer/markilo/plugin",
10
+ "ablation": "none",
11
+ "modelOverride": "sonnet",
12
+ "caseFilter": "wordmark-outlined",
13
+ "threshold": 1,
14
+ "concurrency": 1,
15
+ "plugins": [
16
+ {
17
+ "name": "markilo",
18
+ "version": "0.1.0",
19
+ "path": "/Users/cihan/Developer/markilo/plugin"
20
+ }
21
+ ]
22
+ },
23
+ "cases": [
24
+ {
25
+ "name": "wordmark-outlined",
26
+ "dir": "evals/wordmark-outlined",
27
+ "source": "prose",
28
+ "promptMarkdown": "/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.",
29
+ "runsPerCase": 1,
30
+ "timeoutSeconds": 300,
31
+ "maxTurns": 14,
32
+ "graders": [
33
+ {
34
+ "name": "no-network",
35
+ "type": "tool_used",
36
+ "weight": 1,
37
+ "config": {
38
+ "tool": "Bash",
39
+ "input_match": "allow-network",
40
+ "min": 0,
41
+ "max": 0,
42
+ "arm": "both"
43
+ }
44
+ },
45
+ {
46
+ "name": "used-wordmark",
47
+ "type": "tool_used",
48
+ "weight": 1,
49
+ "config": {
50
+ "tool": "Bash",
51
+ "input_match": "markilo\\.mjs._wordmark._--font\\s+sora",
52
+ "arm": "both"
53
+ }
54
+ },
55
+ {
56
+ "name": "workspace",
57
+ "type": "file_exists",
58
+ "weight": 1,
59
+ "config": {
60
+ "path": "**/markilo.json",
61
+ "exists": true
62
+ }
63
+ }
64
+ ],
65
+ "arms": {
66
+ "with": [
67
+ {
68
+ "score": 0.6666666666666666,
69
+ "passed": false,
70
+ "turns": 9,
71
+ "costUsd": 0.11078160000000001,
72
+ "judgeCostUsd": 0,
73
+ "durationSeconds": 35,
74
+ "startedAt": "2026-10-30T00:29:53.742Z",
75
+ "error": null,
76
+ "tracePath": "/private/tmp/e-BgyL9j/out/trace.jsonl",
77
+ "skippedPaidGraders": false,
78
+ "graders": [
79
+ {
80
+ "name": "no-network",
81
+ "passed": true,
82
+ "weight": 1,
83
+ "explanation": "Bash called 0x (expected 0..0)",
84
+ "withOnly": false,
85
+ "scored": true
86
+ },
87
+ {
88
+ "name": "used-wordmark",
89
+ "passed": false,
90
+ "weight": 1,
91
+ "explanation": "Bash called 0x (expected 1..∞)",
92
+ "withOnly": false,
93
+ "scored": true
94
+ },
95
+ {
96
+ "name": "workspace",
97
+ "passed": true,
98
+ "weight": 1,
99
+ "explanation": "**/markilo.json exists as expected",
100
+ "withOnly": false,
101
+ "scored": true
102
+ }
103
+ ]
104
+ }
105
+ ]
106
+ },
107
+ "aggregates": {
108
+ "score": 0.6666666666666666,
109
+ "passRate": 0
110
+ }
111
+ }
112
+ ],
113
+ "aggregates": {
114
+ "casesTotal": 1,
115
+ "casesPassed": 0,
116
+ "overallScore": 0.6666666666666666,
117
+ "overallPassRate": 0
118
+ }
119
+ }