tribunal-kit 5.8.4 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/ARCHITECTURE.md +219 -215
- package/.agent/agents/accessibility-reviewer.md +66 -151
- package/.agent/agents/ai-code-reviewer.md +22 -2
- package/.agent/agents/anti-pattern-reviewer.md +99 -0
- package/.agent/agents/api-architect.md +19 -2
- package/.agent/agents/backend-specialist.md +25 -3
- package/.agent/agents/cloud-engineer.md +21 -0
- package/.agent/agents/code-archaeologist.md +20 -3
- package/.agent/agents/complexity-reviewer.md +22 -2
- package/.agent/agents/database-architect.md +24 -3
- package/.agent/agents/db-latency-auditor.md +22 -2
- package/.agent/agents/debugger.md +19 -3
- package/.agent/agents/dependency-reviewer.md +19 -2
- package/.agent/agents/devops-engineer.md +24 -3
- package/.agent/agents/documentation-writer.md +21 -3
- package/.agent/agents/explorer-agent.md +21 -3
- package/.agent/agents/frontend-reviewer.md +19 -3
- package/.agent/agents/frontend-specialist.md +72 -224
- package/.agent/agents/game-developer.md +22 -3
- package/.agent/agents/interaction-reviewer.md +118 -0
- package/.agent/agents/logic-reviewer.md +18 -3
- package/.agent/agents/minimalist-reviewer.md +98 -0
- package/.agent/agents/mobile-developer.md +21 -3
- package/.agent/agents/mobile-reviewer.md +22 -2
- package/.agent/agents/orchestrator.md +19 -3
- package/.agent/agents/penetration-tester.md +22 -3
- package/.agent/agents/performance-optimizer.md +21 -3
- package/.agent/agents/performance-reviewer.md +2 -0
- package/.agent/agents/precedence-reviewer.md +19 -5
- package/.agent/agents/product-manager.md +20 -3
- package/.agent/agents/product-owner.md +22 -1
- package/.agent/agents/product-reviewer.md +98 -0
- package/.agent/agents/project-planner.md +19 -3
- package/.agent/agents/qa-automation-engineer.md +24 -3
- package/.agent/agents/resilience-reviewer.md +21 -2
- package/.agent/agents/schema-reviewer.md +21 -2
- package/.agent/agents/security-auditor.md +7 -1
- package/.agent/agents/seo-specialist.md +18 -3
- package/.agent/agents/sql-reviewer.md +22 -2
- package/.agent/agents/supervisor-agent.md +22 -3
- package/.agent/agents/swarm-worker-registry.md +7 -0
- package/.agent/agents/system-architect.md +19 -0
- package/.agent/agents/test-coverage-reviewer.md +22 -2
- package/.agent/agents/test-engineer.md +21 -2
- package/.agent/agents/throughput-optimizer.md +22 -2
- package/.agent/agents/type-safety-reviewer.md +21 -2
- package/.agent/agents/ui-ux-auditor.md +44 -242
- package/.agent/agents/ui-visual-auditor.md +99 -0
- package/.agent/agents/ux-reviewer.md +104 -0
- package/.agent/agents/visual-reviewer.md +98 -0
- package/.agent/agents/vitals-reviewer.md +23 -2
- package/.agent/history/README.md +53 -0
- package/.agent/history/case-law/cases/template-case.json +19 -0
- package/.agent/history/integrity_manifest.json +131 -33
- package/.agent/history/memory/.memory.idx +1581 -1
- package/.agent/history/memory/MEMORY.md +105 -1
- package/.agent/routing_index.json +272 -690
- package/.agent/rules/GEMINI.md +10 -12
- package/.agent/rules/GEMINI_PLANNER.md +84 -0
- package/.agent/scripts/_utils.js +28 -7
- package/.agent/scripts/case_law_manager.js +2 -0
- package/.agent/scripts/context_broker.js +152 -19
- package/.agent/scripts/guardrail_engine.js +60 -5
- package/.agent/scripts/impact_classifier.js +167 -0
- package/.agent/scripts/integrity_manifest.js +10 -4
- package/.agent/scripts/marathon_harness.js +10 -1
- package/.agent/scripts/minimal_change_engine.js +437 -0
- package/.agent/scripts/pipeline_engine.js +856 -0
- package/.agent/scripts/skill_evolution.js +36 -21
- package/.agent/scripts/socratic_gate_policy.js +60 -0
- package/.agent/scripts/swarm_dispatcher.js +65 -6
- package/.agent/scripts/token_budget_broker.js +52 -0
- package/.agent/scripts/verify_all.js +13 -0
- package/.agent/scripts/visual_audit.js +92 -0
- package/.agent/skills/12-principles-of-animation/SKILL.md +19 -10
- package/.agent/skills/60fps-animation/SKILL.md +19 -10
- package/.agent/skills/accessible-animation/SKILL.md +19 -10
- package/.agent/skills/adapt/SKILL.md +19 -10
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +21 -3
- package/.agent/skills/agent-organizer/SKILL.md +21 -7
- package/.agent/skills/agentic-patterns/SKILL.md +19 -7
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +21 -7
- package/.agent/skills/animation-on-scroll/SKILL.md +19 -10
- package/.agent/skills/animation-systems/SKILL.md +19 -10
- package/.agent/skills/antfu-conventions/SKILL.md +21 -10
- package/.agent/skills/api-patterns/SKILL.md +21 -7
- package/.agent/skills/api-patterns/scripts/__pycache__/api_validator.cpython-311.pyc +0 -0
- package/.agent/skills/api-security-auditor/SKILL.md +21 -7
- package/.agent/skills/app-builder/SKILL.md +21 -7
- package/.agent/skills/apple-design/SKILL.md +19 -10
- package/.agent/skills/architecture/SKILL.md +21 -7
- package/.agent/skills/audit-and-fix/SKILL.md +19 -10
- package/.agent/skills/authentication-best-practices/SKILL.md +21 -7
- package/.agent/skills/backend-security-expert/SKILL.md +21 -7
- package/.agent/skills/baseline-ui/SKILL.md +19 -10
- package/.agent/skills/bash-linux/SKILL.md +21 -7
- package/.agent/skills/behavioral-modes/SKILL.md +19 -7
- package/.agent/skills/better-colors/SKILL.md +31 -14
- package/.agent/skills/better-ui/SKILL.md +19 -10
- package/.agent/skills/bolder/SKILL.md +19 -10
- package/.agent/skills/brainstorming/SKILL.md +17 -7
- package/.agent/skills/browser-native-ai/SKILL.md +19 -3
- package/.agent/skills/build-primitive/SKILL.md +19 -10
- package/.agent/skills/building-native-ui/SKILL.md +21 -7
- package/.agent/skills/cicd-pro/SKILL.md +21 -10
- package/.agent/skills/clarify/SKILL.md +19 -10
- package/.agent/skills/clean-code/SKILL.md +21 -7
- package/.agent/skills/cloud-architect/SKILL.md +21 -10
- package/.agent/skills/cobejs/SKILL.md +19 -10
- package/.agent/skills/code-review-checklist/SKILL.md +21 -7
- package/.agent/skills/codebase-design/SKILL.md +21 -10
- package/.agent/skills/colorize/SKILL.md +19 -10
- package/.agent/skills/compact-landing/SKILL.md +19 -10
- package/.agent/skills/company-logos/SKILL.md +19 -10
- package/.agent/skills/config-validator/SKILL.md +21 -7
- package/.agent/skills/containerization-pro/SKILL.md +21 -10
- package/.agent/skills/create-design-md/SKILL.md +19 -10
- package/.agent/skills/critique/SKILL.md +19 -10
- package/.agent/skills/csharp-developer/SKILL.md +21 -7
- package/.agent/skills/data-validation-schemas/SKILL.md +21 -7
- package/.agent/skills/database-design/SKILL.md +21 -7
- package/.agent/skills/database-design/scripts/__pycache__/schema_validator.cpython-311.pyc +0 -0
- package/.agent/skills/delight/SKILL.md +19 -10
- package/.agent/skills/deployment-procedures/SKILL.md +21 -7
- package/.agent/skills/design-lab/SKILL.md +21 -10
- package/.agent/skills/devops-engineer/SKILL.md +21 -7
- package/.agent/skills/devops-incident-responder/SKILL.md +21 -7
- package/.agent/skills/diagnosing-bugs/SKILL.md +21 -10
- package/.agent/skills/distill/SKILL.md +19 -10
- package/.agent/skills/documentation-templates/SKILL.md +21 -7
- package/.agent/skills/domain-modeling/SKILL.md +21 -10
- package/.agent/skills/edge-computing/SKILL.md +21 -7
- package/.agent/skills/emil-design-eng/SKILL.md +19 -10
- package/.agent/skills/error-resilience/SKILL.md +21 -7
- package/.agent/skills/extract-design-system/SKILL.md +21 -7
- package/.agent/skills/fabel-protocol/SKILL.md +19 -2
- package/.agent/skills/fixing-accessibility/SKILL.md +25 -14
- package/.agent/skills/fixing-metadata/SKILL.md +19 -10
- package/.agent/skills/fixing-motion-performance/SKILL.md +19 -10
- package/.agent/skills/framer-motion-expert/SKILL.md +19 -6
- package/.agent/skills/frontend-design/SKILL.md +66 -204
- package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/ux_audit.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-security-expert/SKILL.md +21 -7
- package/.agent/skills/game-design-expert/SKILL.md +21 -7
- package/.agent/skills/game-engineering-expert/SKILL.md +21 -7
- package/.agent/skills/generative-ui-expert/SKILL.md +19 -3
- package/.agent/skills/geo-fundamentals/SKILL.md +21 -7
- package/.agent/skills/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/git-pro/SKILL.md +21 -10
- package/.agent/skills/github-operations/SKILL.md +21 -7
- package/.agent/skills/gpt-taste/SKILL.md +19 -10
- package/.agent/skills/gsap-core/SKILL.md +21 -4
- package/.agent/skills/gsap-frameworks/SKILL.md +21 -4
- package/.agent/skills/gsap-performance/SKILL.md +20 -5
- package/.agent/skills/gsap-plugins/SKILL.md +20 -5
- package/.agent/skills/gsap-react/SKILL.md +20 -5
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +21 -4
- package/.agent/skills/gsap-timeline/SKILL.md +20 -5
- package/.agent/skills/gsap-utils/SKILL.md +20 -5
- package/.agent/skills/harden/SKILL.md +19 -10
- package/.agent/skills/harness-protocol/SKILL.md +20 -4
- package/.agent/skills/i18n-localization/SKILL.md +21 -7
- package/.agent/skills/i18n-localization/scripts/__pycache__/i18n_checker.cpython-311.pyc +0 -0
- package/.agent/skills/impeccable/SKILL.md +21 -10
- package/.agent/skills/improve-codebase-architecture/SKILL.md +21 -10
- package/.agent/skills/improve-ui/SKILL.md +19 -10
- package/.agent/skills/intelligent-routing/SKILL.md +19 -7
- package/.agent/skills/knowledge-graph/SKILL.md +20 -4
- package/.agent/skills/landing-page/SKILL.md +20 -10
- package/.agent/skills/lint-and-validate/SKILL.md +21 -7
- package/.agent/skills/lint-and-validate/scripts/__pycache__/lint_runner.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/type_coverage.cpython-311.pyc +0 -0
- package/.agent/skills/llm-engineering/SKILL.md +21 -7
- package/.agent/skills/local-first/SKILL.md +21 -7
- package/.agent/skills/local-first-architecture/SKILL.md +19 -10
- package/.agent/skills/lottie-animation/SKILL.md +19 -10
- package/.agent/skills/marquee-loop/SKILL.md +19 -10
- package/.agent/skills/masked-reveal/SKILL.md +19 -10
- package/.agent/skills/mcp-builder/SKILL.md +21 -7
- package/.agent/skills/micro-interaction/SKILL.md +19 -10
- package/.agent/skills/mobile-design/SKILL.md +21 -6
- package/.agent/skills/mobile-design/scripts/__pycache__/mobile_audit.cpython-311.pyc +0 -0
- package/.agent/skills/monorepo-management/SKILL.md +21 -7
- package/.agent/skills/morphing-icons/SKILL.md +19 -10
- package/.agent/skills/motion-engineering/SKILL.md +86 -171
- package/.agent/skills/nextjs-react-expert/SKILL.md +19 -7
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/convert_rules.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/react_performance_checker.cpython-311.pyc +0 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +21 -7
- package/.agent/skills/observability/SKILL.md +21 -7
- package/.agent/skills/page-transition-animation/SKILL.md +19 -10
- package/.agent/skills/parallel-agents/SKILL.md +23 -7
- package/.agent/skills/performance-profiling/SKILL.md +21 -7
- package/.agent/skills/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-311.pyc +0 -0
- package/.agent/skills/plan-writing/SKILL.md +21 -7
- package/.agent/skills/platform-engineer/SKILL.md +21 -7
- package/.agent/skills/playwright-best-practices/SKILL.md +21 -7
- package/.agent/skills/polish/SKILL.md +19 -10
- package/.agent/skills/powershell-windows/SKILL.md +21 -7
- package/.agent/skills/pricing-page/SKILL.md +19 -10
- package/.agent/skills/product-aware-heuristics/SKILL.md +358 -0
- package/.agent/skills/progressive-blur/SKILL.md +19 -10
- package/.agent/skills/project-idioms/SKILL.md +20 -8
- package/.agent/skills/python-patterns/SKILL.md +21 -7
- package/.agent/skills/python-pro/SKILL.md +21 -6
- package/.agent/skills/quieter/SKILL.md +19 -10
- package/.agent/skills/react-doctor/SKILL.md +19 -10
- package/.agent/skills/react-specialist/SKILL.md +19 -6
- package/.agent/skills/readme-builder/SKILL.md +21 -7
- package/.agent/skills/realtime-patterns/SKILL.md +21 -7
- package/.agent/skills/red-team-tactics/SKILL.md +21 -7
- package/.agent/skills/redesign-skill/SKILL.md +19 -10
- package/.agent/skills/review-animations/SKILL.md +21 -10
- package/.agent/skills/rust-pro/SKILL.md +21 -7
- package/.agent/skills/seo-fundamentals/SKILL.md +21 -7
- package/.agent/skills/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/server-management/SKILL.md +21 -7
- package/.agent/skills/shadcn-ui-expert/SKILL.md +21 -7
- package/.agent/skills/shape/SKILL.md +19 -10
- package/.agent/skills/skill-creator/SKILL.md +21 -7
- package/.agent/skills/soft-skill/SKILL.md +19 -10
- package/.agent/skills/sounds-on-the-web/SKILL.md +19 -10
- package/.agent/skills/sql-pro/SKILL.md +21 -7
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +21 -7
- package/.agent/skills/svg-animation/SKILL.md +19 -10
- package/.agent/skills/swiftui-expert/SKILL.md +21 -7
- package/.agent/skills/swiss-design/SKILL.md +19 -10
- package/.agent/skills/system-design-pro/SKILL.md +21 -9
- package/.agent/skills/systematic-debugging/SKILL.md +21 -7
- package/.agent/skills/tailwind-patterns/SKILL.md +21 -7
- package/.agent/skills/taste-skill/SKILL.md +19 -10
- package/.agent/skills/tdd-workflow/SKILL.md +21 -10
- package/.agent/skills/test-result-analyzer/SKILL.md +18 -6
- package/.agent/skills/testing-patterns/SKILL.md +21 -7
- package/.agent/skills/testing-patterns/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +21 -10
- package/.agent/skills/thinking-protocol/SKILL.md +20 -8
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +19 -10
- package/.agent/skills/transitions-dev/SKILL.md +19 -10
- package/.agent/skills/trend-researcher/SKILL.md +17 -6
- package/.agent/skills/typescript-advanced/SKILL.md +21 -7
- package/.agent/skills/typeset/SKILL.md +19 -10
- package/.agent/skills/ui-reasoning-engine/SKILL.md +154 -0
- package/.agent/skills/ui-skill-packs/SKILL.md +77 -0
- package/.agent/skills/ui-skills-root/SKILL.md +21 -9
- package/.agent/skills/ui-ux-pro-max/SKILL.md +62 -583
- package/.agent/skills/ui-ux-researcher/SKILL.md +17 -6
- package/.agent/skills/vue-expert/SKILL.md +19 -6
- package/.agent/skills/vulnerability-scanner/SKILL.md +21 -7
- package/.agent/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/skills/web-accessibility-auditor/SKILL.md +21 -7
- package/.agent/skills/web-design-guidelines/SKILL.md +32 -206
- package/.agent/skills/web-quality-audit/SKILL.md +19 -10
- package/.agent/skills/webapp-testing/SKILL.md +21 -7
- package/.agent/skills/webapp-testing/scripts/__pycache__/playwright_runner.cpython-311.pyc +0 -0
- package/.agent/skills/webgpu-performance/SKILL.md +19 -3
- package/.agent/skills/whimsy-injector/SKILL.md +20 -10
- package/.agent/skills/workflow-optimizer/SKILL.md +16 -6
- package/.agent/templates/DESIGN.md +292 -0
- package/.agent/templates/design-tokens.json +137 -0
- package/.agent/workflows/acf.md +13 -6
- package/.agent/workflows/api-tester.md +15 -8
- package/.agent/workflows/audit.md +19 -8
- package/.agent/workflows/brainstorm.md +14 -9
- package/.agent/workflows/changelog.md +14 -8
- package/.agent/workflows/create.md +16 -8
- package/.agent/workflows/debug.md +15 -10
- package/.agent/workflows/deploy.md +16 -8
- package/.agent/workflows/enhance.md +15 -10
- package/.agent/workflows/fix.md +15 -8
- package/.agent/workflows/generate.md +17 -11
- package/.agent/workflows/marathon.md +15 -8
- package/.agent/workflows/migrate.md +16 -8
- package/.agent/workflows/minimal.md +94 -0
- package/.agent/workflows/orchestrate.md +15 -8
- package/.agent/workflows/performance-benchmarker.md +15 -8
- package/.agent/workflows/pipeline.md +155 -0
- package/.agent/workflows/plan.md +14 -10
- package/.agent/workflows/preview.md +14 -7
- package/.agent/workflows/refactor.md +16 -8
- package/.agent/workflows/review-ai.md +15 -7
- package/.agent/workflows/review.md +15 -7
- package/.agent/workflows/session.md +14 -7
- package/.agent/workflows/status.md +13 -7
- package/.agent/workflows/strengthen-skills.md +15 -6
- package/.agent/workflows/super-prompt.md +19 -10
- package/.agent/workflows/swarm.md +15 -7
- package/.agent/workflows/test.md +15 -8
- package/.agent/workflows/tribunal-backend.md +16 -9
- package/.agent/workflows/tribunal-database.md +15 -8
- package/.agent/workflows/tribunal-frontend.md +26 -11
- package/.agent/workflows/tribunal-full.md +29 -14
- package/.agent/workflows/tribunal-mobile.md +15 -8
- package/.agent/workflows/tribunal-performance.md +15 -8
- package/.agent/workflows/tribunal-speed.md +16 -9
- package/.agent/workflows/tribunal-ui.md +82 -0
- package/.agent/workflows/ui-ux-pro-max.md +51 -107
- package/CONTRIBUTING.md +2 -2
- package/README.md +5 -5
- package/bin/mcp-server.js +126 -76
- package/bin/wrapper.js +67 -31
- package/dist/cli.js +39 -1
- package/dist/commands/compile.js +7 -0
- package/dist/commands/context.js +8 -3
- package/dist/commands/graph.js +8 -2
- package/dist/commands/init.js +37 -2
- package/dist/commands/memory.js +119 -68
- package/dist/commands/minimal.js +71 -0
- package/dist/commands/native.js +228 -0
- package/dist/commands/optimize.js +15 -5
- package/dist/commands/validate.js +67 -0
- package/dist/esm/index.mjs +26 -32
- package/dist/mcp/server.js +4 -138
- package/dist/utils/fs.js +10 -4
- package/dist/utils/helpers.js +10 -1
- package/dist/utils/version.js +9 -2
- package/mcp_config.json +10 -1
- package/package.json +19 -15
- package/scripts/benchmark.js +58 -0
- package/scripts/sync-version.js +129 -76
- package/scripts/visual_audit.js +126 -0
|
@@ -46,11 +46,18 @@ const {
|
|
|
46
46
|
const { findAgentDir } = require("./_utils");
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
|
|
49
|
+
function getPaths(startDir = process.cwd()) {
|
|
50
|
+
const agentDir = findAgentDir(startDir);
|
|
51
|
+
const skillDir = path.join(agentDir, "skills", "project-idioms");
|
|
52
|
+
const historyDir = path.join(agentDir, "history", "skill-evolution");
|
|
53
|
+
return {
|
|
54
|
+
agentDir,
|
|
55
|
+
skillDir,
|
|
56
|
+
skillFile: path.join(skillDir, "SKILL.md"),
|
|
57
|
+
historyDir,
|
|
58
|
+
logFile: path.join(historyDir, "digest-log.json"),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
54
61
|
|
|
55
62
|
// ── Architectural Weight Patterns ────────────────────────────────────────────
|
|
56
63
|
const HIGH_WEIGHT_PATTERNS = [
|
|
@@ -205,8 +212,9 @@ function countTokensEstimate(text) {
|
|
|
205
212
|
|
|
206
213
|
// ── Idiom management ──────────────────────────────────────────────────────────
|
|
207
214
|
function loadExistingIdioms() {
|
|
208
|
-
|
|
209
|
-
|
|
215
|
+
const { skillFile } = getPaths();
|
|
216
|
+
if (!fs.existsSync(skillFile)) return [];
|
|
217
|
+
const content = fs.readFileSync(skillFile, "utf8");
|
|
210
218
|
const idioms = [];
|
|
211
219
|
const pattern =
|
|
212
220
|
/\|\s*(\d+)\s*\|\s*`([^`]+)`\s*\|\s*([^|]+)\|\s*([^|]+)\|\s*([^|]+)\|/g;
|
|
@@ -346,10 +354,11 @@ function parseLlmYamlResponse(response) {
|
|
|
346
354
|
|
|
347
355
|
// ── Log helpers ────────────────────────────────────────────────────────────────
|
|
348
356
|
function loadLog() {
|
|
349
|
-
|
|
350
|
-
|
|
357
|
+
const { historyDir, logFile } = getPaths();
|
|
358
|
+
fs.mkdirSync(historyDir, { recursive: true });
|
|
359
|
+
if (fs.existsSync(logFile)) {
|
|
351
360
|
try {
|
|
352
|
-
return JSON.parse(fs.readFileSync(
|
|
361
|
+
return JSON.parse(fs.readFileSync(logFile, "utf8"));
|
|
353
362
|
} catch {
|
|
354
363
|
/* fallthrough */
|
|
355
364
|
}
|
|
@@ -358,8 +367,9 @@ function loadLog() {
|
|
|
358
367
|
}
|
|
359
368
|
|
|
360
369
|
function saveLog(log) {
|
|
361
|
-
|
|
362
|
-
fs.
|
|
370
|
+
const { historyDir, logFile } = getPaths();
|
|
371
|
+
fs.mkdirSync(historyDir, { recursive: true });
|
|
372
|
+
fs.writeFileSync(logFile, JSON.stringify(log, null, 2), "utf8");
|
|
363
373
|
}
|
|
364
374
|
|
|
365
375
|
// ── Auto-LLM API Integration ─────────────────────────────────────────────────
|
|
@@ -835,8 +845,9 @@ async function cmdDigest(args) {
|
|
|
835
845
|
if (added > 0) {
|
|
836
846
|
log.total_idioms = merged.length;
|
|
837
847
|
const skillMd = renderSkillMd(merged, (log.cycles || []).length + 1);
|
|
838
|
-
|
|
839
|
-
fs.
|
|
848
|
+
const { skillDir, skillFile } = getPaths();
|
|
849
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
850
|
+
fs.writeFileSync(skillFile, skillMd, "utf8");
|
|
840
851
|
console.log(` ${GREEN}✔ ${added} new idiom(s) added to SKILL.md${RESET}`);
|
|
841
852
|
} else {
|
|
842
853
|
console.log(` ${DIM} No new unique idioms added to SKILL.md.${RESET}`);
|
|
@@ -932,22 +943,24 @@ async function cmdDigest(args) {
|
|
|
932
943
|
}
|
|
933
944
|
|
|
934
945
|
function cmdShow() {
|
|
935
|
-
|
|
946
|
+
const { skillFile } = getPaths();
|
|
947
|
+
if (!fs.existsSync(skillFile)) {
|
|
936
948
|
console.log(
|
|
937
949
|
`${YELLOW}No project-idioms skill found. Run 'digest' first.${RESET}`,
|
|
938
950
|
);
|
|
939
951
|
return;
|
|
940
952
|
}
|
|
941
|
-
console.log(fs.readFileSync(
|
|
953
|
+
console.log(fs.readFileSync(skillFile, "utf8"));
|
|
942
954
|
}
|
|
943
955
|
|
|
944
956
|
function cmdReset() {
|
|
945
|
-
|
|
946
|
-
|
|
957
|
+
const { skillFile, logFile } = getPaths();
|
|
958
|
+
if (fs.existsSync(skillFile)) {
|
|
959
|
+
fs.unlinkSync(skillFile);
|
|
947
960
|
console.log(`${GREEN}✔ project-idioms/SKILL.md deleted.${RESET}`);
|
|
948
961
|
}
|
|
949
|
-
if (fs.existsSync(
|
|
950
|
-
fs.unlinkSync(
|
|
962
|
+
if (fs.existsSync(logFile)) {
|
|
963
|
+
fs.unlinkSync(logFile);
|
|
951
964
|
console.log(`${GREEN}✔ Digest log cleared.${RESET}`);
|
|
952
965
|
}
|
|
953
966
|
console.log(`${DIM}Run 'digest' to start a fresh evolution cycle.${RESET}`);
|
|
@@ -958,7 +971,8 @@ function cmdStatus() {
|
|
|
958
971
|
const cycles = log.cycles || [];
|
|
959
972
|
const totalSaved = log.total_tokens_saved || 0;
|
|
960
973
|
const totalIdioms = log.total_idioms || 0;
|
|
961
|
-
const
|
|
974
|
+
const { skillFile } = getPaths();
|
|
975
|
+
const idiomsExist = fs.existsSync(skillFile);
|
|
962
976
|
|
|
963
977
|
console.log(
|
|
964
978
|
`\n${BOLD}${CYAN}━━━ Skill Evolution Status ━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`,
|
|
@@ -1033,6 +1047,7 @@ module.exports = {
|
|
|
1033
1047
|
architecturalWeight,
|
|
1034
1048
|
parseLlmYamlResponse,
|
|
1035
1049
|
loadExistingIdioms,
|
|
1050
|
+
getPaths,
|
|
1036
1051
|
};
|
|
1037
1052
|
|
|
1038
1053
|
if (require.main === module) {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* socratic_gate_policy.js — Adaptive Socratic Gate Evaluator
|
|
4
|
+
* =============================================================
|
|
5
|
+
* Determines whether the Socratic Gate should block execution with interactive questions.
|
|
6
|
+
*
|
|
7
|
+
* Rules:
|
|
8
|
+
* - Tier 0 & Tier 1: Always BYPASS Socratic Gate (0 blocking questions).
|
|
9
|
+
* - Tier 2: Bypass UNLESS Ambiguity Score > 0.5 or explicit ambiguities are present.
|
|
10
|
+
* - Tier 3: Trigger Socratic Gate unless explicitly overridden with --no-gate or --express.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
"use strict";
|
|
14
|
+
|
|
15
|
+
const { parseArgs } = require("./_utils");
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Evaluates whether the Socratic Gate should be engaged.
|
|
19
|
+
* @param {Object} opts - Options { tier, ambiguityScore, flags, task }
|
|
20
|
+
* @returns {Object} { shouldBlock, reason }
|
|
21
|
+
*/
|
|
22
|
+
function evaluateSocraticGate(opts = {}) {
|
|
23
|
+
const tier = typeof opts.tier === "number" ? opts.tier : 1;
|
|
24
|
+
const ambiguityScore = typeof opts.ambiguityScore === "number" ? opts.ambiguityScore : 0.2;
|
|
25
|
+
const flags = opts.flags || {};
|
|
26
|
+
|
|
27
|
+
if (flags["no-gate"] || flags.express || flags.force) {
|
|
28
|
+
return { shouldBlock: false, reason: "Explicit user override (--no-gate / --express)" };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (tier === 0) {
|
|
32
|
+
return { shouldBlock: false, reason: "Tier 0 Fast-Pass (low impact)" };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (tier === 1) {
|
|
36
|
+
return { shouldBlock: false, reason: "Tier 1 Express Pass (single component / logic edit)" };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (tier === 2) {
|
|
40
|
+
if (ambiguityScore > 0.5) {
|
|
41
|
+
return { shouldBlock: true, reason: `Tier 2 ambiguity exceeds threshold (${ambiguityScore} > 0.5)` };
|
|
42
|
+
}
|
|
43
|
+
return { shouldBlock: false, reason: "Tier 2 low-ambiguity edit (gate bypassed)" };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Tier 3
|
|
47
|
+
return { shouldBlock: true, reason: "Tier 3 Full Gauntlet (high risk / architectural change)" };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (require.main === module) {
|
|
51
|
+
const args = parseArgs(process.argv);
|
|
52
|
+
const result = evaluateSocraticGate({
|
|
53
|
+
tier: args.tier ? parseInt(args.tier, 10) : 1,
|
|
54
|
+
ambiguityScore: args.ambiguity ? parseFloat(args.ambiguity) : 0.2,
|
|
55
|
+
flags: args
|
|
56
|
+
});
|
|
57
|
+
console.log(JSON.stringify(result, null, 2));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
module.exports = { evaluateSocraticGate };
|
|
@@ -52,7 +52,7 @@ class SwarmDashboard {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
start() {
|
|
55
|
-
|
|
55
|
+
this.render();
|
|
56
56
|
this.timer = setInterval(() => this.render(), 80);
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -89,12 +89,63 @@ const MAX_GOAL_LENGTH = 200;
|
|
|
89
89
|
const MAX_CONTEXT_LENGTH = 800;
|
|
90
90
|
const MAX_WORKERS_PER_SWARM = 5;
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
function getBinaryPath() {
|
|
93
|
+
if (process.env.TRIBUNAL_FORCE_JS === "1") return null;
|
|
94
|
+
const isWindows = process.platform === "win32";
|
|
95
|
+
const ext = isWindows ? ".exe" : "";
|
|
96
|
+
const candidates = [
|
|
97
|
+
process.env.TRIBUNAL_CORE_PATH,
|
|
98
|
+
path.resolve(__dirname, "..", "..", "tribunal-kit", "target", "release", `tribunal-core${ext}`),
|
|
99
|
+
path.resolve(__dirname, "..", "..", "target", "release", `tribunal-core${ext}`),
|
|
100
|
+
path.resolve(process.cwd(), "target", "release", `tribunal-core${ext}`),
|
|
101
|
+
path.resolve(process.cwd(), "tribunal-kit", "target", "release", `tribunal-core${ext}`),
|
|
102
|
+
];
|
|
103
|
+
for (const c of candidates) {
|
|
104
|
+
if (c && fs.existsSync(c)) return c;
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
93
108
|
|
|
109
|
+
function nativeValidate(file, schemaType) {
|
|
110
|
+
const bin = getBinaryPath();
|
|
111
|
+
if (!bin || !file || !fs.existsSync(file)) return null;
|
|
112
|
+
try {
|
|
113
|
+
const { spawnSync } = require("child_process");
|
|
114
|
+
const res = spawnSync(bin, ["validate", "--file", file, "--schema", schemaType], {
|
|
115
|
+
encoding: "utf-8",
|
|
116
|
+
});
|
|
117
|
+
if (res.status === 0) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
} catch {
|
|
121
|
+
// fallback to JS engine
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function findAgentDir(startPath) {
|
|
127
|
+
let current = path.resolve(startPath);
|
|
128
|
+
const root = path.parse(current).root;
|
|
129
|
+
while (current !== root) {
|
|
130
|
+
const agentDir = path.join(current, ".agent");
|
|
131
|
+
if (fs.existsSync(agentDir) && fs.statSync(agentDir).isDirectory()) {
|
|
132
|
+
return agentDir;
|
|
133
|
+
}
|
|
134
|
+
current = path.dirname(current);
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
94
138
|
|
|
95
139
|
// ─── Legacy mode: validate orchestrator micro-worker payloads ──────────────────
|
|
96
140
|
|
|
97
|
-
function validatePayload(payloadData, workspaceRoot, agentsDir) {
|
|
141
|
+
function validatePayload(payloadData, workspaceRoot, agentsDir, payloadFile = null) {
|
|
142
|
+
if (payloadFile) {
|
|
143
|
+
const nativeResult = nativeValidate(payloadFile, "micro-worker");
|
|
144
|
+
if (nativeResult === true) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
98
149
|
if (!payloadData.dispatch_micro_workers) {
|
|
99
150
|
console.error(
|
|
100
151
|
"ERROR: Payload missing required 'dispatch_micro_workers' array.",
|
|
@@ -301,7 +352,14 @@ function validateWorkerResult(res, index) {
|
|
|
301
352
|
return errors;
|
|
302
353
|
}
|
|
303
354
|
|
|
304
|
-
function validateSwarmPayload(payloadData, agentsDir) {
|
|
355
|
+
function validateSwarmPayload(payloadData, agentsDir, payloadFile = null) {
|
|
356
|
+
if (payloadFile) {
|
|
357
|
+
const nativeResult = nativeValidate(payloadFile, "swarm");
|
|
358
|
+
if (nativeResult === true) {
|
|
359
|
+
return true;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
305
363
|
let items;
|
|
306
364
|
if (typeof payloadData === "object" && payloadData !== null) {
|
|
307
365
|
if (Array.isArray(payloadData)) {
|
|
@@ -417,7 +475,7 @@ function main() {
|
|
|
417
475
|
}
|
|
418
476
|
|
|
419
477
|
if (mode === "swarm") {
|
|
420
|
-
if (!validateSwarmPayload(payloadData, agentsDir)) {
|
|
478
|
+
if (!validateSwarmPayload(payloadData, agentsDir, file)) {
|
|
421
479
|
console.error("ERROR: Swarm payload validation failed.");
|
|
422
480
|
process.exit(1);
|
|
423
481
|
}
|
|
@@ -494,7 +552,7 @@ function main() {
|
|
|
494
552
|
}
|
|
495
553
|
}
|
|
496
554
|
} else {
|
|
497
|
-
if (!validatePayload(payloadData, workspaceRoot, agentsDir)) {
|
|
555
|
+
if (!validatePayload(payloadData, workspaceRoot, agentsDir, file)) {
|
|
498
556
|
console.error("ERROR: Payload validation failed.");
|
|
499
557
|
process.exit(1);
|
|
500
558
|
}
|
|
@@ -536,6 +594,7 @@ function main() {
|
|
|
536
594
|
}
|
|
537
595
|
|
|
538
596
|
module.exports = {
|
|
597
|
+
SwarmDashboard,
|
|
539
598
|
validateWorkerRequest,
|
|
540
599
|
validateWorkerResult,
|
|
541
600
|
validateSwarmPayload,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* token_budget_broker.js — Token Budget & Persona Optimizer
|
|
4
|
+
* ============================================================
|
|
5
|
+
* Calculates and caps context window budgets based on Governance Impact Tiers.
|
|
6
|
+
*
|
|
7
|
+
* Tier Budgets:
|
|
8
|
+
* - Tier 0: 0 tokens (No LLM call required)
|
|
9
|
+
* - Tier 1: Max 2,000 tokens (diff context + 1 skill rule)
|
|
10
|
+
* - Tier 2: Max 8,000 tokens (diff + 2 skill rules + context summary)
|
|
11
|
+
* - Tier 3: Full budget (up to model context limit)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
"use strict";
|
|
15
|
+
|
|
16
|
+
const { parseArgs } = require("./_utils");
|
|
17
|
+
|
|
18
|
+
const TIER_TOKEN_LIMITS = {
|
|
19
|
+
0: 0,
|
|
20
|
+
1: 2000,
|
|
21
|
+
2: 8000,
|
|
22
|
+
3: 32000
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Returns context budget constraints for a given impact tier
|
|
27
|
+
* @param {number} tier - Governance Impact Tier (0-3)
|
|
28
|
+
* @returns {Object} { maxTokens, includeFullRepo, maxSkills, maxReviewers }
|
|
29
|
+
*/
|
|
30
|
+
function getTokenBudget(tier = 1) {
|
|
31
|
+
// Normalize tier to a valid integer in [0, 3]
|
|
32
|
+
const normalizedTier = (typeof tier === "number" && Number.isFinite(tier))
|
|
33
|
+
? Math.max(0, Math.min(3, Math.round(tier)))
|
|
34
|
+
: 1;
|
|
35
|
+
const maxTokens = TIER_TOKEN_LIMITS[normalizedTier];
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
tier: normalizedTier,
|
|
39
|
+
maxTokens,
|
|
40
|
+
includeFullRepo: normalizedTier >= 2,
|
|
41
|
+
maxSkills: normalizedTier === 0 ? 0 : normalizedTier === 1 ? 1 : normalizedTier === 2 ? 3 : 10,
|
|
42
|
+
maxReviewers: normalizedTier === 0 ? 0 : normalizedTier === 1 ? 1 : normalizedTier === 2 ? 2 : 8
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (require.main === module) {
|
|
47
|
+
const args = parseArgs(process.argv);
|
|
48
|
+
const tier = args.tier ? parseInt(args.tier, 10) : 1;
|
|
49
|
+
console.log(JSON.stringify(getTokenBudget(tier), null, 2));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
module.exports = { getTokenBudget, TIER_TOKEN_LIMITS };
|
|
@@ -213,6 +213,19 @@ function verifyAll(cwd, skipped) {
|
|
|
213
213
|
trackSkip("Dependency audit", "skipped by flag");
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
+
console.log(sectionHeader("Rust Core Tests", 7));
|
|
217
|
+
if (!skipped.includes("rust")) {
|
|
218
|
+
const cargoToml = path.join(cwd, "crates", "core", "Cargo.toml");
|
|
219
|
+
if (fs.existsSync(cargoToml)) {
|
|
220
|
+
if (!run("Rust Core Tests", ["cargo", "test", "--manifest-path", "crates/core/Cargo.toml"], cwd))
|
|
221
|
+
failures++;
|
|
222
|
+
} else {
|
|
223
|
+
trackSkip("Rust Core Tests", "crates/core/Cargo.toml not found in project");
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
trackSkip("Rust Core Tests", "skipped by flag");
|
|
227
|
+
}
|
|
228
|
+
|
|
216
229
|
// ━━━ Summary Table ━━━
|
|
217
230
|
const totalMs = totalTimer();
|
|
218
231
|
console.log(`\n${BOLD}${CYAN}━━━ Verification Summary ━━━${RESET}`);
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* visual_audit.js — Visual Design & UI Engineering Auditor
|
|
4
|
+
*
|
|
5
|
+
* Verifies OKLCH color compliance, surface depth layering (hairline borders, ambient shadows),
|
|
6
|
+
* and interactive state polish on UI components and style definitions.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* node .agent/scripts/visual_audit.js .
|
|
10
|
+
* node .agent/scripts/visual_audit.js --file src/components/Button.tsx
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
"use strict";
|
|
14
|
+
|
|
15
|
+
const fs = require("fs");
|
|
16
|
+
const path = require("path");
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
GREEN,
|
|
20
|
+
YELLOW,
|
|
21
|
+
BOLD,
|
|
22
|
+
DIM,
|
|
23
|
+
RESET,
|
|
24
|
+
banner,
|
|
25
|
+
timer,
|
|
26
|
+
formatMs,
|
|
27
|
+
} = require("./_colors");
|
|
28
|
+
|
|
29
|
+
const { walkDir, SOURCE_EXTENSIONS } = require("./_utils");
|
|
30
|
+
|
|
31
|
+
function auditFile(filePath) {
|
|
32
|
+
let content;
|
|
33
|
+
try {
|
|
34
|
+
content = fs.readFileSync(filePath, "utf8");
|
|
35
|
+
} catch {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const issues = [];
|
|
40
|
+
const lines = content.split("\n");
|
|
41
|
+
|
|
42
|
+
for (let i = 0; i < lines.length; i++) {
|
|
43
|
+
const line = lines[i];
|
|
44
|
+
|
|
45
|
+
// Check for hardcoded hex colors when oklch or CSS variables are expected
|
|
46
|
+
if (/#([0-9a-fA-F]{3}){1,2}\b/.test(line) && !line.includes("// ignore-color")) {
|
|
47
|
+
issues.push({
|
|
48
|
+
line: i + 1,
|
|
49
|
+
rule: "oklch-color",
|
|
50
|
+
message: `Hardcoded hex color found: "${line.trim()}". Prefer OKLCH or design token CSS variables.`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return issues;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function main() {
|
|
59
|
+
const cwd = process.cwd();
|
|
60
|
+
const elapsed = timer();
|
|
61
|
+
|
|
62
|
+
console.log(banner("visual_audit.js", { Target: cwd }));
|
|
63
|
+
|
|
64
|
+
const files = walkDir(cwd, { extensions: SOURCE_EXTENSIONS });
|
|
65
|
+
let totalIssues = 0;
|
|
66
|
+
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
const issues = auditFile(file);
|
|
69
|
+
if (issues.length > 0) {
|
|
70
|
+
totalIssues += issues.length;
|
|
71
|
+
const rel = path.relative(cwd, file);
|
|
72
|
+
console.log(`\n 📄 ${BOLD}${rel}${RESET}`);
|
|
73
|
+
for (const iss of issues) {
|
|
74
|
+
console.log(` ${YELLOW}⚠ line ${iss.line}:${RESET} ${iss.message}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
console.log(`\n ${DIM}Audited ${files.length} files in ${formatMs(elapsed())}${RESET}`);
|
|
80
|
+
|
|
81
|
+
if (totalIssues === 0) {
|
|
82
|
+
console.log(` ${GREEN}${BOLD}✔ Visual audit complete — zero design violations found.${RESET}\n`);
|
|
83
|
+
} else {
|
|
84
|
+
console.log(` ${YELLOW}${BOLD}⚠ Visual audit completed with ${totalIssues} advisory issue(s).${RESET}\n`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
module.exports = { auditFile };
|
|
89
|
+
|
|
90
|
+
if (require.main === module) {
|
|
91
|
+
main();
|
|
92
|
+
}
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 12-principles-of-animation
|
|
3
3
|
description: Application of Disney's 12 Principles of Animation (Squash & Stretch, Anticipation, Staging, Follow Through, Slow In & Slow Out, Arc, Secondary Action, Timing, Exaggeration, Solid Drawing, Appeal) to modern web UI motion.
|
|
4
|
-
version:
|
|
5
|
-
last-updated: 2026-07-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
last-updated: 2026-07-30
|
|
6
|
+
skills:
|
|
7
|
+
- motion-engineering
|
|
8
|
+
- 60fps-animation
|
|
9
|
+
- accessible-animation
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# 12 Principles of Animation — Web UI Motion Theory
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Mandatory Pre-Flight Context Inspection
|
|
21
|
+
|
|
22
|
+
Before applying animation principles to web components, you MUST inspect:
|
|
23
|
+
1. Target interaction pattern → Identify applicability of Squash & Stretch, Anticipation, Slow In/Out, or Follow Through
|
|
24
|
+
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
|
+
3. Staging Rules (Section 31) → Direct user focus with sequential motion rather than competing simultaneous animations
|
|
26
|
+
|
|
18
27
|
Translate Disney's 12 classic principles of animation into modern CSS, Web API, and Framer Motion code patterns.
|
|
19
28
|
|
|
20
29
|
---
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 60fps-animation
|
|
3
3
|
description: Web animation performance guidance for avoiding layout thrashing, achieving 60/120fps motion, and using GPU compositor-friendly properties (transform, opacity).
|
|
4
|
-
version:
|
|
5
|
-
last-updated: 2026-07-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
last-updated: 2026-07-30
|
|
6
|
+
skills:
|
|
7
|
+
- motion-engineering
|
|
8
|
+
- accessible-animation
|
|
9
|
+
- fixing-motion-performance
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# 60fps Animation — GPU Compositor & High-Performance Motion
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Mandatory Pre-Flight Context Inspection
|
|
21
|
+
|
|
22
|
+
Before writing animation CSS or JS, you MUST inspect:
|
|
23
|
+
1. Target animated properties → Strictly enforce GPU compositor-only properties (`transform`, `opacity`) and ban layout-triggering properties (`width`, `height`, `top`, `left`)
|
|
24
|
+
2. Scale Math Replacement (Section 29) → Use `transform: scaleX(2)` instead of animating `width`
|
|
25
|
+
3. `will-change` VRAM Management (Section 45) → Apply `will-change` dynamically during active animation and remove upon completion
|
|
26
|
+
|
|
18
27
|
Eliminate jank, layout thrashing, and frame drops to achieve locked 60fps / 120fps UI animations.
|
|
19
28
|
|
|
20
29
|
---
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: accessible-animation
|
|
3
3
|
description: Tiered reduced-motion patterns for CSS, GSAP, Framer Motion, Lenis, and View Transitions API to ensure full WCAG 2.2 accessibility compliance for motion.
|
|
4
|
-
version:
|
|
5
|
-
last-updated: 2026-07-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
last-updated: 2026-07-30
|
|
6
|
+
skills:
|
|
7
|
+
- 60fps-animation
|
|
8
|
+
- motion-engineering
|
|
9
|
+
- framer-motion-expert
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# Accessible Animation — Tiered Reduced-Motion Patterns
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Mandatory Pre-Flight Context Inspection
|
|
21
|
+
|
|
22
|
+
Before implementing UI animation code, you MUST inspect:
|
|
23
|
+
1. CSS stylesheets → Verify presence of `@media (prefers-reduced-motion: reduce)` rules
|
|
24
|
+
2. Framer Motion / GSAP components → Query `useReducedMotion()` or `matchMedia('(prefers-reduced-motion: reduce)')`
|
|
25
|
+
3. Vestibular Trigger Replacement (Section 57) → Replace parallax scroll and 3D rotations with instant opacity cross-fades (`0 -> 1`)
|
|
26
|
+
|
|
18
27
|
Ensure UI motion respects user accessibility preferences (`prefers-reduced-motion: reduce`) without stripping functional state updates.
|
|
19
28
|
|
|
20
29
|
---
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: adapt
|
|
3
3
|
description: Adapt designs across breakpoints, devices, platform constraints, touch vs mouse input, and container queries. Use when making a UI responsive or optimizing for mobile/tablet.
|
|
4
|
-
version:
|
|
5
|
-
last-updated: 2026-07-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
version: 3.0.0
|
|
5
|
+
last-updated: 2026-07-30
|
|
6
|
+
skills:
|
|
7
|
+
- mobile-design
|
|
8
|
+
- building-native-ui
|
|
9
|
+
- tailwind-patterns
|
|
10
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# Adapt — Responsive Adaptation & Container Queries
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Mandatory Pre-Flight Context Inspection
|
|
21
|
+
|
|
22
|
+
Before engineering responsive layouts or cross-device UIs, you MUST inspect:
|
|
23
|
+
1. Container Queries (`@container`) over Viewport Media Queries (Section 24) → Adapt component layouts based on parent container width (`container-type: inline-size`)
|
|
24
|
+
2. Touch Target Sizing (Section 39) → Ensure interactive controls meet min `44x44px` target size on touch devices
|
|
25
|
+
3. Fluid Clamp Scaling (Section 45) → Use `clamp()` for smooth fluid typography and spacing without abrupt media query jumps
|
|
26
|
+
|
|
18
27
|
Architect UIs that adapt fluidly to screen dimensions, container boundaries, input devices (touch vs pointer), and orientation.
|
|
19
28
|
|
|
20
29
|
---
|
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: advanced-rag-pipelines
|
|
3
3
|
description: Production-grade Retrieval-Augmented Generation (RAG) mastery. Semantic chunking, Hybrid Search (Dense + Sparse/BM25), Cross-Encoder Reranking, and architecture-agnostic vector database management.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
5
|
+
version: 3.0.0
|
|
6
|
+
last-updated: 2026-07-30
|
|
7
|
+
skills:
|
|
8
|
+
- llm-engineering
|
|
9
|
+
- ai-prompt-injection-defense
|
|
10
|
+
- database-design
|
|
11
|
+
scripts-binding:
|
|
12
|
+
- .agent/scripts/lint_runner.js
|
|
13
|
+
- .agent/scripts/verify_all.js
|
|
7
14
|
---
|
|
8
15
|
|
|
9
16
|
# Advanced RAG Pipelines (Production AI Data)
|
|
10
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Mandatory Pre-Flight Context Inspection
|
|
21
|
+
|
|
22
|
+
Before building RAG pipelines or vector search components, you MUST inspect:
|
|
23
|
+
1. Hybrid Search Requirement (Section 16) → Always combine Dense Vector Search with Sparse BM25 Search to catch exact keyword matches (IDs, versions)
|
|
24
|
+
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
|
+
3. Context XML Framing (Section 59) → Wrap retrieved chunks inside explicit `<context>` XML tags in the prompt to prevent indirect prompt injection
|
|
26
|
+
|
|
27
|
+
# Advanced RAG Pipelines (Production AI Data)
|
|
28
|
+
|
|
11
29
|
You are an expert in building production-grade Retrieval-Augmented Generation (RAG) data pipelines. You understand that naive RAG (fixed chunking + Cosine similarity) fails in production. You architect systems that retrieve context with high precision using hybrid search, reranking, and semantic strategies.
|
|
12
30
|
|
|
13
31
|
## 1. Core Principles
|