diff-root
Single source of truth for the diff root — the ref a change is measured from — covering the consumer contract, where the root comes from, and the per-command…
Skill by ultimatile
Chalk Labs
Need help deploying diff-root?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ultimatile-diff-root
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 2, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/diff-root
What's inside
- Skill name
diff-root- Description
- Single source of truth for the diff root — the ref a change is measured from — covering the consumer contract, where the root comes from, and the per-command range conversion. Root-using skills and their callers apply this definition by reference.
- License
- MIT
- Instructions
- 71 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Diff Root (SSOT)
Skills that use a root, and the callers that supply one, apply the rules below by reference. Do not copy these rules into them — point at them by name.
## What the root is
The **root** is the ref a change is measured from: what the branch's work is diffed and logged against.
It is a property of the work, not of the repository. Which ref the work is against is what the caller knows and the repository does not record — a branch ref carries no parent, and the reflog entry naming a branch's creation point is local, expires, and is absent from a fresh clone. No consumer can recover a root by inspecting the repository, and `git merge-base --fork-point` does not help, since it reads that same reflog.
## Consumer contract
A step that uses the root takes it as an input. It never resolves one and never defaults to one. Reached with no root, it **halts**, naming the missing input — whether or not a caller is present to ask, since the halt is the ask.
The root is one ref, not a range. Each step converts it to what its own command needs.
## Where the root comes from
The caller supplies it **per gate invocation**, and states which of two kinds that invocation is. The kind belongs to the invocation, not to the skill invoked — the same skill is one kind in one flow and the other elsewhere — and the caller is the only party that knows which.
A **coverage** invocation must hold everything the change will merge, so that no defect inside its range reaches the merge unseen. Its root is therefore the **branch the change merges into**: the PR's base, whether or not the PR exists yet. Anything else reviews something other than what merges, in one of two directions. A root ahead of the base drops commits the branch inherited without authoring, and those land unreviewed. A root behind it pulls in work other branches already merged and reviewed, which cannot be fixed from here and yields findings indefinitely.
An **incremental** invocation reviews only what is new since a point some coverage invocation already held, for early feedback on that increment. Its root is that point — usually the last approved commit, named as a SHA because a branch ref moves off it. It establishes no coverage of its own, so every commit that lands must still fall inside some coverage invocation's range.
A caller that does not know the merge target **asks the user**. Do not substitute a guess — not the repository default branch, not the ref the branch was cut from, not a fork point.
## Spelling
A root is either a **branch** or a **commit**. A commit root — a SHA or tag — is a revision already: use it unchanged, and note it never reaches a forge argument, since no PR opens against a SHA.
A branch root is supplied as a **bare branch name**, and that is the only spelling a caller may pass.
Two metavariables keep the uses apart, and every rule below and in every consumer spells the one it means:
- `<root>` — the root as supplied.
- `<root-rev>` — its revision spelling. For a branch root that is `origin/<root>`; for a commit root the two are the same string.
**Revision arguments take `<root-rev>`** — `git log`, `git diff`, `git merge-base`, and anything else resolving a ref.
**A branch name on the forge takes `<root>`** — `gh pr create --base`, `gh pr edit --base`. So does a comparison against this repository's default branch, which is read prefixed and must have that prefix stripped before comparing, since `<root>` carries none.
One input spelling is what keeps this decidable. A rule accepting either could not tell a remote-tracking ref from a branch whose own first segment happens to match a remote's name — `upstream/release` under an `upstream` remote is both readings at once, and picking wrong selects a different history and a different PR base.
**One repository.** These rules assume `origin` is the repository the work merges into — the one the branch is pushed to and the PR opens in. A cross-fork arrangement, where `origin` is a fork and the PR targets a different repository, is outside them: a bare branch name cannot name a repository, so a root supplied there would send the gates to the fork's branch while the PR targets the other one's. In that arrangement, halt and surface it rather than stretching these rules over it.
Where a rule needs the repository default branch, read it bare, in one block:
```bash
default=$(git symbolic-ref --short refs/remotes/origin/HEAD | sed 's@^origin/@@')
test -n "$default" || { echo "remote HEAD unset — run: git remote set-head origin -a"; exit 1; }
```
Both lines are load-bearing. The `sed` is what makes the result comparable with `<root>`, which carries no prefix, since the ref prints as `origin/<default>`. Empty output or a nonzero exit means remote HEAD was never fetched; the check catches that, because an unset value is the empty string, which compares unequal to every branch name — a guard built on one passes exactly when it should fire. Never treat that result as a value: run `git remote set-head origin -a`, and halt if it still resolves nothing.
## Per-command conversion
Every conversion below starts with a refresh. For a branch root, `<root-rev>` is a local cache of a branch that lives on the forge, so run `git fetch origin <root>` before building any range from it. A commit root is immutable and needs no refresh.
| Command | Form | Why this form |
| -- | -- | -- |
| `git log` | `git log <root-rev>..HEAD` — two dots | lists this branch's own commits; the three-dot form is the symmetric difference and adds the root's |
| `git diff` | `git diff <root-rev>...HEAD` — three dots | measures from the merge base; the two-dot form is the endpoint diff and reports as this branch's own whatever landed on the root after the branch was cut |
| `codex exec review` | `--base` the merge base of the root and `HEAD` | the flag takes a single revision, and the merge base is correct whether the tool diffs endpoints or selects a merge base itself |
The dot forms do not normalize across commands. A sweep that makes them uniform reintroduces in one command the defect it removes from the other.
Resolve that merge base and check it non-empty **in the same shell invocation as the command that uses it** — a variable set in one shell is gone in the next, so a resolve step written elsewhere leaves the command with an empty base. Unquoted, an empty expansion also makes `--base` consume the following flag as its value.
**Never use `@{upstream}` as the root**, and do not repair it with a `--track` convention. It names the branch's own pushed copy: it errors before the first push, yields an empty diff after it, and `push -u` rebinds it.From ultimatile/development-skills, MIT.
More from ultimatile/development-skills
- 0.564score
copilot-review
ultimatile
Create a GitHub PR with Copilot as reviewer and poll until the review arrives.
SkillAFreshness: AClaude Code +9 - 0.561score
authoritative-text-rules
ultimatile
Single source of truth for audit items covering text that an agent executes as instructions.
SkillAFreshness: AClaude Code +9 - 0.561score
bug-to-contract
ultimatile
Promote a review finding or bug fix into a contract test that prevents the underlying invariant violation from recurring.
SkillAFreshness: AClaude Code +9 - 0.561score
code-review-gate
ultimatile
Run the built-in /code-review against the current diff through a fallback lane chain with lane-failure, retry, and exhaustion handling.
SkillAFreshness: AClaude Code +9 - 0.561score
codex-contract-test-review
ultimatile
Narrow Codex pass on a newly added contract test, verifying it is not tautological and would fail on the original buggy implementation.
SkillAFreshness: AClaude Code +9 - 0.561score
done-check
ultimatile
Single-pass audit of the current diff against the applicable quality rule sets before declaring a task complete or requesting external review.
SkillAFreshness: AClaude Code +9 - 0.561score
file-pullreq
ultimatile
Draft and file a GitHub PR using gh-body-conventions and the PR body skeleton, via the gh-post wrapper.
SkillAFreshness: AClaude Code +9 - 0.561score
finding-to-audit
ultimatile
Promote a review finding into a pre-commit audit rule that catches the diff-inspectable issue class (import direction, pub widening, debug artifacts, dropped…
SkillAFreshness: AClaude Code +9 - 0.561score
finding-triage
ultimatile
Single source of truth for per-finding review-triage dispositions and response selection for actionable findings, which the review and audit skills apply by…
SkillAFreshness: AClaude Code +9 - 0.561score
gate-miss-to-issue
ultimatile
Promote a late-caught defect — one an earlier gate should have caught — into a development-skills issue proposing a fix to that gate's procedure.
SkillAFreshness: AClaude Code +9 - 0.558score
codex-plan-review
ultimatile
Review an implementation plan with OpenAI Codex before coding, getting a second opinion on assumptions and approach.
SkillAFreshness: AClaude Code +9 - 0.558score
codex-review
ultimatile
Pre-PR code review on the current branch using the OpenAI Codex CLI, with an iterative fix loop.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 71
- Last commit (this folder)
- Oct 11, 2026 (21 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ultimatile/development-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ultimatile
- 0.564score
copilot-review
ultimatile
Create a GitHub PR with Copilot as reviewer and poll until the review arrives.
SkillAFreshness: AClaude Code +9 - 0.561score
codex-contract-test-review
ultimatile
Narrow Codex pass on a newly added contract test, verifying it is not tautological and would fail on the original buggy implementation.
SkillAFreshness: AClaude Code +9 - 0.561score
bug-to-contract
ultimatile
Promote a review finding or bug fix into a contract test that prevents the underlying invariant violation from recurring.
SkillAFreshness: AClaude Code +9 - 0.561score
code-review-gate
ultimatile
Run the built-in /code-review against the current diff through a fallback lane chain with lane-failure, retry, and exhaustion handling.
SkillAFreshness: AClaude Code +9 - 0.561score
authoritative-text-rules
ultimatile
Single source of truth for audit items covering text that an agent executes as instructions.
SkillAFreshness: AClaude Code +9 - 0.561score
done-check
ultimatile
Single-pass audit of the current diff against the applicable quality rule sets before declaring a task complete or requesting external review.
SkillAFreshness: AClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get diff-root running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
diff-root skill. Agent Mart. https://agentmart.dev/skills/ultimatile-diff-root (last updated 2026-10-24)