---
description: Inventory, audit, inspect, change, and profile all PRD Plugin configuration from one validated contract
---

Manage the unified PRD Plugin configuration contract instead of searching code
or editing `.prd_plugin/config.json` by hand. Every shipped persistent key is
classified by type, owner, activation point, dependencies, mutability, and
latency. Writes are validated, atomic, and preserve formatting.

The argument is: `$ARGUMENTS` (for example `inventory`, `audit`, `describe
<key>`, `set <key> <value>`, or `profile apply lean --dry-run`).

Run from the repo root (downstream path if it exists, else hub):

- `inventory --json`: all persistent and non-persistent control planes.
- `audit --json`: unknown keys, invalid values, unclassified settings, and
  settings currently using defaults.
- `list [--category hooks] [--latency high] [--mutable yes] [--json]`:
  filtered settings with current/default values.
- `get|describe|effective <key>`: value, full contract, or dependency-aware state.
- `set <key> <value>` and `enable|disable <boolean-key>`: validated atomic writes.
- `profile list|show|diff|apply|save|delete`: manage built-in and custom profiles.
  Always preview an apply with `profile apply <name> --dry-run` when the user has
  not already chosen the exact profile.

Built-ins are `lean`, `balanced`, and `thorough`. They tune local behavior only;
none auto-enable external integrations. `hooks.enabled` is the master runtime
switch, with individual switches for prompt nudge, Stop guard/report/drift/
reflection/archive, commit gate, and skill logging. Reflection question CRUD
remains with `prd_reflections.py` / `prd_reflection_*` because it owns stable
`RFQ-*` allocation.

The same surface is available to agents through `prd_config_list`,
`prd_config_get`, `prd_config_set`, and `prd_config_profile` MCP tools. Report
what changed and its effective dependencies in plain language.

The `fabric.*` namespace holds the evidence-bound model-to-fabric-profile
binding policy: `set-fabric-binding --model <id> --profile <id> --evidence
EV-### [--task-type <t>]` mints a binding (fail-closed without evidence), and
unmapped models resolve to the fail-safe raw default
(`fabric.default_when_unmapped`).

Repo-specific custom settings belong under the top-level `extensions` object
(e.g. `extensions.goal_budget_mode`) — repo-owned, never audited as unknown.
Custom keys inside plugin namespaces (`automation.*`, `hooks.*`, ...) are
flagged by every audit.
