@felixgeelhaar/cclint
Version:
Catch CLAUDE.md drift before Claude misbehaves. Lints CLAUDE.md, skills, subagents, and hooks for Claude Code projects.
70 lines • 2.21 kB
TypeScript
import type { Rule } from './Rule.js';
import type { ContextFile } from './ContextFile.js';
import type { Violation } from './Violation.js';
import type { Fix } from './AutoFix.js';
/**
* Abstract base class for custom rules
* Provides a foundation for implementing custom validation logic
*/
export declare abstract class CustomRule implements Rule {
readonly id: string;
readonly description: string;
readonly category: string | undefined;
readonly version: string | undefined;
constructor(id: string, description: string, options?: {
category?: string;
version?: string;
});
/**
* Main linting method that calls the internal validation
* This provides a consistent interface while allowing custom implementation
*/
lint(file: ContextFile): Violation[];
/**
* Internal validation method to be implemented by custom rules
* @param file The context file to validate
* @returns Array of violations found
*/
protected abstract validateInternal(file: ContextFile): Violation[];
/**
* Generate auto-fixes for violations created by this rule
* @param violations Array of violations to fix
* @param content Original file content
* @returns Array of fixes to apply
*/
abstract generateFixes(violations: Violation[], content: string): Fix[];
/**
* Validate rule configuration options
* Override this method to add custom configuration validation
*/
validateOptions(_options: Record<string, unknown>): boolean;
/**
* Get rule metadata for documentation and tooling
*/
getMetadata(): {
id: string;
description: string;
category: string | undefined;
version: string | undefined;
hasAutoFix: boolean;
};
}
/**
* Interface for plugin exports
* Plugins must export an object conforming to this interface
*/
export interface Plugin {
name: string;
version: string;
description?: string;
author?: string;
rules: CustomRule[];
dependencies?: string[];
}
/**
* Type for plugin module exports
*/
export interface PluginModule {
default: Plugin;
}
//# sourceMappingURL=CustomRule.d.ts.map