ways

The way.yaml

A way is a directory with a way.yaml at its root, plus the files it declares. The manifest is the contract: everything the installers place, everything ways enforces, and everything ways doctor checks is declared here — nothing is inferred from the repo. The normative schemas ship with the package (schemas/ways/v1alpha1/); this page is the working tour.

Anatomy

Every section below is interactive: pick one to see what it declares, which tool places or validates it, and the rule that bites.

Who acts on what

ways is the layer above the installers, not another installer. Each block of the manifest has one owner:

ActsSectionsWhat it does
Open installersskills.sh, steering, hooks.shspec.skills, spec.knowledge, spec.hooksPlace the content, converted to each agent's native format. ways never copies a skill file itself.
waysmetadata, spec.flow, spec.needs, spec.contractsChecks conformance, enforces the gates, runs the bind wizard, resolves contracts — and shows the full plan before anything is enabled.
ways doctorspec.requires, bound slotsValidates the environment honestly — every check answers pass, fail, skipped, unknown or not-inspectable, with a copy-pasteable fix.

Not shown above

  • kind: WayFamily — several related ways under one identity. A family has spec.members[] and shares skills/knowledge/needs/requires across them, but declares no flow of its own. See the family anatomy.
  • kind: RulePack — standalone rules, referenced from a way's spec.knowledge with pack:.
  • spec.templates[] — document templates a way ships for the files its flow generates.
  • spec.defaults.bindings — pre-fills the bind wizard for a slot; it never locks the choice.

Next

On this page