<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/languages/default-CLAUDE.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-24T01:00:11+00:00</updated>
<entry>
<title>feat(install-lang): seed a neutral CLAUDE.md when a bundle ships none</title>
<updated>2026-06-24T01:00:11+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-24T01:00:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=71db71b9d47ffbeaf1d1c859fa3e3bebb7b2ea29'/>
<id>urn:sha1:71db71b9d47ffbeaf1d1c859fa3e3bebb7b2ea29</id>
<content type='text'>
install-lang only seeded CLAUDE.md if the chosen bundle shipped one. elisp and go do, python and typescript don't. A project installing a template-less bundle got no CLAUDE.md, and a multi-bundle install inherited whichever bundle shipped one. A bash project that installed elisp and python ended up headed "Elisp project," worse than no header.

I added a language-neutral default (languages/default-CLAUDE.md) that names no language, so single-language, multi-bundle, and wrong-bundle installs all get an accurate "fill this in" header instead of a false one. Per-bundle templates still win where present. The seed-on-first-install, no-overwrite logic is unchanged.

I hardened the Makefile LANGUAGES glob to directories only so the new template file doesn't show up as a selectable language. lint covers the default. The install-lang tests cover the fallback, the bundle-wins branch, and no-overwrite.

A bash bundle is still the real gap for shell-heavy projects, filed as a backlog task.
</content>
</entry>
</feed>
