@felixgeelhaar/cclint
Version:
Catch CLAUDE.md drift before Claude misbehaves. Lints CLAUDE.md, skills, subagents, and hooks for Claude Code projects.
51 lines • 2.13 kB
TypeScript
/**
* Directory names that discovery never descends into.
*
* @remarks
* These hold generated output, VCS metadata, or tooling scratch space — none of
* which contain first-party Claude Code config worth linting, and some of which
* (e.g. `node_modules`) are large enough to make an unfiltered walk slow.
*/
export declare const IGNORED_DIRECTORIES: ReadonlySet<string>;
/** Path split into segments relative to the discovery root, e.g. `['.claude', 'agents', 'x.md']`. */
type PathSegments = readonly string[];
/**
* One recognisable Claude Code config-file shape. Kept as an explicit,
* self-describing list so the set of files cclint understands is easy to read
* and extend in one place.
*/
interface ConfigFilePattern {
/** Human-readable pattern, mirroring the glob it stands in for. */
readonly label: string;
/** Whether a file (given its root-relative segments) matches this pattern. */
matches(segments: PathSegments): boolean;
}
/**
* The config files cclint understands, expressed against root-relative path
* segments. Order is presentational only; a file matches if ANY pattern does.
*/
export declare const CONFIG_FILE_PATTERNS: readonly ConfigFilePattern[];
/** Whether a file (by its root-relative segments) is a config file cclint lints. */
export declare function isConfigFile(segments: PathSegments): boolean;
/**
* Walks a project directory and returns the Claude Code config files cclint
* understands.
*
* @remarks
* Infrastructure-layer adapter: it is the only place directory traversal (`fs`)
* happens for project-wide linting, keeping the domain and CLI free of I/O
* concerns. It resolves *what* to lint; reading and linting stay with the
* existing `FileReader` / `RulesEngine` pipeline.
*/
export declare class FileDiscovery {
/**
* Discover config files under `rootDir`.
*
* @param rootDir - Absolute or relative path to the project directory.
* @returns Absolute file paths, sorted for deterministic output.
*/
discover(rootDir: string): string[];
private walk;
}
export {};
//# sourceMappingURL=FileDiscovery.d.ts.map