| name | hook-sdk-integration |
| description | LLM invocation patterns from hooks via SDK. Use when you need background agents, CLI calls, or cost optimization. |
| allowed-tools | Read, Grep, Glob |
Hook SDK Integration
Patterns for invoking LLM calls from hooks using u-llm-sdk/claude-only-sdk.
IMPORTANT: SDK Detailed Guide
Load when implementing SDK:
Skill("forge-editor:llm-sdk-guide")
This skill covers SDK call pattern interfaces.
llm-sdk-guide covers SDK detailed APIs and types.
Quick Start
# Background agent pattern (non-blocking)
(python3 sdk-agent.py "$INPUT" &)
echo '{"status": "started"}'
exit 0
Key Findings (Verified: 2025-12-30)
| Item |
Result |
| SDK calls |
Possible from hooks |
| Latency |
~30s (CLI session initialization) |
| Background |
Non-blocking execution possible (0.01s return) |
| Cost |
Included in subscription (no additional API cost) |
Architecture
Hook (bash) → Background (&) → SDK (Python) → CLI → Subscription usage
│ │
└─── Immediate return (0.01s) ───────────────────────┘
Pattern Selection
| Situation |
Pattern |
Reason |
| Need fast evaluation |
type: "prompt" |
In-session execution, fast |
| Need isolation |
Direct CLI call |
Separate MCP config possible |
| Complex logic |
SDK + Background |
Type-safe, non-blocking |
| Cost reduction |
Local LLM (ollama) |
Free, privacy |
SDK Configuration (Python)
from u_llm_sdk import LLM, LLMConfig
from llm_types import Provider, ModelTier, AutoApproval
config = LLMConfig(
provider=Provider.CLAUDE,
tier=ModelTier.LOW,
auto_approval=AutoApproval.FULL,
timeout=60.0,
)
async with LLM(config) as llm:
result = await llm.run("Your prompt")
Cost Structure
| Method |
Cost |
type: "prompt" |
Included in subscription |
| Claude CLI |
Included in subscription |
| SDK via CLI |
Included in subscription |
| Direct API |
Per-token billing |
References