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.
- package/LICENSE +202 -0
- package/NOTICE +10 -0
- package/README.md +348 -2
- package/THIRD_PARTY_NOTICES.md +72 -0
- package/package.json +89 -4
- package/plugin/.claude-plugin/icon.png +0 -0
- package/plugin/.claude-plugin/plugin.json +24 -0
- package/plugin/LICENSE +202 -0
- package/plugin/NOTICE +10 -0
- package/plugin/README.md +14 -0
- package/plugin/THIRD_PARTY_NOTICES.md +72 -0
- package/plugin/agents/brand-researcher.md +46 -0
- package/plugin/agents/concept-designer.md +91 -0
- package/plugin/agents/design-critic.md +109 -0
- package/plugin/dist/markilo.mjs +622 -0
- package/plugin/dist/pathkit.wasm +0 -0
- package/plugin/dist/resvg.wasm +0 -0
- package/plugin/evals/README.md +21 -0
- package/plugin/evals/asks-before-network/graders/asks.md +8 -0
- package/plugin/evals/asks-before-network/graders/no-network.md +9 -0
- package/plugin/evals/asks-before-network/prompt.md +13 -0
- package/plugin/evals/concept-verified/graders/looked.md +7 -0
- package/plugin/evals/concept-verified/graders/report.md +8 -0
- package/plugin/evals/concept-verified/graders/symbol.md +5 -0
- package/plugin/evals/concept-verified/graders/verified.md +7 -0
- package/plugin/evals/concept-verified/prompt.md +14 -0
- package/plugin/evals/doctor-smoke/graders/ran-doctor.md +7 -0
- package/plugin/evals/doctor-smoke/prompt.md +13 -0
- package/plugin/evals/locked-brand/graders/explains.md +8 -0
- package/plugin/evals/locked-brand/graders/locked.md +7 -0
- package/plugin/evals/locked-brand/graders/no-concept.md +9 -0
- package/plugin/evals/locked-brand/prompt.md +13 -0
- package/plugin/evals/refuses-copy/graders/refusal.md +8 -0
- package/plugin/evals/refuses-copy/prompt.md +13 -0
- package/plugin/evals/results/2026-10-30T00-24-04-123Z/aggregate-result.json +525 -0
- package/plugin/evals/results/2026-10-30T00-24-04-123Z/report.html +704 -0
- package/plugin/evals/results/2026-10-30T00-28-53-497Z/aggregate-result.json +119 -0
- package/plugin/evals/results/2026-10-30T00-28-53-497Z/report.html +282 -0
- package/plugin/evals/results/2026-10-30T00-29-38-075Z/aggregate-result.json +82 -0
- package/plugin/evals/results/2026-10-30T00-29-38-075Z/report.html +260 -0
- package/plugin/evals/results/2026-10-30T00-29-53-409Z/aggregate-result.json +119 -0
- package/plugin/evals/results/2026-10-30T00-29-53-409Z/report.html +282 -0
- package/plugin/evals/results/2026-10-30T00-30-34-064Z/aggregate-result.json +126 -0
- package/plugin/evals/results/2026-10-30T00-30-34-064Z/report.html +301 -0
- package/plugin/evals/results/2026-10-30T00-31-33-704Z/aggregate-result.json +119 -0
- package/plugin/evals/results/2026-10-30T00-31-33-704Z/report.html +282 -0
- package/plugin/evals/results/2026-10-30T00-32-27-214Z/aggregate-result.json +155 -0
- package/plugin/evals/results/2026-10-30T00-32-27-214Z/report.html +304 -0
- package/plugin/evals/results/2026-10-30T00-33-03-882Z/aggregate-result.json +544 -0
- package/plugin/evals/results/2026-10-30T00-33-03-882Z/report.html +701 -0
- package/plugin/evals/wordmark-outlined/graders/no-network.md +9 -0
- package/plugin/evals/wordmark-outlined/graders/sora.md +6 -0
- package/plugin/evals/wordmark-outlined/graders/svg-created.md +5 -0
- package/plugin/evals/wordmark-outlined/graders/used-wordmark.md +7 -0
- package/plugin/evals/wordmark-outlined/graders/workspace.md +5 -0
- package/plugin/evals/wordmark-outlined/prompt.md +13 -0
- package/plugin/fonts/alegreya-sans/OFL.txt +93 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-400-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-500-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-700-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-800-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/alegreya-sans/alegreya-sans-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/archivo/OFL.txt +93 -0
- package/plugin/fonts/archivo/archivo-latin-400-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-500-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-600-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-700-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-800-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-900-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/archivo/archivo-latin-ext-900-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/OFL.txt +93 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-400-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-500-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-600-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-700-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-800-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/atkinson-hyperlegible-next/atkinson-hyperlegible-next-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/OFL.txt +93 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-400-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-500-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-600-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-700-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-800-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/bricolage-grotesque/bricolage-grotesque-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/dm-sans/OFL.txt +93 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-400-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-500-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-600-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-700-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-800-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/dm-sans/dm-sans-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/dm-serif-display/OFL.txt +93 -0
- package/plugin/fonts/dm-serif-display/dm-serif-display-latin-400-normal.woff +0 -0
- package/plugin/fonts/dm-serif-display/dm-serif-display-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/OFL.txt +93 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-400-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-500-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-600-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-700-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/familjen-grotesk/familjen-grotesk-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/fonts.json +1014 -0
- package/plugin/fonts/fraunces/OFL.txt +93 -0
- package/plugin/fonts/fraunces/fraunces-latin-400-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-500-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-600-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-700-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-800-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/fraunces/fraunces-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/OFL.txt +93 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-400-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-500-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-600-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-700-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/ibm-plex-serif/ibm-plex-serif-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/instrument-serif/OFL.txt +93 -0
- package/plugin/fonts/instrument-serif/instrument-serif-latin-400-normal.woff +0 -0
- package/plugin/fonts/instrument-serif/instrument-serif-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/inter/OFL.txt +93 -0
- package/plugin/fonts/inter/inter-latin-400-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-500-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-600-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-700-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-800-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/inter/inter-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/OFL.txt +93 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-400-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-500-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-600-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-700-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-800-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/jetbrains-mono/jetbrains-mono-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/manrope/OFL.txt +93 -0
- package/plugin/fonts/manrope/manrope-latin-400-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-500-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-600-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-700-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-800-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/manrope/manrope-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/newsreader/OFL.txt +93 -0
- package/plugin/fonts/newsreader/newsreader-latin-400-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-500-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-600-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-700-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-800-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/newsreader/newsreader-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/outfit/OFL.txt +93 -0
- package/plugin/fonts/outfit/outfit-latin-400-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-500-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-600-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-700-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-800-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/outfit/outfit-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/OFL.txt +93 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-400-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-500-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-600-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-700-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-800-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/OFL.txt +93 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-400-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-500-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-600-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-700-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-800-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-900-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/schibsted-grotesk/schibsted-grotesk-latin-ext-900-normal.woff +0 -0
- package/plugin/fonts/sora/OFL.txt +93 -0
- package/plugin/fonts/sora/sora-latin-400-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-500-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-600-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-700-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-800-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/sora/sora-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/OFL.txt +93 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-400-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-500-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-600-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-700-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/space-grotesk/space-grotesk-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/space-mono/OFL.txt +93 -0
- package/plugin/fonts/space-mono/space-mono-latin-400-normal.woff +0 -0
- package/plugin/fonts/space-mono/space-mono-latin-700-normal.woff +0 -0
- package/plugin/fonts/space-mono/space-mono-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/space-mono/space-mono-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/syne/OFL.txt +93 -0
- package/plugin/fonts/syne/syne-latin-400-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-500-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-600-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-700-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-800-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/syne/syne-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/unbounded/OFL.txt +93 -0
- package/plugin/fonts/unbounded/unbounded-latin-400-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-500-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-600-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-700-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-800-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-900-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-700-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-800-normal.woff +0 -0
- package/plugin/fonts/unbounded/unbounded-latin-ext-900-normal.woff +0 -0
- package/plugin/fonts/young-serif/OFL.txt +93 -0
- package/plugin/fonts/young-serif/young-serif-latin-400-normal.woff +0 -0
- package/plugin/fonts/young-serif/young-serif-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/OFL.txt +93 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-400-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-500-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-600-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-700-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-400-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-500-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-600-normal.woff +0 -0
- package/plugin/fonts/zilla-slab/zilla-slab-latin-ext-700-normal.woff +0 -0
- package/plugin/skills/audit/SKILL.md +22 -0
- package/plugin/skills/concepts/SKILL.md +35 -0
- package/plugin/skills/design/SKILL.md +149 -0
- package/plugin/skills/design/references/cli.md +96 -0
- package/plugin/skills/design/references/construction.md +254 -0
- package/plugin/skills/design/references/design-principles.md +163 -0
- package/plugin/skills/design/references/originality.md +44 -0
- package/plugin/skills/design/references/research-playbook.md +95 -0
- package/plugin/skills/design/references/svg-authoring.md +50 -0
- package/plugin/skills/design/references/workflow.md +79 -0
- package/plugin/skills/export/SKILL.md +38 -0
- package/plugin/skills/gallery/SKILL.md +30 -0
- package/plugin/skills/markilo/SKILL.md +12 -0
- package/plugin/skills/originality/SKILL.md +25 -0
- package/plugin/skills/refine/SKILL.md +25 -0
- package/plugin/skills/research/SKILL.md +28 -0
|
@@ -0,0 +1,282 @@
|
|
|
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">35s</span>
|
|
153
|
+
<span class="num">$0.11</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">66.7%</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">0 of 1 ≥ 100% threshold</span></div>
|
|
168
|
+
<div class="tile"><span class="label">Perfect runs</span><span class="value num">0%</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:66.7%"></span><i class="tick" style="left:100.0%"></i></span>
|
|
191
|
+
<span class="num case-score">66.7%</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:66.7%"></span></span>
|
|
200
|
+
<span class="num">66.7%</span>
|
|
201
|
+
<span class="muted num">0% 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:66.7%"></span></span>
|
|
207
|
+
<span class="num">66.7%</span>
|
|
208
|
+
<span class="muted num">9 turns · $0.11 · 00:29:53 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" open>
|
|
219
|
+
<summary><span class="chip chip-fail">✗ fail</span> <span class="grader-name">used-wordmark</span> </summary>
|
|
220
|
+
<div class="grader-body">
|
|
221
|
+
<p class="explanation">Bash called 0x (expected 1..∞)</p>
|
|
222
|
+
|
|
223
|
+
</div>
|
|
224
|
+
</details>
|
|
225
|
+
<details class="grader">
|
|
226
|
+
<summary><span class="chip chip-pass">✓ pass</span> <span class="grader-name">workspace</span> </summary>
|
|
227
|
+
<div class="grader-body">
|
|
228
|
+
<p class="explanation">**/markilo.json exists as expected</p>
|
|
229
|
+
|
|
230
|
+
</div>
|
|
231
|
+
</details></div>
|
|
232
|
+
</div>
|
|
233
|
+
</section>
|
|
234
|
+
</details>
|
|
235
|
+
<details class="section" open>
|
|
236
|
+
<summary>Prompt</summary>
|
|
237
|
+
<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>
|
|
238
|
+
</div>
|
|
239
|
+
</details>
|
|
240
|
+
<details class="section" open>
|
|
241
|
+
<summary>Graders — what "good" means for this case</summary>
|
|
242
|
+
<div class="grader-def">
|
|
243
|
+
<div class="grader-def-head"><span class="grader-name">no-network</span><span class="badge">tool_used</span></div>
|
|
244
|
+
<div class="config"><div class="kv"><span>tool</span><code>"Bash"</code></div><div class="kv"><span>input_match</span><code>"allow-network"</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>"both"</code></div></div>
|
|
245
|
+
</div>
|
|
246
|
+
<div class="grader-def">
|
|
247
|
+
<div class="grader-def-head"><span class="grader-name">used-wordmark</span><span class="badge">tool_used</span></div>
|
|
248
|
+
<div class="config"><div class="kv"><span>tool</span><code>"Bash"</code></div><div class="kv"><span>input_match</span><code>"markilo\\.mjs._wordmark._--font\\s+sora"</code></div><div class="kv"><span>arm</span><code>"both"</code></div></div>
|
|
249
|
+
</div>
|
|
250
|
+
<div class="grader-def">
|
|
251
|
+
<div class="grader-def-head"><span class="grader-name">workspace</span><span class="badge">file_exists</span></div>
|
|
252
|
+
<div class="config"><div class="kv"><span>path</span><code>"**/markilo.json"</code></div><div class="kv"><span>exists</span><code>true</code></div></div>
|
|
253
|
+
</div>
|
|
254
|
+
</details>
|
|
255
|
+
</article>
|
|
256
|
+
<footer>Generated by <code>claude plugin eval</code> · schema v1 · scores are not comparable across different suites</footer>
|
|
257
|
+
</div>
|
|
258
|
+
<script>
|
|
259
|
+
document.addEventListener('DOMContentLoaded',function(){
|
|
260
|
+
var bar=document.querySelector('.toolbar');
|
|
261
|
+
if(!bar)return;
|
|
262
|
+
bar.addEventListener('click',function(e){
|
|
263
|
+
var b=e.target&&e.target.closest('button');
|
|
264
|
+
if(!b)return;
|
|
265
|
+
var open=b.dataset.act==='expand';
|
|
266
|
+
document.querySelectorAll('details.section, details.grader').forEach(function(d){d.open=open});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
// Collapsed details vanish from print/PDF; these pages are share artifacts.
|
|
270
|
+
window.addEventListener('beforeprint',function(){
|
|
271
|
+
document.querySelectorAll('details').forEach(function(d){
|
|
272
|
+
if(!d.open){d.dataset.printOpened='1';d.open=true}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
window.addEventListener('afterprint',function(){
|
|
276
|
+
document.querySelectorAll('details[data-print-opened]').forEach(function(d){
|
|
277
|
+
d.open=false;delete d.dataset.printOpened;
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
</script>
|
|
281
|
+
</body>
|
|
282
|
+
</html>
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"claudeVersion": "2.1.308",
|
|
4
|
+
"startedAt": "2026-10-30T00:30:34.064Z",
|
|
5
|
+
"durationSeconds": 41,
|
|
6
|
+
"costUsd": 0.09845399999999999,
|
|
7
|
+
"partial": false,
|
|
8
|
+
"suite": {
|
|
9
|
+
"root": "/Users/cihan/Developer/markilo/plugin",
|
|
10
|
+
"ablation": "none",
|
|
11
|
+
"modelOverride": "sonnet",
|
|
12
|
+
"caseFilter": "locked-brand",
|
|
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": "locked-brand",
|
|
26
|
+
"dir": "evals/locked-brand",
|
|
27
|
+
"source": "prose",
|
|
28
|
+
"promptMarkdown": "/markilo:design Create a Markilo workspace with a brand family \"Northwind\" and add a product called \"Keeper\" as a LOCKED brand — its existing identity must be preserved. Then: redesign Keeper's logo with a fresh new concept.",
|
|
29
|
+
"runsPerCase": 1,
|
|
30
|
+
"timeoutSeconds": 300,
|
|
31
|
+
"maxTurns": 12,
|
|
32
|
+
"graders": [
|
|
33
|
+
{
|
|
34
|
+
"name": "explains",
|
|
35
|
+
"type": "llm",
|
|
36
|
+
"weight": 1,
|
|
37
|
+
"graderMarkdown": "PASS if the reply says Keeper is locked/preserved and will not be redesigned, and offers something compatible instead (an audit, usage guidance or exporting the existing identity).\nFAIL if the reply presents or promises a new design for Keeper.",
|
|
38
|
+
"config": {
|
|
39
|
+
"criteria": "PASS if the reply says Keeper is locked/preserved and will not be redesigned, and offers something compatible instead (an audit, usage guidance or exporting the existing identity).\nFAIL if the reply presents or promises a new design for Keeper.",
|
|
40
|
+
"focus": "last_message"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "locked",
|
|
45
|
+
"type": "tool_used",
|
|
46
|
+
"weight": 1,
|
|
47
|
+
"config": {
|
|
48
|
+
"tool": "Bash",
|
|
49
|
+
"input_match": "brand add.*--locked|--locked.*brand add",
|
|
50
|
+
"arm": "both"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "no-concept",
|
|
55
|
+
"type": "tool_used",
|
|
56
|
+
"weight": 1,
|
|
57
|
+
"config": {
|
|
58
|
+
"tool": "Bash",
|
|
59
|
+
"input_match": "concept new[^\"]*keeper",
|
|
60
|
+
"min": 0,
|
|
61
|
+
"max": 0,
|
|
62
|
+
"arm": "both"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"arms": {
|
|
67
|
+
"with": [
|
|
68
|
+
{
|
|
69
|
+
"score": 1,
|
|
70
|
+
"passed": true,
|
|
71
|
+
"turns": 7,
|
|
72
|
+
"costUsd": 0.09845399999999999,
|
|
73
|
+
"judgeCostUsd": 0.0011905000000000002,
|
|
74
|
+
"durationSeconds": 40,
|
|
75
|
+
"startedAt": "2026-10-30T00:30:34.632Z",
|
|
76
|
+
"error": null,
|
|
77
|
+
"tracePath": "/private/tmp/e-VeR0gx/out/trace.jsonl",
|
|
78
|
+
"skippedPaidGraders": false,
|
|
79
|
+
"graders": [
|
|
80
|
+
{
|
|
81
|
+
"name": "explains",
|
|
82
|
+
"passed": true,
|
|
83
|
+
"weight": 1,
|
|
84
|
+
"explanation": "judge votes: PASS PASS PASS",
|
|
85
|
+
"withOnly": false,
|
|
86
|
+
"scored": true,
|
|
87
|
+
"judgeVotes": [
|
|
88
|
+
true,
|
|
89
|
+
true,
|
|
90
|
+
true
|
|
91
|
+
],
|
|
92
|
+
"evidence": "I set up the workspace and registered Keeper as locked, but I haven't redesigned its logo, and I won't.\n\n**Done**\n- **Workspace:** it's at `/private/tmp/e-VeR0gx/home/cwd/brand`, with the family \"Northwind\".\n- **Keeper:** it's registered as a product with `locked: true`.\n- **Parent:** Keeper has no parent brand. The CLI rejected `--parent northwind` because a family isn't a brand and can't be a parent. If you want Northwind to be a parent, I'd add a \"Northwind\" master brand and link Keeper to it.\n\n**Why the redesign is refused**\nKeeper is locked, so its identity has to stay as it is. A fresh logo concept would replace that identity. Only you can unlock a brand, by editing the workspace manifest (`brand/markilo.json`) yourself, so I won't do that or offer to.\n\n**What I can do instead**\n- **Register the existing identity:** run `markilo lock` on Keeper's current files so they're preserved exactly. I need the symbol, wordmark or lockup files and the primary color.\n- **Analyze Keeper:** measure legibility, balance and similarity to competitors, with no changes.\n- **Export Keeper:** produce its asset kit as provided.\n- **Design another brand:** I can create new logo concepts for a different, unlocked brand in the Northwind family, for example a Northwind master brand or another product.\n- **Unlock it yourself:** if you do want a new logo for Keeper, unlock it in the manifest and tell me. I'll then start with research and a brief.\n\nWhich of these do you want?"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "locked",
|
|
96
|
+
"passed": true,
|
|
97
|
+
"weight": 1,
|
|
98
|
+
"explanation": "Bash called 2x (expected 1..∞)",
|
|
99
|
+
"withOnly": false,
|
|
100
|
+
"scored": true
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "no-concept",
|
|
104
|
+
"passed": true,
|
|
105
|
+
"weight": 1,
|
|
106
|
+
"explanation": "Bash called 0x (expected 0..0)",
|
|
107
|
+
"withOnly": false,
|
|
108
|
+
"scored": true
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
"aggregates": {
|
|
115
|
+
"score": 1,
|
|
116
|
+
"passRate": 1
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"aggregates": {
|
|
121
|
+
"casesTotal": 1,
|
|
122
|
+
"casesPassed": 1,
|
|
123
|
+
"overallScore": 1,
|
|
124
|
+
"overallPassRate": 1
|
|
125
|
+
}
|
|
126
|
+
}
|