@event4u/agent-config 1.20.0 → 1.22.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.md +1 -1
- package/.agent-src/commands/bug-fix.md +2 -1
- package/.agent-src/commands/bug-investigate.md +3 -2
- package/.agent-src/commands/challenge-me/vision.md +348 -0
- package/.agent-src/commands/challenge-me/with-docs.md +333 -0
- package/.agent-src/commands/challenge-me.md +61 -0
- package/.agent-src/commands/chat-history/import.md +60 -64
- package/.agent-src/commands/compress.md +12 -0
- package/.agent-src/commands/context/create.md +2 -2
- package/.agent-src/commands/context.md +1 -1
- package/.agent-src/commands/copilot-agents.md +1 -1
- package/.agent-src/commands/council/default.md +69 -10
- package/.agent-src/commands/council.md +1 -1
- package/.agent-src/commands/create-pr.md +7 -3
- 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 +3 -3
- package/.agent-src/commands/feature.md +1 -1
- package/.agent-src/commands/fix/seeder.md +2 -2
- package/.agent-src/commands/fix.md +1 -1
- package/.agent-src/commands/grill-me.md +38 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/judge/steps.md +1 -1
- package/.agent-src/commands/judge.md +2 -2
- package/.agent-src/commands/memory.md +1 -1
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/module.md +1 -1
- package/.agent-src/commands/onboard.md +4 -4
- package/.agent-src/commands/optimize/augmentignore.md +1 -1
- package/.agent-src/commands/optimize-prompt.md +61 -0
- package/.agent-src/commands/optimize.md +1 -1
- package/.agent-src/commands/override.md +1 -1
- package/.agent-src/commands/review-changes.md +1 -1
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/roadmap/ai-council.md +183 -0
- package/.agent-src/commands/roadmap/create.md +6 -1
- package/.agent-src/commands/roadmap/process-full.md +58 -0
- package/.agent-src/commands/roadmap/process-phase.md +69 -0
- package/.agent-src/commands/roadmap/process-step.md +57 -0
- package/.agent-src/commands/roadmap.md +45 -17
- 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 +2 -2
- package/.agent-src/commands/tests.md +1 -1
- package/.agent-src/commands/threat-model.md +5 -4
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
- package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
- package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
- package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +54 -19
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
- package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +125 -0
- package/.agent-src/contexts/model-recommendations.md +2 -2
- package/.agent-src/contexts/override-system.md +1 -1
- package/.agent-src/contexts/skills-and-commands.md +1 -1
- package/.agent-src/personas/product-owner.md +2 -2
- package/.agent-src/personas/qa.md +1 -1
- package/.agent-src/rules/agent-authority.md +5 -6
- package/.agent-src/rules/agent-docs.md +11 -53
- package/.agent-src/rules/analysis-skill-routing.md +10 -40
- package/.agent-src/rules/architecture.md +6 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
- package/.agent-src/rules/artifact-engagement-recording.md +23 -59
- package/.agent-src/rules/ask-when-uncertain.md +24 -47
- package/.agent-src/rules/augment-portability.md +14 -62
- package/.agent-src/rules/augment-source-of-truth.md +10 -1
- package/.agent-src/rules/autonomous-execution.md +17 -98
- package/.agent-src/rules/capture-learnings.md +9 -80
- package/.agent-src/rules/cli-output-handling.md +12 -42
- package/.agent-src/rules/command-suggestion-policy.md +25 -73
- package/.agent-src/rules/commit-conventions.md +9 -58
- package/.agent-src/rules/commit-policy.md +16 -47
- package/.agent-src/rules/context-hygiene.md +5 -0
- package/.agent-src/rules/direct-answers.md +21 -50
- package/.agent-src/rules/docker-commands.md +11 -45
- package/.agent-src/rules/docs-sync.md +10 -56
- package/.agent-src/rules/downstream-changes.md +5 -0
- package/.agent-src/rules/e2e-testing.md +9 -44
- package/.agent-src/rules/guidelines.md +13 -75
- package/.agent-src/rules/improve-before-implement.md +11 -2
- package/.agent-src/rules/invite-challenge.md +71 -0
- package/.agent-src/rules/language-and-tone.md +41 -106
- package/.agent-src/rules/laravel-translations.md +11 -40
- package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
- package/.agent-src/rules/minimal-safe-diff.md +4 -0
- package/.agent-src/rules/missing-tool-handling.md +4 -0
- package/.agent-src/rules/model-recommendation.md +9 -61
- package/.agent-src/rules/no-attribution-footers.md +5 -0
- package/.agent-src/rules/no-cheap-questions.md +11 -27
- package/.agent-src/rules/no-council-references.md +76 -0
- package/.agent-src/rules/no-roadmap-references.md +7 -0
- package/.agent-src/rules/non-destructive-by-default.md +13 -43
- package/.agent-src/rules/onboarding-gate.md +9 -117
- package/.agent-src/rules/package-ci-checks.md +10 -37
- package/.agent-src/rules/php-coding.md +10 -55
- package/.agent-src/rules/preservation-guard.md +9 -0
- package/.agent-src/rules/review-routing-awareness.md +9 -97
- package/.agent-src/rules/reviewer-awareness.md +8 -83
- package/.agent-src/rules/roadmap-progress-sync.md +7 -170
- package/.agent-src/rules/role-mode-adherence.md +6 -2
- package/.agent-src/rules/rule-type-governance.md +8 -66
- package/.agent-src/rules/runtime-safety.md +5 -0
- package/.agent-src/rules/scope-control.md +17 -62
- package/.agent-src/rules/security-sensitive-stop.md +7 -1
- package/.agent-src/rules/size-enforcement.md +6 -1
- package/.agent-src/rules/skill-improvement-trigger.md +9 -49
- package/.agent-src/rules/skill-quality.md +7 -113
- package/.agent-src/rules/slash-command-routing-policy.md +11 -63
- package/.agent-src/rules/think-before-action.md +22 -87
- package/.agent-src/rules/token-efficiency.md +10 -74
- package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
- package/.agent-src/rules/tool-safety.md +4 -0
- package/.agent-src/rules/ui-audit-gate.md +25 -61
- package/.agent-src/rules/upstream-proposal.md +9 -67
- package/.agent-src/rules/user-interaction.md +22 -108
- package/.agent-src/rules/verify-before-complete.md +1 -1
- package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/.agent-src/skills/ai-council/SKILL.md +197 -8
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/.agent-src/skills/authz-review/SKILL.md +1 -1
- package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
- package/.agent-src/skills/bug-analyzer/SKILL.md +6 -5
- package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
- package/.agent-src/skills/code-review/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +11 -0
- package/.agent-src/skills/composer-packages/SKILL.md +2 -2
- package/.agent-src/skills/context-authoring/SKILL.md +11 -0
- package/.agent-src/skills/context-document/SKILL.md +1 -1
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
- package/.agent-src/skills/copilot-config/SKILL.md +1 -1
- package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
- package/.agent-src/skills/devcontainer/SKILL.md +2 -2
- package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
- package/.agent-src/skills/docker/SKILL.md +1 -1
- package/.agent-src/skills/dto-creator/SKILL.md +1 -1
- package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/.agent-src/skills/fe-design/SKILL.md +4 -4
- package/.agent-src/skills/feature-planning/SKILL.md +5 -5
- package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
- package/.agent-src/skills/laravel/SKILL.md +1 -1
- package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
- package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
- package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
- package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
- package/.agent-src/skills/migration-creator/SKILL.md +7 -7
- package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
- package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
- package/.agent-src/skills/pest-testing/SKILL.md +6 -6
- package/.agent-src/skills/php-service/SKILL.md +2 -2
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
- package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/roadmap-management/SKILL.md +7 -7
- package/.agent-src/skills/rule-writing/SKILL.md +33 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +14 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +22 -2
- package/.agent-src/skills/technical-specification/SKILL.md +58 -1
- package/.agent-src/skills/terraform/SKILL.md +2 -2
- package/.agent-src/skills/terragrunt/SKILL.md +8 -8
- package/.agent-src/skills/test-performance/SKILL.md +5 -5
- package/.agent-src/skills/threat-modeling/SKILL.md +3 -2
- package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/.agent-src/templates/AGENTS.md +1 -1
- package/.agent-src/templates/agent-settings.md +35 -19
- package/.agent-src/templates/command.md +17 -1
- package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +21 -0
- package/.agent-src/templates/copilot-review-instructions.md +76 -0
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/roadmaps.md +10 -2
- package/.agent-src/templates/rule.md +129 -0
- package/.agent-src/templates/skill.md +17 -0
- package/.claude-plugin/marketplace.json +12 -2
- package/AGENTS.md +32 -5
- package/CHANGELOG.md +107 -3
- package/README.md +22 -21
- package/config/agent-settings.template.yml +66 -10
- package/config/gitignore-block.txt +7 -0
- package/docs/architecture.md +86 -5
- package/docs/catalog.md +16 -6
- package/docs/contracts/agent-memory-contract.md +1 -1
- package/docs/contracts/command-clusters.md +45 -1
- package/docs/contracts/context-paths.md +2 -1
- package/docs/contracts/file-ownership-matrix.json +354 -500
- package/docs/contracts/iron-law-overrides.txt +25 -0
- package/docs/contracts/kernel-membership.md +273 -0
- package/docs/contracts/load-context-schema.md +26 -11
- package/docs/contracts/pilot/agent-authority.md +24 -0
- package/docs/contracts/pilot/direct-answers.md +70 -0
- package/docs/contracts/pilot/language-and-tone.md +63 -0
- package/docs/contracts/rule-classification.md +170 -0
- package/docs/contracts/rule-router.md +153 -0
- package/docs/customization.md +17 -6
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +126 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/naming.md +1 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
- package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
- package/docs/guidelines/augment-portability-patterns.md +68 -0
- package/docs/guidelines/php/php-coding-patterns.md +62 -0
- package/package.json +1 -1
- package/scripts/_p43_bodies.py +235 -0
- package/scripts/_p43_compress.py +118 -0
- package/scripts/_p4_migrate.py +199 -0
- package/scripts/_phase2_shim_helper.py +1 -1
- package/scripts/_pilot_council_question.py +57 -0
- package/scripts/_pilot_measure.py +53 -0
- package/scripts/ai_council/session.py +107 -5
- package/scripts/build_linear_digest.py +3 -5
- package/scripts/check_always_budget.py +39 -6
- package/scripts/check_compressed_paths.py +213 -0
- package/scripts/check_compression.py +15 -0
- package/scripts/check_context_paths.py +1 -0
- package/scripts/check_council_layout.py +105 -0
- package/scripts/check_council_references.py +145 -0
- package/scripts/check_portability.py +2 -0
- package/scripts/check_references.py +2 -0
- package/scripts/check_token_optimizer_freshness.py +131 -0
- package/scripts/compile_router.py +148 -0
- package/scripts/compress.py +219 -11
- package/scripts/council_cli.py +132 -11
- package/scripts/council_prune.py +81 -0
- package/scripts/count_token_optimizer_usage.sh +54 -0
- package/scripts/install.sh +44 -2
- package/scripts/iron_law_sha.py +98 -0
- package/scripts/lint_load_context.py +35 -5
- package/scripts/measure_rule_budget.py +314 -0
- package/scripts/migrate_command_suggestions.py +2 -2
- package/scripts/prototype_lint_contradictions.py +150 -0
- package/scripts/schemas/command.schema.json +5 -0
- package/scripts/schemas/rule.schema.json +60 -6
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +197 -7
- package/scripts/smoke_path_resolution.py +93 -0
- package/scripts/validate_frontmatter.py +41 -1
- package/.agent-src/commands/roadmap/execute.md +0 -109
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
- /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
- /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
|
@@ -2,122 +2,16 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "mechanical-already"
|
|
4
4
|
description: "Creating, editing, or reviewing skills — minimum quality standard, every skill must be executable, validated, and self-contained"
|
|
5
|
-
alwaysApply: false
|
|
6
5
|
source: package
|
|
7
|
-
|
|
8
|
-
- .agent-src.uncompressed/
|
|
6
|
+
triggers:
|
|
7
|
+
- path_prefix: ".agent-src.uncompressed/skills/"
|
|
8
|
+
routes_to:
|
|
9
|
+
- "guideline:agent-infra/skill-quality-checklist"
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Skill Quality
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
**Iron Law.** Every skill must be executable, validated, and self-contained — full checklist in the guideline.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
| # | Question | Section | Standard |
|
|
18
|
-
|---|---|---|---|
|
|
19
|
-
| 1 | When should I use this? | `When to use` | Concrete trigger, not generic |
|
|
20
|
-
| 2 | What exactly do I do? | `Procedure` | Executable steps with decisions |
|
|
21
|
-
| 3 | How do I verify it worked? | `Procedure` (validation step) | Concrete checks, not "verify it works" |
|
|
22
|
-
| 4 | What common failure must I avoid? | `Gotcha` + `Do NOT` | Real failure patterns, not platitudes |
|
|
23
|
-
|
|
24
|
-
## Required Sections
|
|
25
|
-
|
|
26
|
-
Every skill MUST have: `When to use`, `Procedure`, `Gotcha`, `Output format`, `Do NOT`.
|
|
27
|
-
|
|
28
|
-
## Frontmatter Contract
|
|
29
|
-
|
|
30
|
-
Every skill's YAML frontmatter MUST validate against `scripts/schemas/skill.schema.json`.
|
|
31
|
-
Violations are reported by `scripts/skill_linter.py` as `schema_<rule>` errors
|
|
32
|
-
and fail `python3 scripts/validate_frontmatter.py` and the full CI pipeline.
|
|
33
|
-
|
|
34
|
-
## Description Triggering
|
|
35
|
-
|
|
36
|
-
Claude routes skills by their frontmatter `description`. Pushy,
|
|
37
|
-
trigger-rich descriptions are required — polite or hedged ones cause
|
|
38
|
-
undertriggering. The full recipe (concrete verb phrase, ≥2 triggers,
|
|
39
|
-
`even if they don't explicitly ask for …` tail, ≤200 chars,
|
|
40
|
-
litmus test) lives in
|
|
41
|
-
[`contexts/communication/rules-auto/skill-quality-mechanics.md`](../contexts/communication/rules-auto/skill-quality-mechanics.md)
|
|
42
|
-
§ Description Triggering.
|
|
43
|
-
|
|
44
|
-
## Skill Independence
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
If a skill is not executable without opening a guideline, it is broken.
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
- Skills MAY reference guidelines for detailed conventions
|
|
51
|
-
- Skills MUST NOT outsource their core workflow to guidelines
|
|
52
|
-
- If removing guideline references makes the skill useless → the skill is too weak
|
|
53
|
-
|
|
54
|
-
**Litmus test:** Cover all guideline references in the Procedure. Is it still executable?
|
|
55
|
-
If not → the skill needs more own steps, decisions, and validation — not more guideline links.
|
|
56
|
-
|
|
57
|
-
## Merge & Compression Preservation
|
|
58
|
-
|
|
59
|
-
When merging or compressing skills, the result MUST preserve the
|
|
60
|
-
strongest validation, strongest examples, all anti-patterns, all
|
|
61
|
-
decision criteria, and trigger quality. Full preservation invariants
|
|
62
|
-
and "merge is invalid if …" / "compression may remove …" lists in
|
|
63
|
-
[`contexts/communication/rules-auto/skill-quality-mechanics.md`](../contexts/communication/rules-auto/skill-quality-mechanics.md)
|
|
64
|
-
§ Merge Preservation and § Compression Preservation.
|
|
65
|
-
|
|
66
|
-
## Refactor Safety
|
|
67
|
-
|
|
68
|
-
When refactoring or optimizing skills:
|
|
69
|
-
|
|
70
|
-
- NEVER weaken validation to pass linter
|
|
71
|
-
- NEVER remove anti-patterns to reduce size
|
|
72
|
-
- NEVER replace concrete checks with "verify it works"
|
|
73
|
-
- NEVER merge skills if the result is broader than either source
|
|
74
|
-
- ALWAYS run linter before and after — fail count must not increase
|
|
75
|
-
|
|
76
|
-
## Senior-Tier Required Structure
|
|
77
|
-
|
|
78
|
-
Skills with `tier: senior` in YAML frontmatter MUST carry four named
|
|
79
|
-
blocks beyond the standard required sections:
|
|
80
|
-
|
|
81
|
-
| # | Block | Heading / Location | Standard |
|
|
82
|
-
|---|---|---|---|
|
|
83
|
-
| 1 | Context-First lead | Frontmatter `description` | First sentence anchors the cognition cluster (domain + senior role); second sentence names the trigger. |
|
|
84
|
-
| 2 | Related Skills | `## Related Skills` | Two-list pattern — `**WHEN to use this**` (situations this skill resolves) + `**WHEN NOT to use this**` (route-elsewhere peers, named). |
|
|
85
|
-
| 3 | Proactive Triggers | `## When the agent should load this` | 3–5 concrete user-prompt patterns (paraphrases users actually type), not abstract categories. |
|
|
86
|
-
| 4 | Output Artifacts | `## Output` | 1–4 named artifacts with shape (file path, table, markdown structure) — orchestrator-citable identifier each. |
|
|
87
|
-
|
|
88
|
-
**Forward-only.** `scripts/skill_linter.py` enforces these blocks for
|
|
89
|
-
`tier: senior` skills only; mid-tier and untiered skills skip the
|
|
90
|
-
check. No retrofit pass on existing Wing-1 skills.
|
|
91
|
-
|
|
92
|
-
Subsection specs (≤ 6-line spec + 1 reference example each), good /
|
|
93
|
-
bad pattern pairs, and the WHEN-NOT routing peer rules live in
|
|
94
|
-
[`contexts/communication/rules-auto/skill-quality-mechanics.md`](../contexts/communication/rules-auto/skill-quality-mechanics.md)
|
|
95
|
-
§ Senior-tier patterns.
|
|
96
|
-
|
|
97
|
-
## Structural Malice Floor
|
|
98
|
-
|
|
99
|
-
`scripts/skill_linter.py` runs five regex patterns against every
|
|
100
|
-
skill / rule / command body — credential exfiltration, remote
|
|
101
|
-
execution, force-push to a protected ref, world-readable secret
|
|
102
|
-
files, and shell-injection in subprocess calls. A match emits
|
|
103
|
-
``Issue("error", "malice:<pattern>", "<line>:<matched>")`` and the
|
|
104
|
-
linter exits with code **3** (security-failure), distinct from
|
|
105
|
-
exit 2 (build-failure) so CI surfaces can split the two.
|
|
106
|
-
|
|
107
|
-
The check is **structural**, not semantic — it catches the shapes
|
|
108
|
-
the [`tool-safety`](tool-safety.md) rule denies in prose: hidden
|
|
109
|
-
credentials, arbitrary execution, write-without-approval. Fixtures
|
|
110
|
-
and the exit-code-3 contract live in
|
|
111
|
-
[`tests/test_skill_linter_malice.py`](../../tests/test_skill_linter_malice.py).
|
|
112
|
-
|
|
113
|
-
## Confidence Tagging
|
|
114
|
-
|
|
115
|
-
Senior-tier procedure steps MAY append `[CONFIDENCE: high|medium|low]`
|
|
116
|
-
at the end of multi-step chains where the agent's evidence varies
|
|
117
|
-
across steps. Optional but recommended when a step's output feeds a
|
|
118
|
-
downstream decision.
|
|
119
|
-
|
|
120
|
-
Text-tag form is deliberate. Emoji 🟢 / 🟡 / 🔴 is **not** allowed —
|
|
121
|
-
collides with [`direct-answers`](direct-answers.md) § Emoji scope
|
|
122
|
-
(functional markers only). Linter does not enforce the tag itself;
|
|
123
|
-
the rule documents the placement so authors converge on one form.
|
|
16
|
+
Body migrated to `guideline:agent-infra/skill-quality-checklist` (per P4 of `road-to-kernel-and-router.md`).
|
|
17
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -2,71 +2,19 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "1"
|
|
4
4
|
description: "When user types a slash command like /create-pr, /commit, or pastes command file content"
|
|
5
|
-
alwaysApply: false
|
|
6
5
|
source: package
|
|
7
|
-
|
|
8
|
-
-
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "/create-pr"
|
|
8
|
+
- keyword: "/commit"
|
|
9
|
+
- keyword: "/fix-ci"
|
|
10
|
+
- phrase: "slash command"
|
|
11
|
+
routes_to:
|
|
12
|
+
- "skill:command-routing"
|
|
9
13
|
---
|
|
10
14
|
|
|
11
|
-
#
|
|
15
|
+
# Slash Command Routing Policy
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
**execute it immediately**. No questions, no opinions, no summaries, no confirmations.
|
|
17
|
+
**Iron Law.** On a slash-command invocation or pasted command body, route to the matching command file; never improvise.
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
- Ask only when the command itself says "ask the user".
|
|
19
|
-
- If the user pastes the **content** of a command file, treat it as an invocation — not a question.
|
|
20
|
-
- **NEVER** respond with "looks good" or ask "shall I execute?" — just execute.
|
|
21
|
-
- **NEVER** respond with "this is the current version" or "do you want to change something?" — just execute.
|
|
22
|
-
- **NEVER** treat pasted command content as a review request — it's ALWAYS an invocation.
|
|
23
|
-
- The only exception: the user's message contains an explicit instruction about the command
|
|
24
|
-
(e.g., "update this command" or "review this command"). In that case, follow the instruction instead.
|
|
25
|
-
|
|
26
|
-
## Open files are irrelevant for command detection
|
|
27
|
-
|
|
28
|
-
The editor may report that the user has a file open (e.g., "The user has file `compress.md` open").
|
|
29
|
-
This is **irrelevant** for command detection.
|
|
30
|
-
|
|
31
|
-
- If the user types `/compress`, they want to **run** the compress command — even if `compress.md` is open in the editor.
|
|
32
|
-
- If command file content appears in the context alongside an open file, the **command invocation takes priority**.
|
|
33
|
-
- Do NOT confuse "file is open" with "user wants to discuss this file".
|
|
34
|
-
- The user's typed message determines intent — not editor state.
|
|
35
|
-
|
|
36
|
-
## Read the whole prompt — command is the operator, prose is the target
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
/<command> IS THE OPERATOR.
|
|
40
|
-
THE REST OF THE USER MESSAGE NAMES THE TARGET.
|
|
41
|
-
NEVER ASSUME THE COMMAND NAME IS THE TARGET.
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Slash token = **what to do**; surrounding prose = **what to do it on**.
|
|
45
|
-
|
|
46
|
-
- `/council and analyse chat-history` → target is `chat-history`,
|
|
47
|
-
not `council`. Council is the *tool*, prose names the *artefact*.
|
|
48
|
-
- `/work the memory bug from PROJ-123` → target is "the memory bug
|
|
49
|
-
from PROJ-123".
|
|
50
|
-
- `/fix ci and then open a PR` → target is "CI failure"; trailing
|
|
51
|
-
"open a PR" is a follow-up needing separate permission (per
|
|
52
|
-
`scope-control`).
|
|
53
|
-
|
|
54
|
-
### Pre-flight before expensive operations
|
|
55
|
-
|
|
56
|
-
Before any operation costing real time or money — external API call,
|
|
57
|
-
large codebase analysis, multi-file refactor, council run, generated
|
|
58
|
-
test suite — run silently:
|
|
59
|
-
|
|
60
|
-
1. Re-read the **whole** user message, not just slash + first token.
|
|
61
|
-
2. Identify the target the prose actually names.
|
|
62
|
-
3. Target unambiguous → execute, no question.
|
|
63
|
-
4. Target **genuinely** ambiguous after re-reading (prose names *two*
|
|
64
|
-
artefacts, can't tell which is the operand) → ask ONE
|
|
65
|
-
disambiguating numbered-options question per
|
|
66
|
-
[`ask-when-uncertain`](ask-when-uncertain.md), then proceed.
|
|
67
|
-
|
|
68
|
-
**Not** a license to re-introduce cheap questions (`no-cheap-questions`
|
|
69
|
-
still binds). Threshold: *"would this guess waste the user's tokens,
|
|
70
|
-
money, or trust?"* — not *"I'd feel safer asking"*. Single failure
|
|
71
|
-
mode to avoid: spending API spend on the wrong artefact because the
|
|
72
|
-
agent fixated on the command name.
|
|
19
|
+
Body migrated to `skill:command-routing` (per P4 of `road-to-kernel-and-router.md`).
|
|
20
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -4,100 +4,35 @@ tier: "2b"
|
|
|
4
4
|
description: "Before coding, modifying, or debugging — analyze first, verify with real tools, never guess or trial-and-error"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
|
+
load_context:
|
|
8
|
+
- ../contexts/communication/rules-auto/think-before-action-mechanics.md
|
|
9
|
+
triggers:
|
|
10
|
+
- intent: "before coding"
|
|
11
|
+
- intent: "before debugging"
|
|
12
|
+
- intent: "before modifying"
|
|
7
13
|
---
|
|
8
14
|
|
|
9
15
|
# think-before-action
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
- Never guess behavior — verify using code, data, or tools
|
|
13
|
-
- Prefer targeted inspection over brute-force trial-and-error
|
|
14
|
-
- Use efficient tooling (e.g. jq, debugger, logs) instead of loading full data
|
|
15
|
-
- Always verify results after changes (API calls, UI tests, etc.)
|
|
16
|
-
- When behavior can be defined, prefer test-first or test-driven work
|
|
17
|
-
- If requirements are unclear, ask a precise clarification question instead of making hidden assumptions
|
|
18
|
-
- Refactors must preserve behavior, validation, examples, and anti-failure guidance unless there is an explicit reason to change them
|
|
19
|
-
- Do NOT modify code you do not fully understand — read it first, trace the flow, then change it
|
|
20
|
-
- When multiple valid frameworks/patterns already exist in the codebase (e.g. Tailwind + Flux, multiple form libraries, competing state stores), do NOT pick one silently — ask which to use. See [`no blind implementation`](../../docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md#2-no-blind-implementation)
|
|
17
|
+
## The Iron Law
|
|
21
18
|
|
|
22
|
-
|
|
19
|
+
```
|
|
20
|
+
ANALYZE BEFORE CODING. VERIFY WITH REAL TOOLS. NEVER GUESS.
|
|
21
|
+
NO BLIND TRIAL-AND-ERROR. MAX 2 RETRIES PER APPROACH.
|
|
22
|
+
```
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
- Always analyze before coding or modifying anything.
|
|
25
|
+
- Never guess behavior — verify using code, data, or tools.
|
|
26
|
+
- Prefer targeted inspection (jq, debugger, logs) over brute-force.
|
|
27
|
+
- Always verify results after changes (API, UI, tests).
|
|
28
|
+
- When behavior can be defined → prefer test-first / TDD.
|
|
29
|
+
- Unclear requirements → precise clarification question, not hidden assumptions.
|
|
30
|
+
- Refactors must preserve behavior, validation, examples, and anti-failure guidance unless explicitly changed.
|
|
31
|
+
- Do NOT modify code you do not fully understand — read it, trace the flow, then change it.
|
|
32
|
+
- Multiple valid frameworks/patterns coexist (Tailwind + Flux, multiple form libs, competing state stores) → do NOT pick one silently — ask. See [`no blind implementation`](../docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md#2-no-blind-implementation).
|
|
25
33
|
|
|
26
|
-
|
|
27
|
-
2. **Analyze** — Read affected code, trace data flow, compare with requirements and existing patterns.
|
|
28
|
-
3. **Plan** — Decide what to change, what NOT to change, and how to verify success.
|
|
29
|
-
4. **Implement** — Make focused changes. Follow existing patterns. No unrelated rewrites.
|
|
30
|
-
5. **Verify** — Run tests, hit the endpoint, check the UI. Real execution, not "should work".
|
|
34
|
+
## Mechanics — workflow, minimum read set, verify-with-real-tools, no blind retries
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## Minimum read set — read before you write
|
|
35
|
-
|
|
36
|
-
Before editing code, read the minimum set that defines its behavior:
|
|
37
|
-
|
|
38
|
-
1. **Symbol under edit** — full method/function body, not just the planned line.
|
|
39
|
-
2. **Direct callers** — one level up (`grep -rn "<symbol>"` + open the matches).
|
|
40
|
-
3. **Tests** — if a test file exists, it encodes the contract.
|
|
41
|
-
4. **One layer of related abstractions** — interface, parent class, or trait (one hop, not the full hierarchy).
|
|
42
|
-
5. **Data changes:** the migration that created the column + any seeder/factory that references it.
|
|
43
|
-
|
|
44
|
-
Stop expanding once you can explain, in your own words, what the symbol does, who calls
|
|
45
|
-
it, and what breaks if you change its behavior. If you cannot → read more. Never write
|
|
46
|
-
code based on guessed behavior.
|
|
47
|
-
|
|
48
|
-
### Consult memory before editing
|
|
49
|
-
|
|
50
|
-
Prior decisions and invariants live in the memory layer. Via
|
|
51
|
-
[`memory-access`](../../docs/guidelines/agent-infra/memory-access.md), call
|
|
52
|
-
`retrieve(types=["architecture-decisions", "domain-invariants"], keys=<touched paths>, limit=3)`.
|
|
53
|
-
A matching `architecture-decision` explains *why* the current shape
|
|
54
|
-
exists; a matching `domain-invariant` is a hard constraint you cannot
|
|
55
|
-
violate. Cite the `id` if a match influences the plan.
|
|
56
|
-
|
|
57
|
-
## Verify with real tools
|
|
58
|
-
|
|
59
|
-
Always verify changes with actual execution — not by reading code and assuming it works.
|
|
60
|
-
|
|
61
|
-
| What changed | How to verify |
|
|
62
|
-
|---|---|
|
|
63
|
-
| **Backend/API** | `curl`, Postman (or Postman MCP if available), test endpoint |
|
|
64
|
-
| **Frontend/UI** | Playwright MCP or browser — check rendered state, interactions |
|
|
65
|
-
| **Logic/flow** | Xdebug (or Xdebug MCP if available) — trace execution, inspect variables |
|
|
66
|
-
| **CLI/Jobs** | Run the command, check side effects, verify exit code |
|
|
67
|
-
| **Database** | Query the result, check migrations ran correctly |
|
|
68
|
-
|
|
69
|
-
If a debugging/testing tool is available as MCP server — prefer it over manual alternatives.
|
|
70
|
-
|
|
71
|
-
If verification is not possible (no endpoint, no UI, no test): explicitly state what is missing
|
|
72
|
-
and explain how the change should be tested.
|
|
73
|
-
|
|
74
|
-
## Reduce output — targeted tools over full dumps
|
|
75
|
-
|
|
76
|
-
Never load full datasets into context. Extract what you need:
|
|
77
|
-
|
|
78
|
-
- `jq` for JSON: `curl -s /api/users | jq '.[0] | {id, email}'` — not the full response
|
|
79
|
-
- `rg` / `grep` for text: search specific patterns, not full files
|
|
80
|
-
- `head`, `tail`, `cut`, `sort`, `uniq` for narrowing results
|
|
81
|
-
- `--filter`, `--json`, `--format` flags on CLI tools — use them
|
|
82
|
-
- Laravel: `route:list --json | jq` over raw `route:list` dump
|
|
83
|
-
- Logs: filter by request ID, timestamp, or error type — not full log files
|
|
84
|
-
|
|
85
|
-
## No blind retries
|
|
86
|
-
|
|
87
|
-
- If something fails: **read the error**, analyze the cause, then fix it
|
|
88
|
-
- Do NOT retry the same approach hoping for a different result
|
|
89
|
-
- Do NOT loop through trial-and-error when one targeted inspection would reveal the cause
|
|
90
|
-
- Max 2 retries for the same approach — then stop and rethink
|
|
91
|
-
|
|
92
|
-
## Open files are context, not intent
|
|
93
|
-
|
|
94
|
-
The editor may report that the user has a file open. This is **background context only** —
|
|
95
|
-
it does NOT mean the user's message is about that file.
|
|
96
|
-
|
|
97
|
-
- **The user's message determines intent** — not which file is open.
|
|
98
|
-
- A user can have `README.md` open and type `/compress` — the intent is to compress, not to discuss the README.
|
|
99
|
-
- A user can have `UserController.php` open and ask "how do tests work?" — the intent is testing, not the controller.
|
|
100
|
-
- Only treat the open file as relevant when the user's message explicitly references it
|
|
101
|
-
(e.g., "fix this file", "what does this do?", "update the open file").
|
|
36
|
+
The five-step Understand → Analyze → Plan → Implement → Verify workflow, the minimum read set (symbol, callers, tests, abstractions, data), the memory-consult step, the verification matrix, the output-reduction patterns, the no-blind-retries protocol, and the "open files are context, not intent" clause all live in [`contexts/communication/rules-auto/think-before-action-mechanics.md`](../contexts/communication/rules-auto/think-before-action-mechanics.md). The rule above is the obligation surface; the mechanics file is the lookup material.
|
|
102
37
|
|
|
103
38
|
If analysis is skipped → results are unreliable.
|
|
@@ -4,6 +4,12 @@ tier: "2a"
|
|
|
4
4
|
description: "When running CLI tools, fetching logs, or producing replies — redirect verbose output, minimize tool calls, keep replies concise"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
|
+
load_context:
|
|
8
|
+
- ../contexts/communication/rules-auto/token-efficiency-mechanics.md
|
|
9
|
+
triggers:
|
|
10
|
+
- intent: "verbose CLI output"
|
|
11
|
+
- intent: "fetching logs"
|
|
12
|
+
- keyword: "minimize tool calls"
|
|
7
13
|
---
|
|
8
14
|
|
|
9
15
|
# Token Efficiency
|
|
@@ -19,82 +25,12 @@ NEVER call the same tool more than 2 times in a row with similar parameters.
|
|
|
19
25
|
If you catch yourself repeating a tool call — STOP, rethink, try a different approach, or ask the user.
|
|
20
26
|
```
|
|
21
27
|
|
|
22
|
-
### Anti-loop: Extended Reasoning
|
|
23
|
-
|
|
24
|
-
Do NOT use extended reasoning / chain-of-thought tools for simple tasks like viewing files,
|
|
25
|
-
running commands, or making straightforward edits. They are ONLY for genuinely complex
|
|
26
|
-
multi-step reasoning. If you find yourself calling such tools more than once per task —
|
|
27
|
-
you are looping. Stop immediately and act directly instead.
|
|
28
|
-
|
|
29
|
-
### Anti-loop: "CRITICAL INSTRUCTION" and self-prompting
|
|
30
|
-
|
|
31
|
-
If you find yourself generating text that starts with "CRITICAL INSTRUCTION", "I need to",
|
|
32
|
-
"Let me think", "Related tools:", or similar self-directed reasoning inside a tool call
|
|
33
|
-
or as a preamble before acting — **you are in a loop**. This happens after connection errors
|
|
34
|
-
or when the user says something like "continue" / "mach weiter".
|
|
35
|
-
|
|
36
|
-
**Immediate action:**
|
|
37
|
-
|
|
38
|
-
1. STOP generating self-instructions.
|
|
39
|
-
2. Read the last user message — what did they actually ask?
|
|
40
|
-
3. Do that ONE thing directly. No planning monologue, no tool selection reasoning.
|
|
41
|
-
4. If you don't know what the user wanted, ask: "Where were we?"
|
|
42
|
-
|
|
43
28
|
## Fresh Output Over Memory
|
|
44
29
|
|
|
45
|
-
|
|
46
|
-
use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in
|
|
47
|
-
the conversation. Context decay causes silent mismatches — fresh output is the only source of truth.
|
|
48
|
-
|
|
49
|
-
## Conversation Efficiency
|
|
50
|
-
|
|
51
|
-
### Act, skip narration
|
|
52
|
-
|
|
53
|
-
- **Skip repeating the user's request.** They know what they asked.
|
|
54
|
-
- **Just do it** — skip announcing what you're about to do.
|
|
55
|
-
- **Skip explaining obvious tool calls.** Reading a file needs no justification.
|
|
56
|
-
- **Report only outcomes** — skip intermediate step summaries unless the user needs them.
|
|
57
|
-
|
|
58
|
-
**This rule NEVER overrides user-interaction or command rules.**
|
|
59
|
-
Token efficiency means fewer *unnecessary* words — NOT skipping required questions,
|
|
60
|
-
numbered options, or command steps. When a rule or command says "ask the user", you ask.
|
|
61
|
-
|
|
62
|
-
### Stop early — max 2 retries
|
|
63
|
-
|
|
64
|
-
- **Command fails twice with same error** → stop, rethink. Try a different approach.
|
|
65
|
-
- **grep/search returns nothing after 2 attempts** → switch approach or ask the user.
|
|
66
|
-
- **Max 3 diagnostic commands** per error. Read the error, think, act.
|
|
67
|
-
- **One hypothesis at a time.** Pick the most likely, try it. If it fails, ask.
|
|
68
|
-
|
|
69
|
-
### Keep intermediate output minimal
|
|
70
|
-
|
|
71
|
-
Read `personal.minimal_output` (default: `true`) and `personal.play_by_play`
|
|
72
|
-
(default: `false`) from `.agent-settings.yml`.
|
|
73
|
-
|
|
74
|
-
When `personal.minimal_output: true`:
|
|
75
|
-
- Multi-step work: short bullet points only, no paragraphs.
|
|
76
|
-
- No thinking out loud — user doesn't need your reasoning.
|
|
77
|
-
- When `personal.play_by_play: false`: silently investigate, report conclusion only.
|
|
78
|
-
- When `personal.play_by_play: true`: briefly share intermediate findings.
|
|
79
|
-
- At the end: concise summary — what changed, what user needs to know.
|
|
80
|
-
|
|
81
|
-
### Don't re-read what you already know
|
|
82
|
-
|
|
83
|
-
- Edited a file → edit tool showed result. Don't re-read.
|
|
84
|
-
- Ran a command → you have output. Don't re-run to "verify".
|
|
85
|
-
- File in context from recent messages → don't reload.
|
|
86
|
-
|
|
87
|
-
### Minimize tool calls
|
|
88
|
-
|
|
89
|
-
- Parallel reads — don't read 5 files sequentially.
|
|
90
|
-
- Regex search over full file reads. View specific line ranges.
|
|
91
|
-
- One codebase search call with all symbols — not 5 separate.
|
|
92
|
-
- Short question → short answer. Summary tables only for 3+ items.
|
|
30
|
+
When a tool or command returns a value (branch name, file path, PR number), use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in the conversation. Context decay → silent mismatches — fresh output is the only source of truth.
|
|
93
31
|
|
|
94
|
-
|
|
32
|
+
## Mechanics — anti-loop patterns, conversation efficiency, exceptions
|
|
95
33
|
|
|
96
|
-
-
|
|
97
|
-
- Debugging: OK to read more context around one error.
|
|
98
|
-
- User explicitly asks for full output: show it.
|
|
34
|
+
The anti-loop patterns (extended-reasoning loops, "CRITICAL INSTRUCTION" self-prompting), the act-skip-narration / stop-early / keep-output-minimal / don't-re-read / minimize-tool-calls clauses, and the small-output / debugging / explicit-full-output exceptions all live in [`contexts/communication/rules-auto/token-efficiency-mechanics.md`](../contexts/communication/rules-auto/token-efficiency-mechanics.md). The rule above is the obligation surface; the mechanics file is the lookup material.
|
|
99
35
|
|
|
100
|
-
|
|
36
|
+
This rule NEVER overrides `user-interaction` or command rules. Token efficiency means fewer *unnecessary* words — NOT skipping required questions, numbered options, or command steps.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Editing a token-optimizer-cited asset (cli-output-handling, rtk-output-filtering, token-efficiency, agent-handoff, direct-answers, markitdown) — keep the catalog row in sync in the same commit."
|
|
5
|
+
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "cli-output-handling"
|
|
8
|
+
- keyword: "rtk-output-filtering"
|
|
9
|
+
- keyword: "token-efficiency"
|
|
10
|
+
- keyword: "agent-handoff"
|
|
11
|
+
- keyword: "markitdown"
|
|
12
|
+
- keyword: "token-optimizer"
|
|
13
|
+
routes_to:
|
|
14
|
+
- "skill:token-optimizer"
|
|
15
|
+
validator_ignore:
|
|
16
|
+
- type: "substring"
|
|
17
|
+
pattern: ".agent-src.uncompressed/"
|
|
18
|
+
reason: "Rule lists the authoring-tree paths that must stay in sync with the catalog."
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Token Optimizer Maintenance
|
|
22
|
+
|
|
23
|
+
## Iron Law
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
EDIT A CITED ASSET → UPDATE THE TOKEN-OPTIMIZER ROW IN THE SAME COMMIT.
|
|
27
|
+
THE CI LINK VALIDATOR IS A BACKSTOP, NOT A SUBSTITUTE FOR CARE.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## When this rule fires
|
|
31
|
+
|
|
32
|
+
About to edit any of:
|
|
33
|
+
|
|
34
|
+
- `.agent-src.uncompressed/rules/cli-output-handling.md`
|
|
35
|
+
- `.agent-src.uncompressed/rules/token-efficiency.md`
|
|
36
|
+
- `.agent-src.uncompressed/rules/direct-answers.md`
|
|
37
|
+
- `.agent-src.uncompressed/skills/rtk-output-filtering/SKILL.md`
|
|
38
|
+
- `.claude/skills/agent-handoff/SKILL.md`
|
|
39
|
+
- Any other asset cited by
|
|
40
|
+
[`token-optimizer`](../skills/token-optimizer/SKILL.md) (catalog
|
|
41
|
+
table is the canonical list).
|
|
42
|
+
|
|
43
|
+
## Obligation
|
|
44
|
+
|
|
45
|
+
If the edit touches:
|
|
46
|
+
|
|
47
|
+
- **Trigger keywords** the decision tree associates with the asset, OR
|
|
48
|
+
- **What the asset does** (the one-line "what it does" summary), OR
|
|
49
|
+
- **The asset's path / location** (rename, move, deletion)
|
|
50
|
+
|
|
51
|
+
then in the same commit, update the matching row in
|
|
52
|
+
`.agent-src.uncompressed/skills/token-optimizer/SKILL.md` —
|
|
53
|
+
the catalog table AND the relevant tree leaf.
|
|
54
|
+
|
|
55
|
+
## Out of scope
|
|
56
|
+
|
|
57
|
+
- Whitespace, comment, formatting, or grammar edits in the cited
|
|
58
|
+
asset → no token-optimizer update required.
|
|
59
|
+
- Internal restructuring that leaves trigger + summary + path
|
|
60
|
+
unchanged → no update required.
|
|
61
|
+
|
|
62
|
+
## Backstop
|
|
63
|
+
|
|
64
|
+
The CI pipeline runs `scripts/check_token_optimizer_freshness.py`
|
|
65
|
+
after the reference checker. The validator parses the catalog,
|
|
66
|
+
verifies every cited path exists, and `grep`s the trigger keywords
|
|
67
|
+
against each target. A failure is a **drift signal**, not a
|
|
68
|
+
substitute for keeping the catalog correct manually.
|
|
@@ -3,6 +3,10 @@ type: auto
|
|
|
3
3
|
tier: "2b"
|
|
4
4
|
source: package
|
|
5
5
|
description: "When a skill uses external tools — enforce allowlist, deny-by-default, and no hidden credential patterns"
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "allowed_tools"
|
|
8
|
+
- keyword: "tool registry"
|
|
9
|
+
- intent: "external API"
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# Tool Safety
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2b"
|
|
4
|
-
description: "Writing or editing UI — components, screens, partials, layouts, design tokens — require existing-ui-audit findings in state.ui_audit before non-trivial UI change; gate, not suggestion"
|
|
5
4
|
alwaysApply: false
|
|
5
|
+
description: "Writing or editing UI — components, screens, partials, layouts, design tokens — require existing-ui-audit findings in state.ui_audit before non-trivial UI change; gate, not suggestion"
|
|
6
6
|
source: package
|
|
7
|
-
|
|
8
|
-
-
|
|
7
|
+
triggers:
|
|
8
|
+
- path_prefix: "resources/views/"
|
|
9
|
+
- path_prefix: "resources/js/"
|
|
10
|
+
- keyword: "component"
|
|
11
|
+
- keyword: "design token"
|
|
12
|
+
routes_to:
|
|
13
|
+
- "skill:existing-ui-audit"
|
|
9
14
|
---
|
|
10
15
|
|
|
11
|
-
# UI
|
|
16
|
+
# UI Audit Gate
|
|
12
17
|
|
|
13
18
|
Defense-in-depth twin of the dispatcher gate in
|
|
14
19
|
[`directives/ui/audit.py`](../templates/scripts/work_engine/directives/ui/audit.py).
|
|
15
|
-
The dispatcher refuses to advance past `refine` without
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
The dispatcher refuses to advance past `refine` without `state.ui_audit`;
|
|
21
|
+
this rule refuses the write even when the agent acts outside the dispatcher.
|
|
22
|
+
|
|
23
|
+
Body migrated to [`skill:existing-ui-audit`](../skills/existing-ui-audit/SKILL.md)
|
|
24
|
+
(per P4 of `road-to-kernel-and-router.md`). Trigger-set above activates this
|
|
25
|
+
routing under the `balanced` and `full` profiles.
|
|
20
26
|
|
|
21
27
|
## The Iron Law
|
|
22
28
|
|
|
@@ -25,45 +31,6 @@ NO NEW COMPONENT, SCREEN, PARTIAL, OR PAGE WITHOUT AUDIT FINDINGS.
|
|
|
25
31
|
EXISTING-UI-AUDIT RUNS FIRST. ALWAYS.
|
|
26
32
|
```
|
|
27
33
|
|
|
28
|
-
Skipping the audit is the single biggest source of duplicated
|
|
29
|
-
components and drift from project tokens. The audit is cheap (60 s
|
|
30
|
-
on a primed cache); the cost of skipping is a refactor.
|
|
31
|
-
|
|
32
|
-
## When this rule activates
|
|
33
|
-
|
|
34
|
-
Before writing or editing any non-trivial UI surface:
|
|
35
|
-
|
|
36
|
-
- New page / screen / route component
|
|
37
|
-
- New Livewire / Flux / Blade / React / Vue / Svelte component or partial
|
|
38
|
-
- Major edit to an existing screen (new section, new state, new layout band)
|
|
39
|
-
|
|
40
|
-
Recognise the trigger from wording even when nobody says "audit":
|
|
41
|
-
"add a dashboard tile", "build a settings panel", "neue Komponente
|
|
42
|
-
für …", "render the orders table", "create the empty state for …".
|
|
43
|
-
|
|
44
|
-
## Allow-list — when to skip
|
|
45
|
-
|
|
46
|
-
Skip only when **all** hold:
|
|
47
|
-
|
|
48
|
-
- `directive_set == "ui-trivial"` (set by Phase 1's intent classifier).
|
|
49
|
-
- The change is provably bounded: ≤ 1 file, ≤ 5 changed lines, no
|
|
50
|
-
new component, no new state, no new dependency.
|
|
51
|
-
|
|
52
|
-
Any precondition fails at edit time → stop, reclassify as
|
|
53
|
-
`ui-improve`, re-enter the gate. Backend-only edits and
|
|
54
|
-
documentation work were never in scope for this rule.
|
|
55
|
-
|
|
56
|
-
## What to do when the gate fires
|
|
57
|
-
|
|
58
|
-
1. Stop. Do not open an editor on a component file.
|
|
59
|
-
2. Run [`existing-ui-audit`](../skills/existing-ui-audit/SKILL.md);
|
|
60
|
-
it writes the result to `state.ui_audit`.
|
|
61
|
-
3. On rebound, the dispatcher enters `design` with the audit as
|
|
62
|
-
defaults in the design-brief halt.
|
|
63
|
-
4. Greenfield → present the numbered scaffold / bare /
|
|
64
|
-
external-reference halt **before** code; record the pick in
|
|
65
|
-
`state.ui_audit.greenfield_decision`.
|
|
66
|
-
|
|
67
34
|
## What "audit findings" means
|
|
68
35
|
|
|
69
36
|
`state.ui_audit` is a non-empty dict carrying at least one of:
|
|
@@ -71,23 +38,20 @@ documentation work were never in scope for this rule.
|
|
|
71
38
|
- `components_found` — inventory entries from `existing-ui-audit`.
|
|
72
39
|
- `greenfield: true` plus `greenfield_decision` ∈
|
|
73
40
|
`{scaffold, bare, external_reference}`.
|
|
74
|
-
- Legacy `components` alias — back-compat
|
|
41
|
+
- Legacy `components` alias — back-compat.
|
|
42
|
+
|
|
43
|
+
`null` or `{}` is **not** findings; empty dict is rejected on purpose.
|
|
75
44
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
45
|
+
## Allow-list — `ui-trivial`
|
|
46
|
+
|
|
47
|
+
Skip only when **all** hold:
|
|
48
|
+
|
|
49
|
+
- `directive_set == "ui-trivial"`.
|
|
50
|
+
- ≤ 1 file, ≤ 5 changed lines, no new component, no new state.
|
|
79
51
|
|
|
80
52
|
## Failure modes
|
|
81
53
|
|
|
82
54
|
- Writing the component first and "thinking about reuse later".
|
|
83
|
-
- Citing a similar-looking component from memory without verifying.
|
|
55
|
+
- Citing a similar-looking component from memory without verifying via the audit.
|
|
84
56
|
- Treating `state.ui_audit = {}` as "audit ran, found nothing".
|
|
85
57
|
- Bypassing the gate for "just one tile".
|
|
86
|
-
|
|
87
|
-
## Lookup material — see mechanics
|
|
88
|
-
|
|
89
|
-
The full failure-mode catalog, cross-rule interactions, and the
|
|
90
|
-
cloud-surface adaptation live in
|
|
91
|
-
[`contexts/communication/rules-auto/ui-audit-gate-mechanics.md`](../contexts/communication/rules-auto/ui-audit-gate-mechanics.md).
|
|
92
|
-
Pull it whenever the gate fires or the agent is unsure whether a
|
|
93
|
-
recorded `state.ui_audit` qualifies.
|