Files
ss-tools/merge_kilo.py
2026-05-08 10:07:05 +03:00

68 lines
2.3 KiB
Python

import os
from datetime import datetime
from pathlib import Path
def merge_dir(content_blocks, directory, section_title, base, flat=False):
if not directory.exists():
return
content_blocks.append(f"## {section_title}\n")
if flat:
for file_path in sorted(directory.rglob("*")):
if not file_path.is_file():
continue
relative = file_path.relative_to(base)
try:
content = file_path.read_text(encoding="utf-8")
except Exception as e:
print(f"Skipping {file_path}: {e}")
continue
content_blocks.append(f"### {relative}\n")
content_blocks.append(content)
content_blocks.append("\n")
else:
for sub_dir in sorted(directory.iterdir()):
if not sub_dir.is_dir():
continue
for file_path in sorted(sub_dir.rglob("*")):
if not file_path.is_file():
continue
relative = file_path.relative_to(base)
try:
content = file_path.read_text(encoding="utf-8")
except Exception as e:
print(f"Skipping {file_path}: {e}")
continue
content_blocks.append(f"### {relative}\n")
content_blocks.append(content)
content_blocks.append("\n")
def merge_kilo():
skills_dir = Path(".kilo/skills")
agents_dir = Path(".kilo/agents")
workflows_dir = Path(".kilocode/workflows")
root = Path(".")
if not (skills_dir.exists() or agents_dir.exists() or workflows_dir.exists()):
print("Error: No source directories found.")
return
now = datetime.now().strftime("%Y%m%d-%H%M%S")
output_filename = f"kilo-merged-{now}.md"
content_blocks = ["# Kilo Configuration Snapshot\n"]
merge_dir(content_blocks, skills_dir, "Skills", root, flat=False)
merge_dir(content_blocks, agents_dir, "Agents", root, flat=True)
merge_dir(content_blocks, workflows_dir, "Workflows", root, flat=True)
with open(output_filename, "w", encoding="utf-8") as f:
f.write("\n".join(content_blocks))
print(f"Successfully created: {output_filename}")
if __name__ == "__main__":
merge_kilo()