feat: Paperclip company agents + enhanced install
Paperclip install now deploys 52 agents (29 persona + 23 company) + 73 skills: - Company agents from paperclip-docs: Odin (CEO), Thor (CTO), Freya (CMO), Frigg (COO), Heimd (PM), Bragi (Lead Dev), Vali (Backend), Vidar (Frontend), Heimdall (DevOps), Njord (SysAdmin), Forseti (QA), Tyr (Security), Eir (UI/UX), Kvasir (Data/ML), Loki (Social), Idunn (Content), Mimir (Research), Saga (SEO), Baldur (Support), Hermod (HR), Modir (Operations), Dvalin (Finance) - Skills now include both shared-skills (42) + paperclip-skills (31) = 73 Source definitions stored at personas/_shared/paperclip-agents/ Each agent has: SOUL.md + hermes-config.yaml + AGENTS.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
45
build.py
45
build.py
@@ -690,15 +690,54 @@ def install_paperclip(output_dir: Path, personas_dir: Path):
|
||||
dest = skills_dir / skill_dir.name
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
(dest / "SKILL.md").write_text(skill_md.read_text(encoding="utf-8"), encoding="utf-8")
|
||||
# Copy references if exist
|
||||
refs = skill_dir / "references"
|
||||
if refs.is_dir():
|
||||
import shutil
|
||||
shutil.copytree(refs, dest / "references", dirs_exist_ok=True)
|
||||
skill_count += 1
|
||||
|
||||
print(f" Paperclip: {agent_count} agents + {skill_count} skills to {pc_dir}")
|
||||
return agent_count
|
||||
# Copy paperclip-specific skills
|
||||
pc_skills = personas_dir / "_shared" / "paperclip-skills"
|
||||
if pc_skills.exists():
|
||||
for skill_dir in sorted(pc_skills.iterdir()):
|
||||
if not skill_dir.is_dir():
|
||||
continue
|
||||
skill_md = skill_dir / "SKILL.md"
|
||||
if skill_md.exists() and not (skills_dir / skill_dir.name).exists():
|
||||
dest = skills_dir / skill_dir.name
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
(dest / "SKILL.md").write_text(skill_md.read_text(encoding="utf-8"), encoding="utf-8")
|
||||
refs = skill_dir / "references"
|
||||
if refs.is_dir():
|
||||
import shutil
|
||||
shutil.copytree(refs, dest / "references", dirs_exist_ok=True)
|
||||
scripts = skill_dir / "scripts"
|
||||
if scripts.is_dir():
|
||||
import shutil
|
||||
shutil.copytree(scripts, dest / "scripts", dirs_exist_ok=True)
|
||||
skill_count += 1
|
||||
|
||||
# Deploy original Paperclip company agents from _shared/paperclip-agents/
|
||||
pc_agents_src = personas_dir / "_shared" / "paperclip-agents"
|
||||
pc_agent_count = 0
|
||||
if pc_agents_src.exists():
|
||||
for agent_src in sorted(pc_agents_src.iterdir()):
|
||||
if not agent_src.is_dir():
|
||||
continue
|
||||
agent_name = agent_src.name
|
||||
# Skip if persona-based agent already exists with same name
|
||||
if (agents_dir / agent_name).exists():
|
||||
continue
|
||||
dest = agents_dir / agent_name
|
||||
dest.mkdir(parents=True, exist_ok=True)
|
||||
for f in agent_src.iterdir():
|
||||
if f.is_file():
|
||||
(dest / f.name).write_text(f.read_text(encoding="utf-8"), encoding="utf-8")
|
||||
pc_agent_count += 1
|
||||
|
||||
total_agents = agent_count + pc_agent_count
|
||||
print(f" Paperclip: {agent_count} persona agents + {pc_agent_count} company agents + {skill_count} skills to {pc_dir}")
|
||||
return total_agents
|
||||
|
||||
|
||||
def install_openclaw(output_dir: Path):
|
||||
|
||||
Reference in New Issue
Block a user