From ffaa3afb419f3f2501ca23b7a1e45a699558562e Mon Sep 17 00:00:00 2001 From: Defame1297 Date: Mon, 7 Sep 2026 20:36:34 +0000 Subject: [PATCH] fix(agent-audit): remove user-invocable as a hand-invoked marker disable-model-invocation and user-invocable are independent Copilot fields: the first gates whether the runtime auto-selects an agent (i.e. whether its description is a routing string), the second only gates manual invocation. An agent can be disable-model-invocation: false plus user-invocable: false and still be model-routed, so the old bullet conflated two unrelated contracts under one trigger. Fixes: #125 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EeH8SCbcrCAQrtymkNuhKP --- .../references/description-quality.md | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md b/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md index eac9c27..0b360a3 100644 --- a/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md +++ b/plugins/kyberforge/.apm/skills/agent-audit/references/description-quality.md @@ -27,15 +27,19 @@ where the body's flowchart specified two. Read the frontmatter before judging a single word. -- **`disable-model-invocation: true` or `user-invocable: false`** — the agent is hand-invoked. Its - description is never matched against user intent, so it is not a routing string. It carries **one - plain human-facing sentence** stating what the agent does. Audit it for that and nothing else. - Reporting a missing trigger clause, a missing boundary clause or absent indirect triggers on a - hand-invoked agent is a wrong finding, not a strict one. Both fields are Copilot-only and neither - is on the vendor-neutral APM allowlist, so this case arises in a Copilot `.agent.md` at - project/user scope and nowhere else. Its Claude Code counterpart has no equivalent field and stays - model-invoked, so the two halves of the pair carrying differently shaped descriptions is expected - there rather than a pair-consistency finding. +- **`disable-model-invocation: true`** — the agent is hand-invoked. Its description is never + matched against user intent, so it is not a routing string. It carries **one plain human-facing + sentence** stating what the agent does. Audit it for that and nothing else. Reporting a missing + trigger clause, a missing boundary clause or absent indirect triggers on a hand-invoked agent is a + wrong finding, not a strict one. The field is Copilot-only and not on the vendor-neutral APM + allowlist, so this case arises in a Copilot `.agent.md` at project/user scope and nowhere else. + Its Claude Code counterpart has no equivalent field and stays model-invoked, so the two halves of + the pair carrying differently shaped descriptions is expected there rather than a + pair-consistency finding. + `user-invocable: false` does not belong in this bullet: it only blocks manual invocation and is + independent of `disable-model-invocation` — an agent can be `user-invocable: false` and still + model-routed, in which case the three-part shape below still applies. It carries no + description-quality contract of its own and is out of this file's scope entirely. - **No such flag** — the agent is model-invoked and the rest of this file applies. ## The three-part shape