Docs
Resource

Resource

Author resources (workflows, apps, and skills) locally and run them in the cloud. Scaffold files to disk, edit them, then validate, wire credentials, and publish.

A resource is something the agent builds for you and saves: a workflow (code or agent logic that runs in the cloud on a schedule, a webhook, or a poll trigger), an app (an interactive React mini-app with server-side handlers), or a skill (a SKILL.md instruction bundle agents load as context). geni resource lets your AI agent build one on your machine using your own editor, while the cloud handles validation, configuration, publishing, and runs.

The shared lifecycle lives here; type-specific tools split off:

  • geni resource — the shared lifecycle for any resource: create, pull, validate, wire config, publish.
  • geni workflow — workflow-only tools: test executions, triggers, switching type.
  • geni app — app-only tools: the build, running and inspecting handlers, browser errors.

The files live on your disk. The cloud is the brains: validation, the TypeScript and spec checks, the build, and every execution happen server-side. The CLI ships your files up and brings the results back.

The build loop

# 1. Scaffold a resource + its files into the current directory.
geni resource create --type code --name "Daily Digest"

# 2. Edit the files with your normal tools.
#    (Don't compile locally — @general-input/core only resolves server-side.)

# 3. Validate against the spec, credential wiring, and TypeScript. No publish.
geni resource validate

# 4. Wire credentials, consts, and schedules.
geni resource config set --cred slack=cred_01HX

# 5. Promote your files to the live version.
geni resource publish --summary "Posts a daily digest to Slack"

# 6. Verify it.
geni workflow test --payload '{}'          # workflows
geni app run-handler listCustomers         # apps

Load the matching authoring skill first (geni skills load <code-workflow|agent-workflow|app|skill-authoring>) — its references/ hold the type contract and a complete worked example — then iterate from step 2 until it does what you want.

Local files are the draft

validate checks your local files without persisting. publish promotes them to the live version. A test or handler run uses the published version, so publish before you test.

The directory marker

create and pull drop a .geni-resource.json marker in the directory. Every other command resolves the resource id from that marker, so you can run them by id (geni resource validate wf_123) or just from inside the directory (geni resource validate).

Four types

  • Code workflows — deterministic, fixed steps, API chaining. A single main.ts runs once per trigger.
  • Agent workflows — LLM-driven, variable-length tasks (research, drafting, triage). An instructions.md SOP plus reusable scripts.
  • App resources — an interactive React mini-app with server-side handlers (dashboards, internal tools).
  • Skills — a SKILL.md instruction bundle agents load as context. Not executed, so it skips the config step and publishes without a --summary.

Lifecycle commands

CommandWhat it does
createCreate a resource and scaffold its files.
listList the workflows you can access.
getShow one resource's detail.
pullDownload a resource's live files to disk.
validateValidate local files without publishing.
configRead and wire credentials, consts, schedules.
publishValidate and promote local files to live.

Type-specific tools live under geni workflow and geni app. Each type's contract and worked example ship in its authoring skill.

On this page