forgeplan update
Update an artifact’s metadata (title, status, depth) or replace its body content without regenerating the file from a template. This is the low-level escape hatch when you need to change a single field without rewriting the whole artifact.
For most lifecycle transitions, prefer the dedicated commands — they run
validation gates and enforce the state machine. Use update only when no
dedicated command exists or when you are scripting a bulk-edit.
forgeplan update [OPTIONS] <ID>Arguments
Section titled “Arguments” <ID> Artifact IDOptions
Section titled “Options” --status <STATUS> New status (draft, active, superseded, deprecated) --title <TITLE> New title --depth <DEPTH> New depth (tactical, standard, deep) --body <BODY> New body content (use @filepath to read from file) -h, --help Print help -V, --version Print versionWhat it does
Section titled “What it does”- Loads the markdown file from
.forgeplan/<kind>s/<id>.md. - Parses frontmatter and body.
- Applies the supplied overrides (title, status, depth, body).
- Rewrites the file with updated frontmatter.
- Re-indexes the artifact in LanceDB so search and graph stay in sync.
The updated_at timestamp in frontmatter is refreshed automatically.
Examples
Section titled “Examples”Rename an artifact:
forgeplan update PRD-001 --title "Authentication & SSO"Change depth (e.g. after router re-evaluation):
forgeplan update PRD-001 --depth deepReplace body from a file:
forgeplan update NOTE-042 --body @./draft.mdForce-set status (skipping the lifecycle state machine — use with care):
forgeplan update PRD-001 --status activePrefer lifecycle commands for status changes
Section titled “Prefer lifecycle commands for status changes”Direct --status edits bypass the validation gate. For PRD / RFC / ADR / Epic /
Spec, this can create “active” artifacts that fail forgeplan validate. Use the
dedicated commands instead:
| Goal | Command |
|---|---|
| draft → active | forgeplan activate |
| active → superseded | forgeplan supersede |
| active → deprecated | forgeplan deprecate |
| stale → active | forgeplan renew |
| stale → draft (new copy) | forgeplan reopen |
Direct markdown edits are often faster
Section titled “Direct markdown edits are often faster”Because the markdown files are the source of truth (ADR-003), editing
.forgeplan/<kind>s/<id>.md in your editor and then running
forgeplan scan-import is often the most ergonomic
workflow — especially for body edits, structured field updates, or batch
changes. forgeplan update shines when you are scripting or want to avoid
opening the file at all.
- The
--bodyflag replaces the entire body. There is no partial-edit mode. - Use
@filepathprefix to read body content from a file instead of passing it inline on the command line. - After any direct edit (via CLI or editor), the LanceDB index is the cache, not
the truth. If you suspect drift, run
forgeplan scan-importto rebuild.
See also
Section titled “See also”- CLI overview
forgeplan activate— preferred way to change statusforgeplan scan-import— rebuild index after direct editsforgeplan validate— check that the artifact is still valid- Methodology guide