// 05 · Logistics
The contracts.
The precise contracts for every skill, file, and tool.
Workflow walks the cycle and the phase model. This chapter is the reference desk — when you need to know exactly what a skill takes, what file it touches, or what tool the agent calls, look here.
Argument conventions
Only /infil takes the operation number, and only on a fresh infil. Every other skill resolves the active operation from naholo agent boot’s <op_status> block (which carries currentOp, opTitle, opPath, opNotes as YAML.
| Skill | First arg shape | Meaning |
|---|---|---|
/infil | {N} or none | Op number for fresh infil; no args to re-infil (refresh) |
/warno | "freeform" (optional) | WARNO-scoped instructions to revise Concept of Operations / Constraints |
/raid | "freeform" (optional) | Task-cutting hints forwarded to the chained /opord (fresh OPs only) |
/opord | "freeform" (optional) | Plan-revision instructions for unfinished tasks (insert / split / retitle / drop) |
/splash | N or "freeform" (optional) | Task number; or extra context for the next-unchecked task |
/chop | "freeform" (required) | What to carve off (topic, Constraint references, optional new-OP title). Required in both fresh and revision modes — /chop with no args errors. |
/chopchop | none | Consumes notes/CHOP.md. The only customization channel is hand-editing CHOP.md (or re-running /chop "freeform") before applying. |
/nochop | none | Discards notes/CHOP.md. No customization. |
/sitrep | "freeform" (optional) | Extra context for the summary log |
/exfil | "freeform" (optional) | Common values: "close", "don't close" |
/recon | "freeform" (optional) | Optional first question; without it, /recon loads context and waits |
File layout per op
The infiled directory is .naholo/local/infiled/ (team mode) or ~/.naholo/covert-ops/{codename}/infiled/ (covert mode). What lives inside:
| File | Role | Owned by |
|---|---|---|
OPERATION.md | Single live document — SITUATION, WARNING ORDER (with Concept of Operations and Constraints), OPERATION ORDER (with per-task Intent, Scheme of Maneuver, AAR) | /infil creates SITUATION, /warno adds WARNING ORDER, /opord adds OPERATION ORDER, /splash adds AARs, /chopchop prunes the carved scope |
TASKS.md | Flat checkbox list mirroring the OPERATION ORDER TASK headings | /opord structures + inserts, /splash checks off, /chopchop deletes carved lines |
TIMELINE.md | Chronological catch-up log for fresh sessions that lack in-context history; pushed as just-another-note | naholo agent add-timeline (invoked by each skill, plus by post-skill in-phase edits) |
CHOP.md | OP-splitting planning brief: ## Intent + side-by-side # CURRENT OP / # NEW OP blocks (Concept of Operations, Constraints, OPERATION ORDER checklist). Syncs to the parent OP as a regular note via /sitrep and /exfil, so a teammate or fresh session can resume the proposal. | /chop creates/revises, /chopchop consumes + deletes both local and server-side on apply, /nochop deletes both on discard. Hand-editing between /chop and /chopchop is the supported customization channel. |
LOGS.yml | Snapshot of the server-side log feed at the last infil. Overwritten on every infil / reinfil; never merged. | naholo agent infil / reinfil |
.base/ | 3-way-merge baseline mirroring the last-synced state of TASKS.md and notes/*.md. | Sync commands only |
OPERATION.md sections
Exactly three top-level sections, always in this order when present:
| Section | Owner skill | Subsections |
|---|---|---|
## SITUATION | /infil | ### Pain, optional ### Suggested solution, optional ### Notes |
## WARNING ORDER | /warno | ### Concept of Operations, ### Constraints, optional ### Target Reference Points |
## OPERATION ORDER | /opord | one ### TASK N — Title per task; each carries #### Intent, mandatory #### Scheme of Maneuver, and #### After-Action Report (added by /splash when the task ships) |
No other top-level sections. Per-task progress lives inside OPERATION ORDER’s AARs; chronological events live in TIMELINE.md (below).
TASKS.md contract
Heading: # TASKS — OP #{n}. Body is a flat checkbox list, one line per task:
- [ ] N. Title # unfinished
- [x] N. Title # shipped
After a /sitrep or /exfil sync, each line may carry a trailing [ref](naholo://tasks/{id}) link to the server-side task record. The checkbox state and the task number are the load-bearing parts; titles mirror the OPERATION ORDER TASK headings.
TIMELINE.md contract
Chronological catch-up log. Written exclusively by naholo agent add-timeline — never by hand, never by another skill directly. Heading: # TIMELINE — OP #{n}. Each entry:
- {YYYY-MM-DD HH:MM} — {stage}: {summary}
Stage labels: infil, warno, raid, opord, splash, sitrep, exfil, chop, chopchop, nochop.
naholo agent commands
The agent shells out to these. The CLI owns timestamps, merge logic, and sync I/O — skills just call.
| Command | Called by | Purpose |
|---|---|---|
naholo agent boot | Every skill (first invocation per session) | Print personality + manual + locale + op_status. The session’s single context-load call. |
naholo agent infil <n> | /infil (with N) | Fresh fetch of operation {n} from the server. |
naholo agent reinfil | /infil (no args) | Argless refresh-only. 3-way-merges server state into the local infiled copy. |
naholo agent op | Troubleshooting only | Re-emit the op_status YAML when the session has lost track of which OP is infiled. |
naholo agent man | Troubleshooting only | Print the full manual to stdout. |
naholo agent add-timeline -T <stage> '<summary>' | Every phase-changing skill + in-phase tweaks | Append a TIMELINE bullet with the right timestamp + stage label. |
naholo agent sitrep | /sitrep | Push local tasks + notes to the server, post a summary log. |
naholo agent exfil [--close] | /exfil | Same as sitrep + optional close + delete local infiled dir. |
The only call required at the top of every session is naholo agent boot. Everything else fires when its owning skill does work.
MCP server
The naholo CLI exposes a Model Context Protocol server as a parallel agent-facing surface. Ask the agent to use these tools directly when you need an out-of-cycle action — “post a log on this op,” “pull the task list from another OP without re-infiling,” “create a new operation right now.” The bundled set will keep growing to cover every essential naholo server behavior.
Tools
| Tool | Purpose |
|---|---|
create_operation | Create a new operation |
close_operation | Close an operation |
create_task | Create a new task in an operation |
update_task | Update a task (name, note, or done status) |
create_note | Create a note on an operation |
update_note | Update a note on an operation |
delete_note | Delete a note from an operation |
create_operation_log | Create a log entry for an operation |
Resources
| URI | Contents |
|---|---|
naholo://project | Current project details |
naholo://operations | Operation list for the project |
naholo://operations/{operationNumber} | Full operation context (tasks + notes + recent logs) |
naholo://operations/{operationNumber}/tasks | All tasks for an operation |
naholo://operations/{operationNumber}/notes | All notes for an operation |
naholo://local/infiled | Currently infiled operation |
Where to look next
That is every shape this chapter holds. For how the skills drive the cycle, see Workflow. To replace these interfaces with your own — your own skill prose, your own CLI, your own MCP tools — see Customize.