File History Tracker

v1.0.0

Tracks file changes with git-like versioning for any project

0· 19·1 current·1 all-time
Security Scan
Capability signals
CryptoRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (file versioning) align with included code and SKILL.md. The JS implements local snapshot, history, diff, tag, restore, compare, and watch functionality and stores data under a .fvsnap directory next to the tracked file. No unrelated credentials, binaries, or external services are required.
Instruction Scope
Instructions are scoped to operating on files you specify (snap, diff, restore, watch). They do not reference unrelated system paths or credentials. Note: the skill can snapshot arbitrary files (including sensitive files like .env or private keys) and the SKILL.md suggests asking the agent to 'snapshot my config files' — that gives the agent broad discretion to pick files if used carelessly. Treat auto-invoke/watch use and broad commands with caution.
Install Mechanism
No install spec / no downloads. This is an instruction-only skill with an included Node.js file. No network retrievals, package installs, or archive extraction are present in the manifest or SKILL.md.
Credentials
The skill requests no environment variables or credentials. The only sensitive behavior is local: it reads files you point it at and writes snapshots (including text content up to 10MB) into a .fvsnap directory adjacent to those files — expected for a versioning tool but important for user privacy.
Persistence & Privilege
always=false and disable-model-invocation=false (normal). The skill does persist its own data (the .fvsnap directory) within project directories, which is appropriate for its purpose. It does not modify other skills or global agent config.
Scan Findings in Context
[no-findings] expected: Static pre-scan reported no injection signals. The code uses fs and crypto which are expected for local file hashing and storage.
Assessment
This skill appears to do exactly what it claims: local, git-like snapshots of files. It does not contact external servers or request credentials. However, snapshots are stored on disk in a .fvsnap directory next to each tracked file and text file contents (up to 10MB) may be saved verbatim — so do not snapshot secrets, private keys, or credentials you would not want persisted. If you allow the agent to run this autonomously or ask it to 'snapshot my config files', limit its scope (specific paths) and review the .fvsnap contents afterwards. If you want extra assurance, inspect version_engine.js yourself or run the tool in a safe/test directory first. Note: SKILL.md uses a different internal slug (skylv-file-versioning) than the registry slug — this is likely benign but worth being aware of.

Like a lobster shell, security has layers — review code before you run it.

latestvk977jrf5wvsjf20hzrsrd4d3rs85d5wh
19downloads
0stars
1versions
Updated 5h ago
v1.0.0
MIT-0

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 N to 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~N shorthand (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)

MetricValue
Incumbentvisual-file-sorter (score: 1.022)
Incumbent weaknessVisual file organization only, no version control
Our targetTrue git-style file versioning
Improvement potentialSignificant — 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

Featurefile-versioningvisual-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

Comments

Loading comments...