> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.signoffkit.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.signoffkit.com/_mcp/server.

# The SignOff checks

> The SignOff checks block your agent pastes at handoff, what each check covers, and what Passed and Needs another pass mean.

Before your agent hands off a site, it runs `finish.mjs` on the finished files and pastes the result into its final message, unchanged. That block is the SignOff checks. It's the same in SignOff Kit and SignOff Kit Free.

```text
SignOff checks, run on the finished files (Oct 25, 2026, 4:41 PM)
  Design check    Passed
  Copy check      Passed
  Page structure  Passed
  Photo credit    Passed
All checks passed.
```

The time on the first line is when the checks ran. The checks also save a fingerprint of `DESIGN.md` and every file in `site/`, and `finish.mjs --verify` reports any change made after that run, so an edit after the checks can't slip into the handoff.

## What each check covers

| Check          | What it looks at                                                                                                                                                                                       |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Design check   | Runs `design-lint.mjs` on `DESIGN.md` and the site: banned palettes, non-OFL fonts, more than two font families, low-contrast text pairs and font CDNs.                                                |
| Copy check     | Runs `copy-lint.mjs` on every page (in the paid Kit, against your `VOICE.md` when there is one): fragment headlines, X. Y. Z. triplets, heavy dashes, banned phrases and copy with no real paragraphs. |
| Page structure | Runs the photo skill's tag check on every page, so the markup around photo slots is balanced.                                                                                                          |
| Photo credit   | Checks that every page with Unsplash photos has its credit line inside the footer's content column.                                                                                                    |

## What the results mean

| Result                 | Meaning                                                                                   |
| ---------------------- | ----------------------------------------------------------------------------------------- |
| Passed                 | The check ran on the finished files and found nothing to fix.                             |
| Needs another pass     | The check found something. The agent fixes it from the details and runs the checks again. |
| Not part of this setup | That check's skill isn't installed in this project, so there's nothing to run.            |
| No photos on the page  | The site has no photos, so there's no credit line to check.                               |

The last line sums it up: **All checks passed.** when every check is clean, or a count such as **1 check still to finish.** when the agent still has work to do. The agent fixes what the details say and runs `finish.mjs` again before it hands off, so the block you see is normally all Passed.

## Running it yourself

You can run the checks any time from your project folder. Use the `.cursor` or `.agents` path for Cursor or Codex.

```bash
node .claude/skills/site-from-brief/scripts/finish.mjs
```

In SignOff Kit Free, the script lives in `site-from-brief-lite`:

```bash
node .claude/skills/site-from-brief-lite/scripts/finish.mjs
```