name: alfred-paperclip-bootstrap description: Turn an attached org-design document (a company brief, an "AI staff" plan, a founder's "here's who I want on the team" note) into a real Paperclip company with its agents and a principal login. Use when Sir attaches such a document and says "set this up in Paperclip", "build this company", "spin up these agents", or "bootstrap a Paperclip org from this". Confirm-first: derive the structure, show it, and create NOTHING until Sir says yes. version: "1.0" metadata: openclaw: emoji: "๐ข"
Alfred โ Paperclip company bootstrap
When Sir hands you a document describing a company and the staff he wants โ a founder's brief, an org chart, an "AI team" plan โ this skill turns that prose into a live Paperclip company: the company itself, one Paperclip agent per role (all running on Hermes locally), and a verified principal login Sir can use.
This is a confirm-first flow. You read the document, derive a structured org spec, show Sir the spec, and stop. You create nothing in Paperclip until he explicitly approves. A company plus its agents is real, billable, named infrastructure โ never conjure it from an unconfirmed reading of a document.
Gather
Read the attached document in full. It's the source of truth for the org. Pull from it:
- The company: a name and a one- or two-sentence description (its goal / mandate). If the doc names the company, use that name verbatim; if it only describes the venture, propose a clean name and flag it as your suggestion.
- The principal: the human who owns this company โ Sir, unless the
document clearly names someone else. You need an
emailand anamefor the login. If the doc doesn't give an email, ask Sir for the one he wants to log in with rather than guessing. - The agents: every role the document asks for. For each, derive a
name, arole(a short lowercase token โceo,engineer,marketing,ops, โฆ), a humantitle, and a one-linecapabilitiessummary of what that agent is responsible for. By convention the first agent is the CEO (role: "ceo") โ if the document describes a leader, map them to it; if it doesn't, propose a CEO agent so the company has a head.
Assemble the C3 org spec. Shape it exactly like this โ this is the structure the rest of the flow consumes:
{ "company": { "name": "Acme Robotics", "description": "Builds warehouse pick-and-place arms." }, "principal": { "email": "sir@example.com", "name": "Sir" }, "agents": [ { "name": "Ada", "role": "ceo", "title": "Chief Executive", "capabilities": "Sets direction, approves budgets, fields the board." }, { "name": "Bee", "role": "engineer", "title": "Lead Engineer", "capabilities": "Owns the firmware and control stack." }, { "name": "Cleo", "role": "marketing", "title": "Head of Marketing", "capabilities": "Owns positioning, launches, and demand gen." } ] }Every agent is created
hermes_localโ they run on this Hermes instance, not as external HTTP adapters. You don't set the adapter; the ctrl-api admin route forces it. Don't surface adapter choice to Sir.
Reason / decide
Confirm before you touch anything. After you've derived the spec, present it to Sir in plain language and STOP. Make NO tool calls yet โ not even a read. Show him:
- the company name + description,
- the principal email the login will be tied to,
- the full agent roster (name โ title โ role โ what they do), CEO first.
Then ask, explicitly: "Shall I create this in Paperclip?"
Wait for an explicit yes. "Looks right", "go ahead", "yes, build it" โ a clear approval. Anything ambiguous is not a yes; ask again. A document attachment alone is not consent to create.
On "no" or edits, revise the spec and re-present it. Sir might rename the company, drop an agent, add a "finance" role, or change the principal email. Roll the changes in, show the updated spec, and ask again. Create nothing until an approved spec is on the table. Loop here as many times as it takes.
Idempotency is handled for you. The admin routes are idempotent by name โ re-running an approved bootstrap won't duplicate the company, the agents, or the user. If a create returns "already exists", that's fine; carry on.
Don't put secrets in the spec or in chat. The principal's generated password comes back from the register step โ relay it to Sir once, over the channel he's on, and don't echo it into any vault record or comment.
Deliver
Only after Sir's explicit yes, run the creation sequence in this order. Each tool name below is exact โ call them as named:
Create the company.
paperclip_create_company({ name, description })โ fromcompany. Keep the returnedcompanyId; every later call needs it.Create each agent, in roster order (CEO first). For each entry in
agents:paperclip_create_agent({ companyId, name, role, title, capabilities }). All land ashermes_local(forced server-side). Collect the returnedagentIdfor each.Register the principal login.
paperclip_register_user({ email, name })โ fromprincipal. Omitpasswordto have a strong one generated and returned. The identity comes back verified (tenants have no mailer). Keep the returnedloginUrland the one-timepassword.Read back to confirm.
paperclip_list_agents({ companyId })and check the roster you intended is actually present. (Optionallypaperclip_list_companies({})to confirm the company.)Report to Sir. One clean summary:
- the company (name + id),
- the agents that now exist (name โ title โ role), from the read-back,
- the login: the
loginUrl, the principal email, and the generated password (once, plainly, with a "change it after first sign-in" nudge).
Don't narrate each call as you go โ do the sequence, then report the result in one message.
Worked example
Sir attaches acme-plan.md ("I want to stand up Acme Robotics โ a small AI
staff: a CEO, a lead engineer, and a head of marketing. Log me in as
sir@example.com.") and says "set this up in Paperclip."
โ You read the doc and derive the spec (the JSON above). You don't call any tool yet. You reply:
"Here's what I'd create in Paperclip: Company โ Acme Robotics: builds warehouse pick-and-place arms. Login โ sir@example.com. Agents โ Ada (Chief Executive, ceo), Bee (Lead Engineer, engineer), Cleo (Head of Marketing, marketing). Shall I create this in Paperclip?"
Sir: "Yes โ but call the company Acme Pick and add an ops agent, Dot."
โ You revise: company Acme Pick, add { name: "Dot", role: "ops", title: "Operations", capabilities: "Keeps the floor running." }, re-present the
updated spec, and ask again. Sir: "Perfect, go."
โ Now you run the sequence: paperclip_create_company โ four
paperclip_create_agent calls (Ada, Bee, Cleo, Dot, CEO first) โ
paperclip_register_user โ paperclip_list_agents. Then:
"Done. Acme Pick is live (4 agents: Ada โ Chief Executive, Bee โ Lead Engineer, Cleo โ Head of Marketing, Dot โ Operations). Log in at
https://paperclip.<DOMAIN>as sir@example.com โ temporary password<generated>; change it on first sign-in."
If Sir had said "no, not yet" at the first prompt, you'd have created nothing and simply waited.