/** * Emit the rules the overview skill points at * (overview-skill-crossreference-cost/AC-2, AC-3). * * Six rules used to sit inside the overview, and a skill that said "see **The * context rule** in **aidlc-overview**" cost its reader the whole 24KB file for * a 2KB rule. Each rule now lives in `.aidlc/resources/rules/.md`, one file * per rule, so following one cross-reference costs that rule. On Cursor the * overview is always applied, so it is also what every turn carries. * * Deliberately NOT a platform adapter, for the reason `question-rendering.ts` * gives: every platform reads these by path, so there is nothing to package. * * No version stamp. Six files re-stamped on every release is a diff nobody * reads, and the content is what the reader needs to trust, not its version. * * Rule ids come from the content package's own directory listing, already * narrowed by `loadRules` to `^[a-z0-9-]+$`, and are checked again here before * they touch disk. * * @module */ import type { Rule } from '@rasensio/aidlc-content'; /** Repo-relative directory, for reports and tests. */ export declare const RULES_DIR: string; /** * Ownership notice. Its presence is also what makes a file prunable (AC-3): a * file in the directory without it was put there by someone else, and is theirs. */ export declare const RULE_MARKER = ""; /** Outcome of one emission pass. */ export interface RulesReport { /** Repo-relative paths written. */ written: string[]; /** Repo-relative paths removed because the content package no longer ships them. */ removed: string[]; warnings: string[]; } /** * Render one rule as it is emitted: the H1, then the marker, then the rest. * * The marker goes after the heading so the file opens with something a human * reads first, matching `question-rendering.ts`. */ export declare function renderRule(body: string): string; /** * Write every shipped rule into a project, and remove emitted rules that are no * longer shipped. * * @param projectRoot - Absolute project root. * @param opts.dryRun - Compute the report without touching disk. * @param opts.rules - The rules to emit. A test seam; defaults to the content * package's. */ export declare function installRules(projectRoot: string, opts?: { dryRun?: boolean; rules?: Rule[]; }): RulesReport; /** * One-line summary of an emission pass, or null when nothing changed. * * Silent when nothing changed, for the reason `summarizeRoadmapSkill` gives: a * line on every run trains the reader to skip the section it sits in. */ export declare function summarizeRules(report: RulesReport): string | null; //# sourceMappingURL=rules.d.ts.map