The published install command in the README — npx skills add nutlope/hallmark — was failing for users because the skills CLI looks for SKILL.md at the repo root, not at skill/SKILL.md where Hallmark kept it. The clone succeeded but the CLI reported "No skills found." Manual cp was the only working install path. Flattened the layout: - skill/SKILL.md → SKILL.md - skill/references/ → references/ - (skill/ directory removed; was empty after moves) git mv preserved rename history for all 76+ files (SKILL.md + 28 reference files + 21 macrostructures + 46 components + 7 verb/genre subfolders). Updated every cross-reference (36 occurrences across 9 files): - README.md — 4 links (SKILL.md + references/ + the install snippet still reads the same) - ROADMAP.md — 4 links to reference files - package.json — "files" field + "skill" entry/references paths - site/js/main.js — 3 source comments - references/design-md.md — one broken link (was pointing skill/references/export-formats.md from inside references/ — now just export-formats.md as a sibling) - site/_tests/verbs/study/notes.md, diagnosis.md and verbs/audit/audit-report.md, custom/README.md — test-artifact relative paths shortened by one segment (e.g. ../../../skill/SKILL.md → ../../../SKILL.md) No skill content changes. After this lands, 'npx skills add nutlope/hallmark' should clone + install correctly without any manual cp fallback.
4.6 KiB
study verb · what fired and why
Input
A described screenshot (input-description.md) of a Pentagram-style design studio's portfolio homepage. Italic-serif studio mark, numbered project list, warm cream paper, single warm-orange accent on the active row, Single-Line Colophon footer.
What study does
"Extract the DNA — macrostructure, archetypes, type-pairing role, colour anchor, rhythm — and produce a diagnosis report, then optionally rebuild the user's content using the extracted DNA. Never copies pixels. Never claims to identify exact fonts. Refuses obvious template-marketplace or competitor-page screenshots."
Five-step pipeline (per SKILL.md § hallmark study):
- Refuse-or-proceed check — public reference, not a paid template, not a direct competitor's live page → proceed.
- Vision pass — read the image into the structured-fields schema in
study.md. Output ten fields. - Diagnosis report — return the named macrostructure + archetypes + anti-patterns to NOT carry over. See
diagnosis.md. - Confirmation question — ask before building.
- Build — produce
output.html+output.csswith the user's actual six projects, stampedstudied: yes.
What loaded
references/study.md— the protocol, schema, and refusal heuristics.references/study-examples.md— the three worked examples (Pentagram-style portfolio, Klim-specimen, Rauno-personal). The Pentagram example matched our screenshot most closely; the skill imitated the diagnosis structure.references/macrostructures.md— to name the page-shape (Specimen).references/component-cookbook.md— for archetype names (H4 Margin-Number Display, Ft1 Single-Line Colophon).references/typography.md— for the type-role vocabulary (italic-display + sans-body) and free / paid candidate pairings.references/color.md— for the warm-orange-at-low-chroma colour-anchor.references/microinteractions.md— for the hover-duration anti-pattern callout (the screenshot's 800 ms is too slow; should be 150–200 ms).
What study did not do
- Did not name the exact font. Visual font ID is unreliable; the skill named the role (italic editorial serif at high optical size) and proposed two real candidates (Fraunces free / Tiempos Headline paid).
- Did not pixel-clone. The output uses Coelho Studio's six actual projects, not "Aperture's" five-or-whatever projects. The bones come from the screenshot; the words and projects come from the user.
- Did not copy the screenshot's hover duration. The screenshot used 800 ms; the rebuild uses 180 ms. The skill flagged this in the diagnosis as anti-pattern-to-not-carry-over.
- Did not copy the screenshot's footer text size. The screenshot used 11 px; the rebuild uses 13 px. Below 14 px is below the body floor (per
typography.md); the skill flagged this and bumped it. - Did not copy any imagery, photography, or proprietary content.
Stamp
The output's first CSS comment block:
/* Hallmark · macrostructure: Specimen · H4 hero knobs: number-column=margin, alignment=left-bias
* theme: Specimen · accent: warm-orange ~3% · enrichment: none (typography only)
* studied: yes · DNA-source: user reference (Aperture-style portfolio) · paid-fonts: not confirmed (free pairing applied)
*/
The studied: yes flag tells future audit runs to be lenient on "Specimen-fall-through" (gate 23) — the user explicitly chose this DNA — but stricter on "did the page actually use the extracted DNA?" The paid-fonts: not confirmed flag documents the substitution to the user.
Why this is the canonical study test
The screenshot maps neatly to study-examples.md Example A (Pentagram-style editorial portfolio). It exercises:
- The refusal heuristics (public reference, not a competitor → proceed).
- The 10-field structured schema.
- The font-role-not-font-ID discipline.
- The "anti-patterns the screenshot has — do NOT carry over" output.
- The confirmation question.
- The
studied: yesstamp.
If the input had been a paid Squarespace-template marketplace screenshot, the verb would have refused. If the input had been a direct competitor's live site, the verb would have asked before extracting. Both branches are documented in study.md; this test exercises the proceed-with-public-reference branch.