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 (per ADR-005)

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

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 configuration

Gates are team-level config — engineers can override findings but cannot disable gates.

yaml
gates:
  security:
    level: critical
    agents:
      - security
  database:
    level: critical
    agents:
      - dba
FieldDescription
gates.{name}.levelcritical or warning — severity threshold for this gate
gates.{name}.agentsList of agent slugs that trigger this gate

See Quality Gates for the override flow and audit log.

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.

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.