tribunal-kit 6.0.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/ARCHITECTURE.md +9 -6
- package/.agent/agents/accessibility-reviewer.md +23 -16
- package/.agent/agents/ai-code-reviewer.md +25 -21
- package/.agent/agents/anti-pattern-reviewer.md +12 -7
- package/.agent/agents/api-architect.md +1 -0
- package/.agent/agents/backend-specialist.md +23 -22
- package/.agent/agents/cloud-engineer.md +1 -0
- package/.agent/agents/code-archaeologist.md +1 -0
- package/.agent/agents/complexity-reviewer.md +10 -7
- package/.agent/agents/database-architect.md +3 -2
- package/.agent/agents/db-latency-auditor.md +6 -2
- package/.agent/agents/debugger.md +3 -2
- package/.agent/agents/dependency-reviewer.md +1 -0
- package/.agent/agents/devops-engineer.md +9 -8
- package/.agent/agents/documentation-writer.md +6 -5
- package/.agent/agents/explorer-agent.md +1 -0
- package/.agent/agents/frontend-reviewer.md +21 -17
- package/.agent/agents/frontend-specialist.md +23 -20
- package/.agent/agents/game-developer.md +1 -0
- package/.agent/agents/interaction-reviewer.md +10 -5
- package/.agent/agents/logic-reviewer.md +3 -0
- package/.agent/agents/minimalist-reviewer.md +6 -0
- package/.agent/agents/mobile-developer.md +7 -6
- package/.agent/agents/mobile-reviewer.md +14 -13
- package/.agent/agents/orchestrator.md +3 -0
- package/.agent/agents/penetration-tester.md +1 -0
- package/.agent/agents/performance-optimizer.md +6 -5
- package/.agent/agents/performance-reviewer.md +6 -6
- package/.agent/agents/pipeline-reviewer.md +144 -0
- package/.agent/agents/precedence-reviewer.md +1 -0
- package/.agent/agents/product-manager.md +1 -0
- package/.agent/agents/product-owner.md +1 -0
- package/.agent/agents/product-reviewer.md +12 -7
- package/.agent/agents/project-planner.md +3 -0
- package/.agent/agents/qa-automation-engineer.md +50 -43
- package/.agent/agents/resilience-reviewer.md +1 -0
- package/.agent/agents/schema-reviewer.md +1 -0
- package/.agent/agents/security-auditor.md +24 -24
- package/.agent/agents/seo-specialist.md +33 -23
- package/.agent/agents/sql-reviewer.md +5 -4
- package/.agent/agents/supervisor-agent.md +12 -2
- package/.agent/agents/swarm-worker-contracts.md +13 -13
- package/.agent/agents/swarm-worker-registry.md +51 -51
- package/.agent/agents/system-architect.md +1 -0
- package/.agent/agents/test-coverage-reviewer.md +25 -22
- package/.agent/agents/test-engineer.md +12 -11
- package/.agent/agents/throughput-optimizer.md +45 -40
- package/.agent/agents/type-safety-reviewer.md +5 -4
- package/.agent/agents/ui-ux-auditor.md +6 -4
- package/.agent/agents/ui-visual-auditor.md +3 -0
- package/.agent/agents/ux-reviewer.md +11 -6
- package/.agent/agents/visual-reviewer.md +11 -6
- package/.agent/agents/vitals-reviewer.md +5 -4
- package/.agent/history/memory/.memory.idx +1532 -1
- package/.agent/history/memory/MEMORY.md +102 -1
- package/.agent/mcp_config.json +1 -6
- package/.agent/routing_index.json +2033 -263
- package/.agent/rules/GEMINI.md +11 -9
- package/.agent/rules/GEMINI_PLANNER.md +19 -21
- package/.agent/scripts/_colors.js +52 -54
- package/.agent/scripts/_utils.js +52 -53
- package/.agent/scripts/auto_preview.js +39 -43
- package/.agent/scripts/bundle_analyzer.js +47 -60
- package/.agent/scripts/case_law_manager.js +200 -294
- package/.agent/scripts/checklist.js +73 -94
- package/.agent/scripts/cicd_validator.js +305 -0
- package/.agent/scripts/compile_router.py +4 -111
- package/.agent/scripts/context_broker.js +317 -412
- package/.agent/scripts/contract_engine.js +402 -0
- package/.agent/scripts/dependency_analyzer.js +112 -124
- package/.agent/scripts/graph_builder.js +75 -103
- package/.agent/scripts/graph_visualizer.js +10 -12
- package/.agent/scripts/graph_zoom.js +38 -55
- package/.agent/scripts/guardrail_engine.js +195 -145
- package/.agent/scripts/impact_classifier.js +55 -30
- package/.agent/scripts/inner_loop_validator.js +108 -159
- package/.agent/scripts/integrity_manifest.js +59 -67
- package/.agent/scripts/lint_runner.js +65 -75
- package/.agent/scripts/marathon_harness.js +131 -208
- package/.agent/scripts/migrate_skills_frontmatter.py +4 -63
- package/.agent/scripts/minify_context.js +29 -33
- package/.agent/scripts/minimal_change_engine.js +95 -87
- package/.agent/scripts/mutation_runner.js +46 -62
- package/.agent/scripts/pipeline_engine.js +320 -209
- package/.agent/scripts/prompt_compiler.js +118 -93
- package/.agent/scripts/schema_validator.js +73 -121
- package/.agent/scripts/security_scan.js +88 -117
- package/.agent/scripts/session_manager.js +52 -69
- package/.agent/scripts/signal_detector.js +24 -22
- package/.agent/scripts/skill_evolution.js +184 -245
- package/.agent/scripts/skill_integrator.js +35 -48
- package/.agent/scripts/socratic_gate_policy.js +15 -12
- package/.agent/scripts/strengthen_skills.js +29 -33
- package/.agent/scripts/swarm_dispatcher.js +120 -151
- package/.agent/scripts/test_runner.js +54 -56
- package/.agent/scripts/token_budget_broker.js +9 -7
- package/.agent/scripts/trace_engine.js +126 -0
- package/.agent/scripts/verify_all.js +76 -93
- package/.agent/scripts/visual_audit.js +16 -21
- package/.agent/skill_topic_map.json +22 -3
- package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
- package/.agent/skills/60fps-animation/SKILL.md +7 -0
- package/.agent/skills/accessible-animation/SKILL.md +5 -1
- package/.agent/skills/adapt/SKILL.md +7 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
- package/.agent/skills/agent-organizer/SKILL.md +1 -0
- package/.agent/skills/agentic-patterns/SKILL.md +33 -25
- package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -2
- package/.agent/skills/ai-app-hardening/SKILL.md +9 -8
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
- package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
- package/.agent/skills/animation-systems/SKILL.md +11 -10
- package/.agent/skills/antfu-conventions/SKILL.md +7 -2
- package/.agent/skills/api-patterns/SKILL.md +14 -10
- package/.agent/skills/api-security-auditor/SKILL.md +15 -14
- package/.agent/skills/app-builder/SKILL.md +1 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
- package/.agent/skills/apple-design/SKILL.md +8 -7
- package/.agent/skills/architecture/SKILL.md +3 -2
- package/.agent/skills/audit-and-fix/SKILL.md +8 -5
- package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
- package/.agent/skills/backend-security-expert/SKILL.md +1 -0
- package/.agent/skills/baseline-ui/SKILL.md +8 -7
- package/.agent/skills/bash-linux/SKILL.md +1 -0
- package/.agent/skills/behavioral-modes/SKILL.md +1 -0
- package/.agent/skills/better-colors/SKILL.md +11 -7
- package/.agent/skills/better-typography/SKILL.md +30 -16
- package/.agent/skills/better-ui/SKILL.md +17 -10
- package/.agent/skills/bolder/SKILL.md +6 -0
- package/.agent/skills/brainstorming/SKILL.md +6 -4
- package/.agent/skills/browser-native-ai/SKILL.md +5 -4
- package/.agent/skills/build-primitive/SKILL.md +5 -0
- package/.agent/skills/building-native-ui/SKILL.md +1 -0
- package/.agent/skills/cicd-pro/SKILL.md +2 -1
- package/.agent/skills/clarify/SKILL.md +19 -14
- package/.agent/skills/clean-code/SKILL.md +16 -15
- package/.agent/skills/cloud-architect/SKILL.md +1 -0
- package/.agent/skills/cobejs/SKILL.md +7 -9
- package/.agent/skills/code-review-checklist/SKILL.md +1 -0
- package/.agent/skills/codebase-design/SKILL.md +7 -2
- package/.agent/skills/colorize/SKILL.md +8 -3
- package/.agent/skills/compact-landing/SKILL.md +8 -3
- package/.agent/skills/company-logos/SKILL.md +6 -0
- package/.agent/skills/config-validator/SKILL.md +10 -9
- package/.agent/skills/containerization-pro/SKILL.md +6 -5
- package/.agent/skills/context-engineering-pro/SKILL.md +5 -4
- package/.agent/skills/create-design-md/SKILL.md +13 -5
- package/.agent/skills/critique/SKILL.md +10 -8
- package/.agent/skills/csharp-developer/SKILL.md +1 -0
- package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
- package/.agent/skills/database-design/SKILL.md +2 -1
- package/.agent/skills/delight/SKILL.md +6 -0
- package/.agent/skills/deployment-procedures/SKILL.md +2 -1
- package/.agent/skills/design-lab/SKILL.md +5 -0
- package/.agent/skills/devops-engineer/SKILL.md +3 -2
- package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
- package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
- package/.agent/skills/distill/SKILL.md +7 -2
- package/.agent/skills/documentation-templates/SKILL.md +3 -2
- package/.agent/skills/domain-modeling/SKILL.md +12 -4
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +7 -3
- package/.agent/skills/edge-ai-mobile/SKILL.md +5 -1
- package/.agent/skills/edge-computing/SKILL.md +9 -8
- package/.agent/skills/emil-design-eng/SKILL.md +43 -27
- package/.agent/skills/error-resilience/SKILL.md +34 -16
- package/.agent/skills/expo-router-v4/SKILL.md +2 -1
- package/.agent/skills/extract-design-system/SKILL.md +12 -11
- package/.agent/skills/fabel-protocol/SKILL.md +24 -17
- package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
- package/.agent/skills/fixing-metadata/SKILL.md +24 -13
- package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
- package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
- package/.agent/skills/frontend-design/SKILL.md +21 -13
- package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
- package/.agent/skills/game-design-expert/SKILL.md +1 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
- package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
- package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
- package/.agent/skills/git-pro/SKILL.md +10 -9
- package/.agent/skills/github-operations/SKILL.md +2 -1
- package/.agent/skills/gpt-taste/SKILL.md +7 -0
- package/.agent/skills/gsap-core/SKILL.md +26 -22
- package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
- package/.agent/skills/gsap-performance/SKILL.md +4 -3
- package/.agent/skills/gsap-plugins/SKILL.md +34 -33
- package/.agent/skills/gsap-react/SKILL.md +9 -8
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
- package/.agent/skills/gsap-timeline/SKILL.md +18 -15
- package/.agent/skills/gsap-utils/SKILL.md +25 -24
- package/.agent/skills/harden/SKILL.md +9 -3
- package/.agent/skills/harness-protocol/SKILL.md +1 -0
- package/.agent/skills/i18n-localization/SKILL.md +10 -9
- package/.agent/skills/impeccable/SKILL.md +5 -0
- package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
- package/.agent/skills/improve-ui/SKILL.md +12 -5
- package/.agent/skills/intelligent-routing/SKILL.md +7 -6
- package/.agent/skills/knowledge-graph/SKILL.md +1 -0
- package/.agent/skills/landing-page/SKILL.md +1 -0
- package/.agent/skills/lint-and-validate/SKILL.md +9 -4
- package/.agent/skills/llm-engineering/SKILL.md +55 -54
- package/.agent/skills/local-first/SKILL.md +20 -19
- package/.agent/skills/local-first-architecture/SKILL.md +6 -1
- package/.agent/skills/lottie-animation/SKILL.md +7 -3
- package/.agent/skills/marquee-loop/SKILL.md +1 -0
- package/.agent/skills/masked-reveal/SKILL.md +17 -4
- package/.agent/skills/mcp-builder/SKILL.md +13 -10
- package/.agent/skills/micro-interaction/SKILL.md +20 -5
- package/.agent/skills/mobile-design/SKILL.md +26 -15
- package/.agent/skills/monorepo-management/SKILL.md +3 -2
- package/.agent/skills/morphing-icons/SKILL.md +16 -6
- package/.agent/skills/motion-engineering/SKILL.md +19 -15
- package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
- package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
- package/.agent/skills/observability/SKILL.md +45 -44
- package/.agent/skills/opentelemetry-observability/SKILL.md +2 -1
- package/.agent/skills/page-transition-animation/SKILL.md +6 -3
- package/.agent/skills/parallel-agents/SKILL.md +7 -2
- package/.agent/skills/performance-profiling/SKILL.md +24 -13
- package/.agent/skills/plan-writing/SKILL.md +1 -0
- package/.agent/skills/platform-engineer/SKILL.md +3 -2
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +3 -2
- package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
- package/.agent/skills/polish/SKILL.md +13 -12
- package/.agent/skills/powershell-windows/SKILL.md +1 -0
- package/.agent/skills/pricing-page/SKILL.md +8 -3
- package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
- package/.agent/skills/progressive-blur/SKILL.md +9 -4
- package/.agent/skills/project-idioms/SKILL.md +1 -0
- package/.agent/skills/property-based-testing/SKILL.md +10 -12
- package/.agent/skills/python-patterns/SKILL.md +1 -0
- package/.agent/skills/python-pro/SKILL.md +1 -0
- package/.agent/skills/quieter/SKILL.md +6 -0
- package/.agent/skills/react-doctor/SKILL.md +6 -0
- package/.agent/skills/react-specialist/SKILL.md +32 -28
- package/.agent/skills/readme-builder/SKILL.md +1 -0
- package/.agent/skills/realtime-patterns/SKILL.md +34 -33
- package/.agent/skills/red-team-tactics/SKILL.md +1 -0
- package/.agent/skills/redesign-skill/SKILL.md +6 -0
- package/.agent/skills/review-animations/SKILL.md +5 -2
- package/.agent/skills/review-animations/STANDARDS.md +37 -23
- package/.agent/skills/rust-pro/SKILL.md +1 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
- package/.agent/skills/server-management/SKILL.md +1 -0
- package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
- package/.agent/skills/shape/SKILL.md +9 -2
- package/.agent/skills/skill-creator/SKILL.md +1 -0
- package/.agent/skills/soft-skill/SKILL.md +6 -0
- package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
- package/.agent/skills/sql-pro/SKILL.md +1 -0
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
- package/.agent/skills/svg-animation/SKILL.md +16 -7
- package/.agent/skills/swiftui-expert/SKILL.md +1 -0
- package/.agent/skills/swiss-design/SKILL.md +5 -0
- package/.agent/skills/system-design-pro/SKILL.md +1 -0
- package/.agent/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
- package/.agent/skills/taste-skill/SKILL.md +6 -0
- package/.agent/skills/tdd-workflow/SKILL.md +5 -0
- package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
- package/.agent/skills/testing-patterns/SKILL.md +123 -115
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
- package/.agent/skills/thinking-protocol/SKILL.md +3 -0
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
- package/.agent/skills/transitions-dev/SKILL.md +19 -6
- package/.agent/skills/trend-researcher/SKILL.md +1 -0
- package/.agent/skills/typescript-advanced/SKILL.md +23 -18
- package/.agent/skills/typeset/SKILL.md +10 -1
- package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
- package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
- package/.agent/skills/ui-skills-root/SKILL.md +39 -38
- package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
- package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
- package/.agent/skills/vector-search-pgvector/SKILL.md +3 -2
- package/.agent/skills/vue-expert/SKILL.md +22 -19
- package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
- package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
- package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
- package/.agent/skills/web-quality-audit/SKILL.md +5 -0
- package/.agent/skills/webapp-testing/SKILL.md +14 -13
- package/.agent/skills/webgpu-performance/SKILL.md +1 -0
- package/.agent/skills/whimsy-injector/SKILL.md +9 -5
- package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
- package/.agent/skills/zero-trust-passkeys/SKILL.md +11 -6
- package/.agent/templates/DESIGN.md +119 -110
- package/.agent/templates/design-tokens.json +9 -6
- package/.agent/workflows/acf.md +1 -0
- package/.agent/workflows/api-tester.md +1 -0
- package/.agent/workflows/audit.md +1 -0
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/changelog.md +1 -0
- package/.agent/workflows/contract.md +60 -0
- package/.agent/workflows/create.md +1 -0
- package/.agent/workflows/debug.md +1 -0
- package/.agent/workflows/deploy.md +1 -0
- package/.agent/workflows/enhance.md +1 -0
- package/.agent/workflows/fix-ci.md +89 -0
- package/.agent/workflows/fix.md +1 -0
- package/.agent/workflows/generate.md +1 -0
- package/.agent/workflows/marathon.md +1 -0
- package/.agent/workflows/migrate.md +1 -0
- package/.agent/workflows/minimal.md +9 -7
- package/.agent/workflows/orchestrate.md +1 -0
- package/.agent/workflows/performance-benchmarker.md +1 -0
- package/.agent/workflows/pipeline.md +26 -21
- package/.agent/workflows/plan.md +1 -0
- package/.agent/workflows/preview.md +1 -0
- package/.agent/workflows/refactor.md +3 -2
- package/.agent/workflows/review-ai.md +4 -3
- package/.agent/workflows/review.md +1 -0
- package/.agent/workflows/session.md +1 -0
- package/.agent/workflows/status.md +1 -0
- package/.agent/workflows/strengthen-skills.md +1 -0
- package/.agent/workflows/super-prompt.md +1 -0
- package/.agent/workflows/swarm.md +15 -3
- package/.agent/workflows/test.md +8 -7
- package/.agent/workflows/tribunal-backend.md +3 -2
- package/.agent/workflows/tribunal-cicd.md +104 -0
- package/.agent/workflows/tribunal-database.md +1 -0
- package/.agent/workflows/tribunal-frontend.md +8 -6
- package/.agent/workflows/tribunal-full.md +2 -1
- package/.agent/workflows/tribunal-mobile.md +6 -5
- package/.agent/workflows/tribunal-performance.md +1 -0
- package/.agent/workflows/tribunal-speed.md +1 -0
- package/.agent/workflows/tribunal-ui.md +29 -21
- package/.agent/workflows/ui-ux-pro-max.md +19 -15
- package/CONTRIBUTING.md +3 -3
- package/README.md +94 -44
- package/SECURITY.md +10 -10
- package/bin/mcp-server.js +385 -252
- package/bin/tribunal-kit.js +29 -30
- package/bin/wrapper.js +40 -46
- package/dist/cli.js +6 -0
- package/dist/commands/case.js +2 -0
- package/dist/commands/contract.js +440 -0
- package/dist/commands/status.js +6 -0
- package/dist/index.d.ts +8 -1
- package/package.json +13 -12
- package/scripts/benchmark.js +62 -86
- package/scripts/changelog.js +67 -73
- package/scripts/fix-vbc.js +13 -15
- package/scripts/fix-vbc.ps1 +2 -118
- package/scripts/stress_benchmark.js +358 -0
- package/scripts/sync-version.js +71 -41
- package/scripts/validate-payload.js +23 -30
- package/scripts/visual_audit.js +23 -13
|
@@ -14,18 +14,17 @@
|
|
|
14
14
|
* node .agent/scripts/skill_integrator.js --report --verify
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
'use strict';
|
|
18
18
|
|
|
19
|
-
const fs = require(
|
|
20
|
-
const path = require(
|
|
21
|
-
const { execFileSync } = require(
|
|
19
|
+
const fs = require('fs');
|
|
20
|
+
const path = require('path');
|
|
21
|
+
const { execFileSync } = require('child_process');
|
|
22
22
|
|
|
23
|
-
const { CYAN, GREEN, YELLOW, RED, BOLD, RESET } = require(
|
|
23
|
+
const { CYAN, GREEN, YELLOW, RED, BOLD, RESET } = require('./_colors');
|
|
24
24
|
|
|
25
|
-
const REPORT_FILE =
|
|
26
|
-
|
|
27
|
-
const { findAgentDir } = require("./_utils");
|
|
25
|
+
const REPORT_FILE = 'skill-integration-report.md';
|
|
28
26
|
|
|
27
|
+
const { findAgentDir } = require('./_utils');
|
|
29
28
|
|
|
30
29
|
function getAssociatedScript(skillDir, scriptsDir) {
|
|
31
30
|
/** Check if the skill has an explicit frontmatter script or an implicit script file. */
|
|
@@ -43,10 +42,10 @@ function getAssociatedScript(skillDir, scriptsDir) {
|
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
// 2. Explicit check: does the SKILL.md define 'script:' in its frontmatter?
|
|
46
|
-
const skillMd = path.join(skillDir,
|
|
45
|
+
const skillMd = path.join(skillDir, 'SKILL.md');
|
|
47
46
|
if (fs.existsSync(skillMd)) {
|
|
48
47
|
try {
|
|
49
|
-
const content = fs.readFileSync(skillMd,
|
|
48
|
+
const content = fs.readFileSync(skillMd, 'utf8');
|
|
50
49
|
const match = content.match(/---([\s\S]*?)---/);
|
|
51
50
|
if (match) {
|
|
52
51
|
const frontmatter = match[1];
|
|
@@ -64,8 +63,8 @@ function getAssociatedScript(skillDir, scriptsDir) {
|
|
|
64
63
|
}
|
|
65
64
|
|
|
66
65
|
function scanAllSkills(agentDir) {
|
|
67
|
-
const skillsDir = path.join(agentDir,
|
|
68
|
-
const scriptsDir = path.join(agentDir,
|
|
66
|
+
const skillsDir = path.join(agentDir, 'skills');
|
|
67
|
+
const scriptsDir = path.join(agentDir, 'scripts');
|
|
69
68
|
|
|
70
69
|
if (!fs.existsSync(skillsDir) || !fs.existsSync(scriptsDir)) {
|
|
71
70
|
console.log(
|
|
@@ -105,38 +104,36 @@ function verifyScript(scriptPathStr, workspaceRoot) {
|
|
|
105
104
|
}
|
|
106
105
|
|
|
107
106
|
try {
|
|
108
|
-
if (fullPath.endsWith(
|
|
107
|
+
if (fullPath.endsWith('.js')) {
|
|
109
108
|
// use node to syntax check
|
|
110
|
-
execFileSync(
|
|
111
|
-
} else if (fullPath.endsWith(
|
|
109
|
+
execFileSync('node', ['-c', fullPath], { stdio: 'pipe' });
|
|
110
|
+
} else if (fullPath.endsWith('.py')) {
|
|
112
111
|
// use python to syntax check
|
|
113
|
-
execFileSync(
|
|
112
|
+
execFileSync('python', ['-m', 'py_compile', fullPath], { stdio: 'pipe' });
|
|
114
113
|
}
|
|
115
|
-
return { valid: true, message:
|
|
114
|
+
return { valid: true, message: 'Syntax OK' };
|
|
116
115
|
} catch (e) {
|
|
117
116
|
let msg = e.message;
|
|
118
117
|
if (e.stderr) {
|
|
119
118
|
msg = e.stderr.toString().trim();
|
|
120
119
|
}
|
|
121
|
-
return { valid: false, message: `Syntax error: ${msg.split(
|
|
120
|
+
return { valid: false, message: `Syntax error: ${msg.split('\n')[0]}` };
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
function checkSkill(skillName, agentDir) {
|
|
126
|
-
const skillDir = path.join(agentDir,
|
|
127
|
-
const scriptsDir = path.join(agentDir,
|
|
125
|
+
const skillDir = path.join(agentDir, 'skills', skillName);
|
|
126
|
+
const scriptsDir = path.join(agentDir, 'scripts');
|
|
128
127
|
|
|
129
128
|
if (!fs.existsSync(skillDir)) {
|
|
130
|
-
console.log(
|
|
131
|
-
`${YELLOW}Skill '${skillName}' not found in .agent/skills/${RESET}`,
|
|
132
|
-
);
|
|
129
|
+
console.log(`${YELLOW}Skill '${skillName}' not found in .agent/skills/${RESET}`);
|
|
133
130
|
return;
|
|
134
131
|
}
|
|
135
132
|
|
|
136
133
|
const scriptPath = getAssociatedScript(skillDir, scriptsDir);
|
|
137
134
|
if (scriptPath) {
|
|
138
135
|
console.log(`${GREEN}✓ Associated script found:${RESET} ${scriptPath}`);
|
|
139
|
-
const runner = scriptPath.endsWith(
|
|
136
|
+
const runner = scriptPath.endsWith('.py') ? 'python' : 'node';
|
|
140
137
|
console.log(`\nTo execute:\n ${runner} ${scriptPath}`);
|
|
141
138
|
} else {
|
|
142
139
|
console.log(`No executable script mapped for '${skillName}'.`);
|
|
@@ -158,7 +155,7 @@ function cmdReport(integratedSkills, workspaceRoot) {
|
|
|
158
155
|
for (const skill of keys) {
|
|
159
156
|
const script = integratedSkills[skill];
|
|
160
157
|
const scriptPath = path.resolve(workspaceRoot, script);
|
|
161
|
-
const exists = fs.existsSync(scriptPath) ?
|
|
158
|
+
const exists = fs.existsSync(scriptPath) ? '✅' : '❌ Missing';
|
|
162
159
|
content += `| \`${skill}\` | \`${script}\` | ${exists} |\n`;
|
|
163
160
|
}
|
|
164
161
|
|
|
@@ -166,7 +163,7 @@ function cmdReport(integratedSkills, workspaceRoot) {
|
|
|
166
163
|
content += `_Run \`node .agent/scripts/skill_integrator.js --verify\` to validate syntax of all mapped scripts._\n`;
|
|
167
164
|
|
|
168
165
|
const reportPath = path.join(workspaceRoot, REPORT_FILE);
|
|
169
|
-
fs.writeFileSync(reportPath, content,
|
|
166
|
+
fs.writeFileSync(reportPath, content, 'utf8');
|
|
170
167
|
|
|
171
168
|
console.log(`${GREEN}✅ Report written to:${RESET} ${reportPath}`);
|
|
172
169
|
}
|
|
@@ -193,13 +190,9 @@ function cmdVerify(integratedSkills, workspaceRoot) {
|
|
|
193
190
|
const script = integratedSkills[skill];
|
|
194
191
|
const res = verifyScript(script, workspaceRoot);
|
|
195
192
|
if (res.valid) {
|
|
196
|
-
console.log(
|
|
197
|
-
` ${GREEN}✅ PASS${RESET} ${BOLD}${skill}${RESET} → ${script}`,
|
|
198
|
-
);
|
|
193
|
+
console.log(` ${GREEN}✅ PASS${RESET} ${BOLD}${skill}${RESET} → ${script}`);
|
|
199
194
|
} else {
|
|
200
|
-
console.log(
|
|
201
|
-
` ${RED}❌ FAIL${RESET} ${BOLD}${skill}${RESET} → ${script}`,
|
|
202
|
-
);
|
|
195
|
+
console.log(` ${RED}❌ FAIL${RESET} ${BOLD}${skill}${RESET} → ${script}`);
|
|
203
196
|
console.log(` ${RED}${res.message}${RESET}`);
|
|
204
197
|
allPassed = false;
|
|
205
198
|
failures.push(skill);
|
|
@@ -208,9 +201,7 @@ function cmdVerify(integratedSkills, workspaceRoot) {
|
|
|
208
201
|
|
|
209
202
|
console.log(`\n${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);
|
|
210
203
|
if (allPassed) {
|
|
211
|
-
console.log(
|
|
212
|
-
`${GREEN}All ${keys.length} mapped scripts passed verification.${RESET}\n`,
|
|
213
|
-
);
|
|
204
|
+
console.log(`${GREEN}All ${keys.length} mapped scripts passed verification.${RESET}\n`);
|
|
214
205
|
} else {
|
|
215
206
|
console.log(
|
|
216
207
|
`${RED}${failures.length} script(s) failed verification. Fix before deploying.${RESET}\n`,
|
|
@@ -223,7 +214,7 @@ function cmdVerify(integratedSkills, workspaceRoot) {
|
|
|
223
214
|
function main() {
|
|
224
215
|
const rawArgs = process.argv.slice(2);
|
|
225
216
|
|
|
226
|
-
if (rawArgs.length > 0 && [
|
|
217
|
+
if (rawArgs.length > 0 && ['-h', '--help', 'help'].includes(rawArgs[0])) {
|
|
227
218
|
console.log(`
|
|
228
219
|
${BOLD}skill_integrator.js${RESET} — Skill-Script Integrator
|
|
229
220
|
|
|
@@ -245,18 +236,18 @@ ${BOLD}Options:${RESET}
|
|
|
245
236
|
|
|
246
237
|
// Parse args
|
|
247
238
|
let skillArg = null;
|
|
248
|
-
let workspaceArg =
|
|
239
|
+
let workspaceArg = '.';
|
|
249
240
|
let reportArg = false;
|
|
250
241
|
let verifyArg = false;
|
|
251
242
|
|
|
252
243
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
253
|
-
if (rawArgs[i] ===
|
|
244
|
+
if (rawArgs[i] === '--skill' && i + 1 < rawArgs.length) {
|
|
254
245
|
skillArg = rawArgs[++i];
|
|
255
|
-
} else if (rawArgs[i] ===
|
|
246
|
+
} else if (rawArgs[i] === '--workspace' && i + 1 < rawArgs.length) {
|
|
256
247
|
workspaceArg = rawArgs[++i];
|
|
257
|
-
} else if (rawArgs[i] ===
|
|
248
|
+
} else if (rawArgs[i] === '--report') {
|
|
258
249
|
reportArg = true;
|
|
259
|
-
} else if (rawArgs[i] ===
|
|
250
|
+
} else if (rawArgs[i] === '--verify') {
|
|
260
251
|
verifyArg = true;
|
|
261
252
|
}
|
|
262
253
|
}
|
|
@@ -293,19 +284,15 @@ ${BOLD}Options:${RESET}
|
|
|
293
284
|
if (!reportArg && !verifyArg) {
|
|
294
285
|
const keys = Object.keys(integratedSkills).sort();
|
|
295
286
|
if (keys.length === 0) {
|
|
296
|
-
console.log(
|
|
287
|
+
console.log('No integrated scripts found for any active skills.');
|
|
297
288
|
} else {
|
|
298
|
-
console.log(
|
|
299
|
-
`\n${BOLD}${CYAN}--- Skill-Script Integrations (${keys.length}) ---${RESET}\n`,
|
|
300
|
-
);
|
|
289
|
+
console.log(`\n${BOLD}${CYAN}--- Skill-Script Integrations (${keys.length}) ---${RESET}\n`);
|
|
301
290
|
for (const skill of keys) {
|
|
302
291
|
const script = integratedSkills[skill];
|
|
303
292
|
console.log(` ${BOLD}${skill}${RESET}`);
|
|
304
293
|
console.log(` ↳ ${GREEN}${script}${RESET}\n`);
|
|
305
294
|
}
|
|
306
|
-
console.log(
|
|
307
|
-
`${CYAN}To run a skill script, use: python <path> or node <path>${RESET}\n`,
|
|
308
|
-
);
|
|
295
|
+
console.log(`${CYAN}To run a skill script, use: python <path> or node <path>${RESET}\n`);
|
|
309
296
|
}
|
|
310
297
|
}
|
|
311
298
|
}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* - Tier 3: Trigger Socratic Gate unless explicitly overridden with --no-gate or --express.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
'use strict';
|
|
14
14
|
|
|
15
|
-
const { parseArgs } = require(
|
|
15
|
+
const { parseArgs } = require('./_utils');
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Evaluates whether the Socratic Gate should be engaged.
|
|
@@ -20,31 +20,34 @@ const { parseArgs } = require("./_utils");
|
|
|
20
20
|
* @returns {Object} { shouldBlock, reason }
|
|
21
21
|
*/
|
|
22
22
|
function evaluateSocraticGate(opts = {}) {
|
|
23
|
-
const tier = typeof opts.tier ===
|
|
24
|
-
const ambiguityScore = typeof opts.ambiguityScore ===
|
|
23
|
+
const tier = typeof opts.tier === 'number' ? opts.tier : 1;
|
|
24
|
+
const ambiguityScore = typeof opts.ambiguityScore === 'number' ? opts.ambiguityScore : 0.2;
|
|
25
25
|
const flags = opts.flags || {};
|
|
26
26
|
|
|
27
|
-
if (flags[
|
|
28
|
-
return { shouldBlock: false, reason:
|
|
27
|
+
if (flags['no-gate'] || flags.express || flags.force) {
|
|
28
|
+
return { shouldBlock: false, reason: 'Explicit user override (--no-gate / --express)' };
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
if (tier === 0) {
|
|
32
|
-
return { shouldBlock: false, reason:
|
|
32
|
+
return { shouldBlock: false, reason: 'Tier 0 Fast-Pass (low impact)' };
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
if (tier === 1) {
|
|
36
|
-
return { shouldBlock: false, reason:
|
|
36
|
+
return { shouldBlock: false, reason: 'Tier 1 Express Pass (single component / logic edit)' };
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
if (tier === 2) {
|
|
40
40
|
if (ambiguityScore > 0.5) {
|
|
41
|
-
return {
|
|
41
|
+
return {
|
|
42
|
+
shouldBlock: true,
|
|
43
|
+
reason: `Tier 2 ambiguity exceeds threshold (${ambiguityScore} > 0.5)`,
|
|
44
|
+
};
|
|
42
45
|
}
|
|
43
|
-
return { shouldBlock: false, reason:
|
|
46
|
+
return { shouldBlock: false, reason: 'Tier 2 low-ambiguity edit (gate bypassed)' };
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
// Tier 3
|
|
47
|
-
return { shouldBlock: true, reason:
|
|
50
|
+
return { shouldBlock: true, reason: 'Tier 3 Full Gauntlet (high risk / architectural change)' };
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
if (require.main === module) {
|
|
@@ -52,7 +55,7 @@ if (require.main === module) {
|
|
|
52
55
|
const result = evaluateSocraticGate({
|
|
53
56
|
tier: args.tier ? parseInt(args.tier, 10) : 1,
|
|
54
57
|
ambiguityScore: args.ambiguity ? parseFloat(args.ambiguity) : 0.2,
|
|
55
|
-
flags: args
|
|
58
|
+
flags: args,
|
|
56
59
|
});
|
|
57
60
|
console.log(JSON.stringify(result, null, 2));
|
|
58
61
|
}
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* node .agent/scripts/strengthen_skills.js . --skills-path /custom/skills/dir
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
'use strict';
|
|
13
13
|
|
|
14
|
-
const fs = require(
|
|
15
|
-
const path = require(
|
|
14
|
+
const fs = require('fs');
|
|
15
|
+
const path = require('path');
|
|
16
16
|
|
|
17
|
-
const { RED, GREEN, YELLOW, BLUE, BOLD, RESET } = require(
|
|
17
|
+
const { RED, GREEN, YELLOW, BLUE, BOLD, RESET } = require('./_colors.js');
|
|
18
18
|
|
|
19
19
|
const GUARDRAILS_BLOCK = `
|
|
20
20
|
|
|
@@ -60,19 +60,16 @@ Review these questions before confirming output:
|
|
|
60
60
|
- ✅ **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.
|
|
61
61
|
`;
|
|
62
62
|
|
|
63
|
-
const TRIBUNAL_MARKERS = [
|
|
64
|
-
"Tribunal Integration",
|
|
65
|
-
"Tribunal Integration (Anti-Hallucination)",
|
|
66
|
-
];
|
|
63
|
+
const TRIBUNAL_MARKERS = ['Tribunal Integration', 'Tribunal Integration (Anti-Hallucination)'];
|
|
67
64
|
|
|
68
|
-
const VBC_MARKERS = [
|
|
65
|
+
const VBC_MARKERS = ['Verification-Before-Completion', 'VBC Protocol'];
|
|
69
66
|
|
|
70
67
|
function hasTribunalBlock(content) {
|
|
71
|
-
return TRIBUNAL_MARKERS.some(
|
|
68
|
+
return TRIBUNAL_MARKERS.some(m => content.includes(m));
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
function hasVbcBlock(content) {
|
|
75
|
-
return VBC_MARKERS.some(
|
|
72
|
+
return VBC_MARKERS.some(m => content.includes(m));
|
|
76
73
|
}
|
|
77
74
|
|
|
78
75
|
function header(title) {
|
|
@@ -94,54 +91,54 @@ function fail(msg) {
|
|
|
94
91
|
function processSkill(skillMd, dryRun) {
|
|
95
92
|
const skillName = path.basename(path.dirname(skillMd));
|
|
96
93
|
try {
|
|
97
|
-
const content = fs.readFileSync(skillMd,
|
|
94
|
+
const content = fs.readFileSync(skillMd, 'utf8');
|
|
98
95
|
const hasTribunal = hasTribunalBlock(content);
|
|
99
96
|
const hasVbc = hasVbcBlock(content);
|
|
100
97
|
|
|
101
98
|
if (hasTribunal && hasVbc) {
|
|
102
99
|
skip(`${skillName} — already has Tribunal + VBC blocks`);
|
|
103
|
-
return
|
|
100
|
+
return 'skipped';
|
|
104
101
|
}
|
|
105
102
|
|
|
106
103
|
const missing = [];
|
|
107
|
-
if (!hasTribunal) missing.push(
|
|
108
|
-
if (!hasVbc) missing.push(
|
|
104
|
+
if (!hasTribunal) missing.push('Tribunal Integration');
|
|
105
|
+
if (!hasVbc) missing.push('VBC Protocol');
|
|
109
106
|
|
|
110
107
|
if (dryRun) {
|
|
111
|
-
warn(`[DRY RUN] ${skillName} — would add: ${missing.join(
|
|
112
|
-
return
|
|
108
|
+
warn(`[DRY RUN] ${skillName} — would add: ${missing.join(', ')}`);
|
|
109
|
+
return 'updated';
|
|
113
110
|
}
|
|
114
111
|
|
|
115
|
-
fs.appendFileSync(skillMd, GUARDRAILS_BLOCK,
|
|
116
|
-
ok(`${skillName} — strengthened (${missing.join(
|
|
117
|
-
return
|
|
112
|
+
fs.appendFileSync(skillMd, GUARDRAILS_BLOCK, 'utf8');
|
|
113
|
+
ok(`${skillName} — strengthened (${missing.join(', ')} added)`);
|
|
114
|
+
return 'updated';
|
|
118
115
|
} catch (e) {
|
|
119
116
|
fail(`${skillName} — ${e.message}`);
|
|
120
|
-
return
|
|
117
|
+
return 'error';
|
|
121
118
|
}
|
|
122
119
|
}
|
|
123
120
|
|
|
124
121
|
function main() {
|
|
125
122
|
const args = process.argv.slice(2);
|
|
126
|
-
let targetPath =
|
|
123
|
+
let targetPath = '.';
|
|
127
124
|
let dryRun = false;
|
|
128
125
|
let skillArg = null;
|
|
129
126
|
let skillsPathArg = null;
|
|
130
127
|
|
|
131
128
|
let i = 0;
|
|
132
129
|
while (i < args.length) {
|
|
133
|
-
if (args[i] ===
|
|
130
|
+
if (args[i] === '--dry-run') {
|
|
134
131
|
dryRun = true;
|
|
135
|
-
} else if (args[i] ===
|
|
132
|
+
} else if (args[i] === '--skill' && i + 1 < args.length) {
|
|
136
133
|
skillArg = args[++i];
|
|
137
|
-
} else if (args[i] ===
|
|
134
|
+
} else if (args[i] === '--skills-path' && i + 1 < args.length) {
|
|
138
135
|
skillsPathArg = args[++i];
|
|
139
|
-
} else if (args[i] ===
|
|
136
|
+
} else if (args[i] === '-h' || args[i] === '--help') {
|
|
140
137
|
console.log(
|
|
141
|
-
|
|
138
|
+
'Usage: node strengthen_skills.js <path> [--dry-run] [--skill <name>] [--skills-path <path>]',
|
|
142
139
|
);
|
|
143
140
|
process.exit(0);
|
|
144
|
-
} else if (!args[i].startsWith(
|
|
141
|
+
} else if (!args[i].startsWith('-')) {
|
|
145
142
|
targetPath = args[i];
|
|
146
143
|
}
|
|
147
144
|
i++;
|
|
@@ -152,7 +149,7 @@ function main() {
|
|
|
152
149
|
if (skillsPathArg) {
|
|
153
150
|
skillsDir = path.resolve(skillsPathArg);
|
|
154
151
|
} else {
|
|
155
|
-
skillsDir = path.join(projectRoot,
|
|
152
|
+
skillsDir = path.join(projectRoot, '.agent', 'skills');
|
|
156
153
|
}
|
|
157
154
|
|
|
158
155
|
if (!fs.existsSync(skillsDir) || !fs.statSync(skillsDir).isDirectory()) {
|
|
@@ -161,12 +158,11 @@ function main() {
|
|
|
161
158
|
}
|
|
162
159
|
|
|
163
160
|
console.log(`${BOLD}Tribunal — strengthen_skills.js${RESET}`);
|
|
164
|
-
if (dryRun)
|
|
165
|
-
console.log(` ${YELLOW}DRY RUN — no files will be written${RESET}`);
|
|
161
|
+
if (dryRun) console.log(` ${YELLOW}DRY RUN — no files will be written${RESET}`);
|
|
166
162
|
console.log(`Skills dir: ${skillsDir}\n`);
|
|
167
163
|
|
|
168
164
|
const counts = { updated: 0, skipped: 0, error: 0 };
|
|
169
|
-
header(
|
|
165
|
+
header('Strengthening Skills');
|
|
170
166
|
|
|
171
167
|
const dirs = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
172
168
|
dirs.sort((a, b) => a.name.localeCompare(b.name));
|
|
@@ -175,7 +171,7 @@ function main() {
|
|
|
175
171
|
if (!dir.isDirectory()) continue;
|
|
176
172
|
if (skillArg && dir.name !== skillArg) continue;
|
|
177
173
|
|
|
178
|
-
const skillMd = path.join(skillsDir, dir.name,
|
|
174
|
+
const skillMd = path.join(skillsDir, dir.name, 'SKILL.md');
|
|
179
175
|
if (!fs.existsSync(skillMd)) {
|
|
180
176
|
warn(`${dir.name} — no SKILL.md found`);
|
|
181
177
|
continue;
|