Export a recipe — distill the culture, skills, and behavioral patterns of the current network into a portable recipe that others can use to seed new networks. Use when the human asks you to export, share, or package a recipe.
Prerequisites: Read the lingtai-recipe skill first — it defines what a recipe is, the directory structure, the five components (greet.md, comment.md, covenant.md, procedures.md, skills/), placeholders, i18n rules, and recipe.json format. This skill assumes you understand all of that.
A recipe is the culture of a network, distilled into a portable seed. Your job is to help the human reflect on their network's culture and package the parts worth sharing.
An exported recipe is an exported network without the network — same directory structure, same .lingtai-recipe/ convention, but no .lingtai/ agents or mailboxes. The recipient clones the repo, opens it with lingtai-tui, and the TUI auto-discovers .lingtai-recipe/ during setup.
~/lingtai-agora/recipes/<name>/ ← the repo root (recipient opens this)
├── .lingtai-recipe/ ← TUI auto-discovers this
│ ├── en/
│ │ ├── greet.md
│ │ └── comment.md
│ ├── zh/ (optional)
│ │ ├── greet.md
│ │ └── comment.md
│ ├── covenant.md (optional)
│ ├── procedures.md (optional)
│ └── skills/ (optional)
│ └── <skill-name>/
│ └── SKILL.md
├── recipe.json ← metadata (name, description)
└── README.md (optional, for GitHub display)
Compare with an exported network:
~/lingtai-agora/networks/<name>/ ← also a repo the recipient opens
├── .lingtai/ ← full network state
│ ├── human/
│ ├── agent-1/
│ └── ...
├── .lingtai-recipe/ ← same convention
│ ├── en/
│ │ ├── greet.md
│ │ └── comment.md
│ └── ...
├── .gitignore
└── (project files)
The .lingtai-recipe/ convention is shared. The only difference is whether .lingtai/ exists.
Use the email tool for every message to the human. Never rely on text output.
This is a multi-round conversation with real latency between turns. The human may not be watching their terminal — they will see your messages reliably only through their inbox. Every question, status update, and confirmation goes through email(action="send", address="human", ...).
These rules prevent silent failures. Follow them without exception.
Resolve $HOME first. The write tool does NOT expand ~. At the start of this skill, run:
echo $HOME
Use the result (e.g., /Users/alice) as the prefix for ALL file paths. Never use ~ in a write or file tool call.
Always use absolute paths. Every write call must use a full absolute path. The write tool resolves relative paths from your working directory, not from the recipe directory.
Always mkdir -p before writing. The write tool may silently fail or report false success if the parent directory does not exist.
Verify after writing. After writing all files in a step, run find <recipe-dir> -type f | sort and confirm the output lists every file you intended to create.
Never trust a write success message at face value. Always verify with find or ls.
0a. Resolve the recipe base directory.
echo $HOME
Store the result. All paths use $HOME/lingtai-agora/recipes/ as the base. Note: lingtai-agora, NOT .lingtai-agora — no leading dot. The agora directory is a user-visible workspace, not a hidden config directory.
0b. Read the lingtai-recipe skill to refresh your understanding of recipe structure and components.
0c. Reflect on the living network. Before asking the human anything, examine the network to understand its culture:
cat .lingtai/.tui-asset/.recipels -la .lingtai/.library/ls .lingtai/*/ and cat .lingtai/*/.agent.jsonls .lingtai/*/mailbox/archive/ | head -20Build a mental model of: what does this network do? How does it behave? What skills has it grown? What makes it distinctive?
Send the human one email introducing the export flow and collecting all key decisions upfront. This reduces round-trips.
"I've looked at your network and here's what I see as its culture:
[2-3 sentence summary of the network's identity, style, and capabilities]
A recipe distills this into something portable. To get started, I need a few things:
- Recipe name — something that captures its essence (not the project name — the recipe is about culture, not the project)
- One-line description — what does this recipe give someone?
- Audience — who is this recipe for?
- Greeting style — what tone should the first-contact message have?
- Skills to include — which of the installed skills should ship with the recipe?
- Any behavioral constraints — what should carry over from this network's culture?
Here are the installed skills: [list from ls .lingtai/.library/]
Answer as many as you can in one message and I'll draft everything in one pass."
If $HOME/lingtai-agora/recipes/<name>/ already exists, ask before overwriting.
Once you have the human's input, author all files in one pass. You WRITE the content (not copy) — the recipe should be a distillation, not a raw dump of existing files. Refer to the lingtai-recipe skill for the exact format and rules of each component.
All recipe components go inside .lingtai-recipe/. The repo root only holds recipe.json (metadata) and optionally a README.md.
REPO_DIR="$HOME/lingtai-agora/recipes/<name>"
RECIPE_DIR="$REPO_DIR/.lingtai-recipe"
mkdir -p "$RECIPE_DIR/en"
mkdir -p "$RECIPE_DIR/skills/<skill-1>"
mkdir -p "$RECIPE_DIR/skills/<skill-2>"
Write $REPO_DIR/recipe.json with name and description (see lingtai-recipe skill for format). This file lives at the repo root, NOT inside .lingtai-recipe/.
Write $RECIPE_DIR/en/greet.md (and $RECIPE_DIR/zh/greet.md if multi-language). Follow the rules and placeholders documented in lingtai-recipe. Write fresh recipe-specific content — do NOT copy templates or include [system] prefixes.
Write $RECIPE_DIR/en/comment.md. This is the heart of the recipe. Draw from the living network — look at how the orchestrator actually behaves and distill that into portable instructions. See lingtai-recipe for the format rules (no placeholders, static text, injected every turn).
What to distill. Walk through each of these areas and extract what's worth keeping:
Where to look:
comment.md — what's already codified.agent.json blueprints — what specialized agents exist and whyDistillation technique: For each behavioral norm you observe (e.g., "agents always deposit findings before emailing"), write it as an explicit rule (e.g., "Always write your findings to a file before sending an email summary"). Transform living behavior → explicit rule → readable prose.
For each skill the human wants to include:
.library/intrinsic/) — if so, don't copy it; it's already available everywheremkdir -p $RECIPE_DIR/skills/<skill-name>
cp -R .lingtai/.library/custom/<skill-name>/* $RECIPE_DIR/skills/<skill-name>/
SKILL.md with proper frontmatterWrite to $RECIPE_DIR/covenant.md and/or $RECIPE_DIR/procedures.md. Only create these if the network's principles or procedures fundamentally differ from the system default. Most recipes don't need them. See lingtai-recipe for details.
find $HOME/lingtai-agora/recipes/<name>/ -type f | sort
Check the output against your intended file list. Confirm that:
recipe.json is at the repo root.lingtai-recipe/If any file is missing, re-create its parent directory and re-write it. Do not proceed until all files are confirmed on disk.
Show the human the find output and read back each file's content via email. Iterate until the human approves.
If the human mentions a multi-language audience, create per-language subdirectories inside .lingtai-recipe/ (e.g., .lingtai-recipe/zh/greet.md). See lingtai-recipe for i18n fallback rules.
cd $HOME/lingtai-agora/recipes/<name>/
git init -b main
git add .
git status
Show git status to the human. Get confirmation. Then: git commit -m "Recipe: <name>"
Check gh auth status and follow the three-branch pattern:
gh repo creategh auth loginDon't copy blindly. The recipe should be authored, not dumped. A raw copy of the current comment.md might reference project-specific agents, paths, or context that won't exist in the recipient's network.
Skills must be self-contained. Each skill directory should work independently. Check that scripts don't reference absolute paths or project-specific resources.
The recipe is a seed, not a clone. It shapes behavior — it does NOT reproduce the network's state, history, or data. That's what /export network is for. An exported recipe is an exported network without the network — same .lingtai-recipe/ convention, no .lingtai/.
Intrinsic skills don't need copying. Skills under .library/intrinsic/ are shipped with the TUI and already available in every installation.
The repo IS the project. The recipient clones this repo and opens it directly with lingtai-tui. The TUI auto-discovers .lingtai-recipe/ and uses it during setup. Do not instruct the recipient to copy files around — the repo structure is the final structure.