Feature asks driven by real pain points from agent sessions. Each item lists the motivating scenario and the expected tool shape.
Pain: batch_commit stages whole files atomically. Subagents asked to produce N commits from a single file edit cannot split post-hoc (sandbox blocks git reset --soft; git rebase -i is interactive).
Ask: Allow scoped staging:
batch_commit({
stage: { paths: ["Makefile"], hunks: [{ file: "Makefile", lines: "120-180" }] },
message: "feat(make): add sbom target"
})Path-level files: string[] already exists per-entry on batch_commit. Remaining gap is hunk-level staging via git add -p patch interface.
Pain: git_diff_summary is aggregate; sometimes need the actual diff text for a specific file/range. Currently Bash fallback.
Ask:
git_diff({ paths?: string[], base?: "HEAD~1", target?: "HEAD", unified?: 3 })Pain: Inspecting a subagent branch's commits uses Bash git show <sha>. Should be covered.
Ask:
git_show({ ref: "sha", stat?: boolean, paths?: string[] })Pain: Agent wants to verify staging is what it thinks before committing. Today: commit, inspect, reset (blocked), retry.
Ask: dry_run: true reports what would be committed (files, message, diff summary) without writing.
Currently Bash. Stash flows come up occasionally in agent sessions when a conflict needs to be set aside.
For release workflows: git_tag({ name: "v0.6.0", message: "Release 0.6.0", signed?: false }).
With structured output: { updated: [{ ref, oldSha, newSha }], newRefs: [...] }.
In docs/ README: state clearly that batch_commit stages listed files atomically before creating the commit, so N back-to-back calls to batch_commit on the same file cannot produce N commits with distinct content. Agents routinely expect per-call incremental semantics.
Helps agents validate calls locally before invoking. Also eases codegen for skill builders.