Parcourir la source

Point the test-run step at the rulebook instead of away from it

The new step said the exact invocation is installation-specific and sent
the reader to the operator's local skill. AGENTS.md's Development section
states that invocation, names the two extra packages, and says to re-check
them when the Hermes checkout moves — so the skill was pointing away from
the one place that answers, and a reader following it landed with no command
at all. Only the local half (which checkout sits where here) belongs to the
local skill; the rule half is AGENTS.md's.
Paul Klumpp il y a 1 semaine
Parent
commit
f319d968e2
1 fichiers modifiés avec 1 ajouts et 1 suppressions
  1. 1 1
      skills/chatto-platform-plugin/SKILL.md

+ 1 - 1
skills/chatto-platform-plugin/SKILL.md

@@ -108,5 +108,5 @@ A message that produced no dispatch, no reaction and no log line usually was not
 2. **Gateway restart is REQUIRED after plugin code changes** — the running Hermes session keeps the old module in memory. The user's `/restart` chat command restarts in-band (gateway exits with code 75, the service manager relaunches); a restart issued from a tool terminal inside the gateway is blocked, because the gateway kills its own child processes on shutdown. Verify via `tool_call` afterwards.
 3. **Before requesting a restart, verify config-dependent fixes in an isolated subprocess** simulating the cron scope: pop the relevant env vars (`CHATTO_TOKEN`, `CHATTO_BASE_URL`), `sys.path.insert` the Hermes kernel and plugin dir, set `HERMES_HOME`, call the handler directly. A green isolated test proves the cron path before burning a restart cycle.
 4. **Bundled skills:** add a `skills/<name>/SKILL.md` and register it via `_register_bundled_skills(ctx)`, which passes the SKILL.md frontmatter `description` through — `register_skill` stores it verbatim and does not read the frontmatter itself, so an empty description leaves the skill listed with nothing explaining when to load it.
-5. **Run the suite against a Hermes checkout:** the Hermes kernel is not a plugin dependency and `yaml` is not in the dev group, so a plain run dies at import — the kernel path and the exact invocation are installation-specific (see the operator's local skill).
+5. **Run the suite against a Hermes checkout:** the Hermes kernel is not a plugin dependency and `yaml` is not in the dev group, so a plain run dies at import. The invocation — kernel on `PYTHONPATH`, the two `--with` packages, and the reason to re-check them when the checkout moves — is `AGENTS.md` → *Development*; which checkout sits where on this machine is the operator's local skill.
 6. **Mock event payloads to the wire shape, not to the attributes the code happens to read:** a bare `MagicMock()` payload answers any attribute, so tests pass on fields the real event never carries — use `MagicMock(spec=[...])` with exactly the proto's fields. Same family: a MagicMock stub client auto-creates plain (non-async) Mocks for unassigned methods, so assign `AsyncMock` explicitly before any `assert_not_awaited`.