file-justification
Enforces a strict protocol requiring justification before creating or modifying any file.
Install
mkdir -p .claude/skills/file-justification && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12246" && unzip -o skill.zip -d .claude/skills/file-justification && rm skill.zipInstalls to .claude/skills/file-justification
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
**Purpose**: Before creating or modifying ANY file, you MUST document the justification to prevent unnecessary file creation and ensure changes are well-reasoned.Key capabilities
- →Document justification for creating a new file.
- →Document justification for modifying an existing file.
- →Search for similar functionality in existing files.
- →Identify integration targets for new code.
- →Document why integration into existing files failed.
How it works
The skill enforces a protocol requiring documentation of justification for every file creation or modification, prioritizing integration into existing files over new file creation.
Inputs & outputs
When to use file-justification
- →Modifying existing files
- →Creating new modules
- →PR documentation
About this skill
File Justification Protocol
Purpose: Before creating or modifying ANY file, you MUST document the justification to prevent unnecessary file creation and ensure changes are well-reasoned.
When This Protocol Applies
- Creating a NEW file (highest scrutiny)
- Modifying an EXISTING file
- All PR changes (each file touched needs justification)
Justification Template
For EACH file you touch, document:
### File: <filename>
**GOAL**: What are you trying to achieve?
**MODIFICATION**: What specific change are you making?
**NECESSITY**: Why is this change required? Why can't it be done differently?
**INTEGRATION PROOF**: How does this integrate with existing code?
New File Creation - Extreme Scrutiny
Default: NO NEW FILES - You must prove why integration into existing files is impossible.
Pre-Write Checklist (MANDATORY before creating any new file)
- Assume existing files can handle it - Search for similar functionality
- Identify integration targets - Which existing files could contain this code?
- Attempt integration first - Try adding to existing file before creating new
- Document why integration failed - Concrete reason, not "cleaner this way"
Integration Hierarchy (try in order)
- Existing file with similar functionality
- Existing utility/helper file
- Existing
__init__.py - Existing test file (for test code)
- Existing class as a method
- Config file
- LAST RESORT: New file (with full justification)
Examples
Good Justification (Modifying Existing)
### File: $PROJECT_ROOT/llm_response.py
**GOAL**: Add backward compatibility for outcome_resolution field
**MODIFICATION**: Add property that falls back to outcome_resolution when action_resolution is missing
**NECESSITY**: API clients already use action_resolution; changing the field name would break them
**INTEGRATION PROOF**: Property pattern matches existing properties in this class (lines 45-67)
Good Justification (New File - Justified)
### File: $PROJECT_ROOT/action_resolution_utils.py (NEW)
**GOAL**: Centralize action_resolution/outcome_resolution fallback logic
**MODIFICATION**: Create helper module with get_action_resolution() function
**NECESSITY**: Same logic duplicated in llm_response.py (22 lines) and world_logic.py (13 lines)
**INTEGRATION PROOF**:
- Could not add to llm_response.py - world_logic.py would create circular import
- Could not add to world_logic.py - llm_response.py would create circular import
- New utils file breaks the dependency cycle
Bad Justification (Rejected)
### File: $PROJECT_ROOT/new_helper.py (NEW)
**GOAL**: Add helper function
**MODIFICATION**: Create new file with helper
**NECESSITY**: Cleaner to have it separate <-- NOT VALID
**INTEGRATION PROOF**: None attempted <-- MUST ATTEMPT
File Placement Rules
If a new file is justified, place it correctly:
| Code Type | Location |
|---|---|
| Python module | $PROJECT_ROOT/ or appropriate submodule |
| Scripts | scripts/ |
| Tests | $PROJECT_ROOT/tests/ |
| Commands | .claude/commands/ |
| Skills | .claude/skills/ |
NEVER create new files in project root.
Banned Patterns
*_v2.py- Edit existing file*_new.py- Edit existing file*_backup.py- Use git*_old.py- Delete and replace
Quick Reference
Before ANY file operation:
- What existing file could contain this? (Search first)
- Why can't I add this to that file? (Valid reason required)
- Have I documented GOAL/MODIFICATION/NECESSITY/INTEGRATION PROOF?
If you cannot answer these questions, do not create the file.
When not to use it
- →When the user does not want to document the justification for file changes.
- →When the user wants to create new files without proving why integration into existing files is impossible.
- →When the user wants to use banned patterns like `*_v2.py` or `*_backup.py`.
Limitations
- →New file creation is under extreme scrutiny and requires proof why integration into existing files is impossible.
- →The protocol applies to all PR changes.
- →Banned patterns like `*_v2.py` or `*_backup.py` are not allowed.
How it compares
This skill mandates a formal justification process for every file change, including a pre-write checklist and integration hierarchy, which is a more rigorous approach than simply making changes.
Compared to similar skills
file-justification side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| file-justification (this skill) | 0 | 3mo | No flags | Beginner |
| wrap | 0 | 6mo | Review | Intermediate |
| session-wrap | 1 | 7mo | Review | Intermediate |
| windsurf-custom-prompts | 1 | 2mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
wrap
team-attention
세션 종료 시 자동 정리를 수행합니다. CLAUDE.md 업데이트 제안, 반복 패턴 자동화 기회 탐지, 배운 것 정리, 미완성 작업 정리. 사용자가 /wrap 또는 세션 마무리 요청 시 사용.
session-wrap
team-attention
This skill should be used when the user asks to "wrap up session", "end session", "session wrap", "/wrap", "document learnings", "what should I commit", or wants to analyze completed work before ending a coding session.
windsurf-custom-prompts
jeremylongshore
Create and manage custom prompt libraries for Cascade. Activate when users mention "custom prompts", "prompt library", "prompt templates", "cascade prompts", or "prompt management". Handles prompt library creation and organization. Use when working with windsurf custom prompts functionality. Trigger with phrases like "windsurf custom prompts", "windsurf prompts", "windsurf".
analyse-issue
monarch-initiative
Analyze MONDO GitHub issues for validity, suggest improvements, and generate structured reports with duplication checks and identifier validation
gsd-validate-phase
lza6
Retroactively audit and fill Nyquist validation gaps for a completed phase
deliverable-selfloop
WILLOSCAR
|