{
  id          = "0009",
  slug        = "claude-session-context",
  description = "Add SessionStart hook and static project-context.md for auto-loading project identity into Claude Code sessions",
  check       = {
    tag         = "NuCmd",
    cmd         = "let root = $env.ONTOREF_PROJECT_ROOT; let hook = $\"($root)/.claude/hooks/session-context.sh\"; let ctx = $\"($root)/.claude/project-context.md\"; if ($hook | path exists) and ($ctx | path exists) { exit 0 } else { exit 1 }",
    expect_exit = 0,
  },
  instructions = "
1. Create .claude/hooks/session-context.sh with the following content and make it executable:

  #!/usr/bin/env bash
  # Hook: SessionStart
  # Injects current project identity, state dimensions, and hard constraints
  # as initial context for every Claude Code session in this directory.

  set -euo pipefail

  REPO_ROOT=\"$(git rev-parse --show-toplevel 2>/dev/null || pwd)\"

  if ! command -v nu &>/dev/null; then
    exit 0
  fi

  export ONTOREF_ACTOR=developer

  echo \"## Project Context (auto-loaded at session start)\"
  echo \"\"

  ontoref describe project --fmt text 2>/dev/null || true

  echo \"\"

  ontoref describe state 2>/dev/null || true

  chmod +x .claude/hooks/session-context.sh

2. Add the following to .claude/settings.local.json (merge into existing JSON):

  \"hooks\": {
    \"SessionStart\": [
      {
        \"hooks\": [
          {
            \"type\": \"command\",
            \"command\": \".claude/hooks/session-context.sh\"
          }
        ]
      }
    ]
  }

3. Generate the static fallback file:

  ONTOREF_ACTOR=developer ontoref describe project --fmt text > .claude/project-context.md

4. Add the import at the top of .claude/CLAUDE.md (immediately after the # heading):

  @.claude/project-context.md

5. In reflection/hooks/git-event.nu, add regeneration of project-context.md on post-merge/post-checkout.
   After the mode-detect call, insert:

  let context_file = $\"($ontoref_root)/.claude/project-context.md\"
  if ($context_file | path parent | path exists) {
    let r = (do { ^nu $wrapper describe project --fmt text } | complete)
    if $r.exit_code == 0 {
      $r.stdout | save --force $context_file
    }
  }
",
}
