@event4u/agent-config 1.15.0 → 1.16.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/bug-fix.md +1 -1
- package/.agent-src/commands/bug-investigate.md +2 -2
- package/.agent-src/commands/chat-history-checkpoint.md +1 -1
- package/.agent-src/commands/chat-history-clear.md +1 -1
- package/.agent-src/commands/chat-history.md +1 -1
- package/.agent-src/commands/check-current-md.md +1 -1
- package/.agent-src/commands/council-design.md +96 -0
- package/.agent-src/commands/council-optimize.md +115 -0
- package/.agent-src/commands/council-pr.md +123 -0
- package/.agent-src/commands/council.md +219 -0
- package/.agent-src/commands/create-pr.md +23 -0
- package/.agent-src/commands/do-and-judge.md +3 -3
- package/.agent-src/commands/do-in-steps.md +4 -4
- 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 +8 -0
- package/.agent-src/commands/feature-explore.md +6 -1
- package/.agent-src/commands/feature-plan.md +33 -2
- package/.agent-src/commands/feature-refactor.md +5 -0
- package/.agent-src/commands/feature-roadmap.md +6 -1
- package/.agent-src/commands/feature.md +58 -0
- package/.agent-src/commands/fix-ci.md +5 -0
- package/.agent-src/commands/fix-portability.md +5 -0
- package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
- package/.agent-src/commands/fix-pr-comments.md +5 -0
- package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
- package/.agent-src/commands/fix-references.md +5 -0
- package/.agent-src/commands/fix-seeder.md +5 -0
- package/.agent-src/commands/fix.md +60 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/judge.md +1 -1
- package/.agent-src/commands/memory-add.md +3 -3
- package/.agent-src/commands/memory-full.md +2 -2
- package/.agent-src/commands/memory-promote.md +2 -2
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/onboard.md +3 -3
- package/.agent-src/commands/optimize-agents.md +6 -1
- package/.agent-src/commands/optimize-augmentignore.md +5 -0
- package/.agent-src/commands/optimize-rtk-filters.md +5 -0
- package/.agent-src/commands/optimize-skills.md +6 -1
- package/.agent-src/commands/optimize.md +54 -0
- package/.agent-src/commands/propose-memory.md +2 -2
- 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 +29 -2
- 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 +1 -1
- 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/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/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 +1 -1
- package/.agent-src/rules/ask-when-uncertain.md +1 -1
- 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/{command-suggestion.md → command-suggestion-policy.md} +7 -7
- package/.agent-src/rules/commit-conventions.md +1 -1
- 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 +1 -1
- package/.agent-src/rules/docs-sync.md +1 -1
- 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 +37 -96
- package/.agent-src/rules/minimal-safe-diff.md +3 -3
- package/.agent-src/rules/model-recommendation.md +4 -4
- package/.agent-src/rules/no-cheap-questions.md +89 -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/review-routing-awareness.md +9 -9
- package/.agent-src/rules/roadmap-progress-sync.md +26 -33
- 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 +2 -2
- package/.agent-src/rules/size-enforcement.md +1 -1
- package/.agent-src/rules/think-before-action.md +5 -5
- package/.agent-src/rules/token-efficiency.md +4 -4
- package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
- package/.agent-src/rules/user-interaction.md +3 -3
- 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 +333 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
- 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/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 +1 -1
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
- package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
- package/.agent-src/skills/flux/SKILL.md +1 -1
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/livewire/SKILL.md +1 -1
- package/.agent-src/skills/override-management/SKILL.md +2 -2
- package/.agent-src/skills/php-coder/SKILL.md +1 -1
- package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/readme-writing/SKILL.md +1 -1
- package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
- package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/.agent-src/skills/review-routing/SKILL.md +2 -2
- package/.agent-src/skills/rule-writing/SKILL.md +1 -1
- 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 +1 -1
- 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 +2 -2
- 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 +10 -2
- package/AGENTS.md +11 -9
- package/CHANGELOG.md +123 -1
- package/README.md +28 -30
- package/config/agent-settings.template.yml +58 -1
- package/config/gitignore-block.txt +3 -0
- package/docs/architecture.md +4 -4
- package/docs/catalog.md +331 -0
- package/docs/contracts/STABILITY.md +39 -0
- package/docs/contracts/adr-command-suggestion.md +3 -3
- package/docs/contracts/adr-product-ui-track.md +2 -2
- package/docs/contracts/agent-memory-contract.md +2 -2
- package/docs/contracts/artifact-engagement-flow.md +1 -1
- package/docs/contracts/command-clusters.md +2 -2
- package/docs/contracts/command-suggestion-flow.md +3 -3
- package/docs/contracts/implement-ticket-flow.md +2 -2
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- package/docs/contracts/load-context-schema.md +186 -0
- package/docs/contracts/rule-interactions.yml +96 -0
- package/docs/contracts/rule-priority-hierarchy.md +87 -0
- package/docs/contracts/ui-track-flow.md +1 -1
- package/docs/customization.md +14 -0
- package/docs/end-to-end-walkthroughs.md +165 -0
- package/docs/getting-started.md +26 -8
- package/docs/github-topics.md +12 -3
- 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/agent-config +23 -0
- package/scripts/ai_council/__init__.py +39 -0
- package/scripts/ai_council/_default_prices.py +41 -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/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 +126 -0
- package/scripts/check_augmentignore.py +69 -0
- package/scripts/check_command_count_messaging.py +120 -0
- package/scripts/check_portability.py +55 -0
- package/scripts/check_public_catalog_links.py +122 -0
- package/scripts/check_references.py +4 -1
- package/scripts/check_roadmap_trackable.py +111 -0
- package/scripts/command_suggester/cooldown.py +1 -1
- package/scripts/generate_index.py +266 -0
- 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/schemas/command.schema.json +20 -0
- package/scripts/schemas/rule.schema.json +10 -0
- package/scripts/skill_linter.py +12 -4
- package/scripts/sync_agent_settings.py +1 -1
- package/scripts/update_counts.py +9 -4
- package/scripts/update_prices.py +124 -0
- package/.agent-src/guidelines/php/git.md +0 -96
- /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
- /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
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-council
|
|
3
|
+
description: "Use when polling external AIs (OpenAI, Anthropic) outside the host session for a neutral second opinion on a roadmap, diff, prompt, or file set — or 'cross-check with another model'."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ai-council
|
|
8
|
+
|
|
9
|
+
## When to use
|
|
10
|
+
|
|
11
|
+
* The host agent has drafted a roadmap, plan, or design and wants an
|
|
12
|
+
**external** critique that is not biased by its own framing.
|
|
13
|
+
* The user asks "what would Claude / GPT say about this?" or invokes
|
|
14
|
+
`/council`.
|
|
15
|
+
* A PR diff or commit range needs a second-opinion review beyond the
|
|
16
|
+
internal four-judge pass.
|
|
17
|
+
* A free-form proposal benefits from being challenged by an outside
|
|
18
|
+
reviewer before it calcifies into work.
|
|
19
|
+
|
|
20
|
+
Do NOT use when:
|
|
21
|
+
|
|
22
|
+
* The decision is internal-only and budget matters more than diversity
|
|
23
|
+
of opinion → use `subagent-orchestration` (in-session, no network,
|
|
24
|
+
no money).
|
|
25
|
+
* The artefact contains secrets that cannot be redacted with the
|
|
26
|
+
bundler's pattern set → ask the user before sending.
|
|
27
|
+
* The user has not configured any council member → state that and stop;
|
|
28
|
+
do not silently fall back to anything.
|
|
29
|
+
|
|
30
|
+
## Goal
|
|
31
|
+
|
|
32
|
+
Bring in **independent** external models to critique a project
|
|
33
|
+
artefact. Independent means: the council members never see the host
|
|
34
|
+
agent's reasoning, internal state, or framing language — only the
|
|
35
|
+
artefact (roadmap, diff, prompt, file set) plus a neutral system
|
|
36
|
+
prompt that asks them to think on their own merits.
|
|
37
|
+
|
|
38
|
+
## Neutrality guidelines (Iron Law)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
THE COUNCIL DOES NOT SEE THE HOST AGENT'S ANALYSIS.
|
|
42
|
+
THE COUNCIL DOES NOT SEE PRIOR REPLIES.
|
|
43
|
+
THE COUNCIL SEES THE ARTEFACT + THE NEUTRAL SYSTEM PROMPT. NOTHING ELSE.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
If you find yourself wanting to "frame" the artefact for the council,
|
|
47
|
+
stop. Framing is exactly what kills the second-opinion value. Use the
|
|
48
|
+
unbiased system prompts in `scripts/ai_council/prompts.py`; do not
|
|
49
|
+
roll your own.
|
|
50
|
+
|
|
51
|
+
### Neutrality — context-handoff
|
|
52
|
+
|
|
53
|
+
External reviewers do better critique when they know **what the
|
|
54
|
+
project is**, not just what the artefact looks like. The council
|
|
55
|
+
ships a neutral **handoff preamble** (modelled on `/agent-handoff`)
|
|
56
|
+
in front of every member's system prompt, assembled by
|
|
57
|
+
`prompts.handoff_preamble(project, original_ask)`:
|
|
58
|
+
|
|
59
|
+
| Carried | Forbidden |
|
|
60
|
+
|---|---|
|
|
61
|
+
| Project name (from `composer.json` / `package.json` / repo dir) | Host-agent identity (Augment, Claude Code, Cursor, Cline, Windsurf, Copilot agent) — stripped line-by-line before send |
|
|
62
|
+
| Stack one-liner inferred from manifest files | Host-agent reasoning, prior turns, internal analysis |
|
|
63
|
+
| One paragraph of repo purpose from `README.md` (max 400 chars) | Host-agent framing language ("I think this looks weak", "the user probably wants…") |
|
|
64
|
+
| The user's **original ask** verbatim (the free-form sentence that triggered `/council`) | Anything the host agent generated about the artefact |
|
|
65
|
+
|
|
66
|
+
`detect_project_context()` in `scripts/ai_council/project_context.py`
|
|
67
|
+
reads only the manifest files + root README; missing fields collapse
|
|
68
|
+
to `None` and the preamble silently omits the line. With both
|
|
69
|
+
`project=None` and `original_ask=""`, the preamble degrades to the
|
|
70
|
+
bare `NEUTRALITY_PREAMBLE` (v1 shape — back-compat for callers that
|
|
71
|
+
have not migrated yet).
|
|
72
|
+
|
|
73
|
+
## Execution modes
|
|
74
|
+
|
|
75
|
+
A council member can run in one of three transports. The neutrality
|
|
76
|
+
preamble is identical across all of them — only the path the bytes
|
|
77
|
+
travel changes.
|
|
78
|
+
|
|
79
|
+
| Mode | Client | Billable | Transport | Status |
|
|
80
|
+
|---|---|---|---|---|
|
|
81
|
+
| `api` | `AnthropicClient` / `OpenAIClient` | yes | provider SDK + key from `~/.config/agent-config/<provider>.key` | shipped |
|
|
82
|
+
| `manual` | `ManualClient` | no | `stdout` (prompt block) + `stdin` (user pastes the web-UI reply, terminated by a line containing only `END`) | shipped (Phase 2b) |
|
|
83
|
+
| `playwright` | `PlaywrightClient` | no | persistent-profile browser at the provider's chat URL via DOM adapter | reserved (Phase 2c — capture-only) |
|
|
84
|
+
|
|
85
|
+
Resolution lives in `scripts/ai_council/modes.py`:
|
|
86
|
+
`resolve_mode(name, invocation_mode, member_settings, global_mode)`
|
|
87
|
+
with precedence **invocation flag > per-member setting > global
|
|
88
|
+
setting > default (`api`)**. Whitespace-and-case insensitive; empty
|
|
89
|
+
strings fall through; unknown values raise `InvalidModeError` with
|
|
90
|
+
the offending settings path (`ai_council.mode`,
|
|
91
|
+
`ai_council.members.<name>.mode`, or `/council mode=`).
|
|
92
|
+
|
|
93
|
+
### Manual-mode UX
|
|
94
|
+
|
|
95
|
+
`ManualClient` is the user-as-transport variant: the agent prints
|
|
96
|
+
one Markdown block per member (system prompt + handoff preamble +
|
|
97
|
+
artefact between two `═` rules), the user pastes it into a web
|
|
98
|
+
chat (Claude.ai, ChatGPT, Gemini), then pastes the reply back
|
|
99
|
+
ending with a line containing only `END`. After each reply, a 1/2/3
|
|
100
|
+
menu surfaces:
|
|
101
|
+
|
|
102
|
+
1. More feedback for this member (continue this thread)
|
|
103
|
+
2. Done with this member, move to the next
|
|
104
|
+
3. Abort the council run
|
|
105
|
+
|
|
106
|
+
`1` re-emits a follow-up block addressed to the **same chat
|
|
107
|
+
thread** (no system prompt repetition). `2` records the round and
|
|
108
|
+
moves to the next member. `3` returns `error="manual_aborted"` for
|
|
109
|
+
that member and the orchestrator stops the fan-out.
|
|
110
|
+
|
|
111
|
+
### Cost-gate bypass for non-billable members
|
|
112
|
+
|
|
113
|
+
`ExternalAIClient.billable` is the contract. Clients with
|
|
114
|
+
`billable=False` (today: `ManualClient`; future: `PlaywrightClient`)
|
|
115
|
+
bypass the cost gate entirely — the orchestrator skips the
|
|
116
|
+
projection check, the `on_overrun` callback, and the USD-budget
|
|
117
|
+
short-circuit for that member, but still records the response's
|
|
118
|
+
token counts (from the manual-paste length heuristic or the
|
|
119
|
+
provider's reply, when available) for observability. Mixed runs
|
|
120
|
+
(one manual + one api) gate only the api members.
|
|
121
|
+
|
|
122
|
+
## Procedure
|
|
123
|
+
|
|
124
|
+
1. **Resolve target.** Identify the artefact mode (`prompt`, `roadmap`,
|
|
125
|
+
`diff`, `files`) and locate the source. Refuse to proceed if the
|
|
126
|
+
target is ambiguous.
|
|
127
|
+
2. **Bundle + redact.** Call `scripts/ai_council/bundler.py` to produce
|
|
128
|
+
a redacted artefact bundle. If `BundleTooLarge` fires, surface the
|
|
129
|
+
size and ask the user to narrow scope — do NOT truncate silently.
|
|
130
|
+
3. **Confirm spend.** Before any network call, surface members + cost
|
|
131
|
+
ceiling and require an explicit user `1` to proceed. Autonomy
|
|
132
|
+
settings do not override this gate.
|
|
133
|
+
4. **Fan out.** Dispatch the bundle to each enabled council member via
|
|
134
|
+
`scripts/ai_council/orchestrator.py`. Each member receives the
|
|
135
|
+
neutrality preamble from `prompts.py` plus the artefact — nothing
|
|
136
|
+
from the host agent's prior reasoning.
|
|
137
|
+
5. **Render results.** Stack each member's response under its own
|
|
138
|
+
provider-attributed heading. Never merge or paraphrase responses
|
|
139
|
+
into the host agent's voice.
|
|
140
|
+
6. **Summarise.** Write a `Convergence / Divergence` block listing
|
|
141
|
+
agreements, disagreements, and unique insights — provider-attributed.
|
|
142
|
+
7. **Translate to options.** Convert actionable council suggestions
|
|
143
|
+
into concrete numbered options for the user. The user decides;
|
|
144
|
+
the council advises.
|
|
145
|
+
|
|
146
|
+
## Output format
|
|
147
|
+
|
|
148
|
+
Every council reply MUST contain, in this order:
|
|
149
|
+
|
|
150
|
+
1. **Header line** with mode, member count, and total token cost.
|
|
151
|
+
2. **One section per member**, titled `### <provider> · <model>`,
|
|
152
|
+
containing the member's verbatim output.
|
|
153
|
+
3. **Convergence / Divergence summary** — bullet list, every claim
|
|
154
|
+
attributed by provider name.
|
|
155
|
+
4. **User-facing options** — numbered block per `user-interaction`,
|
|
156
|
+
with "discard council input" always present as an option.
|
|
157
|
+
|
|
158
|
+
The host agent NEVER ships council output as its own reasoning.
|
|
159
|
+
Provider attribution stays visible in every render.
|
|
160
|
+
|
|
161
|
+
## Do NOT
|
|
162
|
+
|
|
163
|
+
- Do NOT paraphrase council output into the host agent's voice — strip
|
|
164
|
+
attribution and you've stripped the value.
|
|
165
|
+
- Do NOT pre-warm the council with the host agent's analysis or
|
|
166
|
+
identity — that primes the reviewer and collapses diversity.
|
|
167
|
+
- Do NOT silently truncate a too-large bundle — surface the size and
|
|
168
|
+
ask for narrower scope.
|
|
169
|
+
- Do NOT auto-spend tokens under `personal.autonomy: on` — the cost
|
|
170
|
+
gate fires every time, no exceptions.
|
|
171
|
+
- Do NOT reuse SDK clients across invocations — re-load keys via
|
|
172
|
+
`load_*_key()` each call.
|
|
173
|
+
|
|
174
|
+
## Gotchas
|
|
175
|
+
|
|
176
|
+
Real failure modes seen in the wild:
|
|
177
|
+
|
|
178
|
+
- **Bias-by-framing:** agent pastes "I think X is the right answer,
|
|
179
|
+
what do you think?" → council rubber-stamps. Symptom: 100%
|
|
180
|
+
convergence, zero unique insight. Fix: send artefact only, neutral
|
|
181
|
+
preamble, no host reasoning.
|
|
182
|
+
- **Silent budget overrun:** `cost_budget_exceeded` mid-fan-out, agent
|
|
183
|
+
retries one member to "complete" the council. Result: skewed sample,
|
|
184
|
+
hidden spend. Fix: surface partial result, stop, ask user.
|
|
185
|
+
- **Identity leak:** roadmap text contains "the agent decided…" —
|
|
186
|
+
reviewer infers host model and mirrors it. Fix: redact host-agent
|
|
187
|
+
identity strings before bundling.
|
|
188
|
+
|
|
189
|
+
| Anti-pattern | Why it's wrong | Correct approach |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| "Pre-warm" the council with the agent's own analysis. | Bias attack — collapses the reviewer to a yes-man. | Send the artefact text only. |
|
|
192
|
+
| Paste the host-agent identity ("I am Augment / Claude Code…") | Identity primes the reviewer's model. | Neutrality preamble in `prompts.py` already handles this. |
|
|
193
|
+
| Silently truncate a too-large bundle. | Misleads the reviewer into thinking they saw the whole thing. | Bundler raises `BundleTooLarge`; surface and ask for narrower scope. |
|
|
194
|
+
| Reuse the same SDK client across calls without re-loading the key. | Leaks the key in long-lived process state. | Each invocation builds fresh clients from `load_*_key()`. |
|
|
195
|
+
| Auto-spend tokens under `personal.autonomy: on`. | Autonomy ≠ permission to spend money. | Always ask before consultation, even under autonomy. |
|
|
196
|
+
|
|
197
|
+
## Redaction expectations
|
|
198
|
+
|
|
199
|
+
The bundler's redaction pass strips:
|
|
200
|
+
|
|
201
|
+
- Paths matching `~/.config/agent-config/*.key`.
|
|
202
|
+
- Lines starting with `Authorization:`.
|
|
203
|
+
- `key = …`, `secret = …`, `token = …`, `password = …` assignments.
|
|
204
|
+
- `sk-ant-…` and `sk-…` token-like strings.
|
|
205
|
+
|
|
206
|
+
If your artefact contains other sensitive data (customer names,
|
|
207
|
+
internal hostnames, contractual prose) you are responsible for
|
|
208
|
+
scrubbing it before bundling. The redaction pass is a **floor**, not
|
|
209
|
+
a ceiling.
|
|
210
|
+
|
|
211
|
+
## Cost awareness
|
|
212
|
+
|
|
213
|
+
Every consultation hits a paid API. The orchestrator enforces
|
|
214
|
+
per-invocation caps from `ai_council.cost_budget`:
|
|
215
|
+
|
|
216
|
+
- `max_input_tokens` / `max_output_tokens` — token caps across all members.
|
|
217
|
+
- `max_total_usd` — per-invocation USD ceiling. `0` disables the USD ceiling (token caps still apply).
|
|
218
|
+
- `max_calls` — maximum number of council members per invocation.
|
|
219
|
+
- `daily_limit_usd` — rolling 24h spend cap across all `/council`
|
|
220
|
+
invocations. `0` disables. Persists in
|
|
221
|
+
`~/.config/agent-config/council-spend.jsonl` (mode 0600). Breach
|
|
222
|
+
fires `on_overrun(event)` with `event.breach_kind == "daily"` and,
|
|
223
|
+
if the callback returns False or is absent, tags the member
|
|
224
|
+
`daily_budget_exceeded` instead of `cost_budget_exceeded`.
|
|
225
|
+
|
|
226
|
+
Prices come from `.agent-prices.md` (gitignored, refreshed weekly).
|
|
227
|
+
The pricing module bootstraps it from `_default_prices.py` on first
|
|
228
|
+
use and flags it stale when older than the most recent Monday 00:00
|
|
229
|
+
UTC.
|
|
230
|
+
|
|
231
|
+
### Pre-call estimate format
|
|
232
|
+
|
|
233
|
+
Before the cost gate, compute `orchestrator.estimate(question, members,
|
|
234
|
+
table)` and render a per-member table. Heuristic: `len(text) / 4` for
|
|
235
|
+
input, member's `max_tokens` ceiling for output (actual spend is
|
|
236
|
+
usually lower).
|
|
237
|
+
|
|
238
|
+
> External council call — billable
|
|
239
|
+
>
|
|
240
|
+
> Mode: roadmap · Target: `agents/roadmaps/<name>.md` (~3 KB after redaction)
|
|
241
|
+
>
|
|
242
|
+
> | member | est. in / out tokens | est. USD |
|
|
243
|
+
> |---------------------------------|---------------------:|---------:|
|
|
244
|
+
> | anthropic / claude-sonnet-4-5 | ~750 / 1024 | $0.0176 |
|
|
245
|
+
> | openai / gpt-4o | ~750 / 1024 | $0.0121 |
|
|
246
|
+
> | **total** | | **$0.0297** |
|
|
247
|
+
>
|
|
248
|
+
> Budget: 50k in / 20k out tokens · USD ceiling: $0.50
|
|
249
|
+
>
|
|
250
|
+
> 1. Run the consultation
|
|
251
|
+
> 2. Cancel
|
|
252
|
+
|
|
253
|
+
### Stale price-table gate
|
|
254
|
+
|
|
255
|
+
If `pricing.is_stale(table)` returns true, ask before proceeding:
|
|
256
|
+
|
|
257
|
+
> Price table is stale (last_updated: YYYY-MM-DD)
|
|
258
|
+
> 1. Refresh now (`python3 scripts/update_prices.py`)
|
|
259
|
+
> 2. Continue with the stale table
|
|
260
|
+
> 3. Cancel
|
|
261
|
+
|
|
262
|
+
Do not silently auto-refresh — the user keeps control.
|
|
263
|
+
|
|
264
|
+
### Mid-flow overrun callback (`on_overrun`)
|
|
265
|
+
|
|
266
|
+
The orchestrator runs members **sequentially**. Before each member
|
|
267
|
+
whose projected spend would breach a cap, it invokes the
|
|
268
|
+
`on_overrun(event)` callback. The callback returns `True` to proceed
|
|
269
|
+
with that member (raises the effective ceiling for THIS call only)
|
|
270
|
+
or `False` to skip and record `cost_budget_exceeded`. The callback
|
|
271
|
+
fires again for every subsequent breaching member — the user keeps
|
|
272
|
+
control on each step.
|
|
273
|
+
|
|
274
|
+
> Cost budget overrun — pausing before next member
|
|
275
|
+
>
|
|
276
|
+
> Member: openai / gpt-4o (member 2 of 2)
|
|
277
|
+
> Already spent: ~620 in / ~480 out tokens · $0.0094
|
|
278
|
+
> Next call estimate: ~750 in / 1024 out tokens · $0.0121
|
|
279
|
+
> **Projected total after this call: $0.0215** (ceiling: $0.0150)
|
|
280
|
+
>
|
|
281
|
+
> 1. Continue with this member
|
|
282
|
+
> 2. Skip this member (records `cost_budget_exceeded`, continues with the rest)
|
|
283
|
+
|
|
284
|
+
Without `on_overrun`, breaching short-circuits all remaining members
|
|
285
|
+
(v1 fallback). Do not retry silently. Surface the partial result and
|
|
286
|
+
ask the user.
|
|
287
|
+
|
|
288
|
+
## Multi-round debate (`rounds:N`)
|
|
289
|
+
|
|
290
|
+
`consult(..., rounds=N)` enables 2-3 round critique loops. Round 1
|
|
291
|
+
runs the standard single-round flow. Round 2+ rebuilds the user
|
|
292
|
+
prompt as `<original artefact> + <prior round, anonymised>` so each
|
|
293
|
+
member can refine, agree, or push back on the previous critique
|
|
294
|
+
without seeing which provider produced which point.
|
|
295
|
+
|
|
296
|
+
| Property | Behaviour |
|
|
297
|
+
|---|---|
|
|
298
|
+
| Anonymisation | Provider/model identity is stripped. Reviewers are labelled `Reviewer A / B / C…` in input order. |
|
|
299
|
+
| Errored prior responses | Skipped — they reveal nothing useful and can leak provider error formats. |
|
|
300
|
+
| Cost budget | Accumulates across rounds. A round-2 call that breaches the cap fires `on_overrun` exactly like a round-1 breach. |
|
|
301
|
+
| Daily limit | Same — every billable round-2 call records spend in the rolling 24h ledger. |
|
|
302
|
+
| Return value | Final round only. Use `on_round_complete(round_idx, responses)` to capture intermediate rounds for rendering. |
|
|
303
|
+
|
|
304
|
+
> Iron Law: anonymisation is non-negotiable. If you ever need to
|
|
305
|
+
> surface "which model said what" between rounds, that is a different
|
|
306
|
+
> feature — debug-only, off by default, never enabled in user-facing
|
|
307
|
+
> output. The neutrality contract dies the moment a member learns it
|
|
308
|
+
> is talking to Claude vs GPT in round 2.
|
|
309
|
+
|
|
310
|
+
Pre-call estimate must surface the round count: total = `N × single-round cost`. Render inline:
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
External council call — billable · 2 rounds
|
|
314
|
+
Round 1: artefact only
|
|
315
|
+
Round 2: artefact + anonymised round 1 critiques
|
|
316
|
+
|
|
317
|
+
| member | per-round | × 2 |
|
|
318
|
+
|--------------------|----------:|--------:|
|
|
319
|
+
| anthropic/sonnet | $0.0176 | $0.0352 |
|
|
320
|
+
| openai/gpt-4o | $0.0121 | $0.0242 |
|
|
321
|
+
| **total** | | $0.0594 |
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
## See also
|
|
325
|
+
|
|
326
|
+
- `/council` command — the user-facing entry point.
|
|
327
|
+
- `subagent-orchestration` skill — internal multi-agent variant (no
|
|
328
|
+
network, no spend, but no diversity of weights either).
|
|
329
|
+
- `scripts/ai_council/prompts.py` — neutrality preamble + per-mode
|
|
330
|
+
system prompts.
|
|
331
|
+
- `scripts/ai_council/bundler.py` — redaction pattern set + size
|
|
332
|
+
guard.
|
|
333
|
+
- `docs/customization.md` § `ai_council.*` — settings reference.
|
|
@@ -28,8 +28,8 @@ Do NOT use when:
|
|
|
28
28
|
|
|
29
29
|
### What to generate
|
|
30
30
|
|
|
31
|
-
1. **Controller** — Single Action (invokable). Read `agents/docs/controller.md` and
|
|
32
|
-
2. **FormRequest** — Validation rules, `authorize()` via policies. Read
|
|
31
|
+
1. **Controller** — Single Action (invokable). Read `agents/docs/controller.md` and `../../../docs/guidelines/php/controllers.md`.
|
|
32
|
+
2. **FormRequest** — Validation rules, `authorize()` via policies. Read `../../../docs/guidelines/php/validations.md`.
|
|
33
33
|
3. **Resource** — JSON response transformation. Read `agents/docs/api-resources.md`.
|
|
34
34
|
4. **Route** — Add to the correct versioned route file.
|
|
35
35
|
5. **Policy** — If authorization is needed.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: blade-ui
|
|
3
|
-
description: "
|
|
3
|
+
description: "Use when the project's frontend stack is Blade — dispatched by `directives/ui/{apply,review,polish}.py`. Covers views, components, partials, layouts, and view logic."
|
|
4
4
|
source: package
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -81,7 +81,7 @@ For every dependency, mark:
|
|
|
81
81
|
|
|
82
82
|
### 5. Consult engineering memory
|
|
83
83
|
|
|
84
|
-
Via [`memory-access`](
|
|
84
|
+
Via [`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md) call
|
|
85
85
|
`retrieve(types=["architecture-decisions", "ownership"],
|
|
86
86
|
keys=<changed paths + changed symbol>, limit=5)`. Surface:
|
|
87
87
|
|
|
@@ -84,7 +84,7 @@ Gather all available evidence before forming any hypothesis:
|
|
|
84
84
|
- Read each file in the call chain to understand the data flow.
|
|
85
85
|
- Check existing context docs (`agents/contexts/`) for the affected area.
|
|
86
86
|
- **Consult engineering memory.** Via
|
|
87
|
-
[`memory-access`](
|
|
87
|
+
[`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md) call
|
|
88
88
|
`retrieve(types=["historical-patterns", "incident-learnings"],
|
|
89
89
|
keys=[<error class>, <affected file paths>], limit=3)`. A prior
|
|
90
90
|
matching pattern or incident is the single most reliable accelerator
|
|
@@ -12,7 +12,7 @@ execution:
|
|
|
12
12
|
|
|
13
13
|
## When to use
|
|
14
14
|
|
|
15
|
-
Triggered when user invokes a slash command. The `slash-
|
|
15
|
+
Triggered when user invokes a slash command. The `slash-command-routing-policy` rule (always loaded) handles core behavior — this skill adds context inference and GitHub API patterns.
|
|
16
16
|
|
|
17
17
|
## Procedure: Execute a command
|
|
18
18
|
|
|
@@ -117,7 +117,7 @@ Required sections in this order:
|
|
|
117
117
|
### 4. Enforce the size budget
|
|
118
118
|
|
|
119
119
|
Normative source: [`size-enforcement`](../../rules/size-enforcement.md) +
|
|
120
|
-
`guidelines/agent-infra/size-and-scope.md`.
|
|
120
|
+
`docs/guidelines/agent-infra/size-and-scope.md`.
|
|
121
121
|
|
|
122
122
|
| Category | Target |
|
|
123
123
|
|---|---|
|
|
@@ -66,5 +66,5 @@ Read all PR commits → identify net effect → write single Conventional Commit
|
|
|
66
66
|
## References
|
|
67
67
|
|
|
68
68
|
- Rule: `commit-conventions` — format, types, scope
|
|
69
|
-
- Guideline: `guidelines/php/git.md` — selection rules, anti-patterns, checklist
|
|
69
|
+
- Guideline: `docs/guidelines/php/git.md` — selection rules, anti-patterns, checklist
|
|
70
70
|
- Command: `/commit` — uses this skill
|
|
@@ -57,7 +57,7 @@ Only after this analysis, proceed with optimization.
|
|
|
57
57
|
**What does NOT belong here:**
|
|
58
58
|
- Coding standards (→ `.augment/rules/` and `.augment/guidelines/`)
|
|
59
59
|
- Architecture principles like SOLID, KISS, DRY (→ `.augment/rules/architecture.md`)
|
|
60
|
-
- PHP conventions (→
|
|
60
|
+
- PHP conventions (→ `../../../docs/guidelines/php/`)
|
|
61
61
|
- Scope control rules (→ `.augment/rules/scope-control.md`)
|
|
62
62
|
- Language/tone rules (→ `.augment/rules/language-and-tone.md`)
|
|
63
63
|
- Detailed module documentation (→ `app/Modules/README.md`)
|
|
@@ -115,7 +115,7 @@ both. Instead, reference with a table:
|
|
|
115
115
|
| What | Where |
|
|
116
116
|
|---|---|
|
|
117
117
|
| PHP coding rules | `.augment/rules/php-coding.md` |
|
|
118
|
-
| Controller guidelines |
|
|
118
|
+
| Controller guidelines | `../../../docs/guidelines/php/controllers.md` |
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
## Line Budget Enforcement
|
|
@@ -127,13 +127,13 @@ If important information is missing:
|
|
|
127
127
|
- Compare with requirements, tickets, current behavior, tests, existing patterns
|
|
128
128
|
- Identify likely cause and smallest correct change
|
|
129
129
|
- **Consult memory — invariants and prior decisions.** Via
|
|
130
|
-
[`memory-access`](
|
|
130
|
+
[`memory-access`](../../../docs/guidelines/agent-infra/memory-access.md), call
|
|
131
131
|
`retrieve(types=["domain-invariants", "architecture-decisions"], keys=<touched paths>, limit=3)`.
|
|
132
132
|
A matching `domain-invariant` is a hard constraint — violating it =
|
|
133
133
|
regression, surface the conflict before proceeding. A matching
|
|
134
134
|
`architecture-decision` explains *why* the current shape exists; plan
|
|
135
135
|
around it, do not silently overturn it. Cite matching `id`s in the plan.
|
|
136
|
-
See [`engineering-memory-data-format`](
|
|
136
|
+
See [`engineering-memory-data-format`](../../../docs/guidelines/agent-infra/engineering-memory-data-format.md)
|
|
137
137
|
for the schema.
|
|
138
138
|
|
|
139
139
|
### 4. Define expected behavior first
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flux
|
|
3
|
-
description: "
|
|
3
|
+
description: "Use when the project uses `livewire/flux` — dispatched by `directives/ui/{apply,review,polish}.py`. Covers Flux components, slots, variants, and form primitives."
|
|
4
4
|
source: package
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -20,7 +20,7 @@ Do NOT use when:
|
|
|
20
20
|
|
|
21
21
|
## Conventions
|
|
22
22
|
|
|
23
|
-
→ See guideline `guidelines/php/git.md` for branch naming, commit messages, PR conventions.
|
|
23
|
+
→ See guideline `docs/guidelines/php/git.md` for branch naming, commit messages, PR conventions.
|
|
24
24
|
→ See `commit-conventions` rule for commit format, types, and scope rules.
|
|
25
25
|
→ Use `conventional-commits-writing` skill for generating/reviewing commit messages.
|
|
26
26
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: guideline-writing
|
|
3
|
-
description: "Use when creating or editing a guideline in
|
|
3
|
+
description: "Use when creating or editing a guideline in docs/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'."
|
|
4
4
|
source: package
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ source: package
|
|
|
10
10
|
|
|
11
11
|
## When to use
|
|
12
12
|
|
|
13
|
-
* Creating a new guideline in
|
|
13
|
+
* Creating a new guideline in `docs/guidelines/{topic}/{name}.md`
|
|
14
14
|
* Rewriting an existing guideline (not a typo fix)
|
|
15
15
|
* Extracting reference material out of a bloated skill or rule
|
|
16
16
|
* Consolidating repeated explanations from multiple skills
|
|
@@ -42,7 +42,7 @@ Creating or materially rewriting a guideline **must** go through Understand
|
|
|
42
42
|
|
|
43
43
|
* **Understand** — which skills or rules will cite this guideline? If the
|
|
44
44
|
answer is "none", the guideline has no home — stop.
|
|
45
|
-
* **Research** — **inspect** `guidelines/` for overlap and grep
|
|
45
|
+
* **Research** — **inspect** `docs/guidelines/` for overlap and grep
|
|
46
46
|
`.agent-src.uncompressed/` for pages that already cover the topic.
|
|
47
47
|
**Analyze** 1–2 peer guidelines in the same topic folder for tone.
|
|
48
48
|
* **Draft** — propose location (topic folder + filename) and outline. Only
|
|
@@ -50,7 +50,7 @@ Creating or materially rewriting a guideline **must** go through Understand
|
|
|
50
50
|
|
|
51
51
|
### 1. Pick the right topic folder
|
|
52
52
|
|
|
53
|
-
Folders under
|
|
53
|
+
Folders under `docs/guidelines/`:
|
|
54
54
|
|
|
55
55
|
| Folder | Contents |
|
|
56
56
|
|---|---|
|
|
@@ -89,7 +89,7 @@ approval-gated flow as for skills and rules.
|
|
|
89
89
|
A guideline is useless if nothing cites it. Before closing the task:
|
|
90
90
|
|
|
91
91
|
* Add a link from at least one skill or rule using the pattern
|
|
92
|
-
`→ See 'guidelines/{topic}/{name}.md' for full X`.
|
|
92
|
+
`→ See 'docs/guidelines/{topic}/{name}.md' for full X`.
|
|
93
93
|
* Keep the citing skill/rule **executable** — do not hollow it out into a
|
|
94
94
|
pointer. (Normative source: [`preservation-guard`](../../rules/preservation-guard.md).)
|
|
95
95
|
|
|
@@ -107,16 +107,16 @@ Above the split signal, break by sub-topic into sibling files in the same folder
|
|
|
107
107
|
|
|
108
108
|
### 6. Validate
|
|
109
109
|
|
|
110
|
-
* Run `python3 scripts/skill_linter.py
|
|
110
|
+
* Run `python3 scripts/skill_linter.py docs/guidelines/{topic}/{name}.md`
|
|
111
111
|
→ 0 FAIL (guidelines have relaxed linting but must still parse).
|
|
112
|
-
* Run `bash scripts/compress.sh --sync` →
|
|
112
|
+
* Run `bash scripts/compress.sh --sync` → projects updates.
|
|
113
113
|
* Run `python3 scripts/check_references.py` → no broken links.
|
|
114
114
|
* Run the full CI pipeline locally (see `Taskfile.yml` in this repo for
|
|
115
115
|
the script list) — must exit 0 except for tolerated warnings.
|
|
116
116
|
|
|
117
117
|
## Output format
|
|
118
118
|
|
|
119
|
-
1. Complete guideline at
|
|
119
|
+
1. Complete guideline at `docs/guidelines/{topic}/{name}.md`
|
|
120
120
|
2. At least one skill or rule linking to it
|
|
121
121
|
3. Linter + `check_references.py` clean
|
|
122
122
|
4. `bash scripts/compress.sh --sync` confirmation
|
|
@@ -135,7 +135,7 @@ Above the split signal, break by sub-topic into sibling files in the same folder
|
|
|
135
135
|
* Do NOT add `type:` or `alwaysApply:` to the frontmatter
|
|
136
136
|
* Do NOT embed numbered procedures — those belong in skills
|
|
137
137
|
* Do NOT create an orphan guideline with no inbound links
|
|
138
|
-
* Do NOT
|
|
138
|
+
* Do NOT reintroduce `.agent-src.uncompressed/guidelines/` — relocated to `docs/guidelines/`
|
|
139
139
|
|
|
140
140
|
## Cloud Behavior
|
|
141
141
|
|
|
@@ -151,7 +151,7 @@ validation:
|
|
|
151
151
|
* Self-check the body: reference material, no numbered procedures,
|
|
152
152
|
named in a topic folder.
|
|
153
153
|
* Tell the user to save under
|
|
154
|
-
|
|
154
|
+
`docs/guidelines/{topic}/{name}.md` and run
|
|
155
155
|
`task sync && task lint-skills && task check-refs` locally before
|
|
156
156
|
committing.
|
|
157
157
|
* Do not call the linter, ref-checker, or compressor — they only
|
|
@@ -161,7 +161,7 @@ validation:
|
|
|
161
161
|
|
|
162
162
|
Good guideline name + description:
|
|
163
163
|
|
|
164
|
-
> Path: `guidelines/agent-infra/size-and-scope.md`
|
|
164
|
+
> Path: `docs/guidelines/agent-infra/size-and-scope.md`
|
|
165
165
|
> Description: "Golden size rules for rules, skills, commands, and guidelines"
|
|
166
166
|
|
|
167
167
|
Bad:
|
|
@@ -119,7 +119,7 @@ Choose one:
|
|
|
119
119
|
|
|
120
120
|
A grep that returns zero hits is **not** proof of no overlap. Knowledge in
|
|
121
121
|
this package is distributed across **four surfaces** — `skills/`, `rules/`,
|
|
122
|
-
`guidelines/`, `commands/`. Skip any of them and recall drops to ~25 %.
|
|
122
|
+
`docs/guidelines/`, `commands/`. Skip any of them and recall drops to ~25 %.
|
|
123
123
|
Run all four steps before declaring "no overlap":
|
|
124
124
|
|
|
125
125
|
**Step 1 — list all four surfaces.** Directory taxonomy is free evidence:
|
|
@@ -127,11 +127,11 @@ Run all four steps before declaring "no overlap":
|
|
|
127
127
|
```bash
|
|
128
128
|
ls .agent-src.uncompressed/skills/ \
|
|
129
129
|
.agent-src.uncompressed/rules/ \
|
|
130
|
-
|
|
130
|
+
docs/guidelines/ \
|
|
131
131
|
.agent-src.uncompressed/commands/
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
Sub-directories matter — `guidelines/php/patterns/`, `guidelines/agent-infra/`,
|
|
134
|
+
Sub-directories matter — `docs/guidelines/php/patterns/`, `docs/guidelines/agent-infra/`,
|
|
135
135
|
etc. carry topic taxonomies a flat file scan misses. Always descend one level.
|
|
136
136
|
|
|
137
137
|
**Step 2 — grep with both vocabularies.** Search for **solution-words** *and*
|
|
@@ -194,7 +194,7 @@ The output of this skill is a **curated proposal** under
|
|
|
194
194
|
`.augment/templates/agents/proposal.example.md` (shipped by the
|
|
195
195
|
package). This is the input to the five-stage pipeline
|
|
196
196
|
(capture → classify → propose → gate → upstream); see
|
|
197
|
-
[`self-improvement-pipeline`](
|
|
197
|
+
[`self-improvement-pipeline`](../../../docs/guidelines/agent-infra/self-improvement-pipeline.md).
|
|
198
198
|
|
|
199
199
|
Mandatory fields the draft MUST fill:
|
|
200
200
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: livewire
|
|
3
|
-
description: "
|
|
3
|
+
description: "Use when the project's frontend stack is Livewire — dispatched by `directives/ui/{apply,review,polish}.py`. Covers reactive state, events, lifecycle hooks, and component/view separation."
|
|
4
4
|
source: package
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -70,13 +70,13 @@ Override files **must match the original filename** exactly:
|
|
|
70
70
|
| `.augment/rules/php-coding.md` | `agents/overrides/rules/php-coding.md` |
|
|
71
71
|
| `.augment/skills/eloquent/SKILL.md` | `agents/overrides/skills/eloquent.md` |
|
|
72
72
|
| `.augment/commands/feature-plan.md` | `agents/overrides/commands/feature-plan.md` |
|
|
73
|
-
|
|
|
73
|
+
| `../../../docs/guidelines/php/controllers.md` | `agents/overrides/guidelines/php-controllers.md` |
|
|
74
74
|
| `.augment/templates/roadmaps.md` | `agents/overrides/templates/roadmaps.md` |
|
|
75
75
|
|
|
76
76
|
**Skills** are flattened: the original lives in a directory (`skills/{name}/SKILL.md`),
|
|
77
77
|
but the override is a single file (`skills/{name}.md`).
|
|
78
78
|
|
|
79
|
-
**Guidelines** are flattened with a prefix: `guidelines/php/controllers.md` → `guidelines/php-controllers.md`.
|
|
79
|
+
**Guidelines** are flattened with a prefix: `docs/guidelines/php/controllers.md` → `guidelines/php-controllers.md`.
|
|
80
80
|
|
|
81
81
|
**Templates** keep their original filename: `templates/roadmaps.md` → `templates/roadmaps.md`.
|
|
82
82
|
|
|
@@ -54,7 +54,7 @@ Trigger keywords in the task or surrounding code:
|
|
|
54
54
|
- allowlist constants: `private const SUPPORTED_FOO = [Type::A, Type::B]`
|
|
55
55
|
|
|
56
56
|
→ Run the sniff test in
|
|
57
|
-
[`guidelines/php/patterns/strategy.md`](
|
|
57
|
+
[`docs/guidelines/php/patterns/strategy.md`](../../../docs/guidelines/php/patterns/strategy.md#sniff-test--when-an-enumstring-discriminator-wants-to-become-a-strategy).
|
|
58
58
|
Two "yes" answers → propose Strategy + Registry **before** adding the new
|
|
59
59
|
branch. Three "yes" → it is already overdue and the refactor is the change.
|
|
60
60
|
|
|
@@ -16,12 +16,12 @@ Use this skill when:
|
|
|
16
16
|
- Debugging flaky E2E tests
|
|
17
17
|
- Configuring Playwright for CI/CD
|
|
18
18
|
|
|
19
|
-
**Guideline:**
|
|
19
|
+
**Guideline:** `../../../docs/guidelines/e2e/playwright.md` — full conventions, config templates, CI setup.
|
|
20
20
|
**Rule:** `.augment/rules/e2e-testing.md` — constraints enforced during E2E test work.
|
|
21
21
|
|
|
22
22
|
## Procedure: Write Playwright tests
|
|
23
23
|
|
|
24
|
-
1. **Read the guideline** —
|
|
24
|
+
1. **Read the guideline** — `../../../docs/guidelines/e2e/playwright.md` for detailed conventions.
|
|
25
25
|
2. **Check Playwright config** — `playwright.config.ts` for browsers, base URL, timeouts.
|
|
26
26
|
3. **Check existing tests** — match patterns in `tests/e2e/` or `e2e/`.
|
|
27
27
|
4. **Check test utilities** — look for page objects, fixtures, helpers.
|
|
@@ -136,7 +136,7 @@ Structure checks:
|
|
|
136
136
|
- No duplication between README and `/docs/` (drifts over time)
|
|
137
137
|
- Each `/docs/` file linked from README is self-contained (not just a fragment)
|
|
138
138
|
|
|
139
|
-
→ See `guidelines/docs/readme-size-and-splitting.md` for full thresholds,
|
|
139
|
+
→ See `docs/guidelines/docs/readme-size-and-splitting.md` for full thresholds,
|
|
140
140
|
splitting strategies, anti-patterns.
|
|
141
141
|
|
|
142
142
|
## Output format
|
|
@@ -100,7 +100,7 @@ lines: split deep content to `/docs/` or `references/`. Use `<details>`
|
|
|
100
100
|
only for secondary, bulky content — never for install, first example, or
|
|
101
101
|
requirements.
|
|
102
102
|
|
|
103
|
-
→ See `guidelines/docs/readme-size-and-splitting.md` for thresholds,
|
|
103
|
+
→ See `docs/guidelines/docs/readme-size-and-splitting.md` for thresholds,
|
|
104
104
|
splitting strategies (reference-split, deep-link tables, collapsibles),
|
|
105
105
|
multi-audience handling, anti-patterns.
|
|
106
106
|
|