3 skills todayprovision-app · add-a-feature · frontend-design
24 actionsone per capability, assumed
4 readsresources · events · logs · app-events
Skill actions
What a Builder says, the skill action it becomes, and the exact ./forge call the skill makes — the mapping is the skill. Three skills exist today; the rest are planned increments.
| the Builder says… | skill action | the exact CLI call | capability |
|---|---|---|---|
| Create a new forge app called hello. | forge → initialize-app | ./forge init app --name hello | POST /capabilities/initialize-app · control |
| Add a Postgres database to hello. | forge → provision-environment | ./forge provision --app hello --with-postgres | POST /capabilities/provision-environment · control |
| Install hello's dependencies. | forge → install-dependencies | ./forge install --app hello | POST /capabilities/install-dependencies · control |
| Run hello. | forge → run-dev-server | ./forge dev --app hello [--stop | --status] | POST /capabilities/run-dev-server · control |
| Build hello. | forge → build | ./forge build --app hello | POST /capabilities/build · control |
| Run hello's tests. | forge → test | ./forge test --app hello | POST /capabilities/test · control |
| Lint hello. | forge → lint | ./forge lint --app hello | POST /capabilities/lint · control |
| Is hello healthy? What jobs does it have? | forge → inspect | ./forge inspect health --app hello | POST /capabilities/inspect · both |
| Check that hello.example.com is serving correctly. | forge → verifyplanned | ./forge verify --app hello --host hello.example.com | POST /capabilities/verify · both |
| Why did that build fail? | forge → explain-failure | ./forge explain --resource res_01J… | POST /capabilities/explain-failure · control |
| Plan a projects page for hello. | forge → generate-feature-plan | ./forge plan --app hello --goal "a projects page" | POST /capabilities/generate-feature-plan · control |
| Store hello's SMTP URL as a secret. | forge → set-secretplanned | ./forge secrets set --app hello --name SMTP_URL --from-env SMTP_URL | POST /capabilities/set-secret · both |
| Remove hello's SMTP secret. | forge → unset-secretplanned | ./forge secrets unset --app hello --name SMTP_URL | POST /capabilities/unset-secret · both |
| Schedule a nightly digest job for hello that POSTs to /api/cron/nightly-digest every 24h. | forge → schedule-jobplanned | ./forge schedule --app hello --name nightly-digest --target /api/cron/nightly-digest --every 24h | POST /capabilities/schedule-job · both |
| Deploy hello. | forge → deployplanned | ./forge deploy --app hello | POST /capabilities/deploy · control |
| Get hello ready for production at hello.example.com. | forge → productionizeplanned | ./forge productionize --app hello --host hello.example.com | POST /capabilities/productionize · control |
| Release hello to production. | forge → releaseplanned | ./forge release --app hello | POST /capabilities/release · control |
| (your app calls this at runtime) | forge → agent-runplanned | (HTTP only — not a skill action) | POST /capabilities/agent-run · data |
| Send the verification email to this user. | forge → send-emailplanned | ./forge email send --app hello --to … --template verify-email | POST /capabilities/send-email · data |
| (your app calls this through POST /connect/:provider/send) | forge → send-messageplanned | (HTTP only — not a skill action) | POST /capabilities/send-message · data |
| Send hello's traces and metrics to my collector. | forge → setup-observabilityplanned | (HTTP only — not a skill action) | POST /capabilities/setup-observability · both |
| Set up dashboards and alerts for hello. | forge → provision-monitoringplanned | ./forge provision-monitoring --dir monitoring --public-host grafana.example.com | POST /capabilities/provision-monitoring · control |
| Run the core eval suite against hello's MCP server. | forge → evalplanned | ./forge eval suites/core.json --app hello --mcp-url https://hello.example.com/mcp | POST /capabilities/eval · control |
| Did the last release actually reach production? | forge → delivery-checkplanned | (HTTP only — not a skill action) | POST /capabilities/delivery-check · control |
Reads the skill uses to answer questions
| the Builder asks… | read | route |
|---|---|---|
| “What did you make?” “What is running?” | forge → resources | GET /resources?app_id&type&owner |
| “What happened?” “Why did that fail?” | forge → events · forge → logs | GET /events · GET /logs/:resourceId |
| “What happened to this user?” | forge → app-events | GET /app-events?owner&subject&type |
| “Is it healthy?” | forge → inspect health | POST /capabilities/inspect {type:'health'} |
The three that exist
provision-app drives init → provision → install → build → test → lint and diagnoses with explain. add-a-feature runs spec → design → implement → validate → verify. frontend-design keeps the UI from reading as a template.
The rule
A skill never assumes a global install and never runs docker, npm or node itself: it runs the ./forge that ships in the starter, branches on the JSON status, and never reads app source to check state.