Point every agent session at basecamp instructions when instructions are set

Merged
JO
7d ago
+165-9

When an operator sets instructions, the plugin's session-start hook now tells every agent session to run basecamp instructions before it writes to Basecamp. Before this, the instructions reached only agents that loaded the basecamp skill or ran as connector subagents.

Why

basecamp instructions is the only thing that reads the setting. Write commands (comments create, cards create, chat post) say nothing about it. The two places that tell an agent to run it are a line in skills/basecamp/SKILL.md and skills/basecamp-connect/subagent.md, and Claude Code shows a skill's body only once the agent loads it.

A HEY² factory run on 2026-11-07 had CLI 0.24.0, the global setting and the 0.24.0 plugin. In 173 tool calls it never loaded a skill. It ran basecamp cards show from the shell, then handed its comment to a factory script that posted it. The comment ignored the style.

What changes

  • agent-hook pre-commit-snapshot, which the plugin runs at SessionStart, adds a short pointer to its additionalContext whenever a shared or profile instructions source is set. This happens on startup, resume, clear and compact. It goes to the model only, with no systemMessage. With nothing set the hook stays silent, as before.
  • The hook names the command and doesn't inline the text. A URL source can need a fetch the hook's 5s timeout can't cover, and the command reads the profile the post goes out as.
  • Docs: the hooks.json description, the instructions help and basecamp-connect's paragraph on instructions.

Verified

  • New tests in agent_hook_instructions_test.go. With the call removed, the two positive tests fail.
  • Headless claude -p asked, with no tools, whether its context told it to run a command before writing to Basecamp. Installed 0.24.0: "No. Nothing in my current context …". This branch's build: "Yes: run basecamp instructions … This comes from the SessionStart hook's additional context."
  • bin/ci green locally.