AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Journey Functions

skill-butterbase-ai-butterbase-skills-journey-functions · by butterbase-ai

Use as the functions build stage of the Butterbase journey. Implements the Functions section of 02-plan.md by delegating to function-dev for each function. Calls deploy_function per function; smokes each with invoke_function. Skipped if the plan has no functions.

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-butterbase-ai-butterbase-skills-journey-functions

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-butterbase-ai-butterbase-skills-journey-functions)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Journey Functions? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Journey: Functions

Stage 3e of the guided journey. Implement and deploy each function in the plan.

When to use

  • Dispatched by journey when current_stage: functions.
  • Directly via /butterbase-skills:journey-functions.
  • Skipped (annotated (n/a)) if the plan lists no functions.

Preflight

If docs/butterbase/03-preflight.md is missing, older than 24 hours, or 00-state.md has app_id: null, invoke butterbase-skills:journey-preflight first. Wait for it to return successfully before proceeding.

Inputs

  • docs/butterbase/02-plan.md — the Functions section.
  • docs/butterbase/00-state.md — for app_id.

Procedure

  1. Refresh docs. Call butterbase_docs with topic: "functions". For trigger types and ctx shape, also WebFetch https://docs.butterbase.ai/functions. Skip if cache is fresh.

0.5. Check built-in integrations first. Before writing function code that calls an external SaaS for email / messaging / calendar / CRM / payments:

  • Email / Slack / etc. → invoke butterbase-skills:integrations. The function should call manage_integrations execute_action rather than installing a third-party SDK.
  • Payments → invoke butterbase-skills:payments. The function should use Stripe Connect via manage_billing unless the plan has explicitly chosen a regional gateway.

@butterbase/sdk works server-side too

Inside a function, prefer ctx.db / ctx.storage / ctx.user for the common cases — those are pre-wired and authenticated against the calling user. But for cross-app calls, scripts, or scheduled jobs that operate on multiple apps, instantiate @butterbase/sdk with a service key (bb_sk_) and use the same client surface as the frontend.

Example for a cron function that aggregates from another app:

import { createClient } from '@butterbase/sdk';

export async function handler(_request: Request, ctx: { env: Record }) {
  const other = createClient({
    apiUrl: ctx.env.OTHER_APP_API_URL,
    apiKey: ctx.env.OTHER_APP_SERVICE_KEY,
  });
  const { data } = await other.db.from('events').select('*').gte('created_at', ...);
  // ...
  return new Response('ok');
}

For server-side patterns, butterbase_docs topic: "sdk".

Build each function

For each function in the plan, in order:

  1. Print: "About to build function: (trigger=). Proceed?". Wait for yes.
  2. Invoke butterbase-skills:function-dev via the Skill tool with the function spec (name, trigger, behaviour, dependencies) and app_id. The wrapped skill scaffolds the handler, writes tests where appropriate, and calls deploy_function. Reminder it must enforce: handler signature (request, { db, env, user }) and must return new Response(...).
  3. Smoke: call invoke_function for HTTP/cron functions and confirm a 2xx + expected body. For WebSocket, defer the smoke to frontend integration.
  4. Append one line per function to docs/butterbase/04-build-log.md:

functions deploy_function ok

  1. After all functions are done, tick - [x] functions in 00-state.md, set current_stage: to the next unchecked stage.
  2. Return to journey orchestrator (or ask "Continue to the next stage? (yes/no)").

Outputs

  • Deployed functions in the Butterbase app.
  • One line per function in 04-build-log.md.

Anti-patterns

  • ❌ Letting a handler return a plain object — must be new Response(...).
  • ❌ Skipping the smoke invocation. Cron functions in particular are easy to deploy and forget.
  • ❌ Forgetting per-function env vars — use manage_function action: update_env.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.