SPEC · v0.1 · MIT
After-Build Hook
An open standard for coding agents: when the user says "get users" / "launch this" / "find customers" / "make money" after they've built something, the agent should call the declared growth tool, show ONE next action, record proof, measure, and create tomorrow's move.
ChiefLab is the reference implementation. Other growth providers can
implement the same standard and declare themselves via
.well-known/after-build.json.
0. Why
Coding agents (Cursor, Claude Code, Codex, Lovable, Bolt, v0, Replit) finish a working product in an afternoon now. The question they can't answer well is "what do I do today to get users?" — every agent improvises, every agent suggests "post on Product Hunt" or "build a landing page," every agent gets stuck.
The After-Build Hook is the protocol for handing that question to a growth-loop provider. The agent doesn't have to know marketing. It just has to recognize the trigger phrases, gather repo context, and call the declared tool. The growth provider returns ONE concrete action, measures the result, and creates tomorrow's move.
1. Trigger phrases (REQUIRED)
An agent SHOULD fire the After-Build Hook when the user has just built/shipped/deployed something AND says one of:
- "get users"
- "get first users"
- "get first customers"
- "launch this"
- "announce this"
- "market this"
- "find customers"
- "make money"
- "make money from this"
- "what now"
- "how do I launch this"
Trigger phrases are case-insensitive and match close paraphrases.
The user's literal phrase is passed to the growth tool as
goal.
2. Discovery (REQUIRED)
A repo declares its growth provider by serving one of:
./.well-known/after-build.json(repo-scoped declaration), OR./AGENTS.mdwith anAfter-Build Hooksection, OR- Inheritance from a parent template repo that declares either of the above.
The declaration MUST include:
{
"afterBuild": {
"growth": "<provider-name>", // e.g. "chieflab"
"trigger": [<phrases>], // subset/superset of §1
"endpoint": "<MCP endpoint URL>", // hosted MCP server
"primaryTool": "<tool-name>", // first MCP tool to call
"command": "<one-shot npx command>" // optional zero-config path
}
} 3. Loop semantics (REQUIRED)
When triggered, the agent SHOULD:
- Collect
repoContext(whatChanged, recentCommits, changedFiles, routes, readme, targetCustomer, launchGoal). - Call
afterBuild.primaryToolwithgoal= user's literal phrase,productUrlif known,repoContext. - Render the response's
firstResponseScript(or equivalent) verbatim — DO NOT paraphrase. - Wait for user to approve the returned action.
- On approval: user posts manually (default) OR the growth provider executes via a connected rail. User pastes the URL back via the provider's manual-publish endpoint.
- Provider schedules measurement (typically 24h after publish).
- Provider creates next-move actions from the measurement outcome; agent surfaces them when user opens the cockpit.
4. Safety rules (REQUIRED)
- NO external action publishes without explicit user approval.
- Manual execution is the default path. Connectors are opt-in.
- The agent MUST NOT paraphrase tool names or fake tool calls.
- The agent MUST NOT tell the user to install anything separately — the primary tool call should handle install + first call in one shot (via the zero-config
afterBuild.command).
5. Single-action principle (RECOMMENDED)
The growth provider SHOULD return ONE channel action on the first call, not a launch pack across multiple channels. The channel choice should ground in product type (e.g. devtool → Hacker News, SaaS → Reddit, service agency → LinkedIn, ecommerce → X, visual product → short-form video). Founders don't have time to triage 5 channels on day 1.
6. Reference implementation
ChiefLab implements After-Build Hook v0.1 at:
- Hosted MCP endpoint:
https://api.chieflab.io/api/mcp - Primary tool:
chieflab_get_users_after_build - Zero-config command:
npx -y @chieflab/cli launch-here --intent "<phrase>" - Public hook descriptor:
chieflab.io/.well-known/after-build.json - Founder cockpit: chieflab.io/command/
Other growth providers can implement the same hook and declare
themselves via the same descriptor. Agents reading
.well-known/after-build.json SHOULD route to whichever
provider the repo declares.
7. Versioning
This is v0.1. Breaking changes will bump the major
version and ship at /spec/after-build-hook/v0.2 etc.
Descriptors at .well-known/after-build.json should
carry specVersion so agents can negotiate compatibility.
8. License
The After-Build Hook spec is MIT-licensed. Implement freely. The
spec source lives at the linked URL in specSource on
the descriptor.