@event4u/agent-config 9.9.0 → 9.11.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +212 -194
- package/README.md +13 -16
- package/agents/templates/.ai-council.yml.example +481 -0
- package/agents/templates/.ai-video.xml.example +247 -0
- package/dist/agent-src/commands/agent-status.md +12 -11
- package/dist/agent-src/commands/agents/user/accept.md +115 -30
- package/dist/agent-src/commands/agents/user/delete.md +147 -0
- package/dist/agent-src/commands/agents/user/review.md +65 -28
- package/dist/agent-src/commands/agents/user/show.md +82 -29
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +16 -3
- package/dist/agent-src/commands/check-current-md.md +0 -10
- package/dist/agent-src/commands/condense.md +28 -97
- package/dist/agent-src/commands/cost/report.md +7 -0
- package/dist/agent-src/commands/fix/portability.md +0 -8
- package/dist/agent-src/commands/fix/refs.md +0 -8
- package/dist/agent-src/commands/humanize.md +2 -2
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/load.md +11 -0
- package/dist/agent-src/commands/optimize/skills.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -4
- package/dist/agent-src/commands/profile/show.md +3 -3
- package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tdd.md +21 -0
- package/dist/agent-src/commands/team/delegate.md +2 -2
- package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
- package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
- package/dist/agent-src/commands/team.md +4 -1
- package/dist/agent-src/commands/upstream-contribute.md +0 -1
- package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
- package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
- package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
- package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +67 -37
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
- package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +24 -0
- package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +5 -5
- package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +13 -13
- package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
- package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
- package/dist/agent-src/contexts/model-recommendations.md +3 -2
- package/dist/agent-src/contexts/subagent-configuration.md +3 -3
- package/dist/agent-src/ghostwriter/README.md +2 -2
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/personas/README.md +5 -5
- package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
- package/dist/agent-src/personas/backend-architect.md +24 -23
- package/dist/agent-src/personas/eloquent-tamer.md +30 -30
- package/dist/agent-src/personas/frontend-engineer.md +30 -30
- package/dist/agent-src/personas/product-owner.md +41 -38
- package/dist/agent-src/personas/qa.md +13 -13
- package/dist/agent-src/personas/security-engineer.md +22 -22
- package/dist/agent-src/presets/README.md +3 -3
- package/dist/agent-src/profiles/README.md +3 -3
- package/dist/agent-src/rules/active-remediation.md +2 -2
- package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
- package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -4
- package/dist/agent-src/rules/code-comment-discipline.md +1 -1
- package/dist/agent-src/rules/code-provenance.md +2 -2
- package/dist/agent-src/rules/commit-policy.md +4 -9
- package/dist/agent-src/rules/communication-through-line.md +5 -5
- package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
- package/dist/agent-src/rules/design-fidelity.md +1 -1
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +1 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
- package/dist/agent-src/rules/history-discipline.md +1 -1
- package/dist/agent-src/rules/legal-safety-floor.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
- package/dist/agent-src/rules/media-governance-routing.md +13 -13
- package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
- package/dist/agent-src/rules/no-cheap-questions.md +7 -7
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
- package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
- package/dist/agent-src/rules/onboarding-gate.md +14 -4
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
- package/dist/agent-src/rules/preservation-guard.md +10 -2
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +6 -6
- package/dist/agent-src/rules/rule-type-governance.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +1 -1
- package/dist/agent-src/rules/scope-control.md +1 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +17 -11
- package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
- package/dist/agent-src/rules/session-canary.md +1 -1
- package/dist/agent-src/rules/skill-quality.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +21 -19
- package/dist/agent-src/rules/source-of-truth.md +6 -5
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/think-before-action.md +5 -5
- package/dist/agent-src/rules/token-budget-discipline.md +5 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +4 -4
- package/dist/agent-src/rules/user-interaction.md +12 -0
- package/dist/agent-src/rules/verify-before-complete.md +4 -24
- package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agent-security-review/SKILL.md +52 -45
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
- package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
- package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
- package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
- package/dist/agent-src/skills/code-intelligence/SKILL.md +0 -1
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
- package/dist/agent-src/skills/code-review/SKILL.md +6 -6
- package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
- package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
- package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
- package/dist/agent-src/skills/context-document/SKILL.md +23 -21
- package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
- package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-review/SKILL.md +15 -14
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
- package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
- package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +21 -7
- package/dist/agent-src/skills/fe-design/SKILL.md +10 -0
- package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
- package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
- package/dist/agent-src/skills/grafana/SKILL.md +5 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +83 -66
- package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
- package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
- package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
- package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
- package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
- package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
- package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
- package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +7 -7
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +3 -3
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +4 -4
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
- package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
- package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
- package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +129 -120
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +4 -4
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
- package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +55 -19
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -5
- package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +20 -2
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -77
- package/dist/agent-src/skills/rule-refactor/SKILL.md +1 -1
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
- package/dist/agent-src/skills/security-audit/SKILL.md +26 -9
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +38 -16
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +14 -11
- package/dist/agent-src/skills/skill-writing/SKILL.md +9 -8
- package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
- package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +22 -8
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +28 -2
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +22 -21
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
- package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
- package/dist/agent-src/skills/terraform/SKILL.md +2 -2
- package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
- package/dist/agent-src/skills/video-director/SKILL.md +7 -7
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +3 -3
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
- package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
- package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/dist/agent-src/templates/contexts.md +1 -1
- package/dist/agent-src/templates/features.md +1 -1
- package/dist/agent-src/templates/roadmaps.md +125 -116
- package/dist/agent-src/templates/rule.md +2 -1
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/dist/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/dist/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/dist/agent-src/user-types/README.md +8 -8
- package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
- package/dist/agent-src/user-types/metalworking-shop.md +35 -34
- package/dist/agent-src/user-types/truck-driver.md +22 -20
- package/dist/cli/initRouting.js +74 -11
- package/dist/cli/initRouting.js.map +1 -1
- package/dist/cli/main.js +14 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +2 -2
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli-delegate/chunk-4SV3XGFA.js +6910 -0
- package/dist/cli-delegate/chunk-736JCWLM.js +1104 -0
- package/dist/cli-delegate/chunk-7DSAMZFU.js +356 -0
- package/dist/cli-delegate/chunk-7HQ52DHU.js +74 -0
- package/dist/cli-delegate/chunk-BJGXZNPM.js +266 -0
- package/dist/cli-delegate/chunk-FTAISGDQ.js +117 -0
- package/dist/cli-delegate/chunk-GME3Q44L.js +82 -0
- package/dist/cli-delegate/chunk-GRRPEPRN.js +336 -0
- package/dist/cli-delegate/chunk-HJ6DAJHR.js +502 -0
- package/dist/cli-delegate/chunk-IR7P7JWA.js +872 -0
- package/dist/cli-delegate/chunk-J55WI3RR.js +47 -0
- package/dist/cli-delegate/chunk-MCJYCQPF.js +35 -0
- package/dist/cli-delegate/chunk-NDJLNC6Q.js +169 -0
- package/dist/cli-delegate/chunk-OMIVVCG2.js +26 -0
- package/dist/cli-delegate/chunk-OY53J6II.js +7336 -0
- package/dist/cli-delegate/chunk-RDGRHAAB.js +259 -0
- package/dist/cli-delegate/chunk-TFG57JJM.js +1969 -0
- package/dist/cli-delegate/chunk-XX6TOPD7.js +715 -0
- package/dist/cli-delegate/chunk-YMFO6FDN.js +10603 -0
- package/dist/cli-delegate/cmd_analyze_session.js +294 -0
- package/dist/cli-delegate/cmd_conformance.js +646 -0
- package/dist/cli-delegate/cmd_converge.js +326 -0
- package/dist/cli-delegate/cmd_doctor.js +144 -0
- package/dist/cli-delegate/cmd_explain.js +2508 -0
- package/dist/cli-delegate/cmd_export.js +296 -0
- package/dist/cli-delegate/cmd_fleet.js +332 -0
- package/dist/cli-delegate/cmd_memory_get.js +3878 -0
- package/dist/cli-delegate/cmd_migrate.js +11 -0
- package/dist/cli-delegate/cmd_preflight.js +270 -0
- package/dist/cli-delegate/cmd_prune.js +444 -0
- package/dist/cli-delegate/cmd_refresh.js +28 -0
- package/dist/cli-delegate/cmd_settings_check.js +574 -0
- package/dist/cli-delegate/cmd_settings_migrate.js +223 -0
- package/dist/cli-delegate/cmd_sync.js +264 -0
- package/dist/cli-delegate/cmd_uninstall.js +656 -0
- package/dist/cli-delegate/cmd_update.js +425 -0
- package/dist/cli-delegate/cmd_upgrade.js +444 -0
- package/dist/cli-delegate/cmd_validate.js +305 -0
- package/dist/cli-delegate/cmd_versions.js +370 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +100 -67
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +16 -10
- package/dist/discovery/trust-report.md +2 -2
- package/dist/discovery/workspaces.json +7 -5
- package/dist/hooks/dispatch.js +186 -12
- package/dist/install/emit_host_rules_cli.js +2 -1
- package/dist/install/emit_host_rules_cli.js.map +1 -1
- package/dist/install/install.mjs +418 -378
- package/dist/install/rule_scope.js +5 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/toolDetection.js +40 -12
- package/dist/install/toolDetection.js.map +1 -1
- package/dist/install/wizard-plan.js +2 -2
- package/dist/install/wizard-plan.js.map +1 -1
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +2194 -1003
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/compile_time_toggles.js +48 -0
- package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
- package/dist/scripts/condense.js +234 -217
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/schemas/settings.js +4 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +30 -0
- package/dist/shared/userMd/utils.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -1
- package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
- package/package.json +4 -2
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +30 -30
- package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +88 -33
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +22 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +21 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/stack_bundles.ts +179 -0
- package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +155 -4
- package/src/agent-src/templates/scripts/work_engine/state.ts +21 -4
- package/src/config/agent-settings.template.yml +32 -2
- package/src/config/ci-local-parity.yml +142 -0
- package/src/config/discovery/packs.yml +7 -0
- package/src/config/evaluator-budgets.json +1 -1
- package/src/config/gate-coverage.yml +127 -0
- package/src/config/pack-size-budget.json +27 -0
- package/src/config/preamble-payload-budget.json +44 -0
- package/src/install/emit_host_rules_cli.ts +2 -1
- package/src/install/rule_scope.ts +5 -1
- package/src/install/toolDetection.ts +39 -8
- package/src/install/wizard-plan.ts +2 -2
- package/src/scripts/_cli/cmd_conformance.ts +2 -1
- package/src/scripts/_cli/cmd_converge.ts +2 -1
- package/src/scripts/_cli/cmd_doctor.ts +292 -15
- package/src/scripts/_cli/cmd_export.ts +2 -1
- package/src/scripts/_cli/cmd_fleet.ts +2 -1
- package/src/scripts/_cli/cmd_migrate.ts +2 -1
- package/src/scripts/_cli/cmd_preflight.ts +2 -1
- package/src/scripts/_cli/cmd_refresh.ts +2 -1
- package/src/scripts/_cli/cmd_update.ts +2 -1
- package/src/scripts/_cli/cmd_upgrade.ts +2 -1
- package/src/scripts/_cli/cmd_versions.ts +2 -1
- package/src/scripts/_cli/detection_report.ts +480 -0
- package/src/scripts/_dispatch.bash +52 -14
- package/src/scripts/_lib/agent_user_profile.ts +381 -0
- package/src/scripts/_lib/agents_overlay.ts +9 -0
- package/src/scripts/_lib/anchor_eval.ts +311 -0
- package/src/scripts/_lib/cc_transcript.ts +316 -0
- package/src/scripts/_lib/changelog_eras.ts +103 -9
- package/src/scripts/_lib/compile_time_toggles.ts +79 -0
- package/src/scripts/_lib/confusables.ts +101 -0
- package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
- package/src/scripts/_lib/environment_detector.ts +441 -0
- package/src/scripts/_lib/managed_agents_folder.ts +181 -0
- package/src/scripts/_lib/package_root.ts +72 -0
- package/src/scripts/_lib/payload_hash_drift.ts +126 -0
- package/src/scripts/_lib/preservation_migration.ts +291 -0
- package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
- package/src/scripts/_lib/scan_scope.ts +115 -0
- package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
- package/src/scripts/_lib/user_global_observations.ts +830 -0
- package/src/scripts/_lib/user_global_revocations.ts +110 -0
- package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/budget_guard.ts +90 -11
- package/src/scripts/ai_council/bundler.ts +2 -2
- package/src/scripts/ai_council/clients.ts +59 -3
- package/src/scripts/ai_council/config.ts +53 -7
- package/src/scripts/ai_council/modes.ts +68 -2
- package/src/scripts/ai_council/orchestrator.ts +54 -9
- package/src/scripts/ai_council/transport_resolver.ts +331 -0
- package/src/scripts/ai_team/team_dispatch.ts +17 -6
- package/src/scripts/anchor_eval_falsify.ts +198 -0
- package/src/scripts/anchor_scoring_run.ts +239 -0
- package/src/scripts/annotate_discovery.ts +1 -65
- package/src/scripts/bench_quality_run.ts +168 -4
- package/src/scripts/cache_realization_report.ts +782 -0
- package/src/scripts/check_artefact_count_messaging.ts +5 -1
- package/src/scripts/check_augment_description_cap.ts +15 -4
- package/src/scripts/check_bundle_path_leakage.ts +10 -4
- package/src/scripts/check_ci_local_parity.ts +317 -0
- package/src/scripts/check_condensation.ts +96 -191
- package/src/scripts/check_context_paths.ts +38 -9
- package/src/scripts/check_dependency_floors.ts +153 -0
- package/src/scripts/check_gate_coverage.ts +299 -0
- package/src/scripts/check_iron_law_prominence.ts +22 -1
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_no_new_legacy_path.ts +16 -6
- package/src/scripts/check_no_roadmap_refs.ts +22 -9
- package/src/scripts/check_originality_freshness.ts +167 -0
- package/src/scripts/check_pack_size.ts +188 -0
- package/src/scripts/check_preamble_payload_budget.ts +130 -0
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_references.ts +0 -1
- package/src/scripts/check_safety_floor_untouched.ts +171 -24
- package/src/scripts/check_site_links.ts +62 -3
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +10 -14
- package/src/scripts/condense.sh +3 -4
- package/src/scripts/condense.ts +247 -228
- package/src/scripts/cost/track.mjs +168 -33
- package/src/scripts/cost_summary.ts +33 -1
- package/src/scripts/council_cli.ts +51 -5
- package/src/scripts/discovery_graph.ts +0 -0
- package/src/scripts/encoding_corpus.ts +500 -0
- package/src/scripts/encoding_corpus_report.ts +216 -0
- package/src/scripts/evaluator_umbrella.sh +34 -1
- package/src/scripts/generate_index.ts +19 -2
- package/src/scripts/install-hooks.sh +2 -2
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_confusables.ts +10 -72
- package/src/scripts/lint_eval_fixture_citations.ts +113 -0
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_hidden_unicode.ts +208 -0
- package/src/scripts/lint_load_context.ts +17 -5
- package/src/scripts/lint_new_skill_gate.ts +9 -3
- package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
- package/src/scripts/lint_originality.ts +1 -1
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_ticket_buildable.ts +1 -1
- package/src/scripts/lint_ui_stack_bundles.ts +170 -0
- package/src/scripts/mcp_server/tools.ts +4 -4
- package/src/scripts/measure_scope_dedup.ts +224 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/mine_session.ts +98 -0
- package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
- package/src/scripts/preamble_byte_census.ts +574 -0
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/redact_hook_capture.ts +13 -0
- package/src/scripts/release.ts +65 -10
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/second_brain_retrieval.ts +14 -4
- package/src/scripts/skill_linter.ts +5 -0
- package/src/scripts/surface-tiers.yml +2 -0
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/server/schemas/settings.ts +8 -0
- package/src/shared/userMd/utils.ts +31 -0
- package/dist/agent-src/rules/telegraph-speak.md +0 -87
|
@@ -19,14 +19,14 @@ install:
|
|
|
19
19
|
|
|
20
20
|
# song-to-script
|
|
21
21
|
|
|
22
|
-
> Turn a song into `<project>/script.md` — `## Scene N`
|
|
23
|
-
> `duration:` values sum to the track length and whose cut
|
|
24
|
-
> on real section boundaries. Consumed by
|
|
22
|
+
> Turn a song into `<project>/script.md` — a sequence of `## Scene N`
|
|
23
|
+
> blocks whose `duration:` values sum to the track length and whose cut
|
|
24
|
+
> points land on real section boundaries. Consumed by
|
|
25
25
|
> [`/video:from-song`](../../commands/video/from-song.md), then handed
|
|
26
26
|
> to [`scene-expander`](../scene-expander/SKILL.md) and
|
|
27
27
|
> [`video-director`](../video-director/SKILL.md). Never invents timing —
|
|
28
|
-
> every boundary comes from the audio
|
|
29
|
-
>
|
|
28
|
+
> every boundary comes from the audio probe, and the probe's `method`
|
|
29
|
+
> tells this skill how musical (or not) those boundaries actually are.
|
|
30
30
|
|
|
31
31
|
## When to use
|
|
32
32
|
|
|
@@ -49,25 +49,27 @@ Do NOT use when:
|
|
|
49
49
|
configured — see
|
|
50
50
|
[`audio-adapter-contract.md`](../../scripts/ai-video/lib/audio-adapter-contract.md)):
|
|
51
51
|
`{bpm, beats, downbeats, sections:[{start,end,label,energy?}]}` —
|
|
52
|
-
real musical structure. Beats/downbeats
|
|
53
|
-
section labels musical (`verse`, `chorus`, …).
|
|
52
|
+
real musical structure. Beats/downbeats become the candidate cut
|
|
53
|
+
grid; section labels are musical (`verse`, `chorus`, …).
|
|
54
54
|
- **Audio probe** — JSON from
|
|
55
55
|
[`scripts/ai-video/lib/probe-audio.sh`](../../scripts/ai-video/lib/probe-audio.sh):
|
|
56
56
|
`{duration, method, warning?, sections:[{start,end,energy,label}]}`.
|
|
57
|
-
- `method: silence` — boundaries are real quiet gaps; trust as cuts.
|
|
58
|
-
- `method: rms` — energy-delta inflections; usable but
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
interval
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
|
|
57
|
+
- `method: silence` — boundaries are real quiet gaps; trust them as cuts.
|
|
58
|
+
- `method: rms` — boundaries are energy-delta inflections; usable but
|
|
59
|
+
coarse.
|
|
60
|
+
- `method: interval` — **the track is structurally flat** (brick-walled
|
|
61
|
+
/ sustained); sections are fixed-interval, NOT musical. When `method`
|
|
62
|
+
is `interval` (or `warning` is set), the emitted script header states
|
|
63
|
+
that timing is interval-based and the operator should pass
|
|
64
|
+
`--scene-durations` for musical sync. Never present interval cuts as
|
|
65
|
+
beat-synced.
|
|
66
|
+
- **Model capabilities** — the chosen video model's renderable envelope
|
|
67
|
+
from the multiplexer manifest:
|
|
66
68
|
`scripts/ai-video/adapters/<provider>.sh capability --model <id>` →
|
|
67
69
|
`{min_duration, max_duration, audio_sync, aspect, verified}`. Scene
|
|
68
|
-
durations MUST land inside `[min_duration, max_duration]`;
|
|
69
|
-
`verified: false`
|
|
70
|
-
silently.
|
|
70
|
+
durations MUST land inside `[min_duration, max_duration]`; a
|
|
71
|
+
`verified: false` manifest entry is surfaced in the report, never
|
|
72
|
+
trusted silently.
|
|
71
73
|
- **Mode** — `brief` (operator text is the creative source) or `auto`
|
|
72
74
|
(infer mood + action from energy).
|
|
73
75
|
- **Brief** (brief mode only) — free text: story, settings, look.
|
|
@@ -80,26 +82,28 @@ Do NOT use when:
|
|
|
80
82
|
### Step 1: Map sections → scenes (capability-clamped, beat-aligned)
|
|
81
83
|
|
|
82
84
|
One `## Scene N` per analysis section. `duration:` = `end - start`
|
|
83
|
-
(rounded to 0.5 s). Then **clamp the plan to the model's
|
|
84
|
-
envelope** — `min_duration` / `max_duration` from the
|
|
85
|
-
(`<provider>.sh capability --model <id>`),
|
|
86
|
-
for single-model adapters:
|
|
87
|
-
|
|
88
|
-
- **Section
|
|
89
|
-
merge toward the neighbour
|
|
90
|
-
(else any beat); without, merge into the
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
split
|
|
96
|
-
|
|
97
|
-
|
|
85
|
+
(rounded to 0.5 s). Then **clamp the plan to the chosen model's
|
|
86
|
+
renderable envelope** — read `min_duration` / `max_duration` from the
|
|
87
|
+
model-capabilities manifest (`<provider>.sh capability --model <id>`),
|
|
88
|
+
falling back to the provider tuning for single-model adapters:
|
|
89
|
+
|
|
90
|
+
- **Section shorter than `min_duration`** → merge into its neighbour.
|
|
91
|
+
With beat data, merge toward the neighbour that keeps the joined cut
|
|
92
|
+
on a **downbeat** (else any beat); without beat data, merge into the
|
|
93
|
+
shorter neighbour.
|
|
94
|
+
- **Section longer than `max_duration`** → split into sub-scenes. With
|
|
95
|
+
beat data, place every split point on the **nearest downbeat** (else
|
|
96
|
+
beat) to the equal-division point — never mid-beat; without beat
|
|
97
|
+
data, split equally.
|
|
98
|
+
- **No valid plan exists** (e.g. the whole song is shorter than
|
|
99
|
+
`min_duration`, or a section cannot be split onto any beat inside the
|
|
100
|
+
envelope) → **halt and surface the conflict** with the model id and
|
|
101
|
+
the violated bound — an unbuildable plan never reaches the renderer.
|
|
98
102
|
|
|
99
103
|
Every emitted scene satisfies
|
|
100
|
-
`min_duration ≤ duration ≤ max_duration`.
|
|
101
|
-
`verified: false
|
|
102
|
-
a smoke-traced fact.
|
|
104
|
+
`min_duration ≤ duration ≤ max_duration`. When the manifest entry is
|
|
105
|
+
`verified: false`, say so in the report — the envelope is
|
|
106
|
+
documented-best-effort, not a smoke-traced fact.
|
|
103
107
|
|
|
104
108
|
### Step 2: Assign mood + action
|
|
105
109
|
|
|
@@ -108,29 +112,31 @@ First decide the **subject mode**:
|
|
|
108
112
|
- **Character mode** — `character.json` exists: every scene's `action:`
|
|
109
113
|
names the locked subject, never a fresh description.
|
|
110
114
|
- **Style mode** — no `character.json`: scenes describe setting, palette,
|
|
111
|
-
motion continuity (the recurring *look*), not a person.
|
|
112
|
-
/ landscape / visualiser path — do not invent a human
|
|
115
|
+
and motion continuity (the recurring *look*), not a person. This is the
|
|
116
|
+
valid abstract / landscape / visualiser path — do not invent a human
|
|
117
|
+
subject to fill the slot.
|
|
113
118
|
|
|
114
119
|
Then pick the **prompt source per segment — the modality switch**:
|
|
115
120
|
|
|
116
|
-
- **Lyric segment** (vocal map places ≥1 transcribed line inside
|
|
117
|
-
scene prompt derives from the **lyric line itself**: its
|
|
118
|
-
subjects, verbs seed `mood:` + `action:` (character
|
|
119
|
-
locked subject; style mode
|
|
120
|
-
never an invented human).
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
- **Lyric segment** (the vocal map places ≥1 transcribed line inside
|
|
122
|
+
it) → the scene prompt derives from the **lyric line itself**: its
|
|
123
|
+
imagery, subjects, and verbs seed `mood:` + `action:` (in character
|
|
124
|
+
mode, acted by the locked subject; in style mode, rendered as
|
|
125
|
+
setting / weather / palette — never an invented human). The line
|
|
126
|
+
lands in `dialogue:` per Step 3.
|
|
127
|
+
- **Instrumental segment** (no vocal-map line) → the scene prompt
|
|
128
|
+
derives from the **audio features**: section `label` + `energy` via
|
|
129
|
+
the intent table below. Never recycle a lyric from another segment
|
|
130
|
+
into an instrumental one.
|
|
125
131
|
|
|
126
132
|
Then assign per scene:
|
|
127
133
|
|
|
128
134
|
- **Brief mode** — distribute the brief's beats across scenes in order;
|
|
129
|
-
modality switch still applies (lyric segments quote the brief's
|
|
130
|
-
matching beat through the lyric's lens)
|
|
131
|
-
not add story the brief did not state.
|
|
132
|
-
- **Auto mode** — derive mood per section from `energy`
|
|
133
|
-
(probe labels and musical adapter
|
|
135
|
+
the modality switch still applies (lyric segments quote the brief's
|
|
136
|
+
matching beat through the lyric's lens), and energy modulates pacing.
|
|
137
|
+
Do not add story the brief did not state.
|
|
138
|
+
- **Auto mode** — derive mood per section from `energy` and `label`
|
|
139
|
+
(probe labels and musical labels from the analysis adapter both map):
|
|
134
140
|
|
|
135
141
|
| label / energy | default scene intent |
|
|
136
142
|
|---|---|
|
|
@@ -142,8 +148,8 @@ Then assign per scene:
|
|
|
142
148
|
| outro / fade | pull-back, resolve, hold |
|
|
143
149
|
|
|
144
150
|
**Energy → cut frequency + motion intensity.** Section energy (0..1,
|
|
145
|
-
relative to track mean) drives
|
|
146
|
-
faster cuts / more motion:
|
|
151
|
+
relative to the track mean) drives both how often the edit cuts and how
|
|
152
|
+
hard the camera moves — chorus = faster cuts / more motion:
|
|
147
153
|
|
|
148
154
|
| energy vs. track mean | cut length target | `camera:` motion intensity |
|
|
149
155
|
|---|---|---|
|
|
@@ -151,9 +157,10 @@ faster cuts / more motion:
|
|
|
151
157
|
| within ±0.10 of mean (verse / build) | medium — one scene per section or per 4-bar phrase | steady dolly, slow tighten |
|
|
152
158
|
| ≤ mean − 0.10 (breakdown / outro) | long — merge toward `max_duration`, hold shots | locked-off or slow drift |
|
|
153
159
|
|
|
154
|
-
High-energy splitting and low-energy merging stay inside the
|
|
155
|
-
envelope and land on downbeats — the energy table
|
|
156
|
-
the envelope* a length falls, never
|
|
160
|
+
High-energy splitting and low-energy merging both stay inside the
|
|
161
|
+
Step 1 capability envelope and land on downbeats — the energy table
|
|
162
|
+
chooses *where inside the envelope* a scene length falls, never
|
|
163
|
+
outside it.
|
|
157
164
|
|
|
158
165
|
### Step 3: Vocal map — transcribe, never guess (vocal tracks)
|
|
159
166
|
|
|
@@ -163,10 +170,10 @@ BRIEF / STORY SKELETON OR A GUESSED STRETCH. NEVER PUT ONE SINGER'S
|
|
|
163
170
|
LINE ON ANOTHER SINGER'S SCENE.
|
|
164
171
|
```
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
from the real audio before assigning any `dialogue:`:
|
|
173
|
+
When the track has vocals and the run intends lip-sync, build a
|
|
174
|
+
**vocal map** from the real audio before assigning any `dialogue:`:
|
|
168
175
|
|
|
169
|
-
1. **Transcribe** audio to timestamped lines. Adapter-first: a
|
|
176
|
+
1. **Transcribe** the audio to timestamped lines. Adapter-first: a
|
|
170
177
|
configured `lyrics` provider (e.g.
|
|
171
178
|
[`audio-adapters/whisperx.sh`](../../scripts/ai-video/audio-adapters/whisperx.sh))
|
|
172
179
|
returns word-level timestamps **plus per-line diarization labels**
|
|
@@ -175,34 +182,35 @@ from the real audio before assigning any `dialogue:`:
|
|
|
175
182
|
echo '{"audio_path":"<vocal-stem-or-song>"}' \
|
|
176
183
|
| scripts/ai-video/audio-adapters/whisperx.sh analyze
|
|
177
184
|
```
|
|
178
|
-
No lyrics provider → OpenAI `/v1/audio/transcriptions`
|
|
185
|
+
No lyrics provider configured → OpenAI `/v1/audio/transcriptions`
|
|
179
186
|
(`response_format=verbose_json` → `segments[].{start,end,text}`) or
|
|
180
|
-
local whisper (no speaker labels — every line starts as
|
|
181
|
-
Either way the transcript is the only source of lyric timing.
|
|
187
|
+
local whisper as before (no speaker labels — every line starts as
|
|
188
|
+
`"?"`). Either way the transcript is the only source of lyric timing.
|
|
182
189
|
2. **Label the singer** per line — map diarization labels (or unlabeled
|
|
183
|
-
lines) to cast names via the operator's who-sings reference (
|
|
184
|
-
brief
|
|
185
|
-
one cast name, consistently.
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
lines) to cast names via the operator's who-sings reference (a
|
|
191
|
+
roster, a brief that names who sings which line, or a character
|
|
192
|
+
cast): one diarization label ↦ one cast name, consistently. If a
|
|
193
|
+
line's singer is genuinely ambiguous (label `"?"`, mixed-speaker
|
|
194
|
+
line, or no roster match), keep `singer: "?"` and surface it —
|
|
195
|
+
never guess a singer to fill the slot.
|
|
196
|
+
3. **Emit** `<project>/vocal-map.json`:
|
|
197
|
+
`[{start, end, text, singer}]`, timing verbatim from the transcript.
|
|
198
|
+
4. **Validate** — run the ground-truth enforcer before handing the map
|
|
199
|
+
to the sign-off gate:
|
|
192
200
|
```bash
|
|
193
201
|
scripts/ai-video/lib/validate-vocal-map.sh <project>/vocal-map.json \
|
|
194
202
|
<project>/transcript.json --roster "<cast names>"
|
|
195
203
|
```
|
|
196
|
-
|
|
197
|
-
(exit 7, specific line named).
|
|
198
|
-
never bypass.
|
|
199
|
-
5. **Place lines into the matching scene's** `dialogue:` block using
|
|
204
|
+
It rejects re-timed lines, lyrics not in the transcript, and missing
|
|
205
|
+
singers (exit 7, specific line named). A red validator is a halt —
|
|
206
|
+
fix the map, never bypass.
|
|
207
|
+
5. **Place lines into the matching scene's** `dialogue:` block using the
|
|
200
208
|
transcript timing, tagged with the singer (`singer: "<line>"`). A
|
|
201
|
-
scene's lip-sync subject MUST be the line's labelled singer; a
|
|
202
|
-
line gets NO lip-sync scene until the operator resolves it.
|
|
209
|
+
scene's lip-sync subject MUST be the line's labelled singer; a
|
|
210
|
+
`"?"` line gets NO lip-sync scene until the operator resolves it.
|
|
203
211
|
|
|
204
212
|
No vocals / no transcript / no lip-sync intent → leave `dialogue:` empty;
|
|
205
|
-
scene is performance / B-roll. **Never fabricate lyrics**, **never
|
|
213
|
+
the scene is performance / B-roll. **Never fabricate lyrics**, **never
|
|
206
214
|
re-time a line off the brief**, and in style mode `dialogue:` stays empty
|
|
207
215
|
(lip-sync needs a character subject). The `/video:from-song` sign-off
|
|
208
216
|
gate (its Step 6) shows this map for approval before any render.
|
|
@@ -211,11 +219,11 @@ gate (its Step 6) shows this map for approval before any render.
|
|
|
211
219
|
|
|
212
220
|
Write `<project>/script.md` (and `<project>/vocal-map.json` when the
|
|
213
221
|
track has vocals). Report the delta, the section→scene map, **the probe
|
|
214
|
-
`method`** (
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
conflict** — do not pad silently.
|
|
222
|
+
`method`** (so the operator sees whether cuts are silence-derived,
|
|
223
|
+
energy-derived, or interval-fallback), **and whether lyric timing is
|
|
224
|
+
transcript-derived** (it must be — never brief-derived). If the sum
|
|
225
|
+
cannot be reconciled (e.g. provider max-duration forces more time than
|
|
226
|
+
the song has), **halt and surface the conflict** — do not pad silently.
|
|
219
227
|
|
|
220
228
|
### Step 5: Validate before handoff
|
|
221
229
|
|
|
@@ -12,8 +12,8 @@ packs:
|
|
|
12
12
|
# sql
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
> **Grounded corpus:** tuning decisions (indexes, keyset pagination,
|
|
16
|
-
> trigram search, lock contention) ground via the
|
|
15
|
+
> **Grounded corpus:** tuning decisions (indexes, keyset pagination,
|
|
16
|
+
> N+1, trigram search, lock contention) ground via the
|
|
17
17
|
> [`database`](../database/SKILL.md) corpus — `./scripts-run
|
|
18
18
|
> <skills-root>/corpus-grounding/scripts/ground search
|
|
19
19
|
> --manifest <skills-root>/database/data/manifest.json "<symptom>"`.
|
|
@@ -147,9 +147,10 @@ column is missing.
|
|
|
147
147
|
becomes input to this skill for escalation. Boundary prose lives
|
|
148
148
|
in [`docs/guidelines/cross-role-handoff.md`](../../../docs/guidelines/cross-role-handoff.md).
|
|
149
149
|
- The trade-off is purely technical (perf vs storage, sync vs async)
|
|
150
|
-
— route to [`decision-record`](../decision-record/SKILL.md);
|
|
151
|
-
choice on ≥ 3 options with user-weighted criteria
|
|
152
|
-
mode (this skill answers WHO pays; that
|
|
150
|
+
— route to [`decision-record`](../decision-record/SKILL.md); if it is
|
|
151
|
+
one costly choice on ≥ 3 options with user-weighted criteria, its
|
|
152
|
+
§ Weighted-matrix mode scores it (this skill answers WHO pays; that
|
|
153
|
+
mode answers WHICH option wins).
|
|
153
154
|
- The dominant axis is risk, not stakeholder cost — route to
|
|
154
155
|
[`risk-officer`](../risk-officer/SKILL.md).
|
|
155
156
|
- The output is the locked decision artifact — hand off to
|
|
@@ -11,76 +11,94 @@ packs:
|
|
|
11
11
|
|
|
12
12
|
# standards-from-config
|
|
13
13
|
|
|
14
|
-
Evidence v2 **Class A** — configured convention.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
Evidence v2 **Class A** — configured convention. The safe, on-thesis half of
|
|
15
|
+
self-building project context: coding standards are not *guessed* and not
|
|
16
|
+
*observed*, they are **derived from the real tooling config**. The config *is*
|
|
17
|
+
the standard; this skill produces a **pointer + digest**, never a flattened
|
|
18
|
+
claim. High-trust, auto-refreshable, drift-proof — because the truth lives in
|
|
19
|
+
the config file, and the card only points at it plus distils the 3–5 points an
|
|
20
|
+
agent needs most while writing.
|
|
18
21
|
|
|
19
22
|
Definitions (Class A/B/C, trust tiers, the v1↔v2 isolation contract) live in
|
|
20
23
|
[`evidence-discipline`](../../agent-src/contexts/execution/evidence-discipline.md);
|
|
21
|
-
parent context mechanism is [`context-document`](../context-document/SKILL.md).
|
|
24
|
+
the parent context mechanism is [`context-document`](../context-document/SKILL.md).
|
|
22
25
|
|
|
23
26
|
## When to use
|
|
24
27
|
|
|
25
|
-
- Before writing or reformatting code in an unfamiliar project
|
|
26
|
-
|
|
28
|
+
- Before writing or reformatting code in an unfamiliar project and you need its
|
|
29
|
+
enforced style (indent, line length, quote style, import order, naming).
|
|
30
|
+
- Before writing a commit message / branch name and you need the project's
|
|
31
|
+
commit convention.
|
|
27
32
|
- When orienting in a repo and a committed Class-A standards card would save the
|
|
28
33
|
next agent from re-deriving the same config.
|
|
29
34
|
|
|
30
|
-
Do NOT use for: a standard
|
|
31
|
-
never invent a Class-A claim);
|
|
32
|
-
|
|
35
|
+
Do NOT use for: a standard that has **no** config backing (that is a *guessed*
|
|
36
|
+
or *observed* convention — Class B, not A; never invent a Class-A claim); the
|
|
37
|
+
concrete shape of code (that is v1 `source-discovery`, read fresh); a project
|
|
38
|
+
with no tooling config at all (record a negative fact: "no enforced standard
|
|
39
|
+
found", do not fabricate one).
|
|
33
40
|
|
|
34
41
|
## Procedure
|
|
35
42
|
|
|
36
|
-
1. **Detect real config sources** (read fresh, never from memory).
|
|
37
|
-
what actually exists:
|
|
38
|
-
- cross-stack: `.editorconfig`, `CONTRIBUTING.md`, commitlint /
|
|
39
|
-
|
|
43
|
+
1. **Detect the real config sources** (read fresh, never from memory). Common
|
|
44
|
+
sources, by ecosystem — inspect what actually exists:
|
|
45
|
+
- cross-stack: `.editorconfig`, `CONTRIBUTING.md`, commitlint /
|
|
46
|
+
`.gitmessage`, the lint/format steps in the CI workflow.
|
|
47
|
+
- JS/TS: `eslint.config.js` / `.eslintrc*`, `.prettierrc*`, `biome.json`,
|
|
48
|
+
`tsconfig.json` (strictness).
|
|
40
49
|
- PHP: `pint.json`, `.php-cs-fixer.dist.php`, `phpcs.xml`.
|
|
41
|
-
- Python: `pyproject.toml` / `ruff.toml` (`[tool.ruff]`, `[tool.black]`),
|
|
50
|
+
- Python: `pyproject.toml` / `ruff.toml` (`[tool.ruff]`, `[tool.black]`),
|
|
51
|
+
`setup.cfg`.
|
|
42
52
|
- Ruby: `.rubocop.yml`. Go: `gofmt`/`golangci.yml`.
|
|
43
|
-
2. **Derive as pointer + digest, never a flattened claim.** Each standard is one
|
|
44
|
-
the **value**, the **config file it came from**, and the **scope
|
|
45
|
-
`ruff.toml → line-length = 88 (scope: src/**/*.py)`, NOT
|
|
46
|
-
length 88". The pointer makes the claim re-checkable
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
2. **Derive as pointer + digest, never a flattened claim.** Each standard is one
|
|
54
|
+
line: the **value**, the **config file it came from**, and the **scope** it
|
|
55
|
+
applies to. Write `ruff.toml → line-length = 88 (scope: src/**/*.py)`, NOT
|
|
56
|
+
"the project uses line length 88". The pointer makes the claim re-checkable
|
|
57
|
+
and the next agent can open the config to confirm.
|
|
58
|
+
3. **Preserve scope; surface conflicts, never flatten them.** If two configs (or
|
|
59
|
+
an inline / per-directory override) give two values, emit **two pointers with
|
|
60
|
+
two values + their scopes** — never one ambiguous merged claim. A visible
|
|
61
|
+
conflict is correct; a hidden flattened guess is the failure mode.
|
|
50
62
|
4. **Stamp staleness.** Record each source's `config_mtime` (or content hash).
|
|
51
|
-
|
|
52
|
-
needed (Class A is deterministic) — digest **regenerated
|
|
53
|
-
hand-edited**.
|
|
54
|
-
5. **Persist** as a Class-A context card under `agents/settings/contexts
|
|
55
|
-
high-trust *because* config-derived —
|
|
56
|
-
fresh structural read (v1↔v2
|
|
63
|
+
The digest is stale when the config file's mtime/hash changes → re-derive. No
|
|
64
|
+
human gate is needed (Class A is deterministic) — the digest is **regenerated
|
|
65
|
+
from the config, never hand-edited**.
|
|
66
|
+
5. **Persist** as a Class-A context card under `agents/settings/contexts/` (see
|
|
67
|
+
Output format). Class A is high-trust *because* config-derived — it is read
|
|
68
|
+
for heuristics only and never bypasses a fresh structural read (the v1↔v2
|
|
69
|
+
isolation contract in `evidence-discipline`).
|
|
57
70
|
|
|
58
71
|
## Output format
|
|
59
72
|
|
|
60
73
|
A Class-A standards card MUST contain, in order:
|
|
61
74
|
|
|
62
|
-
1. **Frontmatter** `class: A`, `trust: high (config-derived)`, and a
|
|
63
|
-
of `{path, config_mtime}` for every config the digest reads.
|
|
75
|
+
1. **Frontmatter** `class: A`, `trust: high (config-derived)`, and a
|
|
76
|
+
`sources:` list of `{path, config_mtime}` for every config the digest reads.
|
|
64
77
|
2. **A pointer+digest table** — one row per standard: `standard | value | source
|
|
65
|
-
(file:key) | scope`. No standard appears without a `source` cell
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
78
|
+
(file:key) | scope`. No standard appears without a `source` cell pointing at
|
|
79
|
+
a real config file.
|
|
80
|
+
3. **A conflicts block** (may be empty) listing any standard where ≥2 sources /
|
|
81
|
+
scopes disagree, as two-or-more rows, never one merged value.
|
|
82
|
+
4. **A refresh line** stating the card is regenerated when any listed
|
|
83
|
+
`config_mtime` changes, and is read for heuristics only (never a structural
|
|
84
|
+
bypass).
|
|
70
85
|
|
|
71
86
|
## Gotcha
|
|
72
87
|
|
|
73
|
-
- A standard with no config backing is **not** Class A — do not write it here;
|
|
74
|
-
Class B
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
|
|
88
|
+
- A standard with no config backing is **not** Class A — do not write it here;
|
|
89
|
+
it is a guessed/observed convention (Class B) or nothing. Class A never
|
|
90
|
+
fabricates.
|
|
91
|
+
- Do not flatten conflicting configs into one value — the conflict is the
|
|
92
|
+
signal; surface both pointers.
|
|
93
|
+
- The card is a **regenerated digest**, not a hand-edited doc — editing the
|
|
94
|
+
value by hand instead of the config defeats the drift-proofing.
|
|
78
95
|
- A green pointer is not "the code obeys this" — it means the config declares it;
|
|
79
|
-
whether a given file complies is a fresh read.
|
|
96
|
+
whether a given file complies is a fresh read, not this card's claim.
|
|
80
97
|
|
|
81
98
|
## Do NOT
|
|
82
99
|
|
|
83
|
-
- Do NOT emit a coding standard as a believed fact
|
|
100
|
+
- Do NOT emit a coding standard as a believed fact ("we use 4 spaces") — emit a
|
|
101
|
+
pointer to the config that declares it.
|
|
84
102
|
- Do NOT merge conflicting configs into a single claim.
|
|
85
103
|
- Do NOT hand-edit the digest value instead of the config.
|
|
86
104
|
- Do NOT use a Class-A card to skip a fresh structural read (v1 stays in force).
|
|
@@ -89,5 +107,5 @@ A Class-A standards card MUST contain, in order:
|
|
|
89
107
|
## See also
|
|
90
108
|
|
|
91
109
|
- [`evidence-discipline`](../../agent-src/contexts/execution/evidence-discipline.md) — Class A/B/C, trust tiers, the isolation contract.
|
|
92
|
-
- [`context-document`](../context-document/SKILL.md) — parent context mechanism + storage locations.
|
|
110
|
+
- [`context-document`](../context-document/SKILL.md) — the parent context mechanism + storage locations.
|
|
93
111
|
- [`source-discovery`](../source-discovery/SKILL.md) — v1 structural discovery (read fresh; Class A never bypasses it).
|
|
@@ -107,6 +107,20 @@ Rules:
|
|
|
107
107
|
size floor) — it never re-interprets the task text on vibes.
|
|
108
108
|
- Ambiguous shape → `none` (in-session), never a speculative spawn — the
|
|
109
109
|
delegation-policy default.
|
|
110
|
+
- **Fork vs. named subagent — an ordering, never a default (road-to-cache-economy
|
|
111
|
+
Phase 4).** On a host that offers a fork primitive, decide fork-vs-named
|
|
112
|
+
ORTHOGONALLY to the form picked above: tool and scope fit is first-order,
|
|
113
|
+
cache inheritance is second-order. A fork is preferred only when the child
|
|
114
|
+
continues the parent's task under identical tools and constraints (it then
|
|
115
|
+
reads the parent's cache on its first request); a named subagent is
|
|
116
|
+
preferred the moment isolation, a different tool set, or nested dispatch is
|
|
117
|
+
needed — a fork cannot nest, and forking forces background mode, which
|
|
118
|
+
changes the tool set and invalidates the very prefix that motivated the
|
|
119
|
+
fork. `do-in-parallel`-shaped fan-out from one parent has this shape by
|
|
120
|
+
construction (a known, unfixable upstream cost — see
|
|
121
|
+
[`prompts/README.md`](prompts/README.md) § Prompt-cache discipline). NEVER
|
|
122
|
+
encode "always fork" — that was proposed and cut (council 2026-07-30):
|
|
123
|
+
the cache-sharing benefit cannot be predicted before the fork happens.
|
|
110
124
|
- Record the outcome in the telemetry line (`dispatch_mode` field, mode id
|
|
111
125
|
or `none`) so the gate's value is measurable inside the ADR-117
|
|
112
126
|
prove-or-drop window.
|
|
@@ -213,13 +227,13 @@ cross-*vendor* skeptics. Invariants, skeptic prompt, reconciliation, prove-or-dr
|
|
|
213
227
|
gate → [`subagent-modes-detail`](../../agent-src/contexts/execution/subagent-modes-detail.md) § Mode 9
|
|
214
228
|
+ [`prompts/adversarial-verification-council.md`](prompts/adversarial-verification-council.md)
|
|
215
229
|
|
|
216
|
-
> **Disposition (2026-07-28, honest null).**
|
|
217
|
-
>
|
|
218
|
-
>
|
|
219
|
-
> that null; removal at next major unless external
|
|
220
|
-
> case where the panel surfaced a real defect the
|
|
221
|
-
> appears first.
|
|
222
|
-
> documentation, nothing more.
|
|
230
|
+
> **Disposition (2026-07-28, honest null).** The adversarial-council finding-
|
|
231
|
+
> coverage benchmark resolved as a published null (see `docs/benchmark.md`) —
|
|
232
|
+
> this mode is NOT sold as a defect-detection capability. It stays default-off
|
|
233
|
+
> bound to that null; scheduled for removal at the next major unless external
|
|
234
|
+
> evidence (a consumer-filed case where the panel surfaced a real defect the
|
|
235
|
+
> single verifier missed) appears first. Its remaining honest value is
|
|
236
|
+
> perspective diversity + decision documentation, nothing more.
|
|
223
237
|
(ADR-122).
|
|
224
238
|
|
|
225
239
|
## Status taxonomy — every subagent return uses one envelope
|
|
@@ -355,6 +369,6 @@ Skip emit when `subagents.enabled: false` or `spawn_count == 0`
|
|
|
355
369
|
| Stepwise plan with judge gates | Inline — see [`prompts/do-in-steps.md`](prompts/do-in-steps.md) |
|
|
356
370
|
| Standalone judge on an existing diff | Inline — see judge prompt in [`prompts/do-and-judge.md`](prompts/do-and-judge.md) |
|
|
357
371
|
| External / networked second opinion | [`ai-council`](../ai-council/SKILL.md) |
|
|
358
|
-
| Cross-model review WITH repo access | [`/team`](../../
|
|
372
|
+
| Cross-model review WITH repo access | [`/team`](../../domains/meta/team/command.md) (collaborative; subagents are in-session same-weights) |
|
|
359
373
|
| Verifying completeness | [`verify-before-complete`](../verify-before-complete/SKILL.md) |
|
|
360
374
|
| What a subagent owns vs never owns | [`subagent-boundary`](../../../docs/contracts/subagent-boundary.md) |
|
|
@@ -26,7 +26,10 @@ validates against that schema.
|
|
|
26
26
|
## Prompt-cache discipline
|
|
27
27
|
|
|
28
28
|
When dispatching sibling subagents (e.g. `do-in-parallel` with N independent
|
|
29
|
-
slices), **reuse a stable
|
|
29
|
+
slices), **reuse a stable dispatch-prompt prefix** across all siblings. On
|
|
30
|
+
this host the **system prompt comes from the agent definition**, not from
|
|
31
|
+
anything the orchestrator writes — the dispatch prompt (the templated user
|
|
32
|
+
message below) is the one prefix the orchestrator actually controls. Keep
|
|
30
33
|
task-invariant text (role declaration, constraints, status enum, return-envelope
|
|
31
34
|
instruction) in the prefix; put only the slice-specific `TASK:` and
|
|
32
35
|
`CONTEXT FILES:` in the variable section. This maximises host-side prompt-cache
|
|
@@ -43,7 +46,30 @@ instead of a read, and the prefix must be re-hit within the **5-minute TTL**, so
|
|
|
43
46
|
dispatch siblings promptly rather than trickling them. This is why the win is
|
|
44
47
|
real for **fan-out** (many siblings, one prefix) and marginal for one-shot
|
|
45
48
|
dispatch. Verify a cohort is actually reading, not re-writing, by checking
|
|
46
|
-
`usage.cache_read_input_tokens > 0` on the 2nd+ sibling.
|
|
49
|
+
`usage.cache_read_input_tokens > 0` on the 2nd+ sibling. Measured effect
|
|
50
|
+
(anthropics/claude-code#74318): same-type sibling prefix hits reach **85%**
|
|
51
|
+
within a 5-minute window vs **45%** for a mismatched or trickled cohort.
|
|
52
|
+
|
|
53
|
+
**Sibling-uniformity rules** (follow from cache partitioning — the cache key
|
|
54
|
+
includes model and tool set, and any mismatch fragments the cohort's shared
|
|
55
|
+
prefix into separate caches): dispatch a cohort with the **same model**, the
|
|
56
|
+
same `effort`, and the **same tool set** across every sibling, and fire them
|
|
57
|
+
**promptly** rather than trickling dispatches one at a time — a sibling
|
|
58
|
+
dispatched after the 5-minute window has already closed pays the full write
|
|
59
|
+
premium alone, gaining nothing from the cohort.
|
|
60
|
+
|
|
61
|
+
**Fork vs. named subagent — an ordering, not a default.** Tool and scope fit
|
|
62
|
+
is first-order; cache inheritance is second-order. Prefer a **fork** when the
|
|
63
|
+
child continues the parent's task under identical tools and constraints (a
|
|
64
|
+
fork inherits the parent's system prompt, tools, and conversation history
|
|
65
|
+
exactly, so its first request reads the parent's cache). Prefer a **named
|
|
66
|
+
subagent** when the child needs isolation, a different tool set, or nested
|
|
67
|
+
dispatch — a fork cannot nest, and forking forces background mode, which
|
|
68
|
+
changes the tool set and therefore invalidates the very prefix that
|
|
69
|
+
motivated the fork in the first place. Never default to "always fork": that
|
|
70
|
+
option was considered and cut ([`../SKILL.md`](../SKILL.md) § Form gate)
|
|
71
|
+
precisely because the cache-sharing benefit cannot be predicted before the
|
|
72
|
+
fork happens, and background mode can erase it outright.
|
|
47
73
|
|
|
48
74
|
## Loading
|
|
49
75
|
|
|
@@ -11,16 +11,16 @@ packs:
|
|
|
11
11
|
|
|
12
12
|
# supply-chain-intake
|
|
13
13
|
|
|
14
|
-
An LLM generates a plausible-sounding package name token-by-token with no lookup against a real registry. ~19.7% of AI-recommended packages
|
|
14
|
+
An LLM generates a plausible-sounding package name token-by-token with no lookup against a real registry. ~19.7% of AI-recommended packages do not exist (576k-sample study); the same fake name recurs across runs, so attackers pre-register it as malware — "slopsquatting". The `huggingface-cli` proof-of-concept (an empty package matching a common hallucination) drew 30k+ downloads. Endor Labs: only ~1 in 5 AI-recommended dependency versions is both real *and* safe. A dependency the agent named is untrusted until verified — never install it just because the model produced the name.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
18
18
|
- About to add a dependency to `package.json` / `requirements.txt` / `go.mod` / `Cargo.toml` / `composer.json` / `pyproject.toml`, or run `npm/pnpm/yarn install`, `pip install`, `go get`, `cargo add`, `composer require`.
|
|
19
|
-
- Reviewing an AI-authored diff
|
|
20
|
-
- An install command was suggested (especially `curl … | bash`).
|
|
19
|
+
- Reviewing an AI-authored diff that touches a dependency manifest or lockfile.
|
|
20
|
+
- An install command was suggested (especially a `curl … | bash` one-liner).
|
|
21
21
|
- About to add or connect an **MCP server** (an `npx`/`uvx`-launched package or a remote endpoint) to the agent config (`.mcp.json` / equivalent) — an MCP server is a dependency plus a tool-grant, so it runs the intake gate too.
|
|
22
22
|
|
|
23
|
-
Do NOT use when: no dependency is added and no manifest/lockfile is touched.
|
|
23
|
+
Do NOT use when: no dependency is being added and no manifest/lockfile is touched.
|
|
24
24
|
|
|
25
25
|
## The Iron Law
|
|
26
26
|
|
|
@@ -32,16 +32,16 @@ PIN IT, LOCK IT, CVE-SCAN IT. NEVER PIPE A REMOTE SCRIPT STRAIGHT TO A SHELL.
|
|
|
32
32
|
|
|
33
33
|
## Procedure — intake gate (run in order before adding a dependency)
|
|
34
34
|
|
|
35
|
-
1. **Existence** — confirm the exact string resolves on the real registry, published before your session
|
|
35
|
+
1. **Existence** — confirm the exact string resolves on the real registry, published before your session and with real usage:
|
|
36
36
|
```bash
|
|
37
37
|
npm view <pkg> version # non-zero exit = does not exist (hallucination)
|
|
38
38
|
pip index versions <pkg> # or: pip install <pkg>== to list
|
|
39
39
|
go list -m <module>@latest
|
|
40
40
|
cargo search <crate>
|
|
41
41
|
```
|
|
42
|
-
Non-existent, brand-new (days
|
|
43
|
-
2. **Typo-adjacency** — name within 1–2 chars of a far-more-popular package (`python-dateutil` vs `dateutil`, `lodahs` vs `lodash`)?
|
|
44
|
-
3. **Version safety** — the model's pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
|
|
42
|
+
Non-existent, brand-new (published days ago), or near-zero-download → **stop**, treat as hallucination/slopsquat.
|
|
43
|
+
2. **Typo-adjacency** — is the name within 1–2 chars of a far-more-popular package (`python-dateutil` vs `dateutil`, `lodahs` vs `lodash`)? If so, you probably want the popular one — confirm before installing.
|
|
44
|
+
3. **Version safety** — the model's version pin may predate a CVE fix (training-cutoff reintroduction). Take the current patched release, then scan:
|
|
45
45
|
```bash
|
|
46
46
|
npm audit # block on high/critical
|
|
47
47
|
pip-audit
|
|
@@ -51,7 +51,7 @@ PIN IT, LOCK IT, CVE-SCAN IT. NEVER PIPE A REMOTE SCRIPT STRAIGHT TO A SHELL.
|
|
|
51
51
|
```bash
|
|
52
52
|
npm install --save-exact <pkg> && git add package-lock.json
|
|
53
53
|
```
|
|
54
|
-
5. **License** — confirm compatible with the project's declared license before it lands.
|
|
54
|
+
5. **License** — confirm the license is compatible with the project's declared license before it lands.
|
|
55
55
|
6. **No pipe-to-shell** — never `curl … | bash` an install; download → inspect → execute over pinned HTTPS, or surface it to the user for confirmation.
|
|
56
56
|
|
|
57
57
|
## MCP-server intake — the dependency gate plus two extra checks
|
|
@@ -76,20 +76,20 @@ rg -n 'curl[^|]*\|\s*(bash|sh)|wget[^|]*\|\s*(bash|sh)' .
|
|
|
76
76
|
|
|
77
77
|
## Output format
|
|
78
78
|
|
|
79
|
-
1. Per new dependency: name, resolved registry version, publish date / usage signal, and the existence-check command output (`npm view … → 4.17.21`) — proving it real.
|
|
79
|
+
1. Per new dependency: name, resolved registry version, publish date / usage signal, and the existence-check command output (`npm view … → 4.17.21`) — proving it is real.
|
|
80
80
|
2. The lockfile diff staged, and the `audit` / `osv-scanner` result (`0 high/critical`, or the finding + resolution).
|
|
81
|
-
3. For any
|
|
81
|
+
3. For any install command suggested, confirmation it is not `curl|bash` and the source is pinned HTTPS.
|
|
82
82
|
|
|
83
83
|
## Gotcha
|
|
84
84
|
|
|
85
|
-
- Hallucinated names are *repeatable* — re-prompting the same model yields the same fake name, so "it looked confident / consistent"
|
|
85
|
+
- Hallucinated names are *repeatable* — re-prompting the same model yields the same fake name, so "it looked confident / consistent" is not evidence it exists. Only the registry is.
|
|
86
86
|
- Short, "obvious" variants (`X-cli`, `X-client`, `X-sdk`) are the prime hallucination shape — verify these hardest.
|
|
87
87
|
- A package that exists but was published this week with 12 downloads is a slopsquat candidate, not a safe dep — weigh age + usage, not just existence.
|
|
88
88
|
- Lockfile integrity is part of the threat model: an unhashed or floating entry can pull a freshly-poisoned release even when a lockfile is "present".
|
|
89
89
|
|
|
90
90
|
## Do NOT
|
|
91
91
|
|
|
92
|
-
- Do NOT run an install command for a package you
|
|
92
|
+
- Do NOT run an install command for a package you have not existence-checked this session.
|
|
93
93
|
- Do NOT accept the model's version pin as authoritative — re-check against current CVEs.
|
|
94
94
|
- Do NOT commit a manifest change without its lockfile.
|
|
95
95
|
- Do NOT pipe a fetched script into an interpreter.
|