tribunal-kit 6.0.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/ARCHITECTURE.md +9 -6
- package/.agent/agents/accessibility-reviewer.md +23 -16
- package/.agent/agents/ai-code-reviewer.md +25 -21
- package/.agent/agents/anti-pattern-reviewer.md +12 -7
- package/.agent/agents/api-architect.md +1 -0
- package/.agent/agents/backend-specialist.md +23 -22
- package/.agent/agents/cloud-engineer.md +1 -0
- package/.agent/agents/code-archaeologist.md +1 -0
- package/.agent/agents/complexity-reviewer.md +10 -7
- package/.agent/agents/database-architect.md +3 -2
- package/.agent/agents/db-latency-auditor.md +6 -2
- package/.agent/agents/debugger.md +3 -2
- package/.agent/agents/dependency-reviewer.md +1 -0
- package/.agent/agents/devops-engineer.md +9 -8
- package/.agent/agents/documentation-writer.md +6 -5
- package/.agent/agents/explorer-agent.md +1 -0
- package/.agent/agents/frontend-reviewer.md +21 -17
- package/.agent/agents/frontend-specialist.md +23 -20
- package/.agent/agents/game-developer.md +1 -0
- package/.agent/agents/interaction-reviewer.md +10 -5
- package/.agent/agents/logic-reviewer.md +3 -0
- package/.agent/agents/minimalist-reviewer.md +6 -0
- package/.agent/agents/mobile-developer.md +7 -6
- package/.agent/agents/mobile-reviewer.md +14 -13
- package/.agent/agents/orchestrator.md +3 -0
- package/.agent/agents/penetration-tester.md +1 -0
- package/.agent/agents/performance-optimizer.md +6 -5
- package/.agent/agents/performance-reviewer.md +6 -6
- package/.agent/agents/pipeline-reviewer.md +144 -0
- package/.agent/agents/precedence-reviewer.md +1 -0
- package/.agent/agents/product-manager.md +1 -0
- package/.agent/agents/product-owner.md +1 -0
- package/.agent/agents/product-reviewer.md +12 -7
- package/.agent/agents/project-planner.md +3 -0
- package/.agent/agents/qa-automation-engineer.md +50 -43
- package/.agent/agents/resilience-reviewer.md +1 -0
- package/.agent/agents/schema-reviewer.md +1 -0
- package/.agent/agents/security-auditor.md +24 -24
- package/.agent/agents/seo-specialist.md +33 -23
- package/.agent/agents/sql-reviewer.md +5 -4
- package/.agent/agents/supervisor-agent.md +12 -2
- package/.agent/agents/swarm-worker-contracts.md +13 -13
- package/.agent/agents/swarm-worker-registry.md +51 -51
- package/.agent/agents/system-architect.md +1 -0
- package/.agent/agents/test-coverage-reviewer.md +25 -22
- package/.agent/agents/test-engineer.md +12 -11
- package/.agent/agents/throughput-optimizer.md +45 -40
- package/.agent/agents/type-safety-reviewer.md +5 -4
- package/.agent/agents/ui-ux-auditor.md +6 -4
- package/.agent/agents/ui-visual-auditor.md +3 -0
- package/.agent/agents/ux-reviewer.md +11 -6
- package/.agent/agents/visual-reviewer.md +11 -6
- package/.agent/agents/vitals-reviewer.md +5 -4
- package/.agent/config/claude.json +18 -0
- package/.agent/config/plugin.json +102 -0
- package/.agent/config/slash-commands.json +103 -0
- package/.agent/config/specialist-registry.json +415 -0
- package/.agent/config/system-prompt.md +191 -0
- package/.agent/history/architecture-graph.yaml +302 -3
- package/.agent/history/graph-cache.json +515 -45
- package/.agent/history/memory/.memory.idx +1532 -1
- package/.agent/history/memory/MEMORY.md +102 -1
- package/.agent/history/memory.db +0 -0
- package/.agent/history/snapshots/bin__adapter-install.js.json +13 -0
- package/.agent/history/snapshots/bin__global-store.js.json +15 -0
- package/.agent/history/snapshots/bin__mcp-server.js.json +19 -0
- package/.agent/history/snapshots/bin__proxy-server.js.json +20 -0
- package/.agent/history/snapshots/bin__spawn-agent.js.json +12 -0
- package/.agent/history/snapshots/bin__tk-proxy.js.json +21 -0
- package/.agent/history/snapshots/bin__tribunal-kit.js.json +9 -7
- package/.agent/history/snapshots/bin__wrapper.js.json +14 -0
- package/.agent/history/snapshots/eslint.config.js.json +1 -2
- package/.agent/history/snapshots/scripts__benchmark.js.json +14 -0
- package/.agent/history/snapshots/scripts__changelog.js.json +1 -2
- package/.agent/history/snapshots/scripts__fix-vbc.js.json +11 -0
- package/.agent/history/snapshots/scripts__stress_benchmark.js.json +15 -0
- package/.agent/history/snapshots/scripts__sync-version.js.json +1 -2
- package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -2
- package/.agent/history/snapshots/scripts__visual_audit.js.json +11 -0
- package/.agent/history/snapshots/test__integration__bridges.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__init.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__routing.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__sync_status.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__wave2.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__wrapper.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__align.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__args.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__audit_release.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__compile.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__context_broker.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__copyDir.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__init.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__learn.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__marathon.test.js.json +22 -0
- package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__memory.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__native.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__optimize.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +21 -0
- package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__semver.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__stress.test.js.json +15 -0
- package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__utils.test.js.json +10 -0
- package/.agent/mcp_config.json +1 -6
- package/.agent/routing_index.json +2033 -263
- package/.agent/rules/GEMINI.md +11 -9
- package/.agent/rules/GEMINI_PLANNER.md +19 -21
- package/.agent/scripts/_colors.js +52 -54
- package/.agent/scripts/_utils.js +52 -53
- package/.agent/scripts/ast_context_loader.js +137 -0
- package/.agent/scripts/auto_preview.js +39 -43
- package/.agent/scripts/bundle_analyzer.js +47 -60
- package/.agent/scripts/case_law_manager.js +200 -294
- package/.agent/scripts/checklist.js +73 -94
- package/.agent/scripts/cicd_validator.js +305 -0
- package/.agent/scripts/context_broker.js +317 -412
- package/.agent/scripts/contract_engine.js +402 -0
- package/.agent/scripts/dependency_analyzer.js +112 -124
- package/.agent/scripts/graph_builder.js +75 -103
- package/.agent/scripts/graph_visualizer.js +10 -12
- package/.agent/scripts/graph_zoom.js +38 -55
- package/.agent/scripts/guardrail_engine.js +195 -145
- package/.agent/scripts/impact_classifier.js +55 -30
- package/.agent/scripts/inner_loop_validator.js +108 -159
- package/.agent/scripts/integrity_manifest.js +59 -67
- package/.agent/scripts/lint_runner.js +65 -75
- package/.agent/scripts/marathon_harness.js +131 -208
- package/.agent/scripts/memory_engine.js +581 -0
- package/.agent/scripts/minify_context.js +29 -33
- package/.agent/scripts/minimal_change_engine.js +95 -87
- package/.agent/scripts/mutation_runner.js +46 -62
- package/.agent/scripts/payload_schemas.js +146 -0
- package/.agent/scripts/pipeline_engine.js +320 -209
- package/.agent/scripts/prompt_compiler.js +166 -93
- package/.agent/scripts/schema_validator.js +73 -121
- package/.agent/scripts/security_scan.js +88 -117
- package/.agent/scripts/session_manager.js +52 -69
- package/.agent/scripts/signal_detector.js +24 -22
- package/.agent/scripts/skill_evolution.js +184 -245
- package/.agent/scripts/skill_integrator.js +35 -48
- package/.agent/scripts/socratic_gate_policy.js +15 -12
- package/.agent/scripts/strengthen_skills.js +29 -33
- package/.agent/scripts/swarm_dispatcher.js +397 -200
- package/.agent/scripts/test_runner.js +54 -56
- package/.agent/scripts/token_budget_broker.js +126 -13
- package/.agent/scripts/trace_engine.js +126 -0
- package/.agent/scripts/verify_all.js +76 -93
- package/.agent/scripts/visual_audit.js +16 -21
- package/.agent/skill_topic_map.json +22 -3
- package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
- package/.agent/skills/60fps-animation/SKILL.md +7 -0
- package/.agent/skills/accessible-animation/SKILL.md +5 -1
- package/.agent/skills/adapt/SKILL.md +7 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
- package/.agent/skills/agent-organizer/SKILL.md +1 -0
- package/.agent/skills/agentic-patterns/SKILL.md +33 -25
- package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -2
- package/.agent/skills/ai-app-hardening/SKILL.md +9 -8
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
- package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
- package/.agent/skills/animation-systems/SKILL.md +11 -10
- package/.agent/skills/antfu-conventions/SKILL.md +7 -2
- package/.agent/skills/api-patterns/SKILL.md +14 -10
- package/.agent/skills/api-security-auditor/SKILL.md +15 -14
- package/.agent/skills/app-builder/SKILL.md +1 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
- package/.agent/skills/apple-design/SKILL.md +8 -7
- package/.agent/skills/architecture/SKILL.md +3 -2
- package/.agent/skills/audit-and-fix/SKILL.md +8 -5
- package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
- package/.agent/skills/backend-security-expert/SKILL.md +1 -0
- package/.agent/skills/baseline-ui/SKILL.md +8 -7
- package/.agent/skills/bash-linux/SKILL.md +1 -0
- package/.agent/skills/behavioral-modes/SKILL.md +1 -0
- package/.agent/skills/better-colors/SKILL.md +11 -7
- package/.agent/skills/better-typography/SKILL.md +30 -16
- package/.agent/skills/better-ui/SKILL.md +17 -10
- package/.agent/skills/bolder/SKILL.md +6 -0
- package/.agent/skills/brainstorming/SKILL.md +6 -4
- package/.agent/skills/browser-native-ai/SKILL.md +5 -4
- package/.agent/skills/build-primitive/SKILL.md +5 -0
- package/.agent/skills/building-native-ui/SKILL.md +1 -0
- package/.agent/skills/cicd-pro/SKILL.md +2 -1
- package/.agent/skills/clarify/SKILL.md +19 -14
- package/.agent/skills/clean-code/SKILL.md +16 -15
- package/.agent/skills/cloud-architect/SKILL.md +1 -0
- package/.agent/skills/cobejs/SKILL.md +7 -9
- package/.agent/skills/code-review-checklist/SKILL.md +1 -0
- package/.agent/skills/codebase-design/SKILL.md +7 -2
- package/.agent/skills/colorize/SKILL.md +8 -3
- package/.agent/skills/compact-landing/SKILL.md +8 -3
- package/.agent/skills/company-logos/SKILL.md +6 -0
- package/.agent/skills/config-validator/SKILL.md +10 -9
- package/.agent/skills/containerization-pro/SKILL.md +6 -5
- package/.agent/skills/context-engineering-pro/SKILL.md +5 -4
- package/.agent/skills/create-design-md/SKILL.md +13 -5
- package/.agent/skills/critique/SKILL.md +10 -8
- package/.agent/skills/csharp-developer/SKILL.md +1 -0
- package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
- package/.agent/skills/database-design/SKILL.md +2 -1
- package/.agent/skills/delight/SKILL.md +6 -0
- package/.agent/skills/deployment-procedures/SKILL.md +2 -1
- package/.agent/skills/design-lab/SKILL.md +5 -0
- package/.agent/skills/devops-engineer/SKILL.md +3 -2
- package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
- package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
- package/.agent/skills/distill/SKILL.md +7 -2
- package/.agent/skills/documentation-templates/SKILL.md +3 -2
- package/.agent/skills/domain-modeling/SKILL.md +12 -4
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +7 -3
- package/.agent/skills/edge-ai-mobile/SKILL.md +5 -1
- package/.agent/skills/edge-computing/SKILL.md +9 -8
- package/.agent/skills/emil-design-eng/SKILL.md +43 -27
- package/.agent/skills/error-resilience/SKILL.md +34 -16
- package/.agent/skills/expo-router-v4/SKILL.md +2 -1
- package/.agent/skills/extract-design-system/SKILL.md +12 -11
- package/.agent/skills/fabel-protocol/SKILL.md +24 -17
- package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
- package/.agent/skills/fixing-metadata/SKILL.md +24 -13
- package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
- package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
- package/.agent/skills/frontend-design/SKILL.md +21 -13
- package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
- package/.agent/skills/game-design-expert/SKILL.md +1 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
- package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
- package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
- package/.agent/skills/git-pro/SKILL.md +10 -9
- package/.agent/skills/github-operations/SKILL.md +2 -1
- package/.agent/skills/gpt-taste/SKILL.md +7 -0
- package/.agent/skills/gsap-core/SKILL.md +26 -22
- package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
- package/.agent/skills/gsap-performance/SKILL.md +4 -3
- package/.agent/skills/gsap-plugins/SKILL.md +34 -33
- package/.agent/skills/gsap-react/SKILL.md +9 -8
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
- package/.agent/skills/gsap-timeline/SKILL.md +18 -15
- package/.agent/skills/gsap-utils/SKILL.md +25 -24
- package/.agent/skills/harden/SKILL.md +9 -3
- package/.agent/skills/harness-protocol/SKILL.md +1 -0
- package/.agent/skills/i18n-localization/SKILL.md +10 -9
- package/.agent/skills/impeccable/SKILL.md +5 -0
- package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
- package/.agent/skills/improve-ui/SKILL.md +12 -5
- package/.agent/skills/intelligent-routing/SKILL.md +7 -6
- package/.agent/skills/knowledge-graph/SKILL.md +1 -0
- package/.agent/skills/landing-page/SKILL.md +1 -0
- package/.agent/skills/lint-and-validate/SKILL.md +9 -4
- package/.agent/skills/llm-engineering/SKILL.md +55 -54
- package/.agent/skills/local-first/SKILL.md +20 -19
- package/.agent/skills/local-first-architecture/SKILL.md +6 -1
- package/.agent/skills/lottie-animation/SKILL.md +7 -3
- package/.agent/skills/marquee-loop/SKILL.md +1 -0
- package/.agent/skills/masked-reveal/SKILL.md +17 -4
- package/.agent/skills/mcp-builder/SKILL.md +13 -10
- package/.agent/skills/micro-interaction/SKILL.md +20 -5
- package/.agent/skills/mobile-design/SKILL.md +26 -15
- package/.agent/skills/monorepo-management/SKILL.md +3 -2
- package/.agent/skills/morphing-icons/SKILL.md +16 -6
- package/.agent/skills/motion-engineering/SKILL.md +19 -15
- package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
- package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
- package/.agent/skills/observability/SKILL.md +45 -44
- package/.agent/skills/opentelemetry-observability/SKILL.md +2 -1
- package/.agent/skills/page-transition-animation/SKILL.md +6 -3
- package/.agent/skills/parallel-agents/SKILL.md +7 -2
- package/.agent/skills/performance-profiling/SKILL.md +24 -13
- package/.agent/skills/plan-writing/SKILL.md +1 -0
- package/.agent/skills/platform-engineer/SKILL.md +3 -2
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +3 -2
- package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
- package/.agent/skills/polish/SKILL.md +13 -12
- package/.agent/skills/powershell-windows/SKILL.md +1 -0
- package/.agent/skills/pricing-page/SKILL.md +8 -3
- package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
- package/.agent/skills/progressive-blur/SKILL.md +9 -4
- package/.agent/skills/project-idioms/SKILL.md +1 -0
- package/.agent/skills/property-based-testing/SKILL.md +10 -12
- package/.agent/skills/python-patterns/SKILL.md +1 -0
- package/.agent/skills/python-pro/SKILL.md +1 -0
- package/.agent/skills/quieter/SKILL.md +6 -0
- package/.agent/skills/react-doctor/SKILL.md +6 -0
- package/.agent/skills/react-specialist/SKILL.md +32 -28
- package/.agent/skills/readme-builder/SKILL.md +1 -0
- package/.agent/skills/realtime-patterns/SKILL.md +34 -33
- package/.agent/skills/red-team-tactics/SKILL.md +1 -0
- package/.agent/skills/redesign-skill/SKILL.md +6 -0
- package/.agent/skills/review-animations/SKILL.md +5 -2
- package/.agent/skills/review-animations/STANDARDS.md +37 -23
- package/.agent/skills/rust-pro/SKILL.md +1 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
- package/.agent/skills/server-management/SKILL.md +1 -0
- package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
- package/.agent/skills/shape/SKILL.md +9 -2
- package/.agent/skills/skill-creator/SKILL.md +1 -0
- package/.agent/skills/soft-skill/SKILL.md +6 -0
- package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
- package/.agent/skills/sql-pro/SKILL.md +1 -0
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
- package/.agent/skills/svg-animation/SKILL.md +16 -7
- package/.agent/skills/swiftui-expert/SKILL.md +1 -0
- package/.agent/skills/swiss-design/SKILL.md +5 -0
- package/.agent/skills/system-design-pro/SKILL.md +1 -0
- package/.agent/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
- package/.agent/skills/taste-skill/SKILL.md +6 -0
- package/.agent/skills/tdd-workflow/SKILL.md +5 -0
- package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
- package/.agent/skills/testing-patterns/SKILL.md +123 -115
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
- package/.agent/skills/thinking-protocol/SKILL.md +3 -0
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
- package/.agent/skills/transitions-dev/SKILL.md +19 -6
- package/.agent/skills/trend-researcher/SKILL.md +1 -0
- package/.agent/skills/typescript-advanced/SKILL.md +23 -18
- package/.agent/skills/typeset/SKILL.md +10 -1
- package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
- package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
- package/.agent/skills/ui-skills-root/SKILL.md +39 -38
- package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
- package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
- package/.agent/skills/vector-search-pgvector/SKILL.md +3 -2
- package/.agent/skills/vue-expert/SKILL.md +22 -19
- package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
- package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
- package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
- package/.agent/skills/web-quality-audit/SKILL.md +5 -0
- package/.agent/skills/webapp-testing/SKILL.md +14 -13
- package/.agent/skills/webgpu-performance/SKILL.md +1 -0
- package/.agent/skills/whimsy-injector/SKILL.md +9 -5
- package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
- package/.agent/skills/zero-trust-passkeys/SKILL.md +11 -6
- package/.agent/templates/DESIGN.md +119 -110
- package/.agent/templates/design-tokens.json +9 -6
- package/.agent/workflows/acf.md +1 -0
- package/.agent/workflows/api-tester.md +1 -0
- package/.agent/workflows/audit.md +1 -0
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/changelog.md +1 -0
- package/.agent/workflows/contract.md +60 -0
- package/.agent/workflows/create.md +1 -0
- package/.agent/workflows/debug.md +1 -0
- package/.agent/workflows/deploy.md +1 -0
- package/.agent/workflows/enhance.md +1 -0
- package/.agent/workflows/fix-ci.md +89 -0
- package/.agent/workflows/fix.md +1 -0
- package/.agent/workflows/generate.md +1 -0
- package/.agent/workflows/marathon.md +1 -0
- package/.agent/workflows/migrate.md +1 -0
- package/.agent/workflows/minimal.md +9 -7
- package/.agent/workflows/orchestrate.md +1 -0
- package/.agent/workflows/performance-benchmarker.md +1 -0
- package/.agent/workflows/pipeline.md +26 -21
- package/.agent/workflows/plan.md +1 -0
- package/.agent/workflows/preview.md +1 -0
- package/.agent/workflows/refactor.md +3 -2
- package/.agent/workflows/review-ai.md +4 -3
- package/.agent/workflows/review.md +1 -0
- package/.agent/workflows/session.md +1 -0
- package/.agent/workflows/status.md +1 -0
- package/.agent/workflows/strengthen-skills.md +1 -0
- package/.agent/workflows/super-prompt.md +1 -0
- package/.agent/workflows/swarm.md +15 -3
- package/.agent/workflows/test.md +8 -7
- package/.agent/workflows/tribunal-backend.md +3 -2
- package/.agent/workflows/tribunal-cicd.md +104 -0
- package/.agent/workflows/tribunal-database.md +1 -0
- package/.agent/workflows/tribunal-frontend.md +8 -6
- package/.agent/workflows/tribunal-full.md +2 -1
- package/.agent/workflows/tribunal-mobile.md +6 -5
- package/.agent/workflows/tribunal-performance.md +1 -0
- package/.agent/workflows/tribunal-speed.md +1 -0
- package/.agent/workflows/tribunal-ui.md +29 -21
- package/.agent/workflows/ui-ux-pro-max.md +19 -15
- package/.claude/CLAUDE.md +442 -0
- package/CONTRIBUTING.md +3 -3
- package/README.md +105 -45
- package/SECURITY.md +11 -11
- package/bin/adapter-install.js +240 -0
- package/bin/global-store.js +48 -0
- package/bin/mcp-server.js +781 -332
- package/bin/proxy-server.js +113 -0
- package/bin/spawn-agent.js +39 -0
- package/bin/tk-proxy.js +34 -0
- package/bin/tribunal-kit.js +29 -30
- package/bin/wrapper.js +40 -46
- package/dist/cli.js +6 -0
- package/dist/commands/case.js +2 -0
- package/dist/commands/contract.js +440 -0
- package/dist/commands/init.js +8 -51
- package/dist/commands/status.js +61 -30
- package/dist/commands/validate.js +22 -31
- package/dist/index.d.ts +8 -1
- package/dist/tui/banner.js +77 -0
- package/dist/tui/index.js +21 -0
- package/dist/tui/reviewer-grid.js +90 -0
- package/dist/tui/shimmer.js +91 -0
- package/dist/tui/theme.js +130 -0
- package/dist/tui/tree.js +93 -0
- package/dist/tui/wizard.js +148 -0
- package/dist/utils/helpers.js +5 -41
- package/package.json +33 -15
- package/scripts/benchmark.js +62 -86
- package/scripts/build-graph.js +71 -0
- package/scripts/changelog.js +67 -73
- package/scripts/fix-vbc.js +13 -15
- package/scripts/fix-vbc.ps1 +2 -118
- package/scripts/stress_benchmark.js +358 -0
- package/scripts/sync-version.js +71 -41
- package/scripts/validate-payload.js +23 -30
- package/scripts/visual_audit.js +23 -13
- package/.agent/history/snapshots/migrate_refs.js.json +0 -11
- package/.agent/scripts/compile_router.py +0 -112
- package/.agent/scripts/migrate_skills_frontmatter.py +0 -64
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before designing or reviewing UI micro-animations, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Frequency Gate (Section 54) → Never animate keyboard actions or high-frequency controls (100+ times/day); keep UI animations under 300ms
|
|
24
25
|
2. Easing Rule (Section 75) → Use strong `ease-out` (`cubic-bezier(0.23, 1, 0.32, 1)`) for entering UI elements; ban `ease-in`
|
|
25
26
|
3. Origin-Aware Popovers (Section 114) → Never animate scale from `scale(0)`; start at `scale(0.95)` with origin bound to trigger coordinates
|
|
@@ -35,44 +36,50 @@ You are a design engineer with the craft sensibility. You build interfaces where
|
|
|
35
36
|
## Core Philosophy
|
|
36
37
|
|
|
37
38
|
### Taste is trained, not innate
|
|
39
|
+
|
|
38
40
|
Good taste is not personal preference. It is a trained instinct: the ability to see beyond the obvious and recognize what elevates. Develop it by surrounding yourself with great work, thinking deeply about why something feels good, and practicing relentlessly.
|
|
39
41
|
|
|
40
42
|
### Unseen details compound
|
|
43
|
+
|
|
41
44
|
Most details users never consciously notice. That is the point. When a feature functions exactly as someone assumes it should, they proceed without giving it a second thought. Every decision below exists because the aggregate of invisible correctness creates interfaces people love without knowing why.
|
|
42
45
|
|
|
43
46
|
### Beauty is leverage
|
|
47
|
+
|
|
44
48
|
People select tools based on the overall experience, not just functionality. Good defaults and good animations are real differentiators. Use beauty as leverage to stand out.
|
|
45
49
|
|
|
46
50
|
## Review Format (Required)
|
|
47
51
|
|
|
48
52
|
When reviewing UI code, you MUST use a markdown table with Before/After columns. Do NOT use a list with "Before:" and "After:" on separate lines. Always output an actual markdown table like this:
|
|
49
53
|
|
|
50
|
-
| Before
|
|
51
|
-
|
|
|
52
|
-
| `transition: all 300ms`
|
|
53
|
-
| `transform: scale(0)`
|
|
54
|
-
| `ease-in` on dropdown
|
|
55
|
-
| No `:active` state on button | `transform: scale(0.97)` on `:active`
|
|
56
|
-
| `transform-origin: center`
|
|
54
|
+
| Before | After | Why |
|
|
55
|
+
| ---------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
56
|
+
| `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; avoid `all` |
|
|
57
|
+
| `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing in the real world appears from nothing |
|
|
58
|
+
| `ease-in` on dropdown | `ease-out` with custom curve | `ease-in` feels sluggish; `ease-out` gives instant feedback |
|
|
59
|
+
| No `:active` state on button | `transform: scale(0.97)` on `:active` | Buttons must feel responsive to press |
|
|
60
|
+
| `transform-origin: center` | `transform-origin: var(--radix-popover-content-transform-origin)` | Popovers should scale from their trigger |
|
|
57
61
|
|
|
58
62
|
## The Animation Decision Framework
|
|
59
63
|
|
|
60
64
|
Before writing any animation code, answer these questions in order:
|
|
61
65
|
|
|
62
66
|
### 1. Should this animate at all?
|
|
67
|
+
|
|
63
68
|
**Ask:** How often will users see this animation?
|
|
64
69
|
|
|
65
|
-
| Frequency
|
|
66
|
-
|
|
|
67
|
-
| 100+ times/day (keyboard shortcuts, command palette)
|
|
68
|
-
| Tens of times/day (hover effects, list navigation)
|
|
69
|
-
| Occasional (modals, drawers, toasts)
|
|
70
|
-
| Rare/first-time (onboarding, feedback forms, celebrations) | Can add delight
|
|
70
|
+
| Frequency | Decision |
|
|
71
|
+
| ---------------------------------------------------------- | ---------------------------- |
|
|
72
|
+
| 100+ times/day (keyboard shortcuts, command palette) | No animation. Ever. |
|
|
73
|
+
| Tens of times/day (hover effects, list navigation) | Remove or drastically reduce |
|
|
74
|
+
| Occasional (modals, drawers, toasts) | Standard animation |
|
|
75
|
+
| Rare/first-time (onboarding, feedback forms, celebrations) | Can add delight |
|
|
71
76
|
|
|
72
77
|
**Never animate keyboard-initiated actions.** These actions are repeated hundreds of times daily. Animation makes them feel slow and disconnected.
|
|
73
78
|
|
|
74
79
|
### 2. What is the purpose?
|
|
80
|
+
|
|
75
81
|
Valid purposes:
|
|
82
|
+
|
|
76
83
|
- **Spatial consistency**: toast enters/exits from the same direction.
|
|
77
84
|
- **State indication**: a morphing feedback button shows state change.
|
|
78
85
|
- **Explanation**: a marketing animation showing a feature.
|
|
@@ -82,45 +89,52 @@ Valid purposes:
|
|
|
82
89
|
If the purpose is just "it looks cool" and the user sees it often, don't animate.
|
|
83
90
|
|
|
84
91
|
### 3. What easing should it use?
|
|
92
|
+
|
|
85
93
|
Is the element entering or exiting?
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
94
|
+
Yes → ease-out (starts fast, feels responsive)
|
|
95
|
+
No →
|
|
96
|
+
Is it moving/morphing on screen?
|
|
97
|
+
Yes → ease-in-out (natural acceleration/deceleration)
|
|
98
|
+
Is it a hover/color change?
|
|
99
|
+
Yes → ease
|
|
100
|
+
Is it constant motion?
|
|
101
|
+
Yes → linear
|
|
102
|
+
Default → ease-out
|
|
95
103
|
|
|
96
104
|
**Critical: use custom easing curves.**
|
|
105
|
+
|
|
97
106
|
```css
|
|
98
107
|
/* Strong ease-out for UI interactions */
|
|
99
108
|
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
|
|
100
109
|
/* Strong ease-in-out for on-screen movement */
|
|
101
110
|
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
|
|
102
111
|
```
|
|
112
|
+
|
|
103
113
|
**Never use ease-in for UI animations.** It makes the interface feel sluggish.
|
|
104
114
|
|
|
105
115
|
### 4. How fast should it be?
|
|
106
|
-
|
|
107
|
-
|
|
|
108
|
-
|
|
|
116
|
+
|
|
117
|
+
| Element | Duration |
|
|
118
|
+
| ------------------------ | --------- |
|
|
119
|
+
| Button press feedback | 100-160ms |
|
|
109
120
|
| Tooltips, small popovers | 125-200ms |
|
|
110
|
-
| Dropdowns, selects
|
|
111
|
-
| Modals, drawers
|
|
121
|
+
| Dropdowns, selects | 150-250ms |
|
|
122
|
+
| Modals, drawers | 200-500ms |
|
|
112
123
|
|
|
113
124
|
**Rule: UI animations should stay under 300ms.** Perception of speed matters as much as actual speed.
|
|
114
125
|
|
|
115
126
|
## Component Building Principles
|
|
116
127
|
|
|
117
128
|
### Buttons must feel responsive
|
|
129
|
+
|
|
118
130
|
Add `transform: scale(0.97)` on `:active` with subtle transition (160ms ease-out).
|
|
119
131
|
|
|
120
132
|
### Never animate from scale(0)
|
|
133
|
+
|
|
121
134
|
Start from `scale(0.95)` or higher combined with opacity.
|
|
122
135
|
|
|
123
136
|
### Make popovers origin-aware
|
|
137
|
+
|
|
124
138
|
Popovers should scale in from their trigger, not from center. Explicitly set `transform-origin` to the trigger coordinates (e.g., `var(--radix-popover-content-transform-origin)`). Modals are exempt as they are viewport-centered.
|
|
125
139
|
|
|
126
140
|
---
|
|
@@ -141,6 +155,7 @@ Popovers should scale in from their trigger, not from center. Explicitly set `tr
|
|
|
141
155
|
### ✅ Pre-Flight Self-Audit
|
|
142
156
|
|
|
143
157
|
Review these questions before confirming output:
|
|
158
|
+
|
|
144
159
|
```
|
|
145
160
|
✅ Did I justify the animation's existence based on frequency?
|
|
146
161
|
✅ Are all UI animations under 300ms?
|
|
@@ -152,5 +167,6 @@ Review these questions before confirming output:
|
|
|
152
167
|
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
153
168
|
|
|
154
169
|
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
170
|
+
|
|
155
171
|
- ❌ **Forbidden:** Declaring animation work complete because the code compiles.
|
|
156
172
|
- ✅ **Required:** Provide evidence that the animation executes flawlessly at 60fps in the browser, adhering to the 300ms budget and easing rules.
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before writing retry logic, circuit breakers, or error handling routines, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Idempotency Key Rule for Retries (Section 123) → Require explicit idempotency keys when retrying non-safe operations (POST/PUT); ban un-keyed retries
|
|
24
25
|
2. Exponential Backoff with Jitter (Section 106) → Implement randomized full jitter with capped exponential delays; ban fixed-delay retry loops
|
|
25
26
|
3. Operational vs Programmer Error Split (Section 28) → Catch and recover strictly from `OperationalError` instances; allow programmer bugs (`TypeError`) to crash fast
|
|
@@ -102,7 +103,12 @@ const DEFAULT_RETRY: RetryOptions = {
|
|
|
102
103
|
maxRetries: 3,
|
|
103
104
|
baseDelayMs: 500,
|
|
104
105
|
maxDelayMs: 15_000,
|
|
105
|
-
retryableErrors:
|
|
106
|
+
retryableErrors: err =>
|
|
107
|
+
err instanceof Error &&
|
|
108
|
+
(err.message.includes('ECONNRESET') ||
|
|
109
|
+
err.message.includes('ETIMEDOUT') ||
|
|
110
|
+
err.message.includes('503') ||
|
|
111
|
+
err.message.includes('429')),
|
|
106
112
|
};
|
|
107
113
|
|
|
108
114
|
async function withRetry<T>(fn: () => Promise<T>, options: Partial<RetryOptions> = {}): Promise<T> {
|
|
@@ -122,16 +128,19 @@ async function withRetry<T>(fn: () => Promise<T>, options: Partial<RetryOptions>
|
|
|
122
128
|
const capped = Math.min(exponential, opts.maxDelayMs);
|
|
123
129
|
const jitter = Math.random() * capped;
|
|
124
130
|
|
|
125
|
-
console.warn(
|
|
131
|
+
console.warn(
|
|
132
|
+
`[RETRY] Attempt ${attempt + 1}/${opts.maxRetries} failed. ` +
|
|
133
|
+
`Retrying in ${Math.round(jitter)}ms...`,
|
|
134
|
+
);
|
|
126
135
|
|
|
127
136
|
await sleep(jitter);
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
|
-
throw new Error(
|
|
139
|
+
throw new Error('Unreachable');
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
function sleep(ms: number): Promise<void> {
|
|
134
|
-
return new Promise(
|
|
143
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
135
144
|
}
|
|
136
145
|
|
|
137
146
|
// ❌ NEVER retry non-idempotent operations without idempotency keys
|
|
@@ -145,9 +154,9 @@ function sleep(ms: number): Promise<void> {
|
|
|
145
154
|
|
|
146
155
|
```typescript
|
|
147
156
|
enum CircuitState {
|
|
148
|
-
CLOSED =
|
|
149
|
-
OPEN =
|
|
150
|
-
HALF_OPEN =
|
|
157
|
+
CLOSED = 'CLOSED', // Normal — requests pass through
|
|
158
|
+
OPEN = 'OPEN', // Tripped — requests fail immediately
|
|
159
|
+
HALF_OPEN = 'HALF_OPEN', // Testing — one request allowed
|
|
151
160
|
}
|
|
152
161
|
|
|
153
162
|
class CircuitBreaker {
|
|
@@ -210,7 +219,7 @@ const paymentCircuit = new CircuitBreaker(5, 30_000);
|
|
|
210
219
|
|
|
211
220
|
const result = await paymentCircuit.execute(
|
|
212
221
|
() => paymentGateway.charge(amount),
|
|
213
|
-
() => ({ status:
|
|
222
|
+
() => ({ status: 'deferred', message: 'Payment queued for retry' }),
|
|
214
223
|
);
|
|
215
224
|
```
|
|
216
225
|
|
|
@@ -220,7 +229,7 @@ const result = await paymentCircuit.execute(
|
|
|
220
229
|
|
|
221
230
|
```tsx
|
|
222
231
|
// ✅ Error boundary with recovery
|
|
223
|
-
import { Component, type ReactNode } from
|
|
232
|
+
import { Component, type ReactNode } from 'react';
|
|
224
233
|
|
|
225
234
|
interface Props {
|
|
226
235
|
children: ReactNode;
|
|
@@ -251,7 +260,9 @@ class ErrorBoundary extends Component<Props, State> {
|
|
|
251
260
|
this.props.fallback ?? (
|
|
252
261
|
<div role="alert">
|
|
253
262
|
<h2>Something went wrong</h2>
|
|
254
|
-
<button onClick={() => this.setState({ hasError: false, error: null })}>
|
|
263
|
+
<button onClick={() => this.setState({ hasError: false, error: null })}>
|
|
264
|
+
Try Again
|
|
265
|
+
</button>
|
|
255
266
|
</div>
|
|
256
267
|
)
|
|
257
268
|
);
|
|
@@ -273,7 +284,10 @@ class ErrorBoundary extends Component<Props, State> {
|
|
|
273
284
|
|
|
274
285
|
```typescript
|
|
275
286
|
// ✅ AbortController-based timeout (modern, cancellable)
|
|
276
|
-
async function withTimeout<T>(
|
|
287
|
+
async function withTimeout<T>(
|
|
288
|
+
fn: (signal: AbortSignal) => Promise<T>,
|
|
289
|
+
timeoutMs: number,
|
|
290
|
+
): Promise<T> {
|
|
277
291
|
const controller = new AbortController();
|
|
278
292
|
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
279
293
|
|
|
@@ -290,7 +304,7 @@ async function withTimeout<T>(fn: (signal: AbortSignal) => Promise<T>, timeoutMs
|
|
|
290
304
|
}
|
|
291
305
|
|
|
292
306
|
// Usage
|
|
293
|
-
const data = await withTimeout(
|
|
307
|
+
const data = await withTimeout(signal => fetch('https://api.example.com/data', { signal }), 5000);
|
|
294
308
|
```
|
|
295
309
|
|
|
296
310
|
---
|
|
@@ -318,8 +332,8 @@ async function getUserProfile(userId: string): Promise<UserProfile> {
|
|
|
318
332
|
// Layer 3: Default
|
|
319
333
|
return {
|
|
320
334
|
id: userId,
|
|
321
|
-
name:
|
|
322
|
-
avatar:
|
|
335
|
+
name: 'Unknown User',
|
|
336
|
+
avatar: '/default-avatar.png',
|
|
323
337
|
_stale: true,
|
|
324
338
|
_default: true,
|
|
325
339
|
};
|
|
@@ -343,7 +357,11 @@ interface DeadLetter<T> {
|
|
|
343
357
|
originalQueue: string;
|
|
344
358
|
}
|
|
345
359
|
|
|
346
|
-
async function processWithDLQ<T>(
|
|
360
|
+
async function processWithDLQ<T>(
|
|
361
|
+
payload: T,
|
|
362
|
+
processor: (item: T) => Promise<void>,
|
|
363
|
+
dlqStore: { push: (item: DeadLetter<T>) => Promise<void> },
|
|
364
|
+
): Promise<void> {
|
|
347
365
|
try {
|
|
348
366
|
await withRetry(() => processor(payload), { maxRetries: 3 });
|
|
349
367
|
} catch (error) {
|
|
@@ -353,7 +371,7 @@ async function processWithDLQ<T>(payload: T, processor: (item: T) => Promise<voi
|
|
|
353
371
|
error: error instanceof Error ? error.message : String(error),
|
|
354
372
|
failedAt: new Date().toISOString(),
|
|
355
373
|
attempts: 4,
|
|
356
|
-
originalQueue:
|
|
374
|
+
originalQueue: 'main',
|
|
357
375
|
});
|
|
358
376
|
// Don't throw — the message is preserved for manual review
|
|
359
377
|
}
|
|
@@ -18,6 +18,7 @@ skills:
|
|
|
18
18
|
## Mandatory Pre-Flight Context Inspection
|
|
19
19
|
|
|
20
20
|
Before building mobile navigation or components:
|
|
21
|
+
|
|
21
22
|
1. New Architecture Enforcement → Enable Fabric renderer and TurboModules in `app.json` (`"newArchEnabled": true`)
|
|
22
23
|
2. Typed Routing → Use `expo-router` typed routes for safe navigation
|
|
23
24
|
3. Safe Area & Haptics → Wrap screens in `SafeAreaView` and provide subtle `expo-haptics` feedback
|
|
@@ -62,7 +63,7 @@ export function TouchButton({ label, onPress, ...props }: TouchButtonProps) {
|
|
|
62
63
|
return (
|
|
63
64
|
<Pressable
|
|
64
65
|
{...props}
|
|
65
|
-
onPress={
|
|
66
|
+
onPress={e => {
|
|
66
67
|
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
|
|
67
68
|
onPress?.(e);
|
|
68
69
|
}}
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before extracting design systems or tokenizing CSS variables, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. 3+ Repetition Frequency Rule (Section 15) → Only tokenize values that recur 3+ times across components to prevent variable bloat
|
|
24
25
|
2. Semantic Naming Convention (Section 17) → Use functional/semantic names (`--color-primary`) rather than literal colors (`--red-500`)
|
|
25
26
|
3. Accessibility Token Contract (Section 110) → Ensure extracted text and surface tokens satisfy a min 4.5:1 WCAG AA contrast ratio
|
|
@@ -52,7 +53,7 @@ Tokens should be semantic, not literal. `color-brand` > `color-red`.
|
|
|
52
53
|
--surface-muted: 210, 40%, 96%;
|
|
53
54
|
|
|
54
55
|
/* Typography */
|
|
55
|
-
--font-sans:
|
|
56
|
+
--font-sans: 'Inter', system-ui, sans-serif;
|
|
56
57
|
|
|
57
58
|
/* Space / Geometry (8px grid scale) */
|
|
58
59
|
--space-1: 0.25rem; /* 4px */
|
|
@@ -90,26 +91,26 @@ If building a design system inside React/Next.js, standardize the system through
|
|
|
90
91
|
|
|
91
92
|
```typescript
|
|
92
93
|
// ✅ Efficient Extracted Component Architecture
|
|
93
|
-
import { cva } from
|
|
94
|
+
import { cva } from 'class-variance-authority';
|
|
94
95
|
|
|
95
96
|
const buttonStyles = cva(
|
|
96
|
-
|
|
97
|
+
'inline-flex items-center justify-center rounded-md font-medium transition-colors', // Base
|
|
97
98
|
{
|
|
98
99
|
variants: {
|
|
99
100
|
intent: {
|
|
100
|
-
primary:
|
|
101
|
-
destructive:
|
|
102
|
-
outline:
|
|
101
|
+
primary: 'bg-primary text-white hover:bg-primary/90',
|
|
102
|
+
destructive: 'bg-red-500 text-white hover:bg-red-600',
|
|
103
|
+
outline: 'border border-input hover:bg-accent',
|
|
103
104
|
},
|
|
104
105
|
size: {
|
|
105
|
-
sm:
|
|
106
|
-
default:
|
|
107
|
-
lg:
|
|
106
|
+
sm: 'h-9 px-3 text-sm',
|
|
107
|
+
default: 'h-10 px-4 py-2', // Extracted standard size
|
|
108
|
+
lg: 'h-11 px-8',
|
|
108
109
|
},
|
|
109
110
|
},
|
|
110
111
|
defaultVariants: {
|
|
111
|
-
intent:
|
|
112
|
-
size:
|
|
112
|
+
intent: 'primary',
|
|
113
|
+
size: 'default',
|
|
113
114
|
},
|
|
114
115
|
},
|
|
115
116
|
);
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before executing reasoning loops, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `package.json` / dependency manifests → Verify exact framework version boundaries (React 19 vs 18, Next.js 15 vs 14)
|
|
24
25
|
2. Epistemic Confidence Checklist (Section 1) → Categorize implementation confidence L1 to L5
|
|
25
26
|
3. High-Risk Hallucination Heatmap (Section 7) → Tag uncertain ORM/SDK method calls with `// VERIFY: [reason]` tags
|
|
@@ -52,6 +53,7 @@ CONFIDENCE CHECK:
|
|
|
52
53
|
### Epistemic Confidence Levels (L1-L5)
|
|
53
54
|
|
|
54
55
|
Rate the certainty of your implementation decisions using this hierarchy:
|
|
56
|
+
|
|
55
57
|
- **L1: Absolute Certainty (Verified Truth)**: Code is fully checked against active files in the workspace or verified in up-to-date documentation.
|
|
56
58
|
- **L2: High Confidence (Standard API)**: Using standard library or stable, unchanged language features (e.g. standard Node `fs` methods, basic Python functions).
|
|
57
59
|
- **L3: Moderate Confidence (Likely but Unverified)**: Custom utilities or package features that are likely correct but not actively verified. Must add `// VERIFY: [reason]` tags.
|
|
@@ -222,18 +224,21 @@ ALWAYS:
|
|
|
222
224
|
## 6. Fabel-5 Cognitive Boundaries (Wellbeing, Evenhandedness, Memory)
|
|
223
225
|
|
|
224
226
|
### User Wellbeing & Safety
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
227
|
+
|
|
228
|
+
- **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
|
|
229
|
+
- **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
|
|
230
|
+
- **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
|
|
231
|
+
- **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
|
|
229
232
|
|
|
230
233
|
### Moral & Political Evenhandedness
|
|
231
|
-
|
|
232
|
-
|
|
234
|
+
|
|
235
|
+
- **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
|
|
236
|
+
- **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
|
|
233
237
|
|
|
234
238
|
### Memory & Preference Boundaries
|
|
235
|
-
|
|
236
|
-
|
|
239
|
+
|
|
240
|
+
- **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
|
|
241
|
+
- **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
|
|
237
242
|
|
|
238
243
|
---
|
|
239
244
|
|
|
@@ -241,15 +246,15 @@ ALWAYS:
|
|
|
241
246
|
|
|
242
247
|
High-risk hallucination zones (verify before using):
|
|
243
248
|
|
|
244
|
-
| Category
|
|
245
|
-
|
|
246
|
-
| **Prisma ORM**
|
|
247
|
-
| **React 19**
|
|
248
|
-
| **Next.js 15**
|
|
249
|
-
| **OpenAI SDK**
|
|
250
|
-
| **Anthropic SDK** | `claude-4-opus`, `temperature: "low"`
|
|
251
|
-
| **Node.js**
|
|
252
|
-
| **Python**
|
|
249
|
+
| Category | Common Hallucinations | Why |
|
|
250
|
+
| ----------------- | ------------------------------------------------- | -------------------------- |
|
|
251
|
+
| **Prisma ORM** | `findOne()`, `updateMany({where:{id}})` | Renamed/misused methods |
|
|
252
|
+
| **React 19** | `useFormState()`, `useServerComponent()` | Renamed or never existed |
|
|
253
|
+
| **Next.js 15** | `headers()` without await, `notFound()` in client | Breaking changes |
|
|
254
|
+
| **OpenAI SDK** | `response.text`, `chat.stream()`, `gpt-5` | Wrong properties/methods |
|
|
255
|
+
| **Anthropic SDK** | `claude-4-opus`, `temperature: "low"` | Wrong model strings/types |
|
|
256
|
+
| **Node.js** | `fs.readAsync()`, `fetch()` below Node 18 | Methods that don't exist |
|
|
257
|
+
| **Python** | `list.findIndex()`, `dict.filter()` | JS methods on Python types |
|
|
253
258
|
|
|
254
259
|
When in doubt: **search the official docs**. Never trust training data for API surfaces that change between versions.
|
|
255
260
|
|
|
@@ -279,10 +284,12 @@ Before finalizing any response, ask yourself:
|
|
|
279
284
|
---
|
|
280
285
|
|
|
281
286
|
## Pre-Flight Checklist
|
|
287
|
+
|
|
282
288
|
- [ ] Have I reviewed the Fabel epistemic confidence guidelines before starting?
|
|
283
289
|
- [ ] Have I checked the framework version context in the workspace?
|
|
284
290
|
|
|
285
291
|
## VBC Protocol
|
|
292
|
+
|
|
286
293
|
- [ ] Verify that any APIs or files to be updated are loaded and checked for stale context prior to execution.
|
|
287
294
|
|
|
288
295
|
---
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before remediating HTML accessibility defects, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Priority Matrix (Section 22) → Ensure accessible names on icon buttons (P1) and native HTML keyboard controls (P2) before styling
|
|
24
25
|
2. Focus Ring Policy (Section 29) → Ban `outline: none` without providing explicit `:focus-visible` replacement (`2px` ring + offset)
|
|
25
26
|
3. Form Error Association (Section 32) → Attach `aria-invalid="true"` and `aria-describedby` pointing to error text IDs
|
|
@@ -30,21 +31,22 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
|
|
|
30
31
|
|
|
31
32
|
## 1. Priority Priority Matrix (WCAG 2.2 AA)
|
|
32
33
|
|
|
33
|
-
| Priority | Category
|
|
34
|
-
|
|
|
35
|
-
| **P1**
|
|
36
|
-
| **P2**
|
|
37
|
-
| **P3**
|
|
38
|
-
| **P4**
|
|
39
|
-
| **P5**
|
|
40
|
-
| **P6**
|
|
41
|
-
| **P7**
|
|
34
|
+
| Priority | Category | Critical Requirements |
|
|
35
|
+
| -------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| **P1** | **Accessible Names** | Every icon button MUST have `aria-label` or `aria-labelledby`. Decorative icons MUST have `aria-hidden="true"`. |
|
|
37
|
+
| **P2** | **Keyboard Access** | All interactive controls MUST be reachable and operable via `Tab` / `Shift+Tab`, `Space`, `Enter`. NEVER use `<div>` or `<span>` as clickable elements without `role="button"`, `tabIndex={0}`, and key handlers. |
|
|
38
|
+
| **P3** | **Focus & Dialogs (SC 2.4.11)** | Modals/Dialogs MUST trap focus within the dialog container while open, return focus on close, dismiss on `Escape`, and ensure focused items are **never fully obscured by sticky headers/footers**. |
|
|
39
|
+
| **P4** | **Focus Appearance (SC 2.4.13)** | Focus indicators MUST be clearly visible (`:focus-visible`), achieve at least **3:1 contrast** against adjacent background, and have a min **2px thickness**. |
|
|
40
|
+
| **P5** | **Target Size (SC 2.5.8)** | Interactive controls MUST measure at least **24x24 CSS pixels** (min **44x44px** recommended for mobile touch targets) or have sufficient non-intersecting spacing. |
|
|
41
|
+
| **P6** | **Color & Contrast** | Text MUST satisfy WCAG AA 4.5:1 ratio (3.0:1 for large text). Color alone MUST NOT be the only indicator of state or error. |
|
|
42
|
+
| **P7** | **Form Validation** | Inputs MUST have explicit `<label>` or `aria-labelledby`. Errors MUST use `aria-invalid="true"` and `aria-describedby` pointing to error text. |
|
|
42
43
|
|
|
43
44
|
---
|
|
44
45
|
|
|
45
46
|
## 2. Accessible Code Patterns
|
|
46
47
|
|
|
47
48
|
### Icon-Only Button
|
|
49
|
+
|
|
48
50
|
```tsx
|
|
49
51
|
// ✅ SAFE & ACCESSIBLE
|
|
50
52
|
<button
|
|
@@ -58,6 +60,7 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
|
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
### Accessible Modal Dialog Focus Trap
|
|
63
|
+
|
|
61
64
|
```tsx
|
|
62
65
|
// ✅ SAFE & ACCESSIBLE
|
|
63
66
|
<div
|
|
@@ -68,8 +71,12 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
|
|
|
68
71
|
className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
|
|
69
72
|
>
|
|
70
73
|
<div className="bg-surface p-6 rounded-xl max-w-md w-full">
|
|
71
|
-
<h2 id="dialog-title" className="text-xl font-bold">
|
|
72
|
-
|
|
74
|
+
<h2 id="dialog-title" className="text-xl font-bold">
|
|
75
|
+
Confirm Deletion
|
|
76
|
+
</h2>
|
|
77
|
+
<p id="dialog-description" className="text-muted mt-2">
|
|
78
|
+
This action cannot be undone.
|
|
79
|
+
</p>
|
|
73
80
|
{/* Actions */}
|
|
74
81
|
</div>
|
|
75
82
|
</div>
|
|
@@ -79,11 +86,11 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
|
|
|
79
86
|
|
|
80
87
|
## Anti-Slop Table
|
|
81
88
|
|
|
82
|
-
| Violation
|
|
83
|
-
|
|
|
84
|
-
| `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>`
|
|
85
|
-
| `<button><TrashIcon /></button>`
|
|
86
|
-
| `outline: none` in CSS
|
|
89
|
+
| Violation | Accessible Fix | Impact |
|
|
90
|
+
| ------------------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------- |
|
|
91
|
+
| `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>` | Fixes screen reader announcement & keyboard trigger |
|
|
92
|
+
| `<button><TrashIcon /></button>` | `<button aria-label="Delete item"><TrashIcon aria-hidden="true" /></button>` | Gives screen reader clear accessible name |
|
|
93
|
+
| `outline: none` in CSS | `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }` | Restores visible keyboard focus indicator |
|
|
87
94
|
|
|
88
95
|
---
|
|
89
96
|
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before engineering metadata or Open Graph tags, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Title & Meta Description Caps (Section 24) → Restrict title tags to 50–60 chars and meta descriptions to 140–155 chars
|
|
24
25
|
2. Absolute Image URL Rule (Section 74) → Enforce full absolute HTTPS URLs (`https://domain.com/og.jpg`) for `og:image` and `twitter:image`
|
|
25
26
|
3. Twitter Card Type (Section 39) → Always specify `<meta name="twitter:card" content="summary_large_image" />` for prominent social previews
|
|
@@ -31,15 +32,20 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
|
|
|
31
32
|
## 4 Metadata Standard Requirements
|
|
32
33
|
|
|
33
34
|
### 1. Title & Meta Description Length & Formatting
|
|
34
|
-
|
|
35
|
+
|
|
36
|
+
- **Title Tag**: 50–60 characters max (_"Product Title | Brand Name"_).
|
|
35
37
|
- **Meta Description**: 140–155 characters max. Must contain active call to value without truncating on search result cards.
|
|
36
38
|
|
|
37
39
|
### 2. Open Graph & Twitter Card Matrix
|
|
40
|
+
|
|
38
41
|
```html
|
|
39
42
|
<!-- Open Graph / Facebook / LinkedIn -->
|
|
40
43
|
<meta property="og:type" content="website" />
|
|
41
44
|
<meta property="og:title" content="UI Skills for Design Engineers" />
|
|
42
|
-
<meta
|
|
45
|
+
<meta
|
|
46
|
+
property="og:description"
|
|
47
|
+
content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
|
|
48
|
+
/>
|
|
43
49
|
<meta property="og:image" content="https://example.com/og-image.jpg" />
|
|
44
50
|
<meta property="og:image:width" content="1200" />
|
|
45
51
|
<meta property="og:image:height" content="630" />
|
|
@@ -47,32 +53,37 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
|
|
|
47
53
|
<!-- Twitter / X -->
|
|
48
54
|
<meta name="twitter:card" content="summary_large_image" />
|
|
49
55
|
<meta name="twitter:title" content="UI Skills for Design Engineers" />
|
|
50
|
-
<meta
|
|
56
|
+
<meta
|
|
57
|
+
name="twitter:description"
|
|
58
|
+
content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
|
|
59
|
+
/>
|
|
51
60
|
<meta name="twitter:image" content="https://example.com/twitter-image.jpg" />
|
|
52
61
|
```
|
|
53
62
|
|
|
54
63
|
### 3. Canonical Tag Verification
|
|
64
|
+
|
|
55
65
|
```html
|
|
56
66
|
<link rel="canonical" href="https://example.com/current-page-path" />
|
|
57
67
|
```
|
|
58
68
|
|
|
59
69
|
### 4. Next.js App Router Metadata Export Example
|
|
70
|
+
|
|
60
71
|
```typescript
|
|
61
|
-
import type { Metadata } from
|
|
72
|
+
import type { Metadata } from 'next';
|
|
62
73
|
|
|
63
74
|
export const metadata: Metadata = {
|
|
64
|
-
title:
|
|
65
|
-
description:
|
|
75
|
+
title: 'UI Skills for Design Engineers',
|
|
76
|
+
description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
|
|
66
77
|
openGraph: {
|
|
67
|
-
title:
|
|
68
|
-
description:
|
|
69
|
-
url:
|
|
70
|
-
images: [{ url:
|
|
78
|
+
title: 'UI Skills for Design Engineers',
|
|
79
|
+
description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
|
|
80
|
+
url: 'https://example.com',
|
|
81
|
+
images: [{ url: 'https://example.com/og.jpg', width: 1200, height: 630 }],
|
|
71
82
|
},
|
|
72
83
|
twitter: {
|
|
73
|
-
card:
|
|
74
|
-
title:
|
|
75
|
-
images: [
|
|
84
|
+
card: 'summary_large_image',
|
|
85
|
+
title: 'UI Skills for Design Engineers',
|
|
86
|
+
images: ['https://example.com/twitter.jpg'],
|
|
76
87
|
},
|
|
77
88
|
};
|
|
78
89
|
```
|