Built at GrowthX — Project Submission
Submit a project to Built at GrowthX, the community builder showcase for GrowthX members.
When to Use
Activate this skill when the user wants to:
- Push, submit, or share a project to Built at GrowthX
- Post a project to the GrowthX builder showcase
- Publish their build on GrowthX
Getting an API Key
If the user hasn't configured their API key yet, direct them to:
- Go to Built at GrowthX on the GrowthX platform
- Navigate to their profile / API key settings
- Click Generate API Key — the raw key is shown once, copy it immediately
- Set the key in OpenClaw config: add it under
skills.entries.growthx-bx-submit.apiKeyin~/.openclaw/openclaw.json, or set theGROWTHX_API_KEYenvironment variable
The key is tied to the user's GrowthX membership. If their membership lapses, the key stops working.
API Endpoint
POST https://backend.growthx.club/api/v1/bx/projects/agent
Authentication
Send the API key in the x-api-key header:
x-api-key: <GROWTHX_API_KEY>
Request Body (JSON)
Required fields:
| Field | Type | Constraints |
|---|---|---|
name | string | Max 100 characters. The project name. |
tagline | string | Max 200 characters. A short one-liner about the project. |
Optional fields:
| Field | Type | Default | Constraints |
|---|---|---|---|
description | string | "" | Max 2000 characters. Longer project description. |
category | string | "SaaS" | e.g. SaaS, Fintech, Marketplace, EdTech, HealthTech, AI/ML, Developer Tools, E-commerce |
stack | string[] | [] | Tech stack tags, e.g. ["React", "Node.js", "MongoDB"] |
url | string | null | Project URL (must be a valid URI) |
status | string | "shipped" | One of: shipped, idea, prototyping, beta |
buildathon | string | null | Name of a buildathon if this project was built during one |
Example Request
curl -X POST "https://backend.growthx.club/api/v1/bx/projects/agent" \
-H "Content-Type: application/json" \
-H "x-api-key: $GROWTHX_API_KEY" \
-d '{
"name": "TaskFlow",
"tagline": "AI-powered task management for remote teams",
"description": "TaskFlow uses AI to automatically prioritize and assign tasks based on team capacity and deadlines.",
"category": "SaaS",
"stack": ["React", "Node.js", "OpenAI", "PostgreSQL"],
"url": "https://taskflow.app",
"status": "shipped"
}' | jq .
Success Response (201)
{
"project": {
"_id": "...",
"name": "TaskFlow",
"tagline": "AI-powered task management for remote teams",
"status": "shipped",
"creator": { "name": "...", "avatar_url": "..." },
"weighted_votes": 0,
"raw_votes": 0
}
}
Agent Behavior
When the user asks to submit a project, follow these steps in order:
Step 1 — Detect Projects in the Workspace
Scan standard project files in the current workspace to discover what the user has built. Only read these files:
Project manifest files:
package.json—name,description,keywords,homepage,repositorypyproject.toml/setup.py/setup.cfg—name,description,urlsCargo.toml—name,description,repository,keywordsgo.mod— module namepubspec.yaml—name,description,homepage
Documentation:
README.md— project title (first#heading) and opening paragraphgit remote -v— repository URL
Monorepo detection:
For monorepos, check for workspace configs (workspaces in root package.json, pnpm-workspace.yaml, turbo.json, nx.json) or subdirectories with their own manifest files. Each workspace package with its own name/description is a candidate project.
How to infer fields:
| Field | How to Infer |
|---|---|
name | name field from manifest file, or first heading in README |
tagline | description field from manifest, or first sentence of README |
description | Summarize from README content and manifest description (1-3 sentences) |
stack | Dependencies and devDependencies from manifest (e.g. react → "React", express → "Express", django → "Django") |
url | homepage field from manifest, or repository URL from git remote |
category | Infer from dependencies and README (e.g. stripe → "Fintech", next → "SaaS", ML libraries → "AI/ML") |
status | Default to "shipped". If README explicitly says WIP/prototype/beta, use that instead. |
Step 2 — Present Discovered Projects
Show the user what you found. If multiple projects were detected (e.g. monorepo packages), list them and ask which one to submit:
I found these projects in your workspace:
- project-name — short description
- other-project — short description
Which one would you like to submit to Built at GrowthX?
If only one project is detected, present its details directly and ask to confirm.
Step 3 — Fill in Missing Details
For the selected project, show what was auto-detected and ask the user to fill in or correct anything:
nameandtaglineare required — if the tagline can't be inferred, ask for it- Show the auto-detected
stack,category,url,description, andstatusand let the user adjust - Default
statusto"shipped"unless README or context suggests it's still in progress
Step 4 — Confirm and Submit
Show a final summary of all fields that will be sent:
Submitting to Built at GrowthX:
- Name: TaskFlow
- Tagline: AI-powered task management for remote teams
- Category: SaaS
- Stack: React, Node.js, OpenAI, PostgreSQL
- URL: https://taskflow.app
- Status: shipped
Submit this?
Only after the user confirms, make the API call using curl with the x-api-key header.
Step 5 — Report Result
On success, tell the user their project was submitted and share the project link if available. On failure, explain the error (see below).
Error Handling
| Status | Meaning | What to Tell the User |
|---|---|---|
401 | Invalid or revoked API key | "Your API key is invalid or has been revoked. Please generate a new one from the Built at GrowthX settings." |
403 | Membership not active | "Your GrowthX membership is not active. An active membership is required to submit projects." |
400 | Validation error (missing name/tagline, field too long, etc.) | Show the specific validation error from the response body. |