Synthèse
At the center of my workflow is a custom kai command that wraps Claude Code with voice notifications and context management. bash# Interactive mode (default PAI directory) kai # Single-shot query with voice kai "what's my schedule today?" # Run with specific context directory kai --context ~/Projects/Website "deploy the latest changes" # Silent mode (no voice) kai --no-voice "analyze this code for security issues" # Wallpaper management (Kitty terminal integration) kai wallpaper circuit-boar
At the center of my workflow is a custom kai command that wraps Claude Code with voice notifications and context management. bash# Interactive mode (default PAI directory) kai # Single-shot query with voice kai "what's my schedule today? " # Run with specific context directory kai --context ~/Projects/Website "deploy the latest changes" # Silent mode (no voice) kai --no-voice "analyze this code for security issues" # Wallpaper management (Kitty terminal integration) kai wallpaper circuit-board1234567891011121314 The implementation (TypeScript/Bun): typescriptclass Kai { private config: KaiConfig = { contextDir: PAI_DIR, voice: true, maxTurns: 10, allowedTools: ["Bash", "Edit", "Read", "Write", "Grep", "Glob", ... ], systemPrompt: `You are Kai, Daniel's digital assistant. You're snarky but helpful, concise and direct.
` }; async run(prompt: string, options: Partial = {}): Promise { // Voice speaks the prompt await this. notify("Kai Starting", `Working on: ${prompt}`, true); // Execute Claude with configured tools and context const proc = Bun. spawn(["claude", ... args], { cwd: this. config.
contextDir, env: { KAI_SESSION: "true" } }); // Extract summary from output const summaryMatch = output. match(/SUMMARY:\s*(. +)/); // Voice speaks the completion await this. notify("Kai Complete", summary, true); } }123456789101112131415161718192021222324252627 The voice notifications create a natural feedback loop. When I run kai "research these 5 companies" and walk away, I hear "Kai starting: Working on research these 5 companies" from across the room.
Five minutes later I hear "Kai complete: I researched all five companies and found funding data for each. " This transforms asynchronous work into ambient awareness. The wallpaper integration is a small detail that makes a difference. I have a collection of UL-branded wallpapers for Kitty terminal.