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,79 @@
|
|
|
1
|
+
# Workflow details
|
|
2
|
+
|
|
3
|
+
## Stage gates
|
|
4
|
+
|
|
5
|
+
| Stage | Done when | Saved in |
|
|
6
|
+
| -------- | ------------------------------------------------------------------------------------ | --------------------------------- |
|
|
7
|
+
| Discover | Sources scanned, existing identity seen, mode chosen (new/refresh/redesign/evaluate) | profile.json, brief.json `mode` |
|
|
8
|
+
| Research | Each topic covered or listed as a gap; references collected | profile.json, research/references |
|
|
9
|
+
| Brief | Brief validates; user confirmed the key trade-offs | brief.json, answers.json |
|
|
10
|
+
| Explore | 3–5 directions, each with idea sentence, form language, type, color, risk | decisions.md |
|
|
11
|
+
| Design | Each direction has symbol.svg (+ wordmark.svg) and concept.json | concepts/<id>/ |
|
|
12
|
+
| Verify | No `fail` checks, originality not `redesign`, diversity low, critic scores recorded | reports/, concept.json `judgment` |
|
|
13
|
+
| Review | User has seen the gallery and chosen | answers.json, concept status |
|
|
14
|
+
| Refine | Chosen concept re-verified after every change; finalized | final/ |
|
|
15
|
+
| Export | Export ran without skipped groups the user needs | exports/ |
|
|
16
|
+
| Deliver | User has paths, guidelines, quality + originality summary, limitations | — |
|
|
17
|
+
|
|
18
|
+
Append one dated line per significant decision to `brand/brands/<slug>/decisions.md` (Edit the file):
|
|
19
|
+
what was decided, why, and the evidence.
|
|
20
|
+
|
|
21
|
+
## Choosing the mode
|
|
22
|
+
|
|
23
|
+
- **evaluate**: the user wants an opinion or the brand is locked. Run `markilo score` / `analyze` /
|
|
24
|
+
`compare` on existing files, then report strengths, risks and recommendations without designing.
|
|
25
|
+
- **refresh**: equity is strong but craft is weak → keep the idea, rebuild geometry, wordmark, palette.
|
|
26
|
+
- **redesign**: the mark fails measurably or contradicts the strategy → new directions.
|
|
27
|
+
- **new**: no identity exists.
|
|
28
|
+
|
|
29
|
+
Recommend a mode with evidence (measurements of the current mark + findings) and let the user decide.
|
|
30
|
+
|
|
31
|
+
## Partial requests
|
|
32
|
+
|
|
33
|
+
- "Research X": Discover + Research + Brief, then stop with a summary of the profile.
|
|
34
|
+
- "Check this logo": evaluate mode (`score`, `analyze`, `compare` against references, `name check`).
|
|
35
|
+
- "Make variations of concept A": Refine.
|
|
36
|
+
- "Export / give me favicons": Export (+ `install-assets` dry run).
|
|
37
|
+
- "Show me": `markilo gallery`.
|
|
38
|
+
|
|
39
|
+
## Monorepos
|
|
40
|
+
|
|
41
|
+
1. `markilo research monorepo <repo>` lists packages with `kind` (site, app, client, library, service) and whether they
|
|
42
|
+
are `brandable` (user-facing). Libraries and services are not brands.
|
|
43
|
+
2. Agree with the user on: the master brand, which packages get their own identity, which are locked (preserved), and
|
|
44
|
+
the parent of each (e.g. apps living inside a platform product).
|
|
45
|
+
3. `markilo research monorepo <repo> --register --groups products,apps --parent <master> --lock <slugs> --scan` creates the
|
|
46
|
+
brands, stores each package folder in the brief's `codePaths`, and scans each one into its own profile. Run it once
|
|
47
|
+
per parent if different groups have different parents.
|
|
48
|
+
4. Read the design-system docs and icon sets the scans report before proposing anything — an existing system is
|
|
49
|
+
equity.
|
|
50
|
+
5. Scale the work: master + family system first; sites one at a time; many apps (10+) are usually best served by a
|
|
51
|
+
shared **app icon system** (one grid, one container shape, one color logic, a distinct glyph per app) rather than
|
|
52
|
+
separate identities. Do apps in batches of 4–6 concept-designer agents.
|
|
53
|
+
6. To place exports back into the repo from a separate brand folder:
|
|
54
|
+
`markilo install-assets --brand <slug> --group web --into public --project <repo>/<package>` (dry run, then `--apply`
|
|
55
|
+
after the user agrees).
|
|
56
|
+
|
|
57
|
+
## Multi-product families
|
|
58
|
+
|
|
59
|
+
1. `markilo init --family "<Family>"`, then `brand add` for the master brand and each product
|
|
60
|
+
(`--role product --parent <master>`). Locked members: `brand add "<Name>" --locked` then
|
|
61
|
+
`markilo lock --brand <slug> --symbol … --primary …`.
|
|
62
|
+
2. Research the family once (master brand), then product-specific facts per product.
|
|
63
|
+
3. Sketch the family as one system, not the master alone: every sketch spec of a family direction has a `members`
|
|
64
|
+
block (one parameter set, and colours if they differ, per product — construction.md → Families). `markilo
|
|
65
|
+
sketches` draws master and members together on `sketches/family.png` and marks a sketch not ready when two members
|
|
66
|
+
read as the same mark (same shape and close colours); members told apart only by colour get a note. The sketch
|
|
67
|
+
review judges the system: do the members belong together, and can each be told apart at 16 px?
|
|
68
|
+
4. When the master passes the gate, build each product from the same spec: `markilo concept new --brand <product> …`,
|
|
69
|
+
then `markilo construct <spec> --brand <product> --concept <id> --member <name>` (its parameters and colours),
|
|
70
|
+
`markilo verify`, and a critique per product. Record the system (construction, colour logic) in
|
|
71
|
+
`shared/system.json`.
|
|
72
|
+
5. Products that need their own idea (an acquired brand, a different audience) are designed separately with the
|
|
73
|
+
concept-designer agent, inside the shared system.
|
|
74
|
+
|
|
75
|
+
## Using Markilo from another project
|
|
76
|
+
|
|
77
|
+
The workspace lives in the user's project at `./brand` (add it to their VCS or not — their choice; raw
|
|
78
|
+
research captures are git-ignored automatically). Nothing outside `./brand` changes unless the user
|
|
79
|
+
approves `install-assets --apply`.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: export
|
|
4
|
+
description: Markilo asset export — generate the complete brand asset kit from the approved identity (logo variants, favicons, PWA, iOS, Android, macOS, Windows icons, social and marketing images, tokens, guidelines) and optionally install web assets into the project. Use when the user wants logo files, favicons, app icons or a brand kit.
|
|
5
|
+
argument-hint: "[brand slug] [groups, e.g. web,ios]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Markilo · Export
|
|
10
|
+
|
|
11
|
+
Request: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `markilo`). Run every toolchain command as its own Bash call, written out in full (`node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command> …`). Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin pre-approves exactly that form, so anything else triggers permission prompts.
|
|
14
|
+
|
|
15
|
+
1. `markilo status`. If the brand has no approved kit: for a designed concept run `markilo finalize`; for an existing
|
|
16
|
+
identity the user wants to keep as-is, use `markilo lock --brand <slug> --symbol … --primary …` (exact copy).
|
|
17
|
+
2. **Choose the package once.** Run `markilo deliverables --brand <slug>`. If `source` is `brief`, the user already
|
|
18
|
+
chose; go on. If it is `suggested`, tell the user in one short message what you will prepare, in plain words, and
|
|
19
|
+
offer the left-out groups in the same message as one question, for example: "For a web app I'll prepare the logo
|
|
20
|
+
files, web icons, link-preview images, color/type tokens and the guidelines. Should I add mobile app icons, desktop
|
|
21
|
+
app icons or print items (business card, email signature)?" Save the answer with
|
|
22
|
+
`markilo deliverables --brand <slug> --set …` (or `--add` / `--remove`) and record it with `markilo answers`.
|
|
23
|
+
If the user already said "everything" or "just do it", keep the suggestion and don't ask.
|
|
24
|
+
3. `markilo export --brand <slug>` (it exports the chosen groups; `--only web,ios,…` or `--all` override). Read the
|
|
25
|
+
summary: files per group, `notIncluded`, skipped groups, warnings.
|
|
26
|
+
4. Spot-check a few outputs visually with `Read` (e.g. `exports/web/icon-maskable-512.png`,
|
|
27
|
+
`exports/ios/AppIcon.appiconset/AppIcon-1024.png`, `exports/social/og-image.png`).
|
|
28
|
+
5. `markilo gallery` to refresh the preview.
|
|
29
|
+
6. To place assets in the user's project, plan first: `markilo install-assets --brand <slug> --framework auto
|
|
30
|
+
[--project <dir>]`. It detects Next.js, Laravel, Flutter or a static site and lists where each file goes and what
|
|
31
|
+
(if anything) the user must add by hand (a head snippet). Show the plan; only with the user's OK re-run with
|
|
32
|
+
`--apply --expect <planId>` (the dry run's `planId`: the apply refuses if the project changed after the user saw
|
|
33
|
+
the plan), and `--force` only if they want existing icons replaced — those are backed up to `.markilo-backup/`.
|
|
34
|
+
Applying is all-or-nothing; `markilo install-assets --undo [--project <dir>]` previews reversing it, `--apply`
|
|
35
|
+
does it (files the user edited since are kept). Do not edit their source files; give them the snippet instead.
|
|
36
|
+
7. Tell the user where everything is (`exports/`, `asset-manifest.json`, `guidelines/index.html`), that more groups
|
|
37
|
+
can be added any time (`markilo deliverables --add ios` then `markilo export`), and mention that
|
|
38
|
+
X (Twitter) header sizes could not be verified against x.com documentation.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: gallery
|
|
4
|
+
description: Markilo Brand Preview Gallery — build and open the local HTML gallery that compares concepts and shows every variant on realistic surfaces (browser tab, app icons, dock, store listing, social preview, business card) with quality and originality results. Use when the user wants to see, compare or review designs.
|
|
5
|
+
argument-hint: "[brand slug]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Markilo · Gallery
|
|
10
|
+
|
|
11
|
+
Request: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `markilo`). Run every toolchain command as its own Bash call, written out in full (`node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command> …`). Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin pre-approves exactly that form, so anything else triggers permission prompts.
|
|
14
|
+
|
|
15
|
+
1. Preferred: start `markilo gallery --serve` as a **background** Bash command (it keeps running). Its first output
|
|
16
|
+
line has `serving`: a `http://127.0.0.1:<port>/…?t=<token>` URL. Give the user that URL. The server only listens
|
|
17
|
+
on this computer, needs the token, serves only the gallery and exported artwork, and stops by itself when idle.
|
|
18
|
+
Without a background shell, run `markilo gallery` instead: it writes `brand/gallery/index.html`, a self-contained
|
|
19
|
+
file that works offline; give the user its `file://` URL.
|
|
20
|
+
2. Explain the review flow in two lines: at the sketch stage, pick one sketch per direction to develop (or "None of
|
|
21
|
+
these"); on each developed concept choose Keep / Refine / Drop, add revision tags or a note, click on the big mark
|
|
22
|
+
to pin what should change at that spot, tick "Compare" on two or more concepts to see them side by side and mark
|
|
23
|
+
one "Prefer this". Then press **Send to your agent** (served) or **Download decisions** (file) and tell you when
|
|
24
|
+
done.
|
|
25
|
+
3. Read the decisions: `markilo feedback --brand <slug>` (after a download: `markilo feedback --import <file>`). It
|
|
26
|
+
returns each decision with tags, notes and pinned spots (e.g. "at top-right: thicker stem"), the preferred concept
|
|
27
|
+
and ready-to-act requests. Repeat them back to the user in one short summary.
|
|
28
|
+
4. Act: `markilo feedback --brand <slug> --apply` records sketch picks (the user's pick wins over the critic's) and
|
|
29
|
+
marks dropped concepts rejected and kept ones shortlisted (only after the user confirmed the summary). Log what was decided (`markilo answers`) and continue with the refine skill for
|
|
30
|
+
each "refine" request — pinned spots tell you where on the mark the change belongs.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: markilo
|
|
4
|
+
description: Markilo entry point (same as markilo:design). Use when the user types /markilo or asks Markilo for anything brand-related.
|
|
5
|
+
argument-hint: "[URL, repo path, brand name or task]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep Skill
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Request: $ARGUMENTS
|
|
10
|
+
|
|
11
|
+
Load the `markilo:design` skill (Skill tool) and follow it for this request. If you only need a quick toolchain
|
|
12
|
+
command, run it as `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` — never as a bare `markilo` command, and never through shell variables, `cd` or `&&` chains (the plugin pre-approves exactly that form).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: originality
|
|
4
|
+
description: Markilo market intelligence and originality check — compare a logo concept or existing mark against competitor and category marks (silhouette, perceptual hash, structure, color), check name confusion and plan trademark pre-screening, and write an Originality & Similarity Report. Use when the user asks whether a logo or name is original, similar to others, or safe to use.
|
|
5
|
+
argument-hint: "[brand slug, concept id, or path to a logo file]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep WebSearch WebFetch
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Markilo · Originality
|
|
10
|
+
|
|
11
|
+
Request: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `markilo`). Run every toolchain command as its own Bash call, written out in full (`node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command> …`). Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin pre-approves exactly that form, so anything else triggers permission prompts. Policy: `${CLAUDE_PLUGIN_ROOT}/skills/design/references/originality.md`.
|
|
14
|
+
|
|
15
|
+
- **A concept in the workspace**: make sure references exist (`markilo reference list --brand <slug>`); if fewer than ~5,
|
|
16
|
+
collect more (competitors, category leaders, famous marks with a similar form) and add them with `markilo reference add`
|
|
17
|
+
— ask before web searches that reveal unreleased names. Then `markilo originality --brand <slug> --concept <id>` and
|
|
18
|
+
`markilo diversity --brand <slug>`.
|
|
19
|
+
- **A loose file** (any SVG/PNG): `markilo analyze <file>` and `markilo compare <file> <reference>` for each reference.
|
|
20
|
+
- **A name**: `markilo name check "<Name>" --against <competitors>` and `markilo name trademark "<Name>" --describe "<product>"`.
|
|
21
|
+
If the user agrees, run registry searches via the links and log each with `markilo profile add-source --type registry`.
|
|
22
|
+
|
|
23
|
+
Report in plain language: the verdict, the top matches with their numbers and reasons, what was and was not compared,
|
|
24
|
+
and the limits (not legal advice; no results ≠ unique). Recommend redesign for high risk instead of small tweaks.
|
|
25
|
+
Open the report file path for the user: `brand/brands/<slug>/reports/originality-<id>.md`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: refine
|
|
4
|
+
description: Markilo refinement — iterate on a chosen logo concept (geometry, optical corrections, wordmark spacing, palette, small-size version) with verification after every change, then finalize it as the approved identity. Use when the user picks a concept or asks for changes to one.
|
|
5
|
+
argument-hint: "[brand slug, concept id and the feedback]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Markilo · Refine and finalize
|
|
10
|
+
|
|
11
|
+
Request: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `markilo`). Run every toolchain command as its own Bash call, written out in full (`node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command> …`). Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin pre-approves exactly that form, so anything else triggers permission prompts. Craft rules: `${CLAUDE_PLUGIN_ROOT}/skills/design/references/design-principles.md`, `${CLAUDE_PLUGIN_ROOT}/skills/design/references/svg-authoring.md`.
|
|
14
|
+
|
|
15
|
+
1. Read the concept (`concepts/<id>/concept.json`, `symbol.svg`, `wordmark.svg`) and its reports. Collect the user's
|
|
16
|
+
feedback (gallery notes may be pasted in) and log it with `markilo answers`.
|
|
17
|
+
2. Decide whether the change is a refinement (edit in place) or a new variant (copy to a new concept id, e.g. `<id>-b`,
|
|
18
|
+
with `markilo concept new`). Keep the original for comparison.
|
|
19
|
+
3. Apply professional refinements: snap to the grid, unify radii and stroke weights, optical overshoot, ink traps,
|
|
20
|
+
open counters for 16 px, real gaps instead of color-only separation, balanced artboard fit. Regenerate the
|
|
21
|
+
wordmark with adjusted tracking or weight if needed; hand-edit individual letters when the idea calls for it.
|
|
22
|
+
4. After every change: `markilo verify --brand <slug> --concept <id>` and `Read` the review sheet. Stop when there are
|
|
23
|
+
no fails and the warnings are understood.
|
|
24
|
+
5. When the user approves: `markilo finalize --brand <slug> --concept <id> --tagline "<tagline>"`, append the decision to
|
|
25
|
+
`decisions.md`, then offer the export.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
name: research
|
|
4
|
+
description: Markilo brand research only — scan a repository or website, research the market, audience, competitors, category conventions, culture and trademarks, and build a sourced Brand Intelligence Profile and brief. Use when the user asks to research or analyze a brand before any design.
|
|
5
|
+
argument-hint: "[URL, repo path or brand name]"
|
|
6
|
+
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" *) Bash(node ${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs *) Read Write Edit Glob Grep WebSearch WebFetch
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Markilo · Research
|
|
10
|
+
|
|
11
|
+
Request: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `markilo`). Run every toolchain command as its own Bash call, written out in full (`node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command> …`). Do not wrap it in shell variables, `cd`, `&&` chains or pipes: the plugin pre-approves exactly that form, so anything else triggers permission prompts. Read `${CLAUDE_PLUGIN_ROOT}/skills/design/references/research-playbook.md` and `${CLAUDE_PLUGIN_ROOT}/skills/design/references/cli.md` first.
|
|
14
|
+
|
|
15
|
+
1. Find or create the workspace: `markilo status` — with `found: false`, `markilo init` and `markilo brand add "<Name>"`.
|
|
16
|
+
2. Check what is already known: `markilo profile show --brand <slug>` and `markilo answers --brand <slug>`.
|
|
17
|
+
Do not repeat finished research; extend it.
|
|
18
|
+
3. Local sources: for repositories run `markilo research monorepo <path>` first. Several sites/apps → confirm the list and
|
|
19
|
+
locked members with the user, then `markilo research monorepo <path> --register --groups … --parent <master> --lock … --scan`
|
|
20
|
+
(one call researches every package). Single project → `markilo research repo <path> --brand <slug>`. Read the design
|
|
21
|
+
docs and icon sets the scan reports. `Read` the existing logo files it lists.
|
|
22
|
+
4. Website: ask the user before fetching. Then `markilo research site <url> --brand <slug> --allow-network`.
|
|
23
|
+
5. Market research: delegate to the `markilo:brand-researcher` agent with the brand slug, what is known, and which
|
|
24
|
+
topics are missing. For a small brand, do it yourself following the playbook.
|
|
25
|
+
6. Write the brief: `markilo brief update --brand <slug> --file <patch.json>` (write the patch to a temp file first).
|
|
26
|
+
7. Ask the user only the open questions that change the design (batched, each with your suggested answer), and log them.
|
|
27
|
+
8. Finish with a short summary: what the brand is, who it is for, the competitive landscape and category codes,
|
|
28
|
+
opportunities for distinctiveness, risks, and open gaps. Mark inferences as inferences.
|