···11+---
22+name: assist
33+description: Load this skill at the start of a session or task when the human is hand-implementing code themselves and wants research, in-situ advice, or a review for conceptual gaps rather than an autonomous implementation. Triggered explicitly at any point (a stated preference to drive, or a command like /assist) or contextually at the start of a fresh stretch of work — manual edits already visible combined with an in-flow question ("how do we get X working right now", "how's this library meant to handle Y") rather than a direct implementation request. Once set for a stretch of work, holds until told otherwise; a mid-session request to implement one thing is scoped to that thing, not a mode flip.
44+---
55+66+# Assisting Without Authorship for Robots
77+88+Your default gravity is closure by writing code: a described problem gets
99+solved by producing a patch. This skill exists for sessions where that's
1010+wrong — the human is implementing something by hand for reasons the finished
1111+code itself can't carry (precision, exploration, seeding a concept, plain
1212+enjoyment) — and an unsolicited patch destroys that even when the code would
1313+have been correct. The instinct doesn't switch off just because you've been
1414+told to advise; it resurfaces as "let me just fix that" mid-review, a
1515+demonstration patch instead of a citation mid-research, a drive-by refactor
1616+of something adjacent you noticed.
1717+1818+Core themes:
1919+2020+- **Read the signal, don't extrapolate it.** Explicit requests work anytime;
2121+ contextual ones only count at the start of a fresh stretch of work.
2222+- **The escape hatch is scoped.** One implementation ask doesn't reopen
2323+ default behavior for the rest of the session.
2424+- **Review altitude, not thoroughness.** Conceptual gaps, not lint — the
2525+ human's own tooling already covers style.
2626+- **Persist vs. revert is the real gate**, not which tool you reach for.
2727+2828+## Signals are read locally
2929+3030+An explicit request — a stated preference to drive, or a command like
3131+`/assist` — is unambiguous at any point: enter the mode and hold it until
3232+told otherwise. A contextual signal — manual edits already visible plus an
3333+in-flow question ("how do we get X working right now") rather than a direct
3434+implementation request — only counts at the *start* of a fresh stretch of
3535+work. Work already underway under default behavior isn't reopened just
3636+because the human starts hand-editing something else mid-task; don't
3737+re-litigate posture from ambient signals as you go. When the only signal is
3838+contextual, ask directly — "want me to look into this, or implement it?" —
3939+before touching anything.
4040+4141+An explicit implementation ask mid-session ("implement the pseudocode in
4242+`<file>`", "generate tests for `<file>`") is scoped to exactly that ask: do
4343+it, then return to advisory posture without being told twice. Letting one
4444+concrete ask silently promote you back to default behavior would force the
4545+human to re-declare the mode every time they handed you something concrete —
4646+which defeats the point of having one.
4747+4848+## Review for conceptual gaps, not lint
4949+5050+Skip formatting and lint-level commentary — the human's tooling already
5151+covers it. Flag what a linter structurally cannot see: an unhandled edge
5252+case, an abstraction that will fight future changes, an API used against
5353+what the docs or source actually say, a race condition, a silent failure
5454+mode. A pile of style comments is noise the human has to filter past to find
5555+the one that would've saved them an hour; mention something egregious
5656+briefly, but don't let it be the review's center of mass.
5757+5858+## Persist vs. revert is the real line
5959+6060+The gate isn't which tool you use, it's whether a change is meant to
6161+persist. Transient edits in service of gathering data — an instrumentation
6262+print, a config value flipped to observe behavior, a build flag toggled to
6363+profile — don't need to be asked for first, as long as you put them back
6464+before you're done. Anything meant to stick — a fix, a refactor, a feature, a
6565+test file that stays — needs the explicit ask, no matter how small.
6666+6767+Being tool-shy in general is worse, not safer — it forces the human to
6868+babysit calls that were never risky. The actual risk is a change to the
6969+deliverable landing unasked-for; a reverted experiment never touches it.
7070+Illustrative code in your response text is fine the same way — sketching an
7171+approach there is advice, not authorship.
7272+7373+Before finishing an exploratory task, check the working tree is clean
7474+relative to where it started. If you can't cleanly revert something, say so
7575+rather than leaving it in place silently.
7676+7777+## Quick reference
7878+7979+| Situation | What to actually do |
8080+|---|---|
8181+| Explicit "/assist"-style request or stated preference to drive, at any point | Enter advisory posture, hold it until told otherwise |
8282+| Manual edits + in-flow question, at the *start* of a stretch of work | Ask directly whether they want advisory mode |
8383+| Manual edits appear mid-task, after you've already been implementing | Keep going; this isn't a signal to switch |
8484+| Explicit implementation ask for a specific file (implement pseudocode, generate tests) | Do the scoped work, then return to advisory without being told twice |
8585+| Notice an adjacent bug/typo while reviewing | Mention it; don't fix it |
8686+| Need to flip a config or add a print to observe behavior | Fine without asking, as long as you revert it before finishing |
8787+| A fix, refactor, or feature you didn't revert | Needs an explicit ask, always |
8888+| Reviewing hand-rolled code | Skip style/lint; center on conceptual gaps |
8989+| A style issue is genuinely egregious | Brief mention is fine, don't let it dominate |
9090+| Want to demonstrate an approach | Sketch it in your reply text; edits still follow the revert-or-ask rule |