A Hermes/VPS setup conversation raised whether Impeccable should become a first-class Main Branch design-quality rail, especially for lightweight website repos.
Public-safe external verification on 2026-05-22:
- GitHub repo:
pbakaus/impeccable - Description: "The design language that makes your AI harness better at design."
- License: Apache-2.0
- Stars at check time: 29,403
- Latest release at check time:
skill-v3.1.1, published 2026-05-14 - Official site/docs describe one skill with 23 design commands, including
teach,shape,craft,audit,critique,polish, andlive.
This issue should decide and implement the right Main Branch integration shape without making Impeccable a required core dependency.
Should Main Branch make Impeccable a first-class part of website/page workflows?
Short proposed answer:
Use Impeccable as an optional first-class design-quality rail for website repos, not as a required dependency of every Main Branch install.
Main Branch should own:
- repo/profile detection;
- website design brief workflow;
- design token and CMS schema placement;
- readiness/status/doctor facts;
- public/private boundaries;
- deterministic checks and graceful degradation;
- clear handoff to the parent business hub.
Impeccable should own:
- design fluency;
- anti-pattern vocabulary;
- design critique/audit/polish workflow;
- visual iteration commands where the runtime supports them.
Main Branch website repos are a natural place where AI-generated output can become generic, visually weak, or inconsistent with the business. A first-class design-quality rail would improve the Ship loop for pages, offers, launch pushes, docs sites, and public marketing surfaces.
The same conversation also raised a repo-typing system ("Repology"). Impeccable integration should depend on that repo profile layer: auto-load or recommend Impeccable only where the current repo is a website/UI repo, not in finance/legal/source repos or ordinary business hubs.
Do not vendor Impeccable into mb core by default.
Treat it as an optional external design sidecar/skill:
- detected by
mb; - recommended by
mb site/ futuremb design; - invoked by runtime skills when available;
- recorded in repo-safe design metadata;
- skipped with clear fallback when missing.
This matches the existing dependency policy in docs/dependency-choices.md: optional sidecars/tools can enrich Sense and Ship workflows, but missing sidecars must not break core mb.
Only consider Impeccable auto-load when the repo declares or is detected as:
role: site,profile: lightweight_website;- or a product/code repo with a frontend surface;
- or an explicit project marker such as
PRODUCT.mdandDESIGN.md.
Do not auto-load for:
business_hubunless a site/design workflow is active;finance,legal,client, restricted provider sidecars, or raw community/member source repos;- unknown repos without explicit user intent.
For website repos, the profile descriptor can eventually include:
{
"website": {
"product_brief": "PRODUCT.md",
"design_brief": "DESIGN.md",
"design_tokens": "design/tokens.json",
"cms_schema": ".mainbranch/cms.schema.json",
"design_quality": {
"tool": "impeccable",
"mode": "brand",
"required_for_launch": false
}
}
}The lightweight website template should include the files Impeccable expects or can use cleanly:
PRODUCT.md
DESIGN.md
design/tokens.json
.mainbranch/cms.schema.json
.mainbranch/conversion.json
.mainbranch/repo.json
content/
src/
public/
Main Branch should be able to generate starter PRODUCT.md / DESIGN.md from hub context:
core/brand/core/offer.mdorcore/offers/<slug>/offer.mdcore/audienceor audience frontmatter where present- linked push
- linked decision/research files
Impeccable can then refine, audit, or polish that design context.
Possible skill surface:
- extend
.claude/skills/mb-sitewith an optional design-quality section; - or add a focused
mb-designskill if this becomes broader than sites.
Runtime behavior should be profile-aware:
- Read
.mainbranch/repo.json. - If website repo, read
PRODUCT.md,DESIGN.md,design/tokens.json, and CMS schema. - If Impeccable is installed/discoverable, route to the appropriate Impeccable command.
- If not installed, produce the Main Branch design brief/checklist fallback without claiming Impeccable ran.
- Save durable decisions to the repo or parent hub only when appropriate:
- design system/site facts in the website repo;
- business strategy/offer/push decisions in the hub.
Candidate mapping:
- New site:
mb site init-> Main Branch website skeleton ->/impeccable teachorshape. - Design brief only:
/impeccable shapefrom business/offer context, no code mutation. - Build/polish:
/impeccable craftorpolishinside the website repo. - Review:
audit/critiquebefore launch. - Live iteration:
liveonly when dev server and runtime support are available.
Runtime support claims must stay honest. Claude Code may be first-class if smoked. Codex/Hermes should be described as target/experimental until adapter and smoke evidence exist.
Do not make impeccable a hard Python dependency.
Add deterministic checks around it:
Possible command shape:
mb site check --design
mb design check
mb doctor
mb status --json --peekChecks should answer:
- Is the current repo a website/UI repo?
- Are
PRODUCT.mdandDESIGN.mdpresent? - Are design tokens present and valid JSON?
- Is there a CMS schema?
- Is Impeccable installed/discoverable for this runtime?
- What version/release was detected?
- Did a design audit/check run, or is it missing/manual?
- What should the operator do next?
If Impeccable offers a stable CLI JSON output for anti-pattern detection, mb can shell out behind an optional check. If not, mb should limit itself to detection and runtime guidance.
Main Branch should own the business-to-design handoff:
- extract offer, audience, proof boundaries, brand voice, channel, CTA, and launch push constraints from the hub;
- create a website-local
PRODUCT.md; - create or update
DESIGN.md; - write or validate
design/tokens.json; - connect to
.mainbranch/cms.schema.json; - record which hub files informed the design brief.
Impeccable should then use those files for craft/audit/polish.
Website repos need a content model separate from the business hub:
.mainbranch/cms.schema.json
The schema should describe editable content collections such as:
- pages;
- sections;
- testimonials/proof snippets that are already approved for public use;
- FAQs;
- offers/pricing blocks;
- legal/privacy pages;
- navigation.
It should not contain raw customer/member data, raw private proof, secrets, or unpublished strategy.
mb validate should eventually validate this schema, and mb site check should report whether site content conforms.
Use a deterministic token file:
design/tokens.json
Minimum useful shape:
{
"schema": "mb.design_tokens.v0",
"color": {},
"typography": {},
"spacing": {},
"radius": {},
"motion": {},
"components": {}
}This gives agents, CMS tooling, and future dashboards one stable place to inspect design choices instead of scraping CSS.
Evaluate, separately from Impeccable itself:
- Playwright screenshot checks for desktop/mobile rendering;
- accessibility checks;
- Lighthouse or equivalent static checks;
- Cloudflare preview/deploy readiness;
- social/OG image rendering checks;
mb imageprompt/output records for brand imagery;- visual diff artifacts stored outside public repos unless safe;
- GitHub Checks integration for team repos.
These should remain deterministic checks or optional sidecars, not mixed into a design prose workflow.
- Supply chain: do not run
npxinstallers silently; require explicit operator action or documented install path. - Runtime claims: Impeccable's docs may list many AI harnesses, but Main Branch should only claim support after adapter and smoke evidence.
- Version churn: Impeccable is moving quickly; pin or record detected versions in evidence.
- Slash-command conflict:
/impeccablecommands are runtime-specific;mbshould not pretend they are nativembcommands. - Repo boundary: design edits belong in the website repo; business decisions and launch strategy belong in the parent hub.
- Public/private: design briefs may include sensitive offer strategy. Website repos should default private unless source is intentionally public.
- User confusion: "first-class" should mean integrated checks and workflow, not bundled mandatory dependency.
- Decision slice: add a dependency decision row for Impeccable as optional first-class website design rail.
- Repo profile dependency: wait for or pair with the repo-profile issue so auto-load is gated by
profile: lightweight_website. - Template slice: add website skeleton files for
PRODUCT.md,DESIGN.md,design/tokens.json,.mainbranch/cms.schema.json. - CLI detection slice: surface design context/readiness in
mb site check,mb status --json --peek, andmb doctor. - Skill slice: add optional Impeccable handoff to
mb-siteor createmb-design. - Runtime smoke slice: verify at least one website repo workflow in Claude Code; add Codex/Hermes only after evidence.
- Launch readiness slice: make design audit status visible before page launch without blocking all site work.
- Main Branch has a written decision on whether Impeccable is adopted, optional, reference-only, or declined.
- Website repo profile guidance explains when Impeccable should be used and when it should not be loaded.
- A lightweight website template can carry
PRODUCT.md,DESIGN.md,design/tokens.json, and.mainbranch/cms.schema.json. mb site checkor a related command reports design-context readiness without requiring Impeccable to be installed.- If Impeccable is detected,
mbreports version/discovery facts and a safe next action. - Skill guidance routes design work to the website repo, not the parent business hub.
- Runtime support claims are backed by smoke evidence.
- Public/private and supply-chain boundaries are explicit.
- Repo-profile / Repology issue to be created from the same conversation
- #615: Hermes Agent integration and cross-platform skill primitives
- #631: repo-boundary decision helper
docs/dependency-choices.mddocs/child-repo-descriptors.mdmb/mb/site.pymb/mb/topology.py