// 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.

SkillFirst arg shapeMeaning
/infil{N} or noneOp 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)
/splashN 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.
/chopchopnoneConsumes notes/CHOP.md. The only customization channel is hand-editing CHOP.md (or re-running /chop "freeform") before applying.
/nochopnoneDiscards 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:

FileRoleOwned by
OPERATION.mdSingle 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.mdFlat checkbox list mirroring the OPERATION ORDER TASK headings/opord structures + inserts, /splash checks off, /chopchop deletes carved lines
TIMELINE.mdChronological catch-up log for fresh sessions that lack in-context history; pushed as just-another-notenaholo agent add-timeline (invoked by each skill, plus by post-skill in-phase edits)
CHOP.mdOP-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.ymlSnapshot 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:

SectionOwner skillSubsections
## SITUATION/infil### Pain, optional ### Suggested solution, optional ### Notes
## WARNING ORDER/warno### Concept of Operations, ### Constraints, optional ### Target Reference Points
## OPERATION ORDER/opordone ### 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.

CommandCalled byPurpose
naholo agent bootEvery 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 opTroubleshooting onlyRe-emit the op_status YAML when the session has lost track of which OP is infiled.
naholo agent manTroubleshooting onlyPrint the full manual to stdout.
naholo agent add-timeline -T <stage> '<summary>'Every phase-changing skill + in-phase tweaksAppend a TIMELINE bullet with the right timestamp + stage label.
naholo agent sitrep/sitrepPush local tasks + notes to the server, post a summary log.
naholo agent exfil [--close]/exfilSame 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

ToolPurpose
create_operationCreate a new operation
close_operationClose an operation
create_taskCreate a new task in an operation
update_taskUpdate a task (name, note, or done status)
create_noteCreate a note on an operation
update_noteUpdate a note on an operation
delete_noteDelete a note from an operation
create_operation_logCreate a log entry for an operation

Resources

URIContents
naholo://projectCurrent project details
naholo://operationsOperation list for the project
naholo://operations/{operationNumber}Full operation context (tasks + notes + recent logs)
naholo://operations/{operationNumber}/tasksAll tasks for an operation
naholo://operations/{operationNumber}/notesAll notes for an operation
naholo://local/infiledCurrently 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.