Badge¶
If your repository commits a harness.lock, you can add a badge to its README to show that
it pins its coding agent setup. The badge links to the lock, so readers can see which
harness, models, MCP servers, and skills the project uses, and pull the setup with
hlock pull.
The badge is a shields.io endpoint badge: shields.io
reads its label, color, and logo from badge.json on this
site, so the snippet stays short.
Add it to your README¶
Replace OWNER/REPO with your repository, and main with your default branch if it's
different. For a repository with one harness.lock at its root, link the badge to that file:
[](https://github.com/OWNER/REPO/blob/main/harness.lock)
If contributors keep their own locks in .hlock/locks/ (see
Team repositories), link to the directory instead, so readers see
every setup:
[](https://github.com/OWNER/REPO/tree/main/.hlock/locks)
On GitLab, use https://gitlab.com/OWNER/REPO/-/blob/main/harness.lock or
https://gitlab.com/OWNER/REPO/-/tree/main/.hlock/locks.
In an HTML README header, such as a centered block, use the same URLs in an <a>:
<a href="https://github.com/OWNER/REPO/blob/main/harness.lock"><img alt="hlock" src="https://img.shields.io/endpoint?url=https://docs.hlock.ai/badge.json"></a>
Customize it¶
Shields.io's query parameters work on the endpoint badge. Add &style=flat-square or
&style=for-the-badge to match your other badges, or &label=agent to change the left side:
[](https://github.com/OWNER/REPO/blob/main/harness.lock)
The message comes from badge.json. To change it, for example to name the harness you pin,
use the static form below.
Without the docs site¶
The endpoint badge depends on docs.hlock.ai being up. The static form doesn't: it embeds the
logo in the URL, so it's long, but shields.io renders it on its own. Change locked to set
the message, writing a literal - as -- and a space as _ (hlock-claude--code-7C3AED
renders "hlock | claude-code"):
[](https://github.com/OWNER/REPO/blob/main/harness.lock)
The logo parameter is docs/assets/badge-logo.svg,
base64-encoded, and badge.json embeds the same SVG. To rebuild the static URL after
changing the SVG: