@event4u/agent-config 5.6.1 → 5.8.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.
Files changed (225) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/agent-status.md +1 -1
  3. package/.agent-src/commands/agents/audit.md +1 -1
  4. package/.agent-src/commands/agents/init.md +1 -1
  5. package/.agent-src/commands/agents/user/accept.md +3 -3
  6. package/.agent-src/commands/agents/user/init.md +4 -4
  7. package/.agent-src/commands/agents/user/show.md +3 -3
  8. package/.agent-src/commands/agents/user/update.md +3 -3
  9. package/.agent-src/commands/agents/user.md +1 -1
  10. package/.agent-src/commands/agents.md +1 -1
  11. package/.agent-src/commands/analytics/prune.md +1 -1
  12. package/.agent-src/commands/analytics/show.md +1 -1
  13. package/.agent-src/commands/analytics.md +1 -1
  14. package/.agent-src/commands/bug-fix.md +1 -1
  15. package/.agent-src/commands/challenge-me.md +1 -1
  16. package/.agent-src/commands/chat-history/import.md +1 -1
  17. package/.agent-src/commands/chat-history/learn.md +1 -1
  18. package/.agent-src/commands/chat-history/show.md +1 -1
  19. package/.agent-src/commands/chat-history.md +1 -1
  20. package/.agent-src/commands/check-current-md.md +1 -1
  21. package/.agent-src/commands/condense.md +1 -1
  22. package/.agent-src/commands/context.md +1 -1
  23. package/.agent-src/commands/cost-report.md +13 -8
  24. package/.agent-src/commands/council.md +3 -3
  25. package/.agent-src/commands/create-pr/description-only.md +1 -1
  26. package/.agent-src/commands/create-pr.md +1 -1
  27. package/.agent-src/commands/e2e-heal.md +1 -1
  28. package/.agent-src/commands/e2e-plan.md +1 -1
  29. package/.agent-src/commands/feature.md +1 -1
  30. package/.agent-src/commands/fix/ci.md +1 -1
  31. package/.agent-src/commands/fix/portability.md +1 -1
  32. package/.agent-src/commands/fix/pr-bot-comments.md +1 -1
  33. package/.agent-src/commands/fix/pr-comments.md +1 -1
  34. package/.agent-src/commands/fix/pr-developer-comments.md +1 -1
  35. package/.agent-src/commands/fix/refs.md +1 -1
  36. package/.agent-src/commands/fix/seeder.md +1 -1
  37. package/.agent-src/commands/fix.md +1 -1
  38. package/.agent-src/commands/judge.md +1 -1
  39. package/.agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/.agent-src/commands/knowledge/forget.md +1 -1
  41. package/.agent-src/commands/knowledge/ingest.md +1 -1
  42. package/.agent-src/commands/knowledge/list.md +1 -1
  43. package/.agent-src/commands/knowledge.md +1 -1
  44. package/.agent-src/commands/memory/add.md +1 -1
  45. package/.agent-src/commands/memory/learn-low-impact.md +1 -1
  46. package/.agent-src/commands/memory/load.md +1 -1
  47. package/.agent-src/commands/memory/mine-session.md +1 -1
  48. package/.agent-src/commands/memory/promote.md +1 -1
  49. package/.agent-src/commands/memory/propose.md +1 -1
  50. package/.agent-src/commands/memory.md +1 -1
  51. package/.agent-src/commands/mode.md +1 -1
  52. package/.agent-src/commands/optimize/agents-dir.md +1 -1
  53. package/.agent-src/commands/optimize/augmentignore.md +1 -1
  54. package/.agent-src/commands/optimize/rtk.md +1 -1
  55. package/.agent-src/commands/optimize/skills.md +1 -1
  56. package/.agent-src/commands/optimize.md +1 -1
  57. package/.agent-src/commands/orchestrate.md +1 -1
  58. package/.agent-src/commands/override/create.md +1 -1
  59. package/.agent-src/commands/override/manage.md +1 -1
  60. package/.agent-src/commands/override.md +1 -1
  61. package/.agent-src/commands/package-reset.md +1 -1
  62. package/.agent-src/commands/prediction-pool.md +234 -0
  63. package/.agent-src/commands/profile/activate.md +81 -0
  64. package/.agent-src/commands/profile/deactivate.md +68 -0
  65. package/.agent-src/commands/profile/show.md +70 -0
  66. package/.agent-src/commands/profile.md +68 -0
  67. package/.agent-src/commands/project-health.md +1 -1
  68. package/.agent-src/commands/quality-fix.md +1 -1
  69. package/.agent-src/commands/roadmap/process-full.md +1 -1
  70. package/.agent-src/commands/roadmap/process-phase.md +1 -1
  71. package/.agent-src/commands/roadmap/process-step.md +1 -1
  72. package/.agent-src/commands/roadmap.md +1 -1
  73. package/.agent-src/commands/set-cost-profile.md +9 -9
  74. package/.agent-src/commands/skill/preview.md +3 -3
  75. package/.agent-src/commands/skill.md +1 -1
  76. package/.agent-src/commands/skills/discover.md +1 -1
  77. package/.agent-src/commands/skills.md +1 -1
  78. package/.agent-src/commands/sync-agent-settings.md +3 -3
  79. package/.agent-src/commands/sync-gitignore/fix.md +1 -1
  80. package/.agent-src/commands/sync-gitignore.md +1 -1
  81. package/.agent-src/commands/update-form-request-messages.md +1 -1
  82. package/.agent-src/presets/README.md +1 -1
  83. package/.agent-src/profiles/README.md +1 -1
  84. package/.agent-src/rules/non-destructive-by-default.md +2 -1
  85. package/.agent-src/skills/check-refs/SKILL.md +1 -1
  86. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +1 -1
  87. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  88. package/.agent-src/skills/jira-integration/SKILL.md +1 -1
  89. package/.agent-src/skills/markitdown/SKILL.md +1 -1
  90. package/.agent-src/skills/prediction-pool-optimizer/SKILL.md +314 -0
  91. package/.agent-src/skills/prediction-pool-optimizer/evals/triggers.json +20 -0
  92. package/.agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +175 -0
  93. package/.agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +109 -0
  94. package/.agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
  95. package/.agent-src/skills/script-writing/SKILL.md +1 -1
  96. package/.agent-src/skills/token-optimizer/SKILL.md +1 -1
  97. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -1
  98. package/.agent-src/templates/agent-settings.md +7 -7
  99. package/.agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  100. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +54 -6
  101. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +1 -1
  102. package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +9 -7
  103. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +9 -10
  104. package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +17 -4
  105. package/.claude-plugin/marketplace.json +370 -364
  106. package/CHANGELOG.md +108 -0
  107. package/README.md +2 -2
  108. package/config/agent-settings.template.yml +11 -2
  109. package/config/discovery/packs.yml +11 -0
  110. package/config/discovery/session-profiles.yml +37 -0
  111. package/config/discovery/workspaces.yml +1 -1
  112. package/config/profiles/balanced.ini +1 -1
  113. package/config/profiles/full.ini +1 -1
  114. package/config/profiles/minimal.ini +1 -1
  115. package/dist/discovery/deprecation-report.md +1 -1
  116. package/dist/discovery/discovery-manifest.json +254 -100
  117. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  118. package/dist/discovery/discovery-manifest.summary.md +4 -3
  119. package/dist/discovery/orphan-report.md +1 -1
  120. package/dist/discovery/packs.json +41 -6
  121. package/dist/discovery/trust-report.md +3 -3
  122. package/dist/discovery/workspaces.json +19 -6
  123. package/dist/mcp/registry-manifest.json +3 -3
  124. package/dist/server/io/substituteTemplate.js +3 -3
  125. package/dist/server/io/substituteTemplate.js.map +1 -1
  126. package/dist/server/routes/settings.js +2 -2
  127. package/dist/server/routes/settings.js.map +1 -1
  128. package/dist/server/schemas/settings.js +4 -2
  129. package/dist/server/schemas/settings.js.map +1 -1
  130. package/dist/ui/assets/{index-DVsyUMZe.js → index-5lFqAKL0.js} +2 -2
  131. package/dist/ui/assets/index-5lFqAKL0.js.map +1 -0
  132. package/dist/ui/index.html +1 -1
  133. package/docs/architecture/current-onboard-baseline.md +3 -3
  134. package/docs/architecture.md +2 -2
  135. package/docs/catalog.md +11 -5
  136. package/docs/contracts/adr-level-6-productization.md +1 -1
  137. package/docs/contracts/command-clusters.md +2 -0
  138. package/docs/contracts/config-presets.md +2 -2
  139. package/docs/contracts/cost-profile-defaults.md +5 -5
  140. package/docs/contracts/discovery-manifest.schema.json +1 -1
  141. package/docs/contracts/explain-trace.schema.json +3 -3
  142. package/docs/contracts/memory-visibility-v1.md +15 -7
  143. package/docs/contracts/profile-system.md +2 -2
  144. package/docs/contracts/session-profile-overlay.md +120 -0
  145. package/docs/contracts/settings-api.md +3 -3
  146. package/docs/contracts/value-report-schema.md +14 -1
  147. package/docs/customization.md +47 -5
  148. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +47 -11
  149. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +16 -2
  150. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +1 -1
  151. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +106 -0
  152. package/docs/decisions/ADR-037-cost-profile-untangle.md +117 -0
  153. package/docs/decisions/ADR-038-canonical-settings-path.md +66 -0
  154. package/docs/decisions/ADR-039-claude-skills-untracked.md +139 -0
  155. package/docs/decisions/ADR-rule-kernel-and-router.md +1 -1
  156. package/docs/decisions/INDEX.md +4 -0
  157. package/docs/development.md +12 -0
  158. package/docs/getting-started.md +2 -2
  159. package/docs/guidelines/agent-infra/layered-settings.md +10 -4
  160. package/docs/installation.md +3 -3
  161. package/docs/setup/mcp-client-config.md +1 -1
  162. package/docs/skills-catalog.md +5 -1
  163. package/docs/value.md +9 -7
  164. package/docs/wizard.md +1 -1
  165. package/llms.txt +4 -0
  166. package/package.json +1 -1
  167. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  168. package/scripts/_cli/cmd_doctor.py +3 -2
  169. package/scripts/_cli/cmd_explain.py +1 -1
  170. package/scripts/_cli/cmd_versions.py +2 -2
  171. package/scripts/_cli/explain_last/inputs.py +11 -8
  172. package/scripts/_cli/explain_last/sections/inputs.py +1 -1
  173. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  174. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  175. package/scripts/_lib/agent_settings.py +54 -6
  176. package/scripts/_lib/agent_src.py +30 -0
  177. package/scripts/_lib/value_ladder.py +99 -2
  178. package/scripts/_lib/value_report.py +30 -16
  179. package/scripts/ai_council/modes.py +1 -1
  180. package/scripts/ai_council/session.py +5 -1
  181. package/scripts/audit_command_surface.py +7 -1
  182. package/scripts/audit_initial_context.py +26 -2
  183. package/scripts/check_gate_paths.py +117 -0
  184. package/scripts/check_references.py +51 -2
  185. package/scripts/check_skill_requires.py +143 -0
  186. package/scripts/check_test_coverage_diff.py +180 -0
  187. package/scripts/compile_router.py +5 -1
  188. package/scripts/condense.py +92 -4
  189. package/scripts/config/session_profiles.py +492 -0
  190. package/scripts/council_cli.py +5 -1
  191. package/scripts/first-run.sh +11 -11
  192. package/scripts/hook_manifest.yaml +15 -7
  193. package/scripts/hooks/dispatch_hook.py +8 -0
  194. package/scripts/install +14 -1
  195. package/scripts/install-hooks.sh +2 -1
  196. package/scripts/install.py +203 -433
  197. package/scripts/install_anthropic_key.sh +1 -1
  198. package/scripts/install_openai_key.sh +1 -1
  199. package/scripts/inventory_abstraction_budget.py +6 -1
  200. package/scripts/lint_agents_md.py +11 -4
  201. package/scripts/lint_discovery_vocabulary.py +5 -5
  202. package/scripts/lint_hook_concern_budget.py +5 -1
  203. package/scripts/lint_marketplace.py +18 -7
  204. package/scripts/lint_roadmap_ci_steps.py +5 -1
  205. package/scripts/lint_roadmap_complexity.py +5 -1
  206. package/scripts/lint_value_dashboard.py +1 -1
  207. package/scripts/mcp_server/prompts.py +5 -1
  208. package/scripts/prediction-pool/adapters/_schema.md +42 -0
  209. package/scripts/prediction-pool/adapters/kicktipp.yml +23 -0
  210. package/scripts/prediction-pool/poisson_sim.py +167 -0
  211. package/scripts/prediction-pool/pool_winsim.py +236 -0
  212. package/scripts/prediction-pool/score_ev.py +188 -0
  213. package/scripts/profile_staleness_hook.py +69 -0
  214. package/scripts/render_value_md.py +1 -0
  215. package/scripts/roadmap_progress_hook.py +56 -6
  216. package/scripts/schemas/agent-settings.schema.json +77 -0
  217. package/scripts/schemas/skill.schema.json +7 -0
  218. package/scripts/smoke_quickstart.py +7 -6
  219. package/scripts/sync_agent_settings.py +12 -5
  220. package/scripts/validate_agent_settings.py +124 -0
  221. package/scripts/validate_decision_engine.py +5 -1
  222. package/templates/minimal/.agent-settings.yml +1 -1
  223. package/dist/ui/assets/index-DVsyUMZe.js.map +0 -1
  224. package/scripts/measure_roadmap_trajectory.py +0 -112
  225. package/scripts/verify_roadmap_closure.py +0 -327
@@ -0,0 +1,234 @@
1
+ ---
2
+ model_tier: inherit
3
+ name: prediction-pool
4
+ tier: 2
5
+ description: "Fill a prediction pool (kicktipp, football/basketball WM): optimize expected points under the rules, enter tips via Playwright. Triggers 'Tippspiel', 'kicktipp', 'predict the pool'."
6
+ skills: [prediction-pool-optimizer]
7
+ suggestion:
8
+ eligible: true
9
+ trigger_description: "fill my Tippspiel, kicktipp tips, predict the pool, betting/prediction pool predictions, optimize my pool tips for an event"
10
+ trigger_context: "user wants tips for a prediction pool (kicktipp etc.) for an upcoming sports event and wants them computed and/or entered into the pool's web UI"
11
+ workspaces:
12
+ - small-business
13
+ packs:
14
+ - fun
15
+ lifecycle: experimental
16
+ trust:
17
+ level: experimental
18
+ install:
19
+ default: false
20
+ removable: true
21
+ ---
22
+
23
+ # /prediction-pool
24
+
25
+ `/prediction-pool [<event>] [--pool-url <url>] [--council off|event|match] [--submit] [--fresh|--continue]`
26
+
27
+ Fills out a **prediction pool** (kicktipp-style company pools: football
28
+ WM, basketball WM, …) by optimizing for the **maximum expected points
29
+ under the pool's actual scoring rules** — not for the most likely match
30
+ outcome. Researches market odds, computes expected-value tips, presents a
31
+ table for approval, then enters them into the pool's web UI via Playwright.
32
+
33
+ The cognition lives in the [`prediction-pool-optimizer`](../skills/prediction-pool-optimizer/SKILL.md)
34
+ skill (rules → market odds → expected value → participant field → tip).
35
+ This command is the orchestrator: event selection, the persisted analysis,
36
+ the optional AI-council pass, the Playwright entry, and the human gates.
37
+
38
+ **Hard gates (always):**
39
+ - **You log in.** The agent opens the page headful; it never reads,
40
+ stores, or types your credentials.
41
+ - **The agent never submits.** It fills the candidate tips and stops —
42
+ *you* submit, unless you passed `--submit` (or say so this turn).
43
+ - **Not betting or financial advice.** Decision support for a game; you
44
+ approve and submit.
45
+
46
+ **Block on ambiguity:** an unresolvable event, a missing pool URL with no
47
+ saved analysis, or contradictory flags (`--fresh` and `--continue`,
48
+ `--council` value not in `off|event|match`) halts with a precise message —
49
+ no silent best-guess.
50
+
51
+ ## Inputs
52
+
53
+ | Input | Required | Meaning |
54
+ |---|---|---|
55
+ | `<event>` | no | The event to tip (e.g. "Football WM 2026"). Omitted → the command proposes 1–3 upcoming events + free input (Step 1). |
56
+ | `--pool-url <url>` | once per event | The pool's tip page. Saved into the per-event analysis; reused on later runs. |
57
+ | `--council off\|event\|match` | no | AI-council depth for the analysis. Default `off`; the command offers it at Step 4. `event` = one pass over the whole sheet; `match` = per-match (costlier). |
58
+ | `--submit` | no | Pre-authorize the agent to submit after entry. Default: never submit. |
59
+ | `--fresh` / `--continue` | no | Force a new analysis vs. build on the saved one (Step 2). Default: ask. |
60
+
61
+ ## Steps
62
+
63
+ ### 1. Resolve the event (block on ambiguity)
64
+
65
+ - `<event>` supplied → use it; derive a slug (`football-wm-2026`).
66
+ - **Omitted → propose, then stop and wait.** Name 1–3 *upcoming* events
67
+ (use the current date; research what is imminent) and offer free input:
68
+
69
+ ```
70
+ > Which event should I generate tips for?
71
+ >
72
+ > 1. <imminent event A>
73
+ > 2. <imminent event B>
74
+ > 3. <imminent event C>
75
+ > 4. Something else — name it
76
+ ```
77
+
78
+ ### 2. Resolve the per-event analysis (state ground-truth)
79
+
80
+ Look for `agents/tmp/prediction-pool/<slug>.md`.
81
+
82
+ - **None →** start a new analysis (created at Step 9, never before).
83
+ - **Exists →** read it. Then:
84
+ - It was **edited externally** since the last run (mtime newer than the
85
+ last `## Run <ts>` header, or it no longer parses) → surface that and
86
+ ask **merge / overwrite / abort** — never silently overwrite manual edits.
87
+ - Otherwise ask **build on it** (`--continue`) or **start fresh**
88
+ (`--fresh`); the flags pre-answer this for non-interactive runs.
89
+
90
+ The analysis holds the pool URL, the parsed rules, the current tip state,
91
+ and standing notes — so re-tuning later is fast.
92
+
93
+ ### 3. Read the pool rules FIRST
94
+
95
+ Resolve the pool URL (`--pool-url` → saved analysis → ask). Then run the
96
+ optimizer skill's **rules pass** against the pool's rule page: exact result
97
+ vs. goal-difference vs. tendency points, bonus questions, joker rules,
98
+ quote/rarity scoring, special rules, deadlines, strategy limits. **Enumerate
99
+ every open question as an explicit checklist** (scores AND every bonus /
100
+ award / special question) — that list is the run's contract; each entry must
101
+ reach an answer. **No tips before the rules are understood** — the whole
102
+ strategy depends on them.
103
+
104
+ ### 4. Run the optimizer + offer the AI-council pass
105
+
106
+ Run [`prediction-pool-optimizer`](../skills/prediction-pool-optimizer/SKILL.md),
107
+ adapted to the event's sport (football / basketball / …): a **de-vigged
108
+ consensus across the 5–10 biggest publicly-viewable bookmakers**
109
+ (sharp-weighted, never one portal) as the primary signal → expected value
110
+ under the Step-3 rules → participant field → tip. **Answer every entry on the
111
+ Step-3 checklist** — scores AND every bonus / award / special question (top
112
+ scorer, "team of the top scorer", group winners, most cards …); none blank.
113
+ Tournament/outright/award probabilities come from real markets **or** the
114
+ skill's executed Poisson helper — **never** a hallucinated "I simulated
115
+ 10,000 runs".
116
+
117
+ **Offer the AI-council pass (default off).** Unless `--council` is set,
118
+ ask once:
119
+
120
+ ```
121
+ > Run the AI council over the analysis for a sharper second opinion?
122
+ >
123
+ > 1. No — use my analysis as is
124
+ > 2. Yes, per event — one council pass over the whole tip sheet
125
+ > 3. Yes, per match — each match judged separately (more accurate, costlier)
126
+ ```
127
+
128
+ When on, run **graduated** to control cost: a cheap single-model pass
129
+ flags the riskiest matches first, then the full council reviews only the
130
+ flagged matches (`event`) or every match (`match`). Fold the council's
131
+ verdicts back into the table before Step 5. Council spend always asks
132
+ first per [`ai-council`](../../../core/.agent-src.uncondensed/skills/ai-council/SKILL.md).
133
+
134
+ ### 5. Output the approval table — ask whether & where to enter
135
+
136
+ Present the tips exactly as they would be entered, then **wait**:
137
+
138
+ | Match | Tip | Prob / EV | Risk | 1-line reason | Books used |
139
+ |---|---|---|---|---|---|
140
+
141
+ Follow with group standings, the full bracket, **and a bonus/special-answer
142
+ table with one row per open question from the Step-3 checklist — every entry
143
+ answered, none blank**:
144
+
145
+ | Question | Answer | Prob / EV | Risk | 1-line reason | Source (market / model) |
146
+ |---|---|---|---|---|---|
147
+
148
+ Then ask **whether to enter** and **into which pool** (the saved URL, a
149
+ different one, or none). Do **not** write the analysis yet (Step 9) — tips
150
+ are not yet confirmed.
151
+
152
+ ### 6. Enter via Playwright (you log in)
153
+
154
+ Open the pool page **headful**. **You log in yourself** — the agent waits
155
+ and never touches credentials. Resolve the platform adapter:
156
+
157
+ - **Known platform** (e.g. kicktipp) → load the declarative selector map
158
+ `scripts/prediction-pool/adapters/<platform>.yml` (field → CSS selector). The
159
+ generic, trusted driver fills the inputs from the map — the adapter is
160
+ **data, not code**.
161
+ - **Unknown platform → vision-assisted synthesis.** Screenshot the page,
162
+ identify the tip inputs, **highlight them** and ask you to confirm the
163
+ mapping, then fill from the confirmed ephemeral map. No code is run from
164
+ an untrusted source.
165
+
166
+ ### 7. Stop before submit
167
+
168
+ Fill the candidate results and **stop**. *You* press submit. The agent
169
+ submits only if `--submit` was passed or you authorize it **this turn**
170
+ (mirrors [`non-destructive-by-default`](../../../core/.agent-src.uncondensed/rules/non-destructive-by-default.md)).
171
+
172
+ ### 8. Offer a second pool
173
+
174
+ Ask whether to also enter the same (or re-optimized) tips on another
175
+ pool / site. If yes, loop Steps 3–7 for that pool.
176
+
177
+ ### 9. Persist / extend the analysis (only now)
178
+
179
+ Append a run-stamped section to `agents/tmp/prediction-pool/<slug>.md`: pool
180
+ URL(s), parsed rules, the entered tips with state `entered, not submitted`
181
+ (or `submitted` if Step 7 submitted), council verdicts if any, and
182
+ standing notes. Append-only — earlier runs stay as history. This is the
183
+ base the next run reads (Step 2).
184
+
185
+ ### 10. New-platform adapter — offer to contribute (gated)
186
+
187
+ If Step 6 synthesized a new selector map, offer to (a) save it locally and
188
+ (b) open a **PR** adding `scripts/prediction-pool/adapters/<platform>.yml` so
189
+ coverage grows for everyone. The PR carries **declarative selector data
190
+ only** — never executable code — and only on explicit permission (no
191
+ auto-commit, no auto-push).
192
+
193
+ ### 11. Report
194
+
195
+ Print: event + slug, pool URL(s), rules summary, council depth used,
196
+ matches tipped, entry result (`entered, not submitted` | `submitted`),
197
+ adapter (`<platform>.yml` | `vision-synthesized` | `pr-offered`), analysis
198
+ file path. No commit. No push.
199
+
200
+ ## Rules
201
+
202
+ - **You log in; the agent never handles credentials.** Headful only.
203
+ - **The agent never submits** unless `--submit` or this-turn authorization.
204
+ - **Rules first.** No tips before the pool's scoring is parsed.
205
+ - **Answer every open question.** Scores AND every bonus / award / special
206
+ question; a run that ships scorelines only and leaves bonus questions blank
207
+ is incomplete.
208
+ - **Consensus odds, not one portal.** Build the base from a de-vigged,
209
+ sharp-weighted consensus across the 5–10 biggest viewable books — never
210
+ mirror a single bookmaker.
211
+ - **No hallucinated simulation.** Outright odds or executed Poisson code —
212
+ never a claimed-but-unrun Monte-Carlo.
213
+ - **Analysis is written only after tips are confirmed** (Step 9), never
214
+ before — and never silently over an externally edited file.
215
+ - **Adapters are declarative data, not code.** Unknown platforms use the
216
+ ephemeral vision path; contributed adapters are selector maps via PR.
217
+ - **AI council is opt-in, default off**, and always asks before spending.
218
+ - **Not betting or financial advice.** A fun tool; you decide and submit.
219
+ - **No commit, no push, no PR** without explicit permission (the adapter
220
+ PR offer is gated).
221
+ - **Kill-switch.** Ships `lifecycle: experimental` · `install.default:
222
+ false`. Disable = remove the command + `prediction-pool-optimizer` skill, then
223
+ regenerate the projected tool trees.
224
+
225
+ ## See also
226
+
227
+ - [`prediction-pool-optimizer`](../skills/prediction-pool-optimizer/SKILL.md) — the
228
+ rules → odds → EV → field → tip cognition.
229
+ - [`scripts/prediction-pool/adapters/_schema.md`](../../../scripts/prediction-pool/adapters/_schema.md) —
230
+ the declarative adapter data contract (for PR contributions).
231
+ - [`ai-council`](../../../core/.agent-src.uncondensed/skills/ai-council/SKILL.md) —
232
+ the optional second-opinion pass (Step 4).
233
+ - [`playwright-architect`](../../../core/.agent-src.uncondensed/skills/playwright-architect/SKILL.md) —
234
+ browser-automation patterns for the entry step.
@@ -0,0 +1,81 @@
1
+ ---
2
+ model_tier: medium
3
+ name: profile:activate
4
+ tier: 2
5
+ cluster: profile
6
+ sub: activate
7
+ description: Activate a session profile — surface only the named profile/pack closure plus core artefacts, no persistence
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "activate the laravel/po/finance profile for this session, switch my surface to X, only show me X commands"
11
+ trigger_context: "user wants the surfaced commands/skills narrowed to one audience for the current session"
12
+ workspaces:
13
+ - agent-config-maintainer
14
+ packs:
15
+ - meta
16
+ ---
17
+
18
+ # /profile activate
19
+
20
+ Activate one or more session profiles / packs. Writes the expanded
21
+ `runtime.active_packs` overlay and re-biases the surfaced set for the rest
22
+ of the session.
23
+
24
+ ## Instructions
25
+
26
+ ### 1. Resolve + write the overlay
27
+
28
+ Run the helper (it resolves aliases ↔ pack ids, fails fast on a
29
+ not-installed pack, expands the `requires_hint` closure, and writes the
30
+ overlay **atomically**):
31
+
32
+ ```bash
33
+ python3 -m scripts.config.session_profiles activate <name…> --json
34
+ ```
35
+
36
+ - **Exit 0** → parse the JSON: `active_packs`, `closure_added`, `notes`.
37
+ - **Exit 2** (`error:` on stderr) → the token is unknown or the pack is
38
+ not installed. Surface the error verbatim and stop — do **not** write a
39
+ partial overlay. Suggest `/profile show` or naming an installed pack.
40
+
41
+ ### 2. Confirm the switch
42
+
43
+ Announce, using the helper's output:
44
+
45
+ ```
46
+ > profile active: {active_packs}
47
+ > surfaced: {N} commands, {M} skills ({H} hidden behind inactive packs)
48
+ ```
49
+
50
+ Get the counts from `python3 -m scripts.config.session_profiles show --json`.
51
+
52
+ ### 3. Re-bias the surface for the rest of the session
53
+
54
+ From now until `/profile deactivate` (or a new session), when the user asks
55
+ "what can I do" / you list commands or skills, surface **only** the active
56
+ set. Compute it with:
57
+
58
+ ```bash
59
+ python3 -m scripts.config.session_profiles surface --json
60
+ ```
61
+
62
+ `shown` = surface these; `hidden` = do not list them proactively. Core /
63
+ unscoped artefacts are always in `shown`.
64
+
65
+ **Execution is NOT gated.** If the user invokes a command/skill that is in
66
+ `hidden`, run it anyway and prepend one line:
67
+
68
+ ```
69
+ > note: `{name}` is from an inactive pack ({packs}); `/profile activate {pack}` to surface it.
70
+ ```
71
+
72
+ ## Gotchas
73
+
74
+ - Never write to `.agent-settings.yml` — the overlay is local-only.
75
+ - Multiple names union: `/profile activate laravel po`.
76
+ - A corrupt overlay is ignored (fail-open) → re-run activate to repair it.
77
+
78
+ ## See also
79
+
80
+ - [`/profile show`](show.md) · [`/profile deactivate`](deactivate.md)
81
+ - [`docs/contracts/session-profile-overlay.md`](../../../docs/contracts/session-profile-overlay.md)
@@ -0,0 +1,68 @@
1
+ ---
2
+ model_tier: medium
3
+ name: profile:deactivate
4
+ tier: 2
5
+ cluster: profile
6
+ sub: deactivate
7
+ description: Deactivate the session profile — clear the overlay (or drop named packs) so the full surface returns
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "deactivate the profile, clear my session profile, show everything again, reset the surface"
11
+ trigger_context: "user wants the full command/skill surface back after a profile was active"
12
+ workspaces:
13
+ - agent-config-maintainer
14
+ packs:
15
+ - meta
16
+ ---
17
+
18
+ # /profile deactivate
19
+
20
+ Clear the session-profile overlay (or remove only named packs). This is the
21
+ **explicit** deactivation trigger locked in Phase 0 (option a) — there is
22
+ no silent session reset.
23
+
24
+ ## Instructions
25
+
26
+ ### 1. Clear or narrow
27
+
28
+ - `/profile deactivate` (no args) → clear the whole overlay:
29
+
30
+ ```bash
31
+ python3 -m scripts.config.session_profiles deactivate --json
32
+ ```
33
+
34
+ - `/profile deactivate <name…>` → remove only the **named packs** from the
35
+ active set (never their closure), so a shared dependency survives:
36
+
37
+ ```bash
38
+ python3 -m scripts.config.session_profiles deactivate <name…> --json
39
+ ```
40
+
41
+ Parse `active_packs` from the JSON.
42
+
43
+ ### 2. Confirm
44
+
45
+ ```
46
+ > profile cleared — full surface restored.
47
+ ```
48
+
49
+ or, when packs remain:
50
+
51
+ ```
52
+ > active now: {active_packs} — full surface for everything else.
53
+ ```
54
+
55
+ ### 3. Restore the full surface
56
+
57
+ Resume surfacing every command/skill from this point in the session.
58
+
59
+ ## Gotchas
60
+
61
+ - Deactivation is idempotent — clearing an empty overlay is a no-op.
62
+ - Only named packs are removed: `/profile deactivate laravel` leaves `php`
63
+ and `engineering-base` active (they are their own entries in the overlay).
64
+ Removing a pack only ever widens the surface, never hides something.
65
+
66
+ ## See also
67
+
68
+ - [`/profile activate`](activate.md) · [`/profile show`](show.md)
@@ -0,0 +1,70 @@
1
+ ---
2
+ model_tier: medium
3
+ name: profile:show
4
+ tier: 2
5
+ cluster: profile
6
+ sub: show
7
+ description: Show the active session profile — active packs and surfaced/hidden command+skill counts (observability surface)
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "show my active profile, which packs are active, what's surfaced this session, profile status"
11
+ trigger_context: "user wants to see the current session-profile state and what it hides"
12
+ workspaces:
13
+ - agent-config-maintainer
14
+ packs:
15
+ - meta
16
+ ---
17
+
18
+ # /profile show
19
+
20
+ Observability surface for the session-profile overlay — the diagnostic the
21
+ council required so a "wrong commands in /help" symptom is one command away
22
+ from its cause.
23
+
24
+ ## Instructions
25
+
26
+ ### 1. Read the state
27
+
28
+ ```bash
29
+ python3 -m scripts.config.session_profiles show --json
30
+ ```
31
+
32
+ Fields: `active_packs`, `commands_shown`, `skills_shown`, `hidden_total`.
33
+
34
+ ### 2. Report
35
+
36
+ - **No overlay** (`active_packs` empty):
37
+
38
+ ```
39
+ > no profile active — full surface (everything shown).
40
+ ```
41
+
42
+ - **Overlay active:**
43
+
44
+ ```
45
+ > active packs: {active_packs}
46
+ > surfaced: {commands_shown} commands, {skills_shown} skills
47
+ > hidden behind inactive packs: {hidden_total}
48
+ > clear with /profile deactivate
49
+ ```
50
+
51
+ ### 3. (Optional) list the split
52
+
53
+ If the user asks *which* artefacts are hidden, run:
54
+
55
+ ```bash
56
+ python3 -m scripts.config.session_profiles surface --json
57
+ ```
58
+
59
+ and list `hidden[]` (name + packs). Keep it scannable; group by pack if long.
60
+
61
+ ## Gotchas
62
+
63
+ - `show` never writes — pure read, safe to run anytime.
64
+ - A corrupt overlay reads as empty (fail-open); if `show` reports "no
65
+ profile" right after an `activate`, the overlay file is malformed —
66
+ re-run `/profile activate`.
67
+
68
+ ## See also
69
+
70
+ - [`/profile activate`](activate.md) · [`/profile deactivate`](deactivate.md)
@@ -0,0 +1,68 @@
1
+ ---
2
+ model_tier: medium
3
+ name: profile
4
+ tier: 2
5
+ description: Session-profile orchestrator — activate / deactivate / show the active packs for this session (recommendation-bias surface filter, no persistence)
6
+ cluster: profile
7
+ type: orchestrator
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "activate a profile for this session, switch to the laravel/po/finance surface, show which packs are active, deactivate the profile"
11
+ trigger_context: "user wants to narrow the surfaced commands/skills to one audience for the current session without changing committed config"
12
+ workspaces:
13
+ - agent-config-maintainer
14
+ packs:
15
+ - meta
16
+ ---
17
+
18
+ # /profile
19
+
20
+ Top-level orchestrator for the `/profile` family. Activates a **session
21
+ profile** — an ephemeral `runtime.active_packs` overlay that biases which
22
+ commands/skills are *surfaced* this session, without persisting anything
23
+ to committed config.
24
+
25
+ The overlay is a runtime modulation of the existing `pack` axis, **not** a
26
+ fifth axis (ADR-010 addendum, 2026-06-02). It is written to
27
+ `.agent-settings.local.yml` (in `agents/settings/`, gitignored, deepest
28
+ layer), never the committed `.agent-settings.yml`.
29
+
30
+ ## Sub-commands
31
+
32
+ | Sub-command | Routes to | Purpose |
33
+ |---|---|---|
34
+ | `/profile activate <name…>` | `commands/profile/activate.md` | Surface only the named profile/pack closure + core artefacts |
35
+ | `/profile deactivate [name…]` | `commands/profile/deactivate.md` | Clear the overlay (or drop named packs) → full surface returns |
36
+ | `/profile show` | `commands/profile/show.md` | Active packs + surfaced/hidden counts (observability) |
37
+
38
+ `<name>` is a session-profile alias (`developer`, `po`, `finance`, `gtm`,
39
+ `content`) from `config/discovery/session-profiles.yml` **or** a raw pack
40
+ id from `config/discovery/packs.yml` (`laravel`, `php`, …). Multiple names
41
+ union their closures: `/profile activate laravel po`.
42
+
43
+ ## Key facts (locked in Phase 0)
44
+
45
+ - **Recommendation-bias only.** Activation filters the *surfaced* set
46
+ (`/help` + `<available_skills>`); execution is **never gated** — an
47
+ inactive-pack command still runs, with a one-line notice.
48
+ - **Explicit deactivation.** The overlay survives an IDE restart; clear it
49
+ with `/profile deactivate`. A new session emits a staleness *notice*
50
+ (never a silent reset — the registry-refresh Catch-22, see
51
+ `agents/settings/contexts/session-host-capability-audit.md`).
52
+ - **Fail-open.** A corrupt overlay is ignored → the full surface returns.
53
+ - **Kill-switch.** Delete `runtime.active_packs` from the local file (or
54
+ the file itself) to reset.
55
+
56
+ ## Dispatch
57
+
58
+ 1. Parse `/profile <sub-command> [args]`.
59
+ 2. Look up the sub-command above; load that file and follow its
60
+ `## Instructions` verbatim with the remaining args.
61
+ 3. Bare `/profile` (no sub-command) → run `/profile show`.
62
+ 4. Unknown sub-command → print the table and ask which the user meant.
63
+
64
+ ## See also
65
+
66
+ - [`mode`](mode.md) — the persist-to-disk precedent this command deliberately avoids.
67
+ - [`docs/decisions/ADR-010-profile-pack-preset-boundary.md`](../../docs/decisions/ADR-010-profile-pack-preset-boundary.md) — axis boundary + overlay addendum.
68
+ - [`docs/contracts/session-profile-overlay.md`](../docs/contracts/session-profile-overlay.md) — overlay schema + surface-filter contract.
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: project-health
4
4
  tier: 1
5
5
  skills: [quality-tools]
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: quality-fix
4
4
  tier: 1
5
5
  skills: [quality-tools]
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: roadmap:process-full
4
4
  tier: 2
5
5
  cluster: roadmap
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: roadmap:process-phase
4
4
  tier: 2
5
5
  cluster: roadmap
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: roadmap:process-step
4
4
  tier: 2
5
5
  cluster: roadmap
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: roadmap
4
4
  tier: 1
5
5
  description: Roadmap orchestrator — routes to create (authoring) and process-step / process-phase / process-full (autonomous execution).
@@ -1,8 +1,8 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: set-cost-profile
4
4
  tier: 1
5
- description: Change the cost_profile in .agent-settings.yml — shows each profile's meaning and applies the selection
5
+ description: Change the rule_loading_tier in .agent-settings.yml — shows each profile's meaning and applies the selection
6
6
  skills: [file-editor]
7
7
  suggestion:
8
8
  eligible: false
@@ -17,7 +17,7 @@ packs:
17
17
 
18
18
  # /set-cost-profile
19
19
 
20
- Changes `cost_profile` in `.agent-settings.yml`. Four profiles are defined in
20
+ Changes `rule_loading_tier` in `.agent-settings.yml`. Four profiles are defined in
21
21
  the [`agent-settings` template](../templates/agent-settings.md#cost-profiles):
22
22
 
23
23
  - `minimal` · `balanced` · `full` · `custom`
@@ -32,7 +32,7 @@ the [`agent-settings` template](../templates/agent-settings.md#cost-profiles):
32
32
  directly or ask the agent — the merge rules live in
33
33
  [`layered-settings`](../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules).
34
34
  - For role modes use [`/mode`](mode.md) — different concept (sets
35
- `roles.active_role`, not `cost_profile`).
35
+ `roles.active_role`, not `rule_loading_tier`).
36
36
 
37
37
  ## Steps
38
38
 
@@ -49,7 +49,7 @@ Profile names are case-insensitive on input; the file value stays lowercase.
49
49
  Read `.agent-settings.yml`. If missing, tell the user to run
50
50
  `scripts/install` first and stop — do not create the file here.
51
51
 
52
- Extract the current `cost_profile` value.
52
+ Extract the current `rule_loading_tier` value.
53
53
 
54
54
  ### 3. Load profile descriptions
55
55
 
@@ -63,7 +63,7 @@ Render the current value and present numbered choices with the hint text
63
63
  extracted in step 3:
64
64
 
65
65
  ```
66
- > Current: cost_profile = {current}
66
+ > Current: rule_loading_tier = {current}
67
67
  >
68
68
  > 1. minimal — {hint from template}
69
69
  > 2. balanced — {hint from template}
@@ -77,7 +77,7 @@ value directly — still echo the old → new line in step 6.
77
77
 
78
78
  ### 5. Write the value
79
79
 
80
- Update `cost_profile` in `.agent-settings.yml` using the
80
+ Update `rule_loading_tier` in `.agent-settings.yml` using the
81
81
  [section-aware merge rules](../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules)
82
82
  (preserve comments, preserve key order, touch only the changed field).
83
83
 
@@ -86,7 +86,7 @@ If the user picked "Keep current", do nothing and stop.
86
86
  ### 6. Confirm
87
87
 
88
88
  ```
89
- > cost_profile: {old} → {new}
89
+ > rule_loading_tier: {old} → {new}
90
90
  ```
91
91
 
92
92
  If the new profile activates a surface the user hasn't used before
@@ -106,7 +106,7 @@ steps here, that's the docs' job.
106
106
  ## Cloud Behavior
107
107
 
108
108
  On cloud surfaces (Claude.ai Web, Skills API) this command is **fully inert** —
109
- there is no `.agent-settings.yml` to write and no `cost_profile` toggle to
109
+ there is no `.agent-settings.yml` to write and no `rule_loading_tier` toggle to
110
110
  flip. Cost behaviour on those surfaces is governed by the platform itself.
111
111
 
112
112
  ## See also
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: skill:preview
4
4
  tier: 2
5
5
  cluster: skill
@@ -46,8 +46,8 @@ plain-language summary. `--format json` is machine-readable.
46
46
 
47
47
  ### 3. Present the summary
48
48
 
49
- Show the plain-language preview: the skill's execution type (a manual-execution skill
50
- renders **"instructional only — no automatic execution"**; an assisted-execution skill
49
+ Show the plain-language preview: the skill's execution type (a `manual` skill
50
+ renders **"instructional only — no automatic execution"**; an `assisted` skill
51
51
  renders its proposed actions), declared steps, tools, and any file/command
52
52
  targets. End on the contract reminder that preview shows *declared intent*, not
53
53
  a guarantee of side-effect-freeness.
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: skill
4
4
  tier: 2
5
5
  description: Single-skill orchestrator — routes to preview. Non-destructive "what will this skill do?" before you run it.
@@ -1,5 +1,5 @@
1
1
  ---
2
- model_tier: inherit
2
+ model_tier: medium
3
3
  name: skills:discover
4
4
  tier: 2
5
5
  cluster: skills