Is It Working?
The protocol is passive. You know it's running when you see narration like this.
There is no dashboard and no daemon. The session agent classifies each task and delegates in the background, narrating as it goes. If you see phrases like these, it's working.
example session narration
Routing this through orchestration-planner first...
Spawning architect to produce a plan...
Handing the architect's plan to engineer...
Spawning engineer to implement the cache layer...
Handing off to skeptic for adversarial review...
Spawning debugger on the failing test...
QA engineer verifying acceptance criteria in the browser...
If you see none of this, the task was classified as a small, reversible Direct action and handled in the main thread without a subagent. That is the protocol working correctly on a cheap task, not a sign that it is off.
Tuning Skeptic overhead: the default profile works for most projects. Add
agentic-engineering-profile: relaxed to a project's
AGENTS.md for faster iteration with less review, or
strict when correctness is paramount. See
Risk Profiles for the full breakdown.
Claude Code turn-shape output style: DinoStack ships an output style (content/output-styles/dinostack.md) that states the conductor's turn-shape rules (status-only, volume, answer relevance, self-narrating candor, editorial addenda) proactively, before a turn is written, rather than flagging them after the fact. It is not applied automatically - select it once per Claude Code install by running /config and choosing DinoStack from the output style list. It is a secondary carrier, not the primary one. Because the installer copies the style but never selects it, an unselected style is injected nowhere - so these rules' always-loaded carrier is the kernel paragraph in content/sections/02-delegation.md, which reaches every harness including Codex, Gemini, Cursor, Kimi and OpenCode, none of which have an output-style concept. ds-doctor WARNs when the style is installed but not selected, and will never write outputStyle to your settings for you. The full normative statement of every rule stays in content/references/conductor-turn-format.md; the status-only rule is additionally enforced by the Stop hook hooks/enforce-turn-shape.py, which blocks a zero-warrant turn outright.
Skill-based entry point auto-triggered for engineering tasks
Every setting you can tune - what it does, your options, and how to set it. Full list of every key: configuration-reference.md.
Just ask your session agent. You can set any of these by describing what you want in plain language - say something like “set the risk profile to relaxed” and the agent applies it for you via /ds-config or directly. No config file editing required.
Risk profile
Controls how aggressively work triggers independent Skeptic review - relaxed means less overhead, strict means broader coverage.
Options: relaxed / default / strict Default: default
Set: install - bash .claude/install.sh --profile=<v>; post-install - profile in ~/.claude/agentic-engineering.json, or agentic-engineering-profile: in AGENTS.md
Just ask “set the risk profile to relaxed”
Activation mode
Whether the methodology runs everywhere by default (opt-out) or stays dormant until a project opts in (opt-in).
Options: opt-out / opt-in Default: opt-out
Set: mode in ~/.claude/agentic-engineering.json, or agentic-engineering: marker in AGENTS.md
Just ask “set activation mode to opt-out”
Auto-merge on green CI
Whether the conductor squash-merges a PR automatically once CI passes and it is approved - also queues auto-merge (un-drafting first if needed) if CI is still pending when the wait times out; a session-start sweep separately rebases any sibling PR whose auto-merge is already queued but stuck behind a moved base, never queuing a new one. Full mechanism: content/references/conventions-detail.md § Auto-merge follow-through.
Options: true / false Default: false
Set: auto_merge_on_ci_green in .agentic/config.json
Just ask “turn on auto-merge when CI is green”
Commit telemetry
Whether per-developer session logs are committed to the PR branch as a separate commit.
Options: true / false Default: true
Set: commit_telemetry in .agentic/config.json
Just ask “turn off commit telemetry”
Capability preflight
Whether a spawn with missing required agent tools warns and proceeds (advisory) or is refused until the dep is available (blocking).
Options: advisory / blocking Default: blocking
Set: capability_preflight_mode in .agentic/config.json
Just ask “set capability preflight to advisory”
Abdication guard
Whether a Stop hook blocks conductor turns that end by asking permission for a non-destructive next step, by announcing a surface-and-proceed default and then not acting on it, or by presenting a co-equal ballot in a prose "## Operator decisions" block.
Options: true / false Default: absent → guard inert
Set: abdication_guard_enabled in .agentic/config.json; disable per-session: export AE_ABDICATION_GUARD_DISABLE=1
Just ask “enable the abdication guard”
Turn-shape guard
Whether a Stop hook checks the conductor's final turn against the fixed-shape/warranted-turn rule. Not uniformly advisory: the structural check on a non-Answer turn's shape can still block the stop, but DS-158/DS-159 walked it back so it no longer blocks legitimate multi-paragraph or plain-prose conductor answers - those findings downgrade to advisory. The phrasing check on Answer-turn prose (opening preamble / closing recap) is retired from this hook and stays prose-only - it is a judgment call, not a matchable shape. As of DS-ANSWERFIRST a second check BLOCKS: a zero-warrant turn (one carrying no decision, stoppage, completion or answer) is blocked outright, unless it is the first turn after a message of yours - a plain instruction counts, not just a question - or the turn is developed prose. The structural check also gained a slot-line bound, so a turn carrying more than three status slot lines, or two sharing a label, is blocked on shape. A forced-yield turn's Waiting: lines stay uncapped.
Options: true / false Default: true (absent key resolves to on)
Set: turn_shape_guard_enabled in .agentic/config.json; disable per-session: export AE_TURN_SHAPE_GUARD_DISABLE=1
Just ask “turn off the turn-shape guard”
Ticket-driven
Whether new work creates a tracker ticket before the first subagent spawns (exemptions apply) - off skips the gate, offer prompts with a proceed default, require hard-blocks until a ticket exists.
Options: off / offer / require Default: offer if a tracker is connected, else off
Set: ticket_driven in .agentic/config.json
Just ask “set ticket-driven to require”
Guard kill-switches
Per-session env vars that disable or narrow individual enforcement hooks or silence activation output.
Vars: AE_SINGULARITY_GUARD_DISABLE / AE_TIER_GUARD_DISABLE / AE_WORKTREE_READ_GUARD_DISABLE / AE_WORKTREE_WRITE_GUARD_DISABLE / AE_WORKTREE_REAP_DISABLE / AE_ABDICATION_GUARD_DISABLE / AE_TURN_SHAPE_GUARD_DISABLE / AE_SHIPPABLE_GUARD_DISABLE / AE_PLANNING_GUARD_DISABLE / AE_SKEPTIC_NEUTRALITY_GUARD_DISABLE / AE_TEAM_ROUTING_DISABLE / AE_TICKET_BATCH_GUARD_DISABLE / AE_NESTED_WORKTREE_GUARD_DISABLE / AE_WORKTREE_ISOLATION_GUARD_DISABLE / AGENTIC_QUIET Default: unset
Set: in-session - export <VAR>=1 before launching
Identity handle
The developer handle used to attribute per-session telemetry logs. Identity can be global, profile-scoped at <active-config-dir>/identity.yml, or project-scoped at .agentic/identity.yml. Effective identity uses six-tier confirmation-first precedence.
Options: any string Default: none (absent file = no attribution; run ds-identity auto to derive from GitHub login)
Set: ds-identity auto / ds-identity init <handle> / ds-identity confirm; add --scope profile|project for an override and --profile-dir <dir> when profile env detection is unavailable.
Tracker config overlay
A project-local, gitignored .agentic/tracker.yml file, merged field-by-field over the AGENTS.md tracker resolution chain - lets a repo whose tracker can't be declared in a public file still resolve TRACKER at runtime.
Options: any allowlisted key Default: absent file = AGENTS.md chain only
Set: ds-tracker init --tracker jira --prefix P --base-url U / ds-tracker resolve --json
File settings (agentic-engineering.json, .agentic/config.json, AGENTS.md) take effect at the next session start. exported env vars apply to the current session. Full reference: configuration-reference.md.
The system uses a skill-based architecture. The global ~/.claude/[AGENTS|CLAUDE].md is minimal - just personal preferences and pointers to available domain skills. The real entry point is the /dinostack skill, which auto-triggers when engineering tasks are detected and loads the rules files plus the methodology kernel (a leaner "minimal corpus" body on supported adapters, with a generated pointer to the full unfiltered text when a deferred rule's trigger fires). This keeps always-loaded context small while giving the methodology to sessions that need it.
~/.claude/[AGENTS|CLAUDE].md always loaded
- Minimal global file - personal preferences and a list of available domain skills.
- Does not contain the full methodology. Keeps always-loaded context small.
- Contains behavioral overrides: complete tasks fully before stopping, no PR footer emoji
- Exempt from the 40-line limit that applies to project root AGENTS.md files
~/.claude/skills/dinostack/SKILL.md always loaded (on engineering tasks)
The /dinostack skill is the actual entry point. It auto-triggers when engineering tasks are detected and loads the three rules files and reference docs via the skill directory. Canonical source in ~/DinoStack/.claude/skills/dinostack/. Content detailed in the Protocol Layer below.
Skill directory layout: ~/DinoStack/.claude/skills/dinostack/METHODOLOGY.md (top-level - delegation, risk classification, task decomposition), ~/DinoStack/.claude/skills/dinostack/rules/ (code-standards.md, conventions.md, module-manifest.md) and ~/DinoStack/.claude/skills/dinostack/references/ (40 .md docs plus 3 example .yml files - skeptic-protocol.md, subagent-protocol.md, agent-team.md, design-goals.md, frontend-discipline.md, qa-gate.md, learnings-capture-instruction.md, and more)
Multi-adapter: The ~/DinoStack repo ships adapters for Claude Code (.claude/), Cursor (.cursor/), Codex CLI (.codex/), Gemini CLI (.gemini/), Kimi Code CLI (.kimi/), OpenCode (.opencode/), Pi coding agent (.pi/), oh-my-pi (.omp/), Hermes (.hermes/), OpenClaw (.openclaw/), and VS Code Copilot (.copilot/) - the same methodology in each tool's native format.
Per-project override: Each project has its own root AGENTS.md (~40 lines) + subdirectory AGENTS.md files for deeper context. AGENTS.md files can override any global rule. The global layer provides the foundation; the project layer customizes it.
Activation modes: the installer writes
~/.claude/agentic-engineering.json with
{ "mode": "opt-out" | "opt-in", "profile": "relaxed" | "default" | "strict", "set_at": "<ISO8601>" }.
opt-out (default) runs the methodology everywhere except projects that declare
agentic-engineering: opt-out in their root
AGENTS.md.
opt-in keeps the methodology dormant until a project declares
agentic-engineering: opt-in. The per-project marker is a single case-insensitive line, matched as a whole line with optional leading
- . A short Activation preflight at the top of every skill and
/-command reads the config plus the project marker; if the combination says inactive, the skill no-ops silently and falls back to default tool behavior for that session. Missing config or missing
AGENTS.md both resolve to "mode=opt-out, marker=none" - the methodology proceeds, preserving behavior for users who installed before this feature existed. The
profile field controls Skeptic overhead - see
Risk Profiles below.
First-activation notice (Step 5): on first activation in a TTY session, the preflight prints a one-line notice naming the resolved
mode,
marker, and
profile, and points users at
/ds-status and
/ds-disable. The notice is gated on a race-safe per-project sentinel at
.agentic/.activated - exactly one of N concurrent subagents wins the create-only write and prints; losers stay silent. The TTY/QUIET gate (
AGENTIC_QUIET=1 or
not sys.stdout.isatty()) suppresses BOTH the notice and the sentinel write in CI, headless, and eval-harness contexts. Deleting the sentinel re-arms the notice only - it does not change activation state.
AGENTS.md - the cross-tool standard: AGENTS.md is the single source of project instructions. It is the cross-tool convention supported natively by OpenAI Codex CLI (
OpenAI AGENTS.md guide,
agents.md) and importable by Claude Code via its
@file import syntax (
Anthropic import-syntax docs).
Claude Code users: create a
CLAUDE.md at the repo root containing two import lines -
@AGENTS.md and
@MEMORY.md - and Claude Code will import both
AGENTS.md and
MEMORY.md transparently.
Codex CLI users: Codex reads
AGENTS.md natively with no extra setup.
Result: one content source drives all adapters. No duplication.
Specialized subagents spawned by the conductor
Bounded Skeptic review
adversarial, but it terminates
Adversarial review that converges instead of looping forever
Every round spawns a brand-new Skeptic so it reviews against the original brief, passed verbatim, with no anchoring to the Worker's justifications. Findings are triaged Critical (blocking), Major (blocking without deferral), or Minor (non-blocking cleanup). A strict three-pass cap prevents infinite loops, and re-raising a Critical after a claimed fix is a convergence failure that escalates immediately. Hitting the cap or failing to converge hands a structured stall report to the human operator for judgment.
Planning and Analysis Agents
- product-discovery - facilitated discovery before any architecture work. Reframes a build request to the problem behind it, identifies personas (including the reluctant counterparty), runs an attributed market scan, and stages a proposed
vision.md + requirements.md to docs/overview/_proposed/. Never writes the operator-owned canonical intent layer - the operator promotes the drafts. Runs before the architect: discovery decides WHAT and WHY, the architect decides HOW.
- investigator - traces data flow, maps blast radius, and explores unfamiliar areas. Used when you need to understand code before deciding how to change it. Returns an investigation brief for the conductor to hand to architect or engineer.
- architect - reads the codebase and produces a structured technical plan before any code is written. Identifies patterns, constraints, and evaluates approaches. Its output MUST be Skeptic-reviewed before any downstream work.
- orchestration-planner - given a complex goal, maps which agents to spawn, in what order, with what handoffs. Returns a structured execution plan the conductor follows directly. Used when the right agent combination is not obvious. Checks for
.agentic/tracking.md (resolver: .agentic/ preferred, legacy .claude/ fallback) in the project root and follows its instructions when present.
Diagnosis and Security Agents
- debugger - given a failing test or stack trace, forms and tests hypotheses to find the root cause. Returns a diagnosis plus a fix brief. Does NOT implement the fix - the engineer does that. If confidence is Low, escalates to human rather than guessing.
- security-auditor - applies OWASP Top 10 and CWE-category analysis. Assumes a capable attacker. Produces a structured findings report with severity ratings, specific code locations, and remediation guidance. Used in addition to (not instead of) the Skeptic.
Implementation Agent
- engineer - the primary agent that writes files. Reads codebase conventions, implements the change, runs quality gates (lint, typecheck, test), and returns a clear summary. Writes module manifests on non-trivial files and adds regression tests when fixing Critical/Major findings. Runs a pre-submit self-check mirroring four of the Skeptic's mechanical checks - new-test CI wiring, cross-file reference consistency after a rename, removal, or reshape, async fire-and-forget error handling, and per-consumer impact table row verification - before the final quality-gate re-run, so these findings are fixed before review rather than caught by it. Receives the architect's plan, file paths, acceptance criteria, session context, and the session's
SESSION_KEY (the learnings-shard key, supplied on every spawn - a brief that omits it makes the Worker skip shard capture silently). Can return NEEDS_CONTEXT, BLOCKED, or DONE_WITH_CONCERNS statuses.
Review Agent
- skeptic - adversarial reviewer. Always a fresh invocation (never continued from a prior round). Receives an adversarial brief and the Worker's output. Classifies findings as Critical/Major/Minor and provides structured sign-off. Also checks for DRY violations, duplication, missed abstractions, and unnecessary abstraction (a helper or public surface serving only one call site or a hypothetical need). Checks module manifests on non-trivial files with tiered enforcement (missing = Minor, stale = Major, stale-on-correctness/security path = Critical) and verifies regression tests were added for any Critical/Major fixes. Actively verifies cross-file identifier consistency after renames or removals (config keys, exported symbols, env vars), flags fire-and-forget async calls with no attached error handler, and verifies exclusion claims ("already shipped in X", "out of scope") against the tree or tracker the same way it verifies in-scope claims. On a plan review, checks first whether the plan's own simplest viable alternative would satisfy the acceptance criteria before probing correctness. The cross-cutting review role - its specialty is adversarial review itself, applied across every flow rather than producing a forward artifact.
Supplementary Agents
- adr-drift-detector - audits codebase compliance against Architecture Decision Records
- adr-generator - creates comprehensive ADRs with structured formatting
- qa-engineer - verifies changes in a real browser, runs test suites, validates against acceptance criteria. For UI-visible changes, spawned IN PARALLEL with the Skeptic (single message, both background) - sign-off requires both to pass.
- perf-analyst - profiles CPU, memory, and latency hotspots; produces a measured findings brief for the engineer. Does not implement fixes.
- release-orchestrator - sequences the full release from pre-flight gates through version bump, tag, deploy, and post-deploy verification. Enforces gates; refuses to proceed when any check fails.
- dependency-auditor - supply-chain review: CVE scanning, license compliance, and lockfile analysis across all detected ecosystems. Read-only; produces a findings brief for the engineer.
- learning-extractor - per-ticket learning extraction at Phase 6 clean exit. Reads the resolved
findings_log and writes structured fix-pattern entries to .agentic/learnings.md. Tier 1 leaf agent; soft-fail only.
- goal-condition-evaluator - cheap Tier-1 stop-condition check for open-goal loops; gates continuation only, never correctness/safety.
- wrap-ticket - per-ticket learnings capture at Phase 11b (PR open). Reads the ticket's findings, diff, and conversation summary; appends conductor-behavioral pointer entries to MEMORY.md and durable learnings to decisions.md and
.agentic/_wrap.md (Recent Focus only). Constrained automated subset of /ds-wrap; soft-fail only.
- learnings-agent - session-scoped background learnings capture. Spawned when the first learning-worthy event occurs in a session. Receives learning events as messages and writes structured entries to
.agentic/learnings.md immediately, with optional MEMORY.md pointer append for conductor-behavioral facts. Tier 1 leaf agent; soft-fail only.
Key constraint: Only the main session agent (conductor) spawns agents. No agent spawns other agents.
Isolation: Agents run in background by default. Can use isolation: "worktree" for git-isolated work.
Most agents are read-only - 11 of 18 write files: adr-generator, engineer, learning-extractor, learnings-agent, product-discovery, release-orchestrator, wrap-ticket, and (Bash-heredoc only, no Write/Edit grant, scoped to their own .agentic/audit-reports/ report file or, for qa-engineer, /tmp/qa-reports/ - deliberately /tmp/, not .agentic/, since qa-engineer always runs isolation: "worktree") adr-drift-detector, dependency-auditor, perf-analyst, and qa-engineer. Gold left border = writes files.
Per-project state that survives across sessions
The self-improving loop
knowledge compounds
The system gets harder to fool over time
Two phases keep knowledge alive. Real-time capture: a learnings-agent records error-fix cycles and resolved findings, and a learning-extractor distills fix patterns into a central learnings file, while the wrap-ticket agent enriches the project's intent layer from session summaries and diffs. Knowledge promotion: durable facts and conventions are persisted into the core memory triad - MEMORY.md (facts), AGENTS.md (conventions), and context.md (state) - so future sessions avoid repeating past mistakes instead of restarting cold.
Persistence Hierarchy
<cwd>/MEMORY.md always loaded - canonical durable facts about the project, committed to the repo and loaded at session start via the @MEMORY.md import in the project root CLAUDE.md. Stable architecture, key paths, and preferences with rationale.
.agentic/context.md on demand - primary session-continuity store, read at session start. Derived, not written directly: it is recomposed every turn from .agentic/_wrap.md (the curated region, written by /ds-wrap and supporting the rolling-window merge across 10 sessions) plus one per-session shard in .agentic/context.d/ (the activity region, written by the Stop hook). Session-keyed shards mean concurrent sessions cannot clobber each other, and because the rollup is derivable a lost update self-heals on the next turn instead of losing data. Legacy fallback: ~/.claude/projects/[hash]/context.md, used only when .agentic/context.md is absent.
- memory/*.md on demand - individual memory files with frontmatter (name, description, type). Read on-demand when relevant to the current task.
- Tasks - in-session progress tracking. Not persisted across sessions.
- Plans - in-session alignment with user. Not persisted.
Telemetry. The Stop hook and the spawn-telemetry hooks (
hooks/pre-tool-use-spawn-emit.js,
hooks/subagent-stop-spawn-emit.js) append telemetry events to
.agentic/events.jsonl - including a deterministic
spawn_complete on subagent completion via the SubagentStop hook and the per-developer session-log.
events-log-telemetry.md is current on the details.
Memory Types
- user - role, goals, preferences, knowledge level. Helps tailor collaboration (senior engineer vs first-time coder).
- feedback - corrections and confirmations. "Don't mock the database" or "yes, the bundled PR was right." Includes Why and How to apply.
- project - ongoing work, goals, deadlines, decisions. "Merge freeze begins 2026-03-05." Includes Why and How to apply.
- reference - pointers to external systems. "Pipeline bugs tracked in Linear project INGEST." Where to look, not what's there.
What NOT to save in memory
- Code patterns, architecture, file paths (derive from reading the code)
- Git history, recent changes (use
git log / git blame)
- Debugging solutions (the fix is in the code; the commit message has context)
- Anything already in AGENTS.md files
- Ephemeral task details or current conversation context
The Intent Layer. Orthogonal to the per-session / cross-session / project tiers above is the question of which artifacts capture what the project means to be. AGENTS.md, MEMORY.md, decisions.md, .agentic/qa.md, module manifest headers, and the optional glossary.md together form the project's intent layer - the source of truth for architecture, conventions, domain terms, and review obligations. Drift between code and intent is intent debt: a separate failure mode from technical debt (in the code) and cognitive debt (in the people), and the one most likely to silently degrade an agent-driven workflow. The Skeptic applies tiered enforcement to manifests (missing = Minor, stale = Major, stale-on-correctness/security path = Critical) and flags synonym-of-existing-term drift as Minor, so the layer self-heals as work passes through review without blocking sign-off on cosmetic gaps.
glossary.md - Ubiquitous Language (optional). A flat file at the project root listing the domain terms the project actually uses. Agents prefer existing terms over inventing synonyms; the Skeptic flags synonym-of-existing-term as a Minor finding. Borrowed from DDD's Ubiquitous Language idea - one shared vocabulary across code, docs, and conversation keeps the intent layer coherent across sessions.
⚠
Project Directory Is The Project Identity
How cross-session continuity actually works
Claude Code derives a project's persistence directory from the current working directory it was launched in. Session history (conversation transcripts) lives under ~/.claude/projects/[slug-of-cwd]/. AGENTS.md, MEMORY.md, .agentic/context.md (a derived rollup, not a direct write), and /ds-wrap outputs (.agentic/_wrap.md, etc.) live directly in the project repo itself, under <cwd>/ - keyed just as directly to the working directory. The only thing you need to do to return to the same persistent state is start claude from the same directory.
The command:
terminal
$ cd ~/projects/myproject
$ claude
Optional: a shell alias to jump into the project and launch:
~/.zshrc
alias claude-myproject='cd ~/projects/myproject && claude -n myproject'
- →context.md stacks - the Stop hook writes each session's shard under the same
<cwd>/.agentic/context.d/, recomposed into <cwd>/.agentic/context.md, keyed directly to the project directory rather than to Claude Code's session-history slug. /ds-wrap's rolling-window merge works because that directory is stable as long as you launch from the same directory.
- →MEMORY.md compounds - same cwd means the same project directory means the same memory files. Stable facts accumulate in one place rather than starting fresh each time.
- →The harness improves itself - this is the
/ds-init-project -> work -> /ds-wrap feedback loop. Each session reads richer AGENTS.md files and memory than the last because every session starts from the same directory and therefore loads the same files.
- →Multi-project coordination - different projects live under different cwds, so each gets cleanly separated persistence automatically. Running
/ds-wrap on one project does not touch the other's state.
Naming and resuming are ergonomic, not load-bearing.
Claude Code's -n, --name flag attaches a display label to the session - useful in the /resume picker and in your terminal title, but it has no effect on which persistence directory is read or written. Two runs of claude -n myproject in the same directory create two independent sessions that share the same project persistence. The label is a finder, not an identifier.
-r, --resume is similarly narrow: it replays a specific prior session's conversation history. That is valuable when you got interrupted mid-task and the agent had working state that wasn't yet captured to memory, but it is not how cross-session continuity works under the protocol. The protocol prefers fresh sessions: one focused goal per session, /ds-wrap at the end to commit learnings to memory, and the next session starts clean and reads those learnings via the normal cwd-based load. The Skeptic agent is the canonical example - it is explicitly never resumed, because a fresh context is sharper than a replayed one.
The thing that silently breaks continuity is not forgetting to name or resume a session - it is launching claude from the wrong directory. That points at a different project slug, which reads and writes a different, empty persistence directory. The fix is muscle memory: always cd into the project before starting Claude Code. An alias that bundles the cd and the launch is the cleanest way to make that automatic.
Tune Skeptic overhead to match your workflow
Profiles let you dial how aggressively the system triggers Skeptic review. Set once globally and override per project. Three levels: relaxed for rapid iteration with less overhead, default for balanced day-to-day work, and strict for when correctness is paramount.
relaxed
For rapid iteration on well-understood UI, local bug fixes, and non-binding advice.
- Ephemeral chat advice: Low only when chat-only, write-free, non-binding, and not downstream criteria
- Single-file locally-scoped behavioral edits: Low (no Skeptic)
- Multi-file pure-UI-only changes: Low (no Skeptic)
- Any other Elevated signal wins; default and strict are unchanged
default
The starting point for all projects. Right for most day-to-day work.
- Single-file locally-scoped behavioral edits: Low (no Skeptic)
- All other legacy Elevated signals remain Elevated
- Multi-file UI-only changes: Elevated (Skeptic runs)
strict
For when correctness is paramount - payments, auth, shared infrastructure.
- UI-only copy changes: Elevated (Skeptic runs)
- File renaming: Elevated (Skeptic runs)
- Targeted wording fixes to already-reviewed content: Elevated (Skeptic runs)
- Diagnostic-only logging changes: Low with self-check (not unconditionally direct)
- Documentation-only file creation (new .md files that are pure lists/notes): Low with self-check (not unconditionally direct)
Token spend: The Elevated classification is the dominant cost driver. Each Elevated task fans out to a Worker + Skeptic - and often an architect, orchestration-planner, and QA engineer - each re-reading full context. Moving from strict or default toward relaxed reclassifies more small work as Low (conductor direct action, no spawns), removing that pipeline overhead entirely. Accept the tradeoff: relaxed trades independent review for speed; keep default or strict wherever a mistake is hard to reverse.
Ephemeral means non-binding: discussion becomes binding when promoted to a ticket, Brief, Plan, ADR, requirements or decision artifact, acceptance criteria, or implementation request. Those paths retain normal Elevated review in every profile.
how to set your profile
# At install time
bash .claude/install.sh --profile=relaxed
# Edit ~/.claude/agentic-engineering.json directly
{ "mode": "opt-out", "profile": "strict" }
# Per-project override in root AGENTS.md
agentic-engineering-profile: strict
For a complete list of every setting and its default, see configuration-reference.md.
Other Adapters
Translating the methodology to Codex, Cursor, Gemini, Kimi, and OpenCode
The methodology is portable. The doc above uses Claude Code paths and slash commands. Other harnesses share the same delegation model, classification rules, and review protocol - but read from different paths and have different command and hook mechanics. Use this appendix to translate.
Codex CLI
Native AGENTS.md support - TOML agent format - hook system requires opt-in flag
Recommended trusted-work permissions are documented in codex-permissions.md.
| Surface | Codex equivalent |
| Project instructions | AGENTS.md at project root - read natively, no shim needed |
| Global instructions | ~/.codex/AGENTS.md |
| Native skills | Codex installs exactly four native Codex skills: dinostack, brief, wrap, and implement-ticket. They install under ~/.agents/skills/. |
| Workflow invocation | Invoke the native workflows with $brief, $wrap, and $implement-ticket. Bare /ds-brief, /ds-wrap, and /ds-implement-ticket are not Codex invocation syntax. |
| Generation | The canonical workflow sources are content/commands/ds-brief.md, content/commands/ds-wrap.md, and content/commands/ds-implement-ticket.md. .codex/build.sh runs scripts/codex-skills.py to generate each SKILL.md and RESOURCE-MAP.json, validate relative symlink/resource-map closure, and synchronize the exact allowlist. The read-only check rejects drift. |
| Agents | ~/.codex/agents/*.toml - TOML format (different from Claude Code's prompt-based spawn) |
| Hooks | ~/.codex/hooks.json - requires codex_hooks = true in user config to enable the installer-managed hooks |
| Stop hook / context save | stop-context-codex.js writes continuity to ~/.codex/projects/[hash]/context.md. Project-local <cwd>/.agentic/context.md adoption belongs to the separate context-writer-migration unit and is not part of this generator unit. |
| Activation config | Default: $HOME/.claude/agentic-engineering.json. For a redirected Codex config directory, precedence is AGENTIC_CONFIG_DIR > CODEX_HOME > default, without validating, creating, or mutating $HOME/.claude. |
| Tier resolution | ~/.agentic/tier-map.yml - no built-in Haiku/Sonnet/Opus enum; models resolved from the map |
What's different: Only $brief, $wrap, and $implement-ticket are registered native workflow skills. Other DinoStack command documents can be loaded by the repository dispatcher when the methodology requires them, but they are not bare slash commands. The hook system is off by default - set codex_hooks = true in user config before expecting installer-managed Stop-hook context saves.
Cursor
Rule-file based setup - slash commands work - no native agent system
| Surface | Cursor equivalent |
| Project instructions | AGENTS.md (manual) or .cursor/rules/*.mdc files |
| Global instructions | ~/.cursor/rules/*.mdc with alwaysApply: true in frontmatter - no single global file |
| Skill location | No skill system. Rules are .mdc files in ~/.cursor/rules/ |
| Slash commands | ~/.cursor/commands/*.md - slash commands work natively in Cursor |
| Agents | Not available - Cursor has no native sub-agent system |
| Hooks | .cursor/hooks.json - beforeSubmitPrompt event for the risk-reminder equivalent |
| Stop hook / context save | Stop hook writes <cwd>/.agentic/context.md via the Claude Code Stop event - not surfaced in Cursor sessions. Rely on manual context.md maintenance. |
| Activation config | Shared: ~/.claude/agentic-engineering.json |
| Tier resolution | Inherits the session model - no tier-map lookup |
What's different: No sub-agent spawn primitive. The conductor pattern works as a prompt strategy, but Cursor cannot fan out parallel Workers natively. Session context saves require manual maintenance - the Stop hook does not fire in a Cursor session.
Gemini CLI
GEMINI.md project file - TOML slash commands - agent files via @name mention
| Surface | Gemini equivalent |
| Project instructions | GEMINI.md at project root - a small stub pointing at the dinostack skill (DS-184) |
| Global instructions | ~/.gemini/GEMINI.md |
| Skill location | .gemini/skills/dinostack/SKILL.md (project) or ~/.gemini/skills/dinostack/SKILL.md (global) - trigger-loaded via activate_skill, denied by default on non-interactive runs |
| Slash commands | ~/.gemini/commands/*.toml - first-class TOML slash commands; reload with /commands reload |
| Agents | ~/.gemini/agents/*.md with YAML frontmatter (kind: local) - invoked via @agent-name |
| Hooks | ~/.gemini/settings.json hooks key - BeforeAgent and SessionEnd events |
| Stop hook / context save | stop-context-gemini.js writes to ~/.gemini/projects/[hash]/context.md - fires on /exit only |
| Activation config | Shared: ~/.claude/agentic-engineering.json |
| Tier resolution | ~/.agentic/tier-map.yml - same as Codex, no built-in tier enum |
What's different: Context save only fires on /exit - force-closing the terminal loses the session context write. Commands use TOML format instead of Markdown. Agent mentions via @agent-name are the invocation primitive (no Agent tool call).
Kimi Code CLI
Project instructions in .kimi/ directory - skill invocation via natural language - hooks fully manual
| Surface | Kimi equivalent |
| Project instructions | .kimi/AGENTS.md inside the project's .kimi/ directory (loaded by Kimi via $KIMI_AGENTS_MD) |
| Global instructions | No global AGENTS.md equivalent. Global footprint is the skill at ~/.kimi/skills/dinostack/SKILL.md (installed via install.sh) |
| Skill location | ~/.kimi/skills/dinostack/SKILL.md - invoke via /skill:dinostack or natural language |
| Slash commands | No custom slash commands. Use /skill:dinostack <name> or natural language ("run wrap") |
| Agents | Built-in types only: coder, explore, plan. Agent files serve as reference prompts mapped to those types. |
| Hooks | ~/.kimi/config.toml [[hooks]] blocks - fully manual; the installer does not write this |
| Stop hook / context save | Manual - script path must be set by the user in the hooks config |
| Activation config | Shared: ~/.claude/agentic-engineering.json |
| Tier resolution | Inherits the built-in sub-agent type; optional ~/.agentic/role-models.yml can map roles and antagonist reviewers to concrete model strings |
What's different: No custom slash commands. No installer-written hooks - you must add [[hooks]] blocks manually to ~/.kimi/config.toml and configure the Stop hook script path yourself. Session context saves will not work until this is set up.
OpenCode
Native AGENTS.md support - per-adapter activation config - no hook system at all
| Surface | OpenCode equivalent |
| Project instructions | AGENTS.md at project root - read natively |
| Global instructions | ~/.config/opencode/AGENTS.md and/or instructions field in opencode.json |
| Skill location | .opencode/skills/dinostack/SKILL.md (project-local) or ~/.config/opencode/skills/ (global) |
| Slash commands | ~/.config/opencode/commands/*.md - slash commands work natively |
| Agents | ~/.config/opencode/agents/*.md with mode: subagent and permission: frontmatter |
| Hooks | Not available - OpenCode has no hook system |
| Stop hook / context save | Not available - no session context save. Context must be managed manually. |
| Activation config | Per-adapter path: ~/.config/opencode/agentic-engineering.json (the only adapter with a dedicated config path) |
| Permissions | permission: per-agent in agent frontmatter; instructions: in opencode.json for global rules |
What's different: No hook system. The risk-reminder that fires on UserPromptSubmit in Claude Code is instead embedded in the skill content - there is no event-driven trigger. Session context is never auto-saved; manual context.md maintenance is required. Activation config lives at a per-adapter path rather than the shared ~/.claude/ location.