feat: verb command interface + deterministic linter#307
Open
asayeed95 wants to merge 2 commits into
Open
Conversation
Turn the CSV/BM25 engine into ergonomic verb commands. Adds 8 top-level
`uipro` subcommands so users can call intent (`audit`, `polish`,
`critique`, `redesign`, `harden`, `lint`, `generate`, `brandkit`) instead
of composing raw domain queries.
Why: data depth alone is not enough — competitors (taste-skill, impeccable)
are winning the ergonomics layer. This bridges the engine to a memorable
command surface without sacrificing the depth underneath.
What's new:
- src/ui-ux-pro-max/scripts/verbs.py — dispatcher composing domain queries
per intent, plus Higgsfield wrappers for generate/brandkit
- src/ui-ux-pro-max/scripts/lint.py — deterministic regex scanner with 12
default anti-pattern rules, CSV-overridable via data/lint-rules.csv,
exits non-zero on Critical/High (CI-friendly)
- cli/src/commands/verbs.ts — Node→Python dispatch, platform-aware
- cli/src/index.ts — registers all 8 verbs as `uipro` subcommands
- cli/assets/scripts/{verbs,lint}.py — synced for install-time delivery
- README.md — new positioning ("The UI quality layer for AI coding agents")
+ verb table front-and-center
- templates/base/skill-content.md — verb section so installed skills
teach Claude/Cursor/Codex when to invoke verbs
Smoke-tested:
- verbs list → clean
- verbs audit "landing page" → real UX rules, severity-filtered
- lint <repo> → caught 2 real anti-patterns in the test target
- bun run build → 111 modules, 0 errors, 0.34 MB bundle
- node dist/index.js --help → all 8 verbs registered
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Tight before/after section directly under the verb table showing real
output from uipro lint / audit / polish against a working Next.js
landing page. Three real CLI captures, no screenshots, no marketing
mock-ups — the tool's actual stdout.
The lint finding shown is genuine: caught a `>✓<` emoji-as-icon and a
raw hex gradient in the project's own scaffolded killer-landing demo.
The before→after loop ("agent generates → uipro lint catches → agent
fixes → ship") is the one-paragraph mental model for the whole tool.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Turns the CSV/BM25 engine into an ergonomic verb interface. Adds 8 top-level
uiprosubcommands so agents and humans can call intent (audit,polish,critique,redesign,harden,lint,generate,brandkit) instead of composing raw--domainqueries.The thesis: data depth alone isn't enough — competitors (
taste-skill,impeccable) are winning the ergonomics layer. This PR bridges the engine to a memorable command surface without sacrificing the depth underneath. Repositions the README to "The UI quality layer for AI coding agents".What's in this PR
Verb interface
uipro audit <path>— UX/quality audit (accessibility, performance, interactions)uipro polish <path>— Final pass (spacing, hierarchy, focus, typography)uipro critique <topic>— Design review (visual hierarchy, emotional tone, structural clarity)uipro redesign <topic>— Full redesign proposal (style + palette + type)uipro harden <path>— Production hardening (error/empty/loading, i18n, edges)Each verb composes the right domain queries against the existing engine and renders a severity-sorted markdown checklist.
Deterministic lint
uipro lint <path>— regex-based anti-pattern scannerdata/lint-rules.csvfor contributorsHiggsfield command hooks
uipro generate <mode> --prompt "..."— modes:hero,mobile,lifestyle,hand(mapped to Higgsfieldproduct_shot/conceptual_product/lifestyle_scene/closeup_product_with_person)uipro brandkit --prompt "..."— 3-image pack (logo concept + palette swatch + type specimen)README repositioning
uipro lint / audit / polishoutput (no screenshots — actual stdout)SKILL template update
templates/base/skill-content.mdgets a "Verb Commands" section so installed skills teach Claude/Cursor/Codex when to invoke each verbFiles changed
src/ui-ux-pro-max/scripts/verbs.pysrc/ui-ux-pro-max/scripts/lint.pycli/src/commands/verbs.tscli/src/index.tsuiprosubcommandscli/assets/scripts/{verbs,lint}.pysrc/ui-ux-pro-max/templates/base/skill-content.mdREADME.mdTotal: ~1,531 insertions, 2 deletions across 9 files (2 commits).
Smoke tests run
python3 verbs.py list→ clean output, all 8 verbs listedpython3 verbs.py audit "landing page"→ real UX rules pulled fromux-guidelines.csv, severity-filteredpython3 verbs.py polish "hero section"→ spacing/hierarchy/focus checklistpython3 lint.py <repo> --severity Medium→ caught 2 real anti-patterns in a working Next.js scaffold (the>✓<emoji checkmark + raw#1e293b/#0a0a0ahex in a gradient). Exit code 1 (Critical/High present). The example in the README demo section is genuine output from this exact run.bun run build→ 111 modules, 0 errors, 0.34 MB bundlenode dist/index.js --help→ all 8 verbs registered alongsideinit / update / uninstall / versionsnode dist/index.js audit --help→ severity + JSON flags wired throughStrategic context
The current category landscape (May 2026):
Impeccable's verb interface + deterministic checker are the two specific ergonomic moats this PR closes. Taste Skill's image-gen edge gets neutralized by the Higgsfield hooks. The README repositioning turns the lead from "design intelligence" (abstract) into "the UI quality layer agents call" (concrete category claim).
🤖 Generated with Claude Code