diff --git a/pipeline/publisher.py b/pipeline/publisher.py index a6b68cf..e61dcd3 100644 --- a/pipeline/publisher.py +++ b/pipeline/publisher.py @@ -52,6 +52,18 @@ def publish_skill(review_result, config): subprocess.run(["git", "config", "user.email", "hermes@agent.local"], cwd=repo_dir) subprocess.run(["git", "config", "user.name", "Hermes Pipeline"], cwd=repo_dir) + # Check for duplicates in skills/ directory + skills_dir = os.path.join(repo_dir, "skills") + existing_skills = [] + if os.path.isdir(skills_dir): + existing_skills = [d for d in os.listdir(skills_dir) if os.path.isdir(os.path.join(skills_dir, d))] + + if skill_name in existing_skills: + return { + "status": "SKIP", + "reason": f"Skill '{skill_name}' already exists in skills/ directory", + } + # Create skill directory skill_dir = os.path.join(repo_dir, "skills", skill_name) os.makedirs(skill_dir, exist_ok=True) diff --git a/run.py b/run.py index 077b3cb..1e69f54 100644 --- a/run.py +++ b/run.py @@ -137,6 +137,8 @@ def main(): if publish_output.get("status") == "PUBLISHED": print(f" ✓ Published! PR: {publish_output.get('pr_url', '')}") results["published"] += 1 + elif publish_output.get("status") == "SKIP": + print(f" ⏸ Skipped: {publish_output.get('reason', '')}") else: print(f" ! {publish_output.get('status', '?')}: {publish_output.get('message', publish_output.get('error', ''))[:100]}")