/taste reviewView on GitHub

Brand review on every pull requestscored against your live site

Comment /taste review and your Vercel preview is judged against your production brand, with the fixes your coding agent can apply.

github-actionsbotcommented

Taste review

2 pages · checked at a1b2c3d

PageProductionPreviewChange
/0.860.85steady
/pricing0.840.71dropped 0.13

/pricing · worst first

  1. Snap the plan headings from 44px to 48px to match the reference type scale.
  2. Replace the gradient on the primary button with the flat charcoal fill the brand uses for every action.
  3. Set the plan card radius to 8px; the reference never rounds a card past it.
Fix with your agent
[
  {
    "action": "snap_to_token",
    "property": "font_size",
    "from": "44px",
    "to_value": "48px"
  },
  {
    "action": "snap_to_token",
    "property": "background",
    "from": "linear-gradient(…)",
    "to_value": "#1E1E1E"
  },
  {
    "action": "snap_to_token",
    "property": "border_radius",
    "from": "16px",
    "to_value": "8px"
  }
]

An example comment. The scores are illustrative.

Ask, and the preview is judged

One command on the pull request, one comment back

  1. 01

    Ask on the pull request

    When the UI feels done, anyone who can push comments /taste review, optionally with the pages to check. Nothing runs on a push, so a busy pull request costs nothing until someone asks.

  2. 02

    The preview is scored

    The action finds the commit's Vercel preview and sends each page to the Taste Engine beside the same page in production, both judged against your live site's brand.

  3. 03

    One comment, fixes included

    The score, the change against production and the worst problems first, plus the fixes as structured data your coding agent applies in one pass. Push, ask again, and the next comment shows how far each page moved.

Read by people and by agents

The same verdict, in the form each of them acts on

/
Production 0.86, preview 0.85
/pricing
Production 0.84, preview 0.71

For the reviewer

A score per page and the change against production, so a drift shows up as a number on the pull request instead of a feeling in a screenshot.

{
  "action": "snap_to_token",
  "property": "font_size",
  "from": "44px",
  "to_value": "48px"
}

For the coding agent

Every fix carries an action and its exact target value, so the agent that wrote the page can correct it without guessing what on brand means.

Your brand, read from your live site

Production is the reference, so the bar moves when you ship

  • Charcoal black#1E1E1EDark surfaces and type on light
  • Off-white#F5F7F2Light surfaces and type on dark
  • Void black#111111Nested dark sections and forms
  • Muted grey#8B8B8BSupporting copy and hairlines
  • Hyperlink blue#0000EEInteractive text only
HeadlineMatter400 · 2-2.2rem · 1.2
BodyMatter300 · 1-1.1rem · 1.5
ButtonAzeret Semimono400 · 15px · 1.4
Part of what the Taste Engine extracted from tastelabs.com

Set up in five minutes

A key, a workflow file, and a comment

  1. 01

    Get a Taste Engine key

    Create one in the Engine dashboard and add it to the repository's Actions secrets as TASTE_API_KEY.

  2. 02

    Add the workflow

    Copy the file below to .github/workflows/taste-review.yml and set your production URL and the pages to watch.

  3. 03

    Ask on a pull request

    Once Vercel posts the preview, comment /taste review. The check and the comment arrive in a few minutes.

Create a Taste Engine key
.github/workflows/taste-review.yml
name: Taste review

on:
  issue_comment:
    types: [created]
  pull_request:
    types: [ready_for_review]

permissions:
  checks: write
  contents: read
  deployments: read
  issues: write
  pull-requests: write

concurrency:
  group: taste-review-${{ github.event.issue.number || github.event.pull_request.number }}
  cancel-in-progress: false

jobs:
  review:
    if: >-
      github.event_name == 'pull_request' ||
      (github.event.issue.pull_request &&
       startsWith(github.event.comment.body, '/taste review'))
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - uses: mfbz/taste-review@v1
        with:
          taste-api-key: ${{ secrets.TASTE_API_KEY }}
          reference-url: https://www.example.com
          paths: /, /pricing

Questions

Cost, access, and what it never does

What does a check cost?

Each page checked is one brand-adherence job on your own Taste Engine account. The production side is reused from the engine's cache while production has not changed, so a repeat ask mostly pays for the preview.

Who can start a review?

Only people who can push to the repository, and the ready-for-review trigger only runs for an author who can push. Anyone else, and every bot, is ignored, so an outside contributor cannot spend your credits.

Can it block a merge?

No. The check is green, or neutral when a page dropped past the margin or something went wrong, and it never fails. A brand score is advice for the reviewer, not a gate.

Does my preview need to be public?

Yes. The engine crawls the page, so Vercel's deployment protection must be off for previews. The action checks every page loads, and that it is not sent to a login page, before it spends anything.

Does it run on every push?

No. It runs when someone comments /taste review, and once when a draft is marked ready for review if you keep that trigger. The comment shows which commit it checked.