Journey: Publish-as-template (optional)
SkillFiles & storageUse as the optional template-publishing stage of the Butterbase journey, after deploy (and substrate, if used). Walks the user through authoring a clone-ready README, bundling agent spec files, dry-running and pushing the repo snapshot, flipping visibility to public + listed, and self-clone-testing. Delegates the mechanics to the `templates` skill. Skipped by default in hackathon mode.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Journey: Publish-as-template (optional) skill
What this skill tells your AI
The instructions your AI receives, as published by butterbase-ai/butterbase-skills in skills/journey-templates/SKILL.md and read by ahel’s review.
Turn the deployed app into a public, forkable template. This stage is only for apps the user explicitly wants to share — most journeys end at deploy (or submit in hackathon mode).
When to use
- Dispatched by
journeywhencurrent_stage: templates. - Directly via
/butterbase-skills:journey-templates. - The row is optional in the checklist; skip silently if the user declines.
Inputs
- A deployed, working app (post-
journey-deploy). docs/butterbase/02-plan.md— to know what features the app uses (agents, MCP servers, OAuth providers, function env vars).docs/butterbase/04-build-log.md— to confirm deploy smoke passed.
Preflight
00-state.mdmust havecurrent_stage: templatesor later ANDdeployticked.- The
@butterbase/climust be installed locally (butterbase --versionworks). If not, invokejourney-preflightto fix. - The repo must be bound:
.butterbase/config.jsonexists with the rightcurrentApp. If not, runbutterbase repo init <app_id>.
Procedure
-
Refresh docs. Call
butterbase_docswithtopic: "templates"(andtopic: "repo"if the cache doesn't already cover snapshot push). Skip if03b-docs-cache.mdis fresh. -
Confirm intent. Ask:
"Publish '<app_name>' as a public template? Public + listed makes it appear in the gallery; public + unlisted is forkable by anyone with the app_id but hidden from search. Or skip. (listed / unlisted / skip)"
Default: skip (especially in hackathon mode unless the user explicitly chose to publish their submission).
-
On skip: mark the row
- [x] templates (skipped — not publishing)in00-state.md. Writedocs/butterbase/06-template.mdwith one line:Skipped on <date>.Return to orchestrator. -
On listed / unlisted: delegate to
butterbase-skills:templates. The wrapped skill walks the user through: a. Author / review README.md. This is the most important step — clone replay does not carry OAuth secrets, agent records, MCP server registrations, function secrets, or user data. The README must explain every manual step a cloner will need. Thetemplatesskill has the full checklist; do not let it write a short README and move on. b. Bundle agent specs. If the app has agents, ensureagents/<name>.jsonexist (export withbutterbase agents get <name>if missing) and are tracked. c. Inspect drift.butterbase repo status. Walk the modified / untracked / deleted lists with the user. This is the chance to catch a stray secret file or an unwanted directory before it ends up in the snapshot. d. Dry-run.butterbase repo push --dry-run. Confirm the final upload manifest matches whatrepo statusshowed. e. Push.butterbase repo push -m "publish v1". Capture the snapshot id. f. Flip visibility.butterbase visibility public --listed(or--unlisted). g. Self-clone test.butterbase clone <app_id> /tmp/clone-test-<ts>into a scratch directory — this also exercises the cloner-siderepo pullthatbutterbase cloneruns internally. The wrapped skill walks the README from a cold cloner's perspective and reports any gap. Loop back to (a) if gaps exist. -
Write artifact.
docs/butterbase/06-template.md:--- published_at: <ISO> app_id: <id> visibility: public listed: <true|false> snapshot_id: <id> selfclone_test: <pass | gaps fixed in round N> --- # Template publication - Visibility: public (<listed | unlisted>) - Latest snapshot: <id> - README covers: env vars, OAuth, agent re-import, MCP servers, seed data, first-run smoke - Self-clone test directory: /tmp/clone-test-<ts> - Gallery URL: https://butterbase.ai/templates/<app_id> (or wherever discovery lives) -
Update state. Tick
- [x] templatesin00-state.md. -
Return to orchestrator (or end the journey, since this is the last optional stage).
Anti-patterns
- ❌ Pushing the repo after flipping visibility. Order matters: snapshot first, public second. Otherwise the gallery briefly advertises an empty template.
- ❌ Skipping the README. The clone preflight tells the cloner which env vars exist but not what they're for or what manual setup remains. A bare-bones README publishes a broken-on-clone experience.
- ❌ Skipping the self-clone test. The author always knows too much; only a cold walk-through catches missing instructions.
- ❌ Forgetting agent specs. The
agentsDB table doesn't replay. Withoutagents/*.jsonin the repo, cloners can see your agent code paths but cannot recreate the agents themselves. - ❌ Publishing in hackathon mode by default. Hackathon submissions are usually private; only publish if the user explicitly asks.
- ❌ Pushing files containing secrets. Always dry-run first and scan the file list.
Signals
- GitHub stars
- 533
- Forks
- 41
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
journey-templates- Source
- github.com/butterbase-ai/butterbase-skills