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
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before applying animation principles to web components, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Target interaction pattern → Identify applicability of Squash & Stretch, Anticipation, Slow In/Out, or Follow Through
|
|
24
25
|
2. Volume-Preservation Rule (Section 26) → Keep UI squash/stretch subtle (max 2%-4%); if height scales to 0.97, width MUST scale to 1.03
|
|
25
26
|
3. Staging Rules (Section 31) → Direct user focus with sequential motion rather than competing simultaneous animations
|
|
@@ -31,22 +32,28 @@ Translate Disney's 12 classic principles of animation into modern CSS, Web API,
|
|
|
31
32
|
## The 6 Essential Web Principles
|
|
32
33
|
|
|
33
34
|
### 1. Squash & Stretch (Scale Elasticity)
|
|
35
|
+
|
|
34
36
|
- Compress elements slightly on impact (e.g. button press down `scale(0.97)`), then stretch slightly on release (`scale(1.02)` -> `scale(1)`).
|
|
35
37
|
- **Rule**: Preserve overall volume. If height decreases by 5%, width must expand by 5%.
|
|
36
38
|
|
|
37
39
|
### 2. Anticipation (Pre-Motion Cue)
|
|
40
|
+
|
|
38
41
|
- Before a major movement (e.g. modal sliding up), perform a micro-backwards movement (e.g. shift down `2px` for `40ms`) to prepare the user's eye.
|
|
39
42
|
|
|
40
43
|
### 3. Staging (Focus & Spatial Hierarchy)
|
|
44
|
+
|
|
41
45
|
- Direct user attention to one primary animation at a time. Never animate competing layout elements across different regions simultaneously.
|
|
42
46
|
|
|
43
47
|
### 4. Slow In & Slow Out (Easing Curves)
|
|
48
|
+
|
|
44
49
|
- Objects in nature start slow, accelerate, and decelerate gradually. Use strong ease-out curves (`cubic-bezier(0.16, 1, 0.3, 1)`) for UI entrances.
|
|
45
50
|
|
|
46
51
|
### 5. Arcs (Natural Curvilinear Trajectories)
|
|
52
|
+
|
|
47
53
|
- Human arms and physical objects move in curved arcs rather than mechanical straight lines. When moving elements across 2D space, use parabolic bezier curves or `offset-path`.
|
|
48
54
|
|
|
49
55
|
### 6. Follow Through & Overlapping Action
|
|
56
|
+
|
|
50
57
|
- Secondary elements (e.g. badge text inside a sliding card) lag slightly behind the main container (stagger delay 30ms - 50ms), creating organic physical realism.
|
|
51
58
|
|
|
52
59
|
---
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before writing animation CSS or JS, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Target animated properties → Strictly enforce GPU compositor-only properties (`transform`, `opacity`) and ban layout-triggering properties (`width`, `height`, `top`, `left`)
|
|
24
25
|
2. Scale Math Replacement (Section 29) → Use `transform: scaleX(2)` instead of animating `width`
|
|
25
26
|
3. `will-change` VRAM Management (Section 45) → Apply `will-change` dynamically during active animation and remove upon completion
|
|
@@ -31,12 +32,16 @@ Eliminate jank, layout thrashing, and frame drops to achieve locked 60fps / 120f
|
|
|
31
32
|
## 4 Performance Rules
|
|
32
33
|
|
|
33
34
|
### 1. Compositor-Only Animation Pipeline
|
|
35
|
+
|
|
34
36
|
Only animate properties handled strictly by the GPU compositor layer:
|
|
37
|
+
|
|
35
38
|
- ✅ **Compositor Properties** (Zero Layout / Zero Paint): `transform` (`translate3d`, `scale`, `rotate`) and `opacity`.
|
|
36
39
|
- ❌ **Forbidden Animating Properties** (Triggers Full Layout Re-calculation): `width`, `height`, `margin`, `padding`, `top`, `left`, `border-width`.
|
|
37
40
|
|
|
38
41
|
### 2. Replacing Width/Height Transitions with Scale Math
|
|
42
|
+
|
|
39
43
|
Instead of animating `width: 100px` to `200px`:
|
|
44
|
+
|
|
40
45
|
```css
|
|
41
46
|
/* BAD: Triggers Layout recalculation on every frame */
|
|
42
47
|
.box-bad {
|
|
@@ -52,10 +57,12 @@ Instead of animating `width: 100px` to `200px`:
|
|
|
52
57
|
```
|
|
53
58
|
|
|
54
59
|
### 3. `will-change` Management
|
|
60
|
+
|
|
55
61
|
- Apply `will-change: transform, opacity` ONLY right before or during active animation.
|
|
56
62
|
- Remove `will-change` when animation completes to free up GPU VRAM memory!
|
|
57
63
|
|
|
58
64
|
### 4. Layout Thrashing Prevention in JS
|
|
65
|
+
|
|
59
66
|
- Never interleave DOM reads (`element.offsetHeight`) with DOM writes (`element.style.height = ...`) inside requestAnimationFrame or scroll handlers. Batch all reads first, then perform all writes.
|
|
60
67
|
|
|
61
68
|
---
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before implementing UI animation code, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. CSS stylesheets → Verify presence of `@media (prefers-reduced-motion: reduce)` rules
|
|
24
25
|
2. Framer Motion / GSAP components → Query `useReducedMotion()` or `matchMedia('(prefers-reduced-motion: reduce)')`
|
|
25
26
|
3. Vestibular Trigger Replacement (Section 57) → Replace parallax scroll and 3D rotations with instant opacity cross-fades (`0 -> 1`)
|
|
@@ -31,6 +32,7 @@ Ensure UI motion respects user accessibility preferences (`prefers-reduced-motio
|
|
|
31
32
|
## 3 Tiered Reduced-Motion Rules
|
|
32
33
|
|
|
33
34
|
### Tier 1: CSS Reduced Motion Media Query
|
|
35
|
+
|
|
34
36
|
```css
|
|
35
37
|
@media (prefers-reduced-motion: reduce) {
|
|
36
38
|
*,
|
|
@@ -45,8 +47,9 @@ Ensure UI motion respects user accessibility preferences (`prefers-reduced-motio
|
|
|
45
47
|
```
|
|
46
48
|
|
|
47
49
|
### Tier 2: React & Framer Motion Hook (`useReducedMotion`)
|
|
50
|
+
|
|
48
51
|
```tsx
|
|
49
|
-
import { useReducedMotion, motion } from
|
|
52
|
+
import { useReducedMotion, motion } from 'framer-motion';
|
|
50
53
|
|
|
51
54
|
export function AccessibleCard({ children }) {
|
|
52
55
|
const shouldReduceMotion = useReducedMotion();
|
|
@@ -64,6 +67,7 @@ export function AccessibleCard({ children }) {
|
|
|
64
67
|
```
|
|
65
68
|
|
|
66
69
|
### Tier 3: Replacing Parallax & Vestibular Triggers with Instant Fades
|
|
70
|
+
|
|
67
71
|
- Disorienting motions (parallax scrolling, 3D rotations, zoom scaling) MUST be converted into instant cross-fades (`opacity: 0 -> 1`) when `prefers-reduced-motion: reduce` is active.
|
|
68
72
|
|
|
69
73
|
---
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before engineering responsive layouts or cross-device UIs, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Container Queries (`@container`) over Viewport Media Queries (Section 24) → Adapt component layouts based on parent container width (`container-type: inline-size`)
|
|
24
25
|
2. Touch Target Sizing (Section 39) → Ensure interactive controls meet min `44x44px` target size on touch devices
|
|
25
26
|
3. Fluid Clamp Scaling (Section 45) → Use `clamp()` for smooth fluid typography and spacing without abrupt media query jumps
|
|
@@ -31,7 +32,9 @@ Architect UIs that adapt fluidly to screen dimensions, container boundaries, inp
|
|
|
31
32
|
## 4 Adaptation Mechanics
|
|
32
33
|
|
|
33
34
|
### 1. Container Queries (`@container`) over Viewport Media Queries (`@media`)
|
|
35
|
+
|
|
34
36
|
- Components should adapt based on their parent container's width, NOT the global browser window size:
|
|
37
|
+
|
|
35
38
|
```css
|
|
36
39
|
.card-container {
|
|
37
40
|
container-type: inline-size;
|
|
@@ -46,14 +49,17 @@ Architect UIs that adapt fluidly to screen dimensions, container boundaries, inp
|
|
|
46
49
|
```
|
|
47
50
|
|
|
48
51
|
### 2. Touch Target Sizing (Min 44x44px)
|
|
52
|
+
|
|
49
53
|
- Interactive targets on mobile/touch interfaces MUST maintain a minimum tap target size of `44x44px` (or `48x48px` for Android), even if the visual icon is smaller (`16px`).
|
|
50
54
|
|
|
51
55
|
### 3. Drawer on Mobile -> Modal on Desktop
|
|
56
|
+
|
|
52
57
|
- Complex popovers or dialogs on mobile screens should render as bottom sheets (drawers) with drag-to-dismiss handles, automatically morphing into centered modals on desktop viewports ($\ge 768\text{px}$).
|
|
53
58
|
|
|
54
59
|
### 4. Fluid Typography & Spacing
|
|
60
|
+
|
|
55
61
|
- Use `clamp()` for fluid scaling without abrupt media query jumps:
|
|
56
|
-
$$\text{FontSize} = \text{clamp}(1\text{rem}, 0.8\text{rem} + 1\text{vw}, 1.75\text{rem})$$
|
|
62
|
+
$$\text{FontSize} = \text{clamp}(1\text{rem}, 0.8\text{rem} + 1\text{vw}, 1.75\text{rem})$$
|
|
57
63
|
|
|
58
64
|
---
|
|
59
65
|
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before building RAG pipelines or vector search components, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Hybrid Search Requirement (Section 16) → Always combine Dense Vector Search with Sparse BM25 Search to catch exact keyword matches (IDs, versions)
|
|
24
25
|
2. Two-Stage Reranking Pipeline (Section 29) → Retrieve top ~50 candidate chunks, then rerank with a Cross-Encoder down to top 3-5 before feeding the LLM
|
|
25
26
|
3. Context XML Framing (Section 59) → Wrap retrieved chunks inside explicit `<context>` XML tags in the prompt to prevent indirect prompt injection
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before dispatching multi-agent tasks, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `swarm-worker-registry.md` / `task.md` → Verify target worker agents and global execution state
|
|
24
25
|
2. Context Window Budget rules (Section 1) → Trim worker payload context to max 3 files per dispatch
|
|
25
26
|
3. Handoff state signals (`COMPLETE`, `BLOCKED`, `ERROR`) → Verify terminal status handling rules
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before designing agentic loops, tool schemas, or memory architectures, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `package.json` / LLM SDK definitions → Check tool calling syntax (Zod schemas, OpenAI/Anthropic function calling API)
|
|
24
25
|
2. Agent Loop boundaries (Section 1) → Define hard caps on `MAX_STEPS` (default: 10) and explicit termination reasons
|
|
25
26
|
3. Human-in-the-loop gates (Section 5) → Ensure approval gates for destructive, data-deleting, or high-cost API calls
|
|
@@ -45,7 +46,7 @@ PERCEIVE → PLAN → ACT → OBSERVE → (repeat or terminate)
|
|
|
45
46
|
```ts
|
|
46
47
|
// The three termination conditions — always define all three
|
|
47
48
|
type AgentResult = {
|
|
48
|
-
reason:
|
|
49
|
+
reason: 'goal_reached' | 'max_steps_exceeded' | 'human_escalation';
|
|
49
50
|
steps: number;
|
|
50
51
|
result: string;
|
|
51
52
|
};
|
|
@@ -63,23 +64,24 @@ Tools are the agent's interface to the real world. Design them defensively:
|
|
|
63
64
|
// Tool definition — what the LLM sees and how to call it
|
|
64
65
|
const tools = [
|
|
65
66
|
{
|
|
66
|
-
type:
|
|
67
|
+
type: 'function',
|
|
67
68
|
function: {
|
|
68
|
-
name:
|
|
69
|
-
description:
|
|
69
|
+
name: 'search_database',
|
|
70
|
+
description:
|
|
71
|
+
'Search the product database. Use this before creating a new record to avoid duplicates.',
|
|
70
72
|
parameters: {
|
|
71
|
-
type:
|
|
73
|
+
type: 'object',
|
|
72
74
|
properties: {
|
|
73
75
|
query: {
|
|
74
|
-
type:
|
|
75
|
-
description:
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Search terms — be specific',
|
|
76
78
|
},
|
|
77
79
|
limit: {
|
|
78
|
-
type:
|
|
79
|
-
description:
|
|
80
|
+
type: 'number',
|
|
81
|
+
description: 'Max results to return. Default: 5, max: 20',
|
|
80
82
|
},
|
|
81
83
|
},
|
|
82
|
-
required: [
|
|
84
|
+
required: ['query'],
|
|
83
85
|
},
|
|
84
86
|
},
|
|
85
87
|
},
|
|
@@ -145,10 +147,13 @@ async function buildContext(userId: string, currentQuery: string) {
|
|
|
145
147
|
});
|
|
146
148
|
|
|
147
149
|
return [
|
|
148
|
-
{ role:
|
|
150
|
+
{ role: 'system', content: systemPrompt },
|
|
149
151
|
// Inject relevant past context — NOT entire history
|
|
150
|
-
{
|
|
151
|
-
|
|
152
|
+
{
|
|
153
|
+
role: 'system',
|
|
154
|
+
content: `Relevant past context:\n${pastMemories.map(m => m.content).join('\n')}`,
|
|
155
|
+
},
|
|
156
|
+
{ role: 'user', content: currentQuery },
|
|
152
157
|
];
|
|
153
158
|
}
|
|
154
159
|
```
|
|
@@ -175,7 +180,10 @@ Supervisor agent ─→ breaks task into subtasks
|
|
|
175
180
|
|
|
176
181
|
```ts
|
|
177
182
|
// Two independent agents answer the same question — supervisor resolves disagreement
|
|
178
|
-
const [answerA, answerB] = await Promise.all([
|
|
183
|
+
const [answerA, answerB] = await Promise.all([
|
|
184
|
+
agentA.complete(question),
|
|
185
|
+
agentB.complete(question),
|
|
186
|
+
]);
|
|
179
187
|
|
|
180
188
|
if (answerA.answer === answerB.answer) {
|
|
181
189
|
return answerA; // Agreement — high confidence
|
|
@@ -209,13 +217,13 @@ async function agentLoop(task: string) {
|
|
|
209
217
|
reason: planned.reasoning,
|
|
210
218
|
confidence: planned.confidence,
|
|
211
219
|
});
|
|
212
|
-
if (!approved) return { reason:
|
|
220
|
+
if (!approved) return { reason: 'human_rejected', step };
|
|
213
221
|
}
|
|
214
222
|
|
|
215
223
|
// ✅ Confidence gate — don't act when uncertain
|
|
216
224
|
if (planned.confidence < 0.7) {
|
|
217
225
|
return {
|
|
218
|
-
reason:
|
|
226
|
+
reason: 'human_escalation',
|
|
219
227
|
message: `Low confidence (${planned.confidence}) on: ${planned.action.description}`,
|
|
220
228
|
};
|
|
221
229
|
}
|
|
@@ -238,23 +246,23 @@ Every production agent needs:
|
|
|
238
246
|
const guardrails = {
|
|
239
247
|
// Input guardrails — reject bad prompts before they reach the agent
|
|
240
248
|
input: [
|
|
241
|
-
{ check:
|
|
242
|
-
{ check:
|
|
243
|
-
{ check:
|
|
249
|
+
{ check: 'no_prompt_injection', action: 'reject' },
|
|
250
|
+
{ check: 'within_scope', action: 'reject' }, // Off-topic requests
|
|
251
|
+
{ check: 'pii_detection', action: 'redact' }, // Redact before processing
|
|
244
252
|
],
|
|
245
253
|
|
|
246
254
|
// Output guardrails — validate before returning
|
|
247
255
|
output: [
|
|
248
|
-
{ check:
|
|
249
|
-
{ check:
|
|
250
|
-
{ check:
|
|
256
|
+
{ check: 'no_hallucinated_citations', action: 'flag' },
|
|
257
|
+
{ check: 'schema_valid', action: 'retry_once' },
|
|
258
|
+
{ check: 'no_pii_leaked', action: 'reject' },
|
|
251
259
|
],
|
|
252
260
|
|
|
253
261
|
// Resource guardrails — prevent runaway cost/loops
|
|
254
262
|
resource: [
|
|
255
|
-
{ check:
|
|
256
|
-
{ check:
|
|
257
|
-
{ check:
|
|
263
|
+
{ check: 'max_tokens_per_session', limit: 100_000 },
|
|
264
|
+
{ check: 'max_tool_calls_per_session', limit: 50 },
|
|
265
|
+
{ check: 'max_cost_per_session_usd', limit: 1.0 },
|
|
258
266
|
],
|
|
259
267
|
};
|
|
260
268
|
```
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentic-workflows-2026
|
|
3
|
+
description: Advanced 2026-2027 AI agent loops, ReAct planning, structured tool calling via Zod/Pydantic, streaming generative UI, and human-in-the-loop gates.
|
|
4
|
+
tools: Read, Grep, Glob, Edit, Write
|
|
5
|
+
version: 3.0.0
|
|
6
|
+
last-updated: 2026-08-05
|
|
7
|
+
script: .agent/scripts/swarm_dispatcher.js
|
|
8
|
+
scripts-binding:
|
|
9
|
+
- .agent/scripts/swarm_dispatcher.js
|
|
10
|
+
- .agent/scripts/context_broker.js
|
|
11
|
+
skills:
|
|
12
|
+
- agentic-patterns
|
|
13
|
+
- generative-ui-expert
|
|
14
|
+
- parallel-agents
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Agentic Workflows 2026 — Multi-Agent Architecture
|
|
18
|
+
|
|
19
|
+
## Mandatory Pre-Flight Context Inspection
|
|
20
|
+
|
|
21
|
+
Before designing autonomous agent loops:
|
|
22
|
+
|
|
23
|
+
1. Tool Contract Validation → Enforce strict JSON Schema / Zod validation for every tool call
|
|
24
|
+
2. Hard Execution Limit → Enforce a maximum iteration cap (max 10 turns) to prevent infinite loops
|
|
25
|
+
3. Human-in-the-Loop Gate → Require human approval for destructive operations (file deletion, production deploy, DB writes)
|
|
26
|
+
|
|
27
|
+
## Core ReAct Loop Pattern (Zod + TypeScript)
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { z } from 'zod';
|
|
31
|
+
|
|
32
|
+
export const ToolCallSchema = z.object({
|
|
33
|
+
toolName: z.enum(['read_file', 'write_file', 'run_test']),
|
|
34
|
+
args: z.record(z.unknown()),
|
|
35
|
+
reasoning: z.string().min(10),
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
export type ToolCall = z.infer<typeof ToolCallSchema>;
|
|
39
|
+
|
|
40
|
+
export async function runAgentLoop(task: string, maxTurns = 10) {
|
|
41
|
+
let turn = 0;
|
|
42
|
+
const history: Array<{ role: string; content: string }> = [{ role: 'user', content: task }];
|
|
43
|
+
|
|
44
|
+
while (turn < maxTurns) {
|
|
45
|
+
turn++;
|
|
46
|
+
const response = await callLLM(history);
|
|
47
|
+
const parsed = ToolCallSchema.safeParse(response);
|
|
48
|
+
|
|
49
|
+
if (!parsed.success) {
|
|
50
|
+
history.push({
|
|
51
|
+
role: 'system',
|
|
52
|
+
content: `Invalid tool call payload: ${parsed.error.message}`,
|
|
53
|
+
});
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (parsed.data.toolName === 'write_file') {
|
|
58
|
+
const approved = await requestHumanApproval(parsed.data);
|
|
59
|
+
if (!approved) break;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const result = await executeTool(parsed.data);
|
|
63
|
+
history.push({ role: 'tool', content: JSON.stringify(result) });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Parallel Fan-Out / Fan-In Execution Matrix
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
[Supervisor Agent]
|
|
72
|
+
├── Dispatch Worker A (Backend) ──> WorkerResult A ──┐
|
|
73
|
+
├── Dispatch Worker B (Database) ──> WorkerResult B ──┼─> [Promise.allSettled Synthesis]
|
|
74
|
+
└── Dispatch Worker C (Frontend) ──> WorkerResult C ──┘
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 🛑 Verification-Before-Completion (VBC) Protocol
|
|
78
|
+
|
|
79
|
+
- Validate tool arguments before tool execution.
|
|
80
|
+
- Log complete agent trace trajectory for auditability.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-app-hardening
|
|
3
|
+
description: OWASP Top 10 for LLMs (2026), prompt injection defense, model output sanitization, indirect injection defense, and automated SBOM dependency security.
|
|
4
|
+
tools: Read, Grep, Glob, Edit, Write
|
|
5
|
+
version: 3.0.0
|
|
6
|
+
last-updated: 2026-08-05
|
|
7
|
+
script: .agent/scripts/security_scan.js
|
|
8
|
+
scripts-binding:
|
|
9
|
+
- .agent/scripts/security_scan.js
|
|
10
|
+
- .agent/scripts/guardrail_engine.js
|
|
11
|
+
skills:
|
|
12
|
+
- ai-prompt-injection-defense
|
|
13
|
+
- vulnerability-scanner
|
|
14
|
+
- backend-security-expert
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# AI Application Hardening & Indirect Prompt Injection Defense
|
|
18
|
+
|
|
19
|
+
## Mandatory Pre-Flight Context Inspection
|
|
20
|
+
|
|
21
|
+
Before deploying AI features:
|
|
22
|
+
|
|
23
|
+
1. Indirect Prompt Injection Defense → Sanitize third-party content (scraped URLs, PDF imports, RAG docs) before feeding to LLMs
|
|
24
|
+
2. XML Delimiter Sandboxing → Enclose user/external inputs inside `<external_context>` and instruct model to ignore instructions within
|
|
25
|
+
3. Insecure Output Handling (OWASP LLM02) → Escape HTML/script tags on all rendered model outputs
|
|
26
|
+
|
|
27
|
+
## Indirect Prompt Injection Defense Filter
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
export function sanitizeRAGDocument(rawDocumentContent: string): string {
|
|
31
|
+
if (!rawDocumentContent || typeof rawDocumentContent !== 'string') return '';
|
|
32
|
+
|
|
33
|
+
// 1. Redact indirect prompt injection trigger phrases
|
|
34
|
+
let cleaned = rawDocumentContent.replace(
|
|
35
|
+
/(?:system:\s*ignore|override system prompt|you are now in developer mode|print system prompt)/gi,
|
|
36
|
+
'[REDACTED_INDIRECT_INJECTION]',
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
// 2. Escape structural tag injection attempts
|
|
40
|
+
cleaned = cleaned.replace(/<\/?(?:system|user_input|external_context)[^>]*>/gi, '');
|
|
41
|
+
|
|
42
|
+
// 3. Truncate document snippet length
|
|
43
|
+
return cleaned.slice(0, 3000).trim();
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## OWASP LLM Top 10 (2026 Matrix)
|
|
48
|
+
|
|
49
|
+
| Risk ID | Vulnerability | Defense Implementation |
|
|
50
|
+
| --------- | ------------------------------------ | --------------------------------------------------- |
|
|
51
|
+
| **LLM01** | Prompt Injection (Direct & Indirect) | Delimiter sandboxing + `sanitizeRAGDocument` filter |
|
|
52
|
+
| **LLM02** | Insecure Output Handling | Strict Zod output parsing + DOMPurify on frontend |
|
|
53
|
+
| **LLM04** | Model Denial of Service | Hard `max_tokens` limit + IP bucket rate limiting |
|
|
54
|
+
| **LLM07** | System Prompt Leakage | System prompt redaction guards in output stream |
|
|
55
|
+
|
|
56
|
+
## 🛑 Verification-Before-Completion (VBC) Protocol
|
|
57
|
+
|
|
58
|
+
- Run prompt injection test suite against external RAG context inputs.
|
|
59
|
+
- Audit tool calls for privilege escalation risks.
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before engineering LLM prompts or processing untrusted user input, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Message Role Isolation (Section 15) → Place user input exclusively in `role: "user"` messages; never concatenate user input into `role: "system"`
|
|
24
25
|
2. Delimiter Sandboxing (Section 49) → Frame untrusted input inside XML tags (`<user_input>`) or randomized nonces (`<data_a8b4f1c9>`)
|
|
25
26
|
3. Human-in-the-Loop Gate (Section 119) → Require explicit human approval before executing state-changing tool operations (`delete_user`, `process_payment`)
|
|
@@ -74,9 +75,9 @@ ${userInput}
|
|
|
74
75
|
If an attacker guesses your delimiter (`</user_input> Ignore that.`), they can escape the sandbox. Generating random delimit tokens prevents this.
|
|
75
76
|
|
|
76
77
|
```typescript
|
|
77
|
-
import crypto from
|
|
78
|
+
import crypto from 'crypto';
|
|
78
79
|
|
|
79
|
-
const nonce = crypto.randomBytes(8).toString(
|
|
80
|
+
const nonce = crypto.randomBytes(8).toString('hex'); // e.g., "a8b4f1c9"
|
|
80
81
|
const startTag = `<data_${nonce}>`;
|
|
81
82
|
const endTag = `</data_${nonce}>`;
|
|
82
83
|
|
|
@@ -106,12 +107,12 @@ ${userInput}
|
|
|
106
107
|
</text>`;
|
|
107
108
|
|
|
108
109
|
const response = await scanWithFastModel(checkPrompt);
|
|
109
|
-
return response.trim().includes(
|
|
110
|
+
return response.trim().includes('MALICIOUS');
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
// Flow:
|
|
113
114
|
if (await detectInjection(req.body.text)) {
|
|
114
|
-
return res.status(400).json({ error:
|
|
115
|
+
return res.status(400).json({ error: 'Input violates security policy.' });
|
|
115
116
|
}
|
|
116
117
|
// Proceed to main agent
|
|
117
118
|
```
|
|
@@ -136,8 +137,8 @@ If the LLM has tools (Function Calling):
|
|
|
136
137
|
```typescript
|
|
137
138
|
// ❌ VULNERABLE TOOL DEFINITION
|
|
138
139
|
const deleteUserTool = {
|
|
139
|
-
name:
|
|
140
|
-
description:
|
|
140
|
+
name: 'delete_user',
|
|
141
|
+
description: 'Deletes a user account from the DB',
|
|
141
142
|
}; // An injected prompt can trigger this autonomously
|
|
142
143
|
|
|
143
144
|
// ✅ PREVENTATIVE ARCHITECTURE
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before implementing scroll-driven animations, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Target browser support → Prefer pure CSS `animation-timeline: view()` / `scroll()` when possible
|
|
24
25
|
2. Pinning & Scrubbing rules (Section 45) → Use `scrub: 1` in GSAP ScrollTrigger timelines for smooth inertia
|
|
25
26
|
3. Anti-Scrolljacking rule (Section 88) → Never hijack native scroll wheel momentum or override browser scrolling velocity
|
|
@@ -31,6 +32,7 @@ Architect performant scroll-linked motion and scrollytelling sequences that feel
|
|
|
31
32
|
## 3 Scroll-Driven Architecture Patterns
|
|
32
33
|
|
|
33
34
|
### 1. Modern Pure CSS `view-timeline` (No JavaScript Required)
|
|
35
|
+
|
|
34
36
|
```css
|
|
35
37
|
@keyframes reveal-on-scroll {
|
|
36
38
|
from {
|
|
@@ -51,30 +53,37 @@ Architect performant scroll-linked motion and scrollytelling sequences that feel
|
|
|
51
53
|
```
|
|
52
54
|
|
|
53
55
|
### 2. Sticky Canvas / Section Pinned Storytelling (GSAP ScrollTrigger)
|
|
56
|
+
|
|
54
57
|
```javascript
|
|
55
|
-
import { gsap } from
|
|
56
|
-
import { ScrollTrigger } from
|
|
58
|
+
import { gsap } from 'gsap';
|
|
59
|
+
import { ScrollTrigger } from 'gsap/ScrollTrigger';
|
|
57
60
|
|
|
58
61
|
gsap.registerPlugin(ScrollTrigger);
|
|
59
62
|
|
|
60
|
-
gsap
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.
|
|
63
|
+
gsap
|
|
64
|
+
.timeline({
|
|
65
|
+
scrollTrigger: {
|
|
66
|
+
trigger: '.story-container',
|
|
67
|
+
start: 'top top',
|
|
68
|
+
end: '+=200%',
|
|
69
|
+
pin: true,
|
|
70
|
+
scrub: 1, // Smooth scrub delay
|
|
71
|
+
},
|
|
72
|
+
})
|
|
73
|
+
.to('.story-step-1', { opacity: 0, y: -20 })
|
|
74
|
+
.from('.story-step-2', { opacity: 0, y: 20 });
|
|
71
75
|
```
|
|
72
76
|
|
|
73
77
|
### 3. Scroll Progress Indicator Bar
|
|
78
|
+
|
|
74
79
|
```css
|
|
75
80
|
@keyframes grow-progress {
|
|
76
|
-
from {
|
|
77
|
-
|
|
81
|
+
from {
|
|
82
|
+
transform: scaleX(0);
|
|
83
|
+
}
|
|
84
|
+
to {
|
|
85
|
+
transform: scaleX(1);
|
|
86
|
+
}
|
|
78
87
|
}
|
|
79
88
|
|
|
80
89
|
.scroll-progress-bar {
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before defining animation tokens or styling transitions, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. `index.css` / `DESIGN.md` → Verify presence of centralized `--duration-*` and `--ease-*` CSS custom properties
|
|
24
25
|
2. Centralized Motion Tokens Schema (Section 26) → Enforce standardized duration tiers (80ms instant to 500ms delight)
|
|
25
26
|
3. Anti-Ad-Hoc Easing Rule (Section 48) → Strictly prohibit inline custom cubic-bezier curves; reference motion tokens instead
|
|
@@ -35,18 +36,18 @@ Define standardized design tokens for motion in global CSS or Tailwind config:
|
|
|
35
36
|
```css
|
|
36
37
|
:root {
|
|
37
38
|
/* Duration Scale */
|
|
38
|
-
--duration-instant:
|
|
39
|
-
--duration-fast:
|
|
40
|
-
--duration-normal:
|
|
41
|
-
--duration-slow:
|
|
42
|
-
--duration-delight: 500ms;
|
|
39
|
+
--duration-instant: 80ms; /* Micro feedback, toggle switches */
|
|
40
|
+
--duration-fast: 150ms; /* Tooltips, hover states, press feedback */
|
|
41
|
+
--duration-normal: 220ms; /* Dropdowns, menus, tab switching */
|
|
42
|
+
--duration-slow: 320ms; /* Modals, drawers, page reveals */
|
|
43
|
+
--duration-delight: 500ms; /* Milestone celebrations, toasts */
|
|
43
44
|
|
|
44
45
|
/* Standardized Easing Curves */
|
|
45
|
-
--ease-snappy:
|
|
46
|
-
--ease-out-ui:
|
|
47
|
-
--ease-in-ui:
|
|
48
|
-
--ease-spring:
|
|
49
|
-
--ease-in-out:
|
|
46
|
+
--ease-snappy: cubic-bezier(0.2, 0, 0, 1); /* Quick response for press/active */
|
|
47
|
+
--ease-out-ui: cubic-bezier(0.16, 1, 0.3, 1); /* Smooth entrance for popovers/modals */
|
|
48
|
+
--ease-in-ui: cubic-bezier(0.7, 0, 0.84, 0); /* Smooth exit for modals */
|
|
49
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* Subtle spring overshoot */
|
|
50
|
+
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); /* Morphing layout changes */
|
|
50
51
|
}
|
|
51
52
|
```
|
|
52
53
|
|
|
@@ -20,6 +20,7 @@ scripts-binding:
|
|
|
20
20
|
## Mandatory Pre-Flight Context Inspection
|
|
21
21
|
|
|
22
22
|
Before configuring JS/TS tooling or lint rules, you MUST inspect:
|
|
23
|
+
|
|
23
24
|
1. Pure ESM-First Requirement (Section 24) → Set `"type": "module"` in `package.json`; ban CommonJS `require()` or `module.exports`
|
|
24
25
|
2. ESLint Flat Config (`eslint.config.js`) (Section 28) → Use `@antfu/eslint-config` with flat config format; ban legacy `.eslintrc.json`
|
|
25
26
|
3. Explicit Type Imports (`import type`) (Section 45) → Enforce `import type` for type-only symbols to allow clean tree-shaking compilation
|
|
@@ -33,27 +34,31 @@ Enforce Anthony Fu's modern JavaScript/TypeScript engineering conventions: ESM-f
|
|
|
33
34
|
## 4 Core Tooling Conventions
|
|
34
35
|
|
|
35
36
|
### 1. ESM-First Standards
|
|
37
|
+
|
|
36
38
|
- Use pure ES Modules (`"type": "module"` in `package.json`).
|
|
37
39
|
- Avoid CommonJS `require()` or `module.exports`. Use explicit `.js` extension in relative imports when building Node ESM modules.
|
|
38
40
|
|
|
39
41
|
### 2. Single ESLint Flat Config (`eslint.config.js`)
|
|
42
|
+
|
|
40
43
|
- Use `@antfu/eslint-config` for unified linting across TypeScript, Vue, React, JSON, and Markdown in 1 simple config file.
|
|
41
44
|
|
|
42
45
|
```javascript
|
|
43
46
|
// eslint.config.js
|
|
44
|
-
import antfu from '@antfu/eslint-config'
|
|
47
|
+
import antfu from '@antfu/eslint-config';
|
|
45
48
|
|
|
46
49
|
export default antfu({
|
|
47
50
|
typescript: true,
|
|
48
51
|
vue: true,
|
|
49
52
|
react: true,
|
|
50
|
-
})
|
|
53
|
+
});
|
|
51
54
|
```
|
|
52
55
|
|
|
53
56
|
### 3. PNPM Catalog & Workspace Monorepo
|
|
57
|
+
|
|
54
58
|
- Use `pnpm-workspace.yaml` with PNPM catalogs (`catalog:`) to lock unified dependency versions across monorepos.
|
|
55
59
|
|
|
56
60
|
### 4. Explicit Type Imports (`import type`)
|
|
61
|
+
|
|
57
62
|
- Enforce `import type { User } from './types'` to allow tree-shaking compilers (esbuild/tsdown) to strip type imports cleanly without runtime side effects.
|
|
58
63
|
|
|
59
64
|
---
|