Skip to content
Development
Hook

Hooks

What superpowers-symfony runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.

From plugin
superpowers-symfony
21744 skills14 agents13 commands1 hook
Install
> /plugin marketplace add dev-toolings/superpowers-symfony
> /plugin install superpowers-symfony@superpowers-symfony

Ships with superpowers-symfony. Installing the plugin gets these hooks.

What fires, and when

SessionStart

Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.

  • Matchesstartup|resume|clear|compact${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh
Read hooks/hooks.json

Where it lives

  • hooks/session-start.shRunsGitHub
    Read the script
    #!/usr/bin/env bash
    #
    # Claude Code SessionStart hook: a thin wrapper around the harness-agnostic
    # bin/symfony-context.
    #
    # It prints plain Markdown, which SessionStart appends to the session context.
    # The previous version printed a bare JSON object; SessionStart parses valid
    # JSON as structured hook output, and an object with unknown keys fails schema
    # validation, so the detection never reached the model. Markdown avoids that
    # class of bug entirely — and needs no JSON escaping in bash.
    
    set -euo pipefail
    
    ROOT="${CLAUDE_PLUGIN_ROOT:-$(cd "$(dirname "$0")/.." && pwd)}"
    
    exec "$ROOT/bin/symfony-context" --format=markdown
    

Read the script before you install anything that runs on your machine. This is the one part of a plugin that acts without being asked.

Ships withsuperpowers-symfony

Superpowers Symfony gives coding agents deep, version-accurate Symfony expertise — from Doctrine schema design and API Platform REST/GraphQL APIs to test-driven development, async Messenger workflows, caching, rate limiting, and clean architecture.

Get the whole plugin