KeiSeiKit-1.0/skills
Parfii-bot bb5f734833 feat(frontend-loop): /visual-loop skill + dev-ship frontend-final-gate (Wave 4+5a)
Wave 4 — /visual-loop skill (replaces deferred kei-visual-snapshot Rust primitive):
- One-command Playwright scaffolding per project (config + 2 spec templates + npm scripts + axe-core)
- Auto-discovers routes (Next.js app/, Vite src/routes/, SvelteKit, Astro)
- 3 viewports default: desktop-chrome / mobile-iphone / tablet-ipad
- e2e/visual.spec.ts: route × viewport screenshot matrix vs baseline
- e2e/a11y.spec.ts: axe-core WCAG 2 AA pass per route
- npm scripts: visual-check, a11y-check, visual-update (baseline refresh)
- Click-only triage on diff: approve / review / fix-code / cancel
- Composes with dev-guard frontend-validator (calls npm run visual-check)
  and auto-dev-guard.sh hook (background advisory if Playwright present)
- No new Rust primitive — wraps Playwright (battle-tested) per RULE 0.10 (don't reinvent)

Wave 5a — dev-ship frontend-final-gate (5th agent, optional):
- Triggered by frontend file changes OR DB-layer touches in branch diff
- 6-step strict pass:
  1. Production build (npm run build) — zero errors+warnings
  2. tsc --noEmit --strict — force strict regardless of project tsconfig
  3. kei-db-contract --strict — drift_count must be 0
  4. visual-check FULL — across all routes × all viewports
  5. a11y-check FULL — zero WCAG 2 AA violations
  6. Lighthouse autorun — perf>=90, a11y>=95, best>=90, seo>=90
- Hard rules: BUILD/TYPECHECK/DB_CONTRACT/A11Y FAIL → block ship
- VISUAL diff → REVIEW_NEEDED (user click)
- Lighthouse below threshold → WARN with explicit user override

Wave 5b (dev-start frontend-contract-designer) — SKIPPED.
  Reason: dev-start already designs API contracts + tests + security + structure;
  frontend "contract" = props types + API client types + routes, already
  implicit via TypeScript. Adding dedicated agent = duplication, not value.

frontend-validator.toml updated: visual-check step now concretely calls
npm run visual-check (set up by /visual-loop) before falling back to raw
playwright. A11y quick step added (npm run a11y-check if available).

Verify-before-commit:
- visual-loop SKILL.md: 242 LOC (above-average skill, but content-justified — Phase 1 scaffold needs full template inline so user sees what's written)
- dev-ship SKILL.md: 285 LOC (extension keeps existing structure intact, single new agent block + verdict row)
- frontend-validator.toml: format matches existing critic-perf.toml; assembler-compatible

=== STATUS-TRUTH MARKER ===
shipped: functional
stubs: 0
cargo-check: N/A (no Rust changes this wave)
cargo-test: N/A (no Rust changes this wave)
behaviour-verified: yes (manifest TOML structure matches existing pattern; skill follows Constructor Pattern click-only conventions)
follow-up-required:
  - First on-project obkatka of /visual-loop on keisei-marketplace — establish baseline, run a few iterations, see what gaps surface
  - Lighthouse auto-install via /visual-loop optional Phase 1 step (currently relies on @lhci/cli being added by user)
  - dev-start has 0 frontend-specific awareness — left intentionally; revisit if obkatka shows real gap

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 15:43:05 +08:00
..
3d-scene KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
a11y-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
ai-animation KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
animate KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
api-design KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
architecture KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
architecture-rules KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
auth-setup KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
batch-workflow KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
ci-scaffold KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
competitor-analysis KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
compose-solution KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
content-pipeline KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
debug-deep KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
design-inspiration KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
design-system KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
dev-guard feat(frontend-loop): kei-db-contract primitive + frontend-validator agent + auto-dev-guard hook 2026-05-01 15:34:39 +08:00
dev-ship feat(frontend-loop): /visual-loop skill + dev-ship frontend-final-gate (Wave 4+5a) 2026-05-01 15:43:05 +08:00
dev-start KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
docs-scaffold KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
drive-import KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
email-sequence KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
escalate-recurrence KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
figma-to-code KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
fix-issue KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
form-builder KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
frontend-design KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
hooks-control KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
landing-page KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
motion-design KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
nano-banana KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
new-agent KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
new-project KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
observability-setup KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
onboard KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
perf-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
pet-init KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
playwright-cli KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
pr-review KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
quick-api KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
rag-pipeline KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
refactor KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
research KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
responsive-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
schema-design KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
scroll-animation KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
self-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
seo-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
session-budget KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
share-page KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
site-builder KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
site-create KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
site-teardown KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
sleep-on-it KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
sleep-setup KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
social-post KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
spawn-agent KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
test-gen KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
test-matrix KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
ui-component KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
video-gen KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
visual-explainer KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
visual-loop feat(frontend-loop): /visual-loop skill + dev-ship frontend-final-gate (Wave 4+5a) 2026-05-01 15:43:05 +08:00
vm-provision KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
wave-audit KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
web-assets KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
web-deploy KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
web-effects KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00