Skip to content

Latest commit

 

History

History
79 lines (51 loc) · 3.76 KB

File metadata and controls

79 lines (51 loc) · 3.76 KB

Prompt Studio

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.

Three steps

npm run prompt:create
  1. Choose one or more registered sources.
  2. Describe the information each source should contain, the approved tools it may use, and useful block types.
  3. Copy .zaati/generated-prompts/<task>.scheduled-task.md into 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.

Generate from a reusable profile

Start with the synthetic example:

cp config/prompt-profile.example.json .zaati/market-pulse.json
npm run prompt:create -- --config .zaati/market-pulse.json

Use separate repositories by default:

  • code_repository is the public Zaati OS fork that defines schemas, prompts, and renderers.
  • data_repository is 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.

Profile contract

schemas/prompt-profile.schema.json is the executable contract. Each source needs:

  • a registered domain:source ID
  • decision-oriented requirements
  • the exact approved tools available to the scheduled LLM
  • one or more preferred_blocks from 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.

One task, many snapshots

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.

Adding a source that does not exist

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.

Automation

npm run prompt:create -- \
  --config .zaati/my-task.json \
  --output-dir .zaati/generated-prompts \
  --force

Use --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.

Before pasting

  • 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.