workflow

git clone https://git.godosa.eu/workflow

master

raw · 2059 bytes

CLAUDE.md — workflow tool repo (sessions changing wf)

This repo = the tool: shared/CLAUDE.md (symlinked as /projects/CLAUDE.md, loaded by every agent) + wf.py / wf_res.py / wflib/. Reference: docs/design.md, docs/resource-ledger.md. No personal data here (project names, tasks, paths under home): the workflow's own tasks live in a separate private wf project; publishable as is. Public by default: never put private names in files or commit messages; the denylist hooks (.githooks, scripts/denylist_check.py; enable: git config core.hooksPath .githooks) refuse them.

Everything here is live

Workers run the main tree's master the moment it changes. So: - wf.py, wf_res.py, wflib/, shared/CLAUDE.md, templates/ → git worktree .worktrees/<topic> on a branch, never the main tree. - Release = fast-forward merge to master, only after: 1. python3 -m unittest discover -s tests green in the worktree; 2. wf check run with the new code in every project of wf projects gives the same result as the old code (or only the intended differences); 3. a line on top of CHANGES.md: date, what changed, what a project must do (if anything). - The user sees each release. Push only to remote home (private), never elsewhere.

Compatibility

  • Commands and options are only added. Rename/remove → old spelling works one more release and prints a one-line notice.
  • TASKS.md format change → raise FORMAT (wflib/config.py) + wf migrate step; older projects keep read commands, write commands refuse until migrated.
  • shared/CLAUDE.md reaches a worker at its next session start: a rule change must not make files written under the old rule invalid. Keep it short; project needs go to the project.

Code rules

  • Python ≥ 3.11 stdlib only. wflib/ pure (text in, text out); files and printing in wf.py / wf_res.py.
  • TDD; oracles = hand-written literals; see each new test fail first.
  • Expected failures: one wf: … line on stderr, exit 1; usage errors exit 2; no tracebacks.