Core workflow7 min readUpdated for Syntheo v0.4 Series

Tasks, prompts, and context

© 2026 Quadropic Pvt Ltd. Proprietary and confidential. Use restrictions.

Choose the action before writing the prompt#

The action is a runtime instruction, not just a label.

ActionUse it whenWhat the harness asks the agent to doAvoid it when
SubmitYou want an outcome completed end to endInspect, edit when needed, validate, and reportYou only want analysis
ArchitectYou need a reviewable implementation planInspect the code, write a durable plan, and avoid implementation editsThe task is already small and obvious
AskYou want an explanation, comparison, or orientationAnswer with repository context and avoid edits unless clearly requestedYou expect a broad implementation
DebugSymptoms exist but the cause is unclearReproduce or inspect first, then make a focused fixYou already know the exact mechanical edit

The secondary action button cycles through Architect, Ask, and Debug. Use Shift+Tab to cycle and ⌘⇧Enter / Ctrl+Shift+Enter to run the active secondary action. Plain Enter submits; Shift+Enter creates a new line.

Action routing and presets#

With Standard selected:

  • Ask routes to the fast Light assignment.
  • Architect and Debug route to Hunter.
  • Submit stays on Standard.

If you explicitly select Hunter, Design, Browser, or a custom preset, that selection is retained for the action. This lets you deliberately use a specialized model for an Ask or Debug request.

Write outcome-first prompts#

A useful task brief contains five things:

  1. Outcome — observable behavior, not “improve this.”
  2. Scope — relevant feature, directory, or files.
  3. Evidence — errors, screenshots, logs, reproduction, or a comparison.
  4. Constraints — compatibility, dependencies, APIs, files, or behaviors that must stay unchanged.
  5. Validation — a command, test, or manual scenario that proves completion.

Example:

text
Fix the duplicate notification shown after reconnect.

Reproduction:
1. Open the companion.
2. Disconnect Wi-Fi for 10 seconds.
3. Reconnect and complete a task.
4. Two completion notifications appear.

Scope: mobile notification sync and reconnect handling.
Constraints: preserve live-activity behavior and do not add a dependency.
Done when: one notification appears after normal completion and after reconnect,
and the relevant unit tests pass.

Say what autonomy you want#

Good phrases:

text
Handle this end to end and make reasonable implementation decisions.
text
Diagnose only. Give me the cause, evidence, and smallest safe fix; do not edit.
text
Implement the fix, but stop and ask before changing the persisted data format.
text
Use the narrowest relevant tests. Do not run the full suite unless the focused
checks expose a cross-cutting risk.

Avoid narrating every implementation step before inspection. “Use a new context provider, add three hooks, and rewrite the reducer” may force a worse design than the codebase suggests. Make architecture a constraint only when it truly is one.

Add focused context#

@ mentions#

Type @ in the composer to search:

  • workspace files;
  • directories;
  • installed skills;
  • installed MCP tools.

Use arrow keys to move, Enter or Tab to select, and Esc to close.

Mentions are best when:

  • a filename is ambiguous;
  • only one subsystem is in scope;
  • a specific Skill should govern the workflow;
  • you want a particular MCP tool available without asking the agent to discover it.

Mention the smallest useful boundary. @src/features/auth/session.ts is higher signal than mentioning the entire repository.

Images#

Use the image button, paste an image, or press ⌘⇧I / Ctrl+Shift+I.

Images are valuable for:

  • UI bugs and visual regressions;
  • target designs;
  • diagrams;
  • terminal errors that cannot be copied;
  • comparing “current” and “expected.”

Label multiple images in the prompt (“first image is current; second is expected”). A model assigned to the selected preset must support vision to use them reliably.

Logs and errors#

Paste the smallest complete failure:

  • include the first causal error, not hundreds of follow-on lines;
  • include the command that produced it;
  • preserve filenames, line numbers, status codes, and timestamps that matter;
  • redact secrets, tokens, personal data, and private URLs.

If the output is large, put it in a workspace file and mention the file.

Use the composer efficiently#

  • ⌘K / Ctrl+K: focus the composer.
  • Enter: Submit.
  • Shift+Enter: newline.
  • Shift+Tab: cycle Architect, Ask, and Debug.
  • ⌘⇧Enter / Ctrl+Shift+Enter: run the selected secondary action.
  • ⌘⇧M / Ctrl+Shift+M: open model preset selection.
  • ⌘⇧I / Ctrl+Shift+I: add an image.
  • ⌘⇧E / Ctrl+Shift+E: queue a Virtual Edit for the next new thread.
  • ⌘⌥C / Ctrl+Alt+C: compress the active thread context.
  • ⌘Esc / Ctrl+Esc: stop the active agent.

The context ring around the send button shows estimated usage of the current model’s context window. Hover it for token and source details.

Steer a running agent#

You can send another message while a run is active. Treat steering as a delta:

text
New evidence: the failure only occurs when featureFlagX is false.
Prioritize that branch; keep the public API unchanged.
text
Stop exploring the serializer. The failing response is already malformed before
serialization; inspect the request builder next.

Useful steering:

  • corrects a false assumption;
  • adds a reproduction detail;
  • changes a priority;
  • narrows or expands scope explicitly;
  • answers a question the agent could not resolve.

Counterproductive steering:

  • repeats the original prompt;
  • sends several speculative fixes;
  • changes the goal without saying the previous goal is superseded;
  • asks for status every few seconds.

If the course is fundamentally wrong, stop the run and start a fresh thread with a corrected brief. Use ⌘Esc / Ctrl+Esc so an ordinary Escape key cannot accidentally terminate work.

Handle approvals and questions#

An agent can pause for either a tool approval or a structured question.

Before approving a tool:

  1. Check the tool name.
  2. Read every argument, especially command, path, URL, and target.
  3. Confirm it belongs to the active workspace and task.
  4. Choose the narrowest duration.

Allow Once is appropriate for a one-off shell command or write. This Turn is useful when a trusted tool will repeat with similar safe arguments. A global Allow in Settings applies to later tasks too, so use it only for tools whose full scope you understand.

When the agent asks a question, answer the decision it needs and explain the governing constraint. “Option B because old clients must continue to deserialize this field” is much more useful than “B.”

Keep context healthy#

Long threads accumulate messages, tool results, and decisions. More context is not always better.

Start a new thread when:

  • the objective changes;
  • the old task is complete;
  • you are switching to an unrelated subsystem;
  • the agent is anchored on outdated assumptions;
  • you need a clean model or workspace boundary.

Compress the current context when:

  • the objective is unchanged;
  • earlier exploration is still relevant but too verbose;
  • the context ring is approaching 75–90%;
  • the provider reports a request that is too large.

To compress:

  • press ⌘⌥C / Ctrl+Alt+C; or
  • with an empty composer, hold or right-click the send control when compression is available.

Compression writes a summary and retains recent context. Afterward, send a short checkpoint:

text
Continue toward the same acceptance criteria. The authoritative decisions are:
1. preserve the v1 payload;
2. no new dependency;
3. validate with npm test -- session.

Do not wait until the context is completely full. Compression has better material to summarize when the thread is still coherent.

Review the response as evidence#

A useful completion should tell you:

  • what changed;
  • where it changed;
  • what was validated;
  • what was not validated;
  • any remaining risk or decision.

Open File Diff instead of relying only on the prose. If the run says a test passed, the output should correspond to an actual executed command. For high-risk changes, rerun the important check yourself in the integrated Terminal.