Agent skill
lifecycle-hooks
Session-start lifecycle hooks for cross-plugin dependency resolution. Creates symlinks so cross-package references work in cached plugin environments.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/lifecycle-hooks-sequenzia-agent-alchemy-5
SKILL.md
Lifecycle Hooks
This skill documents the session-start lifecycle hooks used by the dev-tools package. These hooks run automatically at session initialization to ensure cross-plugin references resolve correctly in cached environments.
Cross-Plugin Dependency Resolution
Problem
When plugins are installed from a marketplace/registry, each plugin is cached in an isolated directory with organization-prefixed names and version subdirectories. Cross-plugin references (e.g., loading a skill from a sibling plugin via relative paths) break because the directory structure differs from the local development monorepo layout.
Local monorepo layout:
claude/
├── core-tools/ <- ../core-tools/ resolves naturally
├── dev-tools/
└── claude-tools/
Cached plugin layout:
plugins/cache/org-name/
├── org-name-core-tools/
│ └── 0.2.3/ <- long path, org-prefixed name
├── org-name-dev-tools/
│ └── 0.3.4/
└── org-name-claude-tools/
└── 0.2.5/
Solution
The resolve-cross-plugins.sh script (in references/) runs at session start and creates short-name symlinks at the plugin-name directory level so that ../{short-name}/ resolves correctly in both environments.
After script runs:
plugins/cache/org-name/org-name-dev-tools/
├── 0.3.4/ <- actual plugin content
├── core-tools -> ../org-name-core-tools/0.2.3 <- symlink
└── claude-tools -> ../org-name-claude-tools/0.2.5 <- symlink
Hook Configuration
The hook runs as a session_start event of type command:
event: session_start
type: command
command: bash <plugin_root>/hooks/resolve-cross-plugins.sh <plugin_root>
timeout: 10
Script Behavior
The resolve-cross-plugins.sh script:
-
Guard: Only runs in cached plugin environments (path contains
/plugins/cache/). In local monorepo development, the script exits immediately since relative paths already work. -
Discovery: Iterates over sibling directories in the organization directory, stripping the org prefix to derive the short name (e.g.,
org-name-core-tools->core-tools). -
Version Resolution: Determines the correct version directory using:
- Primary: reads
installed_plugins.jsonfrom the agent configuration directory (requiresjq) - Fallback: sorts version directories by version number and takes the latest
- Primary: reads
-
Symlink Creation: Creates relative symlinks (
ln -sfn) from the short name to the resolved version directory. Skips if a real (non-symlink) directory already exists with that name. -
Safety: Never blocks session start -- the script traps all errors and exits cleanly with code 0. Debug logging is available via the
AGENT_ALCHEMY_HOOK_DEBUG=1environment variable.
Adaptation for Other Platforms
If your platform uses a different plugin caching mechanism:
- Identify the cached layout -- how are sibling plugins organized on disk?
- Determine the naming convention -- are names prefixed with organization/scope?
- Create equivalent symlinks -- ensure
../{short-name}/resolves to the correct version of each sibling plugin - Handle version resolution -- use your platform's installed-plugins metadata if available
- Ensure safety -- never block session initialization on symlink creation failures
Integration Notes
What this component does: Provides a session-start hook that creates short-name symlinks for cross-plugin dependency resolution in cached/installed plugin environments, ensuring that relative path references between plugin packages work correctly.
Capabilities needed: Shell execution (bash script with ln, jq), file system access (symlink creation in plugin cache directory).
Adaptation guidance: This hook addresses a specific problem with cached plugin directory layouts. If your platform resolves cross-package references differently (e.g., through a module system, import maps, or path aliases), you may not need this hook. The script in references/resolve-cross-plugins.sh can serve as a reference implementation. The key requirement is that ../{package-short-name}/ relative paths must resolve from any sibling plugin's root directory.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?