Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. --- name: diffstory description: Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. allowed-tools: Bash(gh:*), Bash(glab:*), Bash(git diff:*), Bash(git log:*), Bash(git show:*), Bash(git rev-parse:*), Write, Read, Bash(open:*), Bash(node:*), Task --- Diffstory - Interactive Diff Review Generate an interactive HTML artifact that presents code changes as a narr Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Freshness
Last checked 4/15/2026
Best For
diffstory is best for this, be workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. --- name: diffstory description: Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. allowed-tools: Bash(gh:*), Bash(glab:*), Bash(git diff:*), Bash(git log:*), Bash(git show:*), Bash(git rev-parse:*), Write, Read, Bash(open:*), Bash(node:*), Task --- Diffstory - Interactive Diff Review Generate an interactive HTML artifact that presents code changes as a narr
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 15, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 15, 2026
Vendor
Mgodwin
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Setup snapshot
git clone https://github.com/mgodwin/diffstory.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Mgodwin
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
bash
# Explicit level (skips prompt) /diffstory --level=none https://github.com/org/repo/pull/123 /diffstory --level=basic https://github.com/org/repo/pull/123 /diffstory --level=intermediate https://github.com/org/repo/pull/123 /diffstory --level=expert https://github.com/org/repo/pull/123 # No level specified → prompt user interactively /diffstory https://github.com/org/repo/pull/123
bash
# 1. Checkout FIRST — required before any other step gh pr checkout <number> # 2. Then fetch diff and metadata BASE=$(gh pr view <number> --json baseRefName -q '.baseRefName') git diff $BASE...HEAD gh pr view <number> --json title,body,baseRefName
bash
# 1. Checkout FIRST glab mr checkout <number> # 2. Then fetch diff and metadata glab mr diff <number> glab mr view <number>
bash
git diff <ref> git log --oneline <ref>
json
{ "concern": "The specific finding", "severity": "high | medium | low | none" }bash
node ~/.claude/skills/diffstory/scripts/validate.js /tmp/diffstory_data.json
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. --- name: diffstory description: Generate an interactive diff review HTML with narrative structure. Use for PR/MR review or git diff analysis. allowed-tools: Bash(gh:*), Bash(glab:*), Bash(git diff:*), Bash(git log:*), Bash(git show:*), Bash(git rev-parse:*), Write, Read, Bash(open:*), Bash(node:*), Task --- Diffstory - Interactive Diff Review Generate an interactive HTML artifact that presents code changes as a narr
Generate an interactive HTML artifact that presents code changes as a narrative story, making PR/MR review more intuitive and thorough.
/diffstory https://github.com/org/repo/pull/123/diffstory https://gitlab.com/org/repo/-/merge_requests/123/diffstory main..feature or /diffstory HEAD~3Tailor the review to the audience's familiarity with the codebase:
# Explicit level (skips prompt)
/diffstory --level=none https://github.com/org/repo/pull/123
/diffstory --level=basic https://github.com/org/repo/pull/123
/diffstory --level=intermediate https://github.com/org/repo/pull/123
/diffstory --level=expert https://github.com/org/repo/pull/123
# No level specified → prompt user interactively
/diffstory https://github.com/org/repo/pull/123
| Level | Who | Content Approach | |-------|-----|------------------| | none | New to codebase | Full context: big picture, file explanations, glossary | | basic | Occasional contributor | Module context, key relationships, moderate annotations | | intermediate | Regular contributor | Focused technical summary, standard annotations | | expert | Deep familiarity | Minimal prose, sparse annotations, just the changes |
First, parse the arguments:
--level=<level> in the args (none, basic, intermediate, expert)Then, determine the diff source. IMPORTANT: You MUST checkout the code FIRST before fetching the diff or doing any codebase exploration. The Explore agent in Step 1b reads local files, so the working tree must be on the correct branch.
GitHub PR URL (contains github.com and /pull/):
# 1. Checkout FIRST — required before any other step
gh pr checkout <number>
# 2. Then fetch diff and metadata
BASE=$(gh pr view <number> --json baseRefName -q '.baseRefName')
git diff $BASE...HEAD
gh pr view <number> --json title,body,baseRefName
GitLab MR URL (contains gitlab.com and /merge_requests/):
# 1. Checkout FIRST
glab mr checkout <number>
# 2. Then fetch diff and metadata
glab mr diff <number>
glab mr view <number>
Git ref (like main..feature, HEAD~3, or commit ranges):
git diff <ref>
git log --oneline <ref>
Use an Explore subagent to investigate the ripple effects of the changes before writing your analysis. Launch it via the Task tool with subagent_type: "Explore".
Give the Explore agent a prompt like:
"For each file and function modified in this diff, find callers, consumers, and dependents in the codebase. Identify: (1) other files that import or call the changed functions/classes, (2) interfaces or types that changed and where they're used, (3) config or schema changes that downstream code may depend on, (4) any tests that exercise the changed code paths. Report each finding as: area (e.g. 'API consumers', 'test suite', 'CLI commands'), what's affected, and severity (high/medium/low)."
Include the list of changed files and key function/type names from the diff in the prompt so the agent knows what to search for.
Use the agent's findings to populate the sideEffects field in your analysis.
Analyze the diff and produce a structured JSON analysis. The analysis should:
Group related changes into narratives (usually 1-3 for a typical PR)
Order steps within each narrative to tell a logical story
Add annotations sparingly - focus on genuinely interesting observations:
provocation: Thought-provoking observations or subtle implicationsrisk: Potential bugs, edge cases, or security concernsedge_case: Boundary conditions or unusual inputs to consideralternative: Different approaches worth consideringquestion: Things the reviewer should verify or think aboutRun the critique panel — See Step 2a below.
Use optimal only when the approach is genuinely the best available option. Default toward acceptable — most PRs work but aren't perfect. Use suboptimal when you'd push back in a real review. Always include alternatives when the verdict is not optimal, describing concrete alternatives with honest trade-offs. This is about the overall PR strategy, distinct from line-level alternative annotations on specific code choices.
Assess criticality — Evaluate how much review attention this PR deserves based on signals visible in the diff:
The explanation should state what signals led to the level. The risks list should name specific things that could go wrong if this code has a bug.
Use markdown in summaries and blurbs - bold, italics, code, and lists where helpful
Before writing the approachEvaluation, launch 5 parallel subagents to analyze the change from orthogonal perspectives. Use the Task tool with subagent_type: "general-purpose" and send all 5 in a single message so they run concurrently.
Each agent receives: the full diff, PR title/description, commit messages, side-effect findings from Step 1b, and their role prompt. Agents have full codebase access and should search for callers, patterns, or related code to inform their analysis.
The 5 roles:
Protective Maintainer — "Does this earn its permanent place in the codebase?" Evaluate whether this change justifies its long-term maintenance cost. Consider: Does it create tech debt or lock in a pattern? Could the project be better off without it? Is the solution's blast radius proportional to the problem?
Attacker — "What happens with adversarial input or unexpected timing?" Look for security vulnerabilities, injection vectors, race conditions, resource exhaustion, and trust boundary violations. Consider auth bypasses, unsafe deserialization, and missing input validation.
On-Call SRE — "When this breaks in production, how will I know and fix it?" Evaluate observability (logging, metrics, alerts), failure modes, rollback safety, and graceful degradation. Consider: Will errors be distinguishable? Can this be feature-flagged?
Specification Lawyer — "Where does implementation diverge from stated intent?" Compare the PR description, commit messages, and ticket requirements against what the code actually does. Flag scope mismatches, unmentioned behavior changes, and undocumented side effects.
Consumer — "If I didn't read the implementation, would I use this correctly?" Evaluate the public API surface, error messages, documentation, naming, and defaults from the perspective of someone who only reads the function signatures and docs.
Each agent responds with:
{ "concern": "The specific finding", "severity": "high | medium | low | none" }
Synthesis: Exclude agents with severity: "none" (no padding). Use the remaining findings to write approachEvaluation.verdict, .summary, .perspectives[], and .alternatives[]. The perspectives array maps each non-none agent to a { role, concern, severity } entry.
Adjust your analysis based on the reviewer's knowledge level.
Always include (all levels): testCoverage (when tests exist or are notably absent), approachEvaluation, criticality with explanation and risks.
none (newcomer):
bigPicture: 2-3 paragraphs explaining what system/module this code belongs tonarrative.bigPicture: 1-2 sentences per narrative explaining what it covers and why it mattersglossary: Array of {term, definition} for domain-specific termsfileContext on each hunk: 1 sentence explaining what this file doesbasic:
bigPicture (shorter, 1 paragraph)narrative.bigPicture (1 sentence per narrative)fileContext only for non-obvious filesintermediate:
bigPicture, narrative.bigPicture, glossary, or fileContextexpert:
summary (1 paragraph max, just what changed)bigPicture, narrative.bigPicture, glossary, fileContext)The current session ID is: ${CLAUDE_SESSION_ID} Use the first 8 characters as a prefix in the output filename.
Write analysis as pure JSON to /tmp/diffstory_data.json (no variable assignment wrapper, just the JSON object).
Validate the JSON structure:
node ~/.claude/skills/diffstory/scripts/validate.js /tmp/diffstory_data.json
If validation fails, fix the JSON and re-validate before proceeding.
Build the self-contained HTML file:
Compute the output filename from the session ID and source:
SESSION_PREFIX = first 8 characters of the session IDSOURCE_SLUG = the diff source (PR URL, branch name, or git ref) with non-alphanumeric chars replaced by -, trimmed, last 30 charsnode ~/.claude/skills/diffstory/scripts/build.js \
--data /tmp/diffstory_data.json \
--out "./diffstory-${SESSION_PREFIX}-${SOURCE_SLUG}.html"
Open in browser:
open ./diffstory-*.html # macOS (the file just created)
Your analysis must match this schema exactly:
{
"source": "PR URL, MR URL, or git ref",
"title": "Brief title describing the changes",
"knowledgeLevel": "none | basic | intermediate | expert",
"criticality": {
"level": "high | medium | low",
"explanation": "What signals in this diff led to this level (see criteria in Step 2)",
"risks": ["Specific thing that could go wrong 1", "Specific thing that could go wrong 2"]
},
"approachEvaluation": {
"verdict": "optimal | acceptable | suboptimal",
"summary": "Synthesized assessment incorporating findings from all perspectives.",
"perspectives": [
{
"role": "maintainer | security | sre | spec | consumer",
"concern": "The specific finding from this perspective",
"severity": "high | medium | low"
}
],
"alternatives": [
{
"title": "Short name for alternative approach",
"description": "Why this might be better, trade-offs, and long-term implications"
}
]
},
"summary": "Executive summary of the changes (2-3 paragraphs, markdown supported)",
"bigPicture": "Optional - what does this system/module do? (for none/basic levels)",
"glossary": [
{
"term": "domain term",
"definition": "plain English definition"
}
],
"sideEffects": [
{
"area": "Area affected (e.g. 'API consumers', 'CLI commands', 'test suite')",
"description": "What's affected and how — be specific about files, callers, or dependents",
"severity": "high | medium | low"
}
],
"testCoverage": [
{
"file": "path/to/file.ts",
"function": "functionName",
"status": "covered | partial | uncovered",
"testLocation": "path/to/test.ts (optional)",
"notes": "any notes about coverage"
}
],
"narratives": [
{
"id": "narrative-1",
"title": "Short tab title",
"bigPicture": "Optional - plain language overview of what this narrative covers and why it matters (for none/basic levels)",
"summary": "1-2 sentence explanation of what this narrative achieves and why",
"steps": [
{
"id": "step-1",
"title": "Short step title",
"blurb": "2-3 sentences explaining what this step does and why",
"hunks": [
{
"id": "hunk-1",
"file": "path/to/file.ts",
"startLine": 10,
"endLine": 25,
"diff": "the raw diff content for this hunk (unified diff format)",
"fileContext": "Optional - 1 sentence explaining what this file does (for none/basic levels)",
"annotations": [
{
"id": "ann-1",
"type": "provocation | risk | edge_case | alternative | question",
"lineMatch": "distinctive code from the target line",
"content": "Annotation text (appears BELOW the matched line)"
}
]
}
]
}
]
}
]
}
diff field in each hunk should contain the raw unified diff output@@ hunk headers so line numbers can be parsedstartLine should match the + line number from the @@ headerlineMatch with a distinctive substring from the target line's code (e.g. "lineMatch": "pointer-events: none"). The build script resolves this to the correct line number automatically. Do NOT manually count line numbers — lineMatch is far more reliable. The annotation will be displayed below the matched line in the rendered output. The match is scoped per-hunk, so the substring only needs to be unique within that hunk. If a line appears multiple times (e.g. repeated error handling), include enough surrounding context to disambiguate (e.g. "if (!user)" instead of "Invalid credentials")gh or glab commands fail with auth errors, inform the user to run gh auth login or glab auth login.Output is a single self-contained HTML file written to the current working directory:
diffstory-<session-8>-<source-slug>.html - Self-contained HTML with embedded analysis data/tmp/diffstory_data.json is used only during builddiffstory-*.html to your .gitignoreMachine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/mgodwin-diffstory/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mgodwin-diffstory/contract"
curl -s "https://xpersona.co/api/v1/agents/mgodwin-diffstory/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/mgodwin-diffstory/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/mgodwin-diffstory/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/mgodwin-diffstory/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-17T01:38:12.151Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "this",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "be",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:this|supported|profile capability:be|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Mgodwin",
"href": "https://github.com/mgodwin/diffstory",
"sourceUrl": "https://github.com/mgodwin/diffstory",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T01:15:20.842Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T01:15:20.842Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/mgodwin-diffstory/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to diffstory and adjacent AI workflows.