@ssheleg/agent-stack 0.24.1 → 0.24.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,35 @@
1
+ ## 0.24.3 — the budget stops being estimated, and two skills stop naming a file they do not ship
2
+
3
+ Hygiene from the 2026-09-13 family audit (HK-11).
4
+
5
+ - **The body budget is MEASURED.** This gate divided by a calibrated 3.9 chars/token; the
6
+ calibration drifted. Measured 2026-09-14 against the authority's tokenizer:
7
+ `agent-evals` estimated **~4961** and measured **4374**; `agent-orchestrator` estimated
8
+ **~4762** and measured **4309** — two files reported past the working limit with 300+
9
+ tokens of real headroom. make-skill v0.28.0 closed the same defect in the family
10
+ auditor by measuring. With no tokenizer installed the check now **discloses** rather
11
+ than issuing a verdict from the wrong instrument.
12
+ - **`agent-harness` and `agent-interop` named `test/validate.py`** — a repository file
13
+ that does not ship inside a skill, so it resolves at the repo root and nowhere an
14
+ installed reader stands. Both say "this pack's repository validator" now.
15
+ - **`agent-harness` declares `compatibility`**: it ships `scripts/audit_agent.py`, and a
16
+ skill that needs an interpreter says so in front matter.
17
+ - **`plugin.json`'s homepage** matches `package.json` and the forge
18
+ (`skills.sshlg.me/skills/agent-stack/`) instead of the GitHub URL.
19
+ - **The README names what loads on demand** — 27 reference files, counted per skill from
20
+ the tree, not stated — and both invocation forms (`/agent-stack:<skill>` and
21
+ `/<skill>`), because which one resolves depends on how the pack was installed. The
22
+ installer line said "both skills" over a pack of four.
23
+
24
+ ## v0.24.2 — the ledger section names the version it ships
25
+
26
+ The previous patch wrote the ledger section BEFORE bumping the version, so the
27
+ section named the version that was being replaced and the lag it existed to
28
+ close survived it. Order matters here: bump, then write the section against what
29
+ is now declared.
30
+
31
+ Nothing else changed.
32
+
1
33
  ## v0.24.1 — the ledger catches up to the version it ships
2
34
 
3
35
  A member's ledger is fixed in that member's own release. The umbrella's ratchet
package/README.md CHANGED
@@ -160,7 +160,7 @@ waterfall, and model-routing precedence.
160
160
  /plugin install agent-stack@agent-stack
161
161
  ```
162
162
 
163
- **npm installer** — copies both skills into `~/.claude/skills/`:
163
+ **npm installer** — copies all four skills into `~/.claude/skills/`:
164
164
 
165
165
  ```bash
166
166
  npx @ssheleg/agent-stack
@@ -180,6 +180,26 @@ npx --yes sshlg-skills@latest update
180
180
 
181
181
  Restart your agent afterwards — skills load at session start.
182
182
 
183
+ **Reaching a skill by name.** Claude Code routes on the description, and both
184
+ invocation forms work: `/agent-stack:agent-orchestrator` names the plugin's copy
185
+ explicitly, `/agent-orchestrator` the plain one. Which resolves depends on how this
186
+ pack was installed, so both are written here rather than one promised.
187
+
188
+ ### What loads on demand
189
+
190
+ Twenty-seven reference files ship with the four skills, each with a load trigger in
191
+ its skill body. By skill:
192
+
193
+ | Skill | References |
194
+ |---|---|
195
+ | `agent-orchestrator` | 12 — the tool-calling loop, memory and retrieval, context budgets, provider routing, the work graph, the resale wallet and the saga across database and provider API |
196
+ | `agent-harness` | 7, plus `scripts/audit_agent.py` |
197
+ | `agent-interop` | 6 — one per protocol surface, each pinning the revision it was read at |
198
+ | `agent-evals` | 2 — `otel-genai.md` (the semantic conventions an eval reads) and `statistics.md` (when a difference is a difference) |
199
+
200
+ A file with no load trigger in a body is a defect, not a bonus: the skill audit
201
+ refuses one.
202
+
183
203
  ---
184
204
 
185
205
  ## When it triggers
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/agent-stack",
3
- "version": "0.24.1",
3
+ "version": "0.24.3",
4
4
  "scripts": {
5
5
  "test": "python3 test/validate.py && python3 test/plant_guard_test.py && node test/installer_test.js && npm run test:audit",
6
6
  "test:audit": "for t in test/audit_regressions/*.py; do python3 \"$t\" || exit 1; done"
@@ -3,12 +3,12 @@
3
3
  "name": "agent-stack",
4
4
  "displayName": "Agent Stack",
5
5
  "description": "Four skills: agent-orchestrator — tool-calling loops, pipelines with checkpoints, provider routing with fallback, memory architecture, plus the wallet side of reselling LLM access; agent-evals — run/trace/thread evals, LLM judges, and fixtures grown from production; agent-interop — MCP servers and clients, A2A agent cards, the MCP Registry, and gateways; agent-harness — system prompts, tool shaping, workflow-vs-agent, and auditing an agent system.",
6
- "version": "0.24.1",
6
+ "version": "0.24.3",
7
7
  "author": {
8
8
  "name": "ssheleg",
9
9
  "url": "https://x.com/sshlg93"
10
10
  },
11
- "homepage": "https://github.com/ssheleg/agent-stack",
11
+ "homepage": "https://skills.sshlg.me/skills/agent-stack/",
12
12
  "repository": "https://github.com/ssheleg/agent-stack",
13
13
  "license": "MIT",
14
14
  "keywords": [
@@ -14,6 +14,9 @@ description: >-
14
14
  "аудит агента", "встроить агента". Not for the loop's plumbing, its evals, or its
15
15
  protocols — those are siblings.
16
16
  license: MIT
17
+ compatibility: >-
18
+ scripts/audit_agent.py runs with python3 (standard library only); no network,
19
+ no package install. Everything else in this skill is prose and needs nothing.
17
20
  ---
18
21
 
19
22
  # Agent harness — what the agent is told, and how to audit what someone else told theirs
@@ -119,7 +122,7 @@ because a decision table with two homes is one that will disagree with itself.
119
122
  ## References
120
123
 
121
124
  Each opens with its own **Load this when** line and a revision stamp — this material moves,
122
- and `test/validate.py` fails the build on a reference that does not say when it was read.
125
+ and this pack's repository validator fails the build on a reference that does not say when it was read.
123
126
 
124
127
  | File | Read it when |
125
128
  |---|---|
@@ -41,7 +41,7 @@ against the live specification rather than recalled:
41
41
  still introduced `binds` as a core concept as of 2026-08-13.
42
42
 
43
43
  So: **every reference in this skill opens with a `**Spec pinned:**` line**, and
44
- `test/validate.py` fails the build without one. That is a mechanical check, not an
44
+ This pack's repository validator fails the build without one. That is a mechanical check, not an
45
45
  aspiration — the class of error it prevents is the one where prose reads as current
46
46
  because nothing on the page says otherwise.
47
47