tribunal-kit 9.0.2 → 9.2.1
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/agents/backend-specialist.md +1 -1
- package/.agent/agents/code-archaeologist.md +1 -1
- package/.agent/agents/database-architect.md +1 -1
- package/.agent/agents/debugger.md +1 -1
- package/.agent/agents/devops-engineer.md +1 -1
- package/.agent/agents/documentation-writer.md +1 -1
- package/.agent/agents/explorer-agent.md +1 -1
- package/.agent/agents/game-developer.md +1 -1
- package/.agent/agents/minimalist-reviewer.md +1 -1
- package/.agent/agents/mobile-developer.md +1 -1
- package/.agent/agents/orchestrator.md +42 -2
- package/.agent/agents/penetration-tester.md +1 -1
- package/.agent/agents/performance-optimizer.md +1 -1
- package/.agent/agents/product-manager.md +1 -1
- package/.agent/agents/product-owner.md +1 -1
- package/.agent/agents/project-planner.md +1 -1
- package/.agent/agents/qa-automation-engineer.md +1 -1
- package/.agent/agents/seo-specialist.md +1 -1
- package/.agent/agents/test-engineer.md +1 -1
- package/.agent/routing_index.json +265 -1530
- package/.agent/scripts/browser_audit.js +13 -5
- package/.agent/scripts/bundle_analyzer.js +7 -3
- package/.agent/scripts/dependency_analyzer.js +16 -16
- package/.agent/scripts/inner_loop_validator.js +1 -1
- package/.agent/scripts/payload_schemas.js +18 -0
- package/.agent/scripts/pipeline_engine.js +3 -2
- package/.agent/scripts/schema_validator.js +2 -1
- package/.agent/scripts/swarm_dispatcher.js +29 -2
- package/.agent/scripts/test_runner.js +1 -2
- package/.agent/skills/12-principles-of-animation/SKILL.md +21 -21
- package/.agent/skills/60fps-animation/SKILL.md +24 -22
- package/.agent/skills/accessible-animation/SKILL.md +29 -31
- package/.agent/skills/adapt/SKILL.md +21 -21
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +21 -21
- package/.agent/skills/agent-organizer/SKILL.md +21 -21
- package/.agent/skills/agentic-patterns/SKILL.md +21 -21
- package/.agent/skills/agentic-workflows-2026/SKILL.md +21 -20
- package/.agent/skills/ai-app-hardening/SKILL.md +21 -20
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +21 -21
- package/.agent/skills/animation-on-scroll/SKILL.md +36 -32
- package/.agent/skills/animation-systems/SKILL.md +35 -35
- package/.agent/skills/antfu-conventions/SKILL.md +21 -21
- package/.agent/skills/api-patterns/SKILL.md +21 -21
- package/.agent/skills/api-security-auditor/SKILL.md +21 -21
- package/.agent/skills/app-builder/SKILL.md +21 -21
- package/.agent/skills/appflow-wireframe/SKILL.md +21 -23
- package/.agent/skills/apple-design/SKILL.md +21 -21
- package/.agent/skills/architecture/SKILL.md +21 -21
- package/.agent/skills/audit-and-fix/SKILL.md +21 -21
- package/.agent/skills/authentication-best-practices/SKILL.md +21 -21
- package/.agent/skills/backend-security-expert/SKILL.md +21 -21
- package/.agent/skills/baseline-ui/SKILL.md +21 -21
- package/.agent/skills/bash-linux/SKILL.md +20 -20
- package/.agent/skills/behavioral-modes/SKILL.md +21 -21
- package/.agent/skills/better-colors/SKILL.md +21 -21
- package/.agent/skills/better-typography/SKILL.md +21 -20
- package/.agent/skills/better-ui/SKILL.md +38 -26
- package/.agent/skills/bolder/SKILL.md +21 -21
- package/.agent/skills/brainstorming/SKILL.md +21 -20
- package/.agent/skills/browser-audit/SKILL.md +35 -28
- package/.agent/skills/browser-native-ai/SKILL.md +21 -21
- package/.agent/skills/build-primitive/SKILL.md +21 -21
- package/.agent/skills/building-native-ui/SKILL.md +21 -21
- package/.agent/skills/cicd-pro/SKILL.md +20 -20
- package/.agent/skills/clarify/SKILL.md +21 -21
- package/.agent/skills/clean-code/SKILL.md +21 -21
- package/.agent/skills/cloud-architect/SKILL.md +20 -20
- package/.agent/skills/cobejs/SKILL.md +21 -21
- package/.agent/skills/code-review-checklist/SKILL.md +21 -21
- package/.agent/skills/codebase-design/SKILL.md +21 -21
- package/.agent/skills/colorize/SKILL.md +21 -21
- package/.agent/skills/compact-landing/SKILL.md +21 -21
- package/.agent/skills/company-logos/SKILL.md +21 -21
- package/.agent/skills/config-validator/SKILL.md +21 -21
- package/.agent/skills/containerization-pro/SKILL.md +20 -20
- package/.agent/skills/context-engineering-pro/SKILL.md +21 -20
- package/.agent/skills/create-design-md/SKILL.md +21 -21
- package/.agent/skills/critique/SKILL.md +21 -21
- package/.agent/skills/csharp-developer/SKILL.md +21 -21
- package/.agent/skills/data-validation-schemas/SKILL.md +21 -21
- package/.agent/skills/database-design/SKILL.md +21 -21
- package/.agent/skills/delight/SKILL.md +21 -21
- package/.agent/skills/deployment-procedures/SKILL.md +20 -20
- package/.agent/skills/design-lab/SKILL.md +22 -22
- package/.agent/skills/devops-engineer/SKILL.md +20 -20
- package/.agent/skills/devops-incident-responder/SKILL.md +20 -20
- package/.agent/skills/diagnosing-bugs/SKILL.md +22 -22
- package/.agent/skills/distill/SKILL.md +21 -21
- package/.agent/skills/documentation-templates/SKILL.md +21 -21
- package/.agent/skills/domain-modeling/SKILL.md +21 -21
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +21 -20
- package/.agent/skills/edge-ai-mobile/SKILL.md +21 -20
- package/.agent/skills/edge-computing/SKILL.md +21 -21
- package/.agent/skills/emil-design-eng/SKILL.md +21 -21
- package/.agent/skills/error-resilience/SKILL.md +21 -21
- package/.agent/skills/expo-router-v4/SKILL.md +21 -20
- package/.agent/skills/extract-design-system/SKILL.md +21 -21
- package/.agent/skills/fabel-protocol/SKILL.md +21 -21
- package/.agent/skills/fixing-accessibility/SKILL.md +21 -21
- package/.agent/skills/fixing-metadata/SKILL.md +21 -21
- package/.agent/skills/fixing-motion-performance/SKILL.md +21 -21
- package/.agent/skills/framer-motion-expert/SKILL.md +21 -21
- package/.agent/skills/frontend-design/SKILL.md +21 -21
- package/.agent/skills/frontend-security-expert/SKILL.md +21 -21
- package/.agent/skills/game-design-expert/SKILL.md +21 -21
- package/.agent/skills/game-engineering-expert/SKILL.md +21 -21
- package/.agent/skills/generative-ui-expert/SKILL.md +21 -21
- package/.agent/skills/geo-fundamentals/SKILL.md +21 -21
- package/.agent/skills/git-pro/SKILL.md +21 -21
- package/.agent/skills/github-operations/SKILL.md +21 -21
- package/.agent/skills/gpt-taste/SKILL.md +21 -21
- package/.agent/skills/gsap-core/SKILL.md +21 -21
- package/.agent/skills/gsap-frameworks/SKILL.md +21 -21
- package/.agent/skills/gsap-performance/SKILL.md +21 -21
- package/.agent/skills/gsap-plugins/SKILL.md +21 -21
- package/.agent/skills/gsap-react/SKILL.md +21 -21
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +21 -21
- package/.agent/skills/gsap-timeline/SKILL.md +21 -21
- package/.agent/skills/gsap-utils/SKILL.md +21 -21
- package/.agent/skills/harden/SKILL.md +21 -21
- package/.agent/skills/harness-protocol/SKILL.md +21 -21
- package/.agent/skills/i18n-localization/SKILL.md +21 -21
- package/.agent/skills/impeccable/SKILL.md +21 -21
- package/.agent/skills/improve-codebase-architecture/SKILL.md +21 -21
- package/.agent/skills/improve-ui/SKILL.md +21 -21
- package/.agent/skills/intelligent-routing/SKILL.md +21 -20
- package/.agent/skills/knowledge-graph/SKILL.md +21 -21
- package/.agent/skills/landing-page/SKILL.md +21 -21
- package/.agent/skills/lint-and-validate/SKILL.md +21 -21
- package/.agent/skills/llm-engineering/SKILL.md +21 -21
- package/.agent/skills/local-first/SKILL.md +21 -21
- package/.agent/skills/local-first-architecture/SKILL.md +21 -21
- package/.agent/skills/lottie-animation/SKILL.md +21 -21
- package/.agent/skills/marquee-loop/SKILL.md +21 -21
- package/.agent/skills/masked-reveal/SKILL.md +21 -21
- package/.agent/skills/mcp-builder/SKILL.md +21 -21
- package/.agent/skills/micro-interaction/SKILL.md +39 -32
- package/.agent/skills/mobile-design/SKILL.md +21 -21
- package/.agent/skills/monorepo-management/SKILL.md +21 -21
- package/.agent/skills/morphing-icons/SKILL.md +21 -21
- package/.agent/skills/motion-engineering/SKILL.md +21 -21
- package/.agent/skills/nextjs-react-expert/SKILL.md +21 -21
- package/.agent/skills/nodejs-best-practices/SKILL.md +21 -21
- package/.agent/skills/observability/SKILL.md +21 -21
- package/.agent/skills/opentelemetry-observability/SKILL.md +20 -19
- package/.agent/skills/page-transition-animation/SKILL.md +21 -21
- package/.agent/skills/parallel-agents/SKILL.md +21 -21
- package/.agent/skills/performance-profiling/SKILL.md +21 -21
- package/.agent/skills/plan-writing/SKILL.md +21 -21
- package/.agent/skills/platform-engineer/SKILL.md +20 -20
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +20 -19
- package/.agent/skills/playwright-ai-e2e/SKILL.md +21 -20
- package/.agent/skills/playwright-best-practices/SKILL.md +21 -21
- package/.agent/skills/polish/SKILL.md +21 -21
- package/.agent/skills/powershell-windows/SKILL.md +20 -20
- package/.agent/skills/pricing-page/SKILL.md +21 -21
- package/.agent/skills/product-aware-heuristics/SKILL.md +21 -21
- package/.agent/skills/progressive-blur/SKILL.md +21 -21
- package/.agent/skills/project-idioms/SKILL.md +21 -21
- package/.agent/skills/property-based-testing/SKILL.md +21 -20
- package/.agent/skills/python-patterns/SKILL.md +21 -21
- package/.agent/skills/python-pro/SKILL.md +21 -21
- package/.agent/skills/quieter/SKILL.md +21 -21
- package/.agent/skills/react-doctor/SKILL.md +21 -21
- package/.agent/skills/react-specialist/SKILL.md +21 -21
- package/.agent/skills/readme-builder/SKILL.md +21 -21
- package/.agent/skills/realtime-patterns/SKILL.md +21 -21
- package/.agent/skills/red-team-tactics/SKILL.md +21 -21
- package/.agent/skills/redesign-skill/SKILL.md +21 -21
- package/.agent/skills/review-animations/SKILL.md +21 -21
- package/.agent/skills/rust-pro/SKILL.md +21 -21
- package/.agent/skills/seo-fundamentals/SKILL.md +21 -21
- package/.agent/skills/server-management/SKILL.md +20 -20
- package/.agent/skills/shadcn-ui-expert/SKILL.md +21 -21
- package/.agent/skills/shape/SKILL.md +21 -21
- package/.agent/skills/skill-creator/SKILL.md +28 -21
- package/.agent/skills/soft-skill/SKILL.md +21 -21
- package/.agent/skills/sounds-on-the-web/SKILL.md +21 -21
- package/.agent/skills/sql-pro/SKILL.md +21 -21
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +21 -21
- package/.agent/skills/svg-animation/SKILL.md +21 -21
- package/.agent/skills/swiftui-expert/SKILL.md +21 -21
- package/.agent/skills/swiss-design/SKILL.md +21 -21
- package/.agent/skills/system-design-pro/SKILL.md +21 -21
- package/.agent/skills/systematic-debugging/SKILL.md +22 -21
- package/.agent/skills/systematic-debugging/condition-based-waiting.md +14 -9
- package/.agent/skills/systematic-debugging/defense-in-depth.md +9 -3
- package/.agent/skills/systematic-debugging/root-cause-tracing.md +14 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +21 -21
- package/.agent/skills/taste-skill/SKILL.md +21 -21
- package/.agent/skills/tdd-workflow/SKILL.md +28 -27
- package/.agent/skills/test-result-analyzer/SKILL.md +21 -21
- package/.agent/skills/testing-patterns/SKILL.md +21 -21
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +21 -21
- package/.agent/skills/thinking-protocol/SKILL.md +21 -20
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +21 -21
- package/.agent/skills/transitions-dev/SKILL.md +21 -21
- package/.agent/skills/trend-researcher/SKILL.md +21 -21
- package/.agent/skills/typescript-advanced/SKILL.md +21 -21
- package/.agent/skills/typeset/SKILL.md +21 -21
- package/.agent/skills/ui-reasoning-engine/SKILL.md +21 -21
- package/.agent/skills/ui-skill-packs/SKILL.md +21 -21
- package/.agent/skills/ui-skills-root/SKILL.md +21 -21
- package/.agent/skills/ui-ux-pro-max/SKILL.md +21 -21
- package/.agent/skills/ui-ux-researcher/SKILL.md +21 -21
- package/.agent/skills/vector-search-pgvector/SKILL.md +21 -20
- package/.agent/skills/verification-before-completion/SKILL.md +40 -36
- package/.agent/skills/vue-expert/SKILL.md +21 -21
- package/.agent/skills/vulnerability-scanner/SKILL.md +21 -21
- package/.agent/skills/web-accessibility-auditor/SKILL.md +21 -21
- package/.agent/skills/web-design-guidelines/SKILL.md +21 -21
- package/.agent/skills/web-quality-audit/SKILL.md +21 -21
- package/.agent/skills/webapp-testing/SKILL.md +21 -21
- package/.agent/skills/webgpu-performance/SKILL.md +21 -21
- package/.agent/skills/whimsy-injector/SKILL.md +21 -21
- package/.agent/skills/workflow-optimizer/SKILL.md +21 -21
- package/.agent/skills/zero-trust-passkeys/SKILL.md +21 -20
- package/.agent/templates/DESIGN.md +312 -290
- package/.agent/templates/sdd/task-reviewer-prompt.md +2 -2
- package/.agent/workflows/audit-live.md +4 -3
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/context.md +9 -7
- package/.agent/workflows/minimal.md +3 -2
- package/.agent/workflows/plan.md +1 -1
- package/.agent/workflows/sdd.md +15 -0
- package/.agent/workflows/skill-enhancement-engine.md +11 -11
- package/.agent/workflows/super-prompt.md +25 -24
- package/.agents/skills/12-principles-of-animation/SKILL.md +21 -21
- package/.agents/skills/60fps-animation/SKILL.md +24 -22
- package/.agents/skills/accessible-animation/SKILL.md +29 -31
- package/.agents/skills/adapt/SKILL.md +21 -21
- package/.agents/skills/advanced-rag-pipelines/SKILL.md +21 -21
- package/.agents/skills/agent-organizer/SKILL.md +21 -21
- package/.agents/skills/agentic-patterns/SKILL.md +21 -21
- package/.agents/skills/agentic-workflows-2026/SKILL.md +21 -20
- package/.agents/skills/ai-app-hardening/SKILL.md +21 -20
- package/.agents/skills/ai-prompt-injection-defense/SKILL.md +21 -21
- package/.agents/skills/animation-on-scroll/SKILL.md +36 -32
- package/.agents/skills/animation-systems/SKILL.md +35 -35
- package/.agents/skills/antfu-conventions/SKILL.md +21 -21
- package/.agents/skills/api-patterns/SKILL.md +21 -21
- package/.agents/skills/api-security-auditor/SKILL.md +21 -21
- package/.agents/skills/app-builder/SKILL.md +21 -21
- package/.agents/skills/appflow-wireframe/SKILL.md +21 -23
- package/.agents/skills/apple-design/SKILL.md +21 -21
- package/.agents/skills/architecture/SKILL.md +21 -21
- package/.agents/skills/audit-and-fix/SKILL.md +21 -21
- package/.agents/skills/authentication-best-practices/SKILL.md +21 -21
- package/.agents/skills/backend-security-expert/SKILL.md +21 -21
- package/.agents/skills/baseline-ui/SKILL.md +21 -21
- package/.agents/skills/bash-linux/SKILL.md +20 -20
- package/.agents/skills/behavioral-modes/SKILL.md +21 -21
- package/.agents/skills/better-colors/SKILL.md +21 -21
- package/.agents/skills/better-typography/SKILL.md +21 -20
- package/.agents/skills/better-ui/SKILL.md +38 -26
- package/.agents/skills/bolder/SKILL.md +21 -21
- package/.agents/skills/brainstorming/SKILL.md +21 -20
- package/.agents/skills/browser-audit/SKILL.md +35 -28
- package/.agents/skills/browser-native-ai/SKILL.md +21 -21
- package/.agents/skills/build-primitive/SKILL.md +21 -21
- package/.agents/skills/building-native-ui/SKILL.md +21 -21
- package/.agents/skills/cicd-pro/SKILL.md +20 -20
- package/.agents/skills/clarify/SKILL.md +21 -21
- package/.agents/skills/clean-code/SKILL.md +21 -21
- package/.agents/skills/cloud-architect/SKILL.md +20 -20
- package/.agents/skills/cobejs/SKILL.md +21 -21
- package/.agents/skills/code-review-checklist/SKILL.md +21 -21
- package/.agents/skills/codebase-design/SKILL.md +21 -21
- package/.agents/skills/colorize/SKILL.md +21 -21
- package/.agents/skills/compact-landing/SKILL.md +21 -21
- package/.agents/skills/company-logos/SKILL.md +21 -21
- package/.agents/skills/config-validator/SKILL.md +21 -21
- package/.agents/skills/containerization-pro/SKILL.md +20 -20
- package/.agents/skills/context-engineering-pro/SKILL.md +21 -20
- package/.agents/skills/create-design-md/SKILL.md +21 -21
- package/.agents/skills/critique/SKILL.md +21 -21
- package/.agents/skills/csharp-developer/SKILL.md +21 -21
- package/.agents/skills/data-validation-schemas/SKILL.md +21 -21
- package/.agents/skills/database-design/SKILL.md +21 -21
- package/.agents/skills/delight/SKILL.md +21 -21
- package/.agents/skills/deployment-procedures/SKILL.md +20 -20
- package/.agents/skills/design-lab/SKILL.md +22 -22
- package/.agents/skills/devops-engineer/SKILL.md +20 -20
- package/.agents/skills/devops-incident-responder/SKILL.md +20 -20
- package/.agents/skills/diagnosing-bugs/SKILL.md +22 -22
- package/.agents/skills/distill/SKILL.md +21 -21
- package/.agents/skills/documentation-templates/SKILL.md +21 -21
- package/.agents/skills/domain-modeling/SKILL.md +21 -21
- package/.agents/skills/duckdb-analytical-sql/SKILL.md +21 -20
- package/.agents/skills/edge-ai-mobile/SKILL.md +21 -20
- package/.agents/skills/edge-computing/SKILL.md +21 -21
- package/.agents/skills/emil-design-eng/SKILL.md +21 -21
- package/.agents/skills/error-resilience/SKILL.md +21 -21
- package/.agents/skills/expo-router-v4/SKILL.md +21 -20
- package/.agents/skills/extract-design-system/SKILL.md +21 -21
- package/.agents/skills/fabel-protocol/SKILL.md +21 -21
- package/.agents/skills/fixing-accessibility/SKILL.md +21 -21
- package/.agents/skills/fixing-metadata/SKILL.md +21 -21
- package/.agents/skills/fixing-motion-performance/SKILL.md +21 -21
- package/.agents/skills/framer-motion-expert/SKILL.md +21 -21
- package/.agents/skills/frontend-design/SKILL.md +21 -21
- package/.agents/skills/frontend-security-expert/SKILL.md +21 -21
- package/.agents/skills/game-design-expert/SKILL.md +21 -21
- package/.agents/skills/game-engineering-expert/SKILL.md +21 -21
- package/.agents/skills/generative-ui-expert/SKILL.md +21 -21
- package/.agents/skills/geo-fundamentals/SKILL.md +21 -21
- package/.agents/skills/git-pro/SKILL.md +21 -21
- package/.agents/skills/github-operations/SKILL.md +21 -21
- package/.agents/skills/gpt-taste/SKILL.md +21 -21
- package/.agents/skills/gsap-core/SKILL.md +21 -21
- package/.agents/skills/gsap-frameworks/SKILL.md +21 -21
- package/.agents/skills/gsap-performance/SKILL.md +21 -21
- package/.agents/skills/gsap-plugins/SKILL.md +21 -21
- package/.agents/skills/gsap-react/SKILL.md +21 -21
- package/.agents/skills/gsap-scrolltrigger/SKILL.md +21 -21
- package/.agents/skills/gsap-timeline/SKILL.md +21 -21
- package/.agents/skills/gsap-utils/SKILL.md +21 -21
- package/.agents/skills/harden/SKILL.md +21 -21
- package/.agents/skills/harness-protocol/SKILL.md +21 -21
- package/.agents/skills/i18n-localization/SKILL.md +21 -21
- package/.agents/skills/impeccable/SKILL.md +21 -21
- package/.agents/skills/improve-codebase-architecture/SKILL.md +21 -21
- package/.agents/skills/improve-ui/SKILL.md +21 -21
- package/.agents/skills/intelligent-routing/SKILL.md +21 -20
- package/.agents/skills/knowledge-graph/SKILL.md +21 -21
- package/.agents/skills/landing-page/SKILL.md +21 -21
- package/.agents/skills/lint-and-validate/SKILL.md +21 -21
- package/.agents/skills/llm-engineering/SKILL.md +21 -21
- package/.agents/skills/local-first/SKILL.md +21 -21
- package/.agents/skills/local-first-architecture/SKILL.md +21 -21
- package/.agents/skills/lottie-animation/SKILL.md +21 -21
- package/.agents/skills/marquee-loop/SKILL.md +21 -21
- package/.agents/skills/masked-reveal/SKILL.md +21 -21
- package/.agents/skills/mcp-builder/SKILL.md +21 -21
- package/.agents/skills/micro-interaction/SKILL.md +39 -32
- package/.agents/skills/mobile-design/SKILL.md +21 -21
- package/.agents/skills/monorepo-management/SKILL.md +21 -21
- package/.agents/skills/morphing-icons/SKILL.md +21 -21
- package/.agents/skills/motion-engineering/SKILL.md +21 -21
- package/.agents/skills/nextjs-react-expert/SKILL.md +21 -21
- package/.agents/skills/nodejs-best-practices/SKILL.md +21 -21
- package/.agents/skills/observability/SKILL.md +21 -21
- package/.agents/skills/opentelemetry-observability/SKILL.md +20 -19
- package/.agents/skills/page-transition-animation/SKILL.md +21 -21
- package/.agents/skills/parallel-agents/SKILL.md +21 -21
- package/.agents/skills/performance-profiling/SKILL.md +21 -21
- package/.agents/skills/plan-writing/SKILL.md +21 -21
- package/.agents/skills/platform-engineer/SKILL.md +20 -20
- package/.agents/skills/platform-engineering-opentofu/SKILL.md +20 -19
- package/.agents/skills/playwright-ai-e2e/SKILL.md +21 -20
- package/.agents/skills/playwright-best-practices/SKILL.md +21 -21
- package/.agents/skills/polish/SKILL.md +21 -21
- package/.agents/skills/powershell-windows/SKILL.md +20 -20
- package/.agents/skills/pricing-page/SKILL.md +21 -21
- package/.agents/skills/product-aware-heuristics/SKILL.md +21 -21
- package/.agents/skills/progressive-blur/SKILL.md +21 -21
- package/.agents/skills/project-idioms/SKILL.md +21 -21
- package/.agents/skills/property-based-testing/SKILL.md +21 -20
- package/.agents/skills/python-patterns/SKILL.md +21 -21
- package/.agents/skills/python-pro/SKILL.md +21 -21
- package/.agents/skills/quieter/SKILL.md +21 -21
- package/.agents/skills/react-doctor/SKILL.md +21 -21
- package/.agents/skills/react-specialist/SKILL.md +21 -21
- package/.agents/skills/readme-builder/SKILL.md +21 -21
- package/.agents/skills/realtime-patterns/SKILL.md +21 -21
- package/.agents/skills/red-team-tactics/SKILL.md +21 -21
- package/.agents/skills/redesign-skill/SKILL.md +21 -21
- package/.agents/skills/review-animations/SKILL.md +21 -21
- package/.agents/skills/rust-pro/SKILL.md +21 -21
- package/.agents/skills/seo-fundamentals/SKILL.md +21 -21
- package/.agents/skills/server-management/SKILL.md +20 -20
- package/.agents/skills/shadcn-ui-expert/SKILL.md +21 -21
- package/.agents/skills/shape/SKILL.md +21 -21
- package/.agents/skills/skill-creator/SKILL.md +28 -21
- package/.agents/skills/soft-skill/SKILL.md +21 -21
- package/.agents/skills/sounds-on-the-web/SKILL.md +21 -21
- package/.agents/skills/sql-pro/SKILL.md +21 -21
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +21 -21
- package/.agents/skills/svg-animation/SKILL.md +21 -21
- package/.agents/skills/swiftui-expert/SKILL.md +21 -21
- package/.agents/skills/swiss-design/SKILL.md +21 -21
- package/.agents/skills/system-design-pro/SKILL.md +21 -21
- package/.agents/skills/systematic-debugging/SKILL.md +22 -21
- package/.agents/skills/systematic-debugging/condition-based-waiting.md +14 -9
- package/.agents/skills/systematic-debugging/defense-in-depth.md +9 -3
- package/.agents/skills/systematic-debugging/root-cause-tracing.md +14 -0
- package/.agents/skills/tailwind-patterns/SKILL.md +21 -21
- package/.agents/skills/taste-skill/SKILL.md +21 -21
- package/.agents/skills/tdd-workflow/SKILL.md +28 -27
- package/.agents/skills/test-result-analyzer/SKILL.md +21 -21
- package/.agents/skills/testing-patterns/SKILL.md +21 -21
- package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +21 -21
- package/.agents/skills/thinking-protocol/SKILL.md +21 -20
- package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +21 -21
- package/.agents/skills/transitions-dev/SKILL.md +21 -21
- package/.agents/skills/trend-researcher/SKILL.md +21 -21
- package/.agents/skills/typescript-advanced/SKILL.md +21 -21
- package/.agents/skills/typeset/SKILL.md +21 -21
- package/.agents/skills/ui-reasoning-engine/SKILL.md +21 -21
- package/.agents/skills/ui-skill-packs/SKILL.md +21 -21
- package/.agents/skills/ui-skills-root/SKILL.md +21 -21
- package/.agents/skills/ui-ux-pro-max/SKILL.md +21 -21
- package/.agents/skills/ui-ux-researcher/SKILL.md +21 -21
- package/.agents/skills/vector-search-pgvector/SKILL.md +21 -20
- package/.agents/skills/verification-before-completion/SKILL.md +40 -36
- package/.agents/skills/vue-expert/SKILL.md +21 -21
- package/.agents/skills/vulnerability-scanner/SKILL.md +21 -21
- package/.agents/skills/web-accessibility-auditor/SKILL.md +21 -21
- package/.agents/skills/web-design-guidelines/SKILL.md +21 -21
- package/.agents/skills/web-quality-audit/SKILL.md +21 -21
- package/.agents/skills/webapp-testing/SKILL.md +21 -21
- package/.agents/skills/webgpu-performance/SKILL.md +21 -21
- package/.agents/skills/whimsy-injector/SKILL.md +21 -21
- package/.agents/skills/workflow-optimizer/SKILL.md +21 -21
- package/.agents/skills/zero-trust-passkeys/SKILL.md +21 -20
- package/.codex-plugin/plugin.json +1 -5
- package/.kimi-plugin/plugin.json +1 -5
- package/.opencode/INSTALL.md +1 -0
- package/.opencode/plugins/tribunal.js +15 -6
- package/.pi/extensions/tribunal.ts +26 -29
- package/AGENTS.md +15 -13
- package/CLAUDE.md +3 -1
- package/README.md +542 -535
- package/bin/adapter-install.js +263 -263
- package/bin/mcp-server.js +17 -12
- package/bin/wrapper.js +12 -1
- package/dist/tui/banner.js +77 -77
- package/gemini-extension.json +1 -1
- package/package.json +7 -7
- package/plugin.json +1 -1
- package/scripts/apply-version.js +2 -2
- package/scripts/audit_skill_sdo.js +6 -4
- package/scripts/context_compiler.js +207 -83
- package/scripts/modernize_skills.js +25 -11
- package/scripts/package-cores.js +4 -1
- package/scripts/skill_enhancement_engine.js +211 -50
- package/scripts/telemetry_gc.js +154 -0
- package/skills/12-principles-of-animation/SKILL.md +21 -21
- package/skills/60fps-animation/SKILL.md +24 -22
- package/skills/accessible-animation/SKILL.md +29 -31
- package/skills/adapt/SKILL.md +21 -21
- package/skills/advanced-rag-pipelines/SKILL.md +21 -21
- package/skills/agent-organizer/SKILL.md +21 -21
- package/skills/agentic-patterns/SKILL.md +21 -21
- package/skills/agentic-workflows-2026/SKILL.md +21 -20
- package/skills/ai-app-hardening/SKILL.md +21 -20
- package/skills/ai-prompt-injection-defense/SKILL.md +21 -21
- package/skills/animation-on-scroll/SKILL.md +36 -32
- package/skills/animation-systems/SKILL.md +35 -35
- package/skills/antfu-conventions/SKILL.md +21 -21
- package/skills/api-patterns/SKILL.md +21 -21
- package/skills/api-security-auditor/SKILL.md +21 -21
- package/skills/app-builder/SKILL.md +21 -21
- package/skills/appflow-wireframe/SKILL.md +21 -23
- package/skills/apple-design/SKILL.md +21 -21
- package/skills/architecture/SKILL.md +21 -21
- package/skills/audit-and-fix/SKILL.md +21 -21
- package/skills/authentication-best-practices/SKILL.md +21 -21
- package/skills/backend-security-expert/SKILL.md +21 -21
- package/skills/baseline-ui/SKILL.md +21 -21
- package/skills/bash-linux/SKILL.md +20 -20
- package/skills/behavioral-modes/SKILL.md +21 -21
- package/skills/better-colors/SKILL.md +21 -21
- package/skills/better-typography/SKILL.md +21 -20
- package/skills/better-ui/SKILL.md +38 -26
- package/skills/bolder/SKILL.md +21 -21
- package/skills/brainstorming/SKILL.md +21 -20
- package/skills/browser-audit/SKILL.md +35 -28
- package/skills/browser-native-ai/SKILL.md +21 -21
- package/skills/build-primitive/SKILL.md +21 -21
- package/skills/building-native-ui/SKILL.md +21 -21
- package/skills/cicd-pro/SKILL.md +20 -20
- package/skills/clarify/SKILL.md +21 -21
- package/skills/clean-code/SKILL.md +21 -21
- package/skills/cloud-architect/SKILL.md +20 -20
- package/skills/cobejs/SKILL.md +21 -21
- package/skills/code-review-checklist/SKILL.md +21 -21
- package/skills/codebase-design/SKILL.md +21 -21
- package/skills/colorize/SKILL.md +21 -21
- package/skills/compact-landing/SKILL.md +21 -21
- package/skills/company-logos/SKILL.md +21 -21
- package/skills/config-validator/SKILL.md +21 -21
- package/skills/containerization-pro/SKILL.md +20 -20
- package/skills/context-engineering-pro/SKILL.md +21 -20
- package/skills/create-design-md/SKILL.md +21 -21
- package/skills/critique/SKILL.md +21 -21
- package/skills/csharp-developer/SKILL.md +21 -21
- package/skills/data-validation-schemas/SKILL.md +21 -21
- package/skills/database-design/SKILL.md +21 -21
- package/skills/delight/SKILL.md +21 -21
- package/skills/deployment-procedures/SKILL.md +20 -20
- package/skills/design-lab/SKILL.md +22 -22
- package/skills/devops-engineer/SKILL.md +20 -20
- package/skills/devops-incident-responder/SKILL.md +20 -20
- package/skills/diagnosing-bugs/SKILL.md +22 -22
- package/skills/distill/SKILL.md +21 -21
- package/skills/documentation-templates/SKILL.md +21 -21
- package/skills/domain-modeling/SKILL.md +21 -21
- package/skills/duckdb-analytical-sql/SKILL.md +21 -20
- package/skills/edge-ai-mobile/SKILL.md +21 -20
- package/skills/edge-computing/SKILL.md +21 -21
- package/skills/emil-design-eng/SKILL.md +21 -21
- package/skills/error-resilience/SKILL.md +21 -21
- package/skills/expo-router-v4/SKILL.md +21 -20
- package/skills/extract-design-system/SKILL.md +21 -21
- package/skills/fabel-protocol/SKILL.md +21 -21
- package/skills/fixing-accessibility/SKILL.md +21 -21
- package/skills/fixing-metadata/SKILL.md +21 -21
- package/skills/fixing-motion-performance/SKILL.md +21 -21
- package/skills/framer-motion-expert/SKILL.md +21 -21
- package/skills/frontend-design/SKILL.md +21 -21
- package/skills/frontend-security-expert/SKILL.md +21 -21
- package/skills/game-design-expert/SKILL.md +21 -21
- package/skills/game-engineering-expert/SKILL.md +21 -21
- package/skills/generative-ui-expert/SKILL.md +21 -21
- package/skills/geo-fundamentals/SKILL.md +21 -21
- package/skills/git-pro/SKILL.md +21 -21
- package/skills/github-operations/SKILL.md +21 -21
- package/skills/gpt-taste/SKILL.md +21 -21
- package/skills/gsap-core/SKILL.md +21 -21
- package/skills/gsap-frameworks/SKILL.md +21 -21
- package/skills/gsap-performance/SKILL.md +21 -21
- package/skills/gsap-plugins/SKILL.md +21 -21
- package/skills/gsap-react/SKILL.md +21 -21
- package/skills/gsap-scrolltrigger/SKILL.md +21 -21
- package/skills/gsap-timeline/SKILL.md +21 -21
- package/skills/gsap-utils/SKILL.md +21 -21
- package/skills/harden/SKILL.md +21 -21
- package/skills/harness-protocol/SKILL.md +21 -21
- package/skills/i18n-localization/SKILL.md +21 -21
- package/skills/impeccable/SKILL.md +21 -21
- package/skills/improve-codebase-architecture/SKILL.md +21 -21
- package/skills/improve-ui/SKILL.md +21 -21
- package/skills/intelligent-routing/SKILL.md +21 -20
- package/skills/knowledge-graph/SKILL.md +21 -21
- package/skills/landing-page/SKILL.md +21 -21
- package/skills/lint-and-validate/SKILL.md +21 -21
- package/skills/llm-engineering/SKILL.md +21 -21
- package/skills/local-first/SKILL.md +21 -21
- package/skills/local-first-architecture/SKILL.md +21 -21
- package/skills/lottie-animation/SKILL.md +21 -21
- package/skills/marquee-loop/SKILL.md +21 -21
- package/skills/masked-reveal/SKILL.md +21 -21
- package/skills/mcp-builder/SKILL.md +21 -21
- package/skills/micro-interaction/SKILL.md +39 -32
- package/skills/mobile-design/SKILL.md +21 -21
- package/skills/monorepo-management/SKILL.md +21 -21
- package/skills/morphing-icons/SKILL.md +21 -21
- package/skills/motion-engineering/SKILL.md +21 -21
- package/skills/nextjs-react-expert/SKILL.md +21 -21
- package/skills/nodejs-best-practices/SKILL.md +21 -21
- package/skills/observability/SKILL.md +21 -21
- package/skills/opentelemetry-observability/SKILL.md +20 -19
- package/skills/page-transition-animation/SKILL.md +21 -21
- package/skills/parallel-agents/SKILL.md +21 -21
- package/skills/performance-profiling/SKILL.md +21 -21
- package/skills/plan-writing/SKILL.md +21 -21
- package/skills/platform-engineer/SKILL.md +20 -20
- package/skills/platform-engineering-opentofu/SKILL.md +20 -19
- package/skills/playwright-ai-e2e/SKILL.md +21 -20
- package/skills/playwright-best-practices/SKILL.md +21 -21
- package/skills/polish/SKILL.md +21 -21
- package/skills/powershell-windows/SKILL.md +20 -20
- package/skills/pricing-page/SKILL.md +21 -21
- package/skills/product-aware-heuristics/SKILL.md +21 -21
- package/skills/progressive-blur/SKILL.md +21 -21
- package/skills/project-idioms/SKILL.md +21 -21
- package/skills/property-based-testing/SKILL.md +21 -20
- package/skills/python-patterns/SKILL.md +21 -21
- package/skills/python-pro/SKILL.md +21 -21
- package/skills/quieter/SKILL.md +21 -21
- package/skills/react-doctor/SKILL.md +21 -21
- package/skills/react-specialist/SKILL.md +21 -21
- package/skills/readme-builder/SKILL.md +21 -21
- package/skills/realtime-patterns/SKILL.md +21 -21
- package/skills/red-team-tactics/SKILL.md +21 -21
- package/skills/redesign-skill/SKILL.md +21 -21
- package/skills/review-animations/SKILL.md +21 -21
- package/skills/rust-pro/SKILL.md +21 -21
- package/skills/seo-fundamentals/SKILL.md +21 -21
- package/skills/server-management/SKILL.md +20 -20
- package/skills/shadcn-ui-expert/SKILL.md +21 -21
- package/skills/shape/SKILL.md +21 -21
- package/skills/skill-creator/SKILL.md +28 -21
- package/skills/soft-skill/SKILL.md +21 -21
- package/skills/sounds-on-the-web/SKILL.md +21 -21
- package/skills/sql-pro/SKILL.md +21 -21
- package/skills/supabase-postgres-best-practices/SKILL.md +21 -21
- package/skills/svg-animation/SKILL.md +21 -21
- package/skills/swiftui-expert/SKILL.md +21 -21
- package/skills/swiss-design/SKILL.md +21 -21
- package/skills/system-design-pro/SKILL.md +21 -21
- package/skills/systematic-debugging/SKILL.md +22 -21
- package/skills/systematic-debugging/condition-based-waiting.md +14 -9
- package/skills/systematic-debugging/defense-in-depth.md +9 -3
- package/skills/systematic-debugging/root-cause-tracing.md +14 -0
- package/skills/tailwind-patterns/SKILL.md +21 -21
- package/skills/taste-skill/SKILL.md +21 -21
- package/skills/tdd-workflow/SKILL.md +28 -27
- package/skills/test-result-analyzer/SKILL.md +21 -21
- package/skills/testing-patterns/SKILL.md +21 -21
- package/skills/thermo-nuclear-code-quality-review/SKILL.md +21 -21
- package/skills/thinking-protocol/SKILL.md +21 -20
- package/skills/to-spring-or-not-to-spring/SKILL.md +21 -21
- package/skills/transitions-dev/SKILL.md +21 -21
- package/skills/trend-researcher/SKILL.md +21 -21
- package/skills/typescript-advanced/SKILL.md +21 -21
- package/skills/typeset/SKILL.md +21 -21
- package/skills/ui-reasoning-engine/SKILL.md +21 -21
- package/skills/ui-skill-packs/SKILL.md +21 -21
- package/skills/ui-skills-root/SKILL.md +21 -21
- package/skills/ui-ux-pro-max/SKILL.md +21 -21
- package/skills/ui-ux-researcher/SKILL.md +21 -21
- package/skills/vector-search-pgvector/SKILL.md +21 -20
- package/skills/verification-before-completion/SKILL.md +40 -36
- package/skills/vue-expert/SKILL.md +21 -21
- package/skills/vulnerability-scanner/SKILL.md +21 -21
- package/skills/web-accessibility-auditor/SKILL.md +21 -21
- package/skills/web-design-guidelines/SKILL.md +21 -21
- package/skills/web-quality-audit/SKILL.md +21 -21
- package/skills/webapp-testing/SKILL.md +21 -21
- package/skills/webgpu-performance/SKILL.md +21 -21
- package/skills/whimsy-injector/SKILL.md +21 -21
- package/skills/workflow-optimizer/SKILL.md +21 -21
- package/skills/zero-trust-passkeys/SKILL.md +21 -20
|
@@ -28,7 +28,7 @@ let C = {
|
|
|
28
28
|
BLUE: '\x1b[94m',
|
|
29
29
|
BOLD: '\x1b[1m',
|
|
30
30
|
DIM: '\x1b[2m',
|
|
31
|
-
RESET: '\x1b[0m'
|
|
31
|
+
RESET: '\x1b[0m',
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
try {
|
|
@@ -51,7 +51,10 @@ function computeSha256(content) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
function computeInterfaceHash(signatures) {
|
|
54
|
-
const text = signatures
|
|
54
|
+
const text = signatures
|
|
55
|
+
.map(s => `${s.kind}:${s.name}:${s.signature}`)
|
|
56
|
+
.sort()
|
|
57
|
+
.join('\n');
|
|
55
58
|
return crypto.createHash('sha256').update(text, 'utf8').digest('hex').substring(0, 16);
|
|
56
59
|
}
|
|
57
60
|
|
|
@@ -81,7 +84,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
81
84
|
) {
|
|
82
85
|
landmines.push({
|
|
83
86
|
line: idx + 1,
|
|
84
|
-
content: trimmed
|
|
87
|
+
content: trimmed,
|
|
85
88
|
});
|
|
86
89
|
}
|
|
87
90
|
});
|
|
@@ -92,51 +95,61 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
92
95
|
const trimmed = line.trim();
|
|
93
96
|
|
|
94
97
|
// Imports
|
|
95
|
-
const importMatch = trimmed.match(
|
|
98
|
+
const importMatch = trimmed.match(
|
|
99
|
+
/^import\s+(?:type\s+)?(?:(.+?)\s+from\s+)?['"]([^'"]+)['"]/,
|
|
100
|
+
);
|
|
96
101
|
if (importMatch) {
|
|
97
102
|
imports.push({
|
|
98
103
|
source: importMatch[2],
|
|
99
104
|
specifiers: importMatch[1] ? importMatch[1].trim() : '*',
|
|
100
|
-
line: idx + 1
|
|
105
|
+
line: idx + 1,
|
|
101
106
|
});
|
|
102
107
|
}
|
|
103
|
-
const requireMatch = trimmed.match(
|
|
108
|
+
const requireMatch = trimmed.match(
|
|
109
|
+
/(?:const|let|var)\s+(.+?)\s*=\s*require\(['"]([^'"]+)['"]\)/,
|
|
110
|
+
);
|
|
104
111
|
if (requireMatch) {
|
|
105
112
|
imports.push({
|
|
106
113
|
source: requireMatch[2],
|
|
107
114
|
specifiers: requireMatch[1].trim(),
|
|
108
|
-
line: idx + 1
|
|
115
|
+
line: idx + 1,
|
|
109
116
|
});
|
|
110
117
|
}
|
|
111
118
|
|
|
112
119
|
// Exports
|
|
113
|
-
const exportFunc = trimmed.match(
|
|
120
|
+
const exportFunc = trimmed.match(
|
|
121
|
+
/^export\s+(?:default\s+)?(?:async\s+)?function\s+(\w+)\s*(\(.*?\))/,
|
|
122
|
+
);
|
|
114
123
|
if (exportFunc) {
|
|
115
124
|
exports.push({
|
|
116
125
|
kind: 'function',
|
|
117
126
|
name: exportFunc[1],
|
|
118
127
|
signature: `function ${exportFunc[1]}${exportFunc[2]}`,
|
|
119
|
-
line: idx + 1
|
|
128
|
+
line: idx + 1,
|
|
120
129
|
});
|
|
121
130
|
}
|
|
122
131
|
|
|
123
|
-
const exportConst = trimmed.match(
|
|
132
|
+
const exportConst = trimmed.match(
|
|
133
|
+
/^export\s+const\s+(\w+)(?:\s*:\s*([^=]+))?\s*=\s*(?:async\s+)?(?:\((.*?)\)|(\w+))\s*=>/,
|
|
134
|
+
);
|
|
124
135
|
if (exportConst) {
|
|
125
136
|
exports.push({
|
|
126
137
|
kind: 'arrow_function',
|
|
127
138
|
name: exportConst[1],
|
|
128
139
|
signature: `const ${exportConst[1]}: (${exportConst[3] || exportConst[4] || ''}) => ...`,
|
|
129
|
-
line: idx + 1
|
|
140
|
+
line: idx + 1,
|
|
130
141
|
});
|
|
131
142
|
}
|
|
132
143
|
|
|
133
|
-
const exportClass = trimmed.match(
|
|
144
|
+
const exportClass = trimmed.match(
|
|
145
|
+
/^export\s+(?:default\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/,
|
|
146
|
+
);
|
|
134
147
|
if (exportClass) {
|
|
135
148
|
exports.push({
|
|
136
149
|
kind: 'class',
|
|
137
150
|
name: exportClass[1],
|
|
138
151
|
signature: `class ${exportClass[1]}${exportClass[2] ? ' extends ' + exportClass[2] : ''}`,
|
|
139
|
-
line: idx + 1
|
|
152
|
+
line: idx + 1,
|
|
140
153
|
});
|
|
141
154
|
}
|
|
142
155
|
|
|
@@ -147,17 +160,19 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
147
160
|
kind: 'type',
|
|
148
161
|
name: exportType[1],
|
|
149
162
|
signature: trimmed.replace(/;?$/, ''),
|
|
150
|
-
line: idx + 1
|
|
163
|
+
line: idx + 1,
|
|
151
164
|
});
|
|
152
165
|
}
|
|
153
166
|
|
|
154
|
-
const exportInterface = trimmed.match(
|
|
167
|
+
const exportInterface = trimmed.match(
|
|
168
|
+
/^export\s+interface\s+(\w+)(?:<.*?>)?(?:\s+extends\s+.*?)?\s*\{?/,
|
|
169
|
+
);
|
|
155
170
|
if (exportInterface) {
|
|
156
171
|
types.push({
|
|
157
172
|
kind: 'interface',
|
|
158
173
|
name: exportInterface[1],
|
|
159
174
|
signature: trimmed.replace(/\{?$/, '').trim(),
|
|
160
|
-
line: idx + 1
|
|
175
|
+
line: idx + 1,
|
|
161
176
|
});
|
|
162
177
|
}
|
|
163
178
|
});
|
|
@@ -171,18 +186,20 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
171
186
|
imports.push({
|
|
172
187
|
source: useMatch[1].trim(),
|
|
173
188
|
specifiers: useMatch[1].trim(),
|
|
174
|
-
line: idx + 1
|
|
189
|
+
line: idx + 1,
|
|
175
190
|
});
|
|
176
191
|
}
|
|
177
192
|
|
|
178
193
|
// Public Functions
|
|
179
|
-
const pubFn = trimmed.match(
|
|
194
|
+
const pubFn = trimmed.match(
|
|
195
|
+
/^pub(?:\(.*?\))?\s+(?:async\s+)?fn\s+(\w+)(?:<.*?>)?\s*(\(.*?\))(?:\s*->\s*([^{;]+))?/,
|
|
196
|
+
);
|
|
180
197
|
if (pubFn) {
|
|
181
198
|
exports.push({
|
|
182
199
|
kind: 'function',
|
|
183
200
|
name: pubFn[1],
|
|
184
201
|
signature: `pub fn ${pubFn[1]}${pubFn[2]}${pubFn[3] ? ' -> ' + pubFn[3].trim() : ''}`,
|
|
185
|
-
line: idx + 1
|
|
202
|
+
line: idx + 1,
|
|
186
203
|
});
|
|
187
204
|
}
|
|
188
205
|
|
|
@@ -193,7 +210,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
193
210
|
kind: 'struct',
|
|
194
211
|
name: pubStruct[1],
|
|
195
212
|
signature: `pub struct ${pubStruct[1]}`,
|
|
196
|
-
line: idx + 1
|
|
213
|
+
line: idx + 1,
|
|
197
214
|
});
|
|
198
215
|
}
|
|
199
216
|
|
|
@@ -203,7 +220,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
203
220
|
kind: 'enum',
|
|
204
221
|
name: pubEnum[1],
|
|
205
222
|
signature: `pub enum ${pubEnum[1]}`,
|
|
206
|
-
line: idx + 1
|
|
223
|
+
line: idx + 1,
|
|
207
224
|
});
|
|
208
225
|
}
|
|
209
226
|
|
|
@@ -213,7 +230,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
213
230
|
kind: 'trait',
|
|
214
231
|
name: pubTrait[1],
|
|
215
232
|
signature: `pub trait ${pubTrait[1]}`,
|
|
216
|
-
line: idx + 1
|
|
233
|
+
line: idx + 1,
|
|
217
234
|
});
|
|
218
235
|
}
|
|
219
236
|
});
|
|
@@ -226,17 +243,19 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
226
243
|
imports.push({
|
|
227
244
|
source: importMatch[1] || importMatch[2],
|
|
228
245
|
specifiers: importMatch[2],
|
|
229
|
-
line: idx + 1
|
|
246
|
+
line: idx + 1,
|
|
230
247
|
});
|
|
231
248
|
}
|
|
232
249
|
|
|
233
|
-
const defMatch = trimmed.match(
|
|
250
|
+
const defMatch = trimmed.match(
|
|
251
|
+
/^(?:async\s+)?def\s+([a-zA-Z_]\w*)\s*(\(.*?\))(?:\s*->\s*([^:]+))?:/,
|
|
252
|
+
);
|
|
234
253
|
if (defMatch && !defMatch[1].startsWith('_')) {
|
|
235
254
|
exports.push({
|
|
236
255
|
kind: 'function',
|
|
237
256
|
name: defMatch[1],
|
|
238
257
|
signature: `def ${defMatch[1]}${defMatch[2]}${defMatch[3] ? ' -> ' + defMatch[3].trim() : ''}`,
|
|
239
|
-
line: idx + 1
|
|
258
|
+
line: idx + 1,
|
|
240
259
|
});
|
|
241
260
|
}
|
|
242
261
|
|
|
@@ -246,7 +265,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
246
265
|
kind: 'class',
|
|
247
266
|
name: classMatch[1],
|
|
248
267
|
signature: `class ${classMatch[1]}${classMatch[2] ? '(' + classMatch[2] + ')' : ''}`,
|
|
249
|
-
line: idx + 1
|
|
268
|
+
line: idx + 1,
|
|
250
269
|
});
|
|
251
270
|
}
|
|
252
271
|
});
|
|
@@ -260,7 +279,7 @@ function extractFileSkeleton(filePath, rawContent) {
|
|
|
260
279
|
exports,
|
|
261
280
|
types,
|
|
262
281
|
landmines,
|
|
263
|
-
interfaceHash
|
|
282
|
+
interfaceHash,
|
|
264
283
|
};
|
|
265
284
|
}
|
|
266
285
|
|
|
@@ -283,13 +302,21 @@ function findInboundCallers(targetFilePath, exportNames, workspaceRoot = process
|
|
|
283
302
|
if (!token || token.length < 3) continue;
|
|
284
303
|
try {
|
|
285
304
|
const cmd = `git grep -n -I "${token}" -- ":!docs/" ":!node_modules/" ":!dist/" ":!target/" ":!*.lock"`;
|
|
286
|
-
const res = execSync(cmd, {
|
|
305
|
+
const res = execSync(cmd, {
|
|
306
|
+
cwd: workspaceRoot,
|
|
307
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
308
|
+
encoding: 'utf8',
|
|
309
|
+
});
|
|
287
310
|
if (res) grepOutputs.push(...res.split('\n').filter(Boolean));
|
|
288
311
|
} catch {
|
|
289
312
|
// Ripgrep fallback
|
|
290
313
|
try {
|
|
291
314
|
const cmd = `rg -n --no-heading --color=never "${token}" -g "!docs/**" -g "!node_modules/**" -g "!target/**" -g "!dist/**"`;
|
|
292
|
-
const res = execSync(cmd, {
|
|
315
|
+
const res = execSync(cmd, {
|
|
316
|
+
cwd: workspaceRoot,
|
|
317
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
318
|
+
encoding: 'utf8',
|
|
319
|
+
});
|
|
293
320
|
if (res) grepOutputs.push(...res.split('\n').filter(Boolean));
|
|
294
321
|
} catch {
|
|
295
322
|
// Silent catch
|
|
@@ -310,7 +337,11 @@ function findInboundCallers(targetFilePath, exportNames, workspaceRoot = process
|
|
|
310
337
|
const lineContent = parts.slice(2).join(':').trim();
|
|
311
338
|
|
|
312
339
|
// Ignore self-references and context docs
|
|
313
|
-
if (
|
|
340
|
+
if (
|
|
341
|
+
callerFile === relativeTarget ||
|
|
342
|
+
callerFile.includes('.context.md') ||
|
|
343
|
+
callerFile.includes('INDEX.md')
|
|
344
|
+
) {
|
|
314
345
|
continue;
|
|
315
346
|
}
|
|
316
347
|
|
|
@@ -322,7 +353,10 @@ function findInboundCallers(targetFilePath, exportNames, workspaceRoot = process
|
|
|
322
353
|
file: callerFile,
|
|
323
354
|
line: lineNum,
|
|
324
355
|
snippet: lineContent.substring(0, 100),
|
|
325
|
-
isDirectImport:
|
|
356
|
+
isDirectImport:
|
|
357
|
+
lineContent.includes('import') ||
|
|
358
|
+
lineContent.includes('require') ||
|
|
359
|
+
lineContent.includes('use '),
|
|
326
360
|
});
|
|
327
361
|
|
|
328
362
|
if (callers.length >= 12) break; // Cap callers for token efficiency
|
|
@@ -338,25 +372,30 @@ function discoverTests(targetFilePath, workspaceRoot = process.cwd()) {
|
|
|
338
372
|
const baseName = path.basename(targetFilePath);
|
|
339
373
|
const stem = baseName.replace(/\.[^.]+$/, '');
|
|
340
374
|
|
|
341
|
-
const testPatterns = [
|
|
342
|
-
`${stem}.test.`,
|
|
343
|
-
`${stem}.spec.`,
|
|
344
|
-
`${stem}_test.`,
|
|
345
|
-
`test_${stem}.`
|
|
346
|
-
];
|
|
375
|
+
const testPatterns = [`${stem}.test.`, `${stem}.spec.`, `${stem}_test.`, `test_${stem}.`];
|
|
347
376
|
|
|
348
377
|
function walk(dir) {
|
|
349
378
|
if (!fs.existsSync(dir)) return;
|
|
350
379
|
try {
|
|
351
380
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
352
381
|
for (const entry of entries) {
|
|
353
|
-
if (
|
|
382
|
+
if (
|
|
383
|
+
entry.name === 'node_modules' ||
|
|
384
|
+
entry.name === 'target' ||
|
|
385
|
+
entry.name === '.git' ||
|
|
386
|
+
entry.name === 'dist'
|
|
387
|
+
) {
|
|
354
388
|
continue;
|
|
355
389
|
}
|
|
356
390
|
const full = path.join(dir, entry.name);
|
|
357
391
|
if (entry.isDirectory()) {
|
|
358
392
|
// Only walk tests dirs or immediate directories
|
|
359
|
-
if (
|
|
393
|
+
if (
|
|
394
|
+
entry.name === 'tests' ||
|
|
395
|
+
entry.name === '__tests__' ||
|
|
396
|
+
entry.name === 'test' ||
|
|
397
|
+
entry.name === 'crates'
|
|
398
|
+
) {
|
|
360
399
|
walk(full);
|
|
361
400
|
}
|
|
362
401
|
} else if (entry.isFile()) {
|
|
@@ -389,13 +428,27 @@ function resolveSkills(targetFilePath, content) {
|
|
|
389
428
|
else skills.push('clean-code');
|
|
390
429
|
}
|
|
391
430
|
|
|
392
|
-
if (
|
|
431
|
+
if (
|
|
432
|
+
lowerContent.includes('auth') ||
|
|
433
|
+
lowerContent.includes('jwt') ||
|
|
434
|
+
lowerContent.includes('token') ||
|
|
435
|
+
lowerContent.includes('crypto')
|
|
436
|
+
) {
|
|
393
437
|
skills.push('backend-security-expert');
|
|
394
438
|
}
|
|
395
|
-
if (
|
|
439
|
+
if (
|
|
440
|
+
lowerContent.includes('query') ||
|
|
441
|
+
lowerContent.includes('prisma') ||
|
|
442
|
+
lowerContent.includes('sql') ||
|
|
443
|
+
lowerContent.includes('database')
|
|
444
|
+
) {
|
|
396
445
|
skills.push('database-architect');
|
|
397
446
|
}
|
|
398
|
-
if (
|
|
447
|
+
if (
|
|
448
|
+
lowerContent.includes('compress') ||
|
|
449
|
+
lowerContent.includes('tokens') ||
|
|
450
|
+
lowerContent.includes('prompt')
|
|
451
|
+
) {
|
|
399
452
|
skills.push('context-engineering-pro');
|
|
400
453
|
}
|
|
401
454
|
|
|
@@ -426,7 +479,9 @@ function getDocsDir(workspaceRoot = process.cwd()) {
|
|
|
426
479
|
const local = path.join(workspaceRoot, 'docs', 'context');
|
|
427
480
|
if (fs.existsSync(local)) {
|
|
428
481
|
try {
|
|
429
|
-
const files = fs
|
|
482
|
+
const files = fs
|
|
483
|
+
.readdirSync(local)
|
|
484
|
+
.filter(f => f.endsWith('.context.md') || f.endsWith('.bridge.md'));
|
|
430
485
|
if (files.length > 0) return local;
|
|
431
486
|
} catch {
|
|
432
487
|
// fallback
|
|
@@ -435,7 +490,9 @@ function getDocsDir(workspaceRoot = process.cwd()) {
|
|
|
435
490
|
const parent = path.join(workspaceRoot, '..', 'docs', 'context');
|
|
436
491
|
if (fs.existsSync(parent)) {
|
|
437
492
|
try {
|
|
438
|
-
const files = fs
|
|
493
|
+
const files = fs
|
|
494
|
+
.readdirSync(parent)
|
|
495
|
+
.filter(f => f.endsWith('.context.md') || f.endsWith('.bridge.md'));
|
|
439
496
|
if (files.length > 0) return parent;
|
|
440
497
|
} catch {
|
|
441
498
|
// fallback
|
|
@@ -463,10 +520,17 @@ function analyzeSingleFile(targetPath, workspaceRoot = process.cwd()) {
|
|
|
463
520
|
|
|
464
521
|
// Determine domain layer
|
|
465
522
|
let domainLayer = 'Core Logic / Utility';
|
|
466
|
-
if (relativePath.includes('api') || relativePath.includes('route'))
|
|
523
|
+
if (relativePath.includes('api') || relativePath.includes('route'))
|
|
524
|
+
domainLayer = 'API / Gateway Layer';
|
|
467
525
|
else if (relativePath.includes('service')) domainLayer = 'Service / Business Logic';
|
|
468
|
-
else if (
|
|
469
|
-
|
|
526
|
+
else if (
|
|
527
|
+
relativePath.includes('model') ||
|
|
528
|
+
relativePath.includes('schema') ||
|
|
529
|
+
relativePath.includes('db')
|
|
530
|
+
)
|
|
531
|
+
domainLayer = 'Data / Persistence Layer';
|
|
532
|
+
else if (relativePath.includes('components') || relativePath.includes('ui'))
|
|
533
|
+
domainLayer = 'UI / Presentation Layer';
|
|
470
534
|
else if (relativePath.includes('commands')) domainLayer = 'Command / Dispatch Layer';
|
|
471
535
|
|
|
472
536
|
return {
|
|
@@ -483,7 +547,7 @@ function analyzeSingleFile(targetPath, workspaceRoot = process.cwd()) {
|
|
|
483
547
|
tests,
|
|
484
548
|
skills,
|
|
485
549
|
lineCount: rawContent.split('\n').length,
|
|
486
|
-
byteSize: Buffer.byteLength(rawContent, 'utf8')
|
|
550
|
+
byteSize: Buffer.byteLength(rawContent, 'utf8'),
|
|
487
551
|
};
|
|
488
552
|
}
|
|
489
553
|
|
|
@@ -493,8 +557,12 @@ function analyzeMultiFileBridge(pathA, pathB, workspaceRoot = process.cwd()) {
|
|
|
493
557
|
const metaA = analyzeSingleFile(pathA, workspaceRoot);
|
|
494
558
|
const metaB = analyzeSingleFile(pathB, workspaceRoot);
|
|
495
559
|
|
|
496
|
-
const aImportsB = metaA.imports.some(imp =>
|
|
497
|
-
|
|
560
|
+
const aImportsB = metaA.imports.some(imp =>
|
|
561
|
+
imp.source.includes(path.basename(metaB.filePath).replace(/\.[^.]+$/, '')),
|
|
562
|
+
);
|
|
563
|
+
const bImportsA = metaB.imports.some(imp =>
|
|
564
|
+
imp.source.includes(path.basename(metaA.filePath).replace(/\.[^.]+$/, '')),
|
|
565
|
+
);
|
|
498
566
|
|
|
499
567
|
const sharedTypes = [];
|
|
500
568
|
const typeNamesA = new Set(metaA.types.map(t => t.name));
|
|
@@ -510,8 +578,15 @@ function analyzeMultiFileBridge(pathA, pathB, workspaceRoot = process.cwd()) {
|
|
|
510
578
|
aImportsB,
|
|
511
579
|
bImportsA,
|
|
512
580
|
sharedTypes,
|
|
513
|
-
relationship:
|
|
514
|
-
|
|
581
|
+
relationship:
|
|
582
|
+
aImportsB && bImportsA
|
|
583
|
+
? 'Bidirectional Coupling'
|
|
584
|
+
: aImportsB
|
|
585
|
+
? 'A depends on B'
|
|
586
|
+
: bImportsA
|
|
587
|
+
? 'B depends on A'
|
|
588
|
+
: 'Sibling / Peer Modules',
|
|
589
|
+
},
|
|
515
590
|
};
|
|
516
591
|
}
|
|
517
592
|
|
|
@@ -529,7 +604,15 @@ function analyzeDirectory(dirPath, workspaceRoot = process.cwd()) {
|
|
|
529
604
|
let totalFiles = 0;
|
|
530
605
|
const langCounts = {};
|
|
531
606
|
|
|
532
|
-
const ignoreSet = new Set([
|
|
607
|
+
const ignoreSet = new Set([
|
|
608
|
+
'node_modules',
|
|
609
|
+
'target',
|
|
610
|
+
'.git',
|
|
611
|
+
'dist',
|
|
612
|
+
'coverage',
|
|
613
|
+
'.gemini',
|
|
614
|
+
'build',
|
|
615
|
+
]);
|
|
533
616
|
|
|
534
617
|
// Check top-level manifests
|
|
535
618
|
if (fs.existsSync(path.join(absDir, 'package.json'))) manifests.push('package.json');
|
|
@@ -547,7 +630,7 @@ function analyzeDirectory(dirPath, workspaceRoot = process.cwd()) {
|
|
|
547
630
|
subsystems.push({
|
|
548
631
|
name: entry.name,
|
|
549
632
|
fileCount: subFiles.length,
|
|
550
|
-
keySample: subFiles.slice(0, 3).join(', ')
|
|
633
|
+
keySample: subFiles.slice(0, 3).join(', '),
|
|
551
634
|
});
|
|
552
635
|
} catch {
|
|
553
636
|
// Ignore unreadable
|
|
@@ -565,28 +648,38 @@ function analyzeDirectory(dirPath, workspaceRoot = process.cwd()) {
|
|
|
565
648
|
manifests,
|
|
566
649
|
subsystems,
|
|
567
650
|
directFiles: totalFiles,
|
|
568
|
-
langCounts
|
|
651
|
+
langCounts,
|
|
569
652
|
};
|
|
570
653
|
}
|
|
571
654
|
|
|
572
655
|
// ── Markdown Dossier Generators ─────────────────────────────────────────────
|
|
573
656
|
|
|
574
657
|
function renderSingleFileDossier(data) {
|
|
575
|
-
const callersTable =
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
658
|
+
const callersTable =
|
|
659
|
+
data.callers.length > 0
|
|
660
|
+
? data.callers
|
|
661
|
+
.map(
|
|
662
|
+
c =>
|
|
663
|
+
`| \`${c.file}:${c.line}\` | \`${c.snippet}\` | ${c.isDirectImport ? 'Direct Import' : 'Symbol Reference'} |`,
|
|
664
|
+
)
|
|
665
|
+
.join('\n')
|
|
666
|
+
: '| *None detected (potential root entrypoint or test)* | - | - |';
|
|
667
|
+
|
|
668
|
+
const typesTable =
|
|
669
|
+
data.exports.concat(data.types).length > 0
|
|
670
|
+
? data.exports
|
|
671
|
+
.concat(data.types)
|
|
672
|
+
.slice(0, 10)
|
|
673
|
+
.map(s => `| \`${s.name}\` | \`${s.kind}\` | \`${s.signature}\` | Line ${s.line} |`)
|
|
674
|
+
.join('\n')
|
|
675
|
+
: '| *No explicit exported symbols detected* | - | - | - |';
|
|
676
|
+
|
|
677
|
+
const landminesContent =
|
|
678
|
+
data.landmines.length > 0
|
|
679
|
+
? data.landmines.map(l => `> [!CAUTION]\n> **Line ${l.line}:** \`${l.content}\``).join('\n\n')
|
|
680
|
+
: '> [!NOTE]\n> No explicit defensive comments (`// VERIFY`, `// NOTE`, `// HACK`) found in source code.';
|
|
681
|
+
|
|
682
|
+
const testCommand = data.tests.length > 0 ? `npm test -- ${data.tests[0]}` : `npm test`;
|
|
590
683
|
|
|
591
684
|
return `---
|
|
592
685
|
version: 2.0.0
|
|
@@ -607,7 +700,10 @@ ${data.tests.length > 0 ? data.tests.map(t => ` - ${t}`).join('\n') : ' - none
|
|
|
607
700
|
> \`\`\`yaml
|
|
608
701
|
> Target: ${data.filePath} (${data.domainLayer})
|
|
609
702
|
> Role: Core logic for ${path.basename(data.filePath)}.
|
|
610
|
-
> Exports: [${data.exports
|
|
703
|
+
> Exports: [${data.exports
|
|
704
|
+
.map(e => e.name)
|
|
705
|
+
.slice(0, 6)
|
|
706
|
+
.join(', ')}]
|
|
611
707
|
> Inbound Callers: ${data.callers.length} active consumer sites.
|
|
612
708
|
> Invariant Check: Verify test passing before merge: ${testCommand}
|
|
613
709
|
> \`\`\`
|
|
@@ -643,17 +739,37 @@ graph LR
|
|
|
643
739
|
classDef ext fill:#0f172a,stroke:#64748b,stroke-width:1px,color:#94a3b8;
|
|
644
740
|
|
|
645
741
|
subgraph Inbound Callers
|
|
646
|
-
${
|
|
742
|
+
${
|
|
743
|
+
data.callers
|
|
744
|
+
.slice(0, 4)
|
|
745
|
+
.map((c, i) => ` C${i}["${c.file}"]:::ext`)
|
|
746
|
+
.join('\n') || ' C0["Entrypoint / CLI"]:::ext'
|
|
747
|
+
}
|
|
647
748
|
end
|
|
648
749
|
|
|
649
750
|
T["${path.basename(data.filePath)}"]:::target
|
|
650
751
|
|
|
651
752
|
subgraph Dependencies
|
|
652
|
-
${
|
|
753
|
+
${
|
|
754
|
+
data.imports
|
|
755
|
+
.slice(0, 4)
|
|
756
|
+
.map((imp, i) => ` D${i}["${imp.source}"]:::ext`)
|
|
757
|
+
.join('\n') || ' D0["Stdlib"]:::ext'
|
|
758
|
+
}
|
|
653
759
|
end
|
|
654
760
|
|
|
655
|
-
${
|
|
656
|
-
|
|
761
|
+
${
|
|
762
|
+
data.callers
|
|
763
|
+
.slice(0, 4)
|
|
764
|
+
.map((_, i) => ` C${i} --> T`)
|
|
765
|
+
.join('\n') || ' C0 --> T'
|
|
766
|
+
}
|
|
767
|
+
${
|
|
768
|
+
data.imports
|
|
769
|
+
.slice(0, 4)
|
|
770
|
+
.map((_, i) => ` T --> D${i}`)
|
|
771
|
+
.join('\n') || ' T --> D0'
|
|
772
|
+
}
|
|
657
773
|
\`\`\`
|
|
658
774
|
|
|
659
775
|
### Inbound Consumer Sites
|
|
@@ -706,9 +822,11 @@ graph LR
|
|
|
706
822
|
\`\`\`
|
|
707
823
|
|
|
708
824
|
## 📦 Shared Types & Interfaces
|
|
709
|
-
${
|
|
710
|
-
|
|
711
|
-
|
|
825
|
+
${
|
|
826
|
+
data.coupling.sharedTypes.length > 0
|
|
827
|
+
? data.coupling.sharedTypes.map(t => `- \`${t}\``).join('\n')
|
|
828
|
+
: '- *No identical type names detected between modules.*'
|
|
829
|
+
}
|
|
712
830
|
|
|
713
831
|
## 📋 Interface Alignment Summary
|
|
714
832
|
- **${path.basename(data.fileA.filePath)} Exports:** ${data.fileA.exports.length} symbols.
|
|
@@ -755,7 +873,9 @@ function syncVaultIndex(workspaceRoot = process.cwd()) {
|
|
|
755
873
|
fs.mkdirSync(docsDir, { recursive: true });
|
|
756
874
|
}
|
|
757
875
|
|
|
758
|
-
const files = fs
|
|
876
|
+
const files = fs
|
|
877
|
+
.readdirSync(docsDir)
|
|
878
|
+
.filter(f => f.endsWith('.context.md') || f.endsWith('.bridge.md'));
|
|
759
879
|
|
|
760
880
|
const rows = [];
|
|
761
881
|
for (const f of files) {
|
|
@@ -822,7 +942,7 @@ function checkDrift(workspaceRoot = process.cwd()) {
|
|
|
822
942
|
total: syncRes.indexedCount,
|
|
823
943
|
fresh: freshCount,
|
|
824
944
|
stale: staleCount,
|
|
825
|
-
isHealthy: staleCount === 0
|
|
945
|
+
isHealthy: staleCount === 0,
|
|
826
946
|
};
|
|
827
947
|
}
|
|
828
948
|
|
|
@@ -838,7 +958,9 @@ function main() {
|
|
|
838
958
|
console.log(`Total Dossiers: ${drift.total}`);
|
|
839
959
|
console.log(`🟢 Fresh: ${drift.fresh}`);
|
|
840
960
|
console.log(`🔴 Stale: ${drift.stale}`);
|
|
841
|
-
console.log(
|
|
961
|
+
console.log(
|
|
962
|
+
`Status: ${drift.isHealthy ? C.GREEN + 'HEALTHY' : C.RED + 'DRIFT DETECTED'}${C.RESET}\n`,
|
|
963
|
+
);
|
|
842
964
|
process.exit(drift.isHealthy ? 0 : 1);
|
|
843
965
|
}
|
|
844
966
|
|
|
@@ -922,7 +1044,9 @@ function main() {
|
|
|
922
1044
|
}
|
|
923
1045
|
}
|
|
924
1046
|
} else {
|
|
925
|
-
console.error(
|
|
1047
|
+
console.error(
|
|
1048
|
+
`${C.RED}Error: Provide --file <path>, --dir <path>, --multi <fileA> <fileB>, or --check${C.RESET}`,
|
|
1049
|
+
);
|
|
926
1050
|
process.exit(1);
|
|
927
1051
|
}
|
|
928
1052
|
}
|
|
@@ -936,7 +1060,7 @@ module.exports = {
|
|
|
936
1060
|
renderBridgeDossier,
|
|
937
1061
|
renderDirectoryDossier,
|
|
938
1062
|
syncVaultIndex,
|
|
939
|
-
checkDrift
|
|
1063
|
+
checkDrift,
|
|
940
1064
|
};
|
|
941
1065
|
|
|
942
1066
|
if (require.main === module) {
|