Prompt Studio turns a small, private local profile into a complete prompt that you can paste into ChatGPT, Claude, Gemini, a local model, or another scheduled workflow. The generated prompt includes repository locations, source intent, current Zaati OS contracts, safe presentation blocks, privacy boundaries, validation, retries, and atomic publication.
It does not connect to an LLM or store credentials.
npm run prompt:create- Choose one or more registered sources.
- Describe the information each source should contain, the approved tools it may use, and useful block types.
- Copy
.zaati/generated-prompts/<task>.scheduled-task.mdinto your LLM and approve the connections it requests.
The profile and prompts are ignored by Git. Their directory uses mode 0700 and each file uses mode 0600. They may still reveal repository names and workflow intent, so treat them as private configuration.
Start with the synthetic example:
cp config/prompt-profile.example.json .zaati/market-pulse.json
npm run prompt:create -- --config .zaati/market-pulse.jsonUse separate repositories by default:
code_repositoryis the public Zaati OS fork that defines schemas, prompts, and renderers.data_repositoryis the private repository that receives real snapshots.
The CLI rejects a shared code and data repository unless allow_same_repository is explicitly enabled. A public fork should never receive private snapshots.
schemas/prompt-profile.schema.json is the executable contract. Each source needs:
- a registered
domain:sourceID - decision-oriented
requirements - the exact approved
toolsavailable to the scheduled LLM - one or more
preferred_blocksfrom the audited UI contract
The preferred block list is a safe menu, not a forced layout. The LLM should choose a line chart only for an ordered trend, a table for exact repeated fields, a calendar for timed events, and no visualization when plain text is clearer.
Add several source objects to the same profile. The generated prompt requires one complete snapshot-bundle result, validates all nested snapshots, retries the whole candidate at most three times, and publishes all dated files in one commit or pull request. It never publishes a valid subset from a failed run.
Direct sources should appear before aggregate sources. Registered aggregate dependencies still apply.
The interactive wizard intentionally accepts only registered sources. For a new source, add a registration object to a config profile. Prompt Studio then creates:
<task>.source-setup.md, a one-time coding prompt that opens a public, generic pull request with synthetic fixtures and tests<task>.scheduled-task.md, a recurring data-only prompt that refuses to run until the registration is merged
Keep these authorities separate. A scheduled task must never change application code, configuration, prompts, schemas, documentation, dependencies, or CI.
npm run prompt:create -- \
--config .zaati/my-task.json \
--output-dir .zaati/generated-prompts \
--forceUse --stdout only when you deliberately want the generated scheduled prompt in terminal output. By default, Prompt Studio prints paths rather than prompt contents to reduce accidental disclosure in logs.
- Confirm the code URL points to the intended Zaati OS fork.
- Confirm the data URL points to a private repository.
- Give the LLM only the source and GitHub permissions it needs.
- Review provider retention and training settings.
- Keep Cloudflare Access in front of the deployed dashboard.
- Run once with synthetic or low-sensitivity data before enabling the schedule.