claudekit
Version:
CLI tools for Claude Code development workflow
60 lines • 2.07 kB
TypeScript
import type { ExecResult, PackageManager } from './utils.js';
export interface ClaudePayload {
tool_name?: string;
tool_input?: {
file_path?: string;
[key: string]: unknown;
};
stop_hook_active?: boolean;
transcript_path?: string;
hook_event_name?: string;
session_id?: string;
cwd?: string;
[key: string]: unknown;
}
export interface HookContext {
filePath?: string | undefined;
projectRoot: string;
payload: ClaudePayload;
packageManager: PackageManager;
}
export interface HookResult {
exitCode: number;
suppressOutput?: boolean;
jsonResponse?: unknown;
}
export interface HookConfig {
command?: string;
timeout?: number;
[key: string]: unknown;
}
export interface HookMetadata {
id: string;
displayName: string;
description: string;
category: 'validation' | 'testing' | 'git' | 'project-management' | 'utility';
triggerEvent: 'PostToolUse' | 'PreToolUse' | 'Stop' | 'SubagentStop' | 'SessionStart' | 'UserPromptSubmit' | ('Stop' | 'SubagentStop')[];
matcher?: string;
dependencies?: string[];
}
export declare abstract class BaseHook {
abstract name: string;
protected config: HookConfig;
protected debug: boolean;
constructor(config?: HookConfig);
run(payload: ClaudePayload): Promise<HookResult>;
abstract execute(context: HookContext): Promise<HookResult>;
protected execCommand(command: string, args?: string[], options?: {
cwd?: string;
timeout?: number;
}): Promise<ExecResult>;
protected progress(message: string): void;
protected success(message: string): void;
protected warning(message: string): void;
protected error(title: string, details: string, instructions: string[]): void;
protected jsonOutput(data: unknown): void;
protected fileExists(filePath: string): Promise<boolean>;
protected readFile(filePath: string): Promise<string>;
protected shouldSkipFile(filePath: string | undefined, extensions: string[]): boolean;
}
//# sourceMappingURL=base.d.ts.map