@event4u/agent-config 3.3.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/README.md +2 -2
- package/.agent-src/commands/agent-handoff.md +31 -2
- package/.agent-src/commands/agent-status.md +5 -5
- package/.agent-src/commands/agents/audit.md +8 -8
- package/.agent-src/commands/agents/init.md +25 -1
- package/.agent-src/commands/agents/optimize.md +3 -3
- package/.agent-src/commands/agents/user.md +1 -1
- package/.agent-src/commands/agents.md +1 -1
- package/.agent-src/commands/analyze-reference-repo.md +1 -1
- package/.agent-src/commands/check-current-md.md +8 -8
- package/.agent-src/commands/{compress.md → condense.md} +55 -55
- package/.agent-src/commands/context/create.md +7 -4
- package/.agent-src/commands/context/refactor.md +3 -1
- package/.agent-src/commands/feature/dev.md +1 -1
- package/.agent-src/commands/feature/explore.md +1 -1
- package/.agent-src/commands/feature/plan.md +10 -8
- package/.agent-src/commands/feature/refactor.md +3 -1
- package/.agent-src/commands/feature/roadmap.md +7 -4
- package/.agent-src/commands/fix/portability.md +3 -3
- package/.agent-src/commands/fix/refs.md +4 -4
- package/.agent-src/commands/ghostwriter.md +2 -2
- package/.agent-src/commands/memory/learn-low-impact.md +3 -3
- package/.agent-src/commands/module/explore.md +34 -8
- package/.agent-src/commands/optimize/agents-dir.md +9 -7
- package/.agent-src/commands/optimize/augmentignore.md +2 -2
- package/.agent-src/commands/optimize/skills.md +9 -9
- package/.agent-src/commands/post-as.md +1 -1
- package/.agent-src/commands/project-analyze.md +2 -2
- package/.agent-src/commands/project-health.md +3 -2
- package/.agent-src/commands/research/deep.md +1 -1
- package/.agent-src/commands/research/report.md +1 -1
- package/.agent-src/commands/research.md +1 -1
- package/.agent-src/commands/roadmap/ai-council.md +1 -1
- package/.agent-src/commands/roadmap/create.md +9 -4
- package/.agent-src/commands/rule-compliance-audit.md +1 -1
- package/.agent-src/commands/upstream-contribute.md +14 -14
- package/.agent-src/commands/video/from-script.md +1 -1
- package/.agent-src/commands/video/scene.md +1 -1
- package/.agent-src/commands/video/stitch.md +1 -1
- package/.agent-src/commands/video/storyboard.md +1 -1
- package/.agent-src/commands/video.md +1 -1
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +15 -0
- package/.agent-src/contexts/authority/kernel-rule-edits.md +3 -3
- package/.agent-src/contexts/authority/scope-mechanics.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +28 -28
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +4 -4
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/.agent-src/contexts/contracts/artifact-engagement-flow.md +6 -6
- package/.agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
- package/.agent-src/contexts/contracts/emergency-triage-block.md +4 -4
- package/.agent-src/contexts/contracts/frugality-charter.md +3 -3
- package/.agent-src/contexts/documentation-hierarchy.md +14 -7
- package/.agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/.agent-src/contexts/execution/cheap-question-mechanics.md +39 -2
- package/.agent-src/contexts/execution/roadmap-process-loop.md +28 -5
- package/.agent-src/contexts/override-system.md +5 -5
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/.agent-src/personas/advisors/first-principles.md +1 -1
- package/.agent-src/personas/hollywood-director.md +1 -1
- package/.agent-src/rules/architecture.md +5 -1
- package/.agent-src/rules/augment-edit-discipline.md +5 -5
- package/.agent-src/rules/augment-source-of-truth.md +15 -15
- package/.agent-src/rules/commit-conventions.md +1 -1
- package/.agent-src/rules/commit-policy.md +10 -0
- package/.agent-src/rules/domain-adoption-policy.md +3 -3
- package/.agent-src/rules/fast-path-marker-visibility.md +3 -3
- package/.agent-src/rules/finance-safety-floor.md +1 -1
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +8 -8
- package/.agent-src/rules/git-history-discipline.md +1 -1
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +2 -2
- package/.agent-src/rules/media-governance-routing.md +5 -5
- package/.agent-src/rules/no-attribution-footers.md +1 -0
- package/.agent-src/rules/no-cheap-questions.md +3 -0
- package/.agent-src/rules/no-decorative-emojis-in-git-surfaces.md +111 -0
- package/.agent-src/rules/no-pr-progress-comments.md +118 -0
- package/.agent-src/rules/no-roadmap-references.md +3 -3
- package/.agent-src/rules/non-destructive-by-default.md +1 -1
- package/.agent-src/rules/persona-governance.md +3 -3
- package/.agent-src/rules/preservation-guard.md +15 -15
- package/.agent-src/rules/roadmap-ci-steps-policy.md +7 -3
- package/.agent-src/rules/rule-type-governance.md +1 -1
- package/.agent-src/rules/skill-quality.md +1 -1
- package/.agent-src/rules/{caveman-speak.md → telegraph-speak.md} +15 -15
- package/.agent-src/rules/token-optimizer-maintenance.md +6 -6
- package/.agent-src/skills/agent-docs-writing/SKILL.md +17 -11
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
- package/.agent-src/skills/check-refs/SKILL.md +2 -2
- package/.agent-src/skills/code-refactoring/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +19 -19
- package/.agent-src/skills/comp-banding/SKILL.md +1 -1
- package/.agent-src/skills/condense-memory/SKILL.md +131 -0
- package/.agent-src/skills/context-authoring/SKILL.md +2 -2
- package/.agent-src/skills/context-document/SKILL.md +5 -3
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +3 -3
- package/.agent-src/skills/description-assist/SKILL.md +2 -2
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/guideline-writing/SKILL.md +5 -5
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/lint-skills/SKILL.md +3 -3
- package/.agent-src/skills/md-language-check/SKILL.md +2 -2
- package/.agent-src/skills/module-detect-on-the-fly/SKILL.md +138 -0
- package/.agent-src/skills/module-management/SKILL.md +166 -94
- package/.agent-src/skills/override-management/SKILL.md +1 -1
- package/.agent-src/skills/persona-writing/SKILL.md +5 -5
- package/.agent-src/skills/positioning-strategy/SKILL.md +1 -1
- package/.agent-src/skills/project-docs/SKILL.md +6 -4
- package/.agent-src/skills/readme-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/roadmap-management/SKILL.md +13 -1
- package/.agent-src/skills/roadmap-writing/SKILL.md +4 -2
- package/.agent-src/skills/rule-refactor/SKILL.md +5 -5
- package/.agent-src/skills/rule-writing/SKILL.md +18 -18
- package/.agent-src/skills/script-writing/SKILL.md +1 -1
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +6 -6
- package/.agent-src/skills/skill-management/SKILL.md +21 -21
- package/.agent-src/skills/skill-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/skill-writing/SKILL.md +8 -8
- package/.agent-src/skills/skill-writing/evals/triggers.json +1 -1
- package/.agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -1
- package/.agent-src/skills/upstream-contribute/SKILL.md +17 -17
- package/.agent-src/templates/AGENTS.md +1 -0
- package/.agent-src/templates/agent-settings.md +24 -13
- package/.agent-src/templates/agents/agent-project-settings.example.yml +61 -2
- package/.agent-src/templates/command.md +5 -5
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +8 -8
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/hooks/pre-commit-frontmatter +2 -2
- package/.agent-src/templates/hooks/pre-commit-roadmap-progress +3 -3
- package/.agent-src/templates/persona.md +2 -2
- package/.agent-src/templates/roadmaps.md +1 -1
- package/.agent-src/templates/rule.md +13 -13
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/memory_status.py +2 -2
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +195 -1
- package/.agent-src/templates/scripts/work_engine/orchestration.py +1 -1
- package/.agent-src/templates/skill-archive-note.md +5 -5
- package/.agent-src/templates/skill.md +1 -1
- package/.claude-plugin/marketplace.json +4 -4
- package/AGENTS.md +16 -17
- package/CHANGELOG.md +216 -3
- package/CONTRIBUTING.md +31 -12
- package/README.md +21 -12
- package/config/agent-settings.template.yml +22 -2
- package/config/discovery/unassigned-artefacts.yml +24 -24
- package/config/profiles/full.ini +1 -1
- package/dist/cli/agent-config.js +52 -3
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/commands/uiServe.js +9 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +649 -606
- 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 +439 -437
- package/dist/discovery/trust-report.md +5 -5
- package/dist/discovery/workspaces.json +450 -448
- package/dist/install/atomic.js +92 -0
- package/dist/install/atomic.js.map +1 -0
- package/dist/install/conflict.js +196 -0
- package/dist/install/conflict.js.map +1 -0
- package/dist/install/detect.js +218 -0
- package/dist/install/detect.js.map +1 -0
- package/dist/install/paths.js +82 -0
- package/dist/install/paths.js.map +1 -0
- package/dist/install/plan.js +157 -0
- package/dist/install/plan.js.map +1 -0
- package/dist/install/txlog.js +140 -0
- package/dist/install/txlog.js.map +1 -0
- package/dist/install/types.js +19 -0
- package/dist/install/types.js.map +1 -0
- package/dist/install/wizard-plan.js +184 -0
- package/dist/install/wizard-plan.js.map +1 -0
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/router.json +67 -19
- package/dist/server/app.js +6 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/install.js +358 -0
- package/dist/server/routes/install.js.map +1 -0
- package/dist/server/routes/wizard.js +468 -32
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/routes/workspace.js +396 -0
- package/dist/server/routes/workspace.js.map +1 -0
- package/dist/server/schemas/settings.js +5 -3
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BDAhhpDV.js +40 -0
- package/dist/ui/assets/index-BDAhhpDV.js.map +1 -0
- package/dist/ui/assets/index-BXZILUxe.css +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/router/0001-three-tier-routing.md +4 -4
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +4 -4
- package/docs/adrs/{caveman → telegraph}/0001-default-off-until-bench.md +9 -9
- package/docs/adrs/telegraph/README.md +9 -0
- package/docs/architecture/augment-projection.md +4 -4
- package/docs/architecture/claude-bundle.md +1 -1
- package/docs/architecture/current-onboard-baseline.md +3 -3
- package/docs/architecture/multi-tool-projection.md +10 -10
- package/docs/architecture/source-projection.md +27 -27
- package/docs/architecture.md +19 -15
- package/docs/archive/CHANGELOG-pre-2.11.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.15.0.md +3 -3
- package/docs/archive/CHANGELOG-pre-2.16.0.md +1 -1
- package/docs/archive/CHANGELOG-pre-2.2.0.md +70 -70
- package/docs/archive/CHANGELOG-pre-2.20.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.25.0.md +15 -15
- package/docs/archive/CHANGELOG-pre-3.0.0.md +4 -4
- package/docs/archive/CHANGELOG-pre-3.1.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-3.2.0.md +3 -3
- package/docs/benchmark.md +65 -0
- package/docs/benchmarks.md +16 -16
- package/docs/catalog.md +17 -15
- package/docs/contracts/CHANGELOG-conventions.md +1 -1
- package/docs/contracts/STABILITY.md +2 -2
- package/docs/contracts/adoption-signal-floor.md +110 -0
- package/docs/contracts/adr-chat-history-split.md +4 -4
- package/docs/contracts/adr-command-suggestion.md +4 -4
- package/docs/contracts/adr-gtm-context-spine.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +4 -4
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-layout.md +2 -2
- package/docs/contracts/adr-product-ui-track.md +10 -10
- package/docs/contracts/adr-user-types-axis.md +3 -3
- package/docs/contracts/adr-wing4-context-spine.md +1 -1
- package/docs/contracts/agent-memory-contract.md +3 -3
- package/docs/contracts/agents-md-tech-stack.md +2 -2
- package/docs/contracts/ai-council-config.md +2 -2
- package/docs/contracts/at-rest-encryption.md +4 -0
- package/docs/contracts/audit-log-v1.md +1 -1
- package/docs/contracts/benchmark-ab-contract.md +101 -0
- package/docs/contracts/benchmark-corpus-spec.md +1 -1
- package/docs/contracts/branch-protection-policy.md +98 -0
- package/docs/contracts/ci-cost-budget.md +106 -0
- package/docs/contracts/ci-green-floor.md +141 -0
- package/docs/contracts/command-clusters.md +6 -6
- package/docs/contracts/command-surface-tiers.md +2 -2
- package/docs/contracts/command-taxonomy.md +2 -2
- package/docs/contracts/{compression-default-kill-criterion.md → condensation-default-kill-criterion.md} +29 -29
- package/docs/contracts/config-presets.md +1 -1
- package/docs/contracts/context-paths.md +3 -3
- package/docs/contracts/context-spine.md +1 -1
- package/docs/contracts/cost-summary-schema.md +12 -12
- package/docs/contracts/cross-wing-handoff.md +4 -4
- package/docs/contracts/daily-workspace.md +4 -0
- package/docs/contracts/decision-trace-v1.md +2 -2
- package/docs/contracts/discovery-manifest.md +4 -4
- package/docs/contracts/explain-modes.md +4 -0
- package/docs/contracts/file-ownership-matrix.json +3493 -3318
- package/docs/contracts/file-ownership-matrix.md +3 -3
- package/docs/contracts/frontmatter-contract.md +4 -4
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/gui-wizard.md +110 -97
- package/docs/contracts/harness-expectations.md +123 -0
- package/docs/contracts/host-agent-protocol.md +4 -0
- package/docs/contracts/implement-ticket-flow.md +9 -9
- package/docs/contracts/install-scopes.md +77 -0
- package/docs/contracts/iron-law-overrides.txt +1 -1
- package/docs/contracts/kernel-membership.md +26 -26
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- package/docs/contracts/linter-structural-model.md +2 -2
- package/docs/contracts/load-context-budget-model.md +4 -4
- package/docs/contracts/load-context-schema.md +13 -13
- package/docs/contracts/local-analytics.md +4 -0
- package/docs/contracts/local-knowledge-ingestion.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-phase-1-scope.md +3 -3
- package/docs/contracts/measurement-baseline.md +5 -5
- package/docs/contracts/mental-models.md +30 -30
- package/docs/contracts/multi-tool-projection-fidelity.md +4 -4
- package/docs/contracts/namespace.md +4 -4
- package/docs/contracts/orchestration-dsl-v1.md +7 -7
- package/docs/contracts/package-self-orientation.md +12 -12
- package/docs/contracts/persona-schema.md +6 -6
- package/docs/contracts/pilot/language-and-tone.md +1 -1
- package/docs/contracts/plain-language-surface.md +117 -0
- package/docs/contracts/profile-system.md +3 -3
- package/docs/contracts/release-pr-gating.md +103 -0
- package/docs/contracts/role-experience.md +3 -3
- package/docs/contracts/rule-classification.md +13 -13
- package/docs/contracts/rule-interactions.md +4 -4
- package/docs/contracts/rule-interactions.yml +30 -30
- package/docs/contracts/rule-priority-hierarchy.md +13 -13
- package/docs/contracts/rule-router.md +2 -2
- package/docs/contracts/safety-model.md +1 -1
- package/docs/contracts/skill-distribution-channels.md +61 -0
- package/docs/contracts/skill-domains.md +2 -2
- package/docs/contracts/smoke-contracts.md +5 -5
- package/docs/contracts/telegraph-telemetry.md +83 -0
- package/docs/contracts/trust-and-safety.md +5 -5
- package/docs/contracts/ui-stack-extension.md +7 -7
- package/docs/contracts/ui-track-flow.md +9 -9
- package/docs/contracts/user-type-schema.md +4 -4
- package/docs/contracts/workflow-packs.md +4 -4
- package/docs/contracts/workspace-documents.md +4 -0
- package/docs/customization.md +28 -8
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +6 -6
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -11
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +2 -2
- package/docs/decisions/ADR-004-rule-governance-pruning.md +4 -4
- package/docs/decisions/ADR-005-subagent-worktrees.md +7 -7
- package/docs/decisions/ADR-011-domain-pack-readiness.md +6 -6
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +3 -3
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +3 -3
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +10 -10
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +6 -6
- package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +2 -2
- package/docs/decisions/ADR-021-deployment-shape.md +3 -3
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +1 -1
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +2 -2
- package/docs/decisions/ADR-028-root-layout.md +7 -7
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +2 -2
- package/docs/decisions/ADR-rule-kernel-and-router.md +5 -5
- package/docs/deploy/connector-setup.md +2 -2
- package/docs/deploy/policy-cookbook.md +2 -2
- package/docs/deploy/team-deployment-posture.md +20 -0
- package/docs/development.md +17 -17
- package/docs/distribution/registries.md +32 -0
- package/docs/distribution/registry-submissions.md +85 -0
- package/docs/distribution/telemetry-schema.md +1 -1
- package/docs/getting-started-by-role.md +45 -3
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
- package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
- package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
- package/docs/guidelines/agent-infra/direct-answers-demos.md +1 -1
- package/docs/guidelines/agent-infra/first-principles.md +2 -2
- package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
- package/docs/guidelines/agent-infra/layered-settings.md +56 -2
- package/docs/guidelines/agent-infra/mental-models.md +3 -3
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +2 -2
- package/docs/guidelines/agent-infra/rule-type-governance.md +1 -1
- package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +2 -2
- package/docs/guidelines/agent-infra/six-hats.md +3 -3
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
- package/docs/guidelines/augment-portability-patterns.md +4 -4
- package/docs/guidelines/cross-role-handoff.md +2 -2
- package/docs/guidelines/php/php-coding-patterns.md +1 -1
- package/docs/guidelines/prompt-templates.md +6 -6
- package/docs/maintainers/dev-mode.md +1 -1
- package/docs/mcp.md +1 -1
- package/docs/parity/bench.json +3 -3
- package/docs/parity/ruflo.md +2 -2
- package/docs/profiles.md +11 -11
- package/docs/quality.md +11 -11
- package/docs/safety.md +3 -3
- package/docs/setup/mcp-client-config.md +1 -1
- package/docs/setup/mcp-r2-bootstrap.md +1 -1
- package/docs/setup/mcp-server-docker.md +3 -3
- package/docs/setup/per-ide/windsurf.md +1 -1
- package/docs/skills-catalog.md +8 -7
- package/docs/troubleshooting.md +1 -1
- package/docs/walkthroughs/daily-workspace-a11y.md +87 -0
- package/llms.txt +7 -6
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_backfill_skill_domains.py +3 -3
- package/scripts/_archive/_bootstrap_tier_frontmatter.py +3 -3
- package/scripts/_archive/_p43_bodies.py +10 -10
- package/scripts/_archive/{_p43_compress.py → _p43_condense.py} +5 -5
- package/scripts/_archive/_p4_migrate.py +7 -7
- package/scripts/_archive/_phase2_shim_helper.py +1 -1
- package/scripts/_archive/_pilot_council_question.py +5 -5
- package/scripts/_cli/explain_last/inputs.py +1 -1
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/_lib/agent_settings.py +195 -1
- package/scripts/_lib/agent_src.py +19 -19
- package/scripts/_lib/bench_ab_cache.py +162 -0
- package/scripts/_lib/bench_ab_scoring.py +209 -0
- package/scripts/_lib/{bench_caveman.py → bench_telegraph.py} +21 -21
- package/scripts/_lib/{bench_caveman_report.py → bench_telegraph_report.py} +21 -21
- package/scripts/_lib/claude_desktop_bundler.py +5 -5
- package/scripts/_lib/module_detection.py +223 -0
- package/scripts/_lib/scope_guard.sh +162 -0
- package/scripts/_phase4_bucket.py +3 -3
- package/scripts/_pilot_measure.py +4 -4
- package/scripts/_tmp_scan_framework_leakage.py +1 -1
- package/scripts/adoption_report.py +195 -0
- package/scripts/adoption_snapshot.py +219 -0
- package/scripts/adoption_status.py +166 -0
- package/scripts/ai-video/lib/parse-blueprint.sh +1 -1
- package/scripts/ai_council/advisors.py +5 -5
- package/scripts/ai_council/compile_corpus.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +6 -6
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +6 -6
- package/scripts/annotate_discovery.py +13 -13
- package/scripts/apply_modules_config.py +290 -0
- package/scripts/audit_adr_coverage.py +2 -2
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +3 -3
- package/scripts/audit_command_surface.py +9 -9
- package/scripts/audit_likelihood.py +2 -2
- package/scripts/audit_user_type_axis.py +2 -2
- package/scripts/bench_ab_cache_dispatch.py +68 -0
- package/scripts/bench_ab_clone.py +170 -0
- package/scripts/bench_ab_diff.py +227 -0
- package/scripts/bench_ab_integrity.py +143 -0
- package/scripts/bench_ab_run.py +235 -0
- package/scripts/bench_ab_task_runner.py +369 -0
- package/scripts/bench_ab_tracka_run.py +202 -0
- package/scripts/{bench_compress_memory.py → bench_condense_memory.py} +16 -16
- package/scripts/bench_run.py +33 -33
- package/scripts/bench_runner.py +2 -2
- package/scripts/bootstrap.sh +99 -0
- package/scripts/build_cloud_bundle.py +6 -6
- package/scripts/build_discovery_manifest.py +7 -7
- package/scripts/build_linear_digest.py +3 -3
- package/scripts/build_rule_trigger_matrix.py +8 -8
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +11 -5
- package/scripts/check_augment_description_cap.py +3 -3
- package/scripts/check_cluster_patterns.py +2 -2
- package/scripts/check_command_count_messaging.py +3 -3
- package/scripts/{check_compression.py → check_condensation.py} +34 -34
- package/scripts/{check_compressed_paths.py → check_condensed_paths.py} +8 -8
- package/scripts/check_context_paths.py +7 -7
- package/scripts/check_council_layout.py +2 -2
- package/scripts/check_council_references.py +9 -9
- package/scripts/check_iron_law_prominence.py +2 -2
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_module_management_neutral.py +149 -0
- package/scripts/check_no_roadmap_refs.py +9 -9
- package/scripts/check_portability.py +3 -3
- package/scripts/check_public_catalog_links.py +4 -4
- package/scripts/check_references.py +7 -6
- package/scripts/check_release_pr_shape.py +112 -0
- package/scripts/check_reply_consistency.py +3 -3
- package/scripts/check_safety_floor_untouched.py +1 -1
- package/scripts/check_template_pin_drift.py +5 -5
- package/scripts/check_token_optimizer_freshness.py +3 -3
- package/scripts/ci_status.py +301 -0
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/cleanup_other_scope.sh +146 -0
- package/scripts/compile_router.py +10 -10
- package/scripts/{compress.py → condense.py} +64 -64
- package/scripts/condense.sh +18 -0
- package/scripts/{compress_memory.py → condense_memory.py} +33 -33
- package/scripts/config/presets.py +2 -2
- package/scripts/config/profiles.py +1 -1
- package/scripts/cost_by_conversation.py +3 -3
- package/scripts/cost_summary.py +7 -7
- package/scripts/count_token_optimizer_usage.sh +1 -1
- package/scripts/gen_discovery_baseline.py +5 -5
- package/scripts/generate_index.py +6 -6
- package/scripts/generate_ownership_matrix.py +10 -10
- package/scripts/generate_pack_manifests.py +1 -1
- package/scripts/ghostwriter_fixture_allowlist.txt +1 -1
- package/scripts/install +3 -3
- package/scripts/install-hooks.sh +6 -6
- package/scripts/install.py +273 -45
- package/scripts/install.sh +187 -1
- package/scripts/inventory_frontmatter.py +2 -2
- package/scripts/iron_law_sha.py +3 -3
- package/scripts/lint_agents_layout.py +14 -7
- package/scripts/lint_agents_md.py +4 -4
- package/scripts/lint_archived_skills.py +3 -3
- package/scripts/lint_artefact_frontmatter.py +2 -2
- package/scripts/lint_bench_ab.py +172 -0
- package/scripts/lint_bench_corpus.py +1 -1
- package/scripts/lint_command_tiers.py +5 -5
- package/scripts/lint_context_spine_usage.py +1 -1
- package/scripts/lint_framework_leakage.py +7 -7
- package/scripts/lint_framework_leakage_allowlist.json +152 -84
- package/scripts/lint_ghostwriter_source.py +3 -3
- package/scripts/lint_handoffs.py +1 -1
- package/scripts/lint_load_context.py +11 -11
- package/scripts/lint_media_policy_linkage.py +5 -5
- package/scripts/lint_namespace.py +1 -1
- package/scripts/lint_no_new_atomic_commands.py +2 -2
- package/scripts/lint_orchestration_dsl.py +1 -1
- package/scripts/lint_pack_boundaries.py +2 -2
- package/scripts/lint_persona_governance.py +4 -4
- package/scripts/lint_role_experiences.py +237 -0
- package/scripts/lint_rule_interactions.py +2 -2
- package/scripts/lint_rule_tiers.py +1 -1
- package/scripts/lint_trust_coherence.py +2 -2
- package/scripts/mcp_registry_submit.sh +187 -0
- package/scripts/mcp_server/tools.py +1 -1
- package/scripts/measure_frugality_savings.py +10 -10
- package/scripts/measure_patterns.py +1 -1
- package/scripts/measure_projection_bytes.py +5 -5
- package/scripts/measure_rule_budget.py +3 -3
- package/scripts/measure_skill_reduction.py +1 -1
- package/scripts/memory_lookup.py +1 -1
- package/scripts/memory_status.py +2 -2
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/mine_session.py +1 -1
- package/scripts/move_artefact.py +3 -3
- package/scripts/new_skill.py +2 -2
- package/scripts/pack_mcp_content.py +9 -9
- package/scripts/plan_physical_move.py +6 -6
- package/scripts/print_required_checks.py +196 -0
- package/scripts/probe_skill_registration.py +413 -0
- package/scripts/propose_modules_config.py +145 -0
- package/scripts/prototype_lint_contradictions.py +1 -1
- package/scripts/recruit_preflight.sh +152 -0
- package/scripts/refine_ticket_detect.py +3 -3
- package/scripts/release.py +20 -0
- package/scripts/render_benchmark_md.py +308 -0
- package/scripts/roadmap_progress_hook.py +1 -1
- package/scripts/run_skill_evals.py +2 -2
- package/scripts/runtime_registry.py +4 -4
- package/scripts/schemas/command.schema.json +4 -4
- package/scripts/schemas/rule.schema.json +5 -5
- package/scripts/schemas/skill.schema.json +3 -3
- package/scripts/schemas/user-type.schema.json +1 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +2 -2
- package/scripts/skill_linter.py +81 -81
- package/scripts/skill_overlap.py +5 -5
- package/scripts/skill_tools/audit_persona_coverage.py +2 -2
- package/scripts/skill_tools/audit_user_type_coverage.py +2 -2
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_tools/score_skill_relevance.py +1 -1
- package/scripts/skill_tools/suggest_skill_for_task.py +1 -1
- package/scripts/skill_trigger_eval.py +3 -3
- package/scripts/smoke/kernel.sh +7 -1
- package/scripts/smoke/router.sh +5 -5
- package/scripts/smoke/skills.sh +1 -1
- package/scripts/smoke_quickstart.py +1 -1
- package/scripts/snapshot_agent_outputs.py +3 -3
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/{caveman_stats.py → telegraph_stats.py} +18 -18
- package/scripts/update_counts.py +1 -1
- package/scripts/validate_decision_engine.py +1 -1
- package/scripts/validate_frontmatter.py +1 -1
- package/scripts/validate_safe_paths.py +3 -3
- package/scripts/{validate_caveman_carveouts.py → validate_telegraph_carveouts.py} +7 -7
- package/scripts/verify_roadmap_closure.py +6 -6
- package/templates/consumer-settings/ONBOARDING.md +41 -0
- package/.agent-src/commands/install-via-agent.md +0 -129
- package/.agent-src/skills/compress-memory/SKILL.md +0 -131
- package/dist/ui/assets/index-D-DY1ywI.js +0 -35
- package/dist/ui/assets/index-D-DY1ywI.js.map +0 -1
- package/dist/ui/assets/index-Dqfhmg-d.css +0 -1
- package/docs/adrs/caveman/README.md +0 -9
- package/docs/contracts/caveman-telemetry.md +0 -83
- package/scripts/compress.sh +0 -18
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Pre-commit hook: artefact frontmatter lint (event4u/agent-config, ADR-013)
|
|
3
3
|
#
|
|
4
4
|
# Aborts the commit when any staged .md file under
|
|
5
|
-
# `.agent-src.
|
|
5
|
+
# `.agent-src.uncondensed/` violates the per-artefact frontmatter
|
|
6
6
|
# contract (workspaces / packs / lifecycle / trust / install). Exits
|
|
7
7
|
# silently when no such files are staged — zero overhead on unrelated
|
|
8
8
|
# commits.
|
|
@@ -19,7 +19,7 @@ set -e
|
|
|
19
19
|
# (or the linter / vocabulary that govern it).
|
|
20
20
|
staged="$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null || true)"
|
|
21
21
|
case "$staged" in
|
|
22
|
-
*.agent-src.
|
|
22
|
+
*.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.py*)
|
|
23
23
|
: ;;
|
|
24
24
|
*)
|
|
25
25
|
exit 0 ;;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Two opt-in checks run on relevant staged paths and short-circuit
|
|
6
6
|
# otherwise:
|
|
7
7
|
# 1. agents/roadmaps-progress.md sync (against agents/roadmaps/*.md)
|
|
8
|
-
# 2. ADR-013 per-artefact frontmatter contract (.agent-src.
|
|
8
|
+
# 2. ADR-013 per-artefact frontmatter contract (.agent-src.uncondensed/*.md)
|
|
9
9
|
#
|
|
10
10
|
# To run manually:
|
|
11
11
|
# ./agent-config roadmap:progress-check
|
|
@@ -24,7 +24,7 @@ case "$staged" in
|
|
|
24
24
|
roadmap_relevant=true ;;
|
|
25
25
|
esac
|
|
26
26
|
case "$staged" in
|
|
27
|
-
*.agent-src.
|
|
27
|
+
*.agent-src.uncondensed/*.md*|*config/discovery/*.yml*|*scripts/lint_artefact_frontmatter.py*)
|
|
28
28
|
frontmatter_relevant=true ;;
|
|
29
29
|
esac
|
|
30
30
|
|
|
@@ -48,7 +48,7 @@ if $roadmap_relevant; then
|
|
|
48
48
|
rp_script="$(resolve \
|
|
49
49
|
".augment/scripts/update_roadmap_progress.py" \
|
|
50
50
|
".agent-src/scripts/update_roadmap_progress.py" \
|
|
51
|
-
".agent-src.
|
|
51
|
+
".agent-src.uncondensed/scripts/update_roadmap_progress.py" || true)"
|
|
52
52
|
|
|
53
53
|
if [ -z "$rp_script" ]; then
|
|
54
54
|
echo "⚠️ pre-commit: update_roadmap_progress.py not found — skipping roadmap check." >&2
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Persona Template
|
|
2
2
|
|
|
3
3
|
> Template for creating a new persona in
|
|
4
|
-
> `.agent-src.
|
|
4
|
+
> `.agent-src.uncondensed/personas/{persona-id}.md`. Personas declare
|
|
5
5
|
> a *voice* — focus, mindset, unique questions, output expectations.
|
|
6
6
|
> Skills cite personas in a `personas:` frontmatter key. Users invoke
|
|
7
7
|
> them via `--personas=<id>`.
|
|
8
8
|
|
|
9
9
|
## Instructions
|
|
10
10
|
|
|
11
|
-
1. Create the file: `.agent-src.
|
|
11
|
+
1. Create the file: `.agent-src.uncondensed/personas/{persona-id}.md`.
|
|
12
12
|
2. Copy the template below.
|
|
13
13
|
3. Replace all `{placeholders}` with real content.
|
|
14
14
|
4. Pass the Unique-Questions heuristic — ≥ 3 questions that no other
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Roadmap Template
|
|
2
2
|
|
|
3
|
-
Templates for roadmap files stored in `agents/roadmaps/` or `app/Modules/{Module}/agents/roadmaps
|
|
3
|
+
Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Module}/{agent_folder}/roadmaps/` (resolved via `modules.root_paths` + `modules.agent_folder` in `.agent-project-settings.yml`; Laravel example: `app/Modules/{Module}/agents/roadmaps/`).
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Rule Template
|
|
2
2
|
|
|
3
|
-
> Template for creating new rules in `.agent-src.
|
|
4
|
-
> Rules ship to `.agent-src/rules/` (
|
|
3
|
+
> Template for creating new rules in `.agent-src.uncondensed/rules/{rule-name}.md`.
|
|
4
|
+
> Rules ship to `.agent-src/rules/` (condensed) and `.augment/rules/` (projected).
|
|
5
5
|
> Schema: `scripts/schemas/rule.schema.json`.
|
|
6
6
|
|
|
7
7
|
## Instructions
|
|
8
8
|
|
|
9
9
|
1. Pick a kebab-case `{rule-name}` matching the file stem.
|
|
10
|
-
2. Copy the template below into `.agent-src.
|
|
10
|
+
2. Copy the template below into `.agent-src.uncondensed/rules/{rule-name}.md`.
|
|
11
11
|
3. Replace placeholders, drop sections that don't apply.
|
|
12
12
|
4. Run `task lint-skills` and `python3 scripts/lint_load_context.py`.
|
|
13
|
-
5.
|
|
13
|
+
5. Condense: `bash scripts/condense.sh --changed` then follow the agent flow.
|
|
14
14
|
|
|
15
15
|
## Path conventions — load-bearing
|
|
16
16
|
|
|
@@ -21,31 +21,31 @@ consumer's `.augment/`.
|
|
|
21
21
|
### `load_context:` / `load_context_eager:` — logical names
|
|
22
22
|
|
|
23
23
|
Use **logical names** rooted at the source — never the
|
|
24
|
-
`.agent-src.
|
|
25
|
-
(`scripts/
|
|
24
|
+
`.agent-src.uncondensed/` prefix. The condense-time rewriter
|
|
25
|
+
(`scripts/condense.py::_rewrite_paths`) resolves logical names to
|
|
26
26
|
deployment-correct relative paths; the schema regex
|
|
27
27
|
(`scripts/schemas/rule.schema.json`) and `scripts/lint_load_context.py`
|
|
28
28
|
both reject the legacy prefix.
|
|
29
29
|
|
|
30
30
|
| Write this (logical) | Forbidden (legacy) |
|
|
31
31
|
|---|---|
|
|
32
|
-
| `contexts/execution/verification-mechanics.md` | `.agent-src.
|
|
33
|
-
| `contexts/authority/commit-mechanics.md` | `.agent-src.
|
|
34
|
-
| `agents/settings/contexts/local.md` (project-local) | `.agent-src.
|
|
32
|
+
| `contexts/execution/verification-mechanics.md` | `.agent-src.uncondensed/contexts/execution/verification-mechanics.md` |
|
|
33
|
+
| `contexts/authority/commit-mechanics.md` | `.agent-src.uncondensed/contexts/authority/commit-mechanics.md` |
|
|
34
|
+
| `agents/settings/contexts/local.md` (project-local) | `.agent-src.uncondensed/contexts/...` for project-only material |
|
|
35
35
|
|
|
36
36
|
### `triggers[].path_prefix:` — literal match pattern, not a file path
|
|
37
37
|
|
|
38
38
|
`path_prefix:` is a **literal match pattern** the host evaluates against
|
|
39
39
|
the file the agent is editing — it is **not** a file reference and is
|
|
40
40
|
**not rewritten**. Rules that fire when the agent edits source-of-truth
|
|
41
|
-
files legitimately keep the `.agent-src.
|
|
41
|
+
files legitimately keep the `.agent-src.uncondensed/` prefix (see
|
|
42
42
|
`skill-quality`, `rule-type-governance`,
|
|
43
43
|
`augment-edit-discipline`). Rules that fire on consumer-project paths use
|
|
44
44
|
`agents/`, `lang/`, `.augment/`, etc.
|
|
45
45
|
|
|
46
46
|
| Use case | Example `path_prefix:` |
|
|
47
47
|
|---|---|
|
|
48
|
-
| Fires when editing source-of-truth artifacts | `.agent-src.
|
|
48
|
+
| Fires when editing source-of-truth artifacts | `.agent-src.uncondensed/skills/` |
|
|
49
49
|
| Fires when editing consumer project files | `agents/`, `lang/`, `app/`, `src/` |
|
|
50
50
|
| Fires when editing the projected layer | `.augment/` |
|
|
51
51
|
|
|
@@ -53,13 +53,13 @@ files legitimately keep the `.agent-src.uncompressed/` prefix (see
|
|
|
53
53
|
|
|
54
54
|
Source files keep verbatim `../../docs/guidelines/...` and
|
|
55
55
|
`../../docs/contracts/...` links so they work in any markdown viewer.
|
|
56
|
-
The rewriter rewrites them to depth-aware single-up form at
|
|
56
|
+
The rewriter rewrites them to depth-aware single-up form at condense
|
|
57
57
|
time and is idempotent. Do not pre-rewrite in source.
|
|
58
58
|
|
|
59
59
|
### Why "logical, depth-aware, idempotent"
|
|
60
60
|
|
|
61
61
|
A rule at `rules/{name}.md` resolves `contexts/{area}/{file}.md` to
|
|
62
|
-
`../contexts/{area}/{file}.md` in the
|
|
62
|
+
`../contexts/{area}/{file}.md` in the condensed output; a nested
|
|
63
63
|
file at `commands/{cluster}/{sub}.md` resolves to
|
|
64
64
|
`../../contexts/{area}/{file}.md`. Re-running the rewriter does not
|
|
65
65
|
double-prefix. The full decision history lives in the archived
|
|
@@ -439,7 +439,7 @@ def retrieve_v1(
|
|
|
439
439
|
|
|
440
440
|
Wraps :func:`retrieve` and projects the internal ``Hit`` shape into
|
|
441
441
|
the shape defined by
|
|
442
|
-
``schemas/retrieval-v1.schema.json``. Unknown types are reported as
|
|
442
|
+
``internal/schemas/retrieval-v1.schema.json``. Unknown types are reported as
|
|
443
443
|
``status: unknown_type`` for that slice only, rather than failing
|
|
444
444
|
the whole call.
|
|
445
445
|
"""
|
|
@@ -41,7 +41,7 @@ _CACHE_ENV = "AGENT_MEMORY_STATUS"
|
|
|
41
41
|
_CACHE_FILE = Path(".agent-memory") / "status.cache"
|
|
42
42
|
|
|
43
43
|
# Retrieval contract version served by the file-backed fallback.
|
|
44
|
-
# Source of truth: schemas/retrieval-v1.schema.json.
|
|
44
|
+
# Source of truth: internal/schemas/retrieval-v1.schema.json.
|
|
45
45
|
CONTRACT_VERSION = 1
|
|
46
46
|
_FILE_BACKEND_VERSION = "0.0.0-file"
|
|
47
47
|
_FILE_BACKEND_FEATURES = ("file-fallback",)
|
|
@@ -200,7 +200,7 @@ def status(refresh: bool = False) -> Result:
|
|
|
200
200
|
def health(refresh: bool = False) -> dict:
|
|
201
201
|
"""Return a v1 retrieval-contract health envelope.
|
|
202
202
|
|
|
203
|
-
Schema: ``schemas/retrieval-v1.schema.json`` (HealthResponse).
|
|
203
|
+
Schema: ``internal/schemas/retrieval-v1.schema.json`` (HealthResponse).
|
|
204
204
|
Maps the three-state :func:`status` result onto the contract's
|
|
205
205
|
``ok | degraded | error`` so consumers can read
|
|
206
206
|
``contract_version`` without caring about the file-vs-package split.
|
|
@@ -50,6 +50,7 @@ Contract — pure, read-only, tolerant:
|
|
|
50
50
|
"""
|
|
51
51
|
from __future__ import annotations
|
|
52
52
|
|
|
53
|
+
import copy
|
|
53
54
|
import logging
|
|
54
55
|
import os
|
|
55
56
|
from pathlib import Path
|
|
@@ -60,6 +61,7 @@ from . import user_global_paths
|
|
|
60
61
|
logger = logging.getLogger(__name__)
|
|
61
62
|
|
|
62
63
|
DEFAULT_PROJECT_FILE = ".agent-settings.yml"
|
|
64
|
+
DEFAULT_TEAM_FILE = ".agent-project-settings.yml"
|
|
63
65
|
USER_GLOBAL_FILENAME = "agent-settings.yml"
|
|
64
66
|
|
|
65
67
|
#: Canonical write target under the new ``~/.event4u/agent-config/``
|
|
@@ -86,11 +88,25 @@ MERGEABLE_KEYS: tuple[str, ...] = (
|
|
|
86
88
|
"cost_profile",
|
|
87
89
|
"personal.bot_icon",
|
|
88
90
|
"personal.autonomy",
|
|
89
|
-
"
|
|
91
|
+
"telegraph.speak_scope",
|
|
90
92
|
)
|
|
91
93
|
|
|
92
94
|
_DEFAULTS: dict[str, Any] = {}
|
|
93
95
|
|
|
96
|
+
#: Defaults applied by :func:`get_modules_config` when a key is absent
|
|
97
|
+
#: from both the team file and the developer cascade. The values mirror
|
|
98
|
+
#: the ``modules:`` block shipped in
|
|
99
|
+
#: ``templates/agents/agent-project-settings.example.yml``. Lists are
|
|
100
|
+
#: returned as fresh copies — callers may mutate the result safely.
|
|
101
|
+
MODULES_DEFAULTS: dict[str, Any] = {
|
|
102
|
+
"enabled": False,
|
|
103
|
+
"root_paths": [],
|
|
104
|
+
"namespace_template": "",
|
|
105
|
+
"agent_folder": "agents",
|
|
106
|
+
"skip_dirs": [".module-template", ".example"],
|
|
107
|
+
"detection_acknowledged": False,
|
|
108
|
+
}
|
|
109
|
+
|
|
94
110
|
|
|
95
111
|
#: Anchor identifier returned by :func:`find_project_root_with_anchor`.
|
|
96
112
|
ANCHOR_AGENT_SETTINGS = "agent-settings"
|
|
@@ -470,6 +486,184 @@ def load_agent_settings(
|
|
|
470
486
|
return merged
|
|
471
487
|
|
|
472
488
|
|
|
489
|
+
def get_modules_config(
|
|
490
|
+
project_root: Path | str | None = None,
|
|
491
|
+
team_path: Path | str | None = None,
|
|
492
|
+
project_path: Path | str | None = None,
|
|
493
|
+
cwd: Path | None = None,
|
|
494
|
+
) -> dict[str, Any]:
|
|
495
|
+
"""Return the merged ``modules:`` configuration with defaults applied.
|
|
496
|
+
|
|
497
|
+
Three-tier precedence (deepest wins) per the layered-settings model
|
|
498
|
+
documented in ``docs/guidelines/agent-infra/layered-settings.md``:
|
|
499
|
+
|
|
500
|
+
1. :data:`MODULES_DEFAULTS` — package-shipped defaults.
|
|
501
|
+
2. Team file — ``<project_root>/.agent-project-settings.yml``
|
|
502
|
+
(committed, all developers see the same values).
|
|
503
|
+
3. Developer cascade — every ``.agent-settings.yml`` walked by
|
|
504
|
+
:func:`_resolve_cascade_paths` (git-ignored local overrides).
|
|
505
|
+
|
|
506
|
+
The team layer may pin keys via a top-level ``locked_keys`` list of
|
|
507
|
+
dotted paths (e.g. ``[modules.root_paths]``). Locked keys discard any
|
|
508
|
+
matching override from the developer cascade and emit a ``logging``
|
|
509
|
+
INFO record. Locks are advisory — the team file always wins anyway —
|
|
510
|
+
but the explicit list makes the intent reviewable and gives the loader
|
|
511
|
+
a hook for the warning.
|
|
512
|
+
|
|
513
|
+
``project_root`` defaults to ``find_project_root(cwd or Path.cwd())``.
|
|
514
|
+
``team_path`` overrides the resolved team-file location for tests.
|
|
515
|
+
``project_path`` + ``cwd`` flow through to :func:`load_agent_settings`
|
|
516
|
+
unchanged.
|
|
517
|
+
|
|
518
|
+
Pure, read-only — no file is ever written. Missing files / malformed
|
|
519
|
+
YAML / absent ``modules:`` block all return the defaults.
|
|
520
|
+
"""
|
|
521
|
+
cwd_resolved = cwd if cwd is not None else Path.cwd()
|
|
522
|
+
|
|
523
|
+
if team_path is not None:
|
|
524
|
+
team_file = Path(team_path)
|
|
525
|
+
else:
|
|
526
|
+
if project_root is not None:
|
|
527
|
+
root = Path(project_root)
|
|
528
|
+
else:
|
|
529
|
+
root = find_project_root(cwd_resolved) or cwd_resolved
|
|
530
|
+
team_file = root / DEFAULT_TEAM_FILE
|
|
531
|
+
|
|
532
|
+
team_raw = _read_yaml(team_file) or {}
|
|
533
|
+
team_modules = team_raw.get("modules") if isinstance(team_raw.get("modules"), dict) else {}
|
|
534
|
+
locked_keys_raw = team_raw.get("locked_keys")
|
|
535
|
+
locked_keys: tuple[str, ...] = tuple(
|
|
536
|
+
k for k in (locked_keys_raw or []) if isinstance(k, str)
|
|
537
|
+
)
|
|
538
|
+
|
|
539
|
+
dev_merged = load_agent_settings(
|
|
540
|
+
project_path=project_path,
|
|
541
|
+
cwd=cwd,
|
|
542
|
+
)
|
|
543
|
+
dev_modules = dev_merged.get("modules") if isinstance(dev_merged.get("modules"), dict) else {}
|
|
544
|
+
|
|
545
|
+
merged: dict[str, Any] = copy.deepcopy(MODULES_DEFAULTS)
|
|
546
|
+
if team_modules:
|
|
547
|
+
_deep_merge(merged, team_modules)
|
|
548
|
+
|
|
549
|
+
if dev_modules:
|
|
550
|
+
for key, value in dev_modules.items():
|
|
551
|
+
dotted = f"modules.{key}"
|
|
552
|
+
if dotted in locked_keys and key in (team_modules or {}):
|
|
553
|
+
logger.info(
|
|
554
|
+
"agent_settings: ignoring developer override of locked key %s",
|
|
555
|
+
dotted,
|
|
556
|
+
)
|
|
557
|
+
continue
|
|
558
|
+
if isinstance(value, dict) and isinstance(merged.get(key), dict):
|
|
559
|
+
_deep_merge(merged[key], value)
|
|
560
|
+
else:
|
|
561
|
+
merged[key] = value
|
|
562
|
+
|
|
563
|
+
return merged
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
def enumerate_modules(
|
|
567
|
+
project_root: Path | str | None = None,
|
|
568
|
+
cwd: Path | None = None,
|
|
569
|
+
modules_config: dict[str, Any] | None = None,
|
|
570
|
+
) -> list[dict[str, Any]]:
|
|
571
|
+
"""Enumerate every module under ``modules.root_paths``.
|
|
572
|
+
|
|
573
|
+
Phase D Step 1 of road-to-configurable-modules. For each path in
|
|
574
|
+
``modules.root_paths`` (resolved relative to ``project_root``), lists
|
|
575
|
+
immediate subdirectories that survive the ``modules.skip_dirs`` filter
|
|
576
|
+
and reports whether each module ships a per-module agent folder
|
|
577
|
+
(``modules.agent_folder``, default ``agents``).
|
|
578
|
+
|
|
579
|
+
Returns a list of dicts \u2014 one per discovered module \u2014 sorted by
|
|
580
|
+
``(root_path, name)`` for deterministic output:
|
|
581
|
+
|
|
582
|
+
* ``name`` \u2014 directory name of the module
|
|
583
|
+
* ``root_path`` \u2014 repo-relative root containing the module
|
|
584
|
+
* ``module_path`` \u2014 repo-relative path to the module itself
|
|
585
|
+
* ``has_agent_folder`` \u2014 ``True`` iff a directory matching
|
|
586
|
+
``modules.agent_folder`` lives directly under the module
|
|
587
|
+
* ``agent_folder_path`` \u2014 repo-relative path to that folder
|
|
588
|
+
(``None`` when ``has_agent_folder`` is ``False``)
|
|
589
|
+
|
|
590
|
+
Contract:
|
|
591
|
+
|
|
592
|
+
* ``modules.enabled`` is **not** consulted \u2014 callers decide whether
|
|
593
|
+
to skip the call. Disabled projects normally yield ``[]`` because
|
|
594
|
+
``root_paths`` is empty by default.
|
|
595
|
+
* Missing roots are skipped silently (logged at INFO).
|
|
596
|
+
* Hidden directories (leading ``.``) and entries in
|
|
597
|
+
``modules.skip_dirs`` are filtered out.
|
|
598
|
+
* Symlinks are followed only when they resolve inside the project
|
|
599
|
+
root \u2014 same boundary as ``find_project_root``.
|
|
600
|
+
* Pure, read-only \u2014 no file or directory is ever written.
|
|
601
|
+
|
|
602
|
+
``modules_config`` lets tests inject a pre-built dict; when ``None``
|
|
603
|
+
the function calls :func:`get_modules_config` with the same
|
|
604
|
+
``project_root`` / ``cwd`` so the precedence chain matches.
|
|
605
|
+
"""
|
|
606
|
+
cwd_resolved = cwd if cwd is not None else Path.cwd()
|
|
607
|
+
if project_root is not None:
|
|
608
|
+
root = Path(project_root)
|
|
609
|
+
else:
|
|
610
|
+
root = find_project_root(cwd_resolved) or cwd_resolved
|
|
611
|
+
root = root.resolve()
|
|
612
|
+
|
|
613
|
+
if modules_config is None:
|
|
614
|
+
modules_config = get_modules_config(project_root=root, cwd=cwd)
|
|
615
|
+
|
|
616
|
+
root_paths_raw = modules_config.get("root_paths") or []
|
|
617
|
+
skip_dirs_raw = modules_config.get("skip_dirs") or MODULES_DEFAULTS["skip_dirs"]
|
|
618
|
+
agent_folder = str(modules_config.get("agent_folder") or MODULES_DEFAULTS["agent_folder"])
|
|
619
|
+
|
|
620
|
+
skip_dirs: set[str] = {str(s) for s in skip_dirs_raw if isinstance(s, str)}
|
|
621
|
+
|
|
622
|
+
discovered: list[dict[str, Any]] = []
|
|
623
|
+
for raw in root_paths_raw:
|
|
624
|
+
if not isinstance(raw, str) or not raw.strip():
|
|
625
|
+
continue
|
|
626
|
+
root_rel = raw.strip().strip("/")
|
|
627
|
+
root_abs = (root / root_rel).resolve()
|
|
628
|
+
try:
|
|
629
|
+
if not root_abs.is_dir() or not str(root_abs).startswith(str(root)):
|
|
630
|
+
logger.info("enumerate_modules: skipping missing/out-of-tree root %s", root_rel)
|
|
631
|
+
continue
|
|
632
|
+
except OSError:
|
|
633
|
+
logger.info("enumerate_modules: unreadable root %s", root_rel)
|
|
634
|
+
continue
|
|
635
|
+
|
|
636
|
+
try:
|
|
637
|
+
children = sorted(root_abs.iterdir(), key=lambda p: p.name)
|
|
638
|
+
except OSError:
|
|
639
|
+
logger.info("enumerate_modules: cannot list %s", root_rel)
|
|
640
|
+
continue
|
|
641
|
+
|
|
642
|
+
for child in children:
|
|
643
|
+
name = child.name
|
|
644
|
+
if name.startswith(".") or name in skip_dirs:
|
|
645
|
+
continue
|
|
646
|
+
if not child.is_dir():
|
|
647
|
+
continue
|
|
648
|
+
agent_dir = child / agent_folder
|
|
649
|
+
has_agent = agent_dir.is_dir()
|
|
650
|
+
try:
|
|
651
|
+
module_rel = child.resolve().relative_to(root)
|
|
652
|
+
except ValueError:
|
|
653
|
+
continue
|
|
654
|
+
entry: dict[str, Any] = {
|
|
655
|
+
"name": name,
|
|
656
|
+
"root_path": root_rel,
|
|
657
|
+
"module_path": str(module_rel),
|
|
658
|
+
"has_agent_folder": has_agent,
|
|
659
|
+
"agent_folder_path": str(module_rel / agent_folder) if has_agent else None,
|
|
660
|
+
}
|
|
661
|
+
discovered.append(entry)
|
|
662
|
+
|
|
663
|
+
discovered.sort(key=lambda m: (m["root_path"], m["name"]))
|
|
664
|
+
return discovered
|
|
665
|
+
|
|
666
|
+
|
|
473
667
|
def iter_setting_overrides(
|
|
474
668
|
project_path: Path | str | None = None,
|
|
475
669
|
user_global_path: Path | str | None = None,
|
|
@@ -61,7 +61,7 @@ def _load_pipeline(path: Path) -> dict[str, Any]:
|
|
|
61
61
|
loader is reachable both when this module runs from the consumer
|
|
62
62
|
projection (``.agent-src/templates/scripts/work_engine/``) and
|
|
63
63
|
from the source-of-truth tree
|
|
64
|
-
(``packages/<pack>/.agent-src.
|
|
64
|
+
(``packages/<pack>/.agent-src.uncondensed/templates/scripts/work_engine/``).
|
|
65
65
|
Loaded via ``importlib.util`` by file path to avoid namespace
|
|
66
66
|
collisions with test packages named ``hooks``.
|
|
67
67
|
"""
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Template for `agents/evidence/archived-skills/<slug>.md`. Created during
|
|
4
4
|
> `step-2-skill-inventory-rationalization.md`
|
|
5
5
|
> Phase 4 execution. Every skill removed from
|
|
6
|
-
> `.agent-src.
|
|
6
|
+
> `.agent-src.uncondensed/skills/` MUST have a matching archive note
|
|
7
7
|
> here — enforced by `scripts/lint_archived_skills.py`.
|
|
8
8
|
|
|
9
9
|
## Instructions
|
|
@@ -78,7 +78,7 @@ references the removed slug without pointing at this note.}
|
|
|
78
78
|
relationship documented in the successor's frontmatter).
|
|
79
79
|
- `deprecated` — capability retired; no successor needed.
|
|
80
80
|
- **`replacement`** — successor slug (must exist under
|
|
81
|
-
`.agent-src.
|
|
81
|
+
`.agent-src.uncondensed/skills/`) or literal `none`. The linter
|
|
82
82
|
validates the successor's existence.
|
|
83
83
|
- **`last_known_callers`** — references found by
|
|
84
84
|
`scripts/check_references.py` at archival time. Empty list is valid
|
|
@@ -92,10 +92,10 @@ references the removed slug without pointing at this note.}
|
|
|
92
92
|
has a frontmatter block with the six required fields.
|
|
93
93
|
2. `reason` is one of the four allowed values.
|
|
94
94
|
3. When `reason ∈ {merged, superseded}`, the `replacement` slug exists
|
|
95
|
-
under `.agent-src.
|
|
95
|
+
under `.agent-src.uncondensed/skills/`.
|
|
96
96
|
4. Every slug under `agents/evidence/archived-skills/` is *absent* from
|
|
97
|
-
`.agent-src.
|
|
98
|
-
5. No SKILL.md present under `.agent-src.
|
|
97
|
+
`.agent-src.uncondensed/skills/` (no zombies).
|
|
98
|
+
5. No SKILL.md present under `.agent-src.uncondensed/skills/`
|
|
99
99
|
references an archived slug as a router target.
|
|
100
100
|
|
|
101
101
|
Run via `task lint-archived-skills`. Included in `task ci`.
|
|
@@ -170,7 +170,7 @@ Do NOT use when:
|
|
|
170
170
|
|
|
171
171
|
<!-- SENIOR-TIER STUB BLOCKS (delete entire section if not `tier: senior`):
|
|
172
172
|
Senior-tier skills (frontmatter `tier: senior`) require four extra
|
|
173
|
-
blocks per `.agent-src.
|
|
173
|
+
blocks per `.agent-src.uncondensed/rules/skill-quality.md` §
|
|
174
174
|
Senior-Tier Required Structure. Mid-tier and untiered skills MUST
|
|
175
175
|
remove this section entirely. The four blocks are enforced by
|
|
176
176
|
`scripts/skill_linter.py` for `tier: senior` skills only.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
|
|
9
|
-
"version": "
|
|
9
|
+
"version": "4.2.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
|
@@ -102,8 +102,8 @@
|
|
|
102
102
|
"./.claude/skills/competitive-moat-analysis",
|
|
103
103
|
"./.claude/skills/competitive-positioning",
|
|
104
104
|
"./.claude/skills/composer-packages",
|
|
105
|
-
"./.claude/skills/
|
|
106
|
-
"./.claude/skills/
|
|
105
|
+
"./.claude/skills/condense",
|
|
106
|
+
"./.claude/skills/condense-memory",
|
|
107
107
|
"./.claude/skills/content-funnel-design",
|
|
108
108
|
"./.claude/skills/context",
|
|
109
109
|
"./.claude/skills/context-authoring",
|
|
@@ -189,7 +189,6 @@
|
|
|
189
189
|
"./.claude/skills/hiring-loop-design",
|
|
190
190
|
"./.claude/skills/implement-ticket",
|
|
191
191
|
"./.claude/skills/incident-commander",
|
|
192
|
-
"./.claude/skills/install-via-agent",
|
|
193
192
|
"./.claude/skills/jira-integration",
|
|
194
193
|
"./.claude/skills/jira-ticket",
|
|
195
194
|
"./.claude/skills/jobs-events",
|
|
@@ -245,6 +244,7 @@
|
|
|
245
244
|
"./.claude/skills/mode",
|
|
246
245
|
"./.claude/skills/module",
|
|
247
246
|
"./.claude/skills/module-create",
|
|
247
|
+
"./.claude/skills/module-detect-on-the-fly",
|
|
248
248
|
"./.claude/skills/module-explore",
|
|
249
249
|
"./.claude/skills/module-management",
|
|
250
250
|
"./.claude/skills/motion-choreographer",
|
package/AGENTS.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# event4u/agent-config
|
|
2
2
|
|
|
3
|
-
> Shared skill / rule / command suite for AI coding tools. No
|
|
3
|
+
> Shared skill / rule / command suite for AI coding tools. No app runtime. AGENTS.md of the **package itself**.
|
|
4
4
|
|
|
5
5
|
## Source of truth
|
|
6
6
|
|
|
7
|
-
Edit `packages/<pack>/.agent-src.
|
|
7
|
+
Edit `packages/<pack>/.agent-src.uncondensed/` only. Generated trees regenerate from `task sync` + `task generate-tools`; never hand-edit.
|
|
8
8
|
|
|
9
9
|
## Working on this repo
|
|
10
10
|
|
|
@@ -17,22 +17,21 @@ task ci # full pipeline — green before PR
|
|
|
17
17
|
|
|
18
18
|
## Pointers
|
|
19
19
|
|
|
20
|
-
- **
|
|
21
|
-
- **Kernel + Router** — 9 Iron-Law rules
|
|
22
|
-
- **Trust & Safety** — trust-level enum, HRR banner, safety floors
|
|
23
|
-
- **Content pipelines** — A→D source / Augment / multi-tool / Claude.ai-bundle
|
|
24
|
-
- **Editing this repo** — Iron-Law rules + Thin-Root contract
|
|
25
|
-
- **Consumer story** — `npx` + `scripts/install.sh
|
|
26
|
-
- **Personas** — 11 review
|
|
27
|
-
- **Discovery** — workspaces / packs
|
|
28
|
-
- **Root layout** — maintainer
|
|
20
|
+
- **Self-orientation** — identity / map / stack: [`package-self-orientation`](docs/contracts/package-self-orientation.md).
|
|
21
|
+
- **Kernel + Router** — 9 Iron-Law rules + tier-1/2 routing: [`kernel-membership`](docs/contracts/kernel-membership.md) + [`rule-router`](docs/contracts/rule-router.md).
|
|
22
|
+
- **Trust & Safety** — trust-level enum, HRR banner, safety floors: [`trust-and-safety`](docs/contracts/trust-and-safety.md) + [`ADR-018`](docs/decisions/ADR-018-trust-and-safety-layer.md).
|
|
23
|
+
- **Content pipelines** — A→D source / Augment / multi-tool / Claude.ai-bundle: [`docs/architecture.md`](docs/architecture.md).
|
|
24
|
+
- **Editing this repo** — Iron-Law rules + Thin-Root contract: [`augment-source-of-truth`](.agent-src/rules/augment-source-of-truth.md) + [`agents-md-thin-root`](.agent-src/skills/agents-md-thin-root/SKILL.md).
|
|
25
|
+
- **Consumer story** — `npx` + `scripts/install.sh`, sandbox / offline paths: [`README.md`](README.md).
|
|
26
|
+
- **Personas** — 11 review lenses (6 + 5): [`docs/personas.md`](docs/personas.md).
|
|
27
|
+
- **Discovery** — workspaces / packs manifest: [`ADR-013`](docs/decisions/ADR-013-discovery-frontmatter-contract.md) + [`customization`](docs/customization.md#workspaces--packs-discovery).
|
|
28
|
+
- **Root layout** — maintainer items in [`internal/`](internal/README.md) per [`ADR-028`](docs/decisions/ADR-028-root-layout.md); per-tool toggle: `agents/.agent-tools.yml`.
|
|
29
29
|
|
|
30
30
|
## Emergency triage — read this when nothing else is reachable
|
|
31
31
|
|
|
32
|
-
1. **What is this repo?** — `event4u/agent-config`, a governed skill / rule / command suite for AI coding tools (no
|
|
33
|
-
2. **What language?** — All `.md`
|
|
34
|
-
3. **Where do I edit?** — `packages/<pack>/.agent-src.
|
|
32
|
+
1. **What is this repo?** — `event4u/agent-config`, a governed skill / rule / command suite for AI coding tools (no app runtime).
|
|
33
|
+
2. **What language?** — All `.md` is English; agents mirror the user's language at runtime.
|
|
34
|
+
3. **Where do I edit?** — `packages/<pack>/.agent-src.uncondensed/` only. Never the generated trees.
|
|
35
35
|
4. **Lint / test / sync entry point?** — `task ci` (full pipeline). Subsets: `task sync`, `task generate-tools`, `task lint-skills`, `task test`.
|
|
36
|
-
5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 /
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 / 2 via `dist/router.json`).
|
|
37
|
+
6. **CI checks?** — `task ci:required-checks` previews per [`branch-protection-policy.md`](docs/contracts/branch-protection-policy.md); merge floor [`ci-green-floor.md`](docs/contracts/ci-green-floor.md); release [`release-pr-gating.md`](docs/contracts/release-pr-gating.md).
|