distributed 3.2.0

CQRS/ES framework for Rust using Plain Old Rust Structs — append-only events, replay, snapshots, outbox, service bus, and pluggable infrastructure
Documentation
### What's changed in v3.2.0

* feat(cli): dctl skills init — extract embedded agent skills into .distributed/ (#113) (by @patrickleet)

  * feat(cli): add dctl skills init/list — embedded agent skills

  Materializes agent skills (distributed-usage, distributed-ci,
  distributed-schema) embedded via include_str! into .distributed/skills/,
  with harness wiring adapters: .claude/skills/ copies for Claude Code and
  .agents/skills/ copies + a sentinel-managed AGENTS.md block for Codex,
  Grok, Gemini, Pi, and AGENTS.md-only tools. Pure generation returns
  GeneratedProject; per-file drift semantics (created/unchanged/skipped/
  updated) make re-runs idempotent and never clobber local edits without
  --force.

  Implements [[tasks/cli-skills-init]]

  * fix: clarify skills init upgrade behavior

  Implements [[feat/cli-skills-init]]

  * refactor(cli): wire harness skill locations as symlinks to .distributed

  One on-disk copy: canonical skills stay under <container>/skills/; each
  wired harness location (.claude/skills/<name>, .agents/skills/<name>)
  becomes a relative per-skill symlink to the canonical folder, coexisting
  with user-owned skills. Non-unix platforms fall back to real copies.
  A non-link path at a harness location (stale link or old copy layout)
  is skipped with a warning and converted with --force.

  Implements [[tasks/cli-skills-init]]

  * docs(skills): cover --metrics prometheus and --tracing in distributed-ci

  Now that the observability generators are on main (#100), the CI skill
  documents ServiceMonitor/PrometheusRule gating and the OTLP env values.

  Implements [[tasks/cli-skills-init]]

  * docs(skills): lead distributed-usage with the models-and-handlers thesis

  The main point of using Distributed: the authored surface is models and
  handlers; the framework and dctl generate the deterministic structure
  around them. Emphasized in the skill body and its trigger description.

  Implements [[tasks/cli-skills-init]]

  * docs(skills): prefer the highest-level macro APIs in distributed-usage

  #[sourced] over #[digest]+aggregate!(), the derives over hand plumbing,
  routes! and with_bus(..).run(..) over manual wiring — dropping a level is
  a deliberate choice, not a default.

  Implements [[tasks/cli-skills-init]]


See full diff: [v3.1.0...v3.2.0](https://github.com/hops-ops/distributed/compare/v3.1.0...v3.2.0)