markilo 1.0.0 → 1.1.2

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.
@@ -1,163 +1,170 @@
1
- # Designing marks that last
2
-
3
- This is the craft standard Markilo holds itself to. Use it when exploring directions, drawing SVGs and
4
- critiquing.
5
-
6
- ## Start from an idea, not a shape
7
-
8
- A strong mark compresses one true, specific idea about the brand into a form simple enough to remember
9
- after one look. Before drawing, write the idea in one sentence: _"Two arches that share one stem — research and
10
- verification meeting in an m."_ If you cannot write that sentence, you do not have a concept yet.
11
-
12
- Good sources of ideas, in order of strength:
13
- 1. **What the product uniquely does** (its mechanism, its transformation, its promise).
14
- 2. **The name** — its letters, its meaning, its sound, its etymology. Monograms work when the letter is
15
- transformed by the idea, not just set in a font.
16
- 3. **The audience's world** — a tool, gesture or artifact they recognise, used unexpectedly.
17
- 4. **Abstract character** — rhythm, tension, motion, balance — when the product is too broad for literal
18
- imagery (holding companies, platforms, families).
19
-
20
- Avoid category clichés unless you subvert them knowingly: lightbulbs for ideas, globes for "global",
21
- speech bubbles for chat, shields for security, rockets for growth, generic leaves for "green", swooshes,
22
- brain/circuit hybrids for AI, interlocking rings, abstract "connected dots" networks, and default
23
- gradient blobs. Markilo's genericity check flags marks that collapse to a stock primitive.
24
-
25
- **The product's own object is a cliché too.** The first idea everyone has — and the icon most competitors already
26
- use — is the thing the product handles: a page, a folded corner or a sticky note for documents and invoices; bars,
27
- charts, tally marks or coins for finance; a moon, stars, clouds or a bed for sleep; a padlock, a key or a shield for
28
- privacy; a check mark for tasks; a speech bubble for messaging. Draw it only when a transformation is the first thing
29
- a stranger notices; otherwise it reads as a UI icon next to the competitors. The same goes for the literal noun in
30
- the name (a tally for "Tally…", a fold for "…fold").
31
-
32
- **So is the name's initial with a cut.** Once objects are ruled out, the next default is the first letter split,
33
- sliced, offset, stepped or nested inside a copy of itself — an S with a seam, an L cut by a diagonal, two Ls, a T with
34
- a bent arm. Independent judges call it "a common monogram device" every time. A letter-led mark works only when the
35
- letter becomes something else at first sight (the reading is the idea, not "the letter T"), or when the letterform
36
- itself is drawn with a character no font has.
37
-
38
- ## Ideas before directions
39
-
40
- Write ideas as what a stranger would see, not as what they mean: "a lamp seen from above, its shade cut into the
41
- initial" is a hook; "reliability" or "a round trip from audit to fix" is a meaning still looking for a picture. Rules
42
- for the longlist (`markilo ideas`):
43
-
44
- - At least 12 hooks from at least three sources: the product's mechanism, the audience's world (a tool, a gesture, a
45
- material they know), the name (its letters, sound, meaning, the parts of a compound name), type (a face and a
46
- treatment that carry the brand across the whole word) and abstract character.
47
- - **Mechanism metaphors drawn with primitives become UI glyphs.** On three real developer products every such
48
- direction — a round trip, a crossing point, a threshold, a keystone, an undertrace, a hinge — was drawn as brackets,
49
- crosses, arches, gauges or loops, and read as a D, a return key, a headstone, a speedometer. Keep one only if the
50
- hook names a specific, unusual form, not the concept.
51
- - **Compound and meaningful names are the strongest source when they exist**: both identities that passed in the
52
- benchmark drew the name's meaning inside its own letters (a q holding a dot like an egg in a nest; an n sheltering a
53
- seed for a name that means a held pine). Coined names (no meaning to draw) lean on type: a distinctive face and one
54
- treatment that runs through every letter, not one gimmick letter with a coloured accent ("a letter-plus-dot of the
55
- generic kind").
56
- - A coloured block, dot or tab added to one letter is the default move of every wordmark board; critics read it as
57
- a cursor, a flag or a full stop. It needs a reason a stranger can see.
58
-
59
- ## Form language follows the brief's character
60
-
61
- The same idea drawn with the wrong form language fails on brand fit. Decide the form language from the brief's
62
- adjectives before sketching, and keep it across the mark and the wordmark:
63
-
64
- | The brief says | Construction choices |
65
- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
66
- | warm, handmade, human, craft | organic curves (`line` with `smooth`), slightly irregular rhythm, soft but unequal radii, one hand-cut detail; avoid UI-icon geometry |
67
- | precise, technical, reliable | one grid and unit, constant weights, crisp corners or one radius family, exact alignments |
68
- | calm, quiet, trustworthy | few parts, generous negative space, low internal contrast, no sharp diagonals |
69
- | bold, energetic, young | heavy weights, confident asymmetry, one strong diagonal or cut, saturated accent |
70
- | premium, editorial | contrast between thick and thin, restraint, a serif or a refined grotesque in the wordmark |
71
-
72
- A mark that reads as a tech or UI icon for a handmade brief, or as a playful sticker for an enterprise brief, is the
73
- wrong form language even when the idea is right.
74
-
75
- ## Directions must be genuinely different
76
-
77
- Three to five directions, each a different _idea_ and form language — e.g. a letterform-led monogram, a
78
- pictorial metaphor, an abstract geometric system, a typographic-only wordmark, an emblem. Two
79
- directions that share the same idea are one direction. `markilo diversity` must report `low` risk between
80
- directions at the explore stage.
81
-
82
- **One direction is usually wordmark-led** (`concept new --lead wordmark`). A symbol has to be invented from nothing,
83
- and in categories full of pictograms (developer tools, SaaS, analytics) an invented symbol is most often read as a
84
- UI icon — a camera, a download arrow, a toggle. A wordmark starts from letters a type designer already drew well;
85
- the identity is the word with one or two letters changed so they carry the idea (a ligature that joins two letters
86
- the way the product joins two things, a counter that holds the product's object, a terminal that points), and the
87
- icon is that changed letter or pair cut from the same drawing. It is judged as a word first: on the wordmark sheet
88
- at 12–64 px, then the icon at 16 px. The change must be more than a slice or offset of a letter — that is the
89
- initial-with-a-cut cliché again.
90
-
91
- ## Form
92
-
93
- - **Simplicity**: as few elements as the idea allows. Aim for something a child could redraw from memory.
94
- Under ~40 path commands for a symbol is a healthy target; complexity needs a reason.
95
- - **Silhouette first**: the mark must work as a solid black shape. Color is added after the form works.
96
- - **Construction**: build on a grid (e.g. 24 or 48 units) with a consistent set of radii and stroke
97
- weights. Repeat measurements. Build with `markilo construct` so the recipe is saved as `construction.json`
98
- (see `construction.md`).
99
- - **Optical corrections** (what separates professional marks):
100
- - Round and pointed forms overshoot flat ones by ~1–3% to look the same size.
101
- - Horizontal strokes are drawn slightly thinner than vertical ones to look equal.
102
- - The optical center sits slightly above the geometric center; the verify balance check reports a
103
- small upward offset as intentional.
104
- - Where strokes meet at acute angles, open the joint (ink traps) or thin the stroke to avoid dark blobs
105
- at small sizes.
106
- - Circles next to squares need to be slightly larger.
107
- - **Negative space**: use it on purpose; counters must stay open at 16 px (verify reports closed
108
- counter-spaces). Gaps under 1.2 px at 16 px disappear.
109
- - **Small sizes**: the symbol must survive at 16 px. If a detail matters only at large sizes, it is
110
- decoration; drop it or create a deliberately simplified small-size variant.
111
- - **Balance**: visual weight near the optical center, with breathing room in the artboard (80–98% of the
112
- artboard; verify reports it).
113
- - **Monochrome**: the mark must read in one color with no internal color-only boundaries. Separate parts
114
- with real gaps (knockouts), not just different shades.
115
-
116
- ## Color
117
-
118
- - One dominant brand color, one optional supporting color, plus ink and paper. More colors need a system
119
- reason (a product family, a data palette).
120
- - Check meaning across markets: red (luck in China, danger/discount elsewhere), green (finance, health,
121
- Islam), white (mourning in parts of East Asia), purple (mourning in parts of Latin America and
122
- Thailand). Note any risk in the brief.
123
- - Contrast: the mark needs ≥ 3:1 against its background (WCAG 1.4.11); provide reversed variants for dark
124
- grounds. The palette command reports WCAG pairs and semantic clashes (brand color too close to error red
125
- or success green).
126
- - Prefer colors that still work in grayscale (vary lightness, not only hue) for color-vision deficiencies.
127
-
128
- ## Typography
129
-
130
- - The wordmark is drawn from a typeface, then _edited_: tracking, specific letter adjustments, joined or
131
- cut strokes when the idea calls for it. Always outlined (`markilo wordmark`), never live text.
132
- - Match the symbol's construction: geometric symbols pair with geometric sans; humanist forms with
133
- humanist sans; editorial or heritage positioning can use a serif (fraunces, ibm-plex-serif).
134
- - Lowercase reads friendlier and more modern; uppercase reads institutional and stable; title case is
135
- neutral.
136
- - Check every letter of the name for awkward pairs (rn → m, cl → d, Il1) and for diacritics in target
137
- markets (Turkish İ/ı, ş, ğ; German ß; Nordic å/ø). Use `--locale tr` for Turkish casing.
138
- - Licenses: bundled fonts are SIL OFL 1.1 (commercial use allowed; outlined logos carry no font
139
- obligations). Record any user-supplied font and its license.
1
+ # Designing identities worth choosing
2
+
3
+ This is how Markilo designs. It describes what good work looks like, not a recipe: use judgment, and break a
4
+ recommendation when the work is better for it. Only the technical rules (SVG validity, legibility, safety, originality)
5
+ are fixed — see `svg-authoring.md` and `originality.md`.
6
+
7
+ ## What Markilo 1.0 got wrong, so you don't repeat it
8
+
9
+ An independent panel looked at 81 concepts from Markilo 1.0 and would present none. They were not sloppy; they were
10
+ mechanical. The process asked designers to assemble marks from primitives (rings, bars, cuts), to start from what a
11
+ stranger sees in a 32 px favicon, to change "one or two letters" of a stock typeface, and to avoid a long list of
12
+ rejected patterns. The results were what those instructions produce:
13
+
14
+ - **UI icons** — a metaphor (a round trip, a keystone, a gauge) drawn with uniform strokes on an icon grid reads as a
15
+ button, not a brand.
16
+ - **Primitive geometry** — a circle, a bar and a gap, however clean, is a shape, not a drawing.
17
+ - **Weak monograms** — the initial with a slice, offset or step.
18
+ - **Stock wordmarks** — a neutral grotesque with one letter tweaked or a coloured dot added.
19
+ - **Literal metaphors** — the product's mechanism drawn as a diagram.
20
+
21
+ The fix is not more rules. It is designing the way identity designers do: a point of view first, then drawing with
22
+ intent, then craft.
23
+
24
+ ## Start from a point of view
25
+
26
+ Before drawing, decide what the identity should _feel_ like to the people who will see it every day — and what it must
27
+ not feel like. Write it as a stance, not a metaphor: "quiet authority — a tool that is sure of itself and never
28
+ shouts", "editorial precision, like a well-set technical book", "warm, hand-made confidence". The stance chooses the
29
+ typeface, the weight, the proportions, the colour and the kind of form; the metaphor, if there is one, comes second.
30
+
31
+ A strong identity usually has **one distinctive idea, executed with consistency**: a particular letter construction
32
+ carried through the word, a contour that is unmistakably drawn, a rhythm, a proportion. It does not need to explain
33
+ the product. Most identities people remember say almost nothing literal.
34
+
35
+ ## Wordmark first, especially for coined names
36
+
37
+ For a coined or distinctive name (most software products), the word itself is usually the strongest identity: it says
38
+ the name every time, it cannot be mistaken for a UI icon, and type is where character is easiest to make ownable.
39
+ Default to a wordmark-led proposal unless the brief calls for a symbol above all; a separate symbol is never mandatory.
40
+ The compact icon (favicon, app icon, avatar) is then derived from the word — a letter, a pair, a ligature or a detail of
41
+ the drawing — not invented separately.
42
+
43
+ **A wordmark is designed, not typeset.** Typing the name in a font is the starting point. Then make it yours:
44
+
45
+ - **Choose the face for character, not neutrality.** Inter, Manrope and DM Sans are excellent for interfaces and
46
+ forgettable as logos. Look for a face whose construction already says the stance (`markilo fonts` lists traits);
47
+ then push it.
48
+ - **Work the whole word, not one letter.** A treatment that runs through every letter reads as intent; a single
49
+ modified letter on a stock word reads as a gimmick. Examples of whole-word decisions: one terminal shape repeated on
50
+ every stroke ending; a consistent cut angle; stroke contrast (thick verticals, thin joins); a unified x-height and
51
+ counter shape; a width (condensed, extended) that gives the word a silhouette.
52
+ - **Find the word's own opportunities.** Look at the actual letters: which pairs could share a stroke or form a
53
+ ligature (rl, li, va, ar, ex), which counters could be reshaped consistently, where an ascender or descender could
54
+ extend, where the word's rhythm (stems and rounds) creates a pattern worth emphasising. These moves are specific to
55
+ this name, which is what makes them ownable.
56
+ - **Draw custom letters when the face cannot say it.** Build letters from the font's outlines and your own Bézier
57
+ paths (`construct` with `glyph` and `path`, booleans to join or cut), or draw them fully custom. A custom `R`, `a` or
58
+ `x` with a distinctive construction, repeated logic in the other letters, beats any off-the-shelf face.
59
+ - **Space it by eye.** Tight, even colour across the word; open the pairs that clump (rn, ri), close the ones that gap
60
+ (Va, ro). Optical kerning is the difference between "set in a font" and "a logo".
61
+ - **Case is a decision.** Lowercase is approachable and modern; capitals are institutional; mixed case keeps a coined
62
+ name readable.
63
+ - **Stay readable.** Every letter must still be the letter it is — at 12 px and in a header. A wordmark that has to be
64
+ explained has failed.
65
+
66
+ ## Symbols: drawn, not assembled
67
+
68
+ When a proposal is symbol-led, draw a form, not a diagram:
69
+
70
+ - **Use freeform paths and Bézier curves.** Write the `d` attribute directly in a 1024-unit square, or construct parts
71
+ and then redraw the contour. Curves with deliberate tension — a contour that speeds up and slows down — read as
72
+ drawn; arcs of one radius joined to straight bars read as an icon set.
73
+ - **Prefer solid, filled silhouettes** with a distinctive outline and purposeful negative space over outlined line
74
+ icons. Uniform strokes with round caps on a square grid are the visual language of interface icons; avoid it unless
75
+ the stance demands it.
76
+ - **Abstract is allowed.** An abstract form with the right energy (balanced, tense, organic, asymmetric, heavy, light)
77
+ can carry an identity better than a literal picture. It must still be specific: a form you could recognise again,
78
+ not a generic blob or swoosh.
79
+ - **Asymmetry and organic geometry are tools**, not mistakes. Perfect symmetry and primitive geometry are tools too —
80
+ choose them on purpose.
81
+ - **If there is a metaphor, transform it.** The product's own object (a document, a chart, a check mark, a shield, a
82
+ magnifying glass, a funnel) drawn plainly is what every competitor already uses. Use an idea only when the drawing
83
+ adds something the obvious version does not have.
84
+
85
+ ## Three proposals that are genuinely different
86
+
87
+ A round is three proposals that differ in kind, not three variations of one shape. Vary at least two of: what leads
88
+ (word or symbol), the stance, the typeface family (grotesque, humanist, geometric, serif, custom), the form language
89
+ (geometric, organic, calligraphic, engineered), and colour. A useful default mix:
90
+
91
+ 1. **A wordmark-led identity** with a fully worked word and an icon derived from it.
92
+ 2. **A symbol + wordmark** where the symbol is a drawn, ownable form and the word is set with care to match it.
93
+ 3. **A bolder or unexpected route** — a typographic emblem, an abstract system, an editorial serif, a monogram so well
94
+ drawn it becomes a mark — something the user might not have asked for and might love.
95
+
96
+ Adapt the mix to the brief. If the user's references point somewhere, at least one proposal should go there. Let one
97
+ proposal be warmer or more human than the category expects: on a release-engineering tool whose brief said
98
+ "rigorous, calm", the owner chose a hand-tooled humanist word and a cairn of stones over two engineered routes.
99
+
100
+ ## What an accepted identity teaches (the bar for "good enough")
101
+
102
+ In Markilo 1.1's validation the owner of a real release-engineering tool accepted this identity after one round of
103
+ proposals, a development pass and a choice between icon options:
104
+
105
+ - **The word had a hand.** A humanist face (Alegreya Sans) softened and tooled across every letter, with a pebble for
106
+ the i-dot: typeset likeness 0.77 — visibly not the font, still effortless to read.
107
+ - **The icon was an object with character plus one product truth.** Stones at rest (a trail marker: someone checked
108
+ this way), the top stone drawn only as an outline — the product's "unverified is a state, never a silent pass" made visible. Letter icons
109
+ (an r, an R, an "r.") were all read as generic; stacked bars read as a menu.
110
+ - **The user combined.** The outline came from an earlier, otherwise rejected proposal. Ideas that lose as a whole
111
+ often carry the detail that wins — keep them visible in the gallery.
112
+ - **Development keeps the choice.** Two development passes lost what was chosen (a narrowed word, stones flattened into
113
+ pills); the version the owner accepted refined the chosen drawing and offered icon options instead.
114
+
115
+ ## Craft
116
+
117
+ - **Optical corrections.** Round forms overshoot flat ones by 1–3 %; horizontals are slightly thinner than verticals;
118
+ the optical centre sits a little above the geometric one; acute joins need opening (ink traps) at small sizes.
119
+ - **Consistency.** One stroke-contrast logic, one corner logic, one terminal logic across word and icon.
120
+ - **Small sizes are a check, not the starting point.** Design at display size; then confirm the icon still reads at
121
+ 16–32 px. If a detail matters only large, make a simplified small version rather than coarsening the main mark.
122
+ - **Monochrome first.** The identity must work in one colour; colour is added to a form that already works.
123
+ - **Restraint.** Every element earns its place. Decoration is not character.
124
+
125
+ ## Colour
126
+
127
+ One confident primary, an optional supporting colour, ink and paper. Pick colour from the stance and the product's
128
+ existing interface (an existing UI palette is equity), check contrast (≥ 3:1 for the mark, `markilo palette` reports
129
+ WCAG pairs) and cultural meaning in the target markets. Prefer a palette that still works in greyscale.
130
+
131
+ ## User references
132
+
133
+ When the user shares logos, screenshots, mood boards, sketches or identities they like or dislike
134
+ (`markilo reference add --category inspiration|dislike|existing`), read them for **characteristics**: proportion,
135
+ weight, contrast, typeface classification, case, spacing, corner and terminal shapes, density, energy, colour
136
+ temperature. Write those down and design from them. Never reproduce a referenced mark or its distinctive device;
137
+ references are compared in the originality check like any competitor mark. A sketch from the user is an idea to
138
+ develop, credited to them. Without references, design from the brief — references help, they are never required.
139
+
140
+ ## Avoid (short list)
141
+
142
+ The category's clichés named in the brief; the product's object drawn plainly; outlined line icons; a stock face
143
+ untouched; one tweaked letter or a coloured dot on an otherwise stock word; the initial with a slice or offset as the
144
+ whole idea; gradient blobs, swooshes, connected dots, generic arrows and check marks.
145
+
146
+ ## Typography notes
147
+
148
+ - Bundled faces are SIL OFL 1.1 (commercial use allowed; outlined logos carry no font obligations). `markilo fonts`
149
+ lists them with traits; with network approval `markilo fonts search` / `fonts add` reach ~1,800 open-licensed
150
+ families. Record any user-supplied font and its license.
151
+ - Check every letter pair for confusion (rn → m, cl → d, Il1) and diacritics in target markets (Turkish İ/ı, ş, ğ;
152
+ German ß; Nordic å/ø). Use `--locale tr` for Turkish casing.
153
+ - Wordmarks are always outlined (no live `<text>`).
140
154
 
141
155
  ## Refresh vs. redesign
142
156
 
143
- Keep equity that exists. Before changing a working identity, list what people already recognise (shape,
144
- color, letter, sound). A **refresh** keeps the core idea and improves craft (geometry, small sizes,
145
- contrast, a modern wordmark). A **redesign** is justified when the current mark fails measurably
146
- (legibility, originality conflict, scalability), contradicts the positioning, or the business changed.
147
- State which one you recommend and why, with evidence.
157
+ Keep equity that exists: list what people already recognise (shape, colour, letter, sound) before changing it. A
158
+ refresh keeps the idea and improves craft; a redesign is justified when the current mark fails measurably, contradicts
159
+ the positioning, or the business changed. Recommend one with evidence.
148
160
 
149
- ## Families (multi-product brands)
161
+ ## Families
150
162
 
151
- - Define the shared system first: grid, corner radii, stroke weight, color logic, type, and a shared
152
- structural motif. Write it to `brand/shared/system.json` (tokens) and the brief notes.
153
- - Each product gets its own idea expressed in the shared language. Family members should be clearly
154
- related at a glance and clearly distinguishable at 16 px. Check both with `markilo diversity` per brand
155
- and by comparing members with `markilo compare`.
156
- - Architecture: decide master brand vs. endorsed vs. independent per product, and record it (`--role`,
157
- `--parent`).
158
- - Preserved (locked) members are inputs to the system, not things to change.
163
+ Define the shared system first (type, stroke and corner logic, colour logic, one structural motif), then give each
164
+ product its own expression inside it. Members must be related at a glance and distinct at 16 px.
159
165
 
160
- ## Judgment criteria (scored 0–10 by the critic, with one-line reasons)
166
+ ## Judgment criteria (used in the final review)
161
167
 
162
- brand-fit, semantic-relevance, distinctiveness, memorability, simplicity, balance, craft (geometry and
163
- optical alignment), typography, color, cultural-fit, timelessness, premium-perception, versatility.
168
+ brand-fit, semantic-relevance, distinctiveness, memorability, simplicity, balance, craft (geometry and optical
169
+ alignment), typography, color, cultural-fit, timelessness, premium-perception, versatility. Scores inform; the user
170
+ decides.
@@ -1,8 +1,8 @@
1
1
  # SVG authoring rules for Markilo masters
2
2
 
3
- `markilo svg lint --master` and `markilo verify` enforce these. Build symbols with `markilo construct`
4
- (see `construction.md`): it produces masters that already follow these rules. Write SVG by hand only for parts no
5
- construction shape can express.
3
+ `markilo svg lint --master` and `markilo verify` enforce these. Write SVG by hand — freeform paths and Bézier curves
4
+ are first-class — or build it with `markilo construct` (`construction.md`), which produces masters that already follow
5
+ these rules. Either way, the rules below are fixed: they keep masters valid, safe, legible and exportable.
6
6
 
7
7
  ## Required
8
8
 
@@ -23,9 +23,10 @@ construction shape can express.
23
23
  - Snap coordinates to the construction grid; use integers or one decimal where possible.
24
24
  - Keep the mark inside the artboard with a small margin: ink should span 80–98% of the viewBox.
25
25
  - Use `fill-rule="evenodd"` for counters (holes) inside one path when it keeps the path simple.
26
- - Prefer arcs (`a`) and straight segments over many tiny curve segments; prefer a few precise cubic
27
- Béziers over auto-traced noise. Keep total path commands low (verify reports complexity).
28
- - Round corners with arcs of consistent radius across the mark.
26
+ - Draw curves with a few precise cubic Béziers: place points at extremes (top, bottom, left, right of a curve) with
27
+ horizontal or vertical handles where the curve turns; that is how type designers draw smooth contours. Avoid
28
+ auto-traced noise; verify reports complexity.
29
+ - Keep one logic for corners (sharp, one radius family, or soft) across the mark and its word.
29
30
  - For overlaps that should read as separate parts in one color, cut a real gap: ≥ 1/13 of the artboard (≥ 80 units
30
31
  on 1024), which is 1.2 px at 16 px — the verify threshold. Under 1/23 (~45 units) fails.
31
32
 
@@ -41,8 +42,10 @@ construction shape can express.
41
42
 
42
43
  ## Wordmarks and lockups
43
44
 
44
- - Generate with `markilo wordmark --text … --font … --weight … -o wordmark.svg`; it embeds cap-height and
45
- baseline metadata used by `markilo lockup` and `finalize`.
45
+ - Start from `markilo wordmark --text … --font … --weight … -o wordmark.svg` or a construct spec with
46
+ `"role": "wordmark"`; both embed `data-baseline`, `data-cap-height` and `data-x-height` used by `markilo lockup` and
47
+ `finalize`. A wordmark drawn fully by hand needs `data-markilo-role="wordmark"`, `data-baseline` and
48
+ `data-cap-height` on its root (in its own viewBox units) so lockups align it.
46
49
  - Tune tracking in thousandths of an em (`--tracking=-15` tight display, `0` default, `+40` airy caps).
47
50
  - Manual letter edits are allowed after generation: edit individual `<path data-char="…">` elements and
48
51
  keep the root attributes.
@@ -2,18 +2,18 @@
2
2
 
3
3
  ## Stage gates
4
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 | — |
5
+ | Stage | Done when | Saved in |
6
+ | ---------- | ------------------------------------------------------------------------------------------------ | --------------------------------- |
7
+ | Understand | Sources read, existing identity seen, concise brief, essential questions answered, references in | profile.json, brief.json, answers |
8
+ | Explore | Three proposals in the round: word, icon, idea, strengths, weaknesses, rendered board | concepts/<id>/, proposals/round-N |
9
+ | Choose | The user selected, asked for changes, combined, or rejected the round with a note | feedback/, concept status |
10
+ | Develop | The chosen concept refined: letterforms, spacing, icon, small version, lockups, colour | concepts/<id>/ |
11
+ | Verify | No `fail` checks, originality not `redesign`, one independent critique applied, user approved | reports/, final/ |
12
+ | Export | Export ran without skipped groups the user needs | exports/ |
13
+
14
+ Rounds: at most two rounds of three proposals on Markilo's own initiative; a third needs the user's direction
15
+ (`concept new --round 3 --directed "<their words>"`). Track cost per phase with `markilo cost`; the default budget is
16
+ $12 per brand (`markilo cost --brand <slug> --budget <usd>` to change it).
17
17
 
18
18
  Append one dated line per significant decision to `brand/brands/<slug>/decisions.md` (Edit the file):
19
19
  what was decided, why, and the evidence.
@@ -32,7 +32,8 @@ Recommend a mode with evidence (measurements of the current mark + findings) and
32
32
 
33
33
  - "Research X": Discover + Research + Brief, then stop with a summary of the profile.
34
34
  - "Check this logo": evaluate mode (`score`, `analyze`, `compare` against references, `name check`).
35
- - "Make variations of concept A": Refine.
35
+ - "Make variations of concept A": Develop (develop mode on that concept).
36
+ - "Show me three directions": Understand (briefly) + Explore, then stop for the user's choice.
36
37
  - "Export / give me favicons": Export (+ `install-assets` dry run).
37
38
  - "Show me": `markilo gallery`.
38
39
 
@@ -60,14 +61,12 @@ Recommend a mode with evidence (measurements of the current mark + findings) and
60
61
  (`--role product --parent <master>`). Locked members: `brand add "<Name>" --locked` then
61
62
  `markilo lock --brand <slug> --symbol … --primary …`.
62
63
  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> …`,
64
+ 3. Propose the family as one system, not the master alone: each proposal shows the master and two or three members.
65
+ With construction specs, a `members` block draws them from one parameter set (construction.md → Families;
66
+ `markilo sketches` renders `sketches/family.png` and flags members that read as the same mark).
67
+ 4. When the user has chosen the master, build each product from the same system: `markilo concept new --brand <product> …`,
69
68
  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
69
+ `markilo verify`, and show the family together. Record the system (construction, colour logic) in
71
70
  `shared/system.json`.
72
71
  5. Products that need their own idea (an acquired brand, a different audience) are designed separately with the
73
72
  concept-designer agent, inside the shared system.
@@ -33,6 +33,7 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `m
33
33
  the plan), and `--force` only if they want existing icons replaced — those are backed up to `.markilo-backup/`.
34
34
  Applying is all-or-nothing; `markilo install-assets --undo [--project <dir>]` previews reversing it, `--apply`
35
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
36
+ 7. Tell the user where everything is: open `exports/index.html` first (every file previewed on its own background,
37
+ with links); `exports/README.md` lists the files most people need; `guidelines/index.html` explains usage. Say that more groups
37
38
  can be added any time (`markilo deliverables --add ios` then `markilo export`), and mention that
38
39
  X (Twitter) header sizes could not be verified against x.com documentation.
@@ -17,14 +17,17 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `m
17
17
  on this computer, needs the token, serves only the gallery and exported artwork, and stops by itself when idle.
18
18
  Without a background shell, run `markilo gallery` instead: it writes `brand/gallery/index.html`, a self-contained
19
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.
20
+ 2. Explain the review flow in two lines: the round's three proposals (A, B, C) are side by side; **Select** one,
21
+ **Request changes** on one (add tags or a note, or click on the big mark to pin what should change at that spot),
22
+ tick **combine with another** on two to mix them, or **Reject all three** with a note on what is missing. **Add to
23
+ comparison** on two or more, then **Compare** shows them side by side. Then press **Send to your agent** (served)
24
+ or **Download decisions** (file) and tell you when done. The choice is theirs; no critic score decides it. The page
25
+ has EN/TR and light/dark/system switches at the top; if the user writes in Turkish, mention the TR switch.
25
26
  3. Read the decisions: `markilo feedback --brand <slug>` (after a download: `markilo feedback --import <file>`). It
26
27
  returns each decision with tags, notes and pinned spots (e.g. "at top-right: thicker stem"), the preferred concept
27
28
  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.
29
+ 4. Act, after the user confirmed your summary: `markilo feedback --brand <slug> --apply` marks selected concepts
30
+ shortlisted and dropped or round-rejected ones rejected. Log what was decided (`markilo answers`). Then: a selection
31
+ or change request → the refine skill (develop the chosen concept; pinned spots tell you where the change belongs);
32
+ a combination → a new concept developed from the named parts; a rejected round → the concepts skill for the next
33
+ round, with the user's note.
@@ -1,25 +1,30 @@
1
1
  ---
2
2
 
3
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.
4
+ description: Markilo development — turn the concept the user chose (or a combination of two) into a professional identity (letterforms, spacing, optical balance, icon, small version, lockups, colour), verify it, get one independent critique, and finalize it on the user's approval. Use when the user picks a concept or asks for changes to one.
5
5
  argument-hint: "[brand slug, concept id and the feedback]"
6
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
7
  ---
8
8
 
9
- # Markilo · Refine and finalize
9
+ # Markilo · Develop, verify and finalize
10
10
 
11
11
  Request: $ARGUMENTS
12
12
 
13
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
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.
15
+ 1. Collect the user's decision (`markilo feedback --brand <slug>`, or their words) and log it with `markilo answers`.
16
+ Never develop a concept the user dropped. `markilo cost --brand <slug>` before spending.
17
+ 2. If the user selected without changes and `markilo proposals --brand <slug> --concepts <id>` lists nothing missing
18
+ and `verify` has no failing check, ask whether to finish as chosen; on yes, skip to step 5 without a designer or
19
+ critic. A small, precise change they describe is done directly with the toolchain (`construct`, `lockup`,
20
+ `verify`). Otherwise: one `markilo:concept-designer` agent in `develop <concept id>` mode with the user's changes, pinned spots, or the
21
+ combination (it creates a new concept for a combination). Record `--phase refine` with its usage.
22
+ 3. `markilo verify --brand <slug> --concept <id>` until nothing fails; `Read` the review, wordmark and context sheets.
23
+ 4. After a development pass only, one `markilo:design-critic` agent in `final <concept id>` mode. Apply the fixes that improve the work without
24
+ changing what the user chose — once, then verify again; do not critique an unchanged image twice. Record
25
+ `--phase verify`.
26
+ 5. Show the user the refined identity (`markilo proposals --brand <slug> --concepts <id>`, the gallery), the measured
27
+ checks, the originality verdict and the critic's notes labelled as judgment. Further changes go back to step 2.
28
+ 6. When the user approves: `markilo finalize --brand <slug> --concept <id> --user-choice "<their words>" --tagline "<tagline>"`
29
+ (`--accept-risk` only on their explicit yes to an `insufficient-evidence` or `needs-review` verdict), append the
30
+ decision to `decisions.md`, then offer the export.
@@ -20,8 +20,9 @@ Toolchain: `node "${CLAUDE_PLUGIN_ROOT}/dist/markilo.mjs" <command>` (written `m
20
20
  (one call researches every package). Single project → `markilo research repo <path> --brand <slug>`. Read the design
21
21
  docs and icon sets the scan reports. `Read` the existing logo files it lists.
22
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.
23
+ 5. Market research, proportionate and once: about five category or competitor brands is enough to differentiate.
24
+ Delegate to the `markilo:brand-researcher` agent only for a broad brief; for most products do it yourself following
25
+ the playbook. Research that will not change a design decision is not worth its cost.
25
26
  6. Write the brief: `markilo brief update --brand <slug> --file <patch.json>` (write the patch to a temp file first).
26
27
  7. Ask the user only the open questions that change the design (batched, each with your suggested answer), and log them.
27
28
  8. Finish with a short summary: what the brand is, who it is for, the competitive landscape and category codes,