Skip to content

Releases: jerrydboonstra/neckbeard

neckbeard 1.13.0

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 06 Oct 15:58
  • tools/vet runs the whole gallery method in one command, so a plugin can rebuild its published report, for example in a Claude Code web session on its own repo (see examples/README.md). It vets against a throwaway copy of the sample reader, because the judge writes its backups and synced skills into its config folder; it lets the judge edit its own report, so it can fix a count it got wrong; and it refuses a report with no verdict or with a local path in it. It writes the title line itself, since a judge was seen to write "vetted against your rules". tools/vet --check REPORT TARGET is the matching CI check: it needs only python3 and fails when the report vets a different version than the plugin's plugin.json. tools/test_vet.py runs both against a fake claude, and make check runs that.

neckbeard 1.12.9

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 02 Oct 07:10
  • make deploy, as Cat Herder has it. It refuses unless main is released on every remote, then brings this machine and each host in HOSTS to that commit: a directory marketplace's checkout must be clean and is fast-forwarded to exactly the release, the marketplace is updated, every install of neckbeard is updated from its own folder, and each one's version is printed and checked. tools/test_deploy.py runs it end to end against a fake claude, and make check runs that.
  • excerpts is no longer on your PATH. A plugin's top-level bin/ is on the PATH of every session's Bash tool, so every neckbeard user had our maintainer script as a command. It now lives in tools/. bin/ keeps neckbeard, the one command meant for users.
  • make release pushes to a fixed list, origin plus the MIRRORS a git-ignored local.mk names, never every remote the checkout happens to have. Before, a checkout with a work-queue remote would have pushed main and the tag into the queue.

neckbeard 1.12.8

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 02 Oct 05:26
  • neckbeard shows its own badge. The README carries a neckbeard badge linked to its report on itself, rerun against the sample reader on 1.12.7: 🟩 install, no conflicts, in three separate runs. The 1.12.0 report's one conflict, its symbol key against "plain language over jargon", did not come back; the gallery says so rather than claiming a fix.
  • make release also publishes the GitHub Release, with that version's changelog entry as its notes, and refuses to push anything if the entry is missing. A pushed tag alone left the repo page showing the previous version as Latest. make release-notes prints what the notes will say.
  • An issue form for ideas. With blank issues off, a bug report was the only public way in. The bug form's version field now shows a generic x.y.z instead of a version that goes stale.

neckbeard 1.12.7

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 28 Sep 19:46
  • The hook search reads the whole tree, and says so when it cannot. An independent review after 1.12.6 shipped found that its new search for hook-shaped JSON stopped four directory levels down and reported has_hooks: false for hooks below that, which is the silence 1.12.6 set out to remove. There is no depth limit now; a budget of 20,000 JSON reads bounds the walk (the largest of 128 local repos read 5,378 in about 3 seconds, with no false alarms), and running out says where it stopped: unknown if nothing was found by then, and the hooks found so far with a search_incomplete note if something was. A marketplace.json that is not valid JSON, or that was refused, now says so in the dossier instead of reading as a marketplace that lists nothing. Four self-check cases: the first and last fail against 1.12.6, and the partial-result case was added after a second review round found that gap; see CASE-STUDIES.md §15.

neckbeard 1.12.6

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 28 Sep 17:52
  • Hooks that no root manifest names are found. Run on four pstack ports, the inventory called three of them hookless: two are marketplaces whose plugin lives in plugins/pstack/, and one merges ten hook groups from install.json into ~/.claude/settings.json with an installer. A marketplace's local plugin is now what gets inventoried (--plugin NAME picks one of several), hook-shaped JSON anywhere in the tree is reported along with the scripts that write settings.json, and a marketplace or folder of plugins that was not inventoried plugin by plugin says unknown, never false. Ten self-check cases; see CASE-STUDIES.md §15.

neckbeard 1.12.5

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 26 Sep 04:50
  • The case studies read in half the time. They open with a short link list in two groups: runs against real plugins, and rounds against neckbeard itself. Each run against a gallery plugin (§1 to §5) leads with that plugin's report today, then the first run's output. Every round then lists what it showed, the version that fixed it, and the self-check that guards it, and says so where none does. Lists longer than four show three and fold the rest; §9 and §12 keep their full stories in a fold; the closing lessons are five, with twelve more folded and numbered on from them.
  • The report excerpts are copied, never typed. bin/excerpts fills them from examples/, and make check fails if a case study quotes a report that has since changed.
  • The README reads in the order an evaluator asks. What it produces, then how to install and use it, then how it was tested and what it will and will not touch, then the story behind it. A line under the intro says every round is published, and "How it was tested" links each round. It also said the gallery has seven plugins; it has eight.

neckbeard 1.12.4

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 25 Sep 19:17
  • The README's "Why" now says what happened. It used to say the author read ponytail himself and found half its rules duplicated and five in conflict. An LLM made that comparison, and there was no good way to check it, which is the reason neckbeard exists. The tagline changes too, and the social preview image matches it.

neckbeard 1.12.3

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 25 Sep 17:53
  • An eighth gallery report: calm-trader/skills, a skill pack with no plugin manifest, vetted against the sample reader. It is a pack the author contributes to, which the report and the gallery say plainly. The report failed the gallery's own count check as first written and was corrected by hand; the gallery lists each correction.

neckbeard 1.12.2

Choose a tag to compare

@jerrydboonstra jerrydboonstra released this 25 Sep 14:28

First public release.

neckbeard reads a Claude Code plugin before you install it: every hook, every string it injects, every session and subagent it reaches, every file it writes outside your project. Then it sorts each of the plugin's rules against the rules you already run, as duplicate, conflict or new, and writes a one-page verdict. It never edits anything.

Install as a plugin:

claude plugin marketplace add jerrydboonstra/neckbeard
claude plugin install neckbeard@neckbeard

or as a plain skill: clone the repo and link skills/neckbeard into ~/.claude/skills/. About 270 tokens always-on, about 4.7k each time you use it.

See what a report looks like: the gallery has real reports on seven public plugins, all against a published sample reader.

How it was tested: fourteen rounds, every reviewer a separate AI session that had not written the code, and two sealed fixtures for the judgment half. On the second, the instructions scored 30 of 31 where the same model without them scored 16. The full record, including the claims that turned out false, is in CASE-STUDIES.md.

Version history: CHANGELOG.md.