Claude-skill-registry File Validation

Strict detection and removal of unrelated files before PR creation

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/file-validation" ~/.claude/skills/majiayu000-claude-skill-registry-file-validation && rm -rf "$T"
manifest: skills/data/file-validation/SKILL.md
source content

File Validation Skill

Be strict, not permissive. Unrelated files MUST be removed, not suggested.

Core Principle: STRICT MODE - Unrelated files are removed immediately, not flagged for later cleanup.


Overview

File validation ensures PRs contain only relevant changes. This prevents:

  • Local dev artifacts (redis-cluster, .env.local, tmp/)
  • Debug files (console.log, dump.rdb)
  • OS/IDE artifacts (.DS_Store, .vscode/)
  • Unintentional changes from other work

Policy: When unrelated files are detected, remove them. Don't suggest cleanup - do it.


When to Use

Trigger automatically during:

  • /commit-commands:commit-push-pr
  • /commit-commands:commit
  • Any PR creation workflow

Trigger manually with:

  • /v-file-validation:check

Commands

CommandPurpose
/v-file-validation:check
Run detection and prompt for removal

Detection Patterns

By File Path

Flag files containing these path segments:

PatternCategoryExample
local
Local config
config/local.json
test-data
Test fixtures
test-data/users.json
tmp
Temporary
tmp/debug.log
debug
Debug files
debug/output.txt
dump
Data dumps
dump/database.sql
cache
Cache files
.cache/
redis-cluster
Local Redis
redis-cluster/dump.rdb
docker-compose.override
Local Docker
docker-compose.override.yml

By File Extension

Flag files with these extensions:

ExtensionCategoryExample
.log
Log files
app.log
.pid
Process IDs
server.pid
.rdb
Redis dumps
dump.rdb
.dump
Data dumps
postgres.dump
.swp
Vim swap
.file.swp
.pyc
Python compiled
__pycache__/*.pyc

By File Name

Flag files matching these names:

NameCategory
.DS_Store
macOS artifact
Thumbs.db
Windows artifact
desktop.ini
Windows artifact
.env.local
Local env config
.env.development.local
Local env config
.env.test.local
Local env config

Common Categories

CategoryExamplesWhy Unrelated
Local dev artifacts
redis-cluster/
,
dump.rdb
,
.env.local
Only exist in local environment
Debug files
debug.log
,
tmp/
,
console-output.txt
Temporary debugging
OS artifacts
.DS_Store
,
Thumbs.db
,
desktop.ini
OS-specific, should be in .gitignore
IDE files
.vscode/
,
.idea/
,
*.swp
IDE-specific, should be in .gitignore
Build artifacts
node_modules/
,
dist/
,
build/
,
*.pyc
Generated, should be in .gitignore
Test data
test-data/
,
fixtures/local/
Local testing only
Config overrides
docker-compose.override.yml
,
local.settings.json
Local dev config

Detection Logic

def is_unrelated(file_path, pr_scope):
    # 1. Path-based detection
    unrelated_patterns = [
        'local', 'test-data', 'tmp', 'debug', 'dump',
        'cache', '.DS_Store', '*.log', '*.pid',
        'redis-cluster', 'docker-compose.override'
    ]

    if any(pattern in file_path for pattern in unrelated_patterns):
        return True

    # 2. Extension-based detection
    unrelated_extensions = ['.log', '.pid', '.rdb', '.dump', '.swp', '.pyc']
    if any(file_path.endswith(ext) for ext in unrelated_extensions):
        return True

    # 3. Scope-based detection
    # Read PR description + Linear issue
    # Check if file is mentioned or relates to scope
    if not file_mentioned_in_scope(file_path, pr_scope):
        return True

    return False

Strict Mode Policy

Wrong Approach (Too Permissive)

❌ "These files shouldn't affect the PR, but you may want to clean them up later"

Right Approach (Strict)

✅ "These files are unrelated to this PR and must be removed:
- redis-cluster/dump.rdb (local dev artifact)
- .env.local (local config)
- tmp/debug.log (debug file)

Removing them now."

Then execute the removal.


Handling User Override

Rare case: User insists files ARE related.

Response:

Okay, keeping the files. Please add justification to PR description:

## Unusual Files Included

This PR includes files that may appear unrelated:
- redis-cluster/: [Explain why needed]
- .env.local: [Explain why needed]

Justification: [User's explanation]

This documents the decision for reviewers.


Integration Points

With commit-commands Plugin

When

/commit-commands:commit-push-pr
runs:

  1. List all changed files
  2. Invoke
    /v-file-validation:check
  3. If unrelated files found → Prompt for removal
  4. After cleanup → Continue with commit

With Tech Lead

Before tech lead approval:

  1. Run file validation
  2. If unrelated files found → Block until cleaned

Reference Files

FilePurpose
violet-brain/patterns/pr-quality.md
PR quality standards and file validation criteria
violet-brain/patterns/multi-agent-git.md
Multi-agent git safety (never use
git add -A
)

Skill Version: 1.0.0