PACK.md
These commands are CLI only. You can’t edit PACK.md over MCP.
Read and write PACK.md
Section titled “Read and write PACK.md”PACK.md is a pack’s standing guidance. It is the charter that the pack’s owners write. Every pack has one from creation. If it is empty, nothing has been written yet. The pack reads the whole file into its ask routing and deep navigation before the first decision. It is never retrieved, ranked, or partially matched.
Owners write it with set, edit and revert in the CLI or in the app. Two other things also change it. An imported pack brings its own file. Forgetting a document removes lines that restate or point at that document. Teaching never writes it.
The file has five sections, in this order: # Purpose, # Routing, # How we work, # Answer style and # Decline when. If the style section is still headed # Answer rules, the pack reads it the same way. A line As of: YYYY-MM-DD sets the day the pack treats as today. If an ask gives no date, the pack reads relative periods as ending the day before that date. # Decline when guides which questions the pack answers. It is not access control.
For what to put in it and how to keep it current, see Steering with PACK.md.
edisyl pack context get <pack> [--out <path>]edisyl pack context set <pack> --file <path|->edisyl pack context edit <pack>edisyl pack context history <pack> [--content] [--limit <n>] [--all]edisyl pack context revert <pack> <revision-id>Access
Section titled “Access”| Command | Access needed |
|---|---|
get |
read access to the pack |
set, edit, history, revert |
manage_pack (owner) |
Prints only the content. You can redirect it to a file:
edisyl pack context get <pack> > PACK.mdedisyl pack context get <pack> --out PACK.md| Flag | Behavior |
|---|---|
--out <path> |
Write to a file instead of stdout. |
-j |
Print the file’s metadata alongside the content. |
-j returns packId, content, updatedById, and updatedAt. Pass that updatedAt value to set --if-unmodified-since.
Replaces the pack’s guidance with the contents of a file, or of stdin when --file is -. The whole file is written each time. The limit is 10,000 characters.
edisyl pack context set <pack> --file PACK.mdcat PACK.md | edisyl pack context set <pack> --file -| Flag | Behavior |
|---|---|
--file <path|-> |
Required. The new content, or - for stdin. |
--if-unmodified-since <RFC3339> |
Refuse the write if PACK.md changed since this updatedAt. Take it from get -j. |
--if-absent |
Refuse the write if PACK.md has ever been written. Use it when the file you read was empty. |
Writing empty content empties the file. It does not delete it. Without a precondition flag, set overwrites the current content, including any write made since you read it.
Opens the current guidance in $VISUAL (or $EDITOR, falling back to vi) and writes it back when the editor exits cleanly. It takes no flags.
The save succeeds only if PACK.md has not changed since you opened it. This makes edit the same as get plus set --if-unmodified-since in one step. If PACK.md had never been written when you opened it, the save succeeds only if it is still unwritten.
Leaving the content unchanged writes nothing and records no revision.
Concurrency
Section titled “Concurrency”Another owner can write PACK.md while you edit it. If that happens, edit and a set with a precondition flag refuse the save. They do not overwrite the other write. edit keeps your draft on disk, and the error shows its path.
history
Section titled “history”Every write records a revision with who wrote it, when, and where it came from. history lists revisions newest first.
edisyl pack context history <pack>edisyl pack context history <pack> --content --all| Flag | Behavior |
|---|---|
--content |
Print each revision’s full text rather than a truncated preview. |
--limit <n> |
Revisions to show (default 100). |
--all |
Show the whole changelog instead of one page. |
Each revision has a source:
source |
Wrote it |
|---|---|
edited |
A hand edit: set or edit. |
taught |
A teach run’s guidance step. |
pruned |
A forget cleanup that removes lines that restate or point at the forgotten document. |
reverted |
A revert. |
imported |
The file arrived with an imported pack. |
Under -j, each revision has id, packId, content, createdAt, createdById, createdByName, and source, alongside hasMore and nextCursor for paging.
revert
Section titled “revert”Restores an earlier version by writing its content as a new revision. History is append-only. Reverting a bad line does not erase the record that it was there.
edisyl pack context history <pack> # take the revision idedisyl pack context revert <pack> <revision-id>Permissions
Section titled “Permissions”Without owner access, a PACK.md write fails with “not found” rather than “forbidden.” See Account & CLI for how the CLI reports permissions in general.
Was this page helpful?
Thanks for the feedback.
