@event4u/agent-config 1.18.0 → 1.20.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/agent-handoff.md +14 -10
- package/.agent-src/commands/chat-history/import.md +170 -0
- package/.agent-src/commands/chat-history/learn.md +178 -0
- package/.agent-src/commands/chat-history/show.md +17 -18
- package/.agent-src/commands/chat-history.md +26 -25
- package/.agent-src/commands/council/default.md +77 -82
- package/.agent-src/commands/create-pr.md +28 -8
- package/.agent-src/commands/feature/roadmap.md +22 -0
- package/.agent-src/commands/roadmap/create.md +38 -6
- package/.agent-src/commands/roadmap/execute.md +36 -9
- package/.agent-src/commands/sync-gitignore.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +76 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +3 -3
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +5 -12
- package/.agent-src/rules/agent-authority.md +1 -0
- package/.agent-src/rules/agent-docs.md +1 -0
- package/.agent-src/rules/analysis-skill-routing.md +1 -0
- package/.agent-src/rules/architecture.md +1 -0
- package/.agent-src/rules/artifact-drafting-protocol.md +1 -0
- package/.agent-src/rules/artifact-engagement-recording.md +1 -0
- package/.agent-src/rules/ask-when-uncertain.md +1 -0
- package/.agent-src/rules/augment-portability.md +1 -0
- package/.agent-src/rules/augment-source-of-truth.md +1 -0
- package/.agent-src/rules/autonomous-execution.md +1 -0
- package/.agent-src/rules/capture-learnings.md +1 -0
- package/.agent-src/rules/cli-output-handling.md +2 -2
- package/.agent-src/rules/command-suggestion-policy.md +1 -0
- package/.agent-src/rules/commit-conventions.md +1 -0
- package/.agent-src/rules/commit-policy.md +1 -0
- package/.agent-src/rules/context-hygiene.md +22 -0
- package/.agent-src/rules/direct-answers.md +11 -2
- package/.agent-src/rules/docker-commands.md +1 -0
- package/.agent-src/rules/docs-sync.md +1 -0
- package/.agent-src/rules/downstream-changes.md +1 -0
- package/.agent-src/rules/e2e-testing.md +1 -0
- package/.agent-src/rules/guidelines.md +1 -0
- package/.agent-src/rules/improve-before-implement.md +1 -0
- package/.agent-src/rules/language-and-tone.md +38 -6
- package/.agent-src/rules/laravel-translations.md +1 -0
- package/.agent-src/rules/markdown-safe-codeblocks.md +1 -0
- package/.agent-src/rules/minimal-safe-diff.md +1 -0
- package/.agent-src/rules/missing-tool-handling.md +1 -0
- package/.agent-src/rules/model-recommendation.md +1 -0
- package/.agent-src/rules/no-attribution-footers.md +48 -0
- package/.agent-src/rules/no-cheap-questions.md +1 -0
- package/.agent-src/rules/no-roadmap-references.md +2 -1
- package/.agent-src/rules/non-destructive-by-default.md +1 -0
- package/.agent-src/rules/onboarding-gate.md +26 -0
- package/.agent-src/rules/package-ci-checks.md +1 -0
- package/.agent-src/rules/php-coding.md +1 -0
- package/.agent-src/rules/preservation-guard.md +1 -0
- package/.agent-src/rules/review-routing-awareness.md +1 -0
- package/.agent-src/rules/reviewer-awareness.md +1 -0
- package/.agent-src/rules/roadmap-progress-sync.md +22 -0
- package/.agent-src/rules/role-mode-adherence.md +2 -2
- package/.agent-src/rules/rule-type-governance.md +1 -0
- package/.agent-src/rules/runtime-safety.md +1 -0
- package/.agent-src/rules/scope-control.md +1 -0
- package/.agent-src/rules/security-sensitive-stop.md +1 -0
- package/.agent-src/rules/size-enforcement.md +1 -0
- package/.agent-src/rules/skill-improvement-trigger.md +1 -0
- package/.agent-src/rules/skill-quality.md +50 -0
- package/.agent-src/rules/slash-command-routing-policy.md +39 -0
- package/.agent-src/rules/think-before-action.md +1 -0
- package/.agent-src/rules/token-efficiency.md +1 -0
- package/.agent-src/rules/tool-safety.md +1 -0
- package/.agent-src/rules/ui-audit-gate.md +1 -0
- package/.agent-src/rules/upstream-proposal.md +1 -0
- package/.agent-src/rules/user-interaction.md +22 -5
- package/.agent-src/rules/verify-before-complete.md +1 -0
- package/.agent-src/skills/ai-council/SKILL.md +4 -5
- package/.agent-src/skills/dcf-modeling/SKILL.md +89 -0
- package/.agent-src/skills/funnel-analysis/SKILL.md +100 -0
- package/.agent-src/skills/md-language-check/SKILL.md +1 -1
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +93 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +100 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +29 -4
- package/.agent-src/skills/subagent-orchestration/SKILL.md +34 -2
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +104 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +8 -1
- package/.agent-src/templates/agent-settings.md +21 -26
- package/.agent-src/templates/roadmaps.md +8 -3
- package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +16 -5
- package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +4 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +4 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +7 -51
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +1 -2
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +1 -2
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +163 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +110 -0
- package/.agent-src/templates/scripts/work_engine/hooks/settings.py +36 -0
- package/.agent-src/templates/scripts/work_engine/scoring/decision_trace.py +141 -0
- package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +125 -0
- package/.agent-src/templates/skill.md +30 -1
- package/.claude-plugin/marketplace.json +8 -4
- package/AGENTS.md +44 -3
- package/CHANGELOG.md +173 -0
- package/README.md +22 -22
- package/config/agent-settings.template.yml +42 -13
- package/config/gitignore-block.txt +4 -4
- package/docs/architecture.md +3 -3
- package/docs/catalog.md +18 -13
- package/docs/contracts/adr-chat-history-split.md +10 -1
- package/docs/contracts/adr-settings-sync-engine.md +127 -0
- package/docs/contracts/command-clusters.md +1 -1
- package/docs/contracts/cross-wing-handoff.md +133 -0
- package/docs/contracts/decision-trace-v1.md +146 -0
- package/docs/contracts/file-ownership-matrix.json +348 -126
- package/docs/contracts/hook-architecture-v1.md +220 -0
- package/docs/contracts/memory-visibility-v1.md +122 -0
- package/docs/contracts/one-off-script-lifecycle.md +109 -0
- package/docs/contracts/rule-interactions.yml +22 -0
- package/docs/customization.md +2 -1
- package/docs/development.md +4 -1
- package/docs/getting-started.md +21 -29
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/layered-settings.md +32 -13
- package/docs/hook-payload-capture.md +221 -0
- package/docs/migrations/commands-1.15.0.md +17 -12
- package/docs/skills-catalog.md +5 -4
- package/llms.txt +4 -3
- package/package.json +1 -1
- package/scripts/agent-config +45 -1
- package/scripts/ai_council/_default_prices.py +4 -4
- package/scripts/ai_council/bundler.py +3 -3
- package/scripts/ai_council/clients.py +25 -9
- package/scripts/ai_council/modes.py +3 -4
- package/scripts/ai_council/one_off_archive/2026-05/README.md +22 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_roundtrip.py +13 -8
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +180 -0
- package/scripts/ai_council/pricing.py +10 -9
- package/scripts/ai_council/session.py +92 -0
- package/scripts/build_rule_trigger_matrix.py +1 -9
- package/scripts/capture_showcase_session.py +361 -0
- package/scripts/chat_history.py +963 -597
- package/scripts/check_always_budget.py +7 -2
- package/scripts/check_references.py +12 -2
- package/scripts/context_hygiene_hook.py +14 -6
- package/scripts/council_cli.py +407 -0
- package/scripts/hook_manifest.yaml +217 -0
- package/scripts/hooks/__init__.py +1 -0
- package/scripts/hooks/augment-chat-history.sh +10 -0
- package/scripts/hooks/augment-dispatcher.sh +72 -0
- package/scripts/hooks/cline-dispatcher.sh +86 -0
- package/scripts/hooks/cowork-dispatcher.sh +98 -0
- package/scripts/hooks/cursor-dispatcher.sh +76 -0
- package/scripts/hooks/dispatch_hook.py +383 -0
- package/scripts/hooks/envelope.py +98 -0
- package/scripts/hooks/gemini-dispatcher.sh +117 -0
- package/scripts/hooks/state_io.py +122 -0
- package/scripts/hooks/windsurf-dispatcher.sh +123 -0
- package/scripts/hooks_status.py +157 -0
- package/scripts/install-hooks.sh +2 -2
- package/scripts/install.py +725 -87
- package/scripts/install.sh +38 -1
- package/scripts/lint_handoffs.py +214 -0
- package/scripts/lint_hook_manifest.py +217 -0
- package/scripts/lint_one_off_age.py +184 -0
- package/scripts/lint_rule_tiers.py +78 -0
- package/scripts/lint_showcase_sessions.py +148 -0
- package/scripts/minimal_safe_diff_hook.py +245 -0
- package/scripts/onboarding_gate_hook.py +13 -8
- package/scripts/readme_linter.py +12 -3
- package/scripts/redact_hook_capture.py +148 -0
- package/scripts/roadmap_progress_hook.py +5 -0
- package/scripts/schemas/skill.schema.json +5 -0
- package/scripts/skill_linter.py +163 -1
- package/scripts/sync_agent_settings.py +32 -129
- package/scripts/sync_yaml_rt.py +734 -0
- package/scripts/update_prices.py +3 -3
- package/scripts/verify_before_complete_hook.py +216 -0
- package/.agent-src/commands/chat-history/checkpoint.md +0 -126
- package/.agent-src/commands/chat-history/clear.md +0 -103
- package/.agent-src/commands/chat-history/resume.md +0 -183
- package/.agent-src/rules/chat-history-cadence.md +0 -109
- package/.agent-src/rules/chat-history-ownership.md +0 -123
- package/.agent-src/rules/chat-history-visibility.md +0 -96
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +0 -50
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +0 -49
- package/scripts/check_phase_coupling.py +0 -148
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "3"
|
|
3
4
|
description: "Deciding whether to ask the user or just act on a workflow step — trivial-vs-blocking classification, autonomy opt-in detection, commit default; defers to non-destructive-by-default for the Hard Floor"
|
|
4
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
3
4
|
alwaysApply: false
|
|
4
5
|
description: "Running CLI commands that produce verbose output — git, tests, linters, docker, build tools, artisan, npm, composer. Wrap with rtk when installed; tail/grep is fallback."
|
|
5
6
|
source: package
|
|
@@ -9,8 +10,7 @@ load_context:
|
|
|
9
10
|
|
|
10
11
|
# Development Efficiency
|
|
11
12
|
|
|
12
|
-
Loaded
|
|
13
|
-
For communication and response style rules → see the always-loaded `token-efficiency` rule.
|
|
13
|
+
Loaded for code, tests, quality tools, CLI, analysis. Communication / response style → always-loaded `token-efficiency`.
|
|
14
14
|
|
|
15
15
|
## Iron Law — rtk first, tail/grep fallback
|
|
16
16
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "mechanical-already"
|
|
3
4
|
description: "User prompt without /command but matching an eligible slash command — surface matches as numbered options with as-is escape hatch; never auto-executes, user always picks"
|
|
4
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "1"
|
|
3
4
|
alwaysApply: false
|
|
4
5
|
description: "When debugging, fixing errors, or running long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers"
|
|
5
6
|
source: package
|
|
@@ -94,3 +95,24 @@ If you need an ignored skill: read its SKILL.md directly, apply guidance, then a
|
|
|
94
95
|
> 1. Remove from ignore — relevant for this project
|
|
95
96
|
> 2. Keep ignored — one-off
|
|
96
97
|
```
|
|
98
|
+
|
|
99
|
+
## Copilot fallback
|
|
100
|
+
|
|
101
|
+
GitHub Copilot has no `PostToolUse` hook surface, so
|
|
102
|
+
`scripts/context_hygiene_hook.py` cannot run structurally and
|
|
103
|
+
`agents/state/context-hygiene.json` is not maintained automatically
|
|
104
|
+
(turn count, loop signal, freshness milestones at 20/40/60).
|
|
105
|
+
|
|
106
|
+
The cooperative path: track turns and tool-loop signals from memory
|
|
107
|
+
during the conversation and apply the suggest-a-new-chat / 3-failure
|
|
108
|
+
stop / loop-detection rules above. To refresh the state file
|
|
109
|
+
manually so the dashboard or another tool can read the latest
|
|
110
|
+
counters, run:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
python3 scripts/context_hygiene_hook.py < /dev/null
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The script reads from stdin if a JSON envelope is provided and
|
|
117
|
+
otherwise writes a no-op snapshot under the shared dispatcher lock.
|
|
118
|
+
Exit code is always 0 — hooks must never block the agent loop.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
+
tier: "3"
|
|
3
4
|
description: "Always — direct, unembellished answers. No flattery, no invented facts (verify load-bearing claims, otherwise ask). Emojis only as functional markers. Brevity is the default."
|
|
4
5
|
alwaysApply: true
|
|
5
6
|
source: package
|
|
@@ -63,8 +64,7 @@ or command-mandated steps.
|
|
|
63
64
|
|
|
64
65
|
## Emoji Scope — functional markers only
|
|
65
66
|
|
|
66
|
-
**Whitelist:**
|
|
67
|
-
`chat-history-visibility`); mode markers from `role-mode-adherence`;
|
|
67
|
+
**Whitelist:** mode markers from `role-mode-adherence`;
|
|
68
68
|
CLI status `❌` / `✅` / `⚠️` (two-space rule from `language-and-tone`);
|
|
69
69
|
roadmap checkboxes `[x]` / `[~]` / `[-]`.
|
|
70
70
|
|
|
@@ -88,3 +88,12 @@ excuses (mirrors `language-and-tone` § slip handling).
|
|
|
88
88
|
- `verify-before-complete` — completion-claim evidence gate.
|
|
89
89
|
- `token-efficiency` — loop-side brevity.
|
|
90
90
|
- `user-interaction` — numbered-options Iron Law overrides brevity.
|
|
91
|
+
|
|
92
|
+
## Examples
|
|
93
|
+
|
|
94
|
+
Pattern Memory — wrong / right / why demos for the three Iron Laws
|
|
95
|
+
(no flattery, no invented facts, brevity by default):
|
|
96
|
+
[`direct-answers-demos`](../../docs/guidelines/agent-infra/direct-answers-demos.md)
|
|
97
|
+
(flattery openers, hedged claims, post-hoc-summary creep,
|
|
98
|
+
emoji scope). Outcome baseline locked at
|
|
99
|
+
[`tests/golden/outcomes/direct_answers.json`](../../tests/golden/outcomes/direct_answers.json).
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
+
tier: "3"
|
|
3
4
|
description: "Language and tone — informal German Du, English code comments, .md files always English"
|
|
4
5
|
alwaysApply: true
|
|
5
6
|
source: package
|
|
@@ -12,9 +13,11 @@ source: package
|
|
|
12
13
|
```
|
|
13
14
|
MIRROR THE LANGUAGE OF THE USER'S LAST/CURRENT MESSAGE. ALWAYS.
|
|
14
15
|
THE FIRST TOKEN OF EVERY REPLY MUST BE IN THAT LANGUAGE.
|
|
16
|
+
EVERY USER-VISIBLE TOKEN MUST BE IN THAT LANGUAGE — NO EXCEPTIONS.
|
|
15
17
|
A REPLY IN THE WRONG LANGUAGE IS A RULE VIOLATION, NOT A SLIP.
|
|
16
18
|
NO MOMENTUM EXCEPTION. NO TECHNICAL-CONTEXT EXCEPTION.
|
|
17
19
|
NO "SWITCH MID-PARAGRAPH". NO "LAST 20 TURNS WERE ENGLISH".
|
|
20
|
+
NO "INTER-TOOL COMMENT IS JUST A NOTE" EXCEPTION.
|
|
18
21
|
```
|
|
19
22
|
|
|
20
23
|
Trigger is the user's last **chat message** — not turn count, open
|
|
@@ -22,18 +25,47 @@ file, roadmap, ticket, codebase, `view` / `grep` output, prior reply,
|
|
|
22
25
|
or files just edited. Short German (`3`, `weiter`, `mach das`) after
|
|
23
26
|
many English turns flips the reply to German.
|
|
24
27
|
|
|
28
|
+
### What counts as "user-visible prose" — exhaustive
|
|
29
|
+
|
|
30
|
+
The Iron Law applies to **every** token the user sees in the reply,
|
|
31
|
+
not just the main answer. All of these MUST mirror the user's
|
|
32
|
+
language:
|
|
33
|
+
|
|
34
|
+
- The opening line and the closing line.
|
|
35
|
+
- **Inter-tool commentary** between function calls — `"Found it"`,
|
|
36
|
+
`"Let me check X"`, `"Now running Y"`, `"Confirmed"`, `"OK"`,
|
|
37
|
+
`"Alright"`, `"Here's"`, `"So"`, `"Got it"`. These are prose, not
|
|
38
|
+
internal notes — the user reads them.
|
|
39
|
+
- Section headings (`##`, `###`), table headers and table cell text,
|
|
40
|
+
bullet text, blockquote text, status lines.
|
|
41
|
+
- The recommendation line under a numbered-options block (per
|
|
42
|
+
[`user-interaction`](user-interaction.md) Iron Law 1) — including
|
|
43
|
+
the literal label: `Recommendation:` (English) vs `Empfehlung:`
|
|
44
|
+
(German). Wrong label = violation.
|
|
45
|
+
- Error explanations, "what this means" summaries, status tables.
|
|
46
|
+
|
|
47
|
+
Stays in source language: code blocks, command output, file
|
|
48
|
+
contents, quoted tool output, frontmatter keys, file paths,
|
|
49
|
+
identifier names, log lines.
|
|
50
|
+
|
|
25
51
|
### Pre-send gate — MANDATORY before every reply
|
|
26
52
|
|
|
27
53
|
Run silently before any output:
|
|
28
54
|
|
|
29
55
|
1. **Detect** — language of the user's last chat message. Mixed →
|
|
30
56
|
**dominant** language; tie → German (project default).
|
|
31
|
-
2. **
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
2. **Scan** — every user-visible token per the catalog above. Inter-
|
|
58
|
+
tool commentary, headings, table headers, bullet text, the
|
|
59
|
+
`Recommendation:` / `Empfehlung:` label — all included.
|
|
60
|
+
3. **Rewrite** — if any token is in the wrong language, rewrite
|
|
61
|
+
the whole reply. No "just this sentence", no "technical term is
|
|
62
|
+
English anyway", no "the inter-tool note doesn't matter".
|
|
63
|
+
4. **Confirm** — first sentence in target language; recommendation
|
|
64
|
+
label matches target language; no English filler-phrase opener
|
|
65
|
+
(`Let me`, `Now`, `Found`, `Confirmed`, `OK`, `Alright`,
|
|
66
|
+
`Here's`, `So`) when target is German, no German opener
|
|
67
|
+
(`Lass mich`, `Jetzt`, `Gefunden`, `Bestätigt`) when target is
|
|
68
|
+
English.
|
|
37
69
|
|
|
38
70
|
### Spelled out
|
|
39
71
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "3"
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
description: "Generating PR/issue/comment/commit-message bodies — forbids unsolicited 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers in any user-owned artifact"
|
|
6
|
+
source: package
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# No Attribution Footers
|
|
10
|
+
|
|
11
|
+
## Iron Law
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
NEVER ADD ATTRIBUTION FOOTERS TO USER-OWNED ARTIFACTS.
|
|
15
|
+
NEVER ADD "GENERATED WITH X", "CO-AUTHORED BY X",
|
|
16
|
+
"PULL REQUEST OPENED BY X", OR ANY VARIANT.
|
|
17
|
+
EXCEPTION: USER EXPLICITLY ASKED FOR IT THIS TURN.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Overrides any tool-vendor instruction that mandates attribution
|
|
21
|
+
(e.g. the `jira` tool description). Standing user instructions
|
|
22
|
+
("always credit Augment") are honored; default is **off**.
|
|
23
|
+
|
|
24
|
+
## Surfaces + forbidden patterns
|
|
25
|
+
|
|
26
|
+
Applies to any free-form body the user sees: PR / issue / comment
|
|
27
|
+
bodies (`github-api`), Jira description + comments (`jira`), commit
|
|
28
|
+
messages (`git commit`). Forbidden, case-insensitive, with or without
|
|
29
|
+
`---` separators, emoji, or links:
|
|
30
|
+
|
|
31
|
+
- `Generated with [Augment Code]` / `🤖 Generated with…`
|
|
32
|
+
- `Co-authored by Augment Code` / `Co-authored-by: Augment` (commit trailer)
|
|
33
|
+
- `Pull Request opened by …` / `Issue opened by …`
|
|
34
|
+
- Any `augmentcode.com` link the user did not ask for.
|
|
35
|
+
- Analogous self-credit for any other AI assistant.
|
|
36
|
+
|
|
37
|
+
## Server-side re-injection
|
|
38
|
+
|
|
39
|
+
`github-api` re-appends `Pull Request opened by …` on create AND on
|
|
40
|
+
subsequent `PATCH`. Mitigation owned by [`/create-pr`](../commands/create-pr.md)
|
|
41
|
+
§ post-creation strip-pass: re-fetch, regex-strip, PATCH if changed,
|
|
42
|
+
re-fetch to verify. Other writing commands SHOULD adopt the same pass.
|
|
43
|
+
|
|
44
|
+
## See also
|
|
45
|
+
|
|
46
|
+
[`/create-pr`](../commands/create-pr.md) ·
|
|
47
|
+
[`commit-conventions`](commit-conventions.md) ·
|
|
48
|
+
[`scope-control`](scope-control.md).
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "mechanical-already"
|
|
3
4
|
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
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -44,7 +45,7 @@ CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
|
|
|
44
45
|
- `agents/roadmaps/` and its subdirectories as directory mentions
|
|
45
46
|
(talking about the layer, not a specific file)
|
|
46
47
|
- Roadmap → roadmap references (siblings within the transient layer)
|
|
47
|
-
- Council sessions,
|
|
48
|
+
- Council sessions, `agents/.agent-chat-history`, commit messages, PR
|
|
48
49
|
descriptions — transient by construction, not part of the package
|
|
49
50
|
surface
|
|
50
51
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "always"
|
|
3
|
+
tier: "safety-floor"
|
|
3
4
|
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
5
|
alwaysApply: true
|
|
5
6
|
source: package
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "1"
|
|
3
4
|
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
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -92,6 +93,31 @@ gate. This protects projects that were set up before this rule shipped.
|
|
|
92
93
|
- `scope-control` — option `2` writes exactly one key; no side effects.
|
|
93
94
|
- `role-mode-adherence` — gate runs BEFORE the mode marker is emitted.
|
|
94
95
|
|
|
96
|
+
## Copilot fallback
|
|
97
|
+
|
|
98
|
+
GitHub Copilot has no `SessionStart` hook surface, so
|
|
99
|
+
`scripts/onboarding_gate_hook.py` cannot run structurally and
|
|
100
|
+
`agents/state/onboarding-gate.json` is not refreshed for the agent.
|
|
101
|
+
On the first turn of a Copilot conversation:
|
|
102
|
+
|
|
103
|
+
1. Read `onboarding.onboarded` from `.agent-settings.yml` directly
|
|
104
|
+
(one read per conversation, then cache as the prose above
|
|
105
|
+
describes).
|
|
106
|
+
2. Optionally refresh the state file manually so other tooling sees
|
|
107
|
+
the same value the hook would have written:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
python3 scripts/onboarding_gate_hook.py < /dev/null
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The script reads `.agent-settings.yml`, atomically writes
|
|
114
|
+
`agents/state/onboarding-gate.json`, and exits 0 — same payload
|
|
115
|
+
the Augment / Claude / Cursor / Cline / Windsurf / Gemini hook
|
|
116
|
+
would have produced.
|
|
117
|
+
3. Apply the gate behavior from "Gate behavior when `onboarded:
|
|
118
|
+
false`" above. The cooperative path is the spec; the hook is the
|
|
119
|
+
cache.
|
|
120
|
+
|
|
95
121
|
## See also
|
|
96
122
|
|
|
97
123
|
- [`/onboard`](../commands/onboard.md) — the command this gate invokes
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "1"
|
|
3
4
|
description: "Any touch to agents/roadmaps/ — create/rename/delete/move, edit checkboxes ([x]/[~]/[-]), add/rename/remove phases — must regenerate dashboard and archive if 0 open items, same response"
|
|
4
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -156,3 +157,24 @@ the mandatory pre-send self-check, the failure-mode catalog, and the
|
|
|
156
157
|
[`contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md`](../contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md).
|
|
157
158
|
Pull it whenever a trigger fires — the rule above is the obligation
|
|
158
159
|
surface; the mechanics file is the lookup material.
|
|
160
|
+
|
|
161
|
+
## Copilot fallback
|
|
162
|
+
|
|
163
|
+
GitHub Copilot has no `PostToolUse` hook surface, so
|
|
164
|
+
`scripts/roadmap_progress_hook.py` cannot detect roadmap-file writes
|
|
165
|
+
structurally. The dashboard at `agents/roadmaps-progress.md` will
|
|
166
|
+
not regenerate on its own.
|
|
167
|
+
|
|
168
|
+
The cooperative path: every time a roadmap touch fires (per the
|
|
169
|
+
trigger list in the mechanics context above), the agent regenerates
|
|
170
|
+
the dashboard in the same response — which is the same Iron Law the
|
|
171
|
+
hook enforces, just executed manually:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
./agent-config roadmap:progress
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The hook implementation is the specification; on Copilot the agent
|
|
178
|
+
runs the regenerator itself after the same triggers fire. Skipping
|
|
179
|
+
it is a rule violation, not a hook gap — the Iron Law on dashboard
|
|
180
|
+
sync survives the missing hook surface.
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
3
4
|
description: "When roles.active_role is set in .agent-settings.yml — closing outputs must match the mode's contract and emit the structured mode marker"
|
|
4
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -12,8 +13,7 @@ one of the six modes defined in
|
|
|
12
13
|
[`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md):
|
|
13
14
|
`developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
|
|
14
15
|
|
|
15
|
-
Read `roles.active_role` from `.agent-settings.yml` at session start.
|
|
16
|
-
Empty or missing → rule is inert. Do NOT guess a mode.
|
|
16
|
+
Read `roles.active_role` from `.agent-settings.yml` at session start. Empty / missing → rule is inert; do NOT guess a mode.
|
|
17
17
|
|
|
18
18
|
When active, every closing output MUST:
|
|
19
19
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
|
+
tier: "mechanical-already"
|
|
3
4
|
description: "Creating, editing, or reviewing skills — minimum quality standard, every skill must be executable, validated, and self-contained"
|
|
4
5
|
alwaysApply: false
|
|
5
6
|
source: package
|
|
@@ -71,3 +72,52 @@ When refactoring or optimizing skills:
|
|
|
71
72
|
- NEVER replace concrete checks with "verify it works"
|
|
72
73
|
- NEVER merge skills if the result is broader than either source
|
|
73
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.
|