Repository navigation
Releases: jerrydboonstra/neckbeard
Release list
neckbeard 1.13.0
tools/vetruns 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 (seeexamples/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 TARGETis the matching CI check: it needs only python3 and fails when the report vets a different version than the plugin'splugin.json.tools/test_vet.pyruns both against a fakeclaude, andmake checkruns that.
neckbeard 1.12.9
make deploy, as Cat Herder has it. It refuses unlessmainis released on every remote, then brings this machine and each host inHOSTSto 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.pyruns it end to end against a fakeclaude, andmake checkruns that.excerptsis no longer on your PATH. A plugin's top-levelbin/is on the PATH of every session's Bash tool, so every neckbeard user had our maintainer script as a command. It now lives intools/.bin/keepsneckbeard, the one command meant for users.make releasepushes to a fixed list,originplus theMIRRORSa git-ignoredlocal.mknames, never every remote the checkout happens to have. Before, a checkout with a work-queue remote would have pushedmainand the tag into the queue.
neckbeard 1.12.8
- 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 releasealso 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-notesprints 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.zinstead of a version that goes stale.
neckbeard 1.12.7
- 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: falsefor 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:unknownif nothing was found by then, and the hooks found so far with asearch_incompletenote if something was. Amarketplace.jsonthat 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; seeCASE-STUDIES.md§15.
neckbeard 1.12.6
- 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 frominstall.jsoninto~/.claude/settings.jsonwith an installer. A marketplace's local plugin is now what gets inventoried (--plugin NAMEpicks one of several), hook-shaped JSON anywhere in the tree is reported along with the scripts that writesettings.json, and a marketplace or folder of plugins that was not inventoried plugin by plugin saysunknown, neverfalse. Ten self-check cases; seeCASE-STUDIES.md§15.
neckbeard 1.12.5
- 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/excerptsfills them fromexamples/, andmake checkfails 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
- 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
- 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
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@neckbeardor 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.