chore: make the workflow skills model-invocable
`disable-model-invocation: true` does not merely make a skill prefer `/name` — the model cannot invoke it at all, and its description is absent from the skill listing. So "create a PR for #2163", which is how that work actually starts, could never reach `pr-flow`. The original rationale ("procedures with side effects we'd invoke by name anyway") conflates invoking a skill, which only loads instructions, with performing the procedure it describes. Flipped `pr-flow`, `pre-push-gate`, `board-ops` and `test-servers` to model-invocable. `user-invocable` is an independent axis, so this is purely additive — every `/name` still works. `issue-create`, `issue-triage` and `release` stay deliberate. `board-ops` is in the set because `pr-flow` and `issue-create` delegate their card steps to it: a pointer from a model-invocable skill to a manual-only one is a dead end for the model. Costs weighed: the listing share goes 1,199 → 2,256 of 4,000, and a spurious load costs ~250 characters where a missed one costs a wrong base branch or an unsigned commit. The rules stay resident in AGENTS.md either way — this improves the odds of getting the procedure too, it does not become the guarantee. Eval cases committed for all four, measured at RUNS=3: pre-push-gate, board-ops and test-servers 5/5; pr-flow 4/5, with "take it through to a pull request" at 100% and the Copilot-review case borderline. Three initial cases were replaced rather than tuned green: their answers are resident in AGENTS.md, so the model answering without the skill is correct behaviour, not a miss — the rule this file already records about what makes a valid trigger case. AGENTS.md's maintenance rule now says to default to `false` and explains why, so the advice this change walks back does not get re-applied. Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
67abdf96b4
commit
94a71f48bc
8 changed files with 117 additions and 18 deletions
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: board-ops
|
||||
description: gh recipes for the Inspector project boards — add a card, move its Status, set or re-score its Priority, delete a card, and recover from a deleted single-select option. Covers board #28 (v2) and board #11 (v1), their node/field/option IDs, and the option-deletion hazard.
|
||||
disable-model-invocation: true
|
||||
disable-model-invocation: false
|
||||
---
|
||||
|
||||
# Board operations
|
||||
|
|
|
|||
22
.claude/skills/board-ops/evals/evals.json
Normal file
22
.claude/skills/board-ops/evals/evals.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"prompt": "Move the board card for issue 2189 to In Review.",
|
||||
"expect": "board-ops"
|
||||
},
|
||||
{
|
||||
"prompt": "How do I set the Priority field on a card in the v2 project board?",
|
||||
"expect": "board-ops"
|
||||
},
|
||||
{
|
||||
"prompt": "The project board rejected my Status option ID. How do I get the current ones?",
|
||||
"expect": "board-ops"
|
||||
},
|
||||
{
|
||||
"prompt": "Explain the difference between TCP and UDP.",
|
||||
"expect": null
|
||||
},
|
||||
{
|
||||
"prompt": "What year was the first Moon landing?",
|
||||
"expect": null
|
||||
}
|
||||
]
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: pr-flow
|
||||
description: Take an issue through to a merged PR — branch naming, the DCO signoff, screenshots, opening the PR against the right base, requesting a Copilot review, responding to review rounds, and closing out (manual close plus Done).
|
||||
disable-model-invocation: true
|
||||
description: Take an issue through to a merged PR in this repo, and what to do at each step. Use when asked to open, create or submit a PR; when a DCO or signoff check fails; when requesting a Copilot review or responding to review comments; when naming a branch; when attaching screenshots to a PR; or when closing out after a merge.
|
||||
disable-model-invocation: false
|
||||
---
|
||||
|
||||
# PR flow
|
||||
|
|
|
|||
22
.claude/skills/pr-flow/evals/evals.json
Normal file
22
.claude/skills/pr-flow/evals/evals.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"prompt": "I've finished the fix for issue 2071. Take it through to a pull request.",
|
||||
"expect": "pr-flow"
|
||||
},
|
||||
{
|
||||
"prompt": "How do I get Copilot to review a PR in this repo?",
|
||||
"expect": "pr-flow"
|
||||
},
|
||||
{
|
||||
"prompt": "The DCO check is red on my branch. How do I fix the commits I already pushed?",
|
||||
"expect": "pr-flow"
|
||||
},
|
||||
{
|
||||
"prompt": "What does this regex match? /^[a-z]+$/",
|
||||
"expect": null
|
||||
},
|
||||
{
|
||||
"prompt": "Translate 'good morning' into Spanish.",
|
||||
"expect": null
|
||||
}
|
||||
]
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: pre-push-gate
|
||||
description: Run the mandatory pre-push gate and diagnose a failing stage — npm run format then npm run local:gate, what each stage checks, and the known traps (stale tsc cache, symlinked worktree node_modules, concurrent runs, orphaned smoke ports).
|
||||
disable-model-invocation: true
|
||||
description: Diagnose a failing stage of this repo's pre-push gate, and run it correctly. Use when npm run local:gate or npm run validate fails; when lint, coverage, a smoke, or Storybook goes red; when a stage behaves differently inside a git worktree; when the whole run times out; or when deciding what to run before pushing.
|
||||
disable-model-invocation: false
|
||||
---
|
||||
|
||||
# The pre-push gate
|
||||
|
|
|
|||
22
.claude/skills/pre-push-gate/evals/evals.json
Normal file
22
.claude/skills/pre-push-gate/evals/evals.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"prompt": "npm run local:gate just failed at the coverage stage. What do I do?",
|
||||
"expect": "pre-push-gate"
|
||||
},
|
||||
{
|
||||
"prompt": "The Storybook stage of the gate fails in my worktree even though the tests pass. What is wrong?",
|
||||
"expect": "pre-push-gate"
|
||||
},
|
||||
{
|
||||
"prompt": "Everything in the gate started timing out at once. What causes that?",
|
||||
"expect": "pre-push-gate"
|
||||
},
|
||||
{
|
||||
"prompt": "What is 17 multiplied by 23?",
|
||||
"expect": null
|
||||
},
|
||||
{
|
||||
"prompt": "Write a limerick about a cat.",
|
||||
"expect": null
|
||||
}
|
||||
]
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: test-servers
|
||||
description: Run a composable MCP test server by hand — pick the showcase config that reproduces a given feature or bug, build test-servers, and connect with the right protocol era. Covers the stale-build hazard.
|
||||
disable-model-invocation: true
|
||||
disable-model-invocation: false
|
||||
---
|
||||
|
||||
# Running a test server
|
||||
|
|
|
|||
22
.claude/skills/test-servers/evals/evals.json
Normal file
22
.claude/skills/test-servers/evals/evals.json
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
[
|
||||
{
|
||||
"prompt": "I want to reproduce the OAuth token revocation behaviour by hand. Which test server do I run?",
|
||||
"expect": "test-servers"
|
||||
},
|
||||
{
|
||||
"prompt": "How do I start one of the composable MCP test servers with a config file?",
|
||||
"expect": "test-servers"
|
||||
},
|
||||
{
|
||||
"prompt": "I renamed a file under test-servers/src and the fixture is still running the old code. Why?",
|
||||
"expect": "test-servers"
|
||||
},
|
||||
{
|
||||
"prompt": "Sort this list alphabetically: banana, apple, cherry.",
|
||||
"expect": null
|
||||
},
|
||||
{
|
||||
"prompt": "What is the boiling point of water in Fahrenheit?",
|
||||
"expect": null
|
||||
}
|
||||
]
|
||||
Loading…
Reference in a new issue