Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ A [Claude Code](https://claude.ai/code) plugin marketplace for **linter-driven d

| | Plugin | Version | For |
|---|--------|---------|-----|
| 🐹 | [`go-linter-driven-development`](go-linter-driven-development/README.md) | 2.15.1 | Go |
| 🐍 | [`python-linter-driven-development`](python-linter-driven-development/README.md) | 0.4.1 | Python |
| 🧩 | [`linter-driven-development`](linter-driven-development/README.md) | 0.5.0 | Any language without a binding — detects the language at run time |
| ⚛️ | [`ts-react-linter-driven-development`](ts-react-linter-driven-development/README.md) | 2.0.1 | TypeScript + React |
| 🐹 | [`go-linter-driven-development`](go-linter-driven-development/README.md) | 2.16.0 | Go |
| 🐍 | [`python-linter-driven-development`](python-linter-driven-development/README.md) | 0.5.0 | Python |
| 🧩 | [`linter-driven-development`](linter-driven-development/README.md) | 0.6.0 | Any language without a binding — detects the language at run time |
| ⚛️ | [`ts-react-linter-driven-development`](ts-react-linter-driven-development/README.md) | 2.1.0 | TypeScript + React |

Plus the coding rules as a single document, for a project that does not use the plugin:

Expand Down
2 changes: 1 addition & 1 deletion go-linter-driven-development/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "go-linter-driven-development",
"version": "2.15.1",
"version": "2.16.0",
"description": "Rules-as-data linter-driven development workflow for Go: 12 single-source rule files, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation), a hunter/skeptic/critic review architecture with parallel single-rule reviewers, an over-abstraction skeptic, and a comment critic enforcing the Comment Value Toolbox, plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
24 changes: 24 additions & 0 deletions go-linter-driven-development/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [2.16.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/go-ldd-review <dir>`). A scoped review judges the question in full. The lead for
the mutant question also skips `cmd/`, `main.go` and `handlers/`.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against revive's `file-length-limit` (450 lines). A file over the limit, or with
a `//nolint` that silences the limit, is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/go-ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +34,10 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.

## [2.15.1] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion lang/generic/passthrough/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "linter-driven-development",
"version": "0.5.0",
"version": "0.6.0",
"description": "Rules-as-data linter-driven development workflow for any language: the same 12 rules, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation) and hunter/skeptic/critic review as the Go plugin, with the language detected from the repository at run time and its own linter run instead of a bundled one; plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
23 changes: 23 additions & 0 deletions lang/generic/passthrough/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,25 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [0.6.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/ldd-review <dir>`). A scoped review judges the question in full.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against the repository's own file-length limit, when its linter sets one. A file over the limit, or with
a suppression directive that silences the limit, is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +33,10 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.

## [0.5.0] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion lang/go/passthrough/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "go-linter-driven-development",
"version": "2.15.1",
"version": "2.16.0",
"description": "Rules-as-data linter-driven development workflow for Go: 12 single-source rule files, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation), a hunter/skeptic/critic review architecture with parallel single-rule reviewers, an over-abstraction skeptic, and a comment critic enforcing the Comment Value Toolbox, plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
24 changes: 24 additions & 0 deletions lang/go/passthrough/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [2.16.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/go-ldd-review <dir>`). A scoped review judges the question in full. The lead for
the mutant question also skips `cmd/`, `main.go` and `handlers/`.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against revive's `file-length-limit` (450 lines). A file over the limit, or with
a `//nolint` that silences the limit, is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/go-ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +34,10 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.

## [2.15.1] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion lang/python/passthrough/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "python-linter-driven-development",
"version": "0.4.1",
"version": "0.5.0",
"description": "Rules-as-data linter-driven development workflow for Python: the same 12 rules, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation) and hunter/skeptic/critic review as the Go plugin, rendered with Python knowledge — ruff, ty and mypy routing, pytest, dataclasses and Protocols, threads and asyncio, docstrings; plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
28 changes: 28 additions & 0 deletions lang/python/passthrough/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,25 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [0.5.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/py-ldd-review <dir>`). A scoped review judges the question in full. The lead for
the mutant question also skips `handlers/`, `__main__.py`, `main.py` and `cli.py`.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against 450 lines (ruff has no file-length rule). A file over the limit is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/py-ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +33,15 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.
- **The mutant hand check reads the error assertions.** The hand check opens the
leaf's test file, also when the file is outside the review's scope, and reads each
error assertion. An assertion that matches only a word all the leaf's errors share
(`match="tenant"`) lets a removed check or a changed message survive, and it is a
violation. The check runs once for each leaf file in scope, not only where a hit row points.

## [0.4.1] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion lang/ts-react/passthrough/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ts-react-linter-driven-development",
"version": "2.0.1",
"version": "2.1.0",
"description": "Rules-as-data linter-driven development workflow for TypeScript + React: the same 12 rules, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation) and hunter/skeptic/critic review as the Go plugin, rendered with TypeScript and React knowledge — ESLint and SonarJS routing, Vitest with React Testing Library and MSW, discriminated unions and `readonly` types, effects and query ownership, JSDoc; plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
29 changes: 29 additions & 0 deletions lang/ts-react/passthrough/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,26 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [2.1.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/tsr-ldd-review <dir>`). A scoped review judges the question in full. The lead for
the mutant question also skips `.tsx` files, `components/`, `hooks/` and `context/`.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against `sonarjs/max-lines` (600). A file over the limit, or with
a `max-lines` directive that silences the rule, is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/tsr-ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +34,15 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.
- **The mutant hand check reads the error assertions.** The hand check opens the
leaf's test file, also when the file is outside the review's scope, and reads each
error assertion. An assertion that matches only a word all the leaf's errors share
(`toThrow('tenant')`) lets a removed check or a changed message survive, and it is a
violation.

## [2.0.1] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion linter-driven-development/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "linter-driven-development",
"version": "0.5.0",
"version": "0.6.0",
"description": "Rules-as-data linter-driven development workflow for any language: the same 12 rules, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation) and hunter/skeptic/critic review as the Go plugin, with the language detected from the repository at run time and its own linter run instead of a bundled one; plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
23 changes: 23 additions & 0 deletions linter-driven-development/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,25 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio

## [Unreleased]

## [0.6.0] - 2026-10-18

### Changed

- **A whole-repository review leaves the mutant question to scoped reviews.** On
`--all`, the hunter does not judge the question "does a mutant survive a leaf's
tests?". Its receipt reads `per-leaf, not judged`, and its `not reached:` line names
the three leaf directories with the most hits, each as the scoped review that
judges it (`/ldd-review <dir>`). A scoped review judges the question in full.
- **The god file has a mechanical lead.** The question "is one feature's code spread
across layer directories?" lists the longest files in scope with `wc -l` and checks
each against the repository's own file-length limit, when its linter sets one. A file over the limit, or with
a suppression directive that silences the limit, is a violation when it stands in for the
whole slice.
- **The review command says how to cover a large repository.** On a repository
larger than a few dozen source files, `--all` reports `PARTIAL coverage`. The
command names the form that covers everything: one review per directory
(`/ldd-review <dir>`).

### Fixed

- **A claim that something is missing needs a listing.** A rule hunter that reports
Expand All @@ -14,6 +33,10 @@ Format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versio
hunter once reported a test file as missing when it existed outside the scope.
When the hunter's budget leaves no call for the listing, the claim appears in the
hunter's `not reached:` line as `unverified`; the report never drops it.
- **A cluster title carries its rule ids.** The review reference shows every cluster
title as `🔗 CLUSTER: <anchor> — <rules>`, the same form as the skill. Agents
followed the reference, so the rule ids were on the lines below the title, and the
report graders missed correct clusters.

## [0.5.0] - 2026-10-15

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "python-linter-driven-development",
"version": "0.4.1",
"version": "0.5.0",
"description": "Rules-as-data linter-driven development workflow for Python: the same 12 rules, thin directional skills (design, TDD implementation, refactoring, testing, review, documentation) and hunter/skeptic/critic review as the Go plugin, rendered with Python knowledge — ruff, ty and mypy routing, pytest, dataclasses and Protocols, threads and asyncio, docstrings; plus an OKF-conformant repo brain with a shippable CI conformance gate",
"author": {
"name": "Dan Mordechay"
Expand Down
Loading
Loading