/wigolo-diff
Compare two versions of a page and see exactly what changed — a live URL against its cached copy, two URLs, or two markdown blobs. Section-level hunks, word- or line-level granularity, or a summary of counts. Use when the user says "what changed", "diff these", "compare this
$ npx -y skills add KnockOutEZ/wigolo --skill wigolo-diff --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/wigolo-diff
Context preview
The summary Claude sees to decide when to auto-load this skill.
Compare two versions of a page and see exactly what changed — a live URL against its cached copy, two URLs, or two markdown blobs. Section-level hunks, word- or line-level granularity, or a summary of counts. Use when the user says "what changed", "diff these", "compare this
SKILL.md
wigolo-diff.SKILL.mdname: wigolo-diff
description: |
Compare two versions of a page and see exactly what changed — a live URL against its cached copy, two URLs, or two markdown blobs. Section-level hunks, word- or line-level granularity, or a summary of counts. Use when the user says "what changed", "diff these", "compare this page to last time", "show me the changes", "did this doc update", or wants a changelog between two versions of the same content.
license: AGPL-3.0-only
metadata:
author: KnockOutEZ
version: 0.1.43-beta.2
homepage: https://github.com/KnockOutEZ/wigolo
repository: https://github.com/KnockOutEZ/wigolo
wigolo diff
Structural comparison of two page versions. Point it at a live URL and its cached copy, two URLs, or two raw markdown blobs, and it returns a git-style patch, structured per-section hunks, or a counts-only summary.
Quick Reference
// Live page vs its cached version (re-fetches `new` side)
{ "old": { "url": "https://docs.example.com/api" }, "new": { "url": "https://docs.example.com/api" } }
// Two different URLs
{ "old": { "url": "https://v1.example.com/spec" }, "new": { "url": "https://v2.example.com/spec" } }
// Two markdown blobs directly
{ "old": { "markdown": "# Title\nold body" }, "new": { "markdown": "# Title\nnew body" } }
// Structured per-section hunks at word granularity
{ "old": { "url": "https://example.com" }, "new": { "url": "https://example.com" }, "output": "hunks", "granularity": "word" }
// Counts only
{ "old": { "url": "https://example.com" }, "new": { "url": "https://example.com" }, "output": "summary" }Parameters
| Parameter | Type | Default | When to use | |-----------|------|---------|-------------| | `old` | object | required | Left-hand side. One of `{ url, markdown, content_hash }` | | `new` | object | required | Right-hand side. One of `{ url, markdown }` | | `output` | string | "unified" | "unified" (git-style patch), "hunks" (per-section), "summary" (counts only) | | `granularity` | string | "line" | "line", "word" (changed tokens only — tighter), "section" (walks H1/H2/H3) |
Output Shapes
- **`unified`** — a git-style unified patch, ready to read or store.
- **`hunks`** — structured per-section change blocks. Combine with `granularity: "section"` to align hunks to headings, or `granularity: "word"` for tight intra-line edits.
- **`summary`** — counts only: `added_lines`, `removed_lines`, `modified_lines`, and `total_changed_chars` (sum of added + removed line chars across the edit script). Cheapest way to answer "did anything change, and how much".
Comparing Against the Cache
The most common use is drift detection: fetch a page now and diff it against the copy wigolo cached earlier. Pass the same URL for both sides — wigolo reads the cached body for `old` and re-fetches for `new`. For a scoped, multi-URL sweep, prefer `cache` with `check_changes: true`.
Anti-Patterns
- DON'T pass an `old`/`new` object without one of the accepted side keys — the handler rejects it.
- DON'T use `output: "unified"` when you only need counts — `summary` is cheaper.
- DON'T diff two unrelated pages expecting a meaningful changelog — diff versions of the same content.
When NOT to use wigolo-diff
- **Bulk change detection across many cached URLs** — use `cache` with `check_changes: true`.
- **Ongoing scheduled monitoring** — use `watch`, which diffs on each check.
See Also
- [wigolo-cache](../wigolo-cache/SKILL.md) — `check_changes` for bulk drift detection
- [wigolo-watch](../wigolo-watch/SKILL.md) — scheduled change monitoring
- [wigolo-fetch](../wigolo-fetch/SKILL.md) — pull a fresh version to compare
Read more
name: wigolo-diff description: | Compare two versions of a page and see exactly what changed — a live URL against its cached copy, two URLs, or two markdown blobs. Section-level hunks, word- or line-level granularity, or a summary of counts. Use when the user says "what changed", "diff these", "compare this page to last time", "show me the changes", "did this doc update", or wants a changelog between two versions of the same content. license: AGPL-3.0-only metadata: author: KnockOutEZ version: 0.1.43-beta.2 homepage: https://github.com/KnockOutEZ/wigolo repository: https://github.com/KnockOutEZ/wigolo
wigolo diff
Structural comparison of two page versions. Point it at a live URL and its cached copy, two URLs, or two raw markdown blobs, and it returns a git-style patch, structured per-section hunks, or a counts-only summary.
Quick Reference
// Live page vs its cached version (re-fetches `new` side)
{ "old": { "url": "https://docs.example.com/api" }, "new": { "url": "https://docs.example.com/api" } }
// Two different URLs
{ "old": { "url": "https://v1.example.com/spec" }, "new": { "url": "https://v2.example.com/spec" } }
// Two markdown blobs directly
{ "old": { "markdown": "# Title\nold body" }, "new": { "markdown": "# Title\nnew body" } }
// Structured per-section hunks at word granularity
{ "old": { "url": "https://example.com" }, "new": { "url": "https://example.com" }, "output": "hunks", "granularity": "word" }
// Counts only
{ "old": { "url": "https://example.com" }, "new": { "url": "https://example.com" }, "output": "summary" }Parameters
| Parameter | Type | Default | When to use | |-----------|------|---------|-------------| | `old` | object | required | Left-hand side. One of `{ url, markdown, content_hash }` | | `new` | object | required | Right-hand side. One of `{ url, markdown }` | | `output` | string | "unified" | "unified" (git-style patch), "hunks" (per-section), "summary" (counts only) | | `granularity` | string | "line" | "line", "word" (changed tokens only — tighter), "section" (walks H1/H2/H3) |
Output Shapes
- **`unified`** — a git-style unified patch, ready to read or store.
- **`hunks`** — structured per-section change blocks. Combine with `granularity: "section"` to align hunks to headings, or `granularity: "word"` for tight intra-line edits.
- **`summary`** — counts only: `added_lines`, `removed_lines`, `modified_lines`, and `total_changed_chars` (sum of added + removed line chars across the edit script). Cheapest way to answer "did anything change, and how much".
Comparing Against the Cache
The most common use is drift detection: fetch a page now and diff it against the copy wigolo cached earlier. Pass the same URL for both sides — wigolo reads the cached body for `old` and re-fetches for `new`. For a scoped, multi-URL sweep, prefer `cache` with `check_changes: true`.
Anti-Patterns
- DON'T pass an `old`/`new` object without one of the accepted side keys — the handler rejects it.
- DON'T use `output: "unified"` when you only need counts — `summary` is cheaper.
- DON'T diff two unrelated pages expecting a meaningful changelog — diff versions of the same content.
When NOT to use wigolo-diff
- **Bulk change detection across many cached URLs** — use `cache` with `check_changes: true`.
- **Ongoing scheduled monitoring** — use `watch`, which diffs on each check.
See Also
- [wigolo-cache](../wigolo-cache/SKILL.md) — `check_changes` for bulk drift detection
- [wigolo-watch](../wigolo-watch/SKILL.md) — scheduled change monitoring
- [wigolo-fetch](../wigolo-fetch/SKILL.md) — pull a fresh version to compare
The go-to web for your AI coding agent — local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
Repo: KnockOutEZ/wigolo
Other skills on wigolo.
- /wigolo-agent
Autonomous data gathering across sources — plans search queries and URLs from a natural-language prompt, executes in parallel within a time budget, optionally extracts structured fields via JSON Schema, and synthesizes results with full step transparency. Use when the user needs
Open skill - /wigolo-cache
Local-first knowledge cache — full-text and hybrid semantic search over every page wigolo has already fetched, crawled, or searched. Use before any web request: cached hits return instantly and free. Triggers when the user says "check the cache", "have we seen this", "what's on
Open skill - /wigolo-crawl
Local-first multi-page crawl with sitemap, BFS, DFS, and URL-map strategies, anchor-fragment dedup, rate limiting, robots.txt respect, and automatic local cache population. Use when the user wants to index documentation, crawl a docs site, extract all pages under a path, or says
Open skill - /wigolo-extract
Local-first structured extraction from any webpage — tables, definition lists, key-value pairs, JSON-LD, microdata, chart hints (SVG titles / aria-labels / figcaptions), brand assets, and metadata. Use when the user wants structured data, pricing tables, feature comparisons, or
Open skill - /wigolo-fetch
Local-first URL fetch with clean markdown, structured metadata, JS-rendered SPA support, authenticated browser sessions, PDFs, and content change detection. Use when the user provides a URL, says "fetch", "get this page", "read this URL", or wants content from a specific
Open skill - /wigolo-find-similar
Hybrid semantic discovery — fuses embeddings + keyword search + live web search via 3-way Reciprocal Rank Fusion. Use when the user has a good source and wants more like it, says "find similar", "related pages", "more like this", or wants to discover content related to a known
Open skill

