markilo 0.4.0 → 1.1.1
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/README.md +132 -79
- package/THIRD_PARTY_NOTICES.md +26 -12
- package/package.json +15 -1
- package/plugin/.claude-plugin/icon.png +0 -0
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/THIRD_PARTY_NOTICES.md +26 -12
- package/plugin/agents/concept-designer.md +111 -76
- package/plugin/agents/design-critic.md +32 -68
- package/plugin/dist/markilo.mjs +271 -178
- 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-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 +628 -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/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/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/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/concepts/SKILL.md +18 -23
- package/plugin/skills/design/SKILL.md +125 -94
- package/plugin/skills/design/references/cli.md +58 -55
- package/plugin/skills/design/references/construction.md +47 -40
- package/plugin/skills/design/references/design-principles.md +163 -126
- package/plugin/skills/design/references/svg-authoring.md +11 -8
- package/plugin/skills/design/references/workflow.md +19 -20
- package/plugin/skills/export/SKILL.md +6 -3
- package/plugin/skills/gallery/SKILL.md +10 -7
- package/plugin/skills/refine/SKILL.md +18 -13
- package/plugin/skills/research/SKILL.md +3 -2
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<p align="center">
|
|
14
14
|
<a href="https://github.com/cihantopac/markilo/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/cihantopac/markilo/actions/workflows/ci.yml/badge.svg"></a>
|
|
15
15
|
<a href="LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-d12c12"></a>
|
|
16
|
-
<img alt="Version" src="https://img.shields.io/badge/version-
|
|
16
|
+
<img alt="Version" src="https://img.shields.io/badge/version-1.1.1-101218">
|
|
17
17
|
<img alt="Platforms" src="https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20Windows-101218">
|
|
18
18
|
</p>
|
|
19
19
|
|
|
@@ -26,11 +26,28 @@ balance, contrast, one-color reproduction), **compares** them against competitor
|
|
|
26
26
|
|
|
27
27
|

|
|
28
28
|
|
|
29
|
-
<sub>Markilo's identity was made by running Markilo on itself,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
registry search has been done
|
|
29
|
+
<sub>Markilo's identity was made by running Markilo 1.1 on itself, with its owner choosing: one round of three proposals
|
|
30
|
+
by the Opus designer ($9.57, 18 min), from which the owner kept one word, a monograph-style serif cut with one 45-degree
|
|
31
|
+
chisel and dotted with an oxblood lozenge; three new icon options for it ($4.11), of which the owner chose the M and
|
|
32
|
+
asked for it symmetric, redrawn with Markilo's own `construct` toolchain; then finalize and export. Every image in this
|
|
33
|
+
README and the plugin icon is an unedited Markilo export (`branding/`). No trademark registry search has been done
|
|
34
|
+
yet; the guidelines say so.</sub>
|
|
35
|
+
|
|
36
|
+
## Made with Markilo
|
|
37
|
+
|
|
38
|
+
Three open-source tools from the same author got their brand identities from Markilo 1.1. Each came from one round of
|
|
39
|
+
three proposals with its owner choosing; the logos below are the files Markilo exported, unedited.
|
|
40
|
+
|
|
41
|
+
<table>
|
|
42
|
+
<tr>
|
|
43
|
+
<td align="center" width="33%"><a href="https://github.com/cihantopac/relivaro"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/made-with/relivaro-dark.svg"><img src="assets/made-with/relivaro-light.svg" alt="Relivaro" height="44"></picture></a><br><a href="https://github.com/cihantopac/relivaro"><b>Relivaro</b></a><br><sub>Software quality, security, reliability and release engineering</sub></td>
|
|
44
|
+
<td align="center" width="33%"><a href="https://github.com/cihantopac/searvex"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/made-with/searvex-dark.svg"><img src="assets/made-with/searvex-light.svg" alt="Searvex" height="44"></picture></a><br><a href="https://github.com/cihantopac/searvex"><b>Searvex</b></a><br><sub>Search intelligence: technical SEO and GEO audits with safe fixes</sub></td>
|
|
45
|
+
<td align="center" width="33%"><a href="https://github.com/cihantopac/jourilo"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/made-with/jourilo-dark.svg"><img src="assets/made-with/jourilo-light.svg" alt="Jourilo" height="44"></picture></a><br><a href="https://github.com/cihantopac/jourilo"><b>Jourilo</b></a><br><sub>Product experience and conversion engineering</sub></td>
|
|
46
|
+
</tr>
|
|
47
|
+
</table>
|
|
48
|
+
|
|
49
|
+
How each one was made, what it cost and what the owner chose at every step is in
|
|
50
|
+
[docs/RELEASE-1.1.md](docs/RELEASE-1.1.md) (products A, B and C, in this order).
|
|
34
51
|
|
|
35
52
|
## Highlights
|
|
36
53
|
|
|
@@ -47,15 +64,29 @@ registry search has been done yet; the guidelines say so.</sub>
|
|
|
47
64
|
logged registry searches the answer is `insufficient-evidence`, never "clear". Calibrated on 24 real brands' logos
|
|
48
65
|
(AUC 0.99; mirrored, rotated and recolored copies always caught; see [docs/ORIGINALITY.md](docs/ORIGINALITY.md)). It
|
|
49
66
|
finds conflicts among what was collected; it cannot prove a mark is unique or registrable.
|
|
50
|
-
- **
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
67
|
+
- **Three proposals, your choice.** Markilo reads the product, writes a short brief, and shows three genuinely
|
|
68
|
+
different, visually developed identities side by side — each with its word, a compact icon, light and dark previews,
|
|
69
|
+
the idea in one sentence, strengths and honest weaknesses. You select one, ask for changes, combine two, or reject
|
|
70
|
+
all three with a note; after two rounds it asks you for direction instead of guessing on. Nothing is finalized
|
|
71
|
+
without your choice.
|
|
72
|
+
- **Drawn, not assembled.** Designers draw freely: Bézier contours, custom letterforms built from real font outlines
|
|
73
|
+
and their own strokes, ligatures and treatments that run through the whole word. Wordmark-led by default for coined
|
|
74
|
+
names. `proposals` measures how close each word still is to its typeface set plainly, so "a stock font with a
|
|
75
|
+
coloured dot" is caught before you see it; it also flags an icon drawn on its own tile.
|
|
76
|
+
- **Development keeps what you chose.** The drawing you picked is kept; after development you see it next to the
|
|
77
|
+
result, with two or three icon options to choose from in the same decision.
|
|
78
|
+
- **Real design output.** Construction specs (primitives, booleans, gaps, fillets, repeats and real letterforms,
|
|
79
|
+
compiled with Skia's path engine) when they help, freeform SVG when it is better. Wordmarks outlined from 24 bundled
|
|
80
|
+
OFL families with real kerning (Turkish and other Latin-extended letters checked in every weight); changed letters
|
|
81
|
+
are measured against the font's own alphabet, so a word that would be misread is caught. Lockups aligned to cap
|
|
82
|
+
height, OKLCH tonal palettes with WCAG pairs.
|
|
83
|
+
- **Looks before it talks.** Every concept is rendered to a review sheet (16–256 px, light, dark, black, white) and a
|
|
84
|
+
context sheet (a browser tab, a home screen next to the competitors, a site header, an avatar). One independent
|
|
85
|
+
critic reads the developed identity cold — what a stranger sees first, scores and concrete craft fixes — as advice
|
|
86
|
+
for you, never as a gate in front of you.
|
|
87
|
+
- **Costs in the open.** `markilo cost` records each phase against a budget (default $12) and stops paid work when it
|
|
88
|
+
is reached. Your references — logos, screenshots, mood boards, sketches you like or dislike — guide the design and are
|
|
89
|
+
checked for originality like any competitor mark.
|
|
59
90
|
- **Complete asset kit.** Logo variants, favicons, PWA + maskable icons, iOS (incl. dark/tinted and Icon Composer
|
|
60
91
|
layers), macOS `.icns`, Android adaptive + themed icons, Windows ICO + MSIX assets, Open Graph and social images,
|
|
61
92
|
marketing templates, design tokens and brand guidelines, with a manifest of sizes and hashes. You get what the
|
|
@@ -69,61 +100,83 @@ registry search has been done yet; the guidelines say so.</sub>
|
|
|
69
100
|
are reproduced byte-for-byte and never redesigned.
|
|
70
101
|
- **Fits your stack.** `install-assets --framework auto` puts the files where Next.js (App Router metadata files),
|
|
71
102
|
Laravel, Flutter (Android, iOS and web) or a static site expects them — a dry run first, backups before anything is
|
|
72
|
-
replaced.
|
|
73
|
-
|
|
103
|
+
replaced.
|
|
104
|
+
- **Not tied to one AI.** Claude Code is home, but the toolchain is a plain CLI: `agent-setup` gives VS Code with
|
|
105
|
+
Copilot, Codex and Cursor the same workflow, with the researcher, designer and critic as sub-agents on the models
|
|
106
|
+
you choose (see [docs/INTEGRATIONS.md](docs/INTEGRATIONS.md)).
|
|
74
107
|
|
|
75
108
|
## Measured quality
|
|
76
109
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
|
110
|
+
**1.1, steered (validation on three real products).** The 1.1 workflow was validated on three real developer tools
|
|
111
|
+
with their owner choosing at each step, and measured with Claude Code's own cost report. All three reached an identity
|
|
112
|
+
the owner accepted. The first took about $15 across seven runs while the process was being corrected; with its lessons
|
|
113
|
+
adopted, the second took $11.27 (one round, one development, one change made directly) and the third $5.29 (one round,
|
|
114
|
+
finished as chosen). Every step, its cost and what it taught is in [docs/RELEASE-1.1.md](docs/RELEASE-1.1.md). 1.0
|
|
115
|
+
spent $6.85 on the first product unattended and showed nothing. This is three products and one owner's judgment, not a
|
|
116
|
+
benchmark.
|
|
117
|
+
|
|
118
|
+
**1.0 and earlier, unattended (benchmark).** Markilo is benchmarked end to end with nobody steering, on nine realistic products (an independent SaaS, a mobile
|
|
119
|
+
app, a multi-product family, a developer tool, an online shop, a B2B platform, a learning app, a feature-flag service
|
|
120
|
+
and a team secrets manager). Six of them were **holdouts** for a while: written before the changes they test and
|
|
121
|
+
never used for tuning until those results were in. The plugin researches, writes the brief, designs, critiques, and
|
|
122
|
+
finalizes only what passes its own gate. Blind judges then rate every critiqued concept from the brief and the images
|
|
123
|
+
alone. Every run, image and score is in [bench/](bench).
|
|
124
|
+
|
|
125
|
+
| Version | Runs | Passed the gate | Opus 5.5 judge would present (of concepts it judged) | Time per run | Cost per run (API equivalent) |
|
|
126
|
+
| ------------ | ------------------------------------------- | ------------------------ | ---------------------------------------------------- | ------------ | ----------------------------- |
|
|
127
|
+
| 0.4.0-rc.1 | 3 | 0 | — | 11–21 min | $2.61–3.67 |
|
|
128
|
+
| 0.4.0-rc.2 | 3 | 1 | — | 8–15 min | $1.60–2.68 |
|
|
129
|
+
| 0.4.0-rc.3 | 3 | 2 | 0 of 2 (the two that passed) | 14–24 min | $3.15–4.37 |
|
|
130
|
+
| 0.4.0-rc.5 | 9 (6 on holdouts) | 2 | 0 of 12 | 10–19 min | $2.29–4.41 |
|
|
131
|
+
| 0.4.0-rc.7 | 11 (2 new holdouts) | 0 | 2 of 5 — both rejected by the gate | 6–16 min | $1.66–3.30 |
|
|
132
|
+
| 0.4.0-rc.8 | 9 | 0 | 0 of 3 — the recalibrated gate agreed on all 3 | 8–18 min | $1.91–3.48 |
|
|
133
|
+
| 0.4.0 (rc.9) | 9 | 2 | Portwise 2 of 4 looks, Dozeline 0 of 4 | 14–28 min | $3.00–7.13 |
|
|
134
|
+
| 0.5.0-rc.1 | 9 (4 on new holdouts) | 2 | 2 of 29, the two that passed (3/3 and 2/3 looks) | 14–36 min | $3.37–5.86 |
|
|
135
|
+
| **1.0.0** | **14 (5 sealed holdouts, 9 on real tools)** | **2, both false passes** | **0 of 43 (Opus + Sonnet panel)** | 21–35 min | $6.85–13.87 |
|
|
93
136
|
|
|
94
137
|
What this shows, plainly:
|
|
95
138
|
|
|
96
|
-
- **
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
139
|
+
- **1.0 did not make unattended work better, and says so.** On five briefs sealed before any 1.0 change and on three
|
|
140
|
+
real developer tools, an independent panel (Opus and Sonnet, blind) would present none of the 1.0 concepts; it would
|
|
141
|
+
not have presented the 0.5.0-rc.1 ones either. The two 1.0 gate passes were edge passes the panel rejected; the
|
|
142
|
+
gallery now marks such passes "at the edge". What 1.0 did improve is everything around the design: safety, the
|
|
143
|
+
install transaction, letter checks, typefaces, the critique process and the evidence. See
|
|
144
|
+
[bench/results/1.0.0](bench/results/1.0.0).
|
|
145
|
+
|
|
146
|
+
- **Unattended, Markilo still rarely reaches its own gate** — 6 of the 47 validation runs since rc.5, 2 of 12 on
|
|
147
|
+
briefs that were still untouched holdouts when they ran.
|
|
148
|
+
- **For the first time, what passes is what a strict judge would present.** In 0.5.0-rc.1 the gate and the Opus judge
|
|
149
|
+
(the majority of three looks per concept) agreed on all 29 critiqued concepts, and both identities that passed —
|
|
150
|
+
Quillnest, and Pinehold on a brief written for this round — were presentable to the judge. In 0.4.0 the two that
|
|
151
|
+
passed split it 2 of 4 and 0 of 4.
|
|
152
|
+
- **Words beat invented symbols.** Both passes were wordmark-led: the name drawn from a real typeface with one letter
|
|
153
|
+
changed, the icon cut from it (2 of 13 judged presentable; invented symbols 0 of 16). Symbols assembled from
|
|
154
|
+
rectangles, circles and polygons keep reading as UI icons or objects — a power button, a wallet, an eye.
|
|
155
|
+
- **Reworking a failed idea does not work, so Markilo stopped doing it.** Of 34 concepts sent back after a failed gate
|
|
156
|
+
in earlier rounds, one passed later, after three rounds. The gate now says `fix` once or `reject`; in rc.1 one
|
|
157
|
+
concept got a fix round, and the budget went to more directions instead (43, up from 27).
|
|
103
158
|
- **How the gate got here was measured.** The critic's scores given after reading the rationale barely tracked the
|
|
104
|
-
strict judge (Spearman 0.20 on 32 concepts), a cold look did much better (0.51); the gate
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- **It does not ship weak work.** Across all runs the gate and the judges agreed on 48 of 57 critiqued concepts, and
|
|
108
|
-
most disagreements were marks the judge itself splits on. When nothing passes, Markilo says so and nothing is finalized or exported.
|
|
159
|
+
strict judge (Spearman 0.20 on 32 concepts), a cold look did much better (0.51); the gate rests on the cold look.
|
|
160
|
+
Across all runs the gate and the judges agreed on 77 of 86 critiqued concepts. When nothing passes, Markilo says
|
|
161
|
+
so and nothing is finalized or exported.
|
|
109
162
|
- **What moved the needle was measured, not guessed.** Hairline gaps came from Markilo's own guide; clichés reached
|
|
110
163
|
development because the sketch review picked the best of weak boards; the name's initial with a cut became the
|
|
111
164
|
default move once objects were ruled out; same-colour layers left seams. Each was found in the runs and fixed in
|
|
112
165
|
the plugin. The model was not the bottleneck (Opus 5.5 as designer did no better on the SaaS brief).
|
|
113
166
|
|
|
114
|
-
Markilo is built to work with you: you pick
|
|
115
|
-
the floor.
|
|
167
|
+
Markilo is built to work with you: you pick the sketch to develop, react in the gallery and decide. Unattended runs
|
|
168
|
+
measure the floor. The two that passed in 0.5.0-rc.1, as exported (fictional products, no human edits):
|
|
116
169
|
|
|
117
170
|
<table>
|
|
118
171
|
<tr>
|
|
119
|
-
<td><img src="bench/results/0.
|
|
120
|
-
<td><img src="bench/results/0.
|
|
172
|
+
<td><img src="bench/results/0.5.0-rc.1/edu-app/quillnest/overview.png" alt="Quillnest logo files made by Markilo unattended"></td>
|
|
173
|
+
<td><img src="bench/results/0.5.0-rc.1/secrets-team-r2/pinehold/overview.png" alt="Pinehold logo files made by Markilo unattended"></td>
|
|
121
174
|
</tr>
|
|
122
175
|
<tr>
|
|
123
|
-
<td><sub>
|
|
124
|
-
|
|
125
|
-
<td><sub>
|
|
126
|
-
arch
|
|
176
|
+
<td><sub>Quillnest (writing coach for teenagers): passed the gate; Opus judge "present" in 3 of 3 looks, 6.3 — "a
|
|
177
|
+
smiling face built from a q, with the orange dot as a nose".</sub></td>
|
|
178
|
+
<td><sub>Pinehold (secrets manager for small teams, a fresh holdout): passed the gate; Opus judge "present" in 2 of 3
|
|
179
|
+
looks, 6.3 — "an arch or doorway sheltering an orange seed".</sub></td>
|
|
127
180
|
</tr>
|
|
128
181
|
</table>
|
|
129
182
|
|
|
@@ -175,16 +228,16 @@ node ~/.claude/plugins/marketplaces/markilo/plugin/dist/markilo.mjs shortcut ins
|
|
|
175
228
|
|
|
176
229
|
## Use
|
|
177
230
|
|
|
178
|
-
| Command | What it does
|
|
179
|
-
| ---------------------------------------------- |
|
|
180
|
-
| `/markilo:design <url, repo, name or task>` | The full studio:
|
|
181
|
-
| `/markilo:research <url or repo>` | Brand Intelligence Profile and brief only
|
|
182
|
-
| `/markilo:concepts <brand>` |
|
|
183
|
-
| `/markilo:originality <concept, file or name>` | Similarity analysis, name check and trademark pre-screening plan
|
|
184
|
-
| `/markilo:refine <brand> <concept> <feedback>` |
|
|
185
|
-
| `/markilo:export <brand>` | Generate the asset kit (optionally install web assets into your project)
|
|
186
|
-
| `/markilo:gallery` | Build the Brand Preview Gallery
|
|
187
|
-
| `/markilo:audit <logo or brand>` | Evaluate an existing identity: keep, refresh or redesign
|
|
231
|
+
| Command | What it does |
|
|
232
|
+
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
233
|
+
| `/markilo:design <url, repo, name or task>` | The full studio: understand → three proposals → your choice → develop → verify → export |
|
|
234
|
+
| `/markilo:research <url or repo>` | Brand Intelligence Profile and brief only |
|
|
235
|
+
| `/markilo:concepts <brand>` | One round of three visually developed proposals for you to choose from |
|
|
236
|
+
| `/markilo:originality <concept, file or name>` | Similarity analysis, name check and trademark pre-screening plan |
|
|
237
|
+
| `/markilo:refine <brand> <concept> <feedback>` | Develop the concept you chose, with icon options and one critique, then finalize on your approval |
|
|
238
|
+
| `/markilo:export <brand>` | Generate the asset kit (optionally install web assets into your project) |
|
|
239
|
+
| `/markilo:gallery` | Build the Brand Preview Gallery |
|
|
240
|
+
| `/markilo:audit <logo or brand>` | Evaluate an existing identity: keep, refresh or redesign |
|
|
188
241
|
|
|
189
242
|
Requests can be written in any language; files and reports are produced in English.
|
|
190
243
|
|
|
@@ -192,18 +245,14 @@ Requests can be written in any language; files and reports are produced in Engli
|
|
|
192
245
|
|
|
193
246
|
```text
|
|
194
247
|
you › /markilo:design ./ — we're launching this as a product, it needs an identity
|
|
195
|
-
›
|
|
196
|
-
|
|
197
|
-
›
|
|
198
|
-
|
|
199
|
-
›
|
|
200
|
-
›
|
|
201
|
-
›
|
|
202
|
-
›
|
|
203
|
-
› Critique: blind first look ("reads as: a pin, a drop") then scores; only "Pulse" passes the gate
|
|
204
|
-
› Review: gallery at http://127.0.0.1:…/ — pin a note on the stem, compare, "Send to Claude"
|
|
205
|
-
› Deliverables: a web app → logos, web, social, tokens, guidelines (app icons are one question away)
|
|
206
|
-
› Finalize "Pulse" → Export: 80 files → Next.js detected: 10 files for app/ and public/ (dry run, 0 overwrites)
|
|
248
|
+
› Understand: README, interface colours and type, five competitor marks (with your OK), a short brief,
|
|
249
|
+
two questions with suggested answers, and "any logos, screenshots or sketches you like or dislike?"
|
|
250
|
+
› Explore: three designers draw three directions in parallel — a worked wordmark, a symbol with a matching
|
|
251
|
+
word, a warmer route — rendered side by side (proposals/round-1.png) with strengths and risks
|
|
252
|
+
› You, in the gallery: "the second one, but the icon should come from the first"
|
|
253
|
+
› Develop: the chosen word refined, three icon options, your choice shown next to the result
|
|
254
|
+
› Verify: checks clean, one cold critique ("option C reads as a person icon at 32 px"), originality report
|
|
255
|
+
› You: "icon B, approved" → Finalize → Export: 81 files → Next.js detected (dry run, 0 overwrites)
|
|
207
256
|
```
|
|
208
257
|
|
|
209
258
|
### Monorepos and product families
|
|
@@ -229,7 +278,9 @@ brand/
|
|
|
229
278
|
│ ├── reports/ # originality-<id>.md|json, quality-<id>.md|json
|
|
230
279
|
│ ├── final/ # approved masters + brand.json
|
|
231
280
|
│ └── exports/
|
|
232
|
-
│ ├──
|
|
281
|
+
│ ├── index.html # open first: a preview of every file on the background it is made for
|
|
282
|
+
│ ├── README.md # the files most people need, what each folder holds
|
|
283
|
+
│ ├── logos/ # primary, secondary, compact, symbol, wordmark × color/reversed/black/white (SVG + PNG), appmark
|
|
233
284
|
│ ├── web/ # favicon.svg (dark-mode aware), favicon.ico, apple-touch-icon, icon-*/maskable-*, site.webmanifest, head-snippet.html
|
|
234
285
|
│ ├── ios/ # AppIcon.appiconset (default, dark, tinted), icon-composer/ layers
|
|
235
286
|
│ ├── macos/ # AppIcon.icns, .iconset, full-bleed 1024 for macOS 26+
|
|
@@ -301,9 +352,11 @@ Details: [docs/PRIVACY.md](docs/PRIVACY.md) · [SECURITY.md](SECURITY.md).
|
|
|
301
352
|
- Raster images (PNG/JPEG) are analyzed for similarity; vector tracing of raster logos is not included.
|
|
302
353
|
- Icon Composer (`.icon`) files are not written directly; Markilo exports the layer sources to import.
|
|
303
354
|
- X (Twitter) image sizes could not be verified against x.com documentation (blocked to automated readers).
|
|
304
|
-
- Design quality
|
|
305
|
-
|
|
306
|
-
|
|
355
|
+
- Design quality depends on the model and on your direction. Unattended, 1.0 produced no identity an independent panel
|
|
356
|
+
would present ([bench/results/1.0.0](bench/results/1.0.0)). 1.1 is built to be steered: in its validation three real
|
|
357
|
+
products reached identities their owner accepted, each from one round of proposals — judged by their owner, not a
|
|
358
|
+
benchmark ([docs/RELEASE-1.1.md](docs/RELEASE-1.1.md)). Icons remain the hardest part (they still tend to be
|
|
359
|
+
letters); expect to choose between options.
|
|
307
360
|
|
|
308
361
|
## Develop
|
|
309
362
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -5,18 +5,32 @@ each under its own license. Generated by `scripts/notices.mjs`.
|
|
|
5
5
|
|
|
6
6
|
## Fonts (`plugin/fonts/`)
|
|
7
7
|
|
|
8
|
-
| Family
|
|
9
|
-
|
|
|
10
|
-
| Inter
|
|
11
|
-
| Manrope
|
|
12
|
-
| Space Grotesk
|
|
13
|
-
| Sora
|
|
14
|
-
| DM Sans
|
|
15
|
-
| Outfit
|
|
16
|
-
| Plus Jakarta Sans
|
|
17
|
-
| Fraunces
|
|
18
|
-
| IBM Plex Serif
|
|
19
|
-
| JetBrains Mono
|
|
8
|
+
| Family | License | Source |
|
|
9
|
+
| -------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
10
|
+
| Inter | SIL OFL 1.1 (`plugin/fonts/inter/OFL.txt`) | @fontsource/inter@5.3.0 (Google Fonts v20) |
|
|
11
|
+
| Manrope | SIL OFL 1.1 (`plugin/fonts/manrope/OFL.txt`) | @fontsource/manrope@5.3.0 (Google Fonts v20) |
|
|
12
|
+
| Space Grotesk | SIL OFL 1.1 (`plugin/fonts/space-grotesk/OFL.txt`) | @fontsource/space-grotesk@5.3.0 (Google Fonts v22) |
|
|
13
|
+
| Sora | SIL OFL 1.1 (`plugin/fonts/sora/OFL.txt`) | @fontsource/sora@5.3.0 (Google Fonts v17) |
|
|
14
|
+
| DM Sans | SIL OFL 1.1 (`plugin/fonts/dm-sans/OFL.txt`) | @fontsource/dm-sans@5.3.0 (Google Fonts v17) |
|
|
15
|
+
| Outfit | SIL OFL 1.1 (`plugin/fonts/outfit/OFL.txt`) | @fontsource/outfit@5.3.0 (Google Fonts v15) |
|
|
16
|
+
| Plus Jakarta Sans | SIL OFL 1.1 (`plugin/fonts/plus-jakarta-sans/OFL.txt`) | @fontsource/plus-jakarta-sans@5.3.0 (Google Fonts v12) |
|
|
17
|
+
| Fraunces | SIL OFL 1.1 (`plugin/fonts/fraunces/OFL.txt`) | @fontsource/fraunces@5.3.0 (Google Fonts v38) |
|
|
18
|
+
| IBM Plex Serif | SIL OFL 1.1 (`plugin/fonts/ibm-plex-serif/OFL.txt`) | @fontsource/ibm-plex-serif@5.3.0 (Google Fonts v20) |
|
|
19
|
+
| JetBrains Mono | SIL OFL 1.1 (`plugin/fonts/jetbrains-mono/OFL.txt`) | @fontsource/jetbrains-mono@5.3.0 (Google Fonts v24) |
|
|
20
|
+
| Bricolage Grotesque | SIL OFL 1.1 (`plugin/fonts/bricolage-grotesque/OFL.txt`) | @fontsource/bricolage-grotesque@5.3.0 (Google Fonts v9) |
|
|
21
|
+
| Instrument Serif | SIL OFL 1.1 (`plugin/fonts/instrument-serif/OFL.txt`) | @fontsource/instrument-serif@5.3.0 (Google Fonts v5) |
|
|
22
|
+
| Young Serif | SIL OFL 1.1 (`plugin/fonts/young-serif/OFL.txt`) | @fontsource/young-serif@5.3.0 (Google Fonts v2) |
|
|
23
|
+
| DM Serif Display | SIL OFL 1.1 (`plugin/fonts/dm-serif-display/OFL.txt`) | @fontsource/dm-serif-display@5.3.0 (Google Fonts v17) |
|
|
24
|
+
| Syne | SIL OFL 1.1 (`plugin/fonts/syne/OFL.txt`) | @fontsource/syne@5.3.0 (Google Fonts v24) |
|
|
25
|
+
| Unbounded | SIL OFL 1.1 (`plugin/fonts/unbounded/OFL.txt`) | @fontsource/unbounded@5.3.0 (Google Fonts v12) |
|
|
26
|
+
| Archivo | SIL OFL 1.1 (`plugin/fonts/archivo/OFL.txt`) | @fontsource/archivo@5.3.0 (Google Fonts v25) |
|
|
27
|
+
| Schibsted Grotesk | SIL OFL 1.1 (`plugin/fonts/schibsted-grotesk/OFL.txt`) | @fontsource/schibsted-grotesk@5.3.0 (Google Fonts v7) |
|
|
28
|
+
| Newsreader | SIL OFL 1.1 (`plugin/fonts/newsreader/OFL.txt`) | @fontsource/newsreader@5.3.0 (Google Fonts v26) |
|
|
29
|
+
| Zilla Slab | SIL OFL 1.1 (`plugin/fonts/zilla-slab/OFL.txt`) | @fontsource/zilla-slab@5.3.0 (Google Fonts v12) |
|
|
30
|
+
| Space Mono | SIL OFL 1.1 (`plugin/fonts/space-mono/OFL.txt`) | @fontsource/space-mono@5.3.0 (Google Fonts v17) |
|
|
31
|
+
| Atkinson Hyperlegible Next | SIL OFL 1.1 (`plugin/fonts/atkinson-hyperlegible-next/OFL.txt`) | @fontsource/atkinson-hyperlegible-next@5.3.0 (Google Fonts v7) |
|
|
32
|
+
| Alegreya Sans | SIL OFL 1.1 (`plugin/fonts/alegreya-sans/OFL.txt`) | @fontsource/alegreya-sans@5.3.0 (Google Fonts v28) |
|
|
33
|
+
| Familjen Grotesk | SIL OFL 1.1 (`plugin/fonts/familjen-grotesk/OFL.txt`) | @fontsource/familjen-grotesk@5.3.0 (Google Fonts v11) |
|
|
20
34
|
|
|
21
35
|
## Bundled into `plugin/dist/markilo.mjs`, `plugin/dist/resvg.wasm` and `plugin/dist/pathkit.wasm`
|
|
22
36
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "markilo",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "AI-powered brand identity studio for Claude Code: research, originality analysis, SVG identity design, verification and complete asset export.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -52,16 +52,30 @@
|
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@biomejs/biome": "2.6.4",
|
|
55
|
+
"@fontsource/alegreya-sans": "5.3.0",
|
|
56
|
+
"@fontsource/archivo": "5.3.0",
|
|
57
|
+
"@fontsource/atkinson-hyperlegible-next": "5.3.0",
|
|
58
|
+
"@fontsource/bricolage-grotesque": "5.3.0",
|
|
55
59
|
"@fontsource/dm-sans": "5.3.0",
|
|
60
|
+
"@fontsource/dm-serif-display": "5.3.0",
|
|
61
|
+
"@fontsource/familjen-grotesk": "5.3.0",
|
|
56
62
|
"@fontsource/fraunces": "5.3.0",
|
|
57
63
|
"@fontsource/ibm-plex-serif": "5.3.0",
|
|
64
|
+
"@fontsource/instrument-serif": "5.3.0",
|
|
58
65
|
"@fontsource/inter": "5.3.0",
|
|
59
66
|
"@fontsource/jetbrains-mono": "5.3.0",
|
|
60
67
|
"@fontsource/manrope": "5.3.0",
|
|
68
|
+
"@fontsource/newsreader": "5.3.0",
|
|
61
69
|
"@fontsource/outfit": "5.3.0",
|
|
62
70
|
"@fontsource/plus-jakarta-sans": "5.3.0",
|
|
71
|
+
"@fontsource/schibsted-grotesk": "5.3.0",
|
|
63
72
|
"@fontsource/sora": "5.3.0",
|
|
64
73
|
"@fontsource/space-grotesk": "5.3.0",
|
|
74
|
+
"@fontsource/space-mono": "5.3.0",
|
|
75
|
+
"@fontsource/syne": "5.3.0",
|
|
76
|
+
"@fontsource/unbounded": "5.3.0",
|
|
77
|
+
"@fontsource/young-serif": "5.3.0",
|
|
78
|
+
"@fontsource/zilla-slab": "5.3.0",
|
|
65
79
|
"@resvg/resvg-wasm": "2.6.2",
|
|
66
80
|
"@types/node": "22.20.5",
|
|
67
81
|
"@types/pngjs": "6.0.5",
|
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "markilo",
|
|
3
3
|
"displayName": "Markilo",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "1.1.1",
|
|
5
5
|
"description": "AI-powered brand identity studio: brand research, originality and similarity analysis, original SVG identity design with visual verification, and complete asset export (web, iOS, Android, macOS, Windows, social).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cihan Topa\u00e7",
|
|
@@ -5,18 +5,32 @@ each under its own license. Generated by `scripts/notices.mjs`.
|
|
|
5
5
|
|
|
6
6
|
## Fonts (`plugin/fonts/`)
|
|
7
7
|
|
|
8
|
-
| Family
|
|
9
|
-
|
|
|
10
|
-
| Inter
|
|
11
|
-
| Manrope
|
|
12
|
-
| Space Grotesk
|
|
13
|
-
| Sora
|
|
14
|
-
| DM Sans
|
|
15
|
-
| Outfit
|
|
16
|
-
| Plus Jakarta Sans
|
|
17
|
-
| Fraunces
|
|
18
|
-
| IBM Plex Serif
|
|
19
|
-
| JetBrains Mono
|
|
8
|
+
| Family | License | Source |
|
|
9
|
+
| -------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
10
|
+
| Inter | SIL OFL 1.1 (`plugin/fonts/inter/OFL.txt`) | @fontsource/inter@5.3.0 (Google Fonts v20) |
|
|
11
|
+
| Manrope | SIL OFL 1.1 (`plugin/fonts/manrope/OFL.txt`) | @fontsource/manrope@5.3.0 (Google Fonts v20) |
|
|
12
|
+
| Space Grotesk | SIL OFL 1.1 (`plugin/fonts/space-grotesk/OFL.txt`) | @fontsource/space-grotesk@5.3.0 (Google Fonts v22) |
|
|
13
|
+
| Sora | SIL OFL 1.1 (`plugin/fonts/sora/OFL.txt`) | @fontsource/sora@5.3.0 (Google Fonts v17) |
|
|
14
|
+
| DM Sans | SIL OFL 1.1 (`plugin/fonts/dm-sans/OFL.txt`) | @fontsource/dm-sans@5.3.0 (Google Fonts v17) |
|
|
15
|
+
| Outfit | SIL OFL 1.1 (`plugin/fonts/outfit/OFL.txt`) | @fontsource/outfit@5.3.0 (Google Fonts v15) |
|
|
16
|
+
| Plus Jakarta Sans | SIL OFL 1.1 (`plugin/fonts/plus-jakarta-sans/OFL.txt`) | @fontsource/plus-jakarta-sans@5.3.0 (Google Fonts v12) |
|
|
17
|
+
| Fraunces | SIL OFL 1.1 (`plugin/fonts/fraunces/OFL.txt`) | @fontsource/fraunces@5.3.0 (Google Fonts v38) |
|
|
18
|
+
| IBM Plex Serif | SIL OFL 1.1 (`plugin/fonts/ibm-plex-serif/OFL.txt`) | @fontsource/ibm-plex-serif@5.3.0 (Google Fonts v20) |
|
|
19
|
+
| JetBrains Mono | SIL OFL 1.1 (`plugin/fonts/jetbrains-mono/OFL.txt`) | @fontsource/jetbrains-mono@5.3.0 (Google Fonts v24) |
|
|
20
|
+
| Bricolage Grotesque | SIL OFL 1.1 (`plugin/fonts/bricolage-grotesque/OFL.txt`) | @fontsource/bricolage-grotesque@5.3.0 (Google Fonts v9) |
|
|
21
|
+
| Instrument Serif | SIL OFL 1.1 (`plugin/fonts/instrument-serif/OFL.txt`) | @fontsource/instrument-serif@5.3.0 (Google Fonts v5) |
|
|
22
|
+
| Young Serif | SIL OFL 1.1 (`plugin/fonts/young-serif/OFL.txt`) | @fontsource/young-serif@5.3.0 (Google Fonts v2) |
|
|
23
|
+
| DM Serif Display | SIL OFL 1.1 (`plugin/fonts/dm-serif-display/OFL.txt`) | @fontsource/dm-serif-display@5.3.0 (Google Fonts v17) |
|
|
24
|
+
| Syne | SIL OFL 1.1 (`plugin/fonts/syne/OFL.txt`) | @fontsource/syne@5.3.0 (Google Fonts v24) |
|
|
25
|
+
| Unbounded | SIL OFL 1.1 (`plugin/fonts/unbounded/OFL.txt`) | @fontsource/unbounded@5.3.0 (Google Fonts v12) |
|
|
26
|
+
| Archivo | SIL OFL 1.1 (`plugin/fonts/archivo/OFL.txt`) | @fontsource/archivo@5.3.0 (Google Fonts v25) |
|
|
27
|
+
| Schibsted Grotesk | SIL OFL 1.1 (`plugin/fonts/schibsted-grotesk/OFL.txt`) | @fontsource/schibsted-grotesk@5.3.0 (Google Fonts v7) |
|
|
28
|
+
| Newsreader | SIL OFL 1.1 (`plugin/fonts/newsreader/OFL.txt`) | @fontsource/newsreader@5.3.0 (Google Fonts v26) |
|
|
29
|
+
| Zilla Slab | SIL OFL 1.1 (`plugin/fonts/zilla-slab/OFL.txt`) | @fontsource/zilla-slab@5.3.0 (Google Fonts v12) |
|
|
30
|
+
| Space Mono | SIL OFL 1.1 (`plugin/fonts/space-mono/OFL.txt`) | @fontsource/space-mono@5.3.0 (Google Fonts v17) |
|
|
31
|
+
| Atkinson Hyperlegible Next | SIL OFL 1.1 (`plugin/fonts/atkinson-hyperlegible-next/OFL.txt`) | @fontsource/atkinson-hyperlegible-next@5.3.0 (Google Fonts v7) |
|
|
32
|
+
| Alegreya Sans | SIL OFL 1.1 (`plugin/fonts/alegreya-sans/OFL.txt`) | @fontsource/alegreya-sans@5.3.0 (Google Fonts v28) |
|
|
33
|
+
| Familjen Grotesk | SIL OFL 1.1 (`plugin/fonts/familjen-grotesk/OFL.txt`) | @fontsource/familjen-grotesk@5.3.0 (Google Fonts v11) |
|
|
20
34
|
|
|
21
35
|
## Bundled into `plugin/dist/markilo.mjs`, `plugin/dist/resvg.wasm` and `plugin/dist/pathkit.wasm`
|
|
22
36
|
|