<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/scripts/tests/session-title-hook.bats, 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-13T18:49:21+00:00</updated>
<entry>
<title>feat(hooks): title sessions host-project with a hyphen, no space</title>
<updated>2026-06-13T18:49:21+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-13T18:49:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=f537150ff3f67899d27a7f121bc302f61a307c1c'/>
<id>urn:sha1:f537150ff3f67899d27a7f121bc302f61a307c1c</id>
<content type='text'>
The SessionStart hook joined host and project with a space ("ratio rulesets"), which reads as two words in the claude.ai/code and mobile session lists. I changed the join to "$host-$project" ("ratio-rulesets") so the title is one token, and updated the three session-title-hook.bats expectations test-first.
</content>
</entry>
<entry>
<title>feat(hooks): title sessions "host project" for the remote session list</title>
<updated>2026-06-11T18:23:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-11T18:23:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=bdc9a5d6e1320032770f54c747c210e4f465c399'/>
<id>urn:sha1:bdc9a5d6e1320032770f54c747c210e4f465c399</id>
<content type='text'>
Remote sessions showed up on claude.ai/code and mobile under auto-generated names, so picking the right one meant guessing. Claude Code 2.1.152+ lets a SessionStart hook set the title via hookSpecificOutput.sessionTitle.

hooks/session-title.sh emits "&lt;uname -n&gt; &lt;project&gt;" (ratio rulesets, velox work) on startup and resume. Project is the git-toplevel basename so a session started in a subdirectory still names the project, with the cwd basename as fallback. The hook stays silent when a title already exists, so a /rename or an earlier run isn't clobbered on resume. The harness ignores titles on clear and compact, so the settings matcher restricts to startup|resume.

Wired in settings.json and the install-hooks snippet. As a default hook it reaches every machine through make install on the next session start.
</content>
</entry>
</feed>
