From 71db71b9d47ffbeaf1d1c859fa3e3bebb7b2ea29 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 23 Jun 2026 21:00:11 -0400 Subject: feat(install-lang): seed a neutral CLAUDE.md when a bundle ships none 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. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 450dc1a..294e99c 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ HOOKS := $(wildcard hooks/*.sh hooks/*.py) OPTIN_HOOKS := hooks/destructive-bash-confirm.py DEFAULT_HOOKS := $(filter-out $(OPTIN_HOOKS),$(HOOKS)) CLAUDE_CONFIG := $(wildcard .claude/*.json) $(wildcard .claude/.*.json) $(wildcard .claude/*.sh) -LANGUAGES := $(notdir $(wildcard languages/*)) +LANGUAGES := $(notdir $(patsubst %/,%,$(wildcard languages/*/))) TEAMS := $(notdir $(wildcard teams/*)) PDFTOOLS_VENV ?= $(HOME)/.local/venvs/pdftools -- cgit v1.2.3