file-tree-diff
Compare two directory trees and show added, removed, and changed files with color output. Use when you need to compare two versions of a directory, find what changed between releases, audit differences between staging and production file sets, or verify a deployment. Triggers include "compare directories", "directory diff", "what changed in", "file differences between", "ftd", "tree diff".
Best use case
file-tree-diff is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Compare two directory trees and show added, removed, and changed files with color output. Use when you need to compare two versions of a directory, find what changed between releases, audit differences between staging and production file sets, or verify a deployment. Triggers include "compare directories", "directory diff", "what changed in", "file differences between", "ftd", "tree diff".
Teams using file-tree-diff should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/file-tree-diff/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How file-tree-diff Compares
| Feature / Agent | file-tree-diff | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Compare two directory trees and show added, removed, and changed files with color output. Use when you need to compare two versions of a directory, find what changed between releases, audit differences between staging and production file sets, or verify a deployment. Triggers include "compare directories", "directory diff", "what changed in", "file differences between", "ftd", "tree diff".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# file-tree-diff (ftd) Compare two directory trees visually. Color-coded output. Filter, export, watch mode. ## When to use - Comparing two versions of a project directory - Finding what changed between releases - Auditing staging vs production differences - Verifying a deployment copied all expected files - Checking if two directories are identical ## Quick Start ```bash ftd v1/ v2/ ftd --content --deep src/ dist/ ftd --ignore-common --output json old/ new/ > diff.json ``` ## Usage Patterns ### Basic diff ```bash ftd left/ right/ ``` ### With content line counts ```bash ftd --content left/ right/ ``` Shows `+N -M lines` for changed files. ### Show diff hunks ```bash ftd --content --deep left/ right/ ``` Shows actual changed lines for each modified file. ### Filter by status ```bash ftd --only added left/ right/ ftd --only removed left/ right/ ftd --only changed left/ right/ ``` ### Ignore patterns ```bash ftd --ignore "*.log" --ignore "tmp/" left/ right/ ftd --ignore-common left/ right/ # node_modules, .git, dist, build, etc. ``` ### Export results ```bash ftd --output json left/ right/ > diff.json ftd --output markdown left/ right/ > diff.md ftd --output json --output-file report.json left/ right/ ``` ### Watch mode ```bash ftd --watch left/ right/ ``` Re-runs diff when files change. Ctrl+C to stop. ### Interactive mode ```bash ftd --interactive left/ right/ ``` Browse with j/k, expand with Enter, quit with q. ## CLI Reference | Flag | Description | |---|---| | `--content, -c` | Enable content (line-level) comparison | | `--deep` | Show diff hunks (requires --content) | | `--size` | Show byte sizes and deltas | | `--show-unchanged` | Include unchanged files in output | | `--only <status>` | Filter to: added, removed, changed | | `--ignore <pattern>` | Ignore glob pattern (repeatable) | | `--ignore-common` | Ignore common build/VCS artifacts | | `--max-depth <n>` | Limit recursion depth | | `--summary` | Stats only, no tree | | `--output json\|markdown` | Export format | | `--output-file <path>` | Write to file | | `--watch` | Watch for changes | | `--interactive` | Browse diff interactively | | `--no-color` | Disable color | ## Environment Variables | Variable | Description | Default | |---|---|---| | `FTD_NO_COLOR` | Disable color (0 or 1) | `0` | | `FTD_MAX_DEPTH` | Default max depth | unlimited | | `FTD_IGNORE_COMMON` | Always ignore common files (0 or 1) | `0` | | `FTD_CONTENT_DIFF` | Always use content diff (0 or 1) | `0` | ## .ftdignore Place a `.ftdignore` file in either directory. Uses gitignore syntax: ``` # Comments node_modules/ *.log dist/ !dist/MANIFEST.json # negation: keep this file ``` ## Exit Codes | Code | Meaning | |---|---| | 0 | No differences found | | 1 | Differences found | | 2 | Error (bad arguments, permission denied, etc.) |
Related Skills
file-sharing
Upload files, create expiring share links with optional password protection, and track downloads on a self-hosted file drop service.
file-permissions
Reference guide for Unix file permission bits, octal notation, symbolic notation, and security-relevant permission combinations used by the permissions-auditor rules engine.
file-encryption
AES-256-GCM file encryption and PBKDF2 key derivation as used in health-records-vault. Use when you need to understand or implement the encryption model, derive a key from a password, encrypt or decrypt a file manually, restore an encrypted backup, or verify the cryptographic integrity of a .enc file. Triggers include "AES-256-GCM", "PBKDF2", "decrypt .enc file", "restore backup", "encryption key derivation", "IV", "salt", or any task about the cryptographic internals of the vault.
migration-diff skill
## When to use
api-diff
Compare two OpenAPI spec files and produce a structured diff report. Use when you need to know what changed between two versions of an API spec, detect breaking changes before releasing a new API version, or check a PR's API spec changes in CI. Triggers include "diff API specs", "compare OpenAPI", "what changed in the API", "check API changes", "API spec diff", "compare swagger files", or any task involving comparing two versions of an OpenAPI or REST API specification.
json-differ
Compare two JSON blobs and view structural and value differences. Use when you need to compare API responses, config files, database records, or any two JSON objects. Triggers include "compare JSON", "JSON diff", "what changed", "JSON differences", "diff two objects", or any task involving comparing JSON data.
deep-diff
Compute structural differences between two JSON-compatible JavaScript values. Use this skill when you need to programmatically diff objects, check if two data structures are equivalent, or find what paths changed. Triggers include "diff two objects in code", "find changed keys", "compute JSON diff", "deep equality check with diff output".
process-tree
View the system process hierarchy as a tree with resource usage. Use when exploring parent-child process relationships, finding what process owns a port, monitoring CPU/memory, or sending signals. Triggers include "process tree", "ptree", "what is running", "process on port", "pstree", "who owns port", "kill process".
diff-ignore
Configure ignore patterns for file-tree-diff using .ftdignore files or CLI flags. Use when setting up ignore rules for directory comparisons, excluding build artifacts, or creating project-specific ignore configurations. Triggers include "ignore node_modules in diff", ".ftdignore", "exclude files from diff", "diff ignore patterns".
machine-profiles
Use dotfile-sync profiles to manage machine-specific configurations. Use when different machines need different subsets of dotfiles, handling OS-specific configs, or setting up work vs personal machine profiles. Triggers include "machine profile", "per-machine config", "dfs profile", "different configs per machine", "work vs home dotfiles".
dotfile-sync
Manage dotfiles with symlinks from a central git repository. Use when tracking config files, syncing dotfiles between machines, or bootstrapping a new machine. Triggers include "dotfiles", "sync config", "dfs", "track dotfiles", "symlink config", "new machine setup".
file-processing
Handle file upload, validation, processing pipelines, and temporary file management in Node.js servers. Use when building file processing APIs with Express and multer, managing temporary files with cleanup, or implementing secure file handling patterns. Triggers include "file upload", "multipart form", "temp file cleanup", "multer config", or any server-side file handling task.