Skip to main content
Version: 0.5

gest artifact

Create, update, list, and manage artifacts. Artifacts store documents such as specs, ADRs, RFCs, and notes alongside your project.

Usage

gest artifact <COMMAND> [OPTIONS]

Subcommands

CommandAliasesDescription
archiveArchive an artifact
createnewCreate a new artifact
deletermDelete an artifact and its dependent rows
listlsList artifacts with optional filters
showviewDisplay an artifact's full details
updateeditUpdate an artifact's fields
tagAdd tags to an artifact
untagRemove tags from an artifact
metaRead or write metadata fields
noteManage notes attached to an artifact

artifact archive

Move an artifact to the archive by setting its archived_at timestamp.

gest artifact archive [OPTIONS] <ID>

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix

Options

FlagDescription
-j, --jsonOutput as JSON
-q, --quietPrint only the artifact ID

Examples

gest artifact archive abc123

artifact create

Create a new artifact from inline text, a source file, an editor, or stdin.

When --body and --source are both omitted and stdin is a terminal, $EDITOR opens for interactive editing. When stdin is a pipe, the piped content is used as the body.

gest artifact create [OPTIONS] [TITLE]

Arguments

ArgumentDescription
[TITLE]Artifact title (auto-extracted from the first # heading when piping stdin or --source)

Options

FlagDescription
--batchRead NDJSON from stdin (one artifact per line)
-b, --body <BODY>Body content as an inline string (skips editor and stdin)
-i, --iteration <ITERATION>Add the artifact to an iteration (ID or prefix)
-j, --jsonOutput the created artifact as JSON
-m, --metadata <KEY=VALUE>Set a metadata key=value pair (repeatable; supports dot-paths and scalar inference)
--metadata-json <JSON>Merge a JSON object into metadata (repeatable; applied after --metadata pairs)
-q, --quietPrint only the artifact ID
-s, --source <SOURCE>Read body content from a file path
-t, --tag <TAG>Tag (repeatable). Use tags like spec, adr, rfc, note to categorize.

Artifact categorization is tag-driven in v0.5.0. The --type/-k flag and kind field were removed — tag your artifacts with spec, adr, rfc, etc. and filter listings with --tag.

Examples

# Create from inline body
gest artifact create "Auth Spec" --tag spec --body "## Overview\nAuth flow details..."

# Create from a file (title extracted from the first heading)
gest artifact create --tag adr --source docs/decisions/001-storage.md

# Create interactively (opens $EDITOR)
gest artifact create "My RFC" --tag rfc --tag backend --tag v2

# Add to an iteration
gest artifact create "Sprint 3 Notes" --tag note -i iter123

# Pipe body from stdin
echo "# My Spec\nDetails..." | gest artifact create --tag spec

# Batch-create artifacts from NDJSON
cat artifacts.ndjson | gest artifact create --batch

# Machine-readable output
gest artifact create "Quick note" --tag note --json
gest artifact create "Quick note" --tag note -q

artifact delete

Permanently delete an artifact and its dependent rows (tags, metadata, notes, links). This is irreversible; prefer archive when you only want to hide an artifact from active listings.

gest artifact delete [OPTIONS] <ID>

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix

Options

FlagDescription
--yesSkip the interactive confirmation prompt
--forceReserved for future guards; currently a no-op (artifacts have no guards today)
-j, --jsonOutput as JSON
-q, --quietSuppress normal output

Examples

# Interactive (prompts for confirmation)
gest artifact delete abc123

# Non-interactive (scripts, CI)
gest artifact delete abc123 --yes

artifact list

List artifacts, optionally filtered by tag or archive status.

gest artifact list [OPTIONS]

Options

FlagDescription
-a, --allInclude archived artifacts alongside active ones
--archivedShow only archived artifacts
-j, --jsonOutput as JSON
-t, --tag <TAG>Filter by tag

Examples

# List active artifacts
gest artifact list

# Filter by tag (use category tags like `spec`, `adr`, `rfc`)
gest artifact list --tag spec

# Include archived
gest artifact list --all

# JSON output for scripting
gest artifact list --json

artifact show

Display an artifact's full details and rendered body.

gest artifact show [OPTIONS] <ID>

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix

Options

FlagDescription
-j, --jsonOutput as JSON instead of formatted detail

Examples

gest artifact show abc123
gest artifact show abc123 --json

artifact update

Update an artifact's title, body, metadata, or tags.

gest artifact update [OPTIONS] <ID>

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix

Options

FlagDescription
-b, --body <BODY>Replace the body content
-e, --editOpen $EDITOR pre-filled with the current body
-j, --jsonOutput as JSON
-m, --metadata <KEY=VALUE>Set a metadata key=value pair (repeatable; supports dot-paths and scalar inference)
--metadata-json <JSON>Merge a JSON object into metadata (repeatable; applied after --metadata pairs)
-q, --quietPrint only the artifact ID
-t, --tag <TAG>Replace all tags (repeatable)
-T, --title <TITLE>New title

Examples

gest artifact update abc123 -T "Updated Title"
gest artifact update abc123 --tag approved --tag backend

# Machine-readable output
gest artifact update abc123 -T "New Title" --json

artifact tag

Add tags to an artifact, deduplicating with any existing tags.

gest artifact tag [OPTIONS] <ID> [TAGS]...

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix
[TAGS]...Tags to add (space or comma-separated)

Options

FlagDescription
-j, --jsonOutput the artifact as JSON after tagging
-q, --quietOutput only the artifact ID

Examples

gest artifact tag abc123 approved reviewed
gest artifact tag abc123 approved,reviewed

artifact untag

Remove tags from an artifact.

gest artifact untag [OPTIONS] <ID> [TAGS]...

Arguments

ArgumentDescription
<ID>Artifact ID or unique prefix
[TAGS]...Tags to remove (space or comma-separated)

Options

FlagDescription
-j, --jsonOutput the artifact as JSON after untagging
-q, --quietOutput only the artifact ID

Examples

gest artifact untag abc123 draft

artifact meta

Read or write artifact metadata fields. Metadata uses dot-delimited key paths for nested values.

gest artifact meta <COMMAND>

meta get

Retrieve a single metadata value.

gest artifact meta get [OPTIONS] <ID> <PATH>
ArgumentDescription
<ID>Artifact ID or unique prefix
<PATH>Dot-delimited key path (e.g. outer.inner)
FlagDescription
--jsonOutput as a JSON object
--rawOutput the bare value with no styling

meta set

Set a metadata value. Strings, numbers, booleans, and null are auto-detected.

gest artifact meta set [OPTIONS] <ID> <PATH> <VALUE>
ArgumentDescription
<ID>Artifact ID or unique prefix
<PATH>Dot-delimited key path (e.g. config.timeout)
<VALUE>Value to set
FlagDescription
-j, --jsonOutput as JSON
-q, --quietPrint only the entity ID

Examples

# Set a metadata field
gest artifact meta set abc123 status "approved"

# Read it back
gest artifact meta get abc123 status

# JSON output
gest artifact meta get abc123 status --json

# Raw value (no styling)
gest artifact meta get abc123 status --raw

artifact note

Manage notes attached to an artifact. Notes are lightweight markdown bodies that hang off an artifact and are a good fit for running commentary, review threads, or agent annotations that should live alongside the artifact without altering its body.

gest artifact note <COMMAND>

note add

Add a new note to an artifact. Use --body - to open $EDITOR for interactive entry.

gest artifact note add [OPTIONS] --body <BODY> <ID>
ArgumentDescription
<ID>Artifact ID or unique prefix
FlagDescription
-b, --body <BODY>Note body (required; use - to open $EDITOR)
--agent <AGENT>Set the author (agent) identifier for this note
-j, --jsonOutput as JSON
-q, --quietPrint only the note ID

note list

List all notes attached to an artifact, newest first.

gest artifact note list [OPTIONS] <ID>
ArgumentDescription
<ID>Artifact ID or unique prefix
FlagDescription
--limit <N>Cap the number of items returned
-j, --jsonOutput as JSON
-q, --quietPrint only note IDs

note show

Display a single note.

gest artifact note show [OPTIONS] <ID>
ArgumentDescription
<ID>Note ID or unique prefix
FlagDescription
-j, --jsonOutput as JSON

note update

Replace a note's body.

gest artifact note update [OPTIONS] <ID>
ArgumentDescription
<ID>Note ID or unique prefix
FlagDescription
-b, --body <BODY>New body text (use - to open $EDITOR)
-j, --jsonOutput as JSON
-q, --quietPrint only the note ID

note delete

Delete a note from an artifact.

gest artifact note delete [OPTIONS] <ID>
ArgumentDescription
<ID>Note ID or unique prefix
FlagDescription
--yesSkip the interactive confirmation prompt
-j, --jsonOutput as JSON
-q, --quietSuppress normal output

Examples

# Add a note inline
gest artifact note add abc123 --body "Reviewed by security team; approved."

# Add a note via $EDITOR
gest artifact note add abc123 --body -

# Attribute a note to an agent
gest artifact note add abc123 --body "Drafted outline" --agent implement-agent

# List notes for an artifact
gest artifact note list abc123
gest artifact note list abc123 --limit 5 --json

# Show and update a single note
gest artifact note show note456
gest artifact note update note456 --body "Updated commentary"

# Delete a note (non-interactive)
gest artifact note delete note456 --yes