tribunal-kit 6.0.0 → 7.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/.manifest.json +78 -0
- package/.agent/ARCHITECTURE.md +19 -241
- 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/history/memory/.memory.idx +3716 -1
- package/.agent/history/memory/MEMORY.md +246 -1
- package/.agent/mcp_config.json +1 -6
- package/.agent/routing_index.json +2034 -263
- package/.agent/rules/GEMINI.md +12 -10
- 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/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/compile_router.py +4 -111
- 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/migrate_skills_frontmatter.py +4 -63
- 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/pipeline_engine.js +320 -209
- package/.agent/scripts/prompt_compiler.js +118 -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 +120 -151
- package/.agent/scripts/test_runner.js +54 -56
- package/.agent/scripts/token_budget_broker.js +9 -7
- 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 +237 -0
- 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 +80 -0
- package/.agent/skills/ai-app-hardening/SKILL.md +59 -0
- 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 +70 -0
- 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 +59 -0
- package/.agent/skills/edge-ai-mobile/SKILL.md +50 -0
- 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 +81 -0
- 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 +59 -0
- 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 +68 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +60 -0
- 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 +58 -0
- 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 +78 -0
- 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 +90 -0
- 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 +15 -14
- 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/CONTRIBUTING.md +3 -3
- package/README.md +160 -88
- package/SECURITY.md +11 -11
- package/bin/mcp-server.js +512 -233
- package/bin/tribunal-kit.js +29 -30
- package/bin/wrapper.js +45 -48
- package/dist/cli.js +26 -0
- package/dist/commands/case.js +2 -0
- package/dist/commands/contract.js +440 -0
- package/dist/commands/memory.js +3 -2
- package/dist/commands/native.js +36 -0
- package/dist/commands/status.js +6 -0
- package/dist/esm/index.mjs +32 -0
- package/dist/index.d.ts +58 -3
- package/package.json +20 -16
- package/scripts/benchmark.js +62 -86
- 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
|
@@ -21,6 +21,7 @@ scripts-binding:
|
|
|
21
21
|
## Mandatory Pre-Flight Context Inspection
|
|
22
22
|
|
|
23
23
|
Before selecting layout templates or component heuristics, you MUST inspect:
|
|
24
|
+
|
|
24
25
|
1. `DESIGN.md` / `package.json` → Identify product domain (SaaS, DevTool, AI Chat, Landing Page, Fintech)
|
|
25
26
|
2. Tabular Data & Monospace Rules → Enforce `font-variant-numeric: tabular-nums` for financial data and `JetBrains Mono` for developer tools
|
|
26
27
|
3. Touch & Pointer Bounds → Ensure interactive buttons and checkboxes meet 44x44px touch target guidelines
|
|
@@ -30,15 +31,17 @@ An interface must match its domain context. A developer tool should not look lik
|
|
|
30
31
|
---
|
|
31
32
|
|
|
32
33
|
## 1. SaaS & Enterprise Applications
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
|
|
35
|
+
- **Goal:** Operational efficiency, scannability, multi-record management, and action density.
|
|
36
|
+
- **Visual Tone:** Swiss Precision or Soft Minimal. Clear borders, muted tinted grays, and highly legible typography.
|
|
37
|
+
- **Heuristics:**
|
|
38
|
+
- **Data Density:** Prefer structured tables and compact list views. Spacing should be tight but consistent (`8px` to `16px` grid).
|
|
39
|
+
- **Keyboard Workflows:** All common actions must have keyboard shortcuts. Tab focus paths must be linear and predictable.
|
|
40
|
+
- **Filters & Actions:** Provide global filters, batch action bars (appearing only when records are selected), and quick search boundaries.
|
|
41
|
+
- **Responsive:** Grid layouts reflow to linear scroll cards on smaller screens; large tabular displays must support horizontal scrolling with sticky primary columns.
|
|
40
42
|
|
|
41
43
|
### SaaS Code Template (Dense Dynamic Table with Sidebar Detail Panel)
|
|
44
|
+
|
|
42
45
|
```tsx
|
|
43
46
|
import React, { useState } from 'react';
|
|
44
47
|
import { Filter, MoreHorizontal, FileText, Check, ChevronRight, X } from 'lucide-react';
|
|
@@ -46,9 +49,9 @@ import { Filter, MoreHorizontal, FileText, Check, ChevronRight, X } from 'lucide
|
|
|
46
49
|
export function SaaSDataTable({ records }) {
|
|
47
50
|
const [selectedIds, setSelectedIds] = useState<string[]>([]);
|
|
48
51
|
const [activeDetailId, setActiveDetailId] = useState<string | null>(null);
|
|
49
|
-
|
|
52
|
+
|
|
50
53
|
const activeRecord = records.find(r => r.id === activeDetailId);
|
|
51
|
-
|
|
54
|
+
|
|
52
55
|
return (
|
|
53
56
|
<div className="w-full flex gap-4 bg-[var(--bg-base)] p-4 rounded-[var(--radius-lg)]">
|
|
54
57
|
{/* Table Main Area */}
|
|
@@ -62,23 +65,25 @@ export function SaaSDataTable({ records }) {
|
|
|
62
65
|
</div>
|
|
63
66
|
{selectedIds.length > 0 && (
|
|
64
67
|
<div className="flex items-center gap-2 animate-fade-in">
|
|
65
|
-
<span className="text-xs text-[var(--text-secondary)]">
|
|
68
|
+
<span className="text-xs text-[var(--text-secondary)]">
|
|
69
|
+
{selectedIds.length} selected
|
|
70
|
+
</span>
|
|
66
71
|
<button className="px-3 py-1.5 bg-[var(--color-error)] text-white text-xs font-semibold rounded-[var(--radius-sm)] hover:opacity-90 transition-all">
|
|
67
72
|
Delete Selected
|
|
68
73
|
</button>
|
|
69
74
|
</div>
|
|
70
75
|
)}
|
|
71
76
|
</div>
|
|
72
|
-
|
|
77
|
+
|
|
73
78
|
{/* Table container */}
|
|
74
79
|
<div className="overflow-x-auto">
|
|
75
80
|
<table className="w-full border-collapse text-left text-xs">
|
|
76
81
|
<thead>
|
|
77
82
|
<tr className="border-b border-[var(--border-subtle)] bg-[var(--bg-base)] text-[var(--text-muted)] uppercase tracking-wider font-semibold">
|
|
78
83
|
<th className="p-3 w-8">
|
|
79
|
-
<input
|
|
80
|
-
type="checkbox"
|
|
81
|
-
onChange={
|
|
84
|
+
<input
|
|
85
|
+
type="checkbox"
|
|
86
|
+
onChange={e => setSelectedIds(e.target.checked ? records.map(r => r.id) : [])}
|
|
82
87
|
checked={selectedIds.length === records.length}
|
|
83
88
|
className="rounded border-[var(--border-subtle)]"
|
|
84
89
|
/>
|
|
@@ -90,17 +95,23 @@ export function SaaSDataTable({ records }) {
|
|
|
90
95
|
</tr>
|
|
91
96
|
</thead>
|
|
92
97
|
<tbody className="divide-y divide-[var(--border-subtle)]">
|
|
93
|
-
{records.map(
|
|
94
|
-
<tr
|
|
95
|
-
key={record.id}
|
|
98
|
+
{records.map(record => (
|
|
99
|
+
<tr
|
|
100
|
+
key={record.id}
|
|
96
101
|
onClick={() => setActiveDetailId(record.id)}
|
|
97
102
|
className={`hover:bg-[var(--bg-base)]/50 transition-colors group cursor-pointer ${activeDetailId === record.id ? 'bg-[var(--bg-base)]' : ''}`}
|
|
98
103
|
>
|
|
99
|
-
<td className="p-3" onClick={
|
|
100
|
-
<input
|
|
104
|
+
<td className="p-3" onClick={e => e.stopPropagation()}>
|
|
105
|
+
<input
|
|
101
106
|
type="checkbox"
|
|
102
107
|
checked={selectedIds.includes(record.id)}
|
|
103
|
-
onChange={
|
|
108
|
+
onChange={e =>
|
|
109
|
+
setSelectedIds(prev =>
|
|
110
|
+
e.target.checked
|
|
111
|
+
? [...prev, record.id]
|
|
112
|
+
: prev.filter(id => id !== record.id),
|
|
113
|
+
)
|
|
114
|
+
}
|
|
104
115
|
className="rounded border-[var(--border-subtle)]"
|
|
105
116
|
/>
|
|
106
117
|
</td>
|
|
@@ -111,7 +122,7 @@ export function SaaSDataTable({ records }) {
|
|
|
111
122
|
</span>
|
|
112
123
|
</td>
|
|
113
124
|
<td className="p-3 font-mono text-[var(--text-secondary)]">{record.usage} GB</td>
|
|
114
|
-
<td className="p-3 text-right" onClick={
|
|
125
|
+
<td className="p-3 text-right" onClick={e => e.stopPropagation()}>
|
|
115
126
|
<button className="p-1 rounded hover:bg-[var(--bg-surface-raised)] text-[var(--text-muted)] group-hover:text-[var(--text-primary)] transition-all">
|
|
116
127
|
<MoreHorizontal size={14} />
|
|
117
128
|
</button>
|
|
@@ -122,25 +133,34 @@ export function SaaSDataTable({ records }) {
|
|
|
122
133
|
</table>
|
|
123
134
|
</div>
|
|
124
135
|
</div>
|
|
125
|
-
|
|
136
|
+
|
|
126
137
|
{/* Detail Slideout Panel */}
|
|
127
138
|
{activeRecord && (
|
|
128
139
|
<div className="w-[300px] border border-[var(--border-subtle)] bg-[var(--bg-surface)] p-4 rounded-[var(--radius-md)] shadow-[var(--shadow-lg)] flex flex-col justify-between animate-slide-in">
|
|
129
140
|
<div>
|
|
130
141
|
<div className="flex justify-between items-center mb-4">
|
|
131
|
-
<h3 className="text-xs font-bold uppercase tracking-wider text-[var(--text-primary)]">
|
|
132
|
-
|
|
142
|
+
<h3 className="text-xs font-bold uppercase tracking-wider text-[var(--text-primary)]">
|
|
143
|
+
Record details
|
|
144
|
+
</h3>
|
|
145
|
+
<button
|
|
146
|
+
onClick={() => setActiveDetailId(null)}
|
|
147
|
+
className="p-1 text-[var(--text-secondary)] hover:bg-[var(--bg-base)] rounded"
|
|
148
|
+
>
|
|
133
149
|
<X size={14} />
|
|
134
150
|
</button>
|
|
135
151
|
</div>
|
|
136
152
|
<div className="space-y-3">
|
|
137
153
|
<div>
|
|
138
154
|
<span className="text-[10px] text-[var(--text-muted)] block">Name</span>
|
|
139
|
-
<span className="text-xs font-semibold text-[var(--text-primary)]">
|
|
155
|
+
<span className="text-xs font-semibold text-[var(--text-primary)]">
|
|
156
|
+
{activeRecord.name}
|
|
157
|
+
</span>
|
|
140
158
|
</div>
|
|
141
159
|
<div>
|
|
142
160
|
<span className="text-[10px] text-[var(--text-muted)] block">Usage Metrics</span>
|
|
143
|
-
<span className="text-xs font-mono text-[var(--text-secondary)]">
|
|
161
|
+
<span className="text-xs font-mono text-[var(--text-secondary)]">
|
|
162
|
+
{activeRecord.usage} Gigabytes
|
|
163
|
+
</span>
|
|
144
164
|
</div>
|
|
145
165
|
</div>
|
|
146
166
|
</div>
|
|
@@ -157,15 +177,17 @@ export function SaaSDataTable({ records }) {
|
|
|
157
177
|
---
|
|
158
178
|
|
|
159
179
|
## 2. Developer Tools
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
|
|
181
|
+
- **Goal:** Technical clarity, command-driven inputs, diagnostics readability, and low cognitive overhead.
|
|
182
|
+
- **Visual Tone:** Swiss Precision or Neon Cyberpunk. Dark backgrounds, high contrast, monospace font blocks, and flat borders.
|
|
183
|
+
- **Heuristics:**
|
|
184
|
+
- **Monospace Integration:** Log listings, code snippets, status outputs, and parameters must be wrapped in `<code/>` or `<pre/>` containers using `JetBrains Mono` or equivalent.
|
|
185
|
+
- **Interactive Consoles:** Integrate quick-copy buttons for snippets. Terminal emulator areas should have responsive layouts that prevent truncation of long lines.
|
|
186
|
+
- **Status Indicators:** Use explicit semantic color markers (e.g., solid red circle for critical error, pulsing green for active daemon) accompanied by text labels, never color alone.
|
|
187
|
+
- **Density:** Extreme. Maximize visible data on-screen; minimize decorative card wrapping and whitespace.
|
|
167
188
|
|
|
168
189
|
### Developer Tool Code Template (Terminal log stream)
|
|
190
|
+
|
|
169
191
|
```tsx
|
|
170
192
|
import React, { useState } from 'react';
|
|
171
193
|
import { Copy, Terminal, Check } from 'lucide-react';
|
|
@@ -173,13 +195,13 @@ import { Copy, Terminal, Check } from 'lucide-react';
|
|
|
173
195
|
export function DevConsole({ logs }) {
|
|
174
196
|
const [copied, setCopied] = useState(false);
|
|
175
197
|
const command = 'npm run dev --port 8080';
|
|
176
|
-
|
|
198
|
+
|
|
177
199
|
const handleCopy = () => {
|
|
178
200
|
navigator.clipboard.writeText(command);
|
|
179
201
|
setCopied(true);
|
|
180
202
|
setTimeout(() => setCopied(false), 2000);
|
|
181
203
|
};
|
|
182
|
-
|
|
204
|
+
|
|
183
205
|
return (
|
|
184
206
|
<div className="w-full bg-[var(--bg-base)] dark:bg-black border border-[var(--border-default)] rounded-[var(--radius-sm)] overflow-hidden font-mono shadow-[var(--shadow-sm)]">
|
|
185
207
|
{/* Console Header */}
|
|
@@ -187,7 +209,7 @@ export function DevConsole({ logs }) {
|
|
|
187
209
|
<div className="flex items-center gap-2 text-xs text-[var(--text-secondary)]">
|
|
188
210
|
<Terminal size={14} /> console.log
|
|
189
211
|
</div>
|
|
190
|
-
<button
|
|
212
|
+
<button
|
|
191
213
|
onClick={handleCopy}
|
|
192
214
|
className="flex items-center gap-1 px-2 py-1 text-[10px] bg-[var(--bg-surface-raised)] border border-[var(--border-subtle)] rounded text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-all"
|
|
193
215
|
>
|
|
@@ -195,14 +217,22 @@ export function DevConsole({ logs }) {
|
|
|
195
217
|
{copied ? 'Copied' : 'Copy'}
|
|
196
218
|
</button>
|
|
197
219
|
</div>
|
|
198
|
-
|
|
220
|
+
|
|
199
221
|
{/* Console Body */}
|
|
200
222
|
<div className="p-3 text-xs text-slate-300 space-y-1.5 overflow-y-auto max-h-[300px] leading-relaxed">
|
|
201
223
|
<div className="text-[var(--text-muted)]">$ {command}</div>
|
|
202
224
|
{logs.map((log, index) => (
|
|
203
225
|
<div key={index} className="flex gap-2 items-start">
|
|
204
226
|
<span className="text-[var(--text-muted)] select-none">[{log.time}]</span>
|
|
205
|
-
<span
|
|
227
|
+
<span
|
|
228
|
+
className={
|
|
229
|
+
log.type === 'error'
|
|
230
|
+
? 'text-rose-400'
|
|
231
|
+
: log.type === 'warn'
|
|
232
|
+
? 'text-amber-400'
|
|
233
|
+
: 'text-emerald-400'
|
|
234
|
+
}
|
|
235
|
+
>
|
|
206
236
|
{log.type.toUpperCase()}:
|
|
207
237
|
</span>
|
|
208
238
|
<span className="text-slate-100">{log.message}</span>
|
|
@@ -217,15 +247,17 @@ export function DevConsole({ logs }) {
|
|
|
217
247
|
---
|
|
218
248
|
|
|
219
249
|
## 3. Consumer Marketing & Landing Pages
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
250
|
+
|
|
251
|
+
- **Goal:** Emotional appeal, high conversion flows, brand differentiation, and typographic pacing.
|
|
252
|
+
- **Visual Tone:** Editorial, Dark Luxury, Swiss Precision, or Organic Natural.
|
|
253
|
+
- **Heuristics:**
|
|
254
|
+
- **Layout Asymmetry:** Avoid 50/50 hero templates. Use overlapping layers, full-bleed media breakouts, and dramatic grid breaks.
|
|
255
|
+
- **Typography Hierarchy:** Large, expressive display headings paired with highly legible body columns constrained to `60-70ch` to prevent eye strain.
|
|
256
|
+
- **Controlled Motion:** Use scroll-driven reveals (e.g., clip-path reveals, stagger entry) to guide reading flow. Avoid constant looping animations.
|
|
257
|
+
- **Visual Proof Grid:** Grid rows for logos and customer reviews must balance visual weight and scale.
|
|
227
258
|
|
|
228
259
|
### Landing Page Code Template (Asymmetric Hero Section)
|
|
260
|
+
|
|
229
261
|
```tsx
|
|
230
262
|
import React from 'react';
|
|
231
263
|
import { ArrowRight } from 'lucide-react';
|
|
@@ -240,10 +272,15 @@ export function AsymmetricHero() {
|
|
|
240
272
|
Flagship Release
|
|
241
273
|
</span>
|
|
242
274
|
<h1 className="text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] text-[var(--text-primary)] text-wrap-balance">
|
|
243
|
-
Create interfaces that feel
|
|
275
|
+
Create interfaces that feel{' '}
|
|
276
|
+
<span className="underline decoration-wavy decoration-[var(--color-primary)]">
|
|
277
|
+
human
|
|
278
|
+
</span>{' '}
|
|
279
|
+
again.
|
|
244
280
|
</h1>
|
|
245
281
|
<p className="text-base text-[var(--text-secondary)] max-w-[55ch] leading-relaxed text-wrap-pretty">
|
|
246
|
-
We extract clean, reusable design principles from elite developer interfaces and encode
|
|
282
|
+
We extract clean, reusable design principles from elite developer interfaces and encode
|
|
283
|
+
them into deterministic token specifications.
|
|
247
284
|
</p>
|
|
248
285
|
<div className="flex flex-wrap gap-4 pt-4">
|
|
249
286
|
<button className="flex items-center gap-2 px-6 py-3 bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary-hover)] active:scale-95 transition-all rounded-[var(--radius-soft)] text-sm font-semibold shadow-[var(--shadow-md)]">
|
|
@@ -254,14 +291,16 @@ export function AsymmetricHero() {
|
|
|
254
291
|
</button>
|
|
255
292
|
</div>
|
|
256
293
|
</div>
|
|
257
|
-
|
|
294
|
+
|
|
258
295
|
{/* Right Side: Visual Accent Panel (Spans 5 columns, asymmetric displacement) */}
|
|
259
296
|
<div className="lg:col-span-5 relative mt-8 lg:mt-0">
|
|
260
297
|
<div className="absolute inset-0 bg-gradient-to-tr from-[var(--color-primary)]/20 to-transparent blur-3xl -z-10" />
|
|
261
298
|
<div className="bg-[var(--bg-surface)] border border-[var(--border-subtle)] p-6 rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)] transform hover:-translate-y-1 hover:rotate-1 transition-all duration-300">
|
|
262
|
-
<h3 className="text-base font-bold text-[var(--text-primary)] mb-2">
|
|
299
|
+
<h3 className="text-base font-bold text-[var(--text-primary)] mb-2">
|
|
300
|
+
Picasso v3 Token Output
|
|
301
|
+
</h3>
|
|
263
302
|
<pre className="text-[10px] font-mono text-[var(--text-secondary)] bg-[var(--bg-base)] p-3 rounded border border-[var(--border-subtle)] overflow-x-auto">
|
|
264
|
-
{`{
|
|
303
|
+
{`{
|
|
265
304
|
"theme": "dark-luxury",
|
|
266
305
|
"primary": "oklch(65% 0.22 250)",
|
|
267
306
|
"geometry": {
|
|
@@ -281,15 +320,17 @@ export function AsymmetricHero() {
|
|
|
281
320
|
---
|
|
282
321
|
|
|
283
322
|
## 4. AI Interfaces
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
323
|
+
|
|
324
|
+
- **Goal:** Interactive stream clarity, model transparency, history containment, and prompting accessibility.
|
|
325
|
+
- **Visual Tone:** Neo-Glassmorphism, Dark Luxury, or Soft Minimal.
|
|
326
|
+
- **Heuristics:**
|
|
327
|
+
- **Streaming Content States:** Show skeleton overlays or pulsing typing indicator bubbles during LLM processing. Stream response blocks chunk-by-chunk without layout shifts.
|
|
328
|
+
- **System Boundaries:** Visually differentiate user inputs, assistant responses, and system alerts (using background tinting or subtle border lines).
|
|
329
|
+
- **Actionable Prompts:** Provide quick-start suggestion chips at the bottom of empty chat views.
|
|
330
|
+
- **Scroll Locking:** Automatically anchor chat containers to the bottom as long messages render, but release lock if the user manually scrolls up to read history.
|
|
291
331
|
|
|
292
332
|
### AI Chat Code Template (Input Prompt Area)
|
|
333
|
+
|
|
293
334
|
```tsx
|
|
294
335
|
import React, { useState } from 'react';
|
|
295
336
|
import { Send, Sparkles } from 'lucide-react';
|
|
@@ -297,13 +338,13 @@ import { Send, Sparkles } from 'lucide-react';
|
|
|
297
338
|
export function AIChatInput({ onSubmit }) {
|
|
298
339
|
const [input, setInput] = useState('');
|
|
299
340
|
const suggestions = ['Generate SaaS Layout', 'Optimize CSS Grids', 'APCA Contrast Check'];
|
|
300
|
-
|
|
341
|
+
|
|
301
342
|
return (
|
|
302
343
|
<div className="w-full max-w-2xl mx-auto space-y-3 p-4 bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] shadow-[var(--shadow-md)]">
|
|
303
344
|
{/* Suggestions Chips Row */}
|
|
304
345
|
<div className="flex flex-wrap gap-2">
|
|
305
346
|
{suggestions.map((sug, i) => (
|
|
306
|
-
<button
|
|
347
|
+
<button
|
|
307
348
|
key={i}
|
|
308
349
|
onClick={() => setInput(sug)}
|
|
309
350
|
className="flex items-center gap-1.5 px-3 py-1.5 bg-[var(--bg-base)] hover:bg-[var(--bg-surface-raised)] border border-[var(--border-subtle)] rounded-full text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-all font-medium"
|
|
@@ -312,20 +353,26 @@ export function AIChatInput({ onSubmit }) {
|
|
|
312
353
|
</button>
|
|
313
354
|
))}
|
|
314
355
|
</div>
|
|
315
|
-
|
|
356
|
+
|
|
316
357
|
{/* Input Text Form */}
|
|
317
|
-
<form
|
|
318
|
-
onSubmit={
|
|
358
|
+
<form
|
|
359
|
+
onSubmit={e => {
|
|
360
|
+
e.preventDefault();
|
|
361
|
+
if (input.trim()) {
|
|
362
|
+
onSubmit(input);
|
|
363
|
+
setInput('');
|
|
364
|
+
}
|
|
365
|
+
}}
|
|
319
366
|
className="flex gap-2 items-center border border-[var(--border-default)] rounded-[var(--radius-sm)] px-3 py-2 bg-[var(--bg-base)] focus-within:ring-1 focus-within:ring-[var(--color-primary)] transition-all"
|
|
320
367
|
>
|
|
321
|
-
<input
|
|
322
|
-
type="text"
|
|
368
|
+
<input
|
|
369
|
+
type="text"
|
|
323
370
|
value={input}
|
|
324
|
-
onChange={
|
|
325
|
-
placeholder="Ask Antigravity UI to design..."
|
|
371
|
+
onChange={e => setInput(e.target.value)}
|
|
372
|
+
placeholder="Ask Antigravity UI to design..."
|
|
326
373
|
className="flex-1 bg-transparent border-0 outline-none text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)]"
|
|
327
374
|
/>
|
|
328
|
-
<button
|
|
375
|
+
<button
|
|
329
376
|
type="submit"
|
|
330
377
|
disabled={!input.trim()}
|
|
331
378
|
className="p-2 bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary-hover)] disabled:bg-[var(--text-muted)] disabled:opacity-50 disabled:cursor-not-allowed rounded-[var(--radius-sm)] transition-all"
|
|
@@ -341,18 +388,21 @@ export function AIChatInput({ onSubmit }) {
|
|
|
341
388
|
---
|
|
342
389
|
|
|
343
390
|
## 5. Fintech & Dashboards
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
391
|
+
|
|
392
|
+
- **Goal:** Financial precision, trust, quick status retrieval, and clean charts.
|
|
393
|
+
- **Visual Tone:** Soft Minimal or Dark Luxury. Green/red semantic indicators should be soft sage and terracotta to avoid harsh, alarmist styling.
|
|
394
|
+
- **Heuristics:**
|
|
395
|
+
- **Tabular Data Precision:** Use tabular numbers (`font-variant-numeric: tabular-nums`) to align digits perfectly in records.
|
|
396
|
+
- **Interactive Visualizations:** Chart axes must have visible grids and clear legend labels. Hover tooltips must follow mouse movements and show precise numerical values.
|
|
349
397
|
|
|
350
398
|
---
|
|
351
399
|
|
|
352
400
|
## Pre-Flight Checklist
|
|
401
|
+
|
|
353
402
|
- [ ] Have I verified the visual guidelines match the target Product Category?
|
|
354
403
|
- [ ] Have I checked for tabular numbers alignment in Fintech interfaces?
|
|
355
404
|
- [ ] Have I checked for monospace format in Developer Tools?
|
|
356
405
|
|
|
357
406
|
## VBC Protocol (Verification-Before-Completion)
|
|
407
|
+
|
|
358
408
|
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before engineering glassmorphism or backdrop blurs, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Vendor prefixes → Enforce `-webkit-backdrop-filter` alongside `backdrop-filter` for Safari support
|
|
24
25
|
2. GPU Protection Rule (Section 70) → Strictly prohibit animating `backdrop-filter: blur()` radius; animate `opacity` of static blurred pseudo-elements instead
|
|
25
26
|
3. Masked Blur Gradient layers (Section 25) → Blend multi-step blur layers with linear gradient masks to avoid harsh edge cutoffs
|
|
@@ -31,6 +32,7 @@ Architect high-performance, progressive backdrop blurs and frosted glass interfa
|
|
|
31
32
|
## 3 Progressive Blur Techniques
|
|
32
33
|
|
|
33
34
|
### 1. Multi-Step Masked Progressive Blur
|
|
35
|
+
|
|
34
36
|
To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive blur layers using linear gradient masks:
|
|
35
37
|
|
|
36
38
|
```css
|
|
@@ -43,21 +45,22 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
|
|
|
43
45
|
|
|
44
46
|
.blur-layer-1 {
|
|
45
47
|
backdrop-filter: blur(2px);
|
|
46
|
-
mask: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 25%);
|
|
48
|
+
mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 25%);
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
.blur-layer-2 {
|
|
50
52
|
backdrop-filter: blur(8px);
|
|
51
|
-
mask: linear-gradient(to bottom, rgba(0,0,0,1) 25%, rgba(0,0,0,0) 65%);
|
|
53
|
+
mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 25%, rgba(0, 0, 0, 0) 65%);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
.blur-layer-3 {
|
|
55
57
|
backdrop-filter: blur(16px);
|
|
56
|
-
mask: linear-gradient(to bottom, rgba(0,0,0,1) 65%, rgba(0,0,0,1) 100%);
|
|
58
|
+
mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 65%, rgba(0, 0, 0, 1) 100%);
|
|
57
59
|
}
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
### 2. Glass Card Depth Recipe
|
|
63
|
+
|
|
61
64
|
```css
|
|
62
65
|
.glass-card {
|
|
63
66
|
background: rgba(255, 255, 255, 0.65);
|
|
@@ -69,7 +72,7 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
|
|
|
69
72
|
|
|
70
73
|
@media (prefers-color-scheme: dark) {
|
|
71
74
|
.glass-card {
|
|
72
|
-
background: rgba(18, 18, 20, 0.
|
|
75
|
+
background: rgba(18, 18, 20, 0.7);
|
|
73
76
|
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
74
77
|
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
|
|
75
78
|
}
|
|
@@ -77,7 +80,9 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
|
|
|
77
80
|
```
|
|
78
81
|
|
|
79
82
|
### 3. GPU Hardware Acceleration Protection
|
|
83
|
+
|
|
80
84
|
Backdrop blurs can cause frame drops if animated directly.
|
|
85
|
+
|
|
81
86
|
- **Rule**: Never animate `backdrop-filter: blur()` properties during scroll or transitions. Animate `opacity` of a static blurred pseudo-element instead!
|
|
82
87
|
|
|
83
88
|
---
|
|
@@ -24,6 +24,7 @@ scripts-binding:
|
|
|
24
24
|
## Mandatory Pre-Flight Context Inspection
|
|
25
25
|
|
|
26
26
|
Before generating code or suggesting architectural patterns, you MUST inspect:
|
|
27
|
+
|
|
27
28
|
1. Recorded Idioms table (Section 43) → Check active project-specific architectural overrides
|
|
28
29
|
2. `skill_evolution.js` status → Verify if staged commits contain un-digested architectural deltas
|
|
29
30
|
3. Override protocol (Section 71) → Never contradict a project idiom silently; flag deviations explicitlyrst)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: property-based-testing
|
|
3
|
+
description: Generative input invariant testing using fast-check (TS/JS) and hypothesis (Python) to uncover hidden edge cases and boundary failures.
|
|
4
|
+
tools: Read, Grep, Glob, Edit, Write
|
|
5
|
+
version: 3.0.0
|
|
6
|
+
last-updated: 2026-08-05
|
|
7
|
+
script: .agent/scripts/test_runner.js
|
|
8
|
+
scripts-binding:
|
|
9
|
+
- .agent/scripts/test_runner.js
|
|
10
|
+
- .agent/scripts/inner_loop_validator.js
|
|
11
|
+
skills:
|
|
12
|
+
- testing-patterns
|
|
13
|
+
- tdd-workflow
|
|
14
|
+
- clean-code
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Property-Based Testing — Invariant Verification
|
|
18
|
+
|
|
19
|
+
## Mandatory Pre-Flight Context Inspection
|
|
20
|
+
|
|
21
|
+
Before writing property tests:
|
|
22
|
+
|
|
23
|
+
1. Invariant Identification → Define mathematical properties that must hold true for ALL inputs (e.g. `reverse(reverse(list)) == list`)
|
|
24
|
+
2. Arbitrary Generator Scoping → Constrain generator bounds to domain validity (e.g. non-empty strings, positive integers)
|
|
25
|
+
3. Shrinking & Reproducibility → Store seed values for failing test runs to reproduce minimal failing inputs
|
|
26
|
+
|
|
27
|
+
## Fast-Check Arbitrary Generator & Vitest Invariant Test
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import fc from 'fast-check';
|
|
31
|
+
import { test, expect } from 'vitest';
|
|
32
|
+
|
|
33
|
+
function parseAmount(currencyStr: string): number | null {
|
|
34
|
+
const cleaned = currencyStr.replace(/[^0-9.]/g, '');
|
|
35
|
+
const num = parseFloat(cleaned);
|
|
36
|
+
return isNaN(num) ? null : num;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
test('currency parser invariant: non-negative parsed numbers', () => {
|
|
40
|
+
fc.assert(
|
|
41
|
+
fc.property(fc.tuple(fc.string(), fc.double({ min: 0, max: 1000000 })), ([prefix, val]) => {
|
|
42
|
+
const input = `${prefix}$${val.toFixed(2)}`;
|
|
43
|
+
const parsed = parseAmount(input);
|
|
44
|
+
|
|
45
|
+
if (parsed !== null) {
|
|
46
|
+
expect(parsed).toBeGreaterThanOrEqual(0);
|
|
47
|
+
expect(Number.isFinite(parsed)).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
{ numRuns: 500 }, // Execute 500 generative iterations
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 🛑 Verification-Before-Completion (VBC) Protocol
|
|
56
|
+
|
|
57
|
+
- Run minimum 100 iterations per property test run.
|
|
58
|
+
- Confirm shrinking mechanism isolates minimal failing counter-example on assertion failure.
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before architecting Python projects or selecting frameworks, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Typed Data Models over Dicts (Section 15) → Use Pydantic models or `@dataclass` for structured data; ban un-typed `dict` passing
|
|
24
25
|
2. Specific Exception Handling (Section 16) → Catch explicit exceptions (`ValueError`, `AppError`); ban bare `except:` or generic `except Exception:` swallowing
|
|
25
26
|
3. Pathlib Modern API (Section 17) → Use `pathlib.Path` for cross-platform filesystem operations; ban legacy `os.path`
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before writing Python code or FastAPI endpoints, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Pydantic v2 Migration Syntax (Section 17) → Use `model_dump()`, `model_dump_json()`, `model_validate()`, and `@field_validator`; ban v1 `.dict()` and `@validator`
|
|
24
25
|
2. Modern Native Generics (Section 16) → Use native `list[str]`, `dict[k,v]`, and `X | None` (Python 3.10+); ban legacy `typing.List` / `typing.Optional`
|
|
25
26
|
3. Non-Blocking Async Clients (Section 21) → Use `httpx.AsyncClient()` in async code; ban blocking `requests` library inside asyncio event loops
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before subduing visual design elements, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `DESIGN.md` / `package.json` → Check background surface variables and contrast standards
|
|
24
25
|
2. Palette Subjugation rules (Section 24) → Limit high-saturation colors to single primary actions
|
|
25
26
|
3. Motion Restraint rules (Section 35) → Eliminate looping pulsing badges and restrict motion to user-initiated actions
|
|
@@ -31,21 +32,26 @@ Reduce visual noise, eliminate unnecessary color competition, and restore calm f
|
|
|
31
32
|
## 5 Restraint Tactics
|
|
32
33
|
|
|
33
34
|
### 1. Palette Subjugation
|
|
35
|
+
|
|
34
36
|
- **Reduce Primary Colors**: Limit saturated colors to a single primary action. Turn secondary accent colors into subtle monochrome tones (`oklch(0.92 0.01 240)`).
|
|
35
37
|
- **Mute Background Surfaces**: Replace multi-colored cards or high-saturation gradient backgrounds with quiet, neutral monochrome surfaces.
|
|
36
38
|
|
|
37
39
|
### 2. De-emphasize Borders & Outlines
|
|
40
|
+
|
|
38
41
|
- **Subtle Surface Elevation**: Replace harsh 100% black/white borders with subtle surface background differences ($L \pm 3\%$) or ultra-light 5% opacity borders.
|
|
39
42
|
|
|
40
43
|
### 3. Subdue Typography Scaling
|
|
44
|
+
|
|
41
45
|
- **Reduce Font Weight Spikes**: Replace heavy 900 bold display headings with refined semibold (`600`) or medium (`500`) typography.
|
|
42
46
|
- **Normalize Font Sizes**: Reduce font size jumps between section headers and subheaders to create smooth visual harmony.
|
|
43
47
|
|
|
44
48
|
### 4. Calm Motion & Animations
|
|
49
|
+
|
|
45
50
|
- **Eliminate Continuous Animations**: Remove spinning gradient borders, pulsing badges, and bouncing icons. Restrict motion exclusively to user-initiated actions.
|
|
46
51
|
- **Shorten Transitions**: Keep hover state transitions subtle and fast ($\le 150\text{ms}$).
|
|
47
52
|
|
|
48
53
|
### 5. Expand Negative Space
|
|
54
|
+
|
|
49
55
|
- **Increase Padding**: Give content room to breathe by increasing section paddings by 25%-50%, reducing cognitive overload.
|
|
50
56
|
|
|
51
57
|
---
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before auditing React components for performance or health issues, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Re-render triggers (Section 24) → Identify inline object/array props and inline callback handlers breaking memoization
|
|
24
25
|
2. `useEffect` Cleanup (Section 31) → Ensure all event listeners, intervals, and subscriptions return explicit cleanup functions
|
|
25
26
|
3. Derived State Anti-Pattern (Section 41) → Ban props duplicated into state (`useState(props.val)`); derive values directly during render
|
|
@@ -31,14 +32,18 @@ Diagnose and resolve unnecessary re-renders, state synchronization bugs, memory
|
|
|
31
32
|
## 4 React Health Checks
|
|
32
33
|
|
|
33
34
|
### 1. Unnecessary Re-render Prevention
|
|
35
|
+
|
|
34
36
|
- **Inline Object/Array Props**: Passing inline objects `<Child config={{ color: 'blue' }} />` creates new references every render. Wrap with `useMemo` or declare outside component scope.
|
|
35
37
|
- **Inline Callback Props**: Passing inline functions `<Child onClick={() => doSomething()} />` breaks `React.memo`. Wrap callbacks with `useCallback`.
|
|
36
38
|
|
|
37
39
|
### 2. State Colocation
|
|
40
|
+
|
|
38
41
|
- Don't lift state higher than necessary. Keep state local to the component consuming it to isolate re-render subtrees.
|
|
39
42
|
|
|
40
43
|
### 3. Cleanup in `useEffect`
|
|
44
|
+
|
|
41
45
|
- Every event listener, interval, or subscription created in `useEffect` MUST return a cleanup function to prevent memory leaks:
|
|
46
|
+
|
|
42
47
|
```tsx
|
|
43
48
|
useEffect(() => {
|
|
44
49
|
const handleResize = () => setWidth(window.innerWidth);
|
|
@@ -48,6 +53,7 @@ useEffect(() => {
|
|
|
48
53
|
```
|
|
49
54
|
|
|
50
55
|
### 4. Derived State Anti-Pattern
|
|
56
|
+
|
|
51
57
|
- Never duplicate props into state (`const [name, setName] = useState(props.name)`). Calculate derived values during rendering directly.
|
|
52
58
|
|
|
53
59
|
---
|