fix(cli/init): rephrase agent prompt with ASD-STE100 - #236
Conversation
Agents need deterministic phrasing to behave predictably. This patch is a further round of hardening to ensure that agent instructions result in more deterministic output. I applied the concepts from ASD-STE100[1] to ensure that there is one instruction per sentence, active voice for every action, and that conditions prefix sentences. The goal is to make instructions unambiguous for AI agents. A less capable model reads these instructions the same way as a more capable model. [1]: https://www.asd-ste100.org/ Ref: #230 Signed-off-by: Xe Iaso <xe@tigrisdata.com>
Greptile SummaryThe PR rewrites the
Confidence Score: 4/5The organization-selection instruction should be fixed before merging because agents can execute it without a concrete organization and stop the setup flow. The rewritten condition governs only asking the user, while the required Files Needing Attention: packages/cli/src/lib/init/plan.ts Important Files Changed
Reviews (1): Last reviewed commit: "fix(cli/init): rephrase agent prompt wit..." | Re-trigger Greptile |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c2fe7c8. Configure here.
| 'Infer the project name from metadata (package.json, go.mod, pyproject.toml, ...). Check `tigris buckets list --format json` first; if the bucket is absent, `tigris buckets create <name> --format json`. Ask the user whenever anything is ambiguous.', | ||
| `Create the access key into a private temp file (overwrite, never append), then print only the ID: | ||
| 'Run `tigris whoami` to get the authentication state. If the user is not authenticated, run `tigris login oauth`.', | ||
| 'Run `tigris orgs list --format json`. If there is more than one org, ask the user which org to use. Then run `tigris orgs select <org>` to make that org active. The commands that come after target the active org.', |
There was a problem hiding this comment.
Org select lost its condition
Medium Severity
Splitting the org step into STE sentences left tigris orgs select without the multi-org condition that used to gate it. Agents can now treat select as always required even when <org> was never chosen, which is common for single-org users and undermines the deterministic phrasing this change aims for.
Reviewed by Cursor Bugbot for commit c2fe7c8. Configure here.
| 'Infer the project name from metadata (package.json, go.mod, pyproject.toml, ...). Check `tigris buckets list --format json` first; if the bucket is absent, `tigris buckets create <name> --format json`. Ask the user whenever anything is ambiguous.', | ||
| `Create the access key into a private temp file (overwrite, never append), then print only the ID: | ||
| 'Run `tigris whoami` to get the authentication state. If the user is not authenticated, run `tigris login oauth`.', | ||
| 'Run `tigris orgs list --format json`. If there is more than one org, ask the user which org to use. Then run `tigris orgs select <org>` to make that org active. The commands that come after target the active org.', |
There was a problem hiding this comment.
Organization selection loses its guard
When the account has zero or one organization, the condition only guards asking the user, while the separate Then run instruction still directs the agent to execute tigris orgs select <org>. Without a concrete organization, this required positional argument produces an organization-required or organization-not-found error and stops setup.
| 'Run `tigris orgs list --format json`. If there is more than one org, ask the user which org to use. Then run `tigris orgs select <org>` to make that org active. The commands that come after target the active org.', | |
| 'Run `tigris orgs list --format json`. If there is more than one org, ask the user which org to use. If there is more than one org, run `tigris orgs select <org>` to make that org active. The commands that come after target the active org.', |
Knowledge Base Used: Tigris CLI


Agents need deterministic phrasing to behave predictably. This patch is a further round of hardening to ensure that agent instructions result in more deterministic output.
I applied the concepts from ASD-STE1001 to ensure that there is one instruction per sentence, active voice for every action, and that conditions prefix sentences.
The goal is to make instructions unambiguous for AI agents. A less capable model reads these instructions the same way as a more capable model.
Ref: #230
Note
Low Risk
Copy-only changes to agent-facing prompt text and matching tests; no CLI execution or credential-handling logic is modified.
Overview
tigris init --agentnow prints a setup recipe whose wording follows ASD-STE100-style rules: imperative sentences, conditions before commands, and compound steps split so each sentence is one action.In
buildAgentSetup(plan.ts), every step string is rephrased without changing the underlying workflow—install/update lead-in, auth, org selection, bucket creation, access-key temp file handling,.envscripting, and closing links/agent-config snippet. The intro line becomes “Help the user configure Tigris for this project” instead of “set up their project with Tigris.” Secret-handling guidance is spelled out as explicit bullets (script reads credentials; agent must not load the secret into context).Tests in
plan.test.tsare updated to assert the new step-one and step-two phrasing. A changeset documents the patch-level CLI behavior change for consumers.Reviewed by Cursor Bugbot for commit c2fe7c8. Bugbot is set up for automated code reviews on this repo. Configure here.