Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/osouthgate/agent-plus/diff-summarynpx skills add osouthgate/agent-plus --skill diff-summarygit clone --depth 1 https://github.com/osouthgate/agent-plusWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00109 | $0.01391 |
| Opus 5 | $0.00055 | $0.00696 |
| Sonnet 5 | $0.00022 | $0.00278 |
| Haiku 4.5 | $0.00011 | $0.00139 |
Grade A, and why
diff-summary scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 90 lines — stays where its author put it; the contents beside it link to each section on GitHub.
diff-summary
Structured triage of a git diff. One call replaces the per-file Read sweep an agent normally does to figure out which files in a diff are tests, which touch the public API, which are migrations, which need careful review.
Lives at ${CLAUDE_SKILL_DIR}/../../bin/diff-summary; the plugin auto-adds bin/ to PATH, so just run diff-summary ....
When to reach for this
- User asks "what changed in this branch / triage this PR / is this safe to merge" → run
diff-summary --base main --pretty. Read thesummary.highRiskFilesandsummary.byRolefirst; only Read individual files where risk is HIGH. - User asks "what am I about to commit" → run
diff-summary --pretty(default = working tree) ordiff-summary --staged --prettyafter agit add. - Pre-PR sanity check →
diff-summary --base main --risk medium --prettyshows only the files that need a second look. - "Did I forget to update the tests?" → check
summary.sourceFilesWithoutTestChanges.
Headline command
diff-summary # working tree (default)
diff-summary --staged # staged index
diff-summary --base main # <base>...HEAD (3-dot merge-base)
diff-summary --range A..B # explicit range, passed verbatim
diff-summary --max-files 200 # cap files[] (default 200)
diff-summary --include-patches # include raw unified diff per file (opt-in)
diff-summary --public-api-only # filter files[] to publicApiTouched only
diff-summary --risk medium # filter files[] to risk >= MIN
diff-summary --output /tmp/d.json --shape-depth 2 # offload large payload
diff-summary --pretty # indented JSON
The four diff-source flags (--staged, --base, --range, default) are mutually exclusive.
Output shape (truncated)
{
"tool": {"name": "diff-summary", "version": "0.2.1"},
"mode": "base",
"base": "main",
"head": "abc1234",
"branch": "feature/foo",
"summarizedAt": "2026-04-28T12:34:56Z",
"stats": {"files": 12, "insertions": 234, "deletions": 67, "movedLinesEstimate": 18},
"files": [
{
"path": "src/foo.ts",
"status": "modified",
"role": "source",
"language": "typescript",
"insertions": 42, "deletions": 5,
"binary": false,
"publicApiTouched": true,
"risk": "high",
"riskReasons": ["touches-public-api", "no-test-changes"]
}
],
"summary": {
"byRole": {"source": 5, "test": 3, "config": 2, "doc": 1, "generated": 1},
"highRiskFiles": ["src/foo.ts"],
"testFilesTouched": 3,
"sourceFilesWithoutTestChanges": ["src/bar.ts"],
"publicApiTouches": ["src/foo.ts"],
"migrationsTouched": [],
"secretsRiskFiles": []
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 90 lines · 109 tokens per session scan A e76840e23df7
diff-summary is a skill published in the GitHub repository osouthgate/agent-plus (4 stars, last pushed 1mo ago), licensed MIT. It adds 109 tokens to every session and 1,391 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
hermes-tweet
Use Xquik in Hermes Agent for public X research, monitoring, thread summaries, creator discovery & approved actions. Not affiliated with X Corp. Use when the user requests X data or a named action. Trigger with "search X", "monitor X", "post tweet", or "X trends".
data-analysis
Structured data analysis workflow from raw data to shareable insights.
jupyter-notebook
Jupyter notebook structure, reproducibility, and best practices for data science.
data-transformer
Use for deterministic inspection, reshaping, conversion, validation, or comparison of JSON, JSONL, CSV, TSV, YAML, and Parquet; for adapting one tool's structured output to another tool's input; or when a large payload should be summarized and transformed without model-generated data rewriting.
schema-exploration
Lists tables, describes columns and data types, identifies foreign key relationships, and maps entity relationships in a database. Use when the user asks about database schema, table structure, column types, what tables exist, ERD, foreign keys, or how entities relate.
mine
Mine a project or conversation into your MemPalace — extract and store memories for later retrieval.