diff --git a/.fallowrc.jsonc b/.fallowrc.jsonc index 27ae87f2c..30e0a27aa 100644 --- a/.fallowrc.jsonc +++ b/.fallowrc.jsonc @@ -59,6 +59,9 @@ // prose), not import-graph reachable. "skills/motion-graphics/grounding/**", "skills/motion-graphics/categories/**", + // Agent-invoked reference materials (template + motion-primitive HTML, catalogs), + // forked by path by the frame-worker per SKILL.md prose, not import-graph reachable. + "skills/music-to-video/references/**", // Bundled @font-face data (read at runtime via fs.readFileSync, invisible // to the import graph) + its manual rebuild tool. "skills/**/fonts/**", diff --git a/packages/core/src/lint/rules/composition.ts b/packages/core/src/lint/rules/composition.ts index 9c76ab03a..63be85fa5 100644 --- a/packages/core/src/lint/rules/composition.ts +++ b/packages/core/src/lint/rules/composition.ts @@ -1,4 +1,4 @@ -import type { LintContext, HyperframeLintFinding } from "../context"; +import type { LintContext, HyperframeLintFinding, ExtractedBlock } from "../context"; import { findHtmlTag, readAttr, readJsonAttr, stripJsComments, truncateSnippet } from "../utils"; import { COMPOSITION_VARIABLE_TYPES } from "../../core.types"; @@ -63,6 +63,19 @@ function leftmostCompoundClasses(selector: string): string[] { return (leftmost.match(/\.([\w-]+)/g) ?? []).map((c) => c.slice(1)); } +// Distinct selectors across all