tribunal-kit 7.0.0 → 9.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 +2 -2
- package/.agent/config/claude.json +18 -0
- package/.agent/config/plugin.json +102 -0
- package/.agent/config/slash-commands.json +103 -0
- package/.agent/config/specialist-registry.json +415 -0
- package/.agent/config/system-prompt.md +244 -0
- package/.agent/history/architecture-graph.yaml +302 -3
- package/.agent/history/graph-cache.json +515 -45
- package/.agent/history/memory.db +0 -0
- package/.agent/history/snapshots/bin__adapter-install.js.json +13 -0
- package/.agent/history/snapshots/bin__global-store.js.json +15 -0
- package/.agent/history/snapshots/bin__mcp-server.js.json +19 -0
- package/.agent/history/snapshots/bin__proxy-server.js.json +20 -0
- package/.agent/history/snapshots/bin__spawn-agent.js.json +12 -0
- package/.agent/history/snapshots/bin__tk-proxy.js.json +21 -0
- package/.agent/history/snapshots/bin__tribunal-kit.js.json +9 -7
- package/.agent/history/snapshots/bin__wrapper.js.json +14 -0
- package/.agent/history/snapshots/eslint.config.js.json +1 -2
- package/.agent/history/snapshots/scripts__benchmark.js.json +14 -0
- package/.agent/history/snapshots/scripts__changelog.js.json +1 -2
- package/.agent/history/snapshots/scripts__fix-vbc.js.json +11 -0
- package/.agent/history/snapshots/scripts__stress_benchmark.js.json +15 -0
- package/.agent/history/snapshots/scripts__sync-version.js.json +1 -2
- package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -2
- package/.agent/history/snapshots/scripts__visual_audit.js.json +11 -0
- package/.agent/history/snapshots/test__integration__bridges.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__init.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__routing.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__sync_status.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__wave2.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__wrapper.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__align.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__args.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__audit_release.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__compile.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__context_broker.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__copyDir.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__init.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__learn.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__marathon.test.js.json +22 -0
- package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__memory.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__native.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__optimize.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +21 -0
- package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__semver.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__stress.test.js.json +15 -0
- package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__utils.test.js.json +10 -0
- package/.agent/routing_index.json +2 -2
- package/.agent/scripts/ast_context_loader.js +137 -0
- package/.agent/scripts/memory_engine.js +581 -0
- package/.agent/scripts/payload_schemas.js +146 -0
- package/.agent/scripts/prompt_compiler.js +59 -11
- package/.agent/scripts/swarm_dispatcher.js +295 -67
- package/.agent/scripts/token_budget_broker.js +117 -6
- package/.agent/skills/12-principles-of-animation/SKILL.md +19 -16
- package/.agent/skills/60fps-animation/SKILL.md +47 -21
- package/.agent/skills/accessible-animation/SKILL.md +19 -16
- package/.agent/skills/adapt/SKILL.md +19 -16
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +41 -40
- package/.agent/skills/agent-organizer/SKILL.md +9 -59
- package/.agent/skills/agentic-patterns/SKILL.md +9 -57
- package/.agent/skills/agentic-workflows-2026/SKILL.md +45 -8
- package/.agent/skills/ai-app-hardening/SKILL.md +31 -5
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +28 -66
- package/.agent/skills/animation-on-scroll/SKILL.md +19 -16
- package/.agent/skills/animation-systems/SKILL.md +19 -15
- package/.agent/skills/antfu-conventions/SKILL.md +19 -18
- package/.agent/skills/api-patterns/SKILL.md +8 -58
- package/.agent/skills/api-security-auditor/SKILL.md +8 -58
- package/.agent/skills/app-builder/SKILL.md +9 -59
- package/.agent/skills/appflow-wireframe/SKILL.md +13 -57
- package/.agent/skills/apple-design/SKILL.md +22 -14
- package/.agent/skills/architecture/SKILL.md +9 -59
- package/.agent/skills/audit-and-fix/SKILL.md +19 -16
- package/.agent/skills/authentication-best-practices/SKILL.md +8 -58
- package/.agent/skills/backend-security-expert/SKILL.md +32 -65
- package/.agent/skills/baseline-ui/SKILL.md +22 -14
- package/.agent/skills/bash-linux/SKILL.md +9 -59
- package/.agent/skills/behavioral-modes/SKILL.md +9 -57
- package/.agent/skills/better-colors/SKILL.md +22 -14
- package/.agent/skills/better-typography/SKILL.md +26 -14
- package/.agent/skills/better-ui/SKILL.md +54 -19
- package/.agent/skills/bolder/SKILL.md +19 -16
- package/.agent/skills/brainstorming/SKILL.md +9 -57
- package/.agent/skills/browser-native-ai/SKILL.md +9 -28
- package/.agent/skills/build-primitive/SKILL.md +19 -16
- package/.agent/skills/building-native-ui/SKILL.md +9 -59
- package/.agent/skills/cicd-pro/SKILL.md +21 -28
- package/.agent/skills/clarify/SKILL.md +19 -16
- package/.agent/skills/clean-code/SKILL.md +18 -61
- package/.agent/skills/cloud-architect/SKILL.md +21 -28
- package/.agent/skills/cobejs/SKILL.md +19 -15
- package/.agent/skills/code-review-checklist/SKILL.md +8 -58
- package/.agent/skills/codebase-design/SKILL.md +33 -22
- package/.agent/skills/colorize/SKILL.md +19 -16
- package/.agent/skills/compact-landing/SKILL.md +19 -16
- package/.agent/skills/company-logos/SKILL.md +19 -16
- package/.agent/skills/config-validator/SKILL.md +9 -59
- package/.agent/skills/containerization-pro/SKILL.md +21 -28
- package/.agent/skills/context-engineering-pro/SKILL.md +31 -5
- package/.agent/skills/create-design-md/SKILL.md +22 -14
- package/.agent/skills/critique/SKILL.md +20 -11
- package/.agent/skills/csharp-developer/SKILL.md +8 -58
- package/.agent/skills/data-validation-schemas/SKILL.md +9 -59
- package/.agent/skills/database-design/SKILL.md +27 -67
- package/.agent/skills/delight/SKILL.md +19 -16
- package/.agent/skills/deployment-procedures/SKILL.md +9 -59
- package/.agent/skills/design-lab/SKILL.md +19 -16
- package/.agent/skills/devops-engineer/SKILL.md +8 -58
- package/.agent/skills/devops-incident-responder/SKILL.md +9 -59
- package/.agent/skills/diagnosing-bugs/SKILL.md +20 -21
- package/.agent/skills/distill/SKILL.md +19 -16
- package/.agent/skills/documentation-templates/SKILL.md +9 -59
- package/.agent/skills/domain-modeling/SKILL.md +19 -18
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +31 -5
- package/.agent/skills/edge-ai-mobile/SKILL.md +31 -5
- package/.agent/skills/edge-computing/SKILL.md +9 -59
- package/.agent/skills/emil-design-eng/SKILL.md +21 -24
- package/.agent/skills/error-resilience/SKILL.md +31 -66
- package/.agent/skills/expo-router-v4/SKILL.md +31 -5
- package/.agent/skills/extract-design-system/SKILL.md +9 -59
- package/.agent/skills/fabel-protocol/SKILL.md +26 -8
- package/.agent/skills/fixing-accessibility/SKILL.md +22 -14
- package/.agent/skills/fixing-metadata/SKILL.md +19 -16
- package/.agent/skills/fixing-motion-performance/SKILL.md +22 -14
- package/.agent/skills/framer-motion-expert/SKILL.md +9 -57
- package/.agent/skills/frontend-design/SKILL.md +27 -7
- package/.agent/skills/frontend-security-expert/SKILL.md +8 -58
- package/.agent/skills/game-design-expert/SKILL.md +9 -59
- package/.agent/skills/game-engineering-expert/SKILL.md +9 -59
- package/.agent/skills/generative-ui-expert/SKILL.md +9 -28
- package/.agent/skills/geo-fundamentals/SKILL.md +9 -59
- package/.agent/skills/git-pro/SKILL.md +19 -30
- package/.agent/skills/github-operations/SKILL.md +8 -58
- package/.agent/skills/gpt-taste/SKILL.md +19 -16
- package/.agent/skills/gsap-core/SKILL.md +8 -78
- package/.agent/skills/gsap-frameworks/SKILL.md +8 -78
- package/.agent/skills/gsap-performance/SKILL.md +9 -77
- package/.agent/skills/gsap-plugins/SKILL.md +9 -77
- package/.agent/skills/gsap-react/SKILL.md +9 -21
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +8 -78
- package/.agent/skills/gsap-timeline/SKILL.md +9 -77
- package/.agent/skills/gsap-utils/SKILL.md +9 -77
- package/.agent/skills/harden/SKILL.md +19 -16
- package/.agent/skills/harness-protocol/SKILL.md +9 -21
- package/.agent/skills/i18n-localization/SKILL.md +9 -59
- package/.agent/skills/impeccable/SKILL.md +19 -18
- package/.agent/skills/improve-codebase-architecture/SKILL.md +19 -17
- package/.agent/skills/improve-ui/SKILL.md +22 -14
- package/.agent/skills/intelligent-routing/SKILL.md +9 -23
- package/.agent/skills/knowledge-graph/SKILL.md +9 -21
- package/.agent/skills/landing-page/SKILL.md +19 -16
- package/.agent/skills/lint-and-validate/SKILL.md +9 -59
- package/.agent/skills/llm-engineering/SKILL.md +8 -58
- package/.agent/skills/local-first/SKILL.md +9 -59
- package/.agent/skills/local-first-architecture/SKILL.md +37 -20
- package/.agent/skills/lottie-animation/SKILL.md +19 -15
- package/.agent/skills/marquee-loop/SKILL.md +19 -16
- package/.agent/skills/masked-reveal/SKILL.md +19 -15
- package/.agent/skills/mcp-builder/SKILL.md +9 -59
- package/.agent/skills/micro-interaction/SKILL.md +19 -16
- package/.agent/skills/mobile-design/SKILL.md +8 -58
- package/.agent/skills/monorepo-management/SKILL.md +9 -59
- package/.agent/skills/morphing-icons/SKILL.md +19 -15
- package/.agent/skills/motion-engineering/SKILL.md +22 -15
- package/.agent/skills/nextjs-react-expert/SKILL.md +35 -67
- package/.agent/skills/nodejs-best-practices/SKILL.md +34 -61
- package/.agent/skills/observability/SKILL.md +8 -58
- package/.agent/skills/opentelemetry-observability/SKILL.md +31 -5
- package/.agent/skills/page-transition-animation/SKILL.md +19 -16
- package/.agent/skills/parallel-agents/SKILL.md +9 -59
- package/.agent/skills/performance-profiling/SKILL.md +8 -58
- package/.agent/skills/plan-writing/SKILL.md +36 -69
- package/.agent/skills/platform-engineer/SKILL.md +9 -59
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +31 -5
- package/.agent/skills/playwright-ai-e2e/SKILL.md +31 -5
- package/.agent/skills/playwright-best-practices/SKILL.md +9 -59
- package/.agent/skills/polish/SKILL.md +19 -16
- package/.agent/skills/powershell-windows/SKILL.md +8 -58
- package/.agent/skills/pricing-page/SKILL.md +19 -16
- package/.agent/skills/product-aware-heuristics/SKILL.md +27 -8
- package/.agent/skills/progressive-blur/SKILL.md +19 -16
- package/.agent/skills/project-idioms/SKILL.md +9 -59
- package/.agent/skills/property-based-testing/SKILL.md +31 -5
- package/.agent/skills/python-patterns/SKILL.md +9 -59
- package/.agent/skills/python-pro/SKILL.md +35 -67
- package/.agent/skills/quieter/SKILL.md +19 -16
- package/.agent/skills/react-doctor/SKILL.md +19 -16
- package/.agent/skills/react-specialist/SKILL.md +26 -65
- package/.agent/skills/readme-builder/SKILL.md +9 -59
- package/.agent/skills/realtime-patterns/SKILL.md +8 -58
- package/.agent/skills/red-team-tactics/SKILL.md +9 -59
- package/.agent/skills/redesign-skill/SKILL.md +19 -16
- package/.agent/skills/review-animations/SKILL.md +21 -25
- package/.agent/skills/rust-pro/SKILL.md +30 -61
- package/.agent/skills/seo-fundamentals/SKILL.md +9 -59
- package/.agent/skills/server-management/SKILL.md +9 -59
- package/.agent/skills/shadcn-ui-expert/SKILL.md +9 -59
- package/.agent/skills/shape/SKILL.md +19 -16
- package/.agent/skills/skill-creator/SKILL.md +36 -86
- package/.agent/skills/soft-skill/SKILL.md +19 -16
- package/.agent/skills/sounds-on-the-web/SKILL.md +19 -16
- package/.agent/skills/sql-pro/SKILL.md +47 -62
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +9 -59
- package/.agent/skills/svg-animation/SKILL.md +19 -15
- package/.agent/skills/swiftui-expert/SKILL.md +9 -59
- package/.agent/skills/swiss-design/SKILL.md +19 -16
- package/.agent/skills/system-design-pro/SKILL.md +21 -26
- package/.agent/skills/systematic-debugging/SKILL.md +19 -60
- package/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +8 -58
- package/.agent/skills/taste-skill/SKILL.md +19 -16
- package/.agent/skills/tdd-workflow/SKILL.md +65 -25
- package/.agent/skills/test-result-analyzer/SKILL.md +9 -59
- package/.agent/skills/testing-patterns/SKILL.md +8 -58
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +19 -18
- package/.agent/skills/thinking-protocol/SKILL.md +33 -2
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +19 -15
- package/.agent/skills/transitions-dev/SKILL.md +19 -15
- package/.agent/skills/trend-researcher/SKILL.md +9 -59
- package/.agent/skills/typescript-advanced/SKILL.md +21 -64
- package/.agent/skills/typeset/SKILL.md +19 -16
- package/.agent/skills/ui-reasoning-engine/SKILL.md +27 -8
- package/.agent/skills/ui-skill-packs/SKILL.md +26 -16
- package/.agent/skills/ui-skills-root/SKILL.md +22 -14
- package/.agent/skills/ui-ux-pro-max/SKILL.md +38 -12
- package/.agent/skills/ui-ux-researcher/SKILL.md +9 -59
- package/.agent/skills/vector-search-pgvector/SKILL.md +31 -5
- package/.agent/skills/verification-before-completion/SKILL.md +125 -0
- package/.agent/skills/vue-expert/SKILL.md +9 -57
- package/.agent/skills/vulnerability-scanner/SKILL.md +8 -58
- package/.agent/skills/web-accessibility-auditor/SKILL.md +9 -59
- package/.agent/skills/web-design-guidelines/SKILL.md +27 -7
- package/.agent/skills/web-quality-audit/SKILL.md +19 -16
- package/.agent/skills/webapp-testing/SKILL.md +9 -59
- package/.agent/skills/webgpu-performance/SKILL.md +9 -28
- package/.agent/skills/whimsy-injector/SKILL.md +9 -57
- package/.agent/skills/workflow-optimizer/SKILL.md +9 -57
- package/.agent/skills/zero-trust-passkeys/SKILL.md +31 -5
- package/.agent/templates/DESIGN.md +680 -160
- package/.agent/templates/sdd/implementer-prompt.md +53 -0
- package/.agent/templates/sdd/re-review-prompt.md +28 -0
- package/.agent/templates/sdd/task-reviewer-prompt.md +59 -0
- package/.agent/workflows/acf.md +4 -0
- package/.agent/workflows/api-tester.md +5 -0
- package/.agent/workflows/audit.md +5 -0
- package/.agent/workflows/brainstorm.md +17 -1
- package/.agent/workflows/changelog.md +5 -0
- package/.agent/workflows/contract.md +19 -0
- package/.agent/workflows/create.md +6 -1
- package/.agent/workflows/debug.md +5 -0
- package/.agent/workflows/deploy.md +6 -1
- package/.agent/workflows/enhance.md +6 -1
- package/.agent/workflows/fix-ci.md +5 -0
- package/.agent/workflows/fix.md +5 -0
- package/.agent/workflows/generate.md +5 -0
- package/.agent/workflows/marathon.md +6 -1
- package/.agent/workflows/migrate.md +5 -0
- package/.agent/workflows/minimal.md +4 -0
- package/.agent/workflows/orchestrate.md +6 -1
- package/.agent/workflows/performance-benchmarker.md +6 -1
- package/.agent/workflows/pipeline.md +5 -0
- package/.agent/workflows/plan.md +6 -1
- package/.agent/workflows/preview.md +6 -1
- package/.agent/workflows/refactor.md +6 -0
- package/.agent/workflows/review-ai.md +5 -0
- package/.agent/workflows/review.md +5 -0
- package/.agent/workflows/sdd.md +122 -0
- package/.agent/workflows/session.md +5 -0
- package/.agent/workflows/status.md +4 -0
- package/.agent/workflows/super-prompt.md +4 -0
- package/.agent/workflows/swarm.md +6 -1
- package/.agent/workflows/test.md +6 -1
- package/.agent/workflows/tribunal-backend.md +5 -0
- package/.agent/workflows/tribunal-cicd.md +5 -0
- package/.agent/workflows/tribunal-database.md +5 -0
- package/.agent/workflows/tribunal-full.md +8 -0
- package/.agent/workflows/tribunal-mobile.md +5 -0
- package/.agent/workflows/tribunal-performance.md +5 -0
- package/.agent/workflows/tribunal-speed.md +5 -0
- package/.agent/workflows/tribunal-ui.md +7 -0
- package/.agents/plugins/marketplace.json +20 -0
- package/.claude/CLAUDE.md +442 -0
- package/.claude-plugin/marketplace.json +17 -0
- package/.claude-plugin/plugin.json +26 -0
- package/.codex-plugin/plugin.json +45 -0
- package/.cursor-plugin/plugin.json +26 -0
- package/.devin-plugin/plugin.json +14 -0
- package/.hermes-plugin/__init__.py +102 -0
- package/.hermes-plugin/plugin.yaml +6 -0
- package/.kimi-plugin/plugin.json +38 -0
- package/.opencode/INSTALL.md +41 -0
- package/.opencode/plugins/tribunal.js +101 -0
- package/.pi/extensions/tribunal.ts +133 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +253 -218
- package/SECURITY.md +3 -3
- package/bin/adapter-install.js +240 -0
- package/bin/global-store.js +48 -0
- package/bin/mcp-server.js +568 -252
- package/bin/proxy-server.js +113 -0
- package/bin/spawn-agent.js +39 -0
- package/bin/tk-proxy.js +34 -0
- package/bin/wrapper.js +1 -0
- package/dist/cli.js +355 -355
- package/dist/commands/init.js +8 -51
- package/dist/commands/status.js +61 -36
- package/dist/commands/validate.js +22 -31
- package/dist/esm/index.mjs +142 -142
- package/dist/index.d.ts +349 -343
- package/dist/tui/banner.js +77 -0
- package/dist/tui/index.js +21 -0
- package/dist/tui/reviewer-grid.js +90 -0
- package/dist/tui/shimmer.js +91 -0
- package/dist/tui/theme.js +130 -0
- package/dist/tui/tree.js +93 -0
- package/dist/tui/wizard.js +148 -0
- package/dist/utils/helpers.js +5 -41
- package/gemini-extension.json +6 -0
- package/hooks/hooks-cursor.json +16 -0
- package/hooks/hooks.json +16 -0
- package/hooks/session-start.js +77 -0
- package/package.json +165 -129
- package/scripts/audit_skill_sdo.js +87 -0
- package/scripts/build-graph.js +71 -0
- package/scripts/modernize_skills.js +254 -0
- package/.agent/history/snapshots/migrate_refs.js.json +0 -11
- package/.agent/scripts/compile_router.py +0 -5
- package/.agent/scripts/migrate_skills_frontmatter.py +0 -5
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* modernize_skills.js — Tribunal Kit Skill Modernizer & Schema Validator (v4.0.0)
|
|
4
|
+
*
|
|
5
|
+
* Scans, deduplicates, standardizes, and validates all SKILL.md files across:
|
|
6
|
+
* - tribunal-kit/.agent/skills/
|
|
7
|
+
* - .agent/skills/ (when --sync-to-root is passed)
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* node scripts/modernize_skills.js --validate
|
|
11
|
+
* node scripts/modernize_skills.js --dry-run
|
|
12
|
+
* node scripts/modernize_skills.js --fix
|
|
13
|
+
* node scripts/modernize_skills.js --fix --sync-to-root
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const fs = require('fs');
|
|
17
|
+
const path = require('path');
|
|
18
|
+
|
|
19
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
20
|
+
const SKILLS_DIR = path.join(ROOT, '.agent', 'skills');
|
|
21
|
+
const WORKSPACE_ROOT = path.resolve(ROOT, '..');
|
|
22
|
+
const ROOT_SKILLS_DIR = path.join(WORKSPACE_ROOT, '.agent', 'skills');
|
|
23
|
+
|
|
24
|
+
const ARGS = process.argv.slice(2);
|
|
25
|
+
const DRY_RUN = ARGS.includes('--dry-run');
|
|
26
|
+
const FIX = ARGS.includes('--fix');
|
|
27
|
+
const _VALIDATE = ARGS.includes('--validate') || (!DRY_RUN && !FIX);
|
|
28
|
+
const SYNC_TO_ROOT = ARGS.includes('--sync-to-root');
|
|
29
|
+
|
|
30
|
+
const CANONICAL_FOOTER = `---
|
|
31
|
+
|
|
32
|
+
## 🏛️ Tribunal Verification & Guardrails
|
|
33
|
+
|
|
34
|
+
**Slash command: \`/review\` or \`/tribunal-full\`**
|
|
35
|
+
**Active reviewers: \`logic-reviewer\` · \`security-auditor\`**
|
|
36
|
+
|
|
37
|
+
### ❌ Forbidden AI Tropes
|
|
38
|
+
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with \`// VERIFY: [reason]\`.
|
|
39
|
+
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
40
|
+
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
41
|
+
|
|
42
|
+
### ✅ Pre-Flight Self-Audit
|
|
43
|
+
\`\`\`
|
|
44
|
+
✅ Did I rely ONLY on real, verified tools and methods?
|
|
45
|
+
✅ Is this solution appropriately scoped to the user's constraints?
|
|
46
|
+
✅ Did I handle potential failure modes and edge cases?
|
|
47
|
+
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
48
|
+
\`\`\`
|
|
49
|
+
|
|
50
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
51
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
52
|
+
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
53
|
+
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
function parseFrontmatter(content) {
|
|
57
|
+
if (!content.startsWith('---')) return { frontmatter: null, body: content };
|
|
58
|
+
const endIdx = content.indexOf('\n---', 3);
|
|
59
|
+
if (endIdx === -1) return { frontmatter: null, body: content };
|
|
60
|
+
|
|
61
|
+
const rawYaml = content.slice(4, endIdx).trim();
|
|
62
|
+
const body = content.slice(endIdx + 4).trim();
|
|
63
|
+
const meta = {};
|
|
64
|
+
|
|
65
|
+
const lines = rawYaml.split('\n');
|
|
66
|
+
let currentKey = null;
|
|
67
|
+
let isList = false;
|
|
68
|
+
|
|
69
|
+
for (const line of lines) {
|
|
70
|
+
const trimmed = line.trim();
|
|
71
|
+
if (!trimmed || trimmed.startsWith('#')) continue;
|
|
72
|
+
|
|
73
|
+
const match = line.match(/^([a-zA-Z0-9_-]+):\s*(.*)$/);
|
|
74
|
+
if (match) {
|
|
75
|
+
currentKey = match[1];
|
|
76
|
+
const val = match[2].trim();
|
|
77
|
+
if (!val) {
|
|
78
|
+
meta[currentKey] = [];
|
|
79
|
+
isList = true;
|
|
80
|
+
} else {
|
|
81
|
+
meta[currentKey] = val;
|
|
82
|
+
isList = false;
|
|
83
|
+
}
|
|
84
|
+
} else if (isList && trimmed.startsWith('-')) {
|
|
85
|
+
const item = trimmed.slice(1).trim().replace(/^['"]|['"]$/g, '');
|
|
86
|
+
if (Array.isArray(meta[currentKey])) {
|
|
87
|
+
meta[currentKey].push(item);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return { frontmatter: rawYaml, meta, body };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function deduplicateAndCleanBody(body, skillName, description) {
|
|
96
|
+
let cleaned = body;
|
|
97
|
+
|
|
98
|
+
// 1. Remove duplicate top-level headers if repeated identical lines
|
|
99
|
+
const titleMatch = cleaned.match(/^#\s+(.+)$/m);
|
|
100
|
+
if (titleMatch) {
|
|
101
|
+
const title = titleMatch[1].trim();
|
|
102
|
+
const titleRegex = new RegExp(`(^|\\n)#\\s+${escapeRegex(title)}(\\r?\\n)+`, 'g');
|
|
103
|
+
let first = true;
|
|
104
|
+
cleaned = cleaned.replace(titleRegex, (match, prefix) => {
|
|
105
|
+
if (first) {
|
|
106
|
+
first = false;
|
|
107
|
+
return match;
|
|
108
|
+
}
|
|
109
|
+
return prefix;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// 2. Strip existing canonical footer if present to ensure idempotency
|
|
114
|
+
const existingFooterIdx = cleaned.indexOf('## 🏛️ Tribunal Verification & Guardrails');
|
|
115
|
+
if (existingFooterIdx !== -1) {
|
|
116
|
+
cleaned = cleaned.slice(0, existingFooterIdx).trim();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Cut off legacy trailing guardrail stacks
|
|
120
|
+
const footerMarkerRegex = /\n---\s*\n+(\*\*Slash command: `\/review`|## 🤖 LLM-Specific Traps|## 🏛️ Tribunal Integration|### ❌ Forbidden AI Tropes|## Pre-Flight Checklist|## VBC Protocol)[\s\S]*$/;
|
|
121
|
+
cleaned = cleaned.replace(footerMarkerRegex, '').trim();
|
|
122
|
+
|
|
123
|
+
// Remove any remaining isolated duplicate VBC blocks (H2 or H3)
|
|
124
|
+
const isolatedVbcRegex = /(##|###)\s+🛑?\s*Verification-Before-Completion \(VBC\) Protocol[\s\S]*?(?=\n## |\n---|\n# |$)/g;
|
|
125
|
+
cleaned = cleaned.replace(isolatedVbcRegex, '');
|
|
126
|
+
|
|
127
|
+
// Remove trailing horizontal rules or whitespace
|
|
128
|
+
cleaned = cleaned.replace(/(\n---\s*)+$/, '').trim();
|
|
129
|
+
|
|
130
|
+
// 3. Ensure Activation Boundaries section exists near the top
|
|
131
|
+
if (!cleaned.includes('Activation Boundaries') && !cleaned.includes('Activate when:')) {
|
|
132
|
+
const activationBlock = `\n\n## Activation Boundaries\n\n- **Activate when:** Operating in tasks requiring ${description || skillName}.\n- **DO NOT activate when:** The task falls strictly outside ${skillName} domain or belongs to a different dedicated specialist.\n`;
|
|
133
|
+
|
|
134
|
+
if (cleaned.includes('## Mandatory Pre-Flight Context Inspection')) {
|
|
135
|
+
cleaned = cleaned.replace(/(## Mandatory Pre-Flight Context Inspection[\s\S]*?(?=\n## |\n# |\n---|$))/, `$1${activationBlock}`);
|
|
136
|
+
} else {
|
|
137
|
+
cleaned = cleaned.replace(/^(#[^\n]+\n+)/, `$1${activationBlock}\n`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 4. Append single Canonical Footer
|
|
142
|
+
cleaned = `${cleaned}\n\n${CANONICAL_FOOTER}`;
|
|
143
|
+
|
|
144
|
+
return cleaned.trim();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function escapeRegex(string) {
|
|
148
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function processSkill(skillDirName) {
|
|
152
|
+
const skillFile = path.join(SKILLS_DIR, skillDirName, 'SKILL.md');
|
|
153
|
+
if (!fs.existsSync(skillFile)) return null;
|
|
154
|
+
|
|
155
|
+
const originalContent = fs.readFileSync(skillFile, 'utf8');
|
|
156
|
+
const { frontmatter, meta, body } = parseFrontmatter(originalContent);
|
|
157
|
+
|
|
158
|
+
if (!frontmatter) {
|
|
159
|
+
return { name: skillDirName, error: 'Missing frontmatter' };
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const desc = meta ? (meta.description || '') : '';
|
|
163
|
+
const newBody = deduplicateAndCleanBody(body, skillDirName, desc);
|
|
164
|
+
|
|
165
|
+
// Rebuild frontmatter with version: 4.0.0 and canonical scripts-binding
|
|
166
|
+
let updatedFrontmatter = frontmatter
|
|
167
|
+
.replace(/^version:\s*.*$/m, 'version: 4.0.0')
|
|
168
|
+
.replace(/^last-updated:\s*.*$/m, 'last-updated: 2026-09-07');
|
|
169
|
+
|
|
170
|
+
if (!updatedFrontmatter.includes('version:')) {
|
|
171
|
+
updatedFrontmatter += '\nversion: 4.0.0';
|
|
172
|
+
}
|
|
173
|
+
if (!updatedFrontmatter.includes('scripts-binding:')) {
|
|
174
|
+
updatedFrontmatter += '\nscripts-binding:\n - .agent/scripts/lint_runner.js\n - .agent/scripts/verify_all.js';
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const newContent = `---\n${updatedFrontmatter.trim()}\n---\n\n${newBody}\n`;
|
|
178
|
+
|
|
179
|
+
const vbcMatches = (newContent.match(/Verification-Before-Completion \(VBC\) Protocol/g) || []).length;
|
|
180
|
+
const trapsMatches = (newContent.match(/LLM-Specific Traps/g) || []).length;
|
|
181
|
+
const isDuplicated = vbcMatches > 1 || trapsMatches > 1;
|
|
182
|
+
|
|
183
|
+
const modified = newContent !== originalContent;
|
|
184
|
+
|
|
185
|
+
if (modified && FIX) {
|
|
186
|
+
fs.writeFileSync(skillFile, newContent, 'utf8');
|
|
187
|
+
if (SYNC_TO_ROOT && fs.existsSync(ROOT_SKILLS_DIR)) {
|
|
188
|
+
const rootSkillDir = path.join(ROOT_SKILLS_DIR, skillDirName);
|
|
189
|
+
if (!fs.existsSync(rootSkillDir)) fs.mkdirSync(rootSkillDir, { recursive: true });
|
|
190
|
+
fs.writeFileSync(path.join(rootSkillDir, 'SKILL.md'), newContent, 'utf8');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
name: skillDirName,
|
|
196
|
+
isDuplicated,
|
|
197
|
+
modified,
|
|
198
|
+
vbcMatches,
|
|
199
|
+
trapsMatches
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function main() {
|
|
204
|
+
console.log(`━━━ Tribunal Kit Skill Modernizer ━━━━━━━━━━━━━━━━━━━━━`);
|
|
205
|
+
console.log(`Target: ${SKILLS_DIR}`);
|
|
206
|
+
console.log(`Mode: ${FIX ? 'FIX (Overwriting files)' : DRY_RUN ? 'DRY-RUN (Simulated)' : 'VALIDATE (Read-only)'}`);
|
|
207
|
+
if (SYNC_TO_ROOT) console.log(`Sync: Enabled -> ${ROOT_SKILLS_DIR}`);
|
|
208
|
+
console.log();
|
|
209
|
+
|
|
210
|
+
const skillDirs = fs.readdirSync(SKILLS_DIR).filter(d => {
|
|
211
|
+
return fs.statSync(path.join(SKILLS_DIR, d)).isDirectory();
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
let totalSkills = 0;
|
|
215
|
+
let totalDuplicated = 0;
|
|
216
|
+
let totalModified = 0;
|
|
217
|
+
const errors = [];
|
|
218
|
+
|
|
219
|
+
for (const dir of skillDirs) {
|
|
220
|
+
totalSkills++;
|
|
221
|
+
const res = processSkill(dir);
|
|
222
|
+
if (!res) continue;
|
|
223
|
+
if (res.error) {
|
|
224
|
+
errors.push(`${dir}: ${res.error}`);
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (res.isDuplicated) {
|
|
228
|
+
totalDuplicated++;
|
|
229
|
+
}
|
|
230
|
+
if (res.modified) {
|
|
231
|
+
totalModified++;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
console.log(`📊 Summary:`);
|
|
236
|
+
console.log(` Total Skills Analyzed: ${totalSkills}`);
|
|
237
|
+
console.log(` Skills with Remaining Duplications: ${totalDuplicated}`);
|
|
238
|
+
console.log(` Skills Needing Modification: ${totalModified}`);
|
|
239
|
+
console.log(` Errors: ${errors.length}`);
|
|
240
|
+
|
|
241
|
+
if (errors.length > 0) {
|
|
242
|
+
console.log(`\n❌ Errors encountered:`);
|
|
243
|
+
errors.forEach(e => console.log(` - ${e}`));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
console.log();
|
|
247
|
+
if (!FIX && totalModified > 0) {
|
|
248
|
+
console.log(`💡 Run with --fix to apply cleanups and V4 schema across all ${totalModified} skills.`);
|
|
249
|
+
} else if (FIX) {
|
|
250
|
+
console.log(`✅ Successfully modernized and deduplicated skills to V4 schema!`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
main();
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"file": "migrate_refs.js",
|
|
3
|
-
"hash": "35b39052ff45b0b768fced3417c6245d9637ac18",
|
|
4
|
-
"riskScore": "Low",
|
|
5
|
-
"blastRadius": 0,
|
|
6
|
-
"imports": {
|
|
7
|
-
"fs": []
|
|
8
|
-
},
|
|
9
|
-
"dependents": [],
|
|
10
|
-
"content": "const fs = require('fs');\r\n\r\nconst filesToUpdate = [\r\n \".agent/workflows/swarm.md\",\r\n \".agent/workflows/session.md\",\r\n \".agent/rules/GEMINI.md\",\r\n \".agent/ARCHITECTURE.md\",\r\n \".agent/agents/swarm-worker-contracts.md\",\r\n \"AGENT_FLOW.md\",\r\n \"CHANGELOG.md\"\r\n];\r\n\r\nlet totalChanges = 0;\r\n\r\nfor (const filepath of filesToUpdate) {\r\n if (!fs.existsSync(filepath)) continue;\r\n let content = fs.readFileSync(filepath, 'utf8');\r\n \r\n // Explicit python calls\r\n content = content.replace(/python \\.agent\\/scripts\\/swarm_dispatcher\\.py/g, 'node .agent/scripts/swarm_dispatcher.js');\r\n content = content.replace(/python \\.agent\\/scripts\\/session_manager\\.py/g, 'node .agent/scripts/session_manager.js');\r\n content = content.replace(/python \\.agent\\/scripts\\/minify_context\\.py/g, 'node .agent/scripts/minify_context.js');\r\n content = content.replace(/python \\.agent\\/scripts\\/test_swarm_dispatcher\\.py/g, 'npx jest test/integration/swarm_dispatcher.test.js');\r\n \r\n // General filename references\r\n content = content.replace(/swarm_dispatcher\\.py/g, 'swarm_dispatcher.js');\r\n content = content.replace(/session_manager\\.py/g, 'session_manager.js');\r\n content = content.replace(/minify_context\\.py/g, 'minify_context.js');\r\n content = content.replace(/test_swarm_dispatcher\\.py/g, 'swarm_dispatcher.test.js');\r\n\r\n fs.writeFileSync(filepath, content, 'utf8');\r\n totalChanges++;\r\n}\r\nconsole.log(`Updated ${totalChanges} files.`);\r\n"
|
|
11
|
-
}
|