Skip to content

fix(hooks): request Claude Code skill reload after SessionStart sync - #359

Open
syf2211 wants to merge 1 commit into
symposium-dev:mainfrom
syf2211:fix/session-start-reload-skills
Open

syf2211 wants to merge 1 commit into
symposium-dev:mainfrom
syf2211:fix/session-start-reload-skills

Conversation

@syf2211

@syf2211 syf2211 commented Oct 18, 2026

Copy link
Copy Markdown

Summary

After a successful SessionStart auto-sync, Claude Code hooks now return reloadSkills: true so skills installed during the hook are visible in the same session.

Motivation

Fixes #344. Claude Code discovers skills before SessionStart hooks finish; without reloadSkills, skills installed on the first sync may be invisible until the next session.

Changes

  • Add reloadSkills to canonical SessionStartOutput (symposium-sdk).
  • Set the flag when run_auto_sync succeeds on SessionStart.
  • Map the field through Claude's hookSpecificOutput wire format.
  • Preserve reloadSkills when plugin hooks merge additional context (JoinedContext).

Tests

  • cargo test session_start_requests_skill_reload (unit)
  • cargo test session_start_requests_skill_reload_on_claude (integration hook stdout)

Notes

Other agents ignore unknown hook fields; only Claude Code honors reloadSkills today.

Fixes #344

Set reloadSkills on successful SessionStart auto-sync so skills installed
during the hook are visible in the same session. Preserve the flag when
plugin hooks contribute additionalContext.

Fixes symposium-dev#344
Comment thread tests/hook_stdout.rs
/// After a successful SessionStart auto-sync, Claude Code receives
/// `reloadSkills: true` so skills installed during the hook are visible
/// in the same session (see #344).
#[tokio::test(flavor = "multi_thread")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now that I think about it, this is not ideal as for what I was going for, not that something is wrong with this code.

These test checks the hook output for that reloadSkills flag, but doesn't demonstrate that a newly installed skill becomes available in that first session.

The ideal way that I had envisioned is We'd need a real Claude session where the skill doesn't exist before session start, then show that Claude can discover and use it immediately after Symposium installs it.

@gmemuriuki gmemuriuki Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm working to get the right infra for this kind of tests, so, as for the current testing infra I don't think we can test this, because it sync first, and such we can't prove our hypothesis in question here.

I'm going to get that infra ready first, then we can fix this using it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proof that we want is: Symposium installs a previously absent skill during SessionStart, and Claude invokes it on the very first prompt.

The way to achieve this is start with a controlled before-and-after with real Claude, which needs the support of that infra. So, I'll start by implementing that, then come back to this after that has shipped chat

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Claude Code may not see skills installed by the first SessionStart sync

2 participants