Skip to content

Document type: workflow across Blueprint, deploy, and platform skills - #14

Closed
ojusave wants to merge 3 commits into
render-oss:mainfrom
ojusave:blueprint-workflows-platform-skills
Closed

ojusave wants to merge 3 commits into
render-oss:mainfrom
ojusave:blueprint-workflows-platform-skills

Conversation

@ojusave

@ojusave ojusave commented Sep 18, 2026

Copy link
Copy Markdown

Render Workflows became a valid Blueprint service type on 2026-09-16 (changelog). The skills still described Blueprints as web/worker/cron/pserv/keyvalue/static only, so an agent asked to put a workflow in render.yaml had nothing to work from and would fall back to the Dashboard.

This PR updates the twelve skills that touch a surface where workflows behave differently. It does not touch render-workflows itself: that skill sits on top of #13, so its changes are in a separate stacked PR.

What changed

render-blueprints gains the workflow service type: a row in the service table, a validated example, a dedicated field-reference section, three entries in common mistakes, the preview-environment skip rule, and a wiring note.

render-deploy now routes apps with workflow tasks to the Blueprint path. MCP has create_web_service and create_static_site but no create_workflow, so the single-service shortcut cannot deploy them, even when the workflow is the only service.

Ten platform skills get the constraint that applies to each: cron-jobs and background-workers on composition (cron and workflow pair in one Blueprint, and a workflow is not a drop-in for a healthy queue worker), mcp on the missing tool, cli on render workflows init|dev|tasks, env-vars and networking on outbound-only behaviour and per-task-run env vars, scaling and disks and docker on the fields that do not apply, and debug on where task-run failures actually surface.

Two requirements the JSON schema does not express

Worth a close look, since they are the ones most likely to bite an agent.

The published schema's required array for workflowService is [type, name, runtime, region, startCommand]. Render's validator additionally rejects a workflow that omits either of these:

buildCommand is required for non-docker workflows
repo is required for git-based services

repo is the surprising one. It is required even when validating from inside the repository with an origin remote, which is not how web and other git-based types behave. A web service in the same directory validates without it. An agent that trusts the schema's required array alone will emit a Blueprint that fails on sync, so both are documented as required in practice.

Validation

Every type: workflow snippet in this PR was checked two ways: against https://render.com/schema/render.yaml.json, and through render blueprints validate (CLI v2.28.0), which returns a plan containing a workflows entry for each. All pass.

I also confirmed the guidance by deploying a workflow built from these docs to a live workspace. It built, registered its tasks, and a chained ctx.run task returned the expected result. The test workflow and its repository have been deleted.

The negative guidance is verified rather than assumed: plan, disk, and schedule on a workflow are each rejected by the validator, which is why those are called out as mistakes.

One caveat I could not close: POST /v1/blueprints returns 405, so Blueprint creation is not scriptable. The Blueprint path was verified through the server-side planner and by deploying the identical configuration as a live workflow service, not by clicking through a Dashboard sync.

Workflows became a valid Blueprint service type on 2026-09-16, but the skill
still described services as web/worker/cron/pserv/keyvalue/static only.

Adds the workflow row and a validated example, a dedicated field-reference
section, three common mistakes, the preview-environment skip rule, and the
envVars wiring note.

Two requirements are recorded that the published JSON schema does not express.
Its required array is [type, name, runtime, region, startCommand], but Render's
validator also rejects a workflow missing buildCommand or repo. An agent
trusting the schema alone emits an invalid Blueprint.
MCP exposes create_web_service and create_static_site, with no create_workflow,
so the single-service shortcut cannot deploy an app that defines workflow tasks.

Sends those apps down the Blueprint path even when the workflow is the only
service, adds workflow to the service-type list and comparison table, and
documents required fields plus the never-set-plan rule.
These skills each touch a surface that behaves differently for workflows, and
several implied constraints that no longer hold.

- cron-jobs, background-workers: cron and workflow compose in one Blueprint;
  workflows are not a replacement for a healthy queue worker
- mcp: no create_workflow tool exists
- cli: render workflows init/dev/tasks, and validate accepts type: workflow
- env-vars, networking: envVars apply to every task run; workflows are
  outbound-only and cannot be a fromService host target
- scaling, disks, docker: no plan/numInstances/scaling, no disks, and
  Blueprint runtimes are python and node only
- debug: task-run failures surface in run history, not health checks or PORT

@ojusave ojusave left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Flagging the three hunks most worth a careful read. Each encodes behaviour that contradicts either the published schema or how other service types work, so they are the ones I would most want a second opinion on.


**Required:** `type`, `name`, `runtime`, `region`, `startCommand`, and in practice `buildCommand` and `repo`.

The published schema's `required` array lists only the first five, but Render's validator also rejects a workflow missing `buildCommand` (`buildCommand is required for non-docker workflows`) or `repo` (`repo is required for git-based services`). Always emit both.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the hunk I would most like checked.

The schema's required array for workflowService is [type, name, runtime, region, startCommand], but the validator rejects a workflow missing buildCommand or repo:

buildCommand is required for non-docker workflows
repo is required for git-based services

repo is the genuinely surprising one. It is required even when validating from inside the repository with an origin remote, whereas a web service in the same directory validates fine without it.

If the intent is for the schema to be authoritative, this is arguably a schema bug rather than something to document. Happy to file it separately and soften the wording here if you would prefer that.


The published schema's `required` array lists only the first five, but Render's validator also rejects a workflow missing `buildCommand` (`buildCommand is required for non-docker workflows`) or `repo` (`repo is required for git-based services`). Always emit both.

**`runtime`:** `node` or `python` only. This is narrower than `render workflows create --runtime`, which also accepts `go`, `ruby`, and `elixir`. Workflows in those runtimes cannot be declared in a Blueprint.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blueprints accept python and node; render workflows create --runtime also accepts go, ruby, and elixir. Included because the failure is otherwise confusing: you can create a Go workflow with the CLI and then find no way to express it in render.yaml.

Related, and covered in #15: render blueprints validate returns valid: true for runtime: docker on a workflow even though the schema rejects it, so a passing validate is not proof a runtime is supported.

- Monorepo or multi-env setup that needs consistent configuration

If unsure, ask a quick clarifying question, but default to Blueprint for safety. For a single service, strongly prefer Direct Creation via MCP and guide MCP setup if needed.
MCP has `create_web_service` and `create_static_site`, not `create_workflow`. If the app has workflow tasks, use Blueprint even if the workflow is the only service. Detect workflows by Python `@app.task` from `render`, or TypeScript `task()` from `@renderinc/sdk/workflows`.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The behavioural change in this PR. Previously a single-service app went to MCP, but MCP has no create_workflow, so an app whose only service is a workflow had no working path.

The detection heuristic is deliberately narrow: Python @app.task imported from render, or TypeScript task() from @renderinc/sdk/workflows. Worth confirming those are the only entry points you want matched.

@ojusave

ojusave commented Sep 18, 2026

Copy link
Copy Markdown
Author

Closing: opened against the wrong repo. Internal development happens in renderinc/skills, which syncs to this one, so these have been reopened there as renderinc/skills#42 (Blueprint, deploy, and platform skills) and renderinc/skills#43 (render-workflows, stacked on the SDK 1.x PR).

Thanks @ttacon for the pointer. The internal versions also update evals.json, which does not exist in this repo: one assertion there required that the agent NOT suggest Blueprints for workflows, which would have failed a correct answer after this change.

@ojusave ojusave closed this Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant