@event4u/agent-config 9.7.0 → 9.9.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 +314 -190
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +57 -11
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user.md +1 -1
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -3
- package/dist/agent-src/commands/commit/in-chunks.md +8 -0
- package/dist/agent-src/commands/commit.md +17 -0
- package/dist/agent-src/commands/fix/portability.md +2 -2
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -2
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +2 -2
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -0
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/security-audit-config.md +1 -1
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/contexts/override-system.md +75 -5
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
- package/dist/agent-src/rules/git-history-discipline.md +2 -0
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/language-and-tone.md +2 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
- package/dist/agent-src/rules/media-governance-routing.md +2 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +4 -1
- package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
- package/dist/agent-src/rules/onboarding-gate.md +2 -0
- package/dist/agent-src/rules/output-discipline.md +2 -0
- package/dist/agent-src/rules/persona-governance.md +2 -0
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/preservation-guard.md +3 -0
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +2 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/telegraph-speak.md +2 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
- package/dist/agent-src/rules/tool-safety.md +4 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/rules/verify-before-complete.md +2 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
- package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-review/SKILL.md +5 -6
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
- package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
- package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
- package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
- package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
- package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
- package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/rule.md +2 -2
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/configRoot.js +112 -0
- package/dist/cli/configRoot.js.map +1 -0
- package/dist/cli/configRoot.test.js +97 -0
- package/dist/cli/configRoot.test.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/help.js +4 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +54 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +8 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +502 -101
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +95 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +36 -7
- package/dist/hooks/dispatch.js +19475 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +791 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44292 -0
- package/dist/router.json +1 -1
- package/dist/scripts/condense.js +14 -7
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +12 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +32 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +12 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/server/serverInfo.js +6 -2
- package/dist/server/serverInfo.js.map +1 -1
- package/dist/server/token.js +11 -4
- package/dist/server/token.js.map +1 -1
- package/dist/server/writeRoot.js +15 -1
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/capabilities.js +33 -0
- package/dist/shared/capabilities.js.map +1 -0
- package/dist/shared/capabilities.test.js +39 -0
- package/dist/shared/capabilities.test.js.map +1 -0
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +15 -6
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +22 -9
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/config/agent-settings.template.yml +94 -13
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/config/reach-channels.yml +217 -0
- package/src/config/reach-prescriptions-intake.yml +200 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +62 -1
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +96 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/exec_evidence.ts +251 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/kernel_rules.ts +46 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
- package/src/scripts/_lib/risk_paths.ts +160 -0
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/secret_detector.test.ts +108 -0
- package/src/scripts/_lib/secret_detector.ts +328 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/tool_probe.ts +359 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/adr/regenerate_index.ts +81 -6
- package/src/scripts/ai_council/blind_review.ts +0 -0
- package/src/scripts/ai_council/config.ts +12 -6
- package/src/scripts/ai_council/orchestrator.ts +73 -3
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +48 -0
- package/src/scripts/audit_adr_coverage.ts +33 -0
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +207 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_adr_frontmatter.ts +195 -0
- package/src/scripts/check_artefact_count_messaging.ts +4 -0
- package/src/scripts/check_backstop_debt.ts +210 -0
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_claims.ts +188 -8
- package/src/scripts/check_comparison.ts +12 -0
- package/src/scripts/check_enforcement_coverage.ts +592 -0
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_kernel_rule_bundle.ts +16 -12
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_reach_channels.ts +407 -0
- package/src/scripts/check_reach_staleness.ts +364 -0
- package/src/scripts/check_secret_leak.test.ts +47 -0
- package/src/scripts/check_secret_leak.ts +290 -0
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +379 -0
- package/src/scripts/code_graph/detect.ts +186 -0
- package/src/scripts/code_graph/extract.ts +386 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/loader.ts +123 -0
- package/src/scripts/code_graph/query.ts +290 -0
- package/src/scripts/code_graph/sanitize.ts +30 -0
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/code_graph/types.ts +83 -0
- package/src/scripts/code_graph/validate.ts +63 -0
- package/src/scripts/condense.ts +14 -6
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/council_cli.ts +126 -12
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +8 -4
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/generate_subagent_floor.ts +194 -0
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +65 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +4 -4
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/iron_law_sha.ts +3 -12
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +6 -0
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_override_kernel_guard.ts +267 -0
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +56 -5
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/measure_rule_budget.ts +3 -12
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/reach_doctor.ts +1651 -0
- package/src/scripts/release.ts +24 -3
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/risk_escalation_shadow.ts +160 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/schemas/agent-settings.schema.json +23 -0
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/reach-channels.schema.json +134 -0
- package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
- package/src/scripts/schemas/rule.schema.json +20 -0
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/skill_linter.ts +55 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/validate_reach_prescriptions.ts +751 -0
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +24 -2
- package/src/shared/capabilities.test.ts +43 -0
- package/src/shared/capabilities.ts +75 -0
- package/src/templates/minimal/agents-overrides-readme.md +20 -0
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-BiEZiZ31.js +0 -40
- package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
- package/docs/CLAIMS.md +0 -261
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -648
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -721
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -45
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -59
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -685
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -189
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -136
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -117
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -44
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -176
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -29
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: beta
|
|
3
|
-
keep-beta-until: 2026-08-12
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# UI Stack Extension — adding a new frontend stack to the UI track
|
|
7
|
-
|
|
8
|
-
> **Audience:** maintainers adding a new stack (Svelte, SolidJS, Astro,
|
|
9
|
-
> Qwik, …) to the UI directive set. Consumers of the package never run
|
|
10
|
-
> this; they get the stacks shipped here.
|
|
11
|
-
> **Source of truth:** [`ui-track-flow.md`](ui-track-flow.md) for the
|
|
12
|
-
> contract; [`adr-product-ui-track.md`](adr-product-ui-track.md) for
|
|
13
|
-
> the rationale.
|
|
14
|
-
> **Status:** recipe only — R3 ships four stacks
|
|
15
|
-
> (`blade-livewire-flux`, `react-shadcn`, `vue`, `plain`); no
|
|
16
|
-
> additional stacks are scheduled. Add one only when a real consumer
|
|
17
|
-
> project asks for it.
|
|
18
|
-
|
|
19
|
-
## What "adding a stack" actually means
|
|
20
|
-
|
|
21
|
-
Three artefacts plus a Golden fixture. The engine's directive set is
|
|
22
|
-
fixed; only the dispatch tables and the implementation skill bundles
|
|
23
|
-
change.
|
|
24
|
-
|
|
25
|
-
| Artefact | File | Change |
|
|
26
|
-
|---|---|---|
|
|
27
|
-
| Stack label | [`scripts/work_engine/stack/detect.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/stack/detect.py) | New entry in `KNOWN_STACKS` + a heuristic in `detect_stack` |
|
|
28
|
-
| Apply skill | `.agent-src.uncondensed/skills/ui-apply-<stack>/SKILL.md` | New skill bundle |
|
|
29
|
-
| Review skill | `.agent-src.uncondensed/skills/ui-design-review-<stack>/SKILL.md` | New skill bundle |
|
|
30
|
-
| Polish skill | `.agent-src.uncondensed/skills/ui-polish-<stack>/SKILL.md` | New skill bundle |
|
|
31
|
-
| Dispatch tables | `directives/ui/{apply,review,polish}.py` | New row in each `STACK_DIRECTIVES` map |
|
|
32
|
-
| Golden fixture | `tests/golden/sandbox/recipes/gt_u<NN>_<stack>_*.py` | One happy-path baseline at minimum |
|
|
33
|
-
|
|
34
|
-
Skill names are not free — they are read by the dispatcher as
|
|
35
|
-
`ui-apply-<stack>`, `ui-design-review-<stack>`, `ui-polish-<stack>`.
|
|
36
|
-
A typo is silently handled by the `DEFAULT_DIRECTIVE` fallback
|
|
37
|
-
(`ui-apply-plain` / `ui-design-review-plain` / `ui-polish-plain`),
|
|
38
|
-
which is recoverable but probably not what the maintainer intended.
|
|
39
|
-
|
|
40
|
-
## Step 1 — pick the label
|
|
41
|
-
|
|
42
|
-
Convention: lowercase, hyphenated, framework-only (no version pin).
|
|
43
|
-
|
|
44
|
-
| Good | Bad | Why |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| `svelte` | `svelte5` | Major-version drift handled by the audit's version-anchor warning, not by splitting the stack. |
|
|
47
|
-
| `solid` | `solid-js` | Match the package name developers say out loud. |
|
|
48
|
-
| `astro` | `astro-content` | Sub-modes (Astro components vs MDX) live inside the apply skill, not in the label. |
|
|
49
|
-
|
|
50
|
-
Add the label to `KNOWN_STACKS` (the frozenset is exported and used by
|
|
51
|
-
state validation; missing it makes detection silent-fail back to
|
|
52
|
-
`plain`).
|
|
53
|
-
|
|
54
|
-
## Step 2 — heuristic in `detect_stack`
|
|
55
|
-
|
|
56
|
-
The detector reads `composer.json` and `package.json` once and applies
|
|
57
|
-
heuristics in **priority order** — first match wins. The order matters:
|
|
58
|
-
a Laravel + React project must hit `blade-livewire-flux` only when
|
|
59
|
-
Livewire and Flux are present, otherwise `react-shadcn`.
|
|
60
|
-
|
|
61
|
-
Insert the new heuristic **before** the `plain` fallback and **after**
|
|
62
|
-
any stack that could legitimately co-exist with yours. For Svelte:
|
|
63
|
-
|
|
64
|
-
```python
|
|
65
|
-
def _has_svelte(package: dict[str, object]) -> bool:
|
|
66
|
-
deps = _all_dependencies(
|
|
67
|
-
package,
|
|
68
|
-
"dependencies",
|
|
69
|
-
"devDependencies",
|
|
70
|
-
"peerDependencies",
|
|
71
|
-
"optionalDependencies",
|
|
72
|
-
)
|
|
73
|
-
return "svelte" in deps
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
```python
|
|
77
|
-
# inside detect_stack(), before the `plain` fallback
|
|
78
|
-
if _has_svelte(package):
|
|
79
|
-
return StackResult(frontend="svelte", mtime=mtime)
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Failure mode to watch.** A heuristic that overlaps with an existing
|
|
83
|
-
stack (Astro lists `react` as a peer dep when used with React adapters)
|
|
84
|
-
must be ordered carefully. Test against real fixtures, not hand-edited
|
|
85
|
-
JSON.
|
|
86
|
-
|
|
87
|
-
## Step 3 — three skills, one shape
|
|
88
|
-
|
|
89
|
-
Each skill is a SKILL.md bundle with frontmatter and prose. The
|
|
90
|
-
contract for each:
|
|
91
|
-
|
|
92
|
-
### `ui-apply-<stack>`
|
|
93
|
-
|
|
94
|
-
Reads `state.ui_design.brief` and `state.ui_audit.components_found`.
|
|
95
|
-
Writes a populated `state.ticket["ui_apply"]` envelope:
|
|
96
|
-
|
|
97
|
-
```yaml
|
|
98
|
-
ui_apply:
|
|
99
|
-
files: ["resources/components/UserCard.svelte"]
|
|
100
|
-
rendered: # full text per file, microcopy-locked
|
|
101
|
-
"resources/components/UserCard.svelte": |
|
|
102
|
-
<script>...</script>
|
|
103
|
-
...
|
|
104
|
-
components_added: ["UserCard"]
|
|
105
|
-
components_reused: ["Button", "Card"] # from audit
|
|
106
|
-
microcopy_lock: true # affirms strings come from brief verbatim
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Hard rule:** strings in `rendered` must not contain
|
|
110
|
-
`PLACEHOLDER_PATTERNS` (`<placeholder>`, `lorem`, `todo:`, `tbd`,
|
|
111
|
-
`xxx`). The dispatcher rejects on producer side; the skill must reject
|
|
112
|
-
on consumer side too.
|
|
113
|
-
|
|
114
|
-
### `ui-design-review-<stack>`
|
|
115
|
-
|
|
116
|
-
Reads `state.ui_apply` + `state.ui_design.brief`. Writes
|
|
117
|
-
`state.ui_review` with `findings: list` and `review_clean: bool`.
|
|
118
|
-
Findings are tagged `kind` ∈ `{token_violation, microcopy_drift,
|
|
119
|
-
a11y_gap, layout_break, prop_misuse, …}` — extend the kind set
|
|
120
|
-
sparingly. Token violations carry `category` and `value` so polish
|
|
121
|
-
can route them through token extraction.
|
|
122
|
-
|
|
123
|
-
### `ui-polish-<stack>`
|
|
124
|
-
|
|
125
|
-
Reads `state.ui_review.findings` + `state.ui_audit.design_tokens`.
|
|
126
|
-
Writes a fix envelope and increments `state.ui_polish.rounds`. Hard
|
|
127
|
-
ceiling at `POLISH_CEILING = 2` is enforced by the dispatcher;
|
|
128
|
-
the skill does **not** check the ceiling itself but must respect
|
|
129
|
-
`token_repeat_threshold = 2` for unmatched-token extraction.
|
|
130
|
-
|
|
131
|
-
## Step 4 — wire dispatch tables
|
|
132
|
-
|
|
133
|
-
Three identical edits in
|
|
134
|
-
[`directives/ui/apply.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/apply.py),
|
|
135
|
-
[`directives/ui/review.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/review.py),
|
|
136
|
-
and [`directives/ui/polish.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/polish.py):
|
|
137
|
-
|
|
138
|
-
```python
|
|
139
|
-
STACK_DIRECTIVES: dict[str, str] = {
|
|
140
|
-
"blade-livewire-flux": "ui-apply-blade-livewire-flux",
|
|
141
|
-
"react-shadcn": "ui-apply-react-shadcn",
|
|
142
|
-
"vue": "ui-apply-vue",
|
|
143
|
-
"plain": "ui-apply-plain",
|
|
144
|
-
"svelte": "ui-apply-svelte", # ← new row
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Same shape in `review.py` (`ui-design-review-svelte`) and `polish.py`
|
|
149
|
-
(`ui-polish-svelte`). The dispatcher does not validate that the skill
|
|
150
|
-
actually exists — it emits the `@agent-directive` and trusts the agent
|
|
151
|
-
loader. A typo or missing skill manifests as a halt loop the maintainer
|
|
152
|
-
notices on first replay.
|
|
153
|
-
|
|
154
|
-
## Step 5 — version anchor in skill frontmatter
|
|
155
|
-
|
|
156
|
-
Every stack-specific skill declares the upstream library version it
|
|
157
|
-
was tested against, in frontmatter:
|
|
158
|
-
|
|
159
|
-
```yaml
|
|
160
|
-
tested_against:
|
|
161
|
-
svelte: "5.x"
|
|
162
|
-
svelte_kit: "2.x" # if applicable
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
The audit step reads installed versions from `package.json` and
|
|
166
|
-
compares against the anchor. A mismatch warns but does not block;
|
|
167
|
-
the user picks whether to proceed or pin. Forgetting the anchor
|
|
168
|
-
fails CI (`task lint-skills` enforces presence on `ui-apply-*`,
|
|
169
|
-
`ui-design-review-*`, `ui-polish-*`).
|
|
170
|
-
|
|
171
|
-
## Step 6 — Golden fixture
|
|
172
|
-
|
|
173
|
-
Add at least one happy-path Golden that exercises the full UI flow
|
|
174
|
-
on the new stack. Recipe lives at
|
|
175
|
-
`tests/golden/sandbox/recipes/gt_u<NN>_<stack>_happy.py` and follows
|
|
176
|
-
the pattern of `gt_u11_high_confidence.py`:
|
|
177
|
-
|
|
178
|
-
1. Seed state with a clear `ui-build` prompt and an audit that finds
|
|
179
|
-
exactly one strong match (so `audit_path = "high_confidence"`).
|
|
180
|
-
2. Pin the halt budget — high-confidence happy path is **1 halt**
|
|
181
|
-
(design-brief sign-off only).
|
|
182
|
-
3. Capture under `tests/golden/baseline/GT-U<NN>/` via `task golden-capture`.
|
|
183
|
-
4. The replay harness (`tests/golden/test_replay.py`) auto-discovers
|
|
184
|
-
the new baseline; no Taskfile change needed.
|
|
185
|
-
|
|
186
|
-
For a complete pair, also add an `ambiguous` fixture — `2 halts max`,
|
|
187
|
-
matching `gt_u12_ambiguous.py`'s shape. Skip the greenfield branch
|
|
188
|
-
unless the stack has a meaningful difference there.
|
|
189
|
-
|
|
190
|
-
See [`tests/golden/CAPTURING.md`](../../tests/golden/CAPTURING.md)
|
|
191
|
-
for capture mechanics.
|
|
192
|
-
|
|
193
|
-
## Step 7 — verify end-to-end
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
task sync # propagate detect.py + skill changes
|
|
197
|
-
task generate-tools # refresh .claude/, .cursor/, etc.
|
|
198
|
-
task lint-skills # checks frontmatter + version anchor
|
|
199
|
-
task golden-replay # runs all R1+R2+R3 baselines
|
|
200
|
-
task ci # full pipeline
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
If `golden-replay` regresses on a non-`<stack>` baseline, your
|
|
204
|
-
detector heuristic is over-matching — re-order the priority chain.
|
|
205
|
-
|
|
206
|
-
## What you do **not** add
|
|
207
|
-
|
|
208
|
-
- **A new directive set.** UI / UI-trivial / mixed are exhaustive for
|
|
209
|
-
R3. A stack-specific directive set means you've reached for a hammer
|
|
210
|
-
the engine doesn't have.
|
|
211
|
-
- **A new entrypoint command.** `/work` and `/implement-ticket` route
|
|
212
|
-
through `directive_set` and `state.stack.frontend`; a `/build-svelte`
|
|
213
|
-
command would create a UX divergence the engine's intent classifier
|
|
214
|
-
is supposed to prevent.
|
|
215
|
-
- **`fe-design` content.** That skill is the framework-agnostic
|
|
216
|
-
reference; new stack-specific heuristics live in the apply skill,
|
|
217
|
-
not in `fe-design`.
|
|
218
|
-
- **Visual review.** Roadmap 4's headless-browser pipeline is the
|
|
219
|
-
destination for screenshot capture and a11y tooling. Stack
|
|
220
|
-
extensions don't need to wait on it.
|
|
221
|
-
|
|
222
|
-
## When NOT to add a stack
|
|
223
|
-
|
|
224
|
-
Defer the work and stay on `plain` if any apply:
|
|
225
|
-
|
|
226
|
-
- Only one consumer project asks; the cost of maintaining the apply
|
|
227
|
-
skill exceeds the value.
|
|
228
|
-
- The framework's idiom is close enough to an existing stack that
|
|
229
|
-
the existing apply skill produces acceptable output (Preact ≈
|
|
230
|
-
`react-shadcn` for most components).
|
|
231
|
-
- The framework is in beta or pre-1.0 — the version anchor will drift
|
|
232
|
-
faster than you can re-capture goldens.
|
|
233
|
-
|
|
234
|
-
The audit gate is the safety net: even on `plain`, the audit finds
|
|
235
|
-
existing components and the design step uses them. The cost of
|
|
236
|
-
**not** adding a stack is generally lower than the cost of adding
|
|
237
|
-
one prematurely.
|
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: beta
|
|
3
|
-
keep-beta-until: 2026-08-12
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# UI Track — Flow Contract
|
|
7
|
-
|
|
8
|
-
> Technical contracts for the UI directive sets.
|
|
9
|
-
> Sibling of [`implement-ticket-flow.md`](implement-ticket-flow.md) — that
|
|
10
|
-
> doc covers `backend`; this one covers `ui`, `ui-trivial`, and the
|
|
11
|
-
> `mixed` set that stitches both.
|
|
12
|
-
>
|
|
13
|
-
> - **Created:** 2026-05-01
|
|
14
|
-
> - **Status:** Phase 1–6 shipped — audit / design / apply / review /
|
|
15
|
-
> polish handlers live under
|
|
16
|
-
> [`.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/).
|
|
17
|
-
> Mixed under `directives/mixed/`. `ui-trivial` under
|
|
18
|
-
> `directives/ui_trivial/`. R4 (Visual Review Loop) added the
|
|
19
|
-
> a11y gate, the preview envelope, and a polish-termination rewrite
|
|
20
|
-
> that splits subjective ceilings from objective a11y blocks.
|
|
21
|
-
> Golden Transcripts GT-U1..U4, U7, U8, U9..U12 plus GT-U5 (mixed
|
|
22
|
-
> flow), GT-U6A/B (stack dispatch), and R4's GT-U13..U15 (a11y polish,
|
|
23
|
-
> a11y ceiling, preview render failure) pin happy-path, ambiguity,
|
|
24
|
-
> mixed orchestration, stack dispatch, trivial happy path, and the
|
|
25
|
-
> visual-review gates.
|
|
26
|
-
> - **Runtime:** Python 3.10+. Same `DeliveryState` envelope, same
|
|
27
|
-
> eight-slot dispatcher as the backend track — only the slot handlers
|
|
28
|
-
> differ.
|
|
29
|
-
|
|
30
|
-
## What this doc is
|
|
31
|
-
|
|
32
|
-
The **shape** of the four UI-related directive sets: which slot runs
|
|
33
|
-
which handler, what each handler reads / writes on `DeliveryState`, the
|
|
34
|
-
hard thresholds (similarity, polish ceiling, trivial limits), and the
|
|
35
|
-
sentinels that release each gate.
|
|
36
|
-
|
|
37
|
-
## What this doc is *not*
|
|
38
|
-
|
|
39
|
-
- A skill spec — `existing-ui-audit`, `ui-design-brief`, the stack
|
|
40
|
-
apply / review / polish skills are documented in their own
|
|
41
|
-
`SKILL.md` files.
|
|
42
|
-
- A migration guide for the schema — see
|
|
43
|
-
[`implement-ticket-flow.md`](implement-ticket-flow.md#state-schema-v1).
|
|
44
|
-
|
|
45
|
-
## The four directive sets
|
|
46
|
-
|
|
47
|
-
| Set | When picked | Slot 1–8 |
|
|
48
|
-
|---|---|---|
|
|
49
|
-
| `backend` | Default — no UI keywords, no UI envelope | `refine → memory → analyze → plan → implement → test → verify → report` (see sibling doc) |
|
|
50
|
-
| `ui` | UI keywords, `improve` envelope, or refine routing to UI | `audit → ⊘ → design → ⊘ → apply → review → polish → report` |
|
|
51
|
-
| `ui-trivial` | Phase-1 classifier hits "single-line tweak" pattern | `refine → ⊘ → ⊘ → ⊘ → apply → test → ⊘ → report` |
|
|
52
|
-
| `mixed` | Backend + UI in one input | `refine → memory → analyze → contract → ui → stitch → verify → report` |
|
|
53
|
-
|
|
54
|
-
`⊘` = `_passthrough.run` (or `_skipped.run` in `ui-trivial`). The slot
|
|
55
|
-
exists so the dispatcher's completeness check is satisfied; no logic
|
|
56
|
-
runs and no state is touched.
|
|
57
|
-
|
|
58
|
-
Source of truth for slot wiring:
|
|
59
|
-
[`directives/ui/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/__init__.py),
|
|
60
|
-
[`directives/mixed/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/mixed/__init__.py),
|
|
61
|
-
[`directives/ui_trivial/__init__.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/__init__.py).
|
|
62
|
-
|
|
63
|
-
## The `ui` set — slot-by-slot
|
|
64
|
-
|
|
65
|
-
### `refine` → audit
|
|
66
|
-
|
|
67
|
-
Mandatory pre-step. Routes on `state.ui_audit` shape:
|
|
68
|
-
|
|
69
|
-
| State | Outcome | Handler |
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| `None` / empty / non-dict | `BLOCKED` + `@agent-directive: existing-ui-audit` | First-pass delegation |
|
|
72
|
-
| `greenfield=True`, no `greenfield_decision` | `BLOCKED` numbered options | User picks `scaffold` / `bare` / `external_reference` |
|
|
73
|
-
| `shadcn_inventory.version` major ≠ `TESTED_AGAINST_SHADCN_MAJOR` (`2`) and no `version_mismatch_decision` | `BLOCKED` soft halt | "Cautious composition / abort" |
|
|
74
|
-
| Confidence `high` + ≥1 match with similarity ≥ `STRONG_SIMILARITY` (`0.7`) and no runner-up within `TIE_GAP` (`0.05`) | `SUCCESS`, `audit_path = "high_confidence"` | Design folds findings into brief |
|
|
75
|
-
| Anything else populated | `BLOCKED` numbered options | User picks candidate to extend (or "build new"); records `audit_path = "ambiguous"` + `candidate_pick` |
|
|
76
|
-
|
|
77
|
-
Constants live in
|
|
78
|
-
[`directives/ui/audit.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui/audit.py):
|
|
79
|
-
`STRONG_SIMILARITY = 0.7`, `TIE_GAP = 0.05`,
|
|
80
|
-
`TESTED_AGAINST_SHADCN_MAJOR = 2`. Idempotent re-entry: once
|
|
81
|
-
`audit_path` is set the step round-trips through `SUCCESS` without
|
|
82
|
-
re-emitting.
|
|
83
|
-
|
|
84
|
-
### `analyze` → design
|
|
85
|
-
|
|
86
|
-
Produces the **locked design brief**. `apply` consumes microcopy
|
|
87
|
-
verbatim — that's the lock.
|
|
88
|
-
|
|
89
|
-
Required brief keys (`REQUIRED_BRIEF_KEYS`): `layout`, `components`,
|
|
90
|
-
`states`, `microcopy`, `a11y`. Required state coverage
|
|
91
|
-
(`REQUIRED_STATE_KEYS`): `empty`, `loading`, `error`, `success`,
|
|
92
|
-
`disabled`.
|
|
93
|
-
|
|
94
|
-
Microcopy is rejected when any string matches `PLACEHOLDER_PATTERNS`:
|
|
95
|
-
`<placeholder>`, `lorem`, `todo:`, `tbd`, `xxx` (case-insensitive
|
|
96
|
-
substring). The same tuple is re-imported by `apply` so the rejection
|
|
97
|
-
fires at the producer first, at the consumer as defense-in-depth.
|
|
98
|
-
|
|
99
|
-
Sentinel: `state.ui_design.design_confirmed`. Without it the brief
|
|
100
|
-
halt fires every pass; with it the step round-trips through `SUCCESS`.
|
|
101
|
-
|
|
102
|
-
### `implement` → apply
|
|
103
|
-
|
|
104
|
-
Stack-dispatched. Routes on `state.stack.frontend`:
|
|
105
|
-
|
|
106
|
-
| `state.stack.frontend` | Directive | Skill bundle |
|
|
107
|
-
|---|---|---|
|
|
108
|
-
| `blade-livewire-flux` | `ui-apply-blade-livewire-flux` | `flux` + `livewire` + `blade-ui` |
|
|
109
|
-
| `react-shadcn` | `ui-apply-react-shadcn` | `react-shadcn-ui` |
|
|
110
|
-
| `vue` | `ui-apply-vue` | `ui-apply-vue` |
|
|
111
|
-
| `plain` (or unknown — `DEFAULT_DIRECTIVE`) | `ui-apply-plain` | `blade-ui` + Tailwind base |
|
|
112
|
-
|
|
113
|
-
Apply does **not** re-validate the brief — it validates *output* against
|
|
114
|
-
`PLACEHOLDER_PATTERNS`. A hallucinated `<placeholder>` string in the
|
|
115
|
-
rendered envelope triggers
|
|
116
|
-
`apply_placeholders_in_output` and forces re-render with the locked
|
|
117
|
-
microcopy. Once `state.ticket["ui_apply"]` is well-formed, apply records
|
|
118
|
-
changes and returns `SUCCESS`.
|
|
119
|
-
|
|
120
|
-
### `test` → review
|
|
121
|
-
|
|
122
|
-
Stack-dispatched design-review pass. Same dispatch table shape as
|
|
123
|
-
apply, prefix `ui-design-review-`. Writes
|
|
124
|
-
`state.ui_review.findings` (list) + `state.ui_review.review_clean`
|
|
125
|
-
(bool). The step does **not** enforce
|
|
126
|
-
`review_clean == (len(findings) == 0)` — that would block the
|
|
127
|
-
legitimate "ship as-is with open findings" replay path. Honesty of the
|
|
128
|
-
flag is the producer's contract; review only validates shape.
|
|
129
|
-
|
|
130
|
-
**R4 — a11y gate** (after the basic clean/findings gates pass).
|
|
131
|
-
`_apply_a11y_gate` reads `state.ui_review.a11y.violations`, filters
|
|
132
|
-
out entries already in `state.ui_audit.a11y_baseline` (pre-existing
|
|
133
|
-
violations stay informational, never block), drops anything below
|
|
134
|
-
`severity_floor` (default `moderate`; unknown severities default to
|
|
135
|
-
`moderate` so a malformed envelope cannot weaken the gate), and
|
|
136
|
-
filters entries listed in `state.ui_review.a11y.accepted_violations`
|
|
137
|
-
(idempotent re-entry after the polish-ceiling Accept choice).
|
|
138
|
-
Surviving violations are synthesised as
|
|
139
|
-
`{kind: "a11y_violation", rule, selector, severity}` findings (deduped
|
|
140
|
-
by `(rule, selector)`) and `review_clean` is forced to `False`
|
|
141
|
-
engine-side. Opt-in: when `state.ui_audit.a11y_baseline` exists but
|
|
142
|
-
`state.ui_review.a11y` is missing, the step halts with
|
|
143
|
-
`review_a11y_pending` so the skill writes the envelope on the next
|
|
144
|
-
pass; pre-R4 envelopes without a baseline bypass the gate entirely.
|
|
145
|
-
|
|
146
|
-
**R4 — preview envelope** (the engine never renders).
|
|
147
|
-
`_apply_preview_gate` reads `state.ui_review.preview`. Shape:
|
|
148
|
-
`render_ok: bool`, optional `screenshot_path`, `dom_dump_path`,
|
|
149
|
-
`error`, `skipped`. `render_ok: False` halts with
|
|
150
|
-
`preview_render_failed` so the user picks retry / skip / abort; Skip
|
|
151
|
-
flips `state.ui_review.preview.skipped = true` and the gate becomes a
|
|
152
|
-
no-op on re-entry. `render_ok: True` with `screenshot_path` set
|
|
153
|
-
threads the path into the delivery report's `artifacts` list. The
|
|
154
|
-
gate is independent of the a11y gate; both can fire on the same pass.
|
|
155
|
-
|
|
156
|
-
### `verify` → polish
|
|
157
|
-
|
|
158
|
-
Bounded fix loop. Base ceiling: `POLISH_CEILING = 2` rounds. R4
|
|
159
|
-
splits termination into **subjective** and **objective** branches:
|
|
160
|
-
the subjective `polish_ceiling_reached` halt only fires when the
|
|
161
|
-
remaining findings are non-a11y; objective a11y violations take the
|
|
162
|
-
explicit `polish_a11y_blocking` branch with its own option set.
|
|
163
|
-
|
|
164
|
-
| `review_clean` | `rounds` | Remaining findings | Behaviour |
|
|
165
|
-
|---|---|---|---|
|
|
166
|
-
| `True` | any | — | `SUCCESS` — advance to report |
|
|
167
|
-
| `False` | `< effective_ceiling` | any | `BLOCKED` + `@agent-directive: ui-polish-<stack>`; skill applies fixes, re-runs review, increments `rounds` |
|
|
168
|
-
| `False` | `== effective_ceiling` | contains `a11y_violation` | `BLOCKED` numbered options: extend (one extra round, sets `extension_used = True`; option disappears once spent) / accept (appends rule ids to `state.ui_review.a11y.accepted_violations`, then continues) / abort |
|
|
169
|
-
| `False` | `== effective_ceiling` | non-a11y only | `BLOCKED` numbered options: ship as-is / abort / hand off |
|
|
170
|
-
|
|
171
|
-
`effective_ceiling = POLISH_CEILING + 1` once
|
|
172
|
-
`state.ui_polish.extension_used` is set; the schema validator widens
|
|
173
|
-
the upper bound from `[0, 2]` to `[0, 3]` only when the flag is
|
|
174
|
-
`True`, so the ceiling holds across in-memory state, on-disk state,
|
|
175
|
-
and the dispatcher. `rounds > 3` is rejected unconditionally, even
|
|
176
|
-
with the extension flag.
|
|
177
|
-
|
|
178
|
-
**Idempotent re-entry on Accept.** A `state.ui_review.a11y.accepted_violations`
|
|
179
|
-
list with rule ids matching the remaining a11y findings round-trips
|
|
180
|
-
through `SUCCESS` because the review gate's `_apply_a11y_gate`
|
|
181
|
-
filters accepted entries before synthesising `a11y_violation`
|
|
182
|
-
findings. The Accept branch and the Ship-as-is branch are therefore
|
|
183
|
-
asymmetric: Ship-as-is flips `review_clean` directly; Accept records
|
|
184
|
-
explicit rule ids so replay reproduces the same gate decision.
|
|
185
|
-
|
|
186
|
-
**Token-violation extraction.** Findings with
|
|
187
|
-
`kind == "token_violation"` carry `category` and `value`. Polish
|
|
188
|
-
classifies them against `state.ui_audit.design_tokens`:
|
|
189
|
-
|
|
190
|
-
- Matched value → fix uses the named token; counted as a regular round.
|
|
191
|
-
- Unmatched value repeated `> TOKEN_REPEAT_THRESHOLD` (`2`) times →
|
|
192
|
-
emits `polish_token_extraction_pending`: extract the value to a new
|
|
193
|
-
token before the next round runs. One-off unmatched values stay
|
|
194
|
-
inline.
|
|
195
|
-
|
|
196
|
-
Stack-directive table mirrors apply / review with prefix
|
|
197
|
-
`ui-polish-`. `DEFAULT_DIRECTIVE = "ui-polish-plain"`.
|
|
198
|
-
|
|
199
|
-
### `report` → backend renderer
|
|
200
|
-
|
|
201
|
-
Re-export of
|
|
202
|
-
[`directives.backend.report.run`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/backend/report.py).
|
|
203
|
-
The renderer is pure and state-driven; the same Markdown contract
|
|
204
|
-
serves both tracks.
|
|
205
|
-
|
|
206
|
-
## Halt budget — happy path
|
|
207
|
-
|
|
208
|
-
`ui` set, fresh state, audit + design pass cleanly:
|
|
209
|
-
|
|
210
|
-
1. **Audit pick** — first-pass `existing-ui-audit` directive halt.
|
|
211
|
-
2. **Design sign-off** — `design_confirmed` numbered-options halt.
|
|
212
|
-
|
|
213
|
-
Two user halts. Apply / review / polish all run silently when their
|
|
214
|
-
producers write clean envelopes on the first attempt. GT-U1..U4 pin
|
|
215
|
-
this budget.
|
|
216
|
-
|
|
217
|
-
Additional halts surface only on real ambiguity:
|
|
218
|
-
greenfield-undecided (+1), shadcn-version-mismatch (+1), audit-ambiguous
|
|
219
|
-
(+1), placeholder rejection (+N until microcopy is fixed),
|
|
220
|
-
polish round (+1 per dirty review, capped at the effective ceiling),
|
|
221
|
-
polish ceiling — subjective (+1 when both rounds fail and remaining
|
|
222
|
-
findings are non-a11y) **or** a11y-blocking (+1 when remaining
|
|
223
|
-
findings include `a11y_violation` entries; the Extend option grants
|
|
224
|
-
one extra round, then disappears),
|
|
225
|
-
preview render failure (+1 when `state.ui_review.preview.render_ok`
|
|
226
|
-
is `False`; user picks retry / skip / abort),
|
|
227
|
-
review a11y pending (+1 when an `a11y_baseline` exists but the review
|
|
228
|
-
skill has not yet written `state.ui_review.a11y`).
|
|
229
|
-
|
|
230
|
-
## The `ui-trivial` set — short-circuit path
|
|
231
|
-
|
|
232
|
-
For provably bounded edits (single class swap, copy tweak, one-prop
|
|
233
|
-
adjustment). Phase-1 intent classifier writes
|
|
234
|
-
`directive_set = "ui-trivial"`.
|
|
235
|
-
|
|
236
|
-
Hard preconditions in
|
|
237
|
-
[`directives/ui_trivial/apply.py`](../../.agent-src.uncondensed/templates/scripts/work_engine/directives/ui_trivial/apply.py):
|
|
238
|
-
|
|
239
|
-
- `MAX_FILES = 1` — exactly one file touched.
|
|
240
|
-
- `MAX_LINES_CHANGED = 5` — diff stays under five changed lines.
|
|
241
|
-
|
|
242
|
-
Violation flips `state.directive_set` to `ui` (the full audit gate)
|
|
243
|
-
and the dispatcher restarts. The trivial path **never** silently
|
|
244
|
-
swallows scope creep.
|
|
245
|
-
|
|
246
|
-
Skipped slots (`memory`, `analyze`, `plan`, `verify`) share
|
|
247
|
-
`_skipped.run` — they record `success` without work so the dispatcher
|
|
248
|
-
completeness check is satisfied. `report` renders a one-line summary
|
|
249
|
-
instead of the full delivery report.
|
|
250
|
-
|
|
251
|
-
## The `mixed` set — contract + UI + stitch
|
|
252
|
-
|
|
253
|
-
Used when a single input touches both layers. Slot mapping:
|
|
254
|
-
|
|
255
|
-
| Slot | Handler | Purpose |
|
|
256
|
-
|---|---|---|
|
|
257
|
-
| `refine`, `memory`, `analyze`, `verify`, `report` | reused from `backend` | Same handlers, by reference |
|
|
258
|
-
| `plan` | `mixed.contract` | Lock `data_model` + `api_surface` |
|
|
259
|
-
| `implement` | `mixed.ui` | Delegate to UI sub-flow |
|
|
260
|
-
| `test` | `mixed.stitch` | End-to-end smoke scenarios |
|
|
261
|
-
|
|
262
|
-
**Sentinels** that release each mixed gate:
|
|
263
|
-
|
|
264
|
-
- `state.contract.contract_confirmed = True` — UI sub-flow refuses to
|
|
265
|
-
start without it (defense-in-depth even if `outcomes["plan"] ==
|
|
266
|
-
"success"`). Required keys: `data_model`, `api_surface`
|
|
267
|
-
(`REQUIRED_CONTRACT_KEYS`).
|
|
268
|
-
- `state.ui_review.review_clean = True` — mixed `ui` step's success
|
|
269
|
-
condition. Polish-ceiling semantics live in the UI track; if the
|
|
270
|
-
user reaches mixed.ui's "ship as-is / hand off / abort" halt, the
|
|
271
|
-
UI track has already given up.
|
|
272
|
-
- `state.stitch.verdict = "success"` — stitch's success condition.
|
|
273
|
-
`blocked` / `partial` halts with three numbered options unless
|
|
274
|
-
`state.stitch.integration_confirmed = True` (explicit user override).
|
|
275
|
-
|
|
276
|
-
`stitch` emits `@agent-directive: integration-test` so an
|
|
277
|
-
agent-side handler runs the end-to-end smokes; `mixed.ui` emits
|
|
278
|
-
`@agent-directive: ui-track` to delegate the visible-surface work
|
|
279
|
-
back into the full UI directive set.
|
|
280
|
-
|
|
281
|
-
## Idempotency and replay
|
|
282
|
-
|
|
283
|
-
Every UI step is idempotent on its sentinel:
|
|
284
|
-
|
|
285
|
-
| Step | Sentinel | Effect on replay |
|
|
286
|
-
|---|---|---|
|
|
287
|
-
| audit | `audit_path` ∈ `{"high_confidence", "ambiguous", "greenfield"}` | `SUCCESS` without halt |
|
|
288
|
-
| design | `design_confirmed = True` | `SUCCESS` without halt |
|
|
289
|
-
| apply | `state.ticket["ui_apply"]` well-formed, no placeholders | `SUCCESS`, changes recorded once |
|
|
290
|
-
| review | well-formed envelope (`findings` list + `review_clean` bool) | `SUCCESS` |
|
|
291
|
-
| polish | `review_clean = True` (any round count) | `SUCCESS` |
|
|
292
|
-
| contract | `contract_confirmed = True` | `SUCCESS` |
|
|
293
|
-
| stitch | `verdict = "success"` OR `integration_confirmed = True` | `SUCCESS` |
|
|
294
|
-
|
|
295
|
-
The dispatcher walks the same eight slots on every replay; sentinels
|
|
296
|
-
are the only thing keeping a re-run from re-asking a question the
|
|
297
|
-
user already answered. Replay coverage is locked by the
|
|
298
|
-
Golden-Transcript suite under `tests/golden/baseline/GT-U*/`.
|
|
299
|
-
|
|
300
|
-
## Declared ambiguity surfaces
|
|
301
|
-
|
|
302
|
-
Each step re-exports an `AMBIGUITIES: tuple[dict[str, str], ...]`
|
|
303
|
-
constant. The
|
|
304
|
-
[`test_ambiguity_coverage.py`](../../tests/implement_ticket/test_ambiguity_coverage.py)
|
|
305
|
-
suite asserts every `BLOCKED` path has a matching declaration.
|
|
306
|
-
|
|
307
|
-
| Step | Codes |
|
|
308
|
-
|---|---|
|
|
309
|
-
| `audit` | `audit_missing`, `greenfield_undecided`, `shadcn_version_mismatch`, `audit_ambiguous` |
|
|
310
|
-
| `design` | `design_missing`, `design_placeholders`, `design_unconfirmed` |
|
|
311
|
-
| `apply` | `apply_envelope_missing`, `apply_placeholders_in_output` |
|
|
312
|
-
| `review` | `review_envelope_missing`, `review_findings_missing`, `review_clean_missing`, `review_a11y_pending`, `preview_render_failed` |
|
|
313
|
-
| `polish` | `polish_round_pending`, `polish_ceiling_reached`, `polish_a11y_blocking`, `polish_token_extraction_pending` |
|
|
314
|
-
| `contract` (mixed) | `upstream_analyze_failed`, `contract_missing`, `contract_incomplete`, `contract_unconfirmed` |
|
|
315
|
-
| `mixed.ui` | `contract_sentinel_missing`, `ui_subflow_missing`, `ui_subflow_dirty` |
|
|
316
|
-
| `stitch` | `upstream_ui_failed`, `stitch_missing`, `stitch_malformed`, `stitch_verdict_unsuccessful` |
|
|
317
|
-
|
|
318
|
-
## See also
|
|
319
|
-
|
|
320
|
-
- [`implement-ticket-flow.md`](implement-ticket-flow.md) — sibling
|
|
321
|
-
contract for the `backend` set; covers `DeliveryState`, schema v1,
|
|
322
|
-
hooks, persona policies, replay protocol.
|
|
323
|
-
- [`adr-product-ui-track.md`](adr-product-ui-track.md) — locked
|
|
324
|
-
decisions for the UI track (R3) and the visual-review-loop
|
|
325
|
-
amendment (R4: a11y gate, preview envelope, polish-termination).
|
|
326
|
-
- [`existing-ui-audit` SKILL](../../.agent-src.uncondensed/skills/existing-ui-audit/SKILL.md)
|
|
327
|
-
— producer of `state.ui_audit`.
|
|
328
|
-
- [`ui-audit-gate` rule](../../.agent-src.uncondensed/rules/ui-audit-gate.md)
|
|
329
|
-
— the always-on rule that mirrors the audit gate at the agent layer.
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
stability: beta
|
|
3
|
-
keep-beta-until: 2026-08-13
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# Universal Skills — Allowlist Contract
|
|
8
|
-
|
|
9
|
-
> **Status:** beta · **Owner:** step-12 Phase 3 · **Stability:** additive only (no removals without a migration note in `STABILITY.md`)
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
When `agent-config init --interactive` writes a `.agent-config.local.json` with a `user_type` (e.g., `creator`, `founder`, `consultant`), the host agent filters its loaded skill set to that user-type's recommended skills + this allowlist. **Skills on this allowlist are loaded for every user-type regardless of profile.**
|
|
14
|
-
|
|
15
|
-
The allowlist solves the over-siloing risk identified by the AI Council 2026-05-15 review: a `consultant` user still needs `decision-record` and `risk-officer`; a `creator` still needs `refine-prompt` and `verify-completion-evidence`. These are not domain skills — they are agent-OS primitives.
|
|
16
|
-
|
|
17
|
-
## The 15
|
|
18
|
-
|
|
19
|
-
| Skill | Why universal |
|
|
20
|
-
|---|---|
|
|
21
|
-
| [`refine-prompt`](../../dist/agent-src/skills/refine-prompt/SKILL.md) | Every free-form request needs AC + assumption + confidence band before the engine runs. |
|
|
22
|
-
| [`refine-ticket`](../../dist/agent-src/skills/refine-ticket/SKILL.md) | Every ticket (Jira / Linear / GH issue) needs scoped AC before plan. |
|
|
23
|
-
| [`estimate-ticket`](../../dist/agent-src/skills/estimate-ticket/SKILL.md) | Sizing + split + risk — applies to any work item, technical or not. |
|
|
24
|
-
| [`verify-completion-evidence`](../../dist/agent-src/skills/verify-completion-evidence/SKILL.md) | Iron-Law gate: fresh evidence before any "done" claim. Survives every mode. |
|
|
25
|
-
| [`threat-modeling`](../../dist/agent-src/skills/threat-modeling/SKILL.md) | Pre-implementation abuse-case enumeration — same lens applies to a marketing form and a payment endpoint. |
|
|
26
|
-
| [`systematic-debugging`](../../dist/agent-src/skills/systematic-debugging/SKILL.md) | Reproduce → isolate → hypothesize → verify — works on broken pipelines, broken docs, broken funnels. |
|
|
27
|
-
| [`doc-coauthoring`](../../dist/agent-src/skills/doc-coauthoring/SKILL.md) | 3-stage write loop (context → section → reader-test) for any long-form doc. |
|
|
28
|
-
| [`deep-reading-analyst`](../../dist/agent-src/skills/deep-reading-analyst/SKILL.md) | Article / long-form analysis via SCQA + mental models — used by every role that reads. |
|
|
29
|
-
| [`decision-record`](../../dist/agent-src/skills/decision-record/SKILL.md) | Trade-off framing before any commit. ADR-shape works for tech, hiring, and pricing. |
|
|
30
|
-
| [`adr-create`](../../dist/agent-src/skills/adr-create/SKILL.md) | Naming + numbering + index regen — the file mechanics of `decision-record`. |
|
|
31
|
-
| [`risk-officer`](../../dist/agent-src/skills/risk-officer/SKILL.md) | Blast-radius framing + residual-risk verdict before any commit. |
|
|
32
|
-
| [`adversarial-review`](../../dist/agent-src/skills/adversarial-review/SKILL.md) | Devil's advocate stress-test — opt-in but always available. |
|
|
33
|
-
| [`customer-research`](../../dist/agent-src/skills/customer-research/SKILL.md) | Discovery-slice shaping (JTBD, switch-event) — used by founder, GTM, consultant, creator. |
|
|
34
|
-
| [`stakeholder-tradeoff`](../../dist/agent-src/skills/stakeholder-tradeoff/SKILL.md) | Per-lens framing when stakeholders disagree — applies in every org. |
|
|
35
|
-
| [`md-language-check`](../../dist/agent-src/skills/md-language-check/SKILL.md) | Hard gate: `.md` files stay English; the agent translates at runtime. |
|
|
36
|
-
|
|
37
|
-
## Inclusion criteria
|
|
38
|
-
|
|
39
|
-
A skill earns the universal label when **all three** hold:
|
|
40
|
-
|
|
41
|
-
1. **Cross-role payback.** ≥ 4 of the 6 seeded user-types (creator / founder / consultant / GTM / finance-ops / developer) reach for it in week-one workflows. The non-dev eval corpus ([`tests/eval/corpus-non-dev.yaml`](../../tests/eval/corpus-non-dev.yaml)) is the empirical test.
|
|
42
|
-
2. **No stack assumption.** The skill body does not rely on a specific language, framework, or repo shape. `laravel`, `nextjs-patterns`, `pest-testing` are domain skills, not universal.
|
|
43
|
-
3. **Agent-OS primitive.** The skill encodes a meta-pattern of agent behavior (refine, verify, decide, debug, document, threat-model) rather than a domain deliverable (write a launch email, draft an ADR for the auth module).
|
|
44
|
-
|
|
45
|
-
## Exclusion criteria
|
|
46
|
-
|
|
47
|
-
- **Domain anchor.** `voice-and-tone-design` (creator), `runway-cognition` (founder), `quality-tools` (developer), `pipeline-strategy` (GTM) — strong-fit for one user-type, weak for the other five. These tag via the `recommended_for_user_types:` frontmatter field defined in [`skill.schema.json`](../../src/scripts/schemas/skill.schema.json).
|
|
48
|
-
- **Tool-specific.** `laravel-horizon`, `nextjs-patterns`, `mcp-builder`, `terraform` — load only when the matching stack flag is set.
|
|
49
|
-
- **Council / role review.** `judge-bug-hunter`, `judge-security-auditor`, `architecture-review-lens` — load via subagent orchestration, not via universal allowlist.
|
|
50
|
-
|
|
51
|
-
## How loading works (forward-compatible)
|
|
52
|
-
|
|
53
|
-
```json
|
|
54
|
-
// .agent-config.local.json — written by `agent-config init --interactive`
|
|
55
|
-
{
|
|
56
|
-
"user_type": "consultant",
|
|
57
|
-
"stack": "none",
|
|
58
|
-
"verbosity": "normal",
|
|
59
|
-
"enabled_skill_prefixes": ["consulting/*", "writing/*"],
|
|
60
|
-
"default_persona": "discovery-lead"
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
The host agent's skill loader is expected to:
|
|
65
|
-
|
|
66
|
-
1. Resolve `enabled_skill_prefixes` against the per-user-type recommendation list (Phase 5 `recommended_for_user_types:` tags).
|
|
67
|
-
2. Union with this universal allowlist (always, no opt-out).
|
|
68
|
-
3. Surface a `loaded_skills_count` in the agent's debug / status output so the operator can verify filtering ran.
|
|
69
|
-
|
|
70
|
-
**Runtime filter status:** the prefix-filter pass is gated on the user-types axis shipping the `user-types/` directory and `--user-type` flag. Until then, every skill loads (current v2.x behavior); this contract is the forward declaration of the eventual filter, not its implementation.
|
|
71
|
-
|
|
72
|
-
## Change procedure
|
|
73
|
-
|
|
74
|
-
Adding a skill to this allowlist:
|
|
75
|
-
|
|
76
|
-
1. Open a PR that edits this file + the relevant skill's `recommended_for_user_types:` (omitted = universal).
|
|
77
|
-
2. Cite ≥ 4 user-type prompts from `tests/eval/corpus-non-dev.yaml` that select the skill.
|
|
78
|
-
3. Require approval from one Tier-1 reviewer (architecture-review-lens or skill-writing).
|
|
79
|
-
4. Document the inclusion in `agents/evidence/eval-findings/` with the supporting eval prompts.
|
|
80
|
-
|
|
81
|
-
Removing a skill is breaking. It must be announced in `STABILITY.md` with a deprecation window ≥ one minor release.
|
|
82
|
-
|
|
83
|
-
## Versioning
|
|
84
|
-
|
|
85
|
-
- This contract is **beta**. Once non-dev selection-accuracy ≥ 0.60 sustains across two consecutive `task bench --corpus non-dev` runs, status promotes to **stable** and entries become semver-protected.
|
|
86
|
-
|
|
87
|
-
## Related
|
|
88
|
-
|
|
89
|
-
- [`STABILITY.md`](STABILITY.md) — public-identifier stability surface.
|
|
90
|
-
- [`docs/getting-started-by-role.md`](../getting-started-by-role.md) — consumer-facing role docs that reference these skills.
|
|
91
|
-
- [`tests/eval/corpus-non-dev.yaml`](../../tests/eval/corpus-non-dev.yaml) — empirical test corpus.
|