8 production-ready skills for enhanced Claude Code workflows: 1. github-ops - Comprehensive GitHub operations via gh CLI and API - PR/issue management, workflow automation, API interactions 2. markdown-tools - Document conversion to markdown - PDF/Word/PowerPoint/Confluence → Markdown with WSL support 3. mermaid-tools - Mermaid diagram generation - Extract and render diagrams from markdown to PNG/SVG 4. statusline-generator - Claude Code statusline customization - Multi-line layouts, cost tracking, git status, colors 5. teams-channel-post-writer - Microsoft Teams communication - Adaptive Cards, formatted announcements, corporate standards 6. repomix-unmixer - Repomix file extraction - Extract from XML/Markdown/JSON formats with auto-detection 7. skill-creator - Skill development toolkit - Init, validation, packaging scripts with privacy best practices 8. llm-icon-finder - AI/LLM brand icon finder - 100+ AI model icons in SVG/PNG/WEBP formats Features: - Individual skill installation (install only what you need) - Progressive disclosure design (optimized context usage) - Privacy-safe examples (no personal/company information) - Comprehensive documentation with references - Production-tested workflows Installation: /plugin marketplace add daymade/claude-code-skills /plugin marketplace install daymade/claude-code-skills#<skill-name> Version: 1.2.0 License: See individual skill licenses 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8.7 KiB
Repomix File Format Reference
This document provides comprehensive documentation of repomix output formats for accurate file extraction.
Overview
Repomix can generate output in three formats:
- XML (default) - Most common, uses XML tags
- Markdown - Human-readable, uses markdown code blocks
- JSON - Structured data format
XML Format
Structure
The XML format is the default and most common repomix output:
<file_summary>
[Summary and metadata about the packed repository]
</file_summary>
<directory_structure>
[Text-based directory tree visualization]
</directory_structure>
<files>
<file path="relative/path/to/file1.ext">
content of file1
</file>
<file path="relative/path/to/file2.ext">
content of file2
</file>
</files>
File Block Pattern
Each file is enclosed in a <file> tag with a path attribute:
<file path="src/main.py">
#!/usr/bin/env python3
def main():
print("Hello, world!")
if __name__ == "__main__":
main()
</file>
Key Characteristics
- File path is in the
pathattribute (relative path) - Content starts on the line after the opening tag
- Content ends on the line before the closing tag
- No leading/trailing blank lines in content (content is trimmed)
Extraction Pattern
The unmixing script uses this regex pattern:
r'<file path="([^"]+)">\n(.*?)\n</file>'
Pattern breakdown:
<file path="([^"]+)">- Captures the file path from the path attribute\n- Expects a newline after opening tag(.*?)- Captures file content (non-greedy, allows multiline)\n</file>- Expects newline before closing tag
Markdown Format
Structure
The Markdown format uses code blocks to delimit file content:
# Repository Summary
[Summary content]
## Directory Structure
```
directory/
file1.txt
file2.txt
```
## Files
### File: relative/path/to/file1.ext
```python
# File content here
def example():
pass
```
### File: relative/path/to/file2.ext
```javascript
// Another file
console.log("Hello");
```
File Block Pattern
Each file uses a level-3 heading with "File:" prefix and code block:
### File: src/main.py
```python
#!/usr/bin/env python3
def main():
print("Hello, world!")
```
Key Characteristics
- File path follows "### File: " heading
- Content is within a code block (triple backticks)
- Language hint may be included after opening backticks
- Content preserves original formatting
Extraction Pattern
r'## File: ([^\n]+)\n```[^\n]*\n(.*?)\n```'
Pattern breakdown:
## File: ([^\n]+)- Captures file path from heading\n- Newline after heading`[^\n]*`- Opening code block with optional language\n(.*?)\n- Captures content between backticks```` - Closing backticks
JSON Format
Structure
The JSON format provides structured data:
{
"metadata": {
"repository": "owner/repo",
"timestamp": "2025-10-22T19:00:00Z"
},
"directoryStructure": "directory/\n file1.txt\n file2.txt\n",
"files": [
{
"path": "relative/path/to/file1.ext",
"content": "content of file1\n"
},
{
"path": "relative/path/to/file2.ext",
"content": "content of file2\n"
}
]
}
File Entry Structure
Each file is an object in the files array:
{
"path": "src/main.py",
"content": "#!/usr/bin/env python3\n\ndef main():\n print(\"Hello, world!\")\n\nif __name__ == \"__main__\":\n main()\n"
}
Key Characteristics
- Files are in a
filesarray - Each file has
pathandcontentkeys - Content includes literal
\nfor newlines - Content is JSON-escaped (quotes, backslashes)
Extraction Approach
data = json.loads(content)
files = data.get('files', [])
for file_entry in files:
file_path = file_entry.get('path')
file_content = file_entry.get('content', '')
Format Detection
Detection Logic
The unmixing script auto-detects format using these checks:
- XML: Contains
<file path=and</file> - JSON: Starts with
{and contains"files" - Markdown: Contains
## File:
Detection Priority
- Check XML markers first (most common)
- Check JSON structure second
- Check Markdown markers last
- Return
Noneif no format matches
Example Detection Code
def detect_format(content):
if '<file path=' in content and '</file>' in content:
return 'xml'
if content.strip().startswith('{') and '"files"' in content:
return 'json'
if '## File:' in content:
return 'markdown'
return None
File Path Encoding
Relative Paths
All file paths in repomix output are relative to the repository root:
src/components/Header.tsx
docs/README.md
package.json
Special Characters
File paths may contain:
- Spaces:
"My Documents/file.txt" - Hyphens:
"some-file.md" - Underscores:
"my_script.py" - Dots:
"config.local.json"
Paths are preserved exactly as they appear in the original repository.
Directory Separators
- Always forward slashes (
/) regardless of platform - No leading slash (relative paths)
- No trailing slash for files
Content Encoding
Character Encoding
All formats use UTF-8 encoding for both the container file and extracted content.
Special Characters
- XML: Content may contain XML-escaped characters (
<,>,&) - Markdown: Content is plain text within code blocks
- JSON: Content uses JSON string escaping (
\",\\,\n)
Line Endings
- Original line endings are preserved
- May be
\n(Unix),\r\n(Windows), or\r(old Mac) - Extraction preserves original endings
Edge Cases
Empty Files
XML:
<file path="empty.txt">
</file>
Markdown:
### File: empty.txt
```
```
JSON:
{"path": "empty.txt", "content": ""}
Binary Files
Binary files are typically not included in repomix output. The directory structure may list them, but they won't have content blocks.
Large Files
Some repomix configurations may truncate or exclude large files. Check the file summary section for exclusion notes.
Version Differences
Repomix v1.x
- Uses XML format by default
- File blocks have consistent structure
- No automatic format version marker
Repomix v2.x
- Adds JSON and Markdown format support
- May include version metadata in output
- Maintains backward compatibility with v1 XML
Validation
Successful Extraction Indicators
After extraction, verify:
- File count matches expected number
- Directory structure matches the
<directory_structure>section - Content integrity - spot-check a few files
- No empty directories unless explicitly included
Common Format Issues
Issue: Files not extracted
- Cause: Format pattern mismatch
- Solution: Check format manually, verify repomix version
Issue: Partial content extraction
- Cause: Incorrect regex pattern (too greedy or not greedy enough)
- Solution: Check for nested tags or malformed blocks
Issue: Encoding errors
- Cause: Non-UTF-8 content in repomix file
- Solution: Verify source file encoding
Examples
Complete XML Example
<file_summary>
This is a packed repository.
</file_summary>
<directory_structure>
my-skill/
SKILL.md
scripts/
helper.py
</directory_structure>
<files>
<file path="my-skill/SKILL.md">
---
name: my-skill
description: Example skill
---
# My Skill
This is an example.
</file>
<file path="my-skill/scripts/helper.py">
#!/usr/bin/env python3
def help():
print("Helping!")
</file>
</files>
Complete Markdown Example
# Repository: my-skill
## Directory Structure
```
my-skill/
SKILL.md
scripts/
helper.py
```
## Files
### File: my-skill/SKILL.md
```markdown
---
name: my-skill
description: Example skill
---
# My Skill
This is an example.
```
### File: my-skill/scripts/helper.py
```python
#!/usr/bin/env python3
def help():
print("Helping!")
```
Complete JSON Example
{
"metadata": {
"repository": "my-skill"
},
"directoryStructure": "my-skill/\n SKILL.md\n scripts/\n helper.py\n",
"files": [
{
"path": "my-skill/SKILL.md",
"content": "---\nname: my-skill\ndescription: Example skill\n---\n\n# My Skill\n\nThis is an example.\n"
},
{
"path": "my-skill/scripts/helper.py",
"content": "#!/usr/bin/env python3\n\ndef help():\n print(\"Helping!\")\n"
}
]
}
References
- Repomix documentation: https://github.com/yamadashy/repomix
- Repomix output examples: Check the repomix repository for sample outputs
- XML specification: https://www.w3.org/XML/
- JSON specification: https://www.json.org/