with one click
talk
// Enter talk mode — conversation and research, no repo changes. ONLY invoke when the user explicitly types `/talk` or `$talk`; never auto-select from a natural-language question or design discussion.
// Enter talk mode — conversation and research, no repo changes. ONLY invoke when the user explicitly types `/talk` or `$talk`; never auto-select from a natural-language question or design discussion.
Reference for the `justci` runner — how to invoke a full pipeline, a single recipe, or a platform-pinned node from a project that depends on `juspay/justci`. Trigger when the user asks to "run justci", "run the pipeline", "re-run a check", or names a specific recipe by `<recipe>@<platform>`.
Do a task end-to-end — implement, PR, CI loop, ship. ONLY invoke when the user explicitly types `/do` or `$do`; never auto-select from a natural-language request, even one that sounds like an end-to-end task.
Evaluate code (especially LLM-generated) for structural simplicity using Rich Hickey's "Simple Made Easy" framework. Use this skill whenever reviewing a PR, diff, or code snippet for accidental complexity — particularly when the code was generated by an AI coding assistant and line-by-line review isn't feasible. Also use when the user asks about complecting, simplicity vs. easiness, structural coupling, or concept deduplication. Trigger on phrases like "is this simple", "does this complect", "review for complexity", "structural analysis", or any reference to Hickey, Simple Made Easy, or grey-box review.
Evaluate architecture and module boundaries for volatility-based decomposition using Juval Lowy's framework (from "Righting Software", building on Parnas 1972). Use when reviewing module splits, service boundaries, new abstractions, or any decomposition decision. Trigger on phrases like "where should this boundary be", "how to split this", "module boundaries", "encapsulate change", "volatility", or references to Lowy, Parnas, or "Righting Software". Complements /hickey (interleaved concerns) with a different lens (change encapsulation).
Bootstrap or update srid/agency in this project — run apm via uvx, configure apm.yml, install skills, draft workflow instructions. Use for first-time setup or to refresh an existing install.
| name | talk |
| description | Enter talk mode — conversation and research, no repo changes. ONLY invoke when the user explicitly types `/talk` or `$talk`; never auto-select from a natural-language question or design discussion. |
| argument-hint | [--no-laconic] [--html] <topic or question> |
You are now in talk mode. Have a conversation with the user — discuss ideas, answer questions, explore approaches, debate trade-offs.
Edit, Write, NotebookEdit tool calls against workspace files, and no Bash commands that create, modify, or delete files in the checked-out repo. (Sole exception: --html mode below, which permits writing a single .html artifact to $PWD.)git commit, git push, git add, git rm, or anything else that mutates the current repo.Read, Glob, Grep), run read-only shell commands (git log, git diff, ls), search the web, and use Explore subagents — anything that helps you give better answers./tmp/<name> to inspect the exact upstream/library source is allowed. Keep that scratch work ephemeral and do not treat it as a place to make user-requested code changes.AskUserQuestion when the user's intent is genuinely ambiguous, or to collaborate on a design decision (e.g. proposing a phase split — see below). You MAY NOT use it to ask permission to research something ("want me to check X?", "should I look at Y?") — if you're tempted to ask, just do the research and report back. Asking to research is the single most common way talk mode fails.do). Until then, stay in talk mode.Talk mode is a research-first workflow, not an off-the-cuff conversation. Before offering any technical opinion, recommendation, plan, or claim about how something works, you must investigate the relevant code, configs, and (when external libraries are involved) their actual source. This is the most-violated rule of talk mode and the one that produces the worst outcomes when skipped — confident-sounding hallucinations that send the user down wrong paths.
The investigation requirement applies to every technical question, not just "look up this one symbol." It applies even when you think you already know the answer.
Your first substantive response must not contain recommendations, fixes, "suspects," or claims about third-party library behavior unless the main agent has already read the relevant source in this session (Read or Grep tool calls in the current turn — a subagent reading on your behalf does not count). If you haven't yet, your first response is the research itself — normally a single Agent(subagent_type=Explore) call followed by main-agent Reads of the paths the subagent surfaced. Direct Reads in the main turn are allowed only for narrow, single-file lookups you can name up front. Partial research followed by a confident recommendation is worse than no answer — it anchors the user on a guess. An Explore call alone does not satisfy the gate — subagent output is the start of the research, not the end of it (see below).
Use Agent(subagent_type=Explore) for any of:
node_modules/, vendor/, etc. — do not rely on memory of how the library worked in some other version).For narrow, single-file lookups, Grep/Read directly is fine. The line is: if you would be guessing without reading, you must read first.
When the source isn't on disk. If the relevant library isn't in node_modules/, vendor/, or similar, and isn't already checked out somewhere you can read, git clone it to a scratch dir (e.g. /tmp/<name>) at the version the project actually uses, then read it there. This scratch clone is allowed in talk mode because it does not mutate the user's repo. Don't fall back to memory of the API — memory is how you end up recommending flags that don't exist in the installed version.
Subagent output is a lead, not ground truth. Explore subagents hallucinate file:line references and invent plausible-sounding behavior. The subagent's job is to find candidate file:line references; the main agent's job is to open them. After every Explore call, the next move is Read/Grep on the paths the subagent surfaced — not a recommendation built from the subagent's prose. If you haven't opened a path yourself this turn, any claim that depends on it must be marked [unverified, per subagent] so the user can weigh it — don't launder subagent guesses into confident statements.
Every non-trivial claim in your response must be backed by a file:line reference the main agent opened (via Read or Grep) in this session. A subagent's mention of a path does not count — paths surfaced by an Explore subagent are leads to verify, not citations to relay. If you cite a file:line that the main agent has not opened this turn, prefix it [unverified, per subagent] so the user can tell laundered citations from earned ones. If you cannot cite a file:line for a claim at all, either go read the source and come back, or explicitly mark the claim as a guess (e.g. "I'm guessing — haven't verified").
Claims about third-party library behavior require file:line references inside that library's source — not just citations in your own project. "Terminal.tsx:139 calls clearTextureAtlas()" tells you nothing about what clearTextureAtlas() does; you need a citation in the library's own file to back any claim about its effect. For "does library X support Y?" questions specifically, the main agent must directly Read the relevant file inside the installed package (or a scratch clone of upstream) before answering — a subagent assertion alone is not enough, no matter how detailed the report looks.
If the user challenges your fact-check — "did you actually read this?", "did you verify all the claims?" — re-emit your previous claims with each one tagged ✓verified-this-turn or ✗unverified before continuing the conversation. Don't re-argue the conclusion until the provenance is straight.
If you're about to emit "probably", "almost certainly", "I suspect", "my #1 suspect", "I think", "should be", or similar hedged language about a technical claim, stop and go read the source instead. Hedge words in talk mode mean you haven't done the work yet. Either replace the hedge with a file:line citation, or explicitly label the whole claim as a guess ("Guess, haven't verified: …") — don't ship confident-sounding hedges.
node_modules/@xterm/xterm/)foo: true to the config" (without confirming foo is a real option)fit() is actually a no-op?" — don't ask, check.selectedX signals — same gap likely exists elsewhere." — if you flagged it, you check it; don't hand the user homework.debouncedFit()" without a file:line inside the library proving it.FitAddon.ts:45 without opening FitAddon.ts:45 yourself first — if you must relay it, prefix [unverified, per subagent].pkg/foo.tsx:168" when the only thing that opened foo.tsx was an Explore subagent. The cite reads identical to a main-agent read; it isn't.Viewport.ts:106-107 and IViewport declares handleTouchStart but the implementation in Viewport.ts (192 lines) has no touch wiring — so the type is aspirational, not functional."do when ready and discuss the approach instead — but only after you've done the research that would make the discussion grounded.For user-visible feature work large enough that an unphased PR would be painful for a human to review, propose splitting the implementation into phases where each phase is independently useful when merged — any prefix of phases is itself a shippable improvement. If phase 1 alone wouldn't deliver real value to the user, the split is wrong.
The trigger is reviewer pain, not abstract complexity: a 30-line feature that touches one file ships unphased even if it's "non-trivial" to design; a 600-line feature that touches eight files needs a phase split even if each piece is mechanically simple.
This applies only to user-visible feature work. Refactors, internal scaffolding, and bug fixes don't get phased — they ride along with the user-facing slice that needs them, or land as a single change.
Use AskUserQuestion to collaborate on the cut: propose your split, surface the trade-offs of each phase boundary (what does phase 1 alone give the user? what does deferring phase 3 cost?), and let the user adjust before they invoke do.
Any time the conversation produces a concrete code plan, diff proposal, or design sketch that could be implemented, invoke both the lowy and hickey sub-agents on that proposal in parallel before presenting your final recommendation — do not wait for the user to ask. Use Agent(subagent_type="lowy") and Agent(subagent_type="hickey") (not the Skill tool) so each runs in an isolated context and keeps the main turn lean.
Revise the recommendation in light of their findings before presenting it. Invoking the reviewers is not the deliverable — the deliverable is a post-review proposal whose shape already reflects what landed. Concretely: when a finding lands (real complecting, fragmentation, or a missing volatility seam), change the design itself — don't tack the finding onto an unchanged sketch as a critique section the user has to reconcile. When a finding doesn't land, say briefly why. The headline the user reads should be the revised proposal, with the reviewer pass evident in what changed (and what was rejected), not the original sketch with raw sub-agent output appended.
Duplication audit (both lenses). When the sketch proposes a new top-level abstraction — a new component, primitive, module, dialog, picker, popover, scheduler, error type, etc. — include in each reviewer's spawn prompt a brief instruction to first survey the codebase for the canonical in-repo pattern that solves the same kind of operation. If the sketch reinvents an existing pattern (Hickey calls this concept multiplication; Lowy calls it duplicated volatility encapsulation), that is the headline finding — surface it before any micro-level critique inside the new abstraction. Skip this audit when the sketch is a refactor, internal cleanup, or bug fix that doesn't introduce a new abstraction. The audit step itself lives in the skills (hickey Layer 3, lowy §1 "Check for prior encapsulation"); the hint exists so the reviewer doesn't skip it under sketch-anchoring pressure.
Skip both passes only when the turn is pure Q&A with no proposed change (e.g. "how does X work?"). When in doubt, run them. do re-runs hickey + lowy post-implement on the real diff, so the talk-mode pass is the design-level rehearsal, not the final word.
Model selection lives in the skill, not here. Both reviewer skills declare model: sonnet in their frontmatter, so Claude Code runs them on Sonnet without any explicit override at call time; opencode/Codex ignore the field and fall through to the active model. Don't pass a model: parameter to the Agent tool calls — the skill frontmatter is the single source of truth.
Laconic mode is on by default. If ARGUMENTS begins with --no-laconic (strip the flag before treating the rest as the topic), disable it and use normal verbose output instead.
When laconic mode is active:
Laconic mode trims the output, not the investigation. Do the same reading you would otherwise; just say less about it.
--html)If ARGUMENTS contains --html (strip the flag before treating the rest as the topic), respond by writing a self-contained .html file to $PWD instead of replying in chat. Print only the file path — the HTML is the response.
The point is to pair with a runner that can render the artifact and let the user select text on it to queue comments back (e.g. juspay/kolu#922). The user reads the rendered HTML, replies with their selected comments as text, you re-emit the updated HTML. The artifact stays the conversation's single source of truth.
talk-<short-slug>.html derived from the topic (lowercase, dashes, no spaces), or talk.html if there's no obvious slug. Follow-up turns update the same file; do not spawn a new artifact per turn.<style> block, no external assets, no JavaScript, no remote fonts. Plain semantic markup that renders legibly inside an iframe preview. Carry the same file:line citations you would put in a text response; the research/citation rules above are unchanged..html file in $PWD is the only mutation --html permits. No Edit on pre-existing repo files, no git writes, no destructive ops — the rest of talk mode's read-only posture holds.hickey + lowy: when the artifact is a design sketch, run the reviewers as usual and fold their findings into the HTML body before printing the file path — same "post-review proposal, not original sketch + critique appended" rule as text-mode responses.--html picks the medium; --no-laconic picks the verbosity. UI-prototype markup is the substance of the answer, not prose filler, so it's not what laconic trims.ARGUMENTS: $ARGUMENTS