Skip to content

Rename invariants skills to standards and move the folder to tools/agents/ #172

Description

@ooloth

Current state

The word "invariant" currently names both the wrong content and the right content, so neither
reads reliably, and the folder holding that content sits behind a Claude-specific path despite
being consumed by other harnesses. The skill uphold-invariants and its backing folder
tools/claude/config/references/ are named around "invariant," but the content inside is tiered
Must/Should/Consider guidance — only the Must tier is unconditionally true the way an invariant
is; Should explicitly allows exceptions and Consider is pure judgment with no default either way.
Meanwhile docs/invariants/ now exists as a project-level convention for genuinely
unconditional, Must-only domain facts. scan-invariants has the same problem: it scans against
that same graded content and holds more references to the folder than any other file.

The location is wrong for the same reason the name is. tools/claude/link.bash already links the
folder into ~/.agents as well as ~/.claude, so non-Claude harnesses read it today — but it
lives under tools/claude/config/, which says it belongs to one harness.

Ideal state

  • The skill currently named uphold-invariants is renamed to uphold-standards
  • The skill currently named scan-invariants is renamed to scan-standards, and its
    description no longer says it checks "whether a codebase upholds its invariants"
  • The graded content lives at tools/agents/config/standards/, not under any single harness's
    directory
  • tools/agents/ follows the standard tool-folder shape with its own link.bash, so
    symlinks agents works and features/update/symlinks.bash discovers it with no registration
  • tools/claude/link.bash no longer links the folder; the two lines that pointed at
    references/ are gone
  • The folder is linked to both ~/.claude/standards and ~/.agents/standards, matching the two
    destinations it has today
  • The superseded ~/.claude/references and ~/.agents/references symlinks are gone, not merely
    unused. symlinks does prune broken links, but not at the depth these sit at, so both must be
    removed explicitly — see the Must in docs/standards/symlinks.md
  • The renamed README's framing language no longer calls its content "invariants" — it describes
    itself as graded Must/Should/Consider standards
  • Every skill and doc referencing the old path points at the new one: discuss, design,
    review-code, review-completion, review-converge, scan-standards, uphold-standards,
    tools/claude/config/CLAUDE.md, and the affected routines/ files
  • uphold-invariants and scan-invariants no longer exist as names outside @archive/, freeing
    both for accurate reuse by future project-level skills

Out of scope

  • Moving tools/claude/config/skills/ — skills are also linked into ~/.agents and have the same
    harness-neutrality argument, but they are a much larger move and are not needed to fix the
    naming problem. Separate work.
  • Moving anything into a second repository — considered and rejected in Move all agent config into a publishable ooloth/agents repo #173, which closed because
    it would split Claude Code's config across two repos
  • Building the project-level skills that load docs/invariants/ and docs/standards/ — separate
    follow-up work this rename enables by freeing the names, not part of it
  • Any change to the actual Must/Should/Consider content — naming, terminology, and location only,
    not a content rewrite
  • tools/claude/config/@archive/ — archived content is pruned by features/update/symlinks.bash
    and never symlinked, so its stale references can stay

Starting points

  • tools/claude/config/skills/uphold-invariants/SKILL.md — the skill that loads the folder
  • tools/claude/link.bash — the two symlink lines that move to tools/agents/link.bash
  • tools/@new — the template for the tool folder being created

QA plan

  1. Run symlinks — expect ~/.claude/standards and ~/.agents/standards to both resolve to
    tools/agents/config/standards/
  2. Run symlinks agents on its own — expect it to succeed and relink only that folder,
    confirming the new tool folder is discoverable by name
  3. Run find ~/.claude ~/.agents -maxdepth 1 -type l ! -exec test -e {} \; -print — expect no
    output. Any line is a leftover references symlink; symlinks will not remove these, so they
    must be deleted by hand
  4. Open a new Claude Code session in this repo and make a trivial code edit — expect
    uphold-standards to auto-invoke the same way uphold-invariants used to
  5. Run /scan-standards with a theme argument — expect it to locate the relocated folder and read
    the theme file rather than erroring on a missing path
  6. Grep the repo for uphold-invariants, scan-invariants, and references/, excluding
    @archive/ — expect zero hits. Note that /Library/Preferences/ in
    tools/macos/config/macos-defaults and a VS Code docs URL in
    tools/vscode/config/keybindings.json both contain the substring references/ and are false
    positives
  7. Read the relocated README's framing paragraph — expect it no longer claims all three tiers are
    "invariants"

Done when

No file in the repo still calls the graded Must/Should/Consider content "invariants," and that
content no longer lives under a single harness's directory.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions