| name | ds-status |
| description | Read-only inspection of the agentic-engineering activation resolver. |
| user-invocable | true |
/ds-status
Read-only inspection of the agentic-engineering activation resolver.
Dumps the resolved global config, project marker, profile, and
first-activation sentinel state. Writes nothing. Always exits 0.
Implementation: bin/agentic-status (Python 3 stdlib).
Usage
agentic-status
No subcommands, no flags. Reads:
~/.claude/agentic-engineering.json (global config)
<cwd>/AGENTS.md (project marker; resolves through CLAUDE.md @AGENTS.md import if present)
<cwd>/.agentic/.activated (first-activation sentinel)
<cwd>/.agentic/config.json (project config; surfaces the deferred_wrap_daemon toggle - prints its value, or false when the file or key is absent)
<cwd>/.agentic/wrap/lock plus its owner.json / owner bodies (wrap-lock state: held / abandoned / free, plus the hold age)
Output
agentic-engineering status
global config: /Users/<you>/.claude/agentic-engineering.json (found)
mode: opt-out (source: global config)
profile: default (source: global)
set_at: 2026-04-15T12:00:00Z
project marker file: /path/to/project/AGENTS.md
marker: none
active: yes (mode=opt-out + marker=none -> active: opt-out activates everywhere unless a project opts out)
sentinel: .agentic/.activated (present)
deferred_wrap_daemon: false (source: .agentic/config.json; out-of-session daemon for deferred /ds-wrap jobs)
wrap lock: free
Held examples (only when .agentic/wrap/lock exists):
wrap lock: held role=agent session=f176f720-a218-4cac-84a0-1489abe7aa1d age=3m
wrap lock: held role=agent session=(none) age=10h18m - past the abandonment threshold; the next `agentic-wrap-acquire-lock` clears it if the holder is gone
DEPRECATED example (only shown when a legacy preset key is present at some scope):
DEPRECATED: preset key 'strict' (global) resolved to profile=strict; migrate by setting
profile=strict directly - preset support will be removed after the deprecation window.
What this means
Active here: yes. The methodology governs how work gets done in this project.
Profile 'default': single-file behavioral edits run directly with a self-check;
multi-file changes, new files, shared utilities, config, and anything risky
spawn a Worker plus an independent Skeptic review.
(relaxed: single-file behavioral edits, small pure-UI multi-file changes, AND
bounded 2-3-file behavioral edits (connectivity-bound, <=30 changed lines,
zero other Elevated signals) run directly - lighter review, faster iteration.)
(strict: UI-copy tweaks, file renames, and targeted wording fixes are all treated
as Elevated and get Worker + Skeptic - broadest review coverage.)
How to adjust
Change the profile for THIS project:
add a line to /path/to/project/AGENTS.md: agentic-engineering-profile: relaxed (or default / strict)
Change the profile GLOBALLY:
edit /Users/<you>/.claude/agentic-engineering.json -> "profile": "relaxed" | "default" | "strict"
Turn the skill OFF for this project: /ds-disable
Turn it off EVERYWHERE: /ds-disable --global
See every command: /ds-help
Note: deleting the sentinel re-arms the first-activation notice only.
To opt out, use /ds-disable.
The source annotation on mode and profile records where
the effective value came from:
mode source: global config - the mode was read from a valid
~/.claude/agentic-engineering.json; global config (default; file missing)
- the config file is missing or malformed, so
mode falls back to its
opt-out default.
global - the profile value comes from a valid profile: key in
~/.claude/agentic-engineering.json.
project - the value comes from a valid agentic-engineering-profile:
line in AGENTS.md.
global (legacy preset) - no valid profile key at global scope, but a
legacy preset: key resolved to this value via the deprecated preset
table (see the DEPRECATED notice, which fires on presence of the legacy
key regardless of whether it wins).
project (legacy preset) - no valid agentic-engineering-profile: line
in AGENTS.md, but a legacy agentic-engineering-preset: marker resolved
to this value.
global (default; unset) - nothing valid at any scope; falls back to the
hardcoded default.
.agentic/config.json - the deferred_wrap_daemon line comes from the
project config file; when the file or the key is absent, the line prints the
documented default (false).
.agentic/wrap/lock - the wrap lock line reports free when the directory
is absent and held role=... session=... age=... when it exists, appending a
"past the abandonment threshold" note once the hold exceeds 30 minutes (with a
session id) or 4 hours (without one). It is advisory, not authoritative:
it reports observable facts and does not re-derive the abandonment predicate,
which lives once in wrapLockAbandoned (hooks/lib/wrap-marker.js) and is
acted on only by agentic-wrap-acquire-lock. This line exists because no
operator-invocable command could previously reveal a wedged lock - the
10.3-hour orphan that silently discarded 49 context.md writes across 6
sessions had to be diagnosed by hand. context.md writes are no longer
lock-gated, so an abandoned lock is now an inconvenience rather than a
data-loss condition, but it still blocks /ds-wrap until cleared.
The active line carries the derivation that produced the active state -
the (mode=... + marker=... -> active|inactive: <reason>) clause - so it is
self-explanatory why the project is or is not governed. The "What this means"
block then explains the resolved profile's review behavior (with the other
two profiles shown as parenthetical contrast), and the "How to adjust" block
lists the exact edits to change the profile or turn the skill off. A
DEPRECATED line appears whenever a legacy preset key is present at either
scope, independent of whether it won resolution.
Sentinel as reset
The .agentic/.activated sentinel is the per-project record that the
first-activation notice has already been shown. Deleting it re-arms the
notice only - it does NOT change activation state, the global config,
or the project marker. To actually opt the project out, use
/ds-disable.
Exit code
0 - always. The command is read-only and never raises on missing or
malformed input. Missing config, missing AGENTS.md, and parse errors
all render as missing / none / defaults.