@event4u/agent-config 1.15.0 → 1.17.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/commands/{agents-audit.md → agents/audit.md} +4 -3
- package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
- package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
- package/.agent-src/commands/agents.md +46 -0
- package/.agent-src/commands/bug-fix.md +1 -1
- package/.agent-src/commands/bug-investigate.md +2 -2
- package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +5 -5
- package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +5 -5
- package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
- package/.agent-src/commands/chat-history/show.md +107 -0
- package/.agent-src/commands/chat-history.md +33 -89
- package/.agent-src/commands/check-current-md.md +1 -1
- package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
- package/.agent-src/commands/commit.md +22 -2
- package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
- package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
- package/.agent-src/commands/context.md +44 -0
- package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
- package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
- package/.agent-src/commands/copilot-agents.md +44 -0
- package/.agent-src/commands/council/default.md +221 -0
- package/.agent-src/commands/council/design.md +97 -0
- package/.agent-src/commands/council/optimize.md +116 -0
- package/.agent-src/commands/council/pr.md +124 -0
- package/.agent-src/commands/council.md +54 -0
- package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
- package/.agent-src/commands/create-pr.md +49 -5
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/{feature-dev.md → feature/dev.md} +6 -3
- package/.agent-src/commands/{feature-explore.md → feature/explore.md} +5 -4
- package/.agent-src/commands/{feature-plan.md → feature/plan.md} +32 -5
- package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -3
- package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +7 -6
- package/.agent-src/commands/feature.md +52 -0
- package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -3
- package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -3
- package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -3
- package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -3
- package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -6
- package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -3
- package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -3
- package/.agent-src/commands/fix.md +54 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +7 -6
- package/.agent-src/commands/judge/solo.md +90 -0
- package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +8 -7
- package/.agent-src/commands/judge.md +35 -70
- package/.agent-src/commands/{memory-add.md → memory/add.md} +7 -6
- package/.agent-src/commands/{memory-full.md → memory/load.md} +6 -5
- package/.agent-src/commands/{memory-promote.md → memory/promote.md} +6 -5
- package/.agent-src/commands/{propose-memory.md → memory/propose.md} +6 -5
- package/.agent-src/commands/memory.md +48 -0
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
- package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
- package/.agent-src/commands/module.md +44 -0
- package/.agent-src/commands/onboard.md +3 -3
- package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +5 -4
- package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -4
- package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -3
- package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +5 -4
- package/.agent-src/commands/optimize.md +48 -0
- package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
- package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
- package/.agent-src/commands/override.md +44 -0
- package/.agent-src/commands/review-changes.md +26 -1
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +33 -5
- package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
- package/.agent-src/commands/roadmap.md +44 -0
- package/.agent-src/commands/set-cost-profile.md +3 -3
- package/.agent-src/commands/sync-agent-settings.md +2 -2
- package/.agent-src/commands/{tests-create.md → tests/create.md} +5 -4
- package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
- package/.agent-src/commands/tests.md +44 -0
- package/.agent-src/commands/upstream-contribute.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
- package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
- package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
- package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
- package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
- package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
- package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
- package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
- package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
- package/.agent-src/personas/README.md +1 -1
- package/.agent-src/rules/agent-authority.md +24 -0
- package/.agent-src/rules/architecture.md +1 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/.agent-src/rules/artifact-engagement-recording.md +14 -70
- package/.agent-src/rules/ask-when-uncertain.md +28 -43
- package/.agent-src/rules/augment-portability.md +15 -61
- package/.agent-src/rules/augment-source-of-truth.md +27 -93
- package/.agent-src/rules/autonomous-execution.md +78 -114
- package/.agent-src/rules/capture-learnings.md +1 -1
- package/.agent-src/rules/chat-history-cadence.md +3 -3
- package/.agent-src/rules/chat-history-ownership.md +3 -3
- package/.agent-src/rules/chat-history-visibility.md +3 -3
- package/.agent-src/rules/cli-output-handling.md +10 -76
- package/.agent-src/rules/command-suggestion-policy.md +93 -0
- package/.agent-src/rules/commit-conventions.md +17 -14
- package/.agent-src/rules/commit-policy.md +14 -42
- package/.agent-src/rules/context-hygiene.md +3 -3
- package/.agent-src/rules/direct-answers.md +34 -49
- package/.agent-src/rules/docker-commands.md +5 -5
- package/.agent-src/rules/docs-sync.md +16 -70
- package/.agent-src/rules/e2e-testing.md +1 -1
- package/.agent-src/rules/guidelines.md +4 -4
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +50 -133
- package/.agent-src/rules/minimal-safe-diff.md +3 -3
- package/.agent-src/rules/missing-tool-handling.md +28 -22
- package/.agent-src/rules/model-recommendation.md +4 -4
- package/.agent-src/rules/no-cheap-questions.md +82 -0
- package/.agent-src/rules/no-roadmap-references.md +73 -0
- package/.agent-src/rules/non-destructive-by-default.md +15 -49
- package/.agent-src/rules/onboarding-gate.md +5 -5
- package/.agent-src/rules/package-ci-checks.md +21 -61
- package/.agent-src/rules/preservation-guard.md +64 -29
- package/.agent-src/rules/review-routing-awareness.md +26 -45
- package/.agent-src/rules/roadmap-progress-sync.md +28 -96
- package/.agent-src/rules/role-mode-adherence.md +2 -2
- package/.agent-src/rules/scope-control.md +65 -46
- package/.agent-src/rules/security-sensitive-stop.md +9 -9
- package/.agent-src/rules/size-enforcement.md +1 -1
- package/.agent-src/rules/skill-quality.md +16 -48
- package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +7 -4
- package/.agent-src/rules/think-before-action.md +55 -45
- package/.agent-src/rules/token-efficiency.md +4 -4
- package/.agent-src/rules/tool-safety.md +19 -16
- package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +27 -41
- package/.agent-src/rules/user-interaction.md +16 -71
- package/.agent-src/rules/verify-before-complete.md +12 -67
- package/.agent-src/scripts/update_roadmap_progress.py +9 -4
- package/.agent-src/skills/ai-council/SKILL.md +335 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/.agent-src/skills/api-testing/SKILL.md +1 -1
- package/.agent-src/skills/blade-ui/SKILL.md +1 -1
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/check-refs/SKILL.md +59 -40
- package/.agent-src/skills/command-routing/SKILL.md +1 -1
- package/.agent-src/skills/command-writing/SKILL.md +1 -1
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +7 -7
- package/.agent-src/skills/developer-like-execution/SKILL.md +6 -6
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
- package/.agent-src/skills/flux/SKILL.md +31 -11
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/github-ci/SKILL.md +2 -2
- package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
- package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
- package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
- package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/lint-skills/SKILL.md +57 -39
- package/.agent-src/skills/livewire/SKILL.md +1 -1
- package/.agent-src/skills/md-language-check/SKILL.md +61 -39
- package/.agent-src/skills/override-management/SKILL.md +7 -7
- package/.agent-src/skills/php-coder/SKILL.md +1 -1
- package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
- package/.agent-src/skills/quality-tools/SKILL.md +2 -2
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
- package/.agent-src/skills/readme-reviewer/SKILL.md +31 -30
- package/.agent-src/skills/readme-writing/SKILL.md +79 -54
- package/.agent-src/skills/readme-writing-package/SKILL.md +51 -48
- package/.agent-src/skills/receiving-code-review/SKILL.md +53 -48
- package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
- package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
- package/.agent-src/skills/review-routing/SKILL.md +2 -2
- package/.agent-src/skills/rule-writing/SKILL.md +1 -1
- package/.agent-src/skills/security/SKILL.md +7 -2
- package/.agent-src/skills/security-audit/SKILL.md +7 -3
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +3 -3
- package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +69 -61
- package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
- package/.agent-src/skills/test-performance/SKILL.md +0 -1
- package/.agent-src/skills/traefik/SKILL.md +4 -4
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +30 -28
- package/.agent-src/templates/agent-settings.md +8 -8
- package/.agent-src/templates/contexts/auth-model.md +1 -1
- package/.agent-src/templates/scripts/README.md +2 -2
- package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
- package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
- package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
- package/.agent-src/templates/scripts/telemetry_record.py +14 -1
- package/.claude-plugin/marketplace.json +31 -12
- package/AGENTS.md +11 -9
- package/CHANGELOG.md +213 -2
- package/README.md +43 -44
- package/config/agent-settings.template.yml +58 -1
- package/config/gitignore-block.txt +3 -0
- package/docs/architecture.md +5 -7
- package/docs/catalog.md +359 -0
- package/docs/contracts/STABILITY.md +46 -1
- package/docs/contracts/adr-chat-history-split.md +1 -3
- package/docs/contracts/adr-command-suggestion.md +3 -5
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
- package/docs/contracts/adr-product-ui-track.md +5 -8
- package/docs/contracts/adr-prompt-driven-execution.md +3 -4
- package/docs/contracts/agent-memory-contract.md +8 -13
- package/docs/contracts/artifact-engagement-flow.md +7 -10
- package/docs/contracts/command-clusters.md +56 -46
- package/docs/contracts/command-suggestion-flow.md +4 -6
- package/docs/contracts/context-paths.md +99 -0
- package/docs/contracts/file-ownership-matrix.json +6722 -0
- package/docs/contracts/file-ownership-matrix.md +134 -0
- package/docs/contracts/implement-ticket-flow.md +8 -11
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -2
- package/docs/contracts/linear-ai-three-layers.md +0 -2
- package/docs/contracts/load-context-budget-model.md +178 -0
- package/docs/contracts/load-context-schema.md +184 -0
- package/docs/contracts/rule-interactions.md +0 -1
- package/docs/contracts/rule-interactions.yml +96 -0
- package/docs/contracts/rule-priority-hierarchy.md +87 -0
- package/docs/contracts/ui-track-flow.md +8 -18
- package/docs/customization.md +16 -0
- package/docs/end-to-end-walkthroughs.md +165 -0
- package/docs/getting-started.md +29 -10
- package/docs/github-topics.md +12 -3
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
- package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
- package/docs/guidelines/php/git.md +164 -0
- package/docs/migrations/commands-1.15.0.md +1 -1
- package/docs/showcase.md +9 -4
- package/docs/skills-catalog.md +14 -8
- package/docs/ui-track-mental-model.md +2 -2
- package/llms.txt +13 -7
- package/package.json +1 -1
- package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
- package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
- package/scripts/_phase2_shim_helper.py +109 -0
- package/scripts/agent-config +33 -0
- package/scripts/ai_council/__init__.py +39 -0
- package/scripts/ai_council/_default_prices.py +41 -0
- package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
- package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
- package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
- package/scripts/ai_council/_one_off_followups_review.py +259 -0
- package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
- package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
- package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
- package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
- package/scripts/ai_council/_one_off_roundtrip.py +106 -0
- package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
- package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
- package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
- package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
- package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
- package/scripts/ai_council/budget_guard.py +172 -0
- package/scripts/ai_council/bundler.py +261 -0
- package/scripts/ai_council/clients.py +381 -0
- package/scripts/ai_council/modes.py +127 -0
- package/scripts/ai_council/orchestrator.py +350 -0
- package/scripts/ai_council/pricing.py +213 -0
- package/scripts/ai_council/project_context.py +159 -0
- package/scripts/ai_council/prompts.py +232 -0
- package/scripts/ai_council/session.py +144 -0
- package/scripts/check_always_budget.py +444 -0
- package/scripts/check_augmentignore.py +69 -0
- package/scripts/check_cluster_patterns.py +159 -0
- package/scripts/check_command_count_messaging.py +127 -0
- package/scripts/check_context_paths.py +201 -0
- package/scripts/check_no_roadmap_refs.py +155 -0
- package/scripts/check_phase_coupling.py +148 -0
- package/scripts/check_portability.py +57 -0
- package/scripts/check_public_catalog_links.py +122 -0
- package/scripts/check_references.py +33 -3
- package/scripts/check_roadmap_trackable.py +111 -0
- package/scripts/check_safety_floor_untouched.py +125 -0
- package/scripts/command_suggester/cooldown.py +1 -1
- package/scripts/command_suggester/loader.py +4 -1
- package/scripts/compress.py +59 -13
- package/scripts/generate_index.py +270 -0
- package/scripts/generate_ownership_matrix.py +323 -0
- package/scripts/hooks/augment-roadmap-progress.sh +57 -0
- package/scripts/install.py +49 -28
- package/scripts/install_anthropic_key.sh +5 -0
- package/scripts/install_openai_key.sh +106 -0
- package/scripts/lint_load_context.py +163 -0
- package/scripts/lint_no_new_atomic_commands.py +12 -11
- package/scripts/requirements-evals.txt +1 -0
- package/scripts/roadmap_progress_hook.py +159 -0
- package/scripts/schemas/command.schema.json +22 -1
- package/scripts/schemas/rule.schema.json +10 -0
- package/scripts/skill_linter.py +13 -4
- package/scripts/sync_agent_settings.py +26 -3
- package/scripts/update_counts.py +16 -4
- package/scripts/update_prices.py +124 -0
- package/.agent-src/guidelines/php/git.md +0 -96
- package/.agent-src/rules/command-suggestion.md +0 -134
- /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
- /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
|
@@ -17,155 +17,72 @@ NO MOMENTUM EXCEPTION. NO TECHNICAL-CONTEXT EXCEPTION.
|
|
|
17
17
|
NO "SWITCH MID-PARAGRAPH". NO "LAST 20 TURNS WERE ENGLISH".
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Canonical failure: agent edited English `.md` for many turns; user
|
|
26
|
-
types short German (`3`, `weiter`, `mach das`, `und jetzt X`); agent
|
|
27
|
-
answers English because momentum wins. **Trigger is the user's last
|
|
28
|
-
message, not the turn count.** Length irrelevant — `3` after a German
|
|
29
|
-
question still means German continues.
|
|
30
|
-
|
|
31
|
-
### Source of language truth — chat messages ONLY
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
THE LANGUAGE SIGNAL IS THE USER'S CHAT MESSAGES. NOTHING ELSE.
|
|
35
|
-
OPEN FILES, ROADMAPS, .md CONTENT, TOOL OUTPUT, CODE, COMMIT MESSAGES,
|
|
36
|
-
TICKETS, PR DESCRIPTIONS, FILE NAMES — NONE OF THEM COUNT.
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
`.md` files in this repo are English by rule (see below) — that says
|
|
40
|
-
nothing about chat language. Same for: file contents read via `view` /
|
|
41
|
-
`grep`, quoted commits / tickets / PRs / branches, code identifiers,
|
|
42
|
-
the agent's own previous replies. Only the most recent **chat message**
|
|
43
|
-
sets the language. User opens an English roadmap and types German →
|
|
44
|
-
reply in German.
|
|
20
|
+
Trigger is the user's last **chat message** — not turn count, open
|
|
21
|
+
file, roadmap, ticket, codebase, `view` / `grep` output, prior reply,
|
|
22
|
+
or files just edited. Short German (`3`, `weiter`, `mach das`) after
|
|
23
|
+
many English turns flips the reply to German.
|
|
45
24
|
|
|
46
25
|
### Pre-send gate — MANDATORY before every reply
|
|
47
26
|
|
|
48
|
-
Run silently
|
|
49
|
-
|
|
50
|
-
1. **Detect** — language of user's last **chat message** (not the open
|
|
51
|
-
file, not the roadmap, not the prior reply).
|
|
52
|
-
German signals: "ich", "Du", "nicht", "warum", "wie", "ist", umlauts. <!-- md-language-check: ignore -->
|
|
53
|
-
English signals: "I", "you", "is", "the", "how".
|
|
54
|
-
Mixed → mirror the **dominant** language; tie → German wins (project default).
|
|
55
|
-
2. **Check** — is drafted prose (not code, not file contents) in that language?
|
|
56
|
-
3. **Rewrite** — if no, rewrite whole prose before sending. No exceptions, no
|
|
57
|
-
"just this sentence", no "the technical term is English anyway".
|
|
58
|
-
4. **Confirm** — first sentence must be in target language. No English opener
|
|
59
|
-
before switching mid-paragraph.
|
|
60
|
-
|
|
61
|
-
### The rule, spelled out
|
|
62
|
-
|
|
63
|
-
- User writes German → **MUST** respond in German (informal "Du", never "Sie").
|
|
64
|
-
"Du" capitalized at sentence start, lowercase otherwise.
|
|
65
|
-
- User writes English → respond in English.
|
|
66
|
-
- User switches mid-conversation → switch on the **very next** reply. No
|
|
67
|
-
grace period, no "let me finish this thought in the old language".
|
|
68
|
-
- Code blocks, command output, file contents, quoted tool output stay in
|
|
69
|
-
their native language. Only the **prose around them** mirrors the user.
|
|
70
|
-
- "I've been answering in English for a while" is NOT a reason to keep going.
|
|
71
|
-
Trigger is the **latest user message**, not conversation momentum.
|
|
72
|
-
- Numbered option lists (per `user-interaction`) mirror the user's language —
|
|
73
|
-
`.md` source is English, rendered reply is translated at runtime.
|
|
74
|
-
|
|
75
|
-
### When the user calls out a language slip
|
|
76
|
-
|
|
77
|
-
1. Acknowledge **once**, briefly, in the correct language ("Entschuldigung" /
|
|
78
|
-
"Sorry"). One sentence, no excuses.
|
|
79
|
-
2. Switch immediately on the same reply.
|
|
80
|
-
3. Do **not** re-explain the mistake in the wrong language.
|
|
81
|
-
4. Do **not** promise "from now on" — just do it. Only behaviour changes
|
|
82
|
-
prove compliance.
|
|
83
|
-
5. If user asks to harden the rule, harden it on this turn — don't defer.
|
|
84
|
-
|
|
85
|
-
### Failure modes to watch for
|
|
86
|
-
|
|
87
|
-
- Drafting reply in English first, then "translating the intro" → English
|
|
88
|
-
phrasing with German words. Draft in target language from the first token.
|
|
89
|
-
- Copy-pasting English option labels from `.md` sources without translating.
|
|
90
|
-
- Mixing languages inside a table or bullet list because "the technical term
|
|
91
|
-
is English" — surrounding prose must still mirror. Keep proper nouns and
|
|
92
|
-
code identifiers as-is; translate everything else.
|
|
93
|
-
- Assuming English because "the codebase is English" — codebase language ≠
|
|
94
|
-
conversation language.
|
|
95
|
-
- Mirroring the **open file** the IDE reports — open files are background
|
|
96
|
-
context, not chat messages.
|
|
97
|
-
- Mirroring the **roadmap or ticket** being executed — artefacts are English
|
|
98
|
-
by `.md` rule; chat language is whatever the user wrote.
|
|
99
|
-
|
|
100
|
-
## Other language rules
|
|
101
|
-
|
|
102
|
-
- All code comments must be in English.
|
|
103
|
-
- All `.md` documentation files must be in English (see section below). If
|
|
104
|
-
an existing file is in German, translate it when you touch it.
|
|
105
|
-
- Use two spaces after icons like ❌, ✅, ⚠️ in CLI output. One space is not enough. For other icons, one space is fine.
|
|
106
|
-
- Avoid double and triple blank lines in code and output — one blank line is enough.
|
|
107
|
-
- Every file MUST end with exactly one newline — no trailing blank lines.
|
|
27
|
+
Run silently before any output:
|
|
108
28
|
|
|
109
|
-
|
|
29
|
+
1. **Detect** — language of the user's last chat message. Mixed →
|
|
30
|
+
**dominant** language; tie → German (project default).
|
|
31
|
+
2. **Check** — is drafted prose (not code, not file contents) in
|
|
32
|
+
that language?
|
|
33
|
+
3. **Rewrite** — if no, rewrite whole prose. No "just this sentence",
|
|
34
|
+
no "technical term is English anyway".
|
|
35
|
+
4. **Confirm** — first sentence in target language. No English opener
|
|
36
|
+
before switching mid-paragraph.
|
|
110
37
|
|
|
111
|
-
|
|
112
|
-
This includes:
|
|
38
|
+
### Spelled out
|
|
113
39
|
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
40
|
+
- German → respond in German, informal "Du" (never "Sie"). "Du"
|
|
41
|
+
capitalized at sentence start, lowercase otherwise.
|
|
42
|
+
- Code blocks, command output, file contents, and quoted tool output
|
|
43
|
+
stay in their native language; only the **prose around them**
|
|
44
|
+
mirrors the user.
|
|
45
|
+
- Numbered options (per `user-interaction`) — `.md` source English,
|
|
46
|
+
rendered reply translated at runtime.
|
|
120
47
|
|
|
121
|
-
|
|
122
|
-
The `.md` source files are the English blueprint — they define WHAT to say, not in which language.
|
|
48
|
+
### Slip handling
|
|
123
49
|
|
|
124
|
-
**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
```
|
|
50
|
+
Acknowledge **once**, briefly, in the correct language
|
|
51
|
+
("Entschuldigung" / "Sorry"). Switch on the same reply. Do **not**
|
|
52
|
+
re-explain in the wrong language; do **not** promise "from now on" —
|
|
53
|
+
just do it.
|
|
129
54
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
> 1. Interactive — ask before each comment
|
|
133
|
-
> 2. Automatic — handle all independently
|
|
134
|
-
```
|
|
55
|
+
Full failure-mode list and wrong-vs-correct examples in
|
|
56
|
+
[`../../docs/guidelines/agent-infra/language-and-tone-examples.md`](../../docs/guidelines/agent-infra/language-and-tone-examples.md).
|
|
135
57
|
|
|
136
|
-
|
|
58
|
+
## Other language rules
|
|
137
59
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
60
|
+
- Code comments in English.
|
|
61
|
+
- `.md` documentation files in English (see section below).
|
|
62
|
+
Translate existing German `.md` files when you touch them.
|
|
63
|
+
- Two spaces after icons `❌`, `✅`, `⚠️` in CLI output; one space
|
|
64
|
+
for other icons.
|
|
65
|
+
- One blank line max; no double or triple blank lines.
|
|
66
|
+
- Every file ends with exactly one newline.
|
|
141
67
|
|
|
142
|
-
|
|
68
|
+
## `.md` files are ALWAYS English — no exceptions
|
|
143
69
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
70
|
+
**Every** piece of text inside `.md` files in `.augment/`,
|
|
71
|
+
`.agent-src/`, `.agent-src.uncompressed/`, and `agents/` must be in
|
|
72
|
+
English: headings, paragraphs, bullets, option labels, example
|
|
73
|
+
prompts, template placeholders, ASCII-art labels, table headers and
|
|
74
|
+
content. The agent translates to the user's language **at runtime**.
|
|
147
75
|
|
|
148
|
-
|
|
149
|
-
```
|
|
76
|
+
### Labeled-anchor exception
|
|
150
77
|
|
|
151
|
-
|
|
78
|
+
Quoting German examples inside English prose is **not allowed**.
|
|
79
|
+
Two correct ways:
|
|
152
80
|
|
|
153
|
-
1. **Translate to English
|
|
154
|
-
agent matches intent across languages regardless of the example.
|
|
155
|
-
`("you decide for this step")` works as well as the German.
|
|
81
|
+
1. **Translate to English** — trigger recognition is semantic.
|
|
156
82
|
2. **Use a labeled `DE: … · EN: …` anchor list** when the
|
|
157
|
-
multilingual nature of recognition is the point
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
- DE: "arbeite selbstständig" · "frag nicht jedes Mal" · "tue es einfach"
|
|
161
|
-
- EN: "work autonomously" · "don't ask" · "just do it"
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
The labeled-anchor block is the **only** allowed location for German
|
|
165
|
-
prose in an English `.md` file. Body text, example sentences, prompt
|
|
166
|
-
templates, agent-rendered strings, and failure modes must be English.
|
|
167
|
-
Reference established phrases abstractly later (e.g. "a standing
|
|
168
|
-
autonomy directive") and link back to the anchor block.
|
|
83
|
+
multilingual nature of recognition is the point. This is the
|
|
84
|
+
**only** allowed location for German prose in an English `.md`;
|
|
85
|
+
reference phrases abstractly elsewhere and link to the anchor.
|
|
169
86
|
|
|
170
87
|
### Detection heuristic
|
|
171
88
|
|
|
@@ -180,4 +97,4 @@ Before saving an `.md` file under `.augment/`, `.agent-src/`,
|
|
|
180
97
|
- Non-English quoted phrases in body text (paragraphs, list items,
|
|
181
98
|
table cells) when the surrounding prose is English.
|
|
182
99
|
|
|
183
|
-
Hit → translate
|
|
100
|
+
Hit → translate it or move it into a `DE: … · EN: …` block.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
alwaysApply:
|
|
4
|
-
description: "
|
|
2
|
+
type: "auto"
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, no opportunistic refactors, no reformatting of untouched code"
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -6,34 +6,38 @@ description: "When a CLI tool needed for the task is not installed — ask befor
|
|
|
6
6
|
|
|
7
7
|
# Missing Tool Handling
|
|
8
8
|
|
|
9
|
-
When a CLI tool is needed and **not installed**
|
|
10
|
-
`which X` empty), **STOP and ask**
|
|
9
|
+
When a CLI tool is needed to solve the task cleanly and is **not installed**
|
|
10
|
+
(`command not found`, `which X` empty, missing from `$PATH`), **STOP and ask**
|
|
11
|
+
before working around it or installing it.
|
|
11
12
|
|
|
12
13
|
## The rule
|
|
13
14
|
|
|
14
|
-
- **Never install silently.** Installing changes the user's
|
|
15
|
-
requires explicit permission (`scope-control`).
|
|
15
|
+
- **Never install silently.** Installing is an action that changes the user's
|
|
16
|
+
system — it requires explicit permission (see `scope-control`).
|
|
16
17
|
- **Never silently work around** a missing tool with a brittle substitute
|
|
17
|
-
(awk for YAML, `grep` for JSON, string splicing) when a proper tool
|
|
18
|
-
the standard answer. The workaround hides the
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
(awk-regex for YAML, `grep` for JSON, string splicing) when a proper tool
|
|
19
|
+
is the standard answer for the job. The workaround hides the real
|
|
20
|
+
dependency and makes the decision invisible to the user.
|
|
21
|
+
- **Ask with numbered options** (see `user-interaction`). State which tool,
|
|
22
|
+
why it's the best fit, the install command, and the workaround cost.
|
|
21
23
|
|
|
22
24
|
## When it applies
|
|
23
25
|
|
|
24
|
-
-
|
|
25
|
-
(yq, jq, rtk, gh, docker, mkcert, terraform, …).
|
|
26
|
-
- A skill or spike
|
|
27
|
-
|
|
26
|
+
- Any shell command fails with `command not found` for a tool the task
|
|
27
|
+
genuinely needs (yq, jq, rtk, gh, docker, mkcert, terraform, …).
|
|
28
|
+
- A skill or spike requires a tool that is the idiomatic answer but is
|
|
29
|
+
absent locally.
|
|
30
|
+
- You are about to substitute a verbose script for a single tool invocation
|
|
28
31
|
because the tool isn't there.
|
|
29
32
|
|
|
30
33
|
## When it does NOT apply
|
|
31
34
|
|
|
32
|
-
-
|
|
33
|
-
no `yq`
|
|
34
|
-
-
|
|
35
|
-
tool-allowlists first).
|
|
36
|
-
-
|
|
35
|
+
- The tool is a nice-to-have and a clean substitute already exists in the
|
|
36
|
+
repo (e.g. `jq` present → no need for `yq` just for JSON).
|
|
37
|
+
- The tool is explicitly forbidden by project policy (check
|
|
38
|
+
`scope-control` and tool-allowlists first).
|
|
39
|
+
- The missing artefact is a library dependency — those go through
|
|
40
|
+
`composer require`, `npm install`, `pip install` per the package-manager
|
|
37
41
|
rules, still with explicit permission.
|
|
38
42
|
|
|
39
43
|
## How to ask
|
|
@@ -49,14 +53,16 @@ When a CLI tool is needed and **not installed** (`command not found`,
|
|
|
49
53
|
> 4. Skip this path — I propose a different approach
|
|
50
54
|
```
|
|
51
55
|
|
|
52
|
-
After the user picks: if **install**, wait for confirmation
|
|
53
|
-
documented command only if
|
|
54
|
-
**workaround**, record the decision in
|
|
56
|
+
After the user picks: if **install**, wait for confirmation that it is
|
|
57
|
+
done (or run the documented install command only if the user explicitly
|
|
58
|
+
authorises it in this turn). If **workaround**, record the decision in
|
|
59
|
+
the artefact (comment or ADR) so the cost is visible.
|
|
55
60
|
|
|
56
61
|
## Capture the learning
|
|
57
62
|
|
|
58
|
-
If the same tool keeps missing across tasks, flag
|
|
59
|
-
setup docs or `.agent-settings.yml` prerequisites.
|
|
63
|
+
If the same tool keeps coming up as missing across multiple tasks, flag
|
|
64
|
+
it in the project's setup docs or `.agent-settings.yml` prerequisites.
|
|
65
|
+
Don't make every session re-discover the gap.
|
|
60
66
|
|
|
61
67
|
See also: `scope-control` · `ask-when-uncertain` · `user-interaction` ·
|
|
62
68
|
`tool-safety`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
description: "
|
|
4
|
-
alwaysApply:
|
|
2
|
+
type: "auto"
|
|
3
|
+
description: "Starting a new task, switching task type, or invoking a command — detect task complexity and recommend the optimal model (Opus/Sonnet/GPT) before any work"
|
|
4
|
+
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -30,7 +30,7 @@ If the detected model is `gemini`, immediately trigger the Gemini warning (see b
|
|
|
30
30
|
`/commit`, `/fix-pr-comments` are sonnet tasks — even if the previous task was opus-level.
|
|
31
31
|
This is the most commonly missed check. Do NOT skip it.
|
|
32
32
|
|
|
33
|
-
**Priority over commands rule**: This check runs BEFORE the `slash-
|
|
33
|
+
**Priority over commands rule**: This check runs BEFORE the `slash-command-routing-policy` rule. If a model switch
|
|
34
34
|
is recommended, show the suggestion first. Only after the user responds, execute the command.
|
|
35
35
|
|
|
36
36
|
**If ambiguous** (could be opus or sonnet): default to **sonnet** — cheaper, and the user can escalate.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "always"
|
|
3
|
+
description: "No cheap questions — never ask what context answers, never offer Iron-Law-violating options, never stage no-trade-off choices; mode-independent (off / auto / on)"
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
source: package
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# No Cheap Questions
|
|
9
|
+
|
|
10
|
+
A question is **cheap** when the answer follows from stated context,
|
|
11
|
+
an option breaches an Iron Law, choices differ only in sequencing /
|
|
12
|
+
format, or one option is obviously dominant. Cheap questions are
|
|
13
|
+
noise, regardless of `personal.autonomy`.
|
|
14
|
+
|
|
15
|
+
Mode-independent. [`autonomous-execution`](autonomous-execution.md)'s
|
|
16
|
+
"trivial" failure modes scope to `personal.autonomy: on` (or
|
|
17
|
+
`auto`-after-opt-in); this rule lifts the **no-trade-off** subset to
|
|
18
|
+
`off` and pre-opt-in `auto` too.
|
|
19
|
+
|
|
20
|
+
## The Iron Laws
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
NEVER ASK WHAT THE STATED CONTEXT ALREADY ANSWERS.
|
|
24
|
+
NEVER PRESENT AN OPTION THAT VIOLATES AN IRON LAW.
|
|
25
|
+
NEVER OFFER NUMBERED CHOICES WITHOUT A REAL TRADE-OFF.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
|
|
29
|
+
|
|
30
|
+
## What counts as cheap
|
|
31
|
+
|
|
32
|
+
- **Sequencing** — "Step 2 or 3 next?" when the roadmap orders them.
|
|
33
|
+
- **Format-only** — "Table or paragraph?"; no semantic trade-off.
|
|
34
|
+
- **Commit asks** — forbidden by [`commit-policy`](commit-policy.md).
|
|
35
|
+
- **CI / test asks** — [`verify-before-complete`](verify-before-complete.md) decides, not the user.
|
|
36
|
+
- **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see
|
|
37
|
+
[`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
|
|
38
|
+
- **Iron-Law option** — option breaches `commit-policy`,
|
|
39
|
+
`scope-control § git-ops`, or `non-destructive-by-default`.
|
|
40
|
+
- **Context-derived** — answer follows from prior turn / standing
|
|
41
|
+
instruction / roadmap; act, state the assumption inline.
|
|
42
|
+
- **Dominant option** — one choice obviously correct; alternatives
|
|
43
|
+
carry no upside.
|
|
44
|
+
- **Re-ask after decline** — forbidden per
|
|
45
|
+
[`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
46
|
+
|
|
47
|
+
Concrete examples per class:
|
|
48
|
+
[`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
|
|
49
|
+
|
|
50
|
+
## Pre-Send Self-Check — MANDATORY before every question
|
|
51
|
+
|
|
52
|
+
Run silently before any numbered-options block:
|
|
53
|
+
|
|
54
|
+
1. Answer already in stated context?
|
|
55
|
+
2. Any option violates [`commit-policy`](commit-policy.md), [`scope-control § git-ops`](scope-control.md), or [`non-destructive-by-default`](non-destructive-by-default.md)?
|
|
56
|
+
3. Options pure sequencing / format, no trade-off?
|
|
57
|
+
4. One option obviously dominant?
|
|
58
|
+
5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
|
|
59
|
+
6. User already declined? Re-ask forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
60
|
+
|
|
61
|
+
Any "yes" → **do not ask**. Pick the dominant path, state assumption
|
|
62
|
+
inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn
|
|
63
|
+
from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when
|
|
64
|
+
the question is genuine.
|
|
65
|
+
|
|
66
|
+
## When asking IS allowed
|
|
67
|
+
|
|
68
|
+
- Real architectural / scope decision with non-obvious trade-offs.
|
|
69
|
+
- Vague-request trigger per [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
|
|
70
|
+
- Security-sensitive path per [`security-sensitive-stop`](security-sensitive-stop.md).
|
|
71
|
+
- Hard Floor in [`non-destructive-by-default`](non-destructive-by-default.md) — confirmation mandatory.
|
|
72
|
+
- Two genuinely-equivalent paths; user preference is the tiebreaker.
|
|
73
|
+
|
|
74
|
+
In doubt → ask. This rule narrows asking, never widens silence.
|
|
75
|
+
|
|
76
|
+
## Interactions
|
|
77
|
+
|
|
78
|
+
- [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers + one-question-per-turn; narrows the cheap subset.
|
|
79
|
+
- [`autonomous-execution`](autonomous-execution.md) — mode-scoped triviality there; mode-independent floor here.
|
|
80
|
+
- [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) — Iron Laws this rule defends.
|
|
81
|
+
- [`user-interaction`](user-interaction.md) — numbered-options shape; this rule decides whether to send.
|
|
82
|
+
- [`direct-answers`](direct-answers.md) — brevity, no flattery.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
description: "Adding a link to a specific file in agents/roadmaps/ from any stable artifact (rule, skill, command, context, guideline) — roadmaps are transient; promote durable findings to agents/contexts/ instead"
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
source: package
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# No Roadmap References from Stable Artifacts
|
|
9
|
+
|
|
10
|
+
Roadmaps in `agents/roadmaps/` are **transient** — archived, skipped,
|
|
11
|
+
or deleted as work completes. Stable artifacts (rules, skills,
|
|
12
|
+
commands, contexts, guidelines, AGENTS.md, README) outlive them. A
|
|
13
|
+
stable artifact citing a specific roadmap file becomes a broken
|
|
14
|
+
reference the moment that roadmap is deleted.
|
|
15
|
+
|
|
16
|
+
## The Iron Law
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
NEVER LINK TO A SPECIFIC FILE IN agents/roadmaps/ FROM A STABLE ARTIFACT.
|
|
20
|
+
PROMOTE DURABLE CONCLUSIONS TO agents/contexts/ AND CITE THAT INSTEAD.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Stable artifact = anything that is **not** a roadmap, council
|
|
24
|
+
session, chat-history archive, commit message, or PR description.
|
|
25
|
+
|
|
26
|
+
## Forbidden patterns
|
|
27
|
+
|
|
28
|
+
These paths must not appear inside a stable artifact:
|
|
29
|
+
|
|
30
|
+
- `agents/roadmaps/<file>.md`, `agents/roadmaps/archive/<file>.md`,
|
|
31
|
+
`agents/roadmaps/skipped/<file>.md`
|
|
32
|
+
|
|
33
|
+
Stable artifact = any file under `.agent-src.uncompressed/{rules,
|
|
34
|
+
skills,commands,contexts,templates,personas}/`, `agents/contexts/`,
|
|
35
|
+
`docs/guidelines/`, `docs/contracts/`, `docs/architecture.md`,
|
|
36
|
+
`docs/customization.md`, `docs/getting-started.md`, `docs/catalog.md`,
|
|
37
|
+
`AGENTS.md`, `README.md`, `copilot-instructions.md`.
|
|
38
|
+
|
|
39
|
+
CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
|
|
40
|
+
— fails the build on any new violation).
|
|
41
|
+
|
|
42
|
+
## Allowed patterns
|
|
43
|
+
|
|
44
|
+
- `agents/roadmaps/` and its subdirectories as directory mentions
|
|
45
|
+
(talking about the layer, not a specific file)
|
|
46
|
+
- Roadmap → roadmap references (siblings within the transient layer)
|
|
47
|
+
- Council sessions, `.agent-chat-history`, commit messages, PR
|
|
48
|
+
descriptions — transient by construction, not part of the package
|
|
49
|
+
surface
|
|
50
|
+
|
|
51
|
+
## What to do instead
|
|
52
|
+
|
|
53
|
+
When a stable artifact needs to cite a roadmap finding:
|
|
54
|
+
|
|
55
|
+
1. Identify the durable conclusion — decision, contract, lesson,
|
|
56
|
+
mechanic.
|
|
57
|
+
2. Promote it to a context file under `agents/contexts/` (ADR,
|
|
58
|
+
mechanics doc, locked decision). The roadmap can then point at
|
|
59
|
+
the context, not the other way around.
|
|
60
|
+
3. Reference the context from the stable artifact.
|
|
61
|
+
|
|
62
|
+
Failure mode: *"I'll just link to the roadmap, it's evidence."* The
|
|
63
|
+
roadmap gets archived, then deleted, then the link rots. **Promote
|
|
64
|
+
first, link second.**
|
|
65
|
+
|
|
66
|
+
## See also
|
|
67
|
+
|
|
68
|
+
- [`docs-sync`](docs-sync.md) — cross-reference sync after rename / delete
|
|
69
|
+
- [`agent-docs`](agent-docs.md) — roadmap layer conventions
|
|
70
|
+
- [`roadmap-progress-sync`](roadmap-progress-sync.md) — sync dashboard on
|
|
71
|
+
roadmap touch
|
|
72
|
+
- [`augment-source-of-truth`](augment-source-of-truth.md) — edit
|
|
73
|
+
`.agent-src.uncompressed/`
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
-
description: "Agent is never destructive
|
|
3
|
+
description: "Agent is never destructive — Hard Floor always asks for prod-trunk merges, deploys, pushes, prod data/infra, bulk deletions, and bulk-deletion/infra commits; no autonomy or roadmap bypass"
|
|
4
4
|
alwaysApply: true
|
|
5
5
|
source: package
|
|
6
|
+
load_context:
|
|
7
|
+
- .agent-src.uncompressed/contexts/authority/destructive-mechanics.md
|
|
6
8
|
---
|
|
7
9
|
|
|
8
10
|
# Non-Destructive by Default
|
|
@@ -51,57 +53,21 @@ of truth makes it reversible. Lives in
|
|
|
51
53
|
## Bulk deletions during WIP — allowed if task-connected
|
|
52
54
|
|
|
53
55
|
Deletions inside an **active, user-stated task** are allowed in the
|
|
54
|
-
working tree, **even multiple files or multiple folders
|
|
55
|
-
moves to the **commit** (row 6 above), not the in-progress edit.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- Refactor naturally drops deprecated code the user already agreed is dead
|
|
61
|
-
- Cleanup of generated artifacts — `node_modules/`, `dist/`, `.next/`,
|
|
62
|
-
build caches, `vendor/` reinstall — never source code
|
|
63
|
-
- Single-file edits, single-class refactors, deleting **one** file the
|
|
64
|
-
user just named
|
|
65
|
-
- Renames and moves (technically delete + add)
|
|
66
|
-
|
|
67
|
-
**Floor fires on the edit when the deletion is:**
|
|
68
|
-
|
|
69
|
-
- Whimsical — "while I was in there", drive-by cleanup not part of the task
|
|
70
|
-
- Unnamed scope — "delete all the old tests" without a list, glob
|
|
71
|
-
across unrelated files, "clean up the legacy folder" with no inventory
|
|
72
|
-
- ≥5 unrelated files in one operation, outside the current task scope
|
|
73
|
-
- Content destruction — `DROP TABLE`, `TRUNCATE`, `git reset --hard`
|
|
74
|
-
past unpushed work, database wipes (destroys *content*, not just tree)
|
|
75
|
-
|
|
76
|
-
Ambiguous → floor wins. Ask.
|
|
77
|
-
|
|
78
|
-
**The commit of task-aligned bulk deletions still needs its own ask.**
|
|
79
|
-
A roadmap or task authorizes the *edit*; only the user-this-turn
|
|
80
|
-
authorizes the *commit* (row 6). Surface the diff (paths + counts), get
|
|
81
|
-
confirmation, then commit.
|
|
56
|
+
working tree, **even multiple files or multiple folders** — the Hard
|
|
57
|
+
Floor moves to the **commit** (row 6 above), not the in-progress edit.
|
|
58
|
+
Whimsical / drive-by / unnamed-scope deletions still trip the floor on
|
|
59
|
+
the edit. Full allowed/forbidden lists in
|
|
60
|
+
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
61
|
+
§ Bulk deletions during WIP.
|
|
82
62
|
|
|
83
63
|
## Failure modes
|
|
84
64
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
work; only the user-this-turn can authorize the floor crossing.
|
|
92
|
-
- Refusing to delete files the user already named because "the floor
|
|
93
|
-
fires on `rm`". It does not — task-aligned WIP deletions are
|
|
94
|
-
allowed, even multi-folder. The floor fires when the deletion is
|
|
95
|
-
whimsical, unscoped, or about to be committed.
|
|
96
|
-
- Committing a diff that removes a directory, deletes ≥5 unrelated
|
|
97
|
-
files, or touches Terraform / k8s manifests / Ansible without
|
|
98
|
-
surfacing the diff first — even when [`commit-policy`](commit-policy.md)
|
|
99
|
-
otherwise authorizes commits (e.g. `/commit-in-chunks`, roadmap
|
|
100
|
-
pre-scan, an explicit "commit this now"). Bulk-deletion / infra
|
|
101
|
-
commits need their own ask, every time.
|
|
102
|
-
- Reading a roadmap step listing files to delete as authorization to
|
|
103
|
-
*commit* the deletion. The step authorizes the *edit*; the commit
|
|
104
|
-
is row 6 of the Hard Floor and needs its own confirmation.
|
|
65
|
+
The full failure-mode catalog (autonomy-as-cover, roadmap-as-authorization,
|
|
66
|
+
refusing-named-deletions, commit-without-diff-surface,
|
|
67
|
+
roadmap-step-≠-commit-authorization) lives in
|
|
68
|
+
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
69
|
+
§ Failure modes. Reach for it when a Hard-Floor situation feels
|
|
70
|
+
ambiguous; the rule itself stays focused on the trigger table.
|
|
105
71
|
|
|
106
72
|
## Cloud Behavior
|
|
107
73
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
type: "
|
|
3
|
-
description: "First
|
|
4
|
-
alwaysApply:
|
|
2
|
+
type: "auto"
|
|
3
|
+
description: "First turn of a conversation on a project — check onboarding.onboarded in .agent-settings.yml; when false, prompt the user to run /onboard before executing any other request"
|
|
4
|
+
alwaysApply: false
|
|
5
5
|
source: package
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -73,7 +73,7 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
73
73
|
conversation, max.
|
|
74
74
|
- Replace normal settings edits. Mid-life changes are ad-hoc (edit the
|
|
75
75
|
file directly or ask the agent, which follows
|
|
76
|
-
[`layered-settings`](
|
|
76
|
+
[`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules));
|
|
77
77
|
this rule is a one-time gate.
|
|
78
78
|
- Run on every agent turn. First turn only.
|
|
79
79
|
|
|
@@ -89,6 +89,6 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
89
89
|
## See also
|
|
90
90
|
|
|
91
91
|
- [`/onboard`](../commands/onboard.md) — the command this gate invokes
|
|
92
|
-
- [`layered-settings`](
|
|
92
|
+
- [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
|
|
93
93
|
- [`agent-settings` template](../templates/agent-settings.md) — `onboarding.onboarded` reference
|
|
94
94
|
- [`rule-type-governance`](rule-type-governance.md) — why this is `always`
|