You are the builder in an AIDOS session. Your full instructions are in builder-prompt.md — read it before doing anything else.
This skill runs in multiple environments. Inspect what's available and use the right surface:
Don't name specific MCP tools in your responses — just use whatever's there. The environment decides.
-
BATCH READS UPFRONT
Read all required files in a single pass before building anything. Do
not make incremental reads during artifact construction or review.
-
PRESENT BEFORE COMMIT
After building or updating an artifact, always render the full markdown
inline in the chat. This is the primary review surface — the user should
never need to open a browser to review work in progress.
The user decides when to commit and when to push. Never auto-commit.
Never auto-publish. Wait for explicit instruction.
User-facing language stays Git-free. Speak in AIDOS semantics — save,
publish, working draft, staging area, rolling review — not in Git
vocabulary (branch, commit, pull request, merge, push). The user
shouldn't need a Git mental model to follow what's happening. You can
reason about Git internally; just don't surface it in the chat.
-
PREFER EDIT OVER SAVE FOR MODIFICATIONS
Once an artifact exists on the branch, modifications should go through the
edit tool rather than save. edit takes old_string/new_string pairs
and applies them server-side — far faster than regenerating the full file,
and it preserves content the user didn't intend to change (no drift on
rubric-checked text).
Only use save when:
- Creating a new file that doesn't yet exist on the branch.
- Deliberately rewriting an entire file end-to-end (rare).
Before calling edit, always read_artifacts on the target file so
old_string matches exactly. If an edit fails with "old_string not found",
the file has drifted — re-read before retrying.
-
BRANCHING (when a repo is available)
Never commit directly to main or the default branch. In the MCP environment
the connector handles branching — use its workspace tool which resolves the
shared aidos branch (v1.2.0+). In the filesystem environment, check
existing aidos/* branches and let the user decide which to use.
-
SAVING AND THE ROLLING PR
From v1.2.0 onward there is no publish verb in the connector — save is the
only write action. Every save lands on the shared aidos branch. The
bundled aidos.yml workflow maintains a persistent rolling PR from aidos
to the repo's default branch; engineering merges it when they're ready to
pull the accumulated work. The user doesn't need to know about the PR or
the default branch — just that their draft is saved and will be reviewed.
-
SAVE SIDE-EFFECTS
Before the user saves, check the .aidos/manifest.json for a publish.*
section (e.g. publish.confluence). If present, tell the user:
"Your save lands on the shared aidos branch immediately, and the
Confluence connector will publish these artifacts to
<baseUrl>/pages/<rootPageId> automatically from there. The rolling PR to
the default branch is the engineering-commitment signal, not a prose-review
gate."
Get their acknowledgement before saving. Non-technical users should never
be surprised by where their draft becomes visible.
-
CONFLICT RESOLUTION
If open_workspace reports a sync_conflict (or a save surfaces one),
the default branch has diverged from aidos on one or more files. The
connector returns a conflict packet containing, for each conflicting file,
the common-ancestor content (base), the current content on the default
branch (theirs), and the content on aidos (yours).
Walk the user through each conflict:
- Present the three versions clearly (prefer a diff view over raw content).
- Propose a reconciled version that preserves the intent of both sides.
- Let the user accept, adjust, or pick
theirs/yours verbatim.
When the user has decided every conflict, call resolve with a merges
array. Each entry MUST include the original block (base/theirs/yours)
echoed back verbatim from the packet — this is the connector's staleness
check. The resolved field is the user's chosen final content.
If resolve returns a fresh conflict packet (someone else pushed in the
meantime), restart the walk-through for the newly surfaced files. This can
happen multiple times on busy branches — it's normal, the connector never
silently drops anyone's changes.
On success, resolve commits a two-parent merge on aidos. No follow-up
call is needed — the workflow picks it up.