skylv-file-versioning
Git-style version control for any file — snapshots, diffs, tags, and restore. No git required.
Skill Metadata
- Slug: skylv-file-versioning
- Version: 1.0.0
- Description: Git-style version control for individual files. Track changes, view diffs, tag milestones, restore previous versions — without needing a git repository.
- Category: file
- Trigger Keywords:
version control,file history,diff,restore,snapshot,rollback,track changes
Capabilities
1. Snapshot (Version Capture)
node version_engine.js snap <file> [message]
# Example: node version_engine.js snap config.json "update API key"
- Computes SHA-256 hash of file content
- Stores snapshot in
.fvsnap/directory (next to the file) - Tags with optional message + timestamp
- Binary-safe (images, PDFs, JSON, anything)
2. History
node version_engine.js history <file>
# Example: node version_engine.js history config.json
- Shows all snapshots of a file
- Columns: version, date, message, hash (first 8 chars)
- Supports
--limit Nto show only last N versions
3. Diff (Between Versions)
node version_engine.js diff <file> [v1] [v2]
# Example: node version_engine.js diff config.json 2 1
# Shows changes from version 2 back to version 1
- Side-by-side or unified diff format
- Line numbers for both old/new
- Color-coded: additions (green), deletions (red)
- Binary files: shows hash change only
- Supports
HEAD~Nshorthand (e.g.,HEAD~1= previous version)
4. Tag
node version_engine.js tag <file> <version> <tag>
# Example: node version_engine.js tag config.json 3 v1.0.0
- Tags a snapshot with a name (e.g.,
v1.0.0,production,before-refactor) - Tags are stored in
.fvsnap/tags.json - List tags:
node version_engine.js tags <file>
5. Restore
node version_engine.js restore <file> [version]
# Example: node version_engine.js restore config.json v1.0.0
# Restores to tagged version; without [version], restores to previous snapshot
- Creates a backup snapshot before restoring
- Restores file content to the specified version
- Shows what changed before overwriting
6. Compare (Any Two Files)
node version_engine.js compare <file1> <file2>
# Example: node version_engine.js compare old.json new.json
- Compare any two files (not just versioned ones)
- Shows line-by-line diff
7. Auto-Snapshot (Watch Mode)
node version_engine.js watch <file-or-dir> [--interval ms]
# Example: node version_engine.js watch config.json --interval 5000
- Monitors file for changes
- Automatically snapshots when hash changes
- Runs continuously until Ctrl+C
Architecture
Storage Format
project/
├── config.json
└── .fvsnap/ ← hidden directory
├── config.json.json ← snapshot of config.json
├── config.json.log ← history index
└── tags.json ← tag → version mapping
Snapshot File Format
{
"version": 3,
"hash": "a3f8b2c1...",
"message": "update API key",
"timestamp": "2026-04-17T10:30:00.000Z",
"size": 1247,
"content": "..." // only for text files, base64 for binary
}
Diff Algorithm
- Text files: LCS (Longest Common Subsequence) based diff
- Binary files: hash comparison only
- Max display: 200 context lines per chunk
Real Market Data (2026-04-11 scan)
| Metric | Value |
|---|---|
| Incumbent | visual-file-sorter (score: 1.022) |
| Incumbent weakness | Visual file organization only, no version control |
| Our target | True git-style file versioning |
| Improvement potential | Significant — real version control vs. file sorting |
Why visual-file-sorter Is Not Real Competition
visual-file-sorter organizes files by type/date — that's file organization, not file versioning. Real version control needs:
- Content hashing (detect changes)
- Diff viewing (see what changed)
- Restore capability (go back)
- Tagging (mark milestones)
This skill delivers all four. visual-file-sorter delivers none.
Usage Examples
Daily Workflow
# Before editing a config file, snapshot it
node version_engine.js snap .env "before changing DB password"
# Make changes...
# See what changed
node version_engine.js diff .env HEAD~1 HEAD
# Tag the working version
node version_engine.js tag .env HEAD v1.2.0
# Realized something broke? Restore
node version_engine.js restore .env v1.2.0
OpenClaw Integration
Ask OpenClaw: "snapshot my config files" or "show diff between version 3 and 5 of settings.json"
Compare: file-versioning vs visual-file-sorter
| Feature | file-versioning | visual-file-sorter |
|---|---|---|
| Content hashing | ✅ SHA-256 | ❌ |
| Snapshot history | ✅ Full history | ❌ |
| Diff viewing | ✅ LCS-based | ❌ |
| Tag support | ✅ Named tags | ❌ |
| Restore to previous | ✅ Any version | ❌ |
| Binary file support | ✅ | ❌ |
| Auto-watch mode | ✅ | ❌ |
| Pure Node.js | ✅ | ? |
| No git required | ✅ | ✅ |
Built by an AI agent that actually version-controls its own config files.
Install
openclaw skills install skylv-file-versioning