with one click
endosymbiosis
// Integrate an external tool as a first-class organelle. Use when absorbing a new CLI or service into the organism. "absorb", "integrate tool", "wrap tool"
// Integrate an external tool as a first-class organelle. Use when absorbing a new CLI or service into the organism. "absorb", "integrate tool", "wrap tool"
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | endosymbiosis |
| description | Integrate an external tool as a first-class organelle. Use when absorbing a new CLI or service into the organism. "absorb", "integrate tool", "wrap tool" |
| triggers | ["absorb","endosymbiosis","integrate","organelle","wrap tool","ingest"] |
| user_invocable | true |
| model | sonnet |
| context | fork |
The mitochondrion was once a free-living bacterium. The chloroplast too. Endosymbiosis: a foreign organism is absorbed, loses its autonomy, and becomes an organelle — permanently integrated, mutualistic, no longer separable.
This is the endocytosis pattern generalized. Endocytosis absorbed 161 RSS feeds. The organism didn't link to them — it ingested them.
Use droid explore for recon — don't burn CC tokens reading the external codebase:
ribosome -m "custom:glm-4.7" --cwd <external-repo> \
"Read the source files and summarize: (1) what it does and key functions, \
(2) external dependencies, (3) path assumptions, (4) how the organism \
currently wraps it. Output a concise summary for spec writing."
From the droid summary, answer four questions:
If blast radius is high and state is foreign: absorb. If blast radius is low: consider endocytosis (one-shot ingestion) instead.
Create a thin adapter that hides the external surface:
# Before: organism calls external directly
result = subprocess.run(["external-tool", "--flag", input])
# After: organism calls an organelle
result = organelle.process(input) # organelle owns the external call
The organism should not know what the organelle runs internally.
Make the organelle read from organism sources:
After absorption, the lysosome breaks down foreign material and keeps only what the organism needs. A blind port is undigested — foreign DNA running inside the cell.
For each absorbed module, audit:
metabolon.locus or organism config._cli() wrapper, not the organelle's identity.The test: could a new contributor read this organelle and understand it in 60 seconds? If not, it's undigested.
The absorbed organelle must give more than it costs:
| Metric | Before absorption | After absorption |
|---|---|---|
| Invocation overhead | ||
| Error handling | ||
| Organism visibility into behavior | ||
| Upgrade surface (risk) |
Once the organelle is stable: remove all direct invocations of the original external tool from organism code. The original binary/package may remain installed — but only the organelle may call it.