Skip to content

/edikt:config

View, query, and modify project configuration. Provides discovery of all 34 configuration keys, validation on writes, and natural-language config changes.

Usage

bash
/edikt:config                              # show all config
/edikt:config get artifacts.versions.openapi  # show one key
/edikt:config set features.quality-gates false # change a value

Show all config

Running with no arguments displays every section with current values and defaults:

text
edikt config — my-service

 VERSION
 ──────
 edikt_version: 0.3.1

 PATHS
 ─────
 decisions:    docs/architecture/decisions   (default)
 invariants:   docs/architecture/invariants  (default)
 guidelines:   docs/guidelines               (default)
 ...

 FEATURES
 ────────
 auto-format:       true   (default)
 session-summary:   true   (default)
 quality-gates:     false  ← changed from default

 ARTIFACTS
 ─────────
 database.default_type:   sql
 versions.openapi:        3.0.0  ← changed from default (3.1.0)
 ...

Keys that differ from their default are highlighted.

Get a specific key

bash
/edikt:config get artifacts.versions.openapi
text
artifacts.versions.openapi: "3.0.0"

  Default:     3.1.0
  Valid values: semver string (e.g., 3.0.0, 3.1.0)
  Used by:     /edikt:sdlc:artifacts (contracts/api.yaml)
  Description: OpenAPI spec version for generated API contracts

Set a value

bash
/edikt:config set features.quality-gates false
text
✅ features.quality-gates: true → false

Invalid values are rejected with an explanation:

text
Invalid value "mongo" for artifacts.database.default_type.
Valid values: sql, document, key-value, mixed, auto

Protected keys like edikt_version cannot be set directly — they're managed by /edikt:init and /edikt:upgrade.

Full config reference

paths.* — Directory layout

All paths are relative to the repo root.

KeyDefaultDescription
paths.decisionsdocs/architecture/decisionsADR directory
paths.invariantsdocs/architecture/invariantsInvariant Records directory
paths.guidelinesdocs/guidelinesTeam guidelines directory
paths.plansdocs/plansExecution plans directory
paths.specsdocs/product/specsTechnical specifications directory
paths.prdsdocs/product/prdsPRD directory
paths.brainstormsdocs/brainstormsBrainstorm artifacts (gitignored by default)
paths.reportsdocs/reportsDrift reports, audits (gitignored by default)
paths.project-contextdocs/project-context.mdProject identity file — read by /edikt:context
paths.templates.edikt/templatesTemplate override directory

features.* — Optional behaviors

All default to true. The governance core (rules, compile, drift) is always on.

KeyDefaultDescription
features.auto-formattruePostToolUse hook — format files after every Write/Edit
features.session-summarytrueSessionStart hook — show git changes since last session
features.signal-detectiontrueStop hook — detect uncaptured ADR/invariant candidates
features.plan-injectiontrueUserPromptSubmit hook — inject active plan phase into every prompt
features.quality-gatestrueSubagentStop hook — block on critical findings from gate agents
features.evidence-gatewarnPreToolUse verify-gate hook — completion-claim gate posture. Valid values: block, warn, educate, disabled

evaluator.* — Evaluator configuration

Controls pre-flight validation and phase-end evaluation in the plan command.

KeyDefaultValid valuesDescription
evaluator.preflighttruetrue, falsePre-flight criteria validation — classifies criteria as TESTABLE/VAGUE/SUBJECTIVE/BLOCKED before phases start
evaluator.phase-endtruetrue, falsePhase-end evaluation — verifies completed work meets acceptance criteria
evaluator.modeheadlessheadless, subagentheadless runs a separate claude -p (zero shared context, works in CI). subagent runs within the session (faster, partial isolation).
evaluator.max-attempts5positive integerMax phase retries before marking phase as stuck with human decision prompt
evaluator.modelsonnetsonnet, opus, haikuModel for headless evaluator invocation

See Evaluator for the headless vs subagent comparison table.

artifacts.* — Artifact generation

Controls how /edikt:sdlc:artifacts generates design blueprints.

KeyDefaultValid valuesDescription
artifacts.database.default_typeautosql, document, key-value, mixed, autoDatabase type for data model generation. auto detects from spec content each time.
artifacts.sql.migrations.tool~ (null)golang-migrate, flyway, alembic, django, rails, prisma, liquibase, drizzle, knex, ecto, diesel, ef-core, raw-sql, ~SQL migration tool. ~ produces generic UP/DOWN/BACKFILL/RISK format. Set by /edikt:init from code signals.
artifacts.fixtures.formatyamlyaml, json, sqlFixture format. YAML is portable — transform to your stack at implementation time.
artifacts.versions.openapi3.1.0semver stringOpenAPI spec version for contracts/api.yaml
artifacts.versions.asyncapi3.0.0semver stringAsyncAPI spec version for contracts/events.yaml
artifacts.versions.json_schemahttps://json-schema.org/draft/2020-12/schemaJSON Schema URIJSON Schema version for data-model.schema.yaml (document-mongo)

sdlc.* — SDLC settings

KeyDefaultValid valuesDescription
sdlc.commit-conventionconventionalconventional, noneCommit message convention used in plans and session summaries
sdlc.pr-templatefalsetrue, falseWhether a PR template was detected/installed

agents.* — Agent customization

KeyDefaultDescription
agents.custom[]List of agent slugs to skip on /edikt:upgrade. Use for agents you've customized or created yourself.

gates.* — Quality gate severity per agent

Gates are team-level config — engineers can override findings but cannot disable gates. As of v0.6.0, gate thresholds are configured per agent domain. The SubagentStop hook reads evaluator_output.agent from the structured verdict and resolves the threshold from this section.

yaml
gates:
  security:    warning    # block on warning and above
  dba:         critical
  sre:         warning
  architect:   warning
  performance: critical
  api:         warning
  default:     critical   # fallback for any unlisted agent
KeyDefaultValid valuesDescription
gates.securitywarningcritical, warning, infoThreshold for the security agent. warning blocks on warning + critical.
gates.dbacriticalcritical, warning, infoThreshold for the dba agent.
gates.srewarningcritical, warning, infoThreshold for the sre agent.
gates.architectwarningcritical, warning, infoThreshold for the architect agent.
gates.performancecriticalcritical, warning, infoThreshold for the performance agent.
gates.apiwarningcritical, warning, infoThreshold for the api agent.
gates.defaultcriticalcritical, warning, infoFallback for agents not individually configured.

Severity ordering: critical (3) > warning (2) > info (1). The gate fires when finding.severity_level >= threshold_level.

EDIKT_GATE_SEVERITY_THRESHOLD overrides all gates per-invocation — useful for one-off "tighten everything" or "loosen everything" runs without editing the config.

See Configuring Evaluator Gates for the worked example and Quality Gates for the override flow and audit log.

ids.* — Artifact-ID patterns

Override for projects with custom or component-coded artifact-ID schemes.

KeyDefaultValid valuesUsed byDescription
ids.fr_pattern^FR-\d{3,}$any valid regexprd, spec, spec-reviewFunctional requirement ID pattern. Component-coded IDs like FR-PR-001 require e.g. ^FR-[A-Z]+-\d{3,}$
ids.sr_pattern^SR-\d{3,}$any valid regexspecSpec requirement ID pattern. Override alongside ids.fr_pattern when the project uses a component-coded scheme
ids.ac_pattern^AC-\d{3,}-\d+$any valid regexprd, specAcceptance criterion ID pattern. The middle segment mirrors the FR number, so a custom ids.fr_pattern usually needs a matching AC pattern (e.g. ^AC-[A-Z]+-\d{3,}-\d+$)

defaults.* — Defaults for plan and execution

KeyDefaultValid valuesDescription
defaults.plan_modelclaude-sonnet-4-6model identifierPlan-level default model. Plans inherit this when no model: is set in plan frontmatter; per-phase model: overrides it.

hooks.* — Git hook control

KeyDefaultValid valuesDescription
hooks.pre-push-securitytruetrue, falsePre-push secret scanning. Disable with false or one-time skip with EDIKT_SECURITY_SKIP=1.
hooks.injection.bounce_budget8integer ≥ 1 (a value below 1 is refused — 0 would mean enforcement never blocks)Caps how many times one directive set may bounce (deny) a write within a session. Once spent, a write that would otherwise be denied proceeds instead, delivered as advisory additionalContext naming the still-applicable directives rather than a deny — MUST-grade enforcement is not unconditional past this budget for the rest of the session.

headless.* — CI/headless mode

For running edikt in CI pipelines without interactive prompts.

yaml
headless:
  answers:
    "proceed with compilation": "yes"
    "which packs to update": "all"
    "update anyway": "no"
KeyDescription
headless.answersMap of prompt substrings to auto-responses. When EDIKT_HEADLESS=1 is set, matching prompts are answered automatically.

rules — Stack-specific rule toggles

Populated by /edikt:init from detected stack. Empty for markdown-only projects.

yaml
rules:
  go: true
  chi: true
  security: true
  testing: true
  code-quality: true

Each key corresponds to a rule pack in templates/rules/. Set to false to disable a pack without deleting it.

stack — Detected tech stack

Auto-populated by /edikt:init. Read-only — describes what was detected.

yaml
stack:
  languages: [go, python]
  frameworks: [chi, django]
  databases: [postgres, redis]

Environment variable overrides

These override config values at runtime without changing the file.

VariableOverridesDescription
EDIKT_HEADLESS=1headless.answersAuto-answer prompts in CI
EDIKT_FORMAT_SKIP=1features.auto-formatSkip auto-formatting (one-time)
EDIKT_SECURITY_SKIP=1hooks.pre-push-securitySkip pre-push security scan (one-time)
EDIKT_INVARIANT_SKIP=1Skip invariant check on push (one-time)
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1Strip credentials from subprocess environments

What's next

Released under the Elastic License 2.0. Free to use, not for resale.