/**
 * Body-level lint for skill members. The frontmatter parsers validate
 * structure; this validates the template body - the part that actually runs.
 * These checks catch the failure class the parsers can't see: a tool body
 * using a mustache tag the engine doesn't render, or a placeholder that
 * resolves to nothing because it was never declared as a parameter.
 *
 * Tool bodies (source/custom-tools/template.ts) support:
 *   {{ name }}                shell-quoted substitution
 *   {{# name }}…{{/ name }}   section (rendered when truthy)
 *   {{^ name }}…{{/ name }}   inverted section (rendered when falsy)
 *
 * Command bodies (source/custom-commands/executor.ts) support:
 *   {{ name }}                plain substitution (not shell-quoted)
 *   {{# name }}…{{/ name }}   section / inverted section (same engine as tools)
 * with the built-in variables cwd, command, and args available alongside the
 * declared positional parameters.
 */
export interface BodyIssue {
    severity: 'error' | 'warning';
    message: string;
}
/**
 * Lint a custom-tool script body against its declared parameter names.
 */
export declare function lintToolBody(body: string, declaredParams: string[]): BodyIssue[];
export interface CommandBodyLintOptions {
    /**
     * True when the frontmatter has a `parameters:` key but it did NOT parse to
     * a list of names. This is almost always the custom-tool parameter format
     * (a typed mapping) used by mistake - the command parser silently drops it,
     * so the placeholders look undeclared. We call that out explicitly.
     */
    parametersMalformed?: boolean;
}
/**
 * Lint a custom-command prompt body. Command bodies support {{ name }}
 * substitution plus {{# name }} / {{^ name }} sections; every referenced name
 * must be a declared parameter (the part before any `=default`) or a built-in.
 * `declaredParams` should already be stripped to bare names.
 */
export declare function lintCommandBody(content: string, declaredParams: string[], opts?: CommandBodyLintOptions): BodyIssue[];
//# sourceMappingURL=lint-body.d.ts.map