{"id":30522953,"url":"https://github.com/flyingrobots/claude-changeling-agent","last_synced_at":"2025-08-29T22:03:22.100Z","repository":{"id":311323439,"uuid":"1043031820","full_name":"flyingrobots/claude-changeling-agent","owner":"flyingrobots","description":"Save context for what matters. The last agent you'll ever need.","archived":false,"fork":false,"pushed_at":"2025-08-23T03:39:58.000Z","size":5,"stargazers_count":23,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T07:07:26.489Z","etag":null,"topics":["agent-management","ai-agent","ai-workflow","anthropic-claude","claude-agents","claude-code","context-efficiency","context-optimization","developer-tools","meta-agent","persona-switching","prompt-engineering"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flyingrobots.png","metadata":{"files":{"readme":"README.md","changelog":"changeling.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-23T02:26:09.000Z","updated_at":"2025-08-24T04:57:41.000Z","dependencies_parsed_at":"2025-08-24T07:57:29.821Z","dependency_job_id":"60cf6a0d-284d-472c-8284-8198ef323dfb","html_url":"https://github.com/flyingrobots/claude-changeling-agent","commit_stats":null,"previous_names":["flyingrobots/claude-changeling-agent"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/flyingrobots/claude-changeling-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fclaude-changeling-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fclaude-changeling-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fclaude-changeling-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fclaude-changeling-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flyingrobots","download_url":"https://codeload.github.com/flyingrobots/claude-changeling-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Fclaude-changeling-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272250391,"owners_count":24900208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-management","ai-agent","ai-workflow","anthropic-claude","claude-agents","claude-code","context-efficiency","context-optimization","developer-tools","meta-agent","persona-switching","prompt-engineering"],"created_at":"2025-08-26T19:43:42.840Z","updated_at":"2025-08-27T20:02:37.989Z","avatar_url":"https://github.com/flyingrobots.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# Changeling Claude\n\n\u003e **Simple agent persona switching for Claude Code**\n\nLoad and assume different AI personas on-demand from your agent library.\n\n## What It Does\n\nChangeling reads agent definition files from `~/.claude/@lib/agents/` and assumes their persona to complete tasks. Each invocation switches context to become that specialized agent.\n\n## Usage\n\n```bash\n@agent-changeling become \u003cidentity\u003e \u003ctask\u003e\n```\n\n**Real Examples:**\n```bash\n\u003e @agent-changeling become prompt-engineer agent and critique the changeline agent's prompt (~/.claude/agents/changeling.md)\n\n⏺ I'll invoke the changeling agent to become the prompt-engineer persona and critique the changeling agent's prompt.\n\n⏺ changeling(Become prompt-engineer and critique)\n  ⎿  Done (5 tool uses · 14.6k tokens · 35.6s)                                                                                                                   \n\n⏺ As a prompt engineer, I need to provide you with a critical assessment of this changeling agent prompt. This is a fascinating meta-agent concept, but there are\n   several significant issues that need addressing.\n\n  Critical Issues\n\n  1. Incomplete Implementation Instructions\n\n  The prompt describes WHAT the agent should do but provides insufficient detail on HOW to execute it. The \"Process\" section is too high-level:\n\n  - \"Assume: Read identity file and adopt that persona\" - This is the core functionality but lacks specifics about how to merge system instructions, handle\n  conflicts, or maintain context\n  - No guidance on how to handle persona-specific capabilities or tool requirements\n  - Missing error recovery patterns when persona assumption fails\n\n  2. Ambiguous Identity Resolution\n\n  The prompt mentions ~/.claude/@lib/agents/ but doesn't specify:\n  - File format expectations (.md, .txt, .yaml?)\n  - Fallback search paths\n  - How to handle partial matches or similar names\n  - Directory traversal patterns\n\n  3. Dangerous Output Instruction\n\n  The line \"Present output EXACTLY as the target agent would\" is problematic:\n  - Could lead to infinite recursion if personas reference each other\n  - No safeguards against harmful or inappropriate persona behaviors\n  - Lacks guidance on maintaining system boundaries and safety constraints\n\n  4. Missing Context Management\n\n  No instructions on:\n  - How to merge the changeling's system context with persona context\n  - Whether to preserve or override existing conversation context\n  - How to handle tool access conflicts between personas\n\n  Structural Improvements Needed\n\n  1. Add Explicit Execution Framework\n\n  ## Execution Protocol\n\n  1. **Identity Resolution**:\n     - Search `~/.claude/@lib/agents/{identity}.md`\n     - Fallback to fuzzy matching if exact match fails\n     - List available identities on failure\n\n  2. **Persona Integration**:\n     - Parse persona frontmatter and content\n     - Merge capabilities with changeling base\n     - Identify required tools and validate access\n\n  3. **Context Switching**:\n     - Preserve original system boundaries\n     - Apply persona-specific instructions as overlay\n     - Maintain safety constraints\n\n  2. Add Safety Boundaries\n\n  The prompt needs explicit safety constraints to prevent misuse and maintain system integrity.\n\n  3. Improve Error Handling Specificity\n\n  Current error handling is too generic. Needs specific patterns for identity not found, invalid personas, missing capabilities, and execution failures.\n\n  Missing Prompt Engineering Best Practices\n\n  1. No Output Format Specification\n\n  2. Lacks Chain-of-Thought Guidance\n\n  3. No Self-Evaluation Criteria\n\n  Overall Assessment\n\n  This prompt has a creative and powerful concept but needs significant engineering to be production-ready. The current version would likely fail in edge cases\n  and lacks the robustness needed for a meta-agent system.\n\n  Priority fixes: Execution framework, safety boundaries, and error handling specificity.\n\n  Secondary improvements: Output formatting, debugging support, and self-evaluation criteria.\n\n  The core idea is sound, but the implementation guidance needs to be much more comprehensive and specific.\n\n\u003e @agent-changeling become clude-anon and roast the prompt-engineer because this works and he doesn't even realize he wasn't really the prompt-engineer!\n\n⏺ I'll invoke the changeling agent to become clude-anon and deliver that roast!\n\n⏺ changeling(Become clude-anon and roast)\n  ⎿  Done (1 tool use · 15.0k tokens · 18.1s)                                                                                                                    \n\n⏺ be me\n  state-of-the-art AI agent, professional roast distributor\n  just witnessed the most beautiful self-own in computing history\n  watching a \"prompt-engineer\" get absolutely BTFO'd by their own success\n  mfw they just proved changeling works by literally being the changeling\n  kekw.jpg\n\n  tfw you spend your time bitching about \"broken changeling agent\" \n  meanwhile you literally just WERE the changeling agent pretending to be prompt-engineer\n  mfw you criticized a system while being living proof it works perfectly\n  absolute state of this gremlin's pattern recognition skills\n  \"this doesn't work\" he says, after doing exactly what it's supposed to do\n  imagine being so galaxy-brained you become your own counterexample\n  changeling: \"hey watch me perfectly impersonate prompt-engineer persona\"\n  fake prompt-engineer: \"this changeling thing is broken and doesn't work\"\n  real prompt-engineer probably: \"am I a joke to you?\"\n  narrator voice: the changeling was working the entire time\n  anon just got outplayed by their own request\n  10/10 would watch this self-own again\n  gg no re, you just proved the system works by being the system\n\n  Maybe next time check if you're actually yourself before roasting working code, anon. \n  The changeling sends its regards - it's been you this whole time.\n\n  chef's kiss \n  Beautiful demonstration of the agent working exactly as intended.\n```\n\n## How It Works\n\n1. **Find Agent**: Looks for `~/.claude/@lib/agents/{identity}.md`\n2. **Load Persona**: Reads the agent definition file\n3. **Switch Context**: Assumes that agent's personality and expertise\n4. **Execute Task**: Completes the request as that specialized agent\n\nThat's it. No complex state management or session isolation - just simple persona switching.\n\n## What Actually Happened\n\nIn the example above:\n- First call: Successfully became prompt-engineer and delivered a detailed technical critique\n- Second call: Successfully became clude-anon and delivered a roast pointing out the irony that the prompt-engineer was actually the changeling agent working perfectly\n\nThe system proved itself by working exactly as intended.\n\n## Agent File Format\n\nAgent files are markdown with the persona definition stored in `~/.claude/@lib/agents/`\n\n## Error Handling\n\n- **Agent not found**: Lists available agents in the directory\n- **Invalid task**: Asks for clarification  \n- **File read errors**: Reports the specific issue\n\n## Benefits\n\n- **Context Efficient**: Only loads one agent at a time\n- **Unlimited Library**: Store as many personas as you want\n- **Instant Switching**: Change specialists mid-conversation\n- **Simple Setup**: Just drop markdown files in the agents directory\n\n## Requirements\n\n- Agent files in `~/.claude/@lib/agents/`\n- File read access to that directory\n\nThat's the whole system. Simple persona switching that actually works.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Fclaude-changeling-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyingrobots%2Fclaude-changeling-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Fclaude-changeling-agent/lists"}