Skip to content
ODS

Changelog

What changed in the ods command — so you know what to type, what to fix in your files, and when to update.

v0.0.29LatestAugust 21, 2026

ods.toml is sole workspace marker; policy keys forbidden in document frontmatter

The CLI now strictly enforces root ods.toml as the single workspace boundary, rejects frontmatter policy keys (PLACE-003), and validates profiles against exact canonical section headings.

  • Single workspace marker (WS-001): ods.toml with a spec key is the only valid workspace boundary. Root index.md with ods: 0.1 is no longer a workspace marker. CLI commands and ods lint emit WS-001 error when ods.toml is missing.
  • Workspace policy key placement (PLACE-003): Document frontmatter must not contain workspace policy keys (spec, ignore, packs, specs, custom_profiles). ods lint enforces PLACE-003 errors for policy keys in Markdown files; move policy configuration to ods.toml.
  • Canonical section titles (PROF-002): Heading validation (PROF-002) requires exact canonical section titles for profiles (e.g. ## Alternatives, ## Non-Scope). Heading aliases, pipe synonyms, and [aliases] tables in ods.toml have been removed.
  • Automated policy migration: ods fmt --migrate automatically strips policy keys from document frontmatter and hoists them into root ods.toml.
v0.0.28August 17, 2026

What you can do with ods today

This is the current CLI. Install or run ods update, then use the commands below. Ask ods --help or ods help <command> for examples.

  • Start a workspace: Run ods init in a folder of Markdown files. Keep the ods.toml it writes at the repo root. ods setup can add git hooks or editor LSP config.
  • Check your docs: ods lint reports broken links and missing profile keys. ods doctor checks the workspace. ods stats shows health, not a 0–3 “level”.
  • Find a page: ods overview is a short snapshot of the workspace. ods find --tag, --status, --profile, or --key status=draft searches frontmatter. ods read <id> --section Overview prints one heading.
  • Give AI a small reading list: ods context <id> follows depends and related links instead of dumping the whole repo. Add --explain if you want to see why a file was included.
  • Rename without breaking links: ods mv old.md new.md rewrites graph links and Markdown references. ods fmt --migrate cleans frontmatter and does not delete unknown keys.
  • Tags and status: Put tags next to title (not under ods:). ods tag list / ods tag show inspect them. ods status path.md stable sets lifecycle; ods archive is the same as status archived.
  • Custom shapes: ods profile init --register adds a profile under .ods/profiles/. ods profile show <name> prints required sections and keys.
  • Optional extras: Google OKF: ods lint --okf. Agent skills: ods init --skills / ods lint --skills. Share a filtered copy: ods share --out DIR.
  • Help is safe: ods fmt --help, ods watch --help, and ods serve --help only print usage. They do not format files or start a service.
v0.0.26August 17, 2026

Section aliases are gone

If lint now complains about headings, the titles in the file must match the profile. There is no alias table anymore.

  • What to do: Open the profile and copy its H2/H3 titles. A guide file needs Overview, Prerequisites, Steps, and Troubleshooting.
  • Do not add back: ods aliases and [aliases] in ods.toml were removed.
v0.0.25August 17, 2026

Custom profiles can require keys; --level is gone

A profile can list required, optional, and forbidden frontmatter keys. Old compliance flags no longer exist.

  • Custom profiles: Set required_keys, optional_keys, and forbidden_keys under ods.custom_profile (see ods profile show).
  • Scripts: Remove --level and --mode from any script. A workspace is either compliant or not.
v0.0.23August 14, 2026

Required profile keys are actually checked

If a profile says a key is required, ods lint reports it when the key is missing or empty.

  • What to do: Add the key, or change the profile if you did not mean to require it.
v0.0.22August 13, 2026

Built-in agent profile

Use the agent profile for instructions that both people and coding agents should follow.

  • Try it: ods new (or add profile: agent in frontmatter), then ods lint.
v0.0.20August 6, 2026

The workspace marker is ods.toml

ODS no longer treats a generated index file as the project root. Discovery is ods.toml plus Markdown frontmatter.

  • New repo: Run ods init and commit ods.toml.
  • Existing repo: Add ods.toml if you still only have an index map. ods lint --fix will not write that map.
v0.0.18August 4, 2026

Put tags at the top of the file

Tags belong next to title so Obsidian, Hugo, and ods find --tag can read them. Nested ods.tags was easy to lose.

  • Fix existing files: Run ods fmt --migrate. Nested tags move to the root and are not deleted.
v0.0.17August 3, 2026

The binary is named ods

Help, installers, and updates only talk about ods. An older odc name was retired.

  • What to do: Reinstall, then change aliases and CI from odc to ods.
v0.0.15August 3, 2026

One-line install finds the real download

The installer asks GitHub for the versioned archive. Use this if an older script returned 404.

  • Install: curl -fsSL https://opendocify.com/install.sh | bash — or the PowerShell script on Windows. Add --force to replace a broken copy.
v0.0.9August 1, 2026

OKF is a flag, not a second tool

Bare commands are ODS. Google OKF is opt-in. ods okf … was removed.

  • Upgrade: Run ods update to replace the binary and refresh shipped skills.
  • OKF: Use ods lint --okf (same pattern on init, context, and related commands).
v0.0.5July 30, 2026

Links still work if filename case differs

A Markdown link to Guide.md still finds guide.md on a case-sensitive disk.

  • Authors: You do not have to recase every relative link for ODS to resolve it.
v0.0.1July 19, 2026

First public ods CLI

First tagged build: installers, ods setup, and bounded ods context lists.

  • Today: Install v0.0.29. This tag is history, not the current product.

Sourced from the ods engine changelog. GitHub still has every tag, including internal CI builds.

Download a release →