<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/claude-rules/todo-format.md, branch main</title>
<subtitle>Claude Code skills, rules, and language bundles
</subtitle>
<id>https://git.cjennings.net/rulesets/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/rulesets/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/'/>
<updated>2026-06-12T19:08:52+00:00</updated>
<entry>
<title>docs(todo): require a per-project Priority Scheme header</title>
<updated>2026-06-12T19:08:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-12T19:08:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=81395a7c8473fb2e0ad8239f02825c29288404e9'/>
<id>urn:sha1:81395a7c8473fb2e0ad8239f02825c29288404e9</id>
<content type='text'>
Every project's task list now opens with a "[Projectname] Priority Scheme" section declaring both the [#A]-[#D] semantics and the tag vocabulary. The concept already lived in the tooling (task-audit enforces a declared tag set, process-inbox checks for the scheme before filing), but nothing required the section or fixed its name, so a list could leave [#A] and its tags undefined.

The set is declared, not fixed. A project adapts the priorities and tags to its own work. The floor is that both are spelled out.
</content>
</entry>
<entry>
<title>docs: codify depth-based completion rule + DRY the skill reference</title>
<updated>2026-05-15T20:05:37+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-15T20:05:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=421b17a15219c7061ee92c07451993965fad88ea'/>
<id>urn:sha1:421b17a15219c7061ee92c07451993965fad88ea</id>
<content type='text'>
Todo-format.md gets a "Completion — depth-based" section that
codifies what was implicit before: top-level (* and **) DONE tasks
stay task-shaped (DONE + CLOSED line), sub-tasks (*** and deeper)
flip to dated event-log entries, and VERIFY is the documented
exception (always dated-rewrite regardless of depth). The section
includes worked examples and the rationale for depth-based over
keyword-based.

The cj-comments skill's completion section now references the
canonical rule instead of restating the depth-based rules inline.
The three-bullet recap in the skill stays as a quick scan, but the
details and examples live in one place.
</content>
</entry>
<entry>
<title>docs: simplify cj-comments skill + add VERIFY placement/completion rules</title>
<updated>2026-05-15T17:58:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-15T17:58:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=236dc42fdd8ab471ca7b8df70e6b88ad46acfc8b'/>
<id>urn:sha1:236dc42fdd8ab471ca7b8df70e6b88ad46acfc8b</id>
<content type='text'>
Rounds of simplification on the cj-comments skill: converged on
source-block-only in org files, dropped the non-org parsing entirely,
factored out the mechanical parts into helper scripts (added separately
in another repo), and codified the VERIFY placement + completion rules
in a canonical rule file so the conventions stop being implicit.

Skill (.claude/commands/respond-to-cj-comments.md):

- Drop the file-type comment-marker table and the non-org multi-line
  continuation rule. The skill now recognizes only the org source-block
  form (#+begin_src cj: ... #+end_src). Craig's yasnippet keeps typing
  cost flat.
- Defensive parsing for legacy inline cj annotations in older org files
  (back-compat).
- Prefer the new helper scripts: step 1 calls cj-scan for structured
  detection; step 4 sub-step 6 calls cj-remove-block for validated
  removal. Both have explicit fallback paths to grep+Read / Edit.
- Completion rules now split by keyword: TODO/DOING at *,** stay
  task-shaped (DONE + CLOSED); deeper TODO/DOING flip to dated headings;
  VERIFY at any depth flips to a dated heading with body replacement.
- New VERIFY-answer pattern: when a cj's parent_heading_chain ends with
  VERIFY, the cj is the answer to that VERIFY. Lift its body into the
  dated rewrite (or execute the instruction first if indirect), then
  delete the cj.
- New placement rule for new VERIFYs: sibling of the trigger heading,
  not a child. Climb to *** when the trigger is buried at ****+. This
  is the active force that keeps todo.org flat.
- Rename "cj: comment" to "cj comment" in prose; preserve the literal
  cj: token in code examples and grep targets.

Canonical rule (claude-rules/todo-format.md):

- New "VERIFY tasks" section with four subsections: Placement (** or
  *** only), Creating a new VERIFY (sibling of trigger), Completion
  (dated rewrite + body replacement at any depth), Don't leave stale
  placeholders.
- Worked before/after examples for both top-level and first-level
  VERIFYs.
</content>
</entry>
<entry>
<title>feat(rules): add todo-entry format (terse heading, optional body)</title>
<updated>2026-05-13T19:14:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-13T19:14:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=7d364362c9faccd9c78bc4ceef13f25a2ba98d10'/>
<id>urn:sha1:7d364362c9faccd9c78bc4ceef13f25a2ba98d10</id>
<content type='text'>
</content>
</entry>
</feed>
