P1a.5: the four skills - #9
Conversation
`start`, `next`, `lesson`, and `done` as `rolling`'s skills: the loop of docs/plan.md § 5 and the coaching rules the spike settled, with the spike's fourth-wall slips corrected, calling the toolkit by name. What each skill may do is its `allowed-tools` line, and nothing wider: the `rolling-*` commands it needs, read-only git, and for `next` the Edit and Write tools, which it uses only before a task exists, to prepare a test and try its solution. No skill grants a map command, a package manager, or git that changes the tree; the checks a lesson asks of the learner are the map's own commands, verbatim, run by the tutor only when asked and through the permission prompt. `lesson` is the one skill the model may invoke, since it only re-presents the open task; `next` hands off to it through the Skill tool, which its own `Skill(rolling:lesson)` grant covers with no session-level grant. Every file of the tutor's goes through the pen: `rolling-write` for the task, the profile, the reference, and the patch; `rolling-note` for evidence, whose kind the script requires; `rolling-keep-task` for a proved task. The skills say why, once: the data directory is a protected path, and the Write tool would prompt there on every call. They also say what the first runs found the tutor doing unbidden and forbid it: reading the toolkit's source, running its commands with --help, listing the state directory, pasting code into a heredoc, and parking a file in the repository to get round the Bash tool's refusal. A seam task's solution is tried in the tree and taken out with `rolling-write patch --from-tree`; the proof is two commands, `rolling-verify --on-base` and `--on-reference`, and `next` runs no git that changes the tree at all. A skill's grants hold for the turn it was invoked in. In the learner's next plain turn the same commands prompt, once each; `done` and `lesson` say so the first time and carry on, because the rubric's "the learner can explain…" bullets are answered in that later turn and the record of the outcome is written then. One `write` lesson ran end to end on the Rallly clone, twice, in print mode with the session resumed turn by turn: route chosen and noted, a seam task built and proven both ways, the brief given with the mode first and the map's command as what done means, the diff read against the rubric with a path, a line, and a provenance per point, the identical-to-reference change noticed and said, the explain-it bullets left to the learner, and an unearned "I agree" recorded as a disagreement with the lesson left open. The checkpoint plan's 1a.5 paragraph has the run and the warts it left for the next slices. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki
The sub-scope records its own PR number, the way the earlier ones do. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki
Markdown reads a text line followed by --- as a setext heading, so the whole paragraph rendered as one. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki
|
@claude review this |
|
Claude finished @kurowski's task in 7m 4s —— View job Review of PR #9 — the four skills
Overall this holds the rules well: no skill names a script/task/profile file to the learner, 1.
|
The GitHub review of PR #9 read the next skill's inline `rolling-check-map` against the dispatch table and was right: it is an action that exits 1 on a fault, and a non-zero inline exit aborts the skill before any model turn (a probe confirmed it: zero turns, an empty result, the output in a stderr block). The skill's own instruction to tell the learner the map has a problem could never run. `rolling-show map-check` reports the same faults in words at exit 0; the skill reads that, and `rolling-check-map` keeps its exit-1 contract for authors and CI. Run against a map with `mode: sideways`, the tutor now explains the fault in one turn. Also from that review: no skill grants a map command, so the checks and setup operations the tutor runs while building a seam task ask the learner each time; the skill now says so and says to keep them few, and the plan says the recorded runs pre-approved them. The README said next's grants were toolkit commands and read-only git; it also has Edit and Write, for the test it prepares before a task exists, and says so now. Two stale "run by" cells in the toolkit table corrected while there. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki
The review workflow ran on every push to #9 and #11, finished successfully, and posted nothing, with one denied tool call each time. The code-review plugin's own command says why: with --comment and no issues found, it posts a summary with `gh pr comment`, and its skill declares that under its allowed-tools; the generated workflow allowed only the inline-comment tool, so a clean review was a denied call and silence, indistinguishable from a broken run. The allowed tools are now the ones the skill declares, exactly: inline comments for findings, `gh pr comment` for the summary, and the `gh` reads it uses to look at the pull request. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki
Checkpoint P1a, sub-scope 1a.5, the four skills. Stacked on #8, whose toolkit additions these skills call; merge #8 first, then this.
start,next,lesson,doneunderplugins/rolling/skills/, holding the loop ofdocs/plan.md§ 5 and the spike's coaching rules with its fourth-wall slips corrected.rolling-*commands each needs and read-only git; no map command, no package manager, no tree-changing git.lessonis the one model-invocable skill;nexthands off to it through the Skill tool under its own narrow grant.--help, listing the state directory, code in heredocs, parking files in the repo).writelesson ran end to end on the Rallly clone twice; the 1a.5 paragraph has the transcript read and the warts left for 1a.6, 1a.7, and P1b. Prose is reviewed by running it, perCLAUDE.md; that run is the review.Gate:
claude plugin validate --stricton the plugin and the marketplace; the toolkit suite unchanged from #8.🤖 Generated with Claude Code
https://claude.ai/code/session_01X6P54zABxhBhazCERoY1ki