ContributeMIT licensed

Build the business,
skip the plumbing

Every template starts from one starter with sign-in, user consent and integrations already wired. Build a business on it, then publish it for anyone to fork.

01Start

Auth comes done

npm create forkable@latest copies the starter, installs it and runs the demo. Here is what is already handled before you write a line.

Sign in with One

The authorize and callback routes, PKCE, state and the code exchange.

src/connect.ts

Each user's own grant

Every call runs on the signed-in user's Connect grant. No shared admin key.

runAction

The consent ask

Each action, its access level and the line your user reads before they agree.

connect.manifest.json

A demo with no keys

Runs on the Acme Inc sample with no account and exits 0.

npm start

Grant enforcement

A call outside the user's grant is refused with a 403 before the provider sees it.

403

Notes for your agent

AGENTS.md, build skills, a runtime agent to copy and a go-to-market kit.

AGENTS.md

Try it now

No account and no keys. It installs and runs the demo on the Acme Inc sample.

npm create forkable@latest my-business -- \
--for "dental clinics" --in "Madrid"

Go live with real sign-in

Make one Connect app in the One dashboard (Developers, Connect, New app). Set its values in your environment, then run npm run dev. Never commit them.

environment
ONE_CLIENT_ID
ONE_CLIENT_SECRET
ONE_CONNECT_KEY
ONE_REDIRECT_URI
02Your agent

Give your agent every integration

Install the One CLI globally, or add One's MCP server if you'd rather not install anything. Either one connects your coding agent to One's knowledge base of thousands of integrations, so it writes each one correctly the first time.

Install it once, globally. one init signs you in and installs the One skill into Claude Code, Claude Desktop and Codex, or Cursor, Windsurf, Kiro and others if you pick them. Works with any agent that can run a shell.

terminal
npm install -g @withone/cli
one init
# then tell your agent:
# Please run "one onboard"

Only want docs and code, never a live call? Turn on Knowledge only mode on the sign-in screen.

How your agent adds a tool

The starter's add-integration skill, which your agent follows on its own.

  1. 1
    one actions find <platform> "<intent>"

    Finds the exact action, with its docs.

  2. 2
    one actions load <actionId>

    Reads any part of the docs it still needs.

  3. 3
    connect.manifest.json

    Adds the action with the narrowest access and a reason your user reads.

  4. 4
    oneConnect.runAction(...)

    Calls it on the user's grant. Never a hand-built request.

03Publish

Send it as a template

Templates ship in create-forkable, so anyone can fork yours by name. A maintainer reviews each pull request against the same checklist.

1

Fork the repo

withoneai/forkable on GitHub, on a new branch.

2

Add your template

Copy it into create-forkable/templates/<id>. The id is what people type.

3

Fork it once

Run the CLI from your clone and check the copy works on its own.

4

Open a pull request

The PR template has the checklist. Add who it is for, its tools and a screenshot.

The checklist

forkable check will run this for you. Until it ships, run it by hand.

  • npm start runs the demo with no .env and exits 0
  • npm run typecheck passes
  • The manifest matches every runAction call, each with access and a reason
  • Access is the narrowest that does the job
  • No secrets, keys or .env anywhere, git history included
  • Sample data is Acme Inc only
  • AGENTS.md, agents/, gtm/positioning.md and forkable.json describe this business
  • MIT, with a LICENSE file

Check the fork from your clone

cd /tmp
node ~/forkable/create-forkable/bin/create-forkable.mjs \
try-it --template <id>

Not sure yet?

Open a Template idea issue first. Say what it does, who it is for and what it never does.

04More

Other ways to help