🧭 Dispatch backend — choose cheap agent/model, run multiple workers in parallel, opencode/orchestration syntax → see orca-dispatch-reference (single source of truth, don't duplicate syntax here).
WHAT
Purpose and context
- Purpose: Propose → gate → dispatch → verify via Orca. Agent pool 1:1 per engine (claude, agy, opencode, kiro, copilot). Claude: analyze. Others: execute. Kill opencode if it waits too long.
- Trigger (when to use):
- "propose ", "feature request", "implement "
- "run lint", "verify wiki"
- "sync template", "upstream"
- Non-goals: does not handle INCIDENTS (bug, runtime error, regression →
orca-issue); does not duplicate dispatch backend syntax (→orca-dispatch-reference); does not re-describe the behavior of/propose,/plan,/query(single source of truth in the child skill).
Mental model
yêu cầu tính năng → R12 sweep → /query (wiki) → /propose (SPEC .md + .html render rẻ) → gate người duyệt → /plan (PLAN máy đọc) → task-create có dấu dự án → cổng HITL/AFK + kiểu việc → dispatch --inject nguyên văn → worker_done → [/qc-code] → verify-before-commit → output report. Claude analyzes; other agents execute; T-id (durable ledger) is separate from task_xxxx (Orca ephemeral, runtime-global).
Input and output contract
| Field | Required? | Meaning | |
|---|---|---|---|
| In | feature description ("propose ", "implement ") | yes | incident → branch to orca-issue |
| In | llmwiki/wiki/ |
no | missing/empty → write "no precedent yet" |
| In | user approval at gate | yes | before /plan + dispatch |
| In | available agent CLI (opencode/agy/kiro/gh copilot/orca) |
no | exhausted → Claude does it itself |
| Out | SPEC draft .md + .html (via /propose) |
yes | human reviewer artifact |
| Out | llmwiki/wiki/sources/draft/DDMMYY-<tên>-PLAN.md (via /plan) |
yes after approval | machine execution artifact |
| Out | Orca task with project marker + T-id status | yes | approved/rejected/dispatched via code-logger (fail-open) |
| Out | output report llmwiki/wiki/draft/orca/DDMMYY-<ten>.md + index + log |
yes (unless 0 artifacts) | "done" = worker_done + verify-before-commit green + report Status updated |
Rules and capabilities
- RULE-01 (MUST): Caveman Mode: Choose the level of detail based on the file's reader. Markdown files that a MACHINE or AGENT reads and executes (SKILL.md, policy.yaml, AGENT.md, pure reference tables) can be written concisely — caveman here saves tokens with no downside. But documents that HUMANS read or review MUST have caveman turned off and be written in full — proposal, output-report, wiki content (concept/ADR/registry), README, CONTRIBUTING and runbook, along with every HTML page. These files must be prose with complete, readable sentences; do not drop conjunctions, do not write clipped abbreviations, do not stuff tables in place of explanatory sentences. Lesson 2026-06-27: the user responded "caveman compressed too much when writing documentation", then clarified — machine-read files can be terse, human-read files need to be complete.
- RULE-02 (MUST): Claude: analyze. Others: execute. Kill opencode if it waits too long.
- RULE-03 (MUST): Process problem ledger (problem-tree) — The project has
llmwiki/then the problem-tree ledger is located atllmwiki/html/problem-tree.html(framework repo:fdk-problem-tree.html). Any session that discovers or resolves a process/framework problem → update the node into the JSON block#tree-data(append-only; solved must recordsolvedBy; scope across the 3 pillars harness/skills/llmwiki — green only when 3/3). Forgetting doesn't lose it either: the SessionEnd hook (R17) automatically writes a pending card in code, to be distilled next time. - RULE-04 (MUST): task spec MUST be stamped with the project:
orca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')"(the Orca task ledger is runtime-global). - RULE-05 (MUST): an agent assigned HITL work is left only to guess on the user's behalf and then stay silent — that is the 1/5 figure, not a dumb model — HITL is not dispatched to a headless CLI.
- RULE-06 (MUST):
--injectinjects VERBATIM the task brief from PLAN along with## Global constraints; do NOT summarize it again. - RULE-07 (MUST): Container / DB safety — run
docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.toolbefore any--force-recreate,down, recreate; if the volume differs → STOP, ask the user (details in Reference). - Capabilities: read the wiki; create gate/task/dispatch via the orchestration runtime; run a headless agent CLI or interactive terminal; write wiki draft + T-id ledger; (optional) cross-session memory via HTTP; push skill sync to the source repo.
Failure boundaries
- The input is an incident → branch to
orca-issue, do not propose. - R12 sweep: subrepo TARGET after remote → blocked until
git pull --rebase; offline → fail-open. - User rejects at the gate → cancelled, T-id
state=rejected. - HITL task → not dispatched, label
ready-for-human(waiting for a human). - Headless CLI silent for more than ~60–90s / creates no file / missing
diagram-box→ kill, Claude takes over (fallback). - Container volume differs from compose → blocked, ask the user.
task-update --status done→ok:falsesilently (valid status:ready|in_progress|completed|failed).
HOW
Main workflow
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | deterministic | workspace | Step 0 — R12 (B) pre-work sweep pull-gate-sweep.sh once |
fresh base | TARGET after remote → pull --rebase then loop |
| W02 | judgment | feature | Step 1 — CALL /query synthesize wiki context |
known + gaps | empty → "no precedent" |
| W03 | judgment | context | Step 2 — CALL /propose (SPEC .md); .html render dispatch to cheap CLI with watchdog |
SPEC .md + .html |
CLI silent → B03 |
| W04 | effect | SPEC | Step 3 — orca orchestration gate-create, wait for user; record T-id approved/rejected |
approve | reject → cancelled |
| W05 | judgment | SPEC approved | Step 4 — CALL /plan → PLAN; task-create each ### Task with spec stamped |
task task_xxxx |
R7 PLAN blocked → fix PLAN |
| W06 | judgment | task | Step 4b — Gate 1 HITL/AFK, Gate 2 work type → archetype, then cost table | AFK task with type + CLI | HITL → B02 |
| W07 | effect | AFK task | Step 5 — orca orchestration dispatch --task <id> --to <agent> --inject (verbatim brief, first line declares work type); T-id dispatched |
worker running | — |
| W08 | deterministic | dispatch | Step 6 — orca orchestration check --wait --types worker_done --timeout-ms 300000 |
worker_done | timeout/silent → B03 |
| W09 | deterministic | diff | Step 7 — verify-before-commit (including qc-regression.py --run) |
clean commit | red → fix |
| W10 | effect | result | Output report + update agent Status + sync push skill (Delivery section) | draft + index + log | 0 artifact → skip |
Details of each step (source of truth for W01–W09):
- R12 (B) — pre-work sweep of entire workspace (ONCE, before working / multi-agent fan-out): orchestrator runs
harness/poc-vendor-neutral/bin/pull-gate-sweep.sh— scans EVERY subrepo (from.harness-workspace.yaml, missing → auto-discover harnessed), parallel fetch; subrepo TARGET after remote → STOP,git pull --rebasein that repo then dispatch (whole agent fleet shares fresh base); subrepowatchwarning only. 1 repo → sweep auto-reduces topull-gate.sh. Offline → fail-open. DOES NOT block per-edit (intentionally omitted per-edit PreToolUse). R12 (C) gate2 per-repo: install every subrepo withinstall-harness.sh --all-subrepos; manual checkpull-gate.sh gate2. - query: CALL skill
query(Skill tool →query, or/query) to synthesize context fromwiki/about the feature — do NOT read manually in scattered fashion, use the correct wiki-loopquery(synthesize[[wikilinks]], return what is known + gaps). Project does not yet havewiki/(or query returns empty) → record "no precedent yet" then move to step 2. - propose — do NOT re-describe; CALL skill
propose(Skill tool →/propose, following the pattern of step 1 callingquery). All R7 requirements (pair.md+.html,## Plan,## Agent Task Assignment, glass-styledocs-site-macos, detailed prose) live in the child skill — to change propose behavior only editllmwiki/skills/dev-loop/propose.md, do NOT edit here (single source of truth, see [[ADR-003-skill-as-single-source-of-truth]]).- Separate Claude-thinks / cheap-CLI-renders: Claude (via
/propose) only produces SUBSTANCE =.mdrender-complete (Plan + prose +## Render brief= diagram step as data + prose paragraph per task). The.htmlpart is the RENDER mechanical of## Render brief→ dispatch to a cheap CLI per the cost table (OpenCodebig-pickle→agy→kiro, $0). Render is free so use Fulldocs-site-macosrichness, do NOT trim — Claude tokens are spent only on substance, not bloated by HTML richness. - Watchdog + R7 gate (lesson 250626 — headless delivers ~1/5): wait ~60–90s; silence / no file created / missing
diagram-box→ kill, Claude render fallback. Try cheap CLIs in order of availability (probe--version); exhausted → Claude. R7 still blocks at write+commit so quality is gated regardless of who renders.
- Separate Claude-thinks / cheap-CLI-renders: Claude (via
- gate:
orca orchestration gate-create --question "Duyệt proposal này?"→ wait for user (send along the html preview URL)- Pillar 3 lifecycle (best-effort, fail-open): user APPROVES →
python3 harness/scripts/code-logger.py --task set <T-id> state=approved note="gate"(<T-id>= fieldtask:in the draft frontmatter minted by/propose; if empty, skip). User REJECTS →--task set <T-id> state=rejected. Command is fail-open, does not block the flow.
- Pillar 3 lifecycle (best-effort, fail-open): user APPROVES →
- After approval — CALL skill
plan(Skill tool →/plan) BEFORE decomposing./proposeproduces SPEC (what a HUMAN reads to approve);/planexpands it intollmwiki/wiki/sources/draft/DDMMYY-<tên>-PLAN.md— what the MACHINE reads to execute: each### Taskhas**Files:**(exact paths),**Interfaces:**(Consumes/Produces — signatures for neighboring tasks), and 2–5 minute TDD-style steps with real code + command + expected output. R7 PLAN branch blocks if missing. Only thenorca orchestration task-createfor each### Task— spec must MARK the project:orca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')". Orca's task ledger is runtime-global (the Orca guide says so outright); measured 2026-07-20: 18 terminals from MANY projects all write to one ledger, sotask-listin repo A returns tasks from repo B as well — and an orchestrator will mistakenly claim another project's task, defeating the very goal of physical-layer bias separation. Orca has no project field (task-createhas no tag,task-listhas no filter), so this mark is the only way to attribute accurately — and it still holds after the terminal that created the task has died (measured: 0/17 old terminals still alive). Cross-check:orca-reconcile.py [--scope current|all].- Why mandatory, not "should": a cheap headless CLI agent inherits no context from this session and cannot ask again — it has only exactly what we inject; when it hits ambiguity it guesses and stays silent. A thin brief is precisely the cause of the measured "~1/5 delivery" (lesson 250626), not a dumb model.
- PLAN does not need
.html— HTML is tied to the SPEC (what people view when approving), generated by/propose. Drawing diagrams for the agent to read is burning tokens for nothing. 4b. ASSIGN THE RIGHT KIND OF WORK — the gate runs BEFORE choosing a CLI. The cost table below only answers "which model is cheapest". It never asked "can this work be done without a human" — and that is the missing piece of the ~1/5 number. Two gates, in this order: - Gate 1 — HITL/AFK. A task that needs a live person to answer (design decision, trade-off, something only the user knows, external access, manual verification) is HITL → label
ready-for-humanin the ledger, DO NOT dispatch to a headless CLI. Only tasks AFK (ready-for-agent) proceed. Hard rule: an agent assigned HITL work can only guess on the user's behalf and stay silent — that is the 1/5 number, not a dumb model. - Gate 2 — work type → archetype. Tag the task type:
research(pull out facts) ·prototype(rough draft to react to) ·grilling(ask one question at a time) ·build(execute per brief) ·sweep(mechanical cleanup). Map to archetype (ADR-015) → persona preamble. Only then come the cost table for choosing a CLI — it drops to the last step, not the first.
- dispatch:
orca orchestration dispatch --task <id> --to <agent> --inject--injectinject the FULL brief of that task from PLAN (Files + Interfaces + Steps) along with## Global constraintsof the PLAN. Do NOT summarize — summarizing is exactly where context drops, and what drops is always what the agent needs.- The FIRST line of the brief declares the type of work: one sentence stating plainly what kind of session this is — "you are resolving a DECISION, not going to build" / "you are doing mechanical cleanup, NOT adding a feature". The type of work determines the shape of the session, not just the choice of model; an agent that knows what it is doing behaves completely differently from an agent that receives a lump of description.
- Lifecycle pillar 3 (best-effort): when assigning work →
python3 harness/scripts/code-logger.py --task set <T-id> state=dispatched note="<agent>". This isT-iddurable (immutable audit trail), independent oftask_xxxxephemeral of orca orchestration. Fail-open. - Persona by archetype (Boris Cherny — 5 lifecycle roles): to dispatch by a specific posture call with keyword —
/proto/build/sweep/grow/maintain. Mechanism:python3 harness/scripts/archetype.py --get /<kw>→ print (a) suggested CLI for that archetype (Prototyper→cheap opencode · Builder/Grower/Maintainer→Claude · Sweeper→opencode), and (b) persona PREAMBLE (llmwiki/personas/<archetype>.md) — inject that preamble into<task>before dispatch so that agy/opencode/kiro take on the right role (e.g. Sweeper is forbidden from adding features). Which CLI matches which archetype is the adapterverified:false(harness/archetypes.config.yaml). See ADR-015.
- Wait:
orca orchestration check --wait --types worker_done --timeout-ms 3000006b. (Optional) Senior QC before commit — if you want a senior pair of eyes to scrutinize the diff before finalizing, call/qc-code(Skill tool →qc-code): review 4 items (security/performance/naming/logic) with scoring + verdict, and generate a reproducing testqc-*for each logic bug. Verdict NEEDS FIX → fix before committing. Optional, not mandatory — the LLM verdict is advisory (the human decides), the hard gate is the testqc-*run in step 7. - Check:
verify-before-commitruns automatically before each commit (including step 3b:qc-regression.py --runrun testqc-*deterministically — a reproduced bug does not silently come back).
Branches
| ID | Kind | Guard | Behavior | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | input is an INCIDENT (bug, runtime error, regression, "it was working yesterday") | CALL skill orca-issue instead of propose |
severe incident needing fan-out → orca-issue escalates to W07, keeping its 2 hard gates | ends (or W07 when escalating) |
| B02 | conditional_required | task needs a live person to answer (HITL) | label ready-for-human in the ledger, do NOT dispatch headless CLI |
— | wait for the person, then W06 |
| B03 | recovery | headless CLI silent ~60–90s / creates no file / missing diagram-box |
kill + Claude takes over per spec; try the next cheap CLI in the pre-existing order (probe --version) |
CLIs exhausted → Claude | currently running step (W03/W08) |
| B04 | user_optional | want to inspect the diff before finalizing | Step 6b — /qc-code (advisory verdict + test qc-*) |
NEEDS FIX verdict → fix before commit | W09 |
| B05 | user_optional | want to dispatch by posture (/proto /build /sweep /grow /maintain) |
python3 harness/scripts/archetype.py --get /<kw> → suggested CLI + inject PREAMBLE persona into <task> |
— | W07 |
| B06 | conditional_required | about to touch docker (--force-recreate, down, recreate) |
docker inspect mounts, compared with compose; different → STOP and ask user |
no backup + confirmation → do not change volume | currently running step |
| B07 | capability_optional | has AGENTMEMORY_TOKEN |
search at session start / remember after decision + session end (Reference — AgentMemory) | none → skip | W02 / W10 |
Incident branch details (verbatim):
Branching: INCIDENT ≠ feature
Input is incident (bug, runtime error, regression, "it worked yesterday") → CALL skill orca-issue instead of propose: separate loop triage → repro-first gate (not reproduced means not fixed) → fix red→green → double distill. Severe incidents needing fan-out: orca-issue escalates back here to dispatch, but its 2 hard gates still hold.
Validation and stopping
Human gate: W04 gate (approve SPEC) and HITL Gate 1 at W06. Machine gate: R7 blocks SPEC/PLAN with missing sections at write+commit; verify-before-commit + qc-regression.py --run before each commit. CLI watchdog ~60–90s (B03); check --wait timeout 300000 ms. Reconcile tasks by project: orca-reconcile.py [--scope current|all].
Examples
- Positive: "propose export CSV for the report" → sweep clean →
/queryreturns 2 related pages →/proposegenerate SPEC,.htmlrender withopencode run -m opencode/big-pickle→ user approves gate →/plangenerateDDMMYY-export-csv-PLAN.md3 tasks → task-create has stamp → 2 AFK tasksbuilddispatch--inject, 1 HITL task ("choose date format") taggedready-for-human→ worker_done → verify-before-commit green → output report. - Boundary/failure: "yesterday login still worked, today 500" → B01: do not propose, call
orca-issue(repro-first). - Boundary:
opencode runrender.htmlsilent for 90s, no file created → B03: kill, Claude render fallback; R7 still guards quality at write time.
Reference — Gotchas orchestration CLI (lesson 230626)
- 2 ids from
task-create --json: response has envelopeid(uuid) ANDresult.task.id(task_xxxx). All subsequent commands (gate-create --task,dispatch --task,task-update --id) MUST useresult.task.id, NOT the envelope id. Using the wrong one: the gate can still create/resolve but points to a ghost task → the real task gets stuck atready. - Valid status of
task-update --status:ready|in_progress|completed|failed. There is NOdone— passingdonereturnsok:falsesilently (no clear error). - To reliably get the real id:
orca orchestration task-list --jsonthen match byspec.
Reference — Container / DB safety (MANDATORY before touching docker)
Before touching a container (docker compose / docker run)
# BẮT BUỘC chạy trước bất kỳ --force-recreate, down, recreate nào:
docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.tool
Compare Source path with the volume in the compose file about to be used. If different → STOP, ask the user.
Cozyroom production DB: /mnt/c/Users/olive/orca/workspaces/home-spotify/m/data/metadata.db
Never change the volume mount without backup + user confirmation.
Lesson 2026-05-29: recreating a container with the wrong compose path → lost the entire user DB.
Reference — Quick dispatch
⚠️ Headless CLI agents are NOT reliable (lesson 250626 — orca-eval):
opencode run/agy -p/kiro runrunning in the background from Claude Code usually does not deliver (process exits/hangs, no file created — measured 1/5 tasks succeeded). Rule: set a watchdog (~60–90s), if silent/no file → kill + Claude takes over per spec (don't wait pointlessly). Use OpenCode for INDEPENDENT boilerplate tasks that have been verified; tasks with dependencies/nuance → Claude does them. To REALLY dispatch to an agent → preferorca terminalinteractive instead of-p/run.
# OpenCode non-interactive (DEFAULT — dùng big-pickle miễn phí):
# ⚠ KHÔNG dùng --dangerously-skip-permissions khi dispatch từ Claude Code — auto-mode classifier sẽ DENY (bài học 120626)
opencode run -m opencode/big-pickle --dir "<project>" "<task>"
# Antigravity non-interactive:
agy -p "<task>"
# Kiro non-interactive:
kiro run --dir "<project>" "<task>"
# GitHub Copilot Coding Agent (async — via GitHub issue):
gh issue create --title "<task>" --body "<task details>" --assignee "@me"
# Then: gh copilot suggest "<task>" or trigger via VS Code Copilot Chat
# Nếu dùng Orca terminal (interactive):
orca terminal list
orca terminal create --worktree active --title "OpenCode" --command "opencode"
orca terminal send --title "OpenCode" --text "<task>"
orca terminal wait --for tui-idle && orca terminal read --title "OpenCode"
Reference — Task assignment by cost
| Task | Agent | Model |
|---|---|---|
| Search, grep, list, read | OpenCode | opencode/big-pickle ($0) |
| Write boilerplate, CRUD | OpenCode | opencode/big-pickle ($0) |
| Wiki ingest/lint | OpenCode | opencode/big-pickle ($0) |
| Review diff, explain | agy | default |
| Architectural decisions | Claude Code | Opus 5 (claude-opus-5) — see the Claude chain at /orca-dispatch-reference |
| Debug hard errors | Claude Code | Sonnet 5 (claude-sonnet-5) by default, upgrade to Opus 5 if stuck |
| Frontend UI boilerplate | Kiro | default |
| Cross-file refactor | Kiro | default |
| PR review + suggest fixes | Copilot | gpt-4o (GitHub) |
Reference — Agent binaries
| Agent | Binary | CHECK |
|---|---|---|
| Antigravity | agy |
agy --version |
| OpenCode | opencode run -m opencode/big-pickle |
opencode --version |
| Kiro | kiro run |
kiro --version |
| GitHub Copilot | gh copilot suggest |
gh copilot --version |
| Orca | GUI only — use via orca terminal * commands |
orca terminal list |
Reference — Antigravity Dispatch Reality (tested 2026-05-21, updated 2026-05-23)
Binary: agy — %LOCALAPPDATA%\agy\bin\agy.exe. NOT antigravity, NOT ~/.local/bin/agy (Linux).
Create terminal:
orca terminal create --worktree active --title "Antigravity" --command "agy"
Hook: Orca v1.4.21 fixes Windows hook quoting — antigravity-hook.cmd no manual edit needed.
OpenCode: opencode — npm global at %APPDATA%\npm\opencode.cmd.
Dispatch status:
| Step | Status |
|---|---|
dispatch --inject |
Try after v1.4.21 — if it fails, use terminal send |
terminal send manually |
OK |
| Antigravity reads files/runs commands | OK |
worker_done to inbox |
Needs retest |
Reference — Slash Skill Installation per Agent CLI
Agent receiving dispatch: self-install skill from llmwiki/skills/ before starting.
Claude Code CLI
mkdir -p .claude/commands/
cp llmwiki/skills/<loop>/<name>.md .claude/commands/<name>.md
# User-level:
mkdir -p ~/.claude/commands/
cp llmwiki/skills/<loop>/<name>.md ~/.claude/commands/<name>.md
OpenCode CLI
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.md
# Restart OpenCode để discover skill mới.
Antigravity CLI
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.md
Kiro CLI
mkdir -p ~/.kiro/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.kiro/skills/<name>/SKILL.md
GitHub Copilot
# Workspace-level steering via .github/copilot-instructions.md
# Skills injected as context file:
mkdir -p .github/
cat llmwiki/skills/<loop>/<name>.md >> .github/copilot-instructions.md
# Or per-skill steering file (Copilot Workspace):
mkdir -p .github/skills/
cp llmwiki/skills/<loop>/<name>.md .github/skills/<name>.md
Rules for all agents
- Copy skill files only — skip
README.md,index.md,log.md. - File by file — no
cp -R. - Scope:
.claude/commands/(Claude Code);~/.agents/skills/(OpenCode/agy);~/.kiro/skills/(Kiro);.github/(Copilot). - After installing, report:
| Agent | Skill | Installed at | |-------------|---------|------------------------------------------| | claude-cli | propose | .claude/commands/propose.md | | opencode | propose | ~/.agents/skills/propose/SKILL.md | | antigravity | propose | ~/.agents/skills/propose/SKILL.md | | kiro | propose | ~/.kiro/skills/propose/SKILL.md | | copilot | propose | .github/skills/propose.md |
Reference — AgentMemory — Persistent Cross-Session Memory
Service at https://agentmemory.giatbh.io.vn/ — stores context between sessions.
BASE="https://agentmemory.giatbh.io.vn"
TOKEN="${AGENTMEMORY_TOKEN}"
# Health check
curl -sk -H "Authorization: Bearer $TOKEN" "$BASE/agentmemory/health"
# Ghi memory (cuối session hoặc sau quyết định quan trọng)
curl -sk -X POST "$BASE/agentmemory/remember" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"content":"<nội dung>","category":"fact|preference|decision|context"}'
# Tìm kiếm (đầu session hoặc trước khi propose)
curl -sk -H "Authorization: Bearer $TOKEN" \
"$BASE/agentmemory/search?query=<từ+khóa>"
When to use:
- Start of session: search context before starting
- After a decision: save approach + rationale
- End of session: save completed tasks, commits, status
Reference — Main commands
orca orchestration run --spec "Propose: <tính năng>. Query wiki, tạo draft, gate chờ duyệt."
Detailed dispatch:
llmwiki/skills/orchestrate/orca-dispatch-reference.md
Delivery — Output Report (after implementation is complete)
This is the result report after implementation, NOT a propose plan. The propose plan must be created in Step 2 BEFORE doing anything.
After all implementation tasks complete, write an output report to the wiki.
Steps
1. Build the filename:
- Format:
DDMMYY-<ten>.md DDMMYY= today (e.g.,020626for 2 June 2026)<ten>= 2–4 kebab-case words summarising what was done (e.g.,landing-page-coteccons,brand-kit-fintech,ingest-auth-spec)
2. Write llmwiki/wiki/draft/orca/DDMMYY-<ten>.md:
---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## Agent Task Assignment
| Task | Agent | Status |
|------|-------|--------|
| <mô tả task 1> | <tên agent> | pending / in-progress / done |
| <mô tả task 2> | <tên agent> | pending / in-progress / done |
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/draft/orca/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_
3. Update wiki index & log:
llmwiki/wiki/index.md— append one row:| [DDMMYY-<ten>](draft/orca/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md— append:## YYYY-MM-DD — <skill-name> — <ten>
4. Update agent statuses & sync push — MANDATORY, do not skip:
- Reopen the file
llmwiki/wiki/draft/orca/DDMMYY-<ten>.md - Update the Status column in the table
## Agent Task Assignmentaccording to the actual status of each agent (pending → in-progress → done) - Clone
rheinmir/setupbranchorca, copy the modified skill files, then push back up:git clone git@github.com:rheinmir/setup.git /tmp/rheinmir-setup-sync -b orca --depth 1 cp /path/to/skill.md /tmp/rheinmir-setup-sync/skills/<skill-name>/SKILL.md cd /tmp/rheinmir-setup-sync git add . git commit -m "skill: sync update — DDMMYY-<ten>" git push origin orca rm -rf /tmp/rheinmir-setup-sync
Skip only when the skill does not produce any artifact or decision.