Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By krfantasy
Conduct deep architectural analysis on complex codebases to design and evaluate solutions for module refactoring, performance optimization, API design, and nested data processing.
npx claudepluginhub krfantasy/alsdiff --plugin architect-analystUses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Git diff review integration for Claude Code with VSCode extension. Provides inline diff view, browser diff editor, and auto-open files.
AI-powered codebase understanding assistant. Learn design patterns, analyze impact, trace code flows, and understand any codebase through information theory principles. Includes 6 Agent Skills for automatic analysis triggering.
Apply Google Research's prompt repetition technique to improve LLM performance on non-reasoning tasks
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Agent that simplifies and refines code for clarity, consistency, and maintainability while preserving functionality
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
LSP integration for OCaml via ocamllsp
Automatically format OCaml files with ocp-indent after edits
Save Ableton Live projects via natural language or slash command using AppleScript automation
Generate changelogs from git commit history following Keep a Changelog format
alsdiffis a semantic diff tool for Ableton Live Set (.als) files that makes version control meaningful for music producers.
Ableton Live Set files (.als) are gzip-compressed XML. Because standard git diff treats them as binary blobs, using version control to track changes in music projects is nearly impossible.
While existing workarounds allow decompressing .als files to .xml for diffing, the raw output is overwhelmingly verbose. A typical 20-track project can result in a 200,000-line XML file, making generic text diffs unreadable.
alsdiff solves this problem. It decompresses .als files and parses the XML to perform a semantic diff:
The output of alsdiff looks like this:
* LiveSet
* Tracks
* MidiTrack: "Lead Synth"
* DeviceChain
+ Compressor2
* Eq8
* Bands
* Band.4
* Freq: 2500.0 -> 3200.0
* Gain: 0.0 -> 2.5
* Clips
* MidiClip: "Verse"
* Notes (3 Added, 1 Removed)
Download from GitHub Releases:
chmod +x ./alsdiff
mv alsdiff ~/.local/bin # or any directory in your PATH
Note: The Windows build is currently untested as I don't have access to a Windows machine. Feedback welcome!
A helper script is provided at ./scripts/setup-git.sh. Simply download it to your git repository root and run ./setup-git.sh. This script will automatically configure git to use alsdiff for .als files and optionally install a prepare-commit-msg hook for auto-generating commit messages.
The script provides:
.gitattributes configuration for .als filesalsdiff --gitalsdiff --mode statsAlternatively, you can perform the setup manually.
.gitattributes in your repository:cd /path/to/live_projects/
echo "*.als diff=alsdiff" >> .gitattributes
git config --global diff.alsdiff.command "alsdiff <put_extra_args_here> --git"
git diff will use alsdiff to compare .als files:git diff HEAD~1 -- your-project.als
When enabled, the hook automatically prepends change statistics to your commit messages:
$ git commit
MyProject.als:
Tracks: 1 Added, 3 Modified
Devices: 2 Added, 5 Removed
Clips: 4 Added, 2 Modified
# Please enter the commit message...
If the hook runs multiple times for the same commit message (for example during amend/reuse flows), it refreshes the generated stats block instead of duplicating it.
# Initialize opam if not done before
opam init
# Create a local switch with the correct OCaml version
opam switch create . --deps-only --with-test
# Activate the environment
eval $(opam env)
# Install dependencies (if not using local switch)
opam install . --deps-only
# Build
dune build
# Run tests (optional)
dune runtest
# Install to ~/.local/bin
dune install alsdiff --prefix ~/.local/
dune exec alsdiff -- file1.als file2.als
You can build custom binaries from any branch or commit using the provided GitHub Actions workflow, removing the need for a local OCaml environment.