bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
A design critic for Claude Code. Point it at a URL: it grills you about the page, then writes a critique where every issue quotes your own rules, and loops until a script and a second critic can't kno
SkillsGitHub @bbulmanOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
A design critic for Claude Code that argues from your rules: it grills you about a page, then loops its critique through a citation gate and a second critic until it holds up.
Loading the full README.
Read the full README ↗A design critic for Claude Code that argues from your rules, not from generic best practice.
Point it at a URL. It looks at the page, grills you about what the page is for and what you want from the crit, then writes a critique where every issue quotes one of your own rules word for word. Then it loops: a script checks every quote and every claim about the page, a second critic tries to knock the serious findings down, and the first critic fixes only what they caught, until the critique holds up.
/crit https://example.com/pricing
Site: bbulman.github.io/critique-partner
You need Claude Code, Node 18 or later, and Playwright with Chromium:
npm i -g playwright && npx playwright install chromium
Then:
git clone https://github.com/bbulman/critique-partner.git
cd critique-partner
./install.sh
It copies the agent to ~/.claude/agents/ and the skill to ~/.claude/skills/crit/, keeping any earlier copy as a backup. Open a new Claude Code session (or type /reload-skills), and run /crit on a page.
taste.md for judgment, DESIGN.md for rules, principles.md, .claude/rules/design-principles.md. It skips a file that only points somewhere else, and asks you when it finds none.critique-partner agent writes the critique: a verdict, a direct answer to your question, the one thing to fix first, then P0, P1 and P2 findings. Each finding names the page text or selector, quotes your rule word for word, says what's wrong and why it matters to the person on the page, and suggests a fix. Then up to three labelled opinions, what works and must survive the fixes, and what it couldn't check.check.mjs fails the critique if a quoted rule isn't word for word in the section it cites (a paraphrase, an invention, or a quote that drops the "never" in front of it), if quoted page text or a selector isn't on the page, or if the verdict contradicts the findings./crit again, and round 2 shows what's fixed, still open, new or regressed.### The hero copy sits over a full-bleed image
**Where:** 1280-fold.png, hero: "Spark is the powerful, AI-native workspace" (`section.hero`)
**Rule:** "No full-bleed hero images with text overlays." (taste.md § Density & spacing)
**What's wrong:** The image failed to load, so the white subhead sits on a white page.
A visitor deciding in seconds sees a slogan and two buttons, with nothing to judge the trial by.
**Fix:** Two grid cells: the copy in ink on one side, the image on the other.
Anything your rules don't cover is a judgment call: labelled, kept in its own section, at most three, and it never sets the verdict.
Language models are confident critics and unreliable ones. In Google's UICrit study, 13% of zero-shot UI critiques held up. Three things keep this one honest:
In testing on the example page, the loop took all three passes. The second critic caught five factual slips (a button placed on the wrong screenshot, a 56px headline reported as 48px, a black background that didn't exist), and each was fixed before the critique was shown.
This is the beginning of the README. Read the rest at the original. Read the full README ↗