Skip to content

storytellerf/diff-sharing

v0.2.2-20261004053826MIT

Generate Git or Difftastic code-diff sites for local preview or ngrok sharing.

Diff Sharing Plugin

Generate a Difftastic-first Git diff site and share it through ngrok. Git remains available as a fallback renderer when difft is unavailable.

Workflow

plugins/diff-sharing/scripts/generate-diff-report.sh
plugins/diff-sharing/scripts/generate-diff-site.sh
plugins/diff-sharing/scripts/start-ngrok.sh

When difft is on PATH, the generated page opens with Difftastic selected. Otherwise it defaults to Git diff and marks Difftastic unavailable.

Configuration

VariableDescriptionDefault
REPORT_OUTPUT_DIROutput directory for generated artifacts~/.cache/diff-reports/<project-hash>
NGROK_AUTHTOKENngrok authentication tokenRequired for a public tunnel
NGROK_PORTLocal port to expose8080
PYTHON_COMMANDPython 3 executable used by the local serverpython3, then python
GIT_BASE_REFBase Git refmain
GIT_COMPARE_REFCompare Git refHEAD
GIT_INCLUDE_UNCOMMITTEDInclude uncommitted changestrue
DIFFTASTIC_COMMANDDifftastic executable name or pathdifft
DIFFTASTIC_WIDTHCaptured Difftastic output width160
DIFFTASTIC_SKIP_UNCHANGEDOmit unchanged filestrue
DIFFTASTIC_PARSE_ERROR_LIMITParse errors before text fallback100

Requirements

  • Bash 4.0+ for the scripts.
  • Git for code-diff sharing.
  • Difftastic (difft) for the preferred structural renderer.
  • ngrok for public sharing; otherwise use the local server URL.
  • Python 3 for the local HTTP-server fallback. The launcher asks python3 and then python to execute a Python 3 version check, skipping Python 2 and non-functional command aliases such as the Windows Store placeholder.

License

This plugin is part of the me plugin collection.

Plugin packaging

plugin.json is the portable metadata source. Client manifests and complete skill resources are generated into me.claude and me.codex; install from those repositories. Source skills use portable frontmatter. Claude routing is stored in extensions.com.anthropic.claude.skillFrontmatter, keyed by skill directory, and injected only into generated Claude skills. Codex skill files are copied unchanged.