<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>tp-kit blog</title>
    <link>https://kit.bridleworks.org/</link>
    <description>Changes to the toothpaste kit, each post with its full text.</description>
    <language>en</language>
    <lastBuildDate>Tue, 27 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>toothpaste-kit 0.5.0</title>
      <link>https://kit.bridleworks.org/2026-10-27-v0.5.0.html</link>
      <description>Apache 2.0 with REUSE and a DCO sign-off, the ACMM L2 to L4 files, and fourteen gates.</description>
      <pubDate>Tue, 27 Oct 2026 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">tp-kit-blog:2026-10-27-v0.5.0</guid>
      <content:encoded>&lt;p&gt;Version 0.5.0 is a MINOR release under &lt;code&gt;docs/releasing.md&lt;/code&gt;. The licence moves to Apache 2.0, with REUSE compliance and a Developer Certificate of Origin sign-off. The ACMM L2, L3 and L4 files arrive, &lt;code&gt;scripts/gates.sh&lt;/code&gt; goes from ten gates to fourteen, and branch and tag names get one rule. No skill is added, and no skill revision is BREAKING.&lt;/p&gt;
&lt;h2&gt;A new licence&lt;/h2&gt;
&lt;p&gt;From this release the kit is under the Apache License 2.0, and &lt;code&gt;LICENSE&lt;/code&gt; is the unmodified official text. Releases 0.1.0 to 0.4.0 were published under MIT and stay under it: their tags and assets are not rewritten, and what MIT granted for them is not revoked.&lt;/p&gt;
&lt;p&gt;Every file now declares its copyright and licence, by an SPDX header or, for files that cannot hold one, in &lt;code&gt;REUSE.toml&lt;/code&gt;. &lt;code&gt;scripts/compliance.sh&lt;/code&gt; runs &lt;code&gt;reuse lint&lt;/code&gt; with a planted-file selftest, and a CI workflow runs it with a pinned &lt;code&gt;reuse&lt;/code&gt;. &lt;code&gt;scripts/gates.sh&lt;/code&gt; still needs nothing installed.&lt;/p&gt;
&lt;h2&gt;Signing off contributions&lt;/h2&gt;
&lt;p&gt;Contributions now need a Developer Certificate of Origin sign-off. &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; gains a licence and sign-off section, covering &lt;code&gt;git commit -s&lt;/code&gt;, how to add a missing sign-off, and the pause when someone else may own the work. &lt;code&gt;.github/workflows/dco.yml&lt;/code&gt; fails a pull request that contains a commit with no sign-off for its author. No contributor licence agreement is asked.&lt;/p&gt;
&lt;h2&gt;The ACMM files&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ACMM L2: &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;.github/copilot-instructions.md&lt;/code&gt; and &lt;code&gt;.cursor/rules/agents.mdc&lt;/code&gt; point at &lt;code&gt;AGENTS.md&lt;/code&gt;; &lt;code&gt;docs/prompts/README.md&lt;/code&gt; catalogs the skills; and &lt;code&gt;docs/corrections.md&lt;/code&gt; with an empty &lt;code&gt;corrections.jsonl&lt;/code&gt; gives the Correction Protocol's records a format.
&lt;/li&gt;
&lt;li&gt;ACMM L3: the pull request acceptance metric in &lt;code&gt;docs/metrics.md&lt;/code&gt;, the review rubric in &lt;code&gt;docs/review-rubric.md&lt;/code&gt;, a test matrix on Linux and macOS, and the quality dashboard in &lt;code&gt;docs/quality.md&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;ACMM L4 part a: &lt;code&gt;SECURITY-AI.md&lt;/code&gt;, the AI security policy; change classification in &lt;code&gt;docs/risk-tiers.md&lt;/code&gt;; pull requests labelled by path; the gates selftest every night; and &lt;code&gt;docs/reflections/&lt;/code&gt;, filed cross-session lessons.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;docs/acmm.md&lt;/code&gt; indexes the levels, naming the file that meets each criterion and the pull request that added it.&lt;/p&gt;
&lt;h2&gt;Branch and tag names, and more gates&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;scripts/check-branch-name&lt;/code&gt; is the one definition of an allowed name: &lt;code&gt;&amp;lt;prefix&amp;gt;/&amp;lt;words&amp;gt;&lt;/code&gt; from a fixed prefix list, 40 characters at most, and &lt;code&gt;v&amp;lt;major&amp;gt;.&amp;lt;minor&amp;gt;.&amp;lt;patch&amp;gt;&lt;/code&gt; for tags. &lt;code&gt;.githooks/pre-push&lt;/code&gt; runs it before a push, and gate 13 selftests it. Among the other new gates, gate 12, &lt;code&gt;scripts/check-hooks.py&lt;/code&gt;, checks that each rule in &lt;code&gt;hooks/&lt;/code&gt; parses and that each blocking rule fires on its planted cases. Gate 14 runs &lt;code&gt;.githooks/commit-msg&lt;/code&gt;, which now also refuses &lt;code&gt;Assisted-by:&lt;/code&gt; and &lt;code&gt;Agent-&amp;lt;name&amp;gt;:&lt;/code&gt; trailers, against its test cases.&lt;/p&gt;
&lt;h2&gt;Also new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;orchestration/rounds.md&lt;/code&gt;, the rounds protocol, by which work is checked by a seat other than its author before it reaches the maintainer.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs/glossary.md&lt;/code&gt;, each term of art with the file that defines it, and &lt;code&gt;docs/concepts.md&lt;/code&gt;, a concepts index.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/reorient&lt;/code&gt; names what it skips, and it now parses under bash 3.2.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;p&gt;Every claim above comes from the "0.5.0 (2026-10-27)" section of &lt;code&gt;CHANGELOG.md&lt;/code&gt;.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title>toothpaste-kit 0.4.0</title>
      <link>https://kit.bridleworks.org/2026-10-13-v0.4.0.html</link>
      <description>Three new skills, three new scripts with gates, an installing guide, and one BREAKING fix.</description>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">tp-kit-blog:2026-10-13-v0.4.0</guid>
      <content:encoded>&lt;p&gt;Version 0.4.0 is a MINOR release under &lt;code&gt;docs/releasing.md&lt;/code&gt;. It adds three skills and three scripts, each script with a gate, and it carries the fix for issue #11, which includes one BREAKING skill change.&lt;/p&gt;
&lt;h2&gt;Three new skills&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;skills/merge-proxy/&lt;/code&gt; lets an agent run and push a merge into a trunk, for the session it is invoked in, on a repository whose remote is internal or absent. It first explains the whole plan and halts for approval of each merge, and it never runs on a GitHub or other internet remote. The decision stays the person's; only the typing moves.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills/weekly-review/&lt;/code&gt; is a once-a-week pass over a task board's slower lanes: each Waiting blocker chased, carried work named by its count, the Done lane read back against each task's own verification, and one important task given a day, never a due date.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skills/monthly-review/&lt;/code&gt; is a once-a-month pass: each Someday/Maybe item adopted, kept or rejected, long-stalled Waiting work questioned, and the archive candidates chosen by the person. It is the only review that archives a task the board has been holding.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The two reviews propose and ask; they move nothing the person did not answer.&lt;/p&gt;
&lt;h2&gt;Three new scripts, each with a gate&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;scripts/remote-level.sh&lt;/code&gt; is the remote classifier that &lt;code&gt;merge-proxy&lt;/code&gt; runs first. It reports &lt;code&gt;none&lt;/code&gt;, &lt;code&gt;internal&lt;/code&gt; or &lt;code&gt;external&lt;/code&gt; from where a repository's remotes point, and &lt;code&gt;external&lt;/code&gt; whenever a host cannot be proven internal.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/reorient&lt;/code&gt; is the observing half of &lt;code&gt;skills/orient/&lt;/code&gt;, which shipped without it. Mail is off unless &lt;code&gt;REORIENT_INBOX_REPO&lt;/code&gt; is set.
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/check-workspace-stubs.py&lt;/code&gt; checks that the stubs in &lt;code&gt;examples/workspace/&lt;/code&gt; match the files &lt;code&gt;docs/standing-documents.md&lt;/code&gt; describes.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installing, and a shorter quickstart&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docs/installing.md&lt;/code&gt; is a new installing guide: where each part of the kit goes among Claude Code's features, symlink or copy, enabling the hooks, updating, removing, and how a workspace grows. &lt;code&gt;docs/quickstart.md&lt;/code&gt; is now one path in six steps, each ending with what you should now see. It copies the new example workspace, &lt;code&gt;examples/workspace/&lt;/code&gt;. Both were reported in issue #11.&lt;/p&gt;
&lt;h2&gt;How skills are versioned&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docs/releasing.md&lt;/code&gt; gains three sections. Skill revisions: a skill's &lt;code&gt;vN&lt;/code&gt; lives only in its own &lt;code&gt;CHANGELOG.md&lt;/code&gt;, and each release names the skills whose revision moved. A skill's interface: six surfaces, and what counts as breaking, labeled BREAKING before 1.0. Deprecation: announced in one release and removable no earlier than the second after it.&lt;/p&gt;
&lt;h2&gt;One BREAKING change&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;skills/session-close/&lt;/code&gt; v5 writes provenance to the layer the tree's &lt;code&gt;CLAUDE.md&lt;/code&gt; names, instead of a path from the tree it was written in. Where &lt;code&gt;CLAUDE.md&lt;/code&gt; names none, the skill now stops and asks instead of writing to &lt;code&gt;agents/claude/context/&lt;/code&gt;. To migrate, name your provenance layer in your &lt;code&gt;CLAUDE.md&lt;/code&gt;. The change skips the deprecation window as a safety fix: the old default could put session reasoning in a repository that later gains a public remote.&lt;/p&gt;
&lt;h2&gt;Also fixed&lt;/h2&gt;
&lt;p&gt;The em dash and private task ID gates in &lt;code&gt;scripts/gates.sh&lt;/code&gt; searched &lt;code&gt;.git&lt;/code&gt;, and passed when &lt;code&gt;grep&lt;/code&gt; could not run at all. Both now fail on a &lt;code&gt;grep&lt;/code&gt; error.&lt;/p&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;p&gt;Every claim above comes from the "0.4.0 (2026-10-13)" section of &lt;code&gt;CHANGELOG.md&lt;/code&gt;.&lt;/p&gt;
</content:encoded>
    </item>
    <item>
      <title>toothpaste-kit 0.3.0</title>
      <link>https://kit.bridleworks.org/2026-09-29-v0.3.0.html</link>
      <description>One new skill, daily-review, and a two-week release cadence; no script changed.</description>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <guid isPermaLink="false">tp-kit-blog:2026-09-29-v0.3.0</guid>
      <content:encoded>&lt;p&gt;Version 0.3.0 is a MINOR release under &lt;code&gt;docs/releasing.md&lt;/code&gt;. It adds one skill and a release cadence, and it changes documentation and skill files only: no script changed.&lt;/p&gt;
&lt;h2&gt;A daily review&lt;/h2&gt;
&lt;p&gt;The new skill, &lt;code&gt;skills/daily-review/&lt;/code&gt;, is a once-a-day pass over a task board's lanes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the Inbox is clarified to empty;
&lt;/li&gt;
&lt;li&gt;carried work is counted;
&lt;/li&gt;
&lt;li&gt;finished work is offered for close;
&lt;/li&gt;
&lt;li&gt;priority is read as an Eisenhower quadrant;
&lt;/li&gt;
&lt;li&gt;and the day's order is proposed.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It proposes and asks, and it moves nothing the person did not answer. It assumes a lane-board tool, and it says what that tool must print. &lt;code&gt;README.md&lt;/code&gt; and &lt;code&gt;docs/project-state.md&lt;/code&gt; now list fifteen skills, with &lt;code&gt;daily-review&lt;/code&gt; among those a person invokes.&lt;/p&gt;
&lt;h2&gt;A release cadence&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docs/releasing.md&lt;/code&gt; has a new Cadence section. A release review happens every two weeks on a Tuesday, with a Friday cutoff and a Monday final review, and there is a release only when the review admits one.&lt;/p&gt;
&lt;h2&gt;Citing the kit&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;CITATION.cff&lt;/code&gt; now lists only the concept DOI, which is the one to cite. Each version DOI is recorded under "Where releases stand" in &lt;code&gt;docs/releasing.md&lt;/code&gt; by the release after it, so a release no longer needs a follow-up pull request to record its DOI. Steps 3 and 7 of &lt;code&gt;docs/releasing.md&lt;/code&gt; say so.&lt;/p&gt;
&lt;h2&gt;Also changed&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;docs/quickstart.md&lt;/code&gt;, the example &lt;code&gt;CLAUDE.md&lt;/code&gt; names the provenance layer and the file that lists the standing files, which the loop skills look for before writing.&lt;/p&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;p&gt;Every claim above comes from the "0.3.0 (2026-09-29)" section of &lt;code&gt;CHANGELOG.md&lt;/code&gt;.&lt;/p&gt;
</content:encoded>
    </item>
  </channel>
</rss>
