Skip to content

Releases

0.5.0: hardened

Choose a tag to compare

@Makkov-design Makkov-design released this 09 Nov 05:44
8b39fbe

Hardened: the install gate catches the commands people really type, updates and uninstalls know the harness's own copies, the Hyperframes CLI runs only as reviewed (pinned, its telemetry and npm install scripts off), the Design Score loader is pinned by hash, and the docs claim no more than what ships. Prompted by an independent review of 0.4.0.

Security

  • Design Score: the agent's loader carries the bundle's Subresource Integrity hash, so a browser runs the copy on GitHub Pages only when it is exactly the mh-score.js the skill ships, and refuses anything else. CI checks the hash against the built file; AGENTS.md says which file runs on each path #55.
  • The Hyperframes CLI kept its own usage telemetry on when the harness started it, through the launcher or the media-use scripts. It now starts with HYPERFRAMES_NO_TELEMETRY=1 unless you set MEDIA_USE_TELEMETRY=1 or chose HYPERFRAMES_NO_TELEMETRY yourself #57.
  • The hyperframes skill now opens with the launcher command and says every npx hyperframes in the skills means it, so the reviewed CLI release is what runs. It no longer tells the agent to run npx hyperframes@latest upgrade on its own, runs usage (which reads your Claude or Codex sign-in) only when you ask about plan usage, and the launcher starts the CLI with npm install scripts off #56.

Fixed

  • The install gate let real commands through: a multi-line command, one inside quotes (bash -c "npm install x") or with options before the verb (npm --prefix app install x). It now decodes the hook input and matches in pure bash, starting no other program; npx for a tool already in the project's node_modules/.bin passes without a question. 54 test cases, run on Linux, macOS and Windows #52.
  • Updating in place and then uninstalling left old harness skills behind: an update treated the previous version of each skill as yours and backed it up, and the uninstaller restored it. The manifest now records a fingerprint of every skill copied, so an update replaces the harness's own earlier copies and the uninstaller removes exactly them; copies from installs before 0.5.0 go to backups/<date>/earlier-harness/ and are not restored #53.
  • uninstall.sh split paths on spaces, so in a folder like My Project your own skills stayed in the backup folder. It reads the manifest line by line now #54.

Added

  • A design-only scope for the Claude plugin: with MAKKOV_HARNESS_SCOPE=design (for example under env in ~/.claude/settings.json), the session-start hook loads the design rows of the routing map only, as --scope design does for the installers #60.
  • CREDITS.md, NOTICE and the README footer say that the 19 sound effects bundled with media-use are under the Pixabay Content License, not Apache-2.0 or MIT: free to use in your videos, not to be distributed on their own #61.

Changed

  • harness-onboarding writes the personal layer where the harness was installed (the manifest's instructions file; a project install stays in the project), between <!-- makkov-harness:personal:start --> and <!-- makkov-harness:personal:end -->, within the install's scope. The uninstallers take it out with the routing block, and an update keeps it #59.
  • Claims brought in line with what ships: two hooks, not one (README, AGENTS.md); the badge and the site say the harness installs in 9 agents, as COMPATIBILITY.md separates installs tested in CI from use by hand; Frame Lens is marked as the author's own, not as a reviewed companion; ffmpeg in the cloud setup comes from Ubuntu's archive, not a pin; SECURITY.md names the site's font hosts next to GoatCounter #58.

Full changelog: v0.4.0...v0.5.0

0.4.0: verified and scoped

Choose a tag to compare

@Makkov-design Makkov-design released this 09 Nov 04:15
e97d68c
Release 0.4.0: verified and scoped (#51)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

0.3.4: privacy and pinning

Choose a tag to compare

@Makkov-design Makkov-design released this 09 Nov 03:35
d3c6c02
Release 0.3.4: privacy and pinning (#41)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

0.3.3: safe installs

Choose a tag to compare

@Makkov-design Makkov-design released this 09 Nov 03:17
3d286a4
Release 0.3.3: safe installs (#35)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

0.3.2: Frame Lens studies any video

Choose a tag to compare

@Makkov-design Makkov-design released this 09 Nov 02:55

Video and animation study now goes through Frame Lens.

Changed

  • ytlens is now Frame Lens (framelens, Makkov-design/framelens), v2.0.0 in the marketplace. It studies any video or animation, not only YouTube, and works locally without a key; only its Gemini tools need one. Routing, README, SECURITY, CREDITS and the site's situations and security pages say so.

Full history: CHANGELOG.md

0.3.1: the 0.3.0 sound code now runs

Choose a tag to compare

@Makkov-design Makkov-design released this 07 Nov 14:45

The 0.3.0 sound code is now what runs. An end-to-end test of a plain video request ("make a short promo with real sound effects") showed that agents took a different path than the one 0.3.0 changed. The sounds themselves were right (real Openverse recordings, CC0 / CC BY only), but the optional Openverse keys had no effect, and the bundled HyperFrames launcher could not start inside this plugin.

Fixed

  • Sound effects go through the harness's own audio engine. media-use and the sound guides now send agents to audio/scripts/audio.mjs --only sfx, which runs the 0.3.0 Openverse search and reads OPENVERSE_CLIENT_ID / OPENVERSE_CLIENT_SECRET when they are set. hyperframes media-use resolve --type sfx uses the CLI's own older copy (no keys, HeyGen first when signed in) and is now only a fallback. See sfx.md.
  • The HyperFrames launcher works inside makkov-harness. skills/hyperframes/scripts/plugin-cli.mjs expected a plugin named hyperframes and would have asked npm for hyperframes@<harness version>. It now reads the reviewed CLI release, 0.9.9, from skills/hyperframes/scripts/cli-version.json. Tests added.
  • The sound guides no longer promise that assets/sfx/CREDITS.md always exists: it lists CC BY sounds only, so a video with only CC0 sounds has none.

Full list of changes: v0.3.0...v0.3.1 · CHANGELOG

0.3.0: real sounds for every video

Choose a tag to compare

@Makkov-design Makkov-design released this 07 Nov 13:48
4332477

Update: on the path agents take by default, the Openverse keys below only take effect from 0.3.1, which also fixes the bundled HyperFrames launcher. Sounds were already real Openverse recordings in 0.3.0.

Real sounds for every video. When the harness edits or generates a video, sound effects now come from real recordings on Openverse first (CC0 / CC BY only, credits kept in CREDITS.md). Generated sound is used only for a cue with no real recording, or when you ask for it.

Added

  • Optional Openverse API keys for media-use sound effects. Put OPENVERSE_CLIENT_ID and OPENVERSE_CLIENT_SECRET in the environment and searches use a short-lived access token with the higher registered limits. Without them, search stays anonymous, as before.
    • The keys are read from the environment only. The token lives in memory for the run and is never written to disk.
    • If Openverse refuses the keys or the token, search falls back to anonymous and does not retry the keys for five minutes, so a wrong key costs one extra request per run, not one per search.
    • How to register a free Openverse app and where the keys go: sfx.md.
    • Tests for the token flow and the fallback: skills/media-use/audio/scripts/lib/openverse.test.mjs.

Changed

  • Video sound rules: real Openverse recordings first, generated sound only for gaps. Openverse music (Jamendo, CC0 / CC BY) is a free option for a music bed, and CC BY music credits go in CREDITS.md. Stated in sound.md and in ROUTING.md.
  • sfx.md explains that Freesound's CDN can refuse downloads from cloud containers, and what to do instead.

Fixed

  • A Python bytecode file that slipped into the repository is gone; __pycache__/ and *.pyc are now ignored.
  • A broken sentence about music in the Hyperframes sound guide.

Full list of changes: v0.2.0...v0.3.0 · CHANGELOG

0.2.0: Design Score, Lighthouse for design

Choose a tag to compare

@Makkov-design Makkov-design released this 07 Nov 13:39

The Design Score panel open beside a demo page: score 59 of 100, grade D, seven category bars and the top issues.

Design Score: Lighthouse for design. Score any live page 0 to 100 in one click, see every point it takes off highlighted on the page, and hand your agent a fix prompt. Try it: https://makkov-design.github.io/makkov-harness/score.html

Before release, Design Score was calibrated on two fixtures and twelve public sites, reviewed by four independent reviewers (31 fixes) and run on this project's own site, which it caught out: accessibility is now 100 on every page.

The Design Score release: the harness gets a flagship of its own.

Added

  • Design Score (skills/design-score/), Lighthouse for design. It scores any live page from 0 to 100 on 37 checks in seven categories (accessibility 25, typography 20, colour 15, layout and spacing 20, responsive 10, motion 5, consistency 5), explains every point it takes off and writes a fix prompt for any agent. It runs inside the page, makes no network requests and never changes the page's own content.
    • A panel in its own Shadow DOM: the score ring and grade, the seven categories, issues sorted by the points they cost that light up their elements on the page, every check with its value and target, Copy fix prompt, a 1200 × 630 score card and a full self-contained HTML report with a README badge.
    • Steal the style: the palette with roles, fonts, type scale, spacing, radii, shadows and :root custom properties a page renders, exported as DESIGN.md, CSS variables, a Tailwind theme or W3C Design Tokens (DTCG) JSON.
    • The design-score skill for any agent: a measured pass in a real page and a judged pass from a screenshot or Figma frame, never blended; desktop and phone viewports; the score-and-fix loop through interfaces and animate; a before → after line at the end.
    • rubric.md with every check, weight and threshold, and calibration fixtures in test/.
    • An optional Node runner, scripts/score.mjs, for when puppeteer-core and Chrome are already installed: JSON, HTML report, DESIGN.md, tokens, fix prompt, score card, a baseline comparison and --fail-under for CI.
    • build.mjs bundles the probe and the panel into mh-score.js and refreshes the bookmarklets; --check fails when a generated file is stale.
  • The Design Score page (score.html): a bookmarklet to drag to the bookmarks bar, an offline bookmarklet for sites that block outside scripts, a console snippet, a sample panel to explore, the rubric, export samples, the fix loop, a badge builder and a privacy FAQ.
  • The security index (security.html): every verdict from SECURITY.md, searchable and filterable, with the reviewed commit, what each piece runs, sends and needs, and how a review works.
  • Ask the router at the top of situations.html: describe a task in your own words and it finds the skill, how to call it and a prompt to paste, matched in the browser.
  • Design Score in the situations catalog: a habit ("Want a number? Score it") and three rows in Audit and polish, 72 situations in all.
  • An agent briefing in AGENTS.md, docs/llms.txt for AI agents reading the site, and a star step after install that asks once and acts only on a clear yes.
  • Repository checks on every push and pull request: manifests, the hook's output, skill names and descriptions, and a scan for anything that looks like a key. This release adds: the Design Score build is up to date and its two bundle copies match, the bundle uses no network or storage API and the loader bookmarklet loads only the bundle from this site, as SECURITY.md says, local links and in-page anchors on the site resolve, every page is in the sitemap, situation counts and section numbering stay in step, and the plugin versions match this changelog.
  • CHANGELOG.md, docs/sitemap.xml and docs/robots.txt.
  • Page views on the website through GoatCounter: no cookies, no personal data, a pinned script checked with Subresource Integrity.

Changed

  • Home page: a Design Score section after the before/after demo, a "New" tag in the hero, Score and Security in the navigation and the footer, and a link from the gate section to the full security index.
  • Website redesign: the scroll-driven before/after demo, the routing board, "Find your situation" with a picker on phones, the install guide by where you work, and an edge index for the catalog on phones.
  • ROUTING.md sends score, rate and grade requests, and requests to extract a site's design tokens, to design-score.
  • README.md, AGENTS.md, INSTALL.md, SECURITY.md, CREDITS.md, COMPATIBILITY.md and llms.txt describe Design Score. SECURITY.md lists what the Design Score bundle and its bookmarklet run.
  • Companions reviewed again and moved to the new pins: Superpowers 7.0.2 (22f0b46), Impeccable 4.8.0 (c3bb418) and Hallmark 2.0.0 (407fa68).
  • The key scan now also reads new files before they are committed.
  • Plugin and marketplace version 0.2.0, with the keyword design-score.

Full changelog: v0.1.0...v0.2.0

v0.1.0: the right design skill for every request

Choose a tag to compare

@Makkov-design Makkov-design released this 06 Nov 03:30

First public release of makkov-harness: a designer's harness for AI agents.

Same screen, five skills later: spacing, alignment, type, colour and motion fixed one skill at a time

What's inside

  • ROUTING.md, the situation-to-skill map that loads at the start of every session: "review this screen", "make it feel like Linear", "animate this card" each reach the right skill
  • 16 skills: design-md-library, five motion skills by Emil Kowalski, designed report pages (rich-report, html-report), third-party-install-guard, Hyperframes HTML-to-video and harness-onboarding
  • Six companion plugins in the same marketplace (interfaces, Impeccable, Hallmark, Superpowers, security-audit, ytlens), each pinned to the commit that passed security review
  • Installers for Codex, Cursor, Gemini CLI, Copilot, Windsurf, Cline, OpenCode and Aider, plus a chat pack for ChatGPT, Gemini, Grok and DeepSeek
  • A weekly upstream check that opens an issue when a pinned companion has a new version

Install in two minutes

  • Claude (app, web, Claude Code, cloud): in a browser, claude.ai → Customize → Plugins → Add → Add marketplace → Makkov-design/makkov-harness → switch on makkov-harness.
  • Coding agents: paste Install https://github.com/Makkov-design/makkov-harness into your agent.
  • Chat apps: follow the chat pack.

Then say run harness-onboarding once. Step-by-step pictures for each path are in the README.

Site: https://makkov-design.github.io/makkov-harness/