Enforce style module import rule in skill and sync guard

This commit is contained in:
2026-05-25 08:35:31 +02:00
parent 1d09b6f480
commit 2792104f45
2 changed files with 31 additions and 1 deletions
@@ -54,6 +54,7 @@ Regeln:
- Semantische Tokens sind Aliase oder Kaskaden auf Foundation Tokens. - Semantische Tokens sind Aliase oder Kaskaden auf Foundation Tokens.
- Neue oder geänderte semantische Tokens an der fachlich passenden Stelle in `styleguide.css` ergänzen. - Neue oder geänderte semantische Tokens an der fachlich passenden Stelle in `styleguide.css` ergänzen.
- Struktur, Reihenfolge, Gruppierung, Kommentarlogik und Benennungssystematik von `styleguide.css` einhalten. - Struktur, Reihenfolge, Gruppierung, Kommentarlogik und Benennungssystematik von `styleguide.css` einhalten.
- Wenn CSS in Moduldateien (z. B. unter `styles/`) ausgelagert ist, muss jede neue oder umbenannte Moduldatei explizit per `@import` in `styleguide.css` eingehängt werden; unimportierte Moduldateien sind unzulässig.
- HTML-Dateien dürfen keine lokalen Token-Blöcke, keine eigenen `:root`-Definitionen und keine abweichenden Token-Definitionen enthalten. - HTML-Dateien dürfen keine lokalen Token-Blöcke, keine eigenen `:root`-Definitionen und keine abweichenden Token-Definitionen enthalten.
- HTML-Dateien dürfen semantische Tokens nur aus `styleguide.css` referenzieren. - HTML-Dateien dürfen semantische Tokens nur aus `styleguide.css` referenzieren.
@@ -212,6 +213,7 @@ Vor Abschluss prüfen:
- keine hardcoded Design Values außerhalb der Foundations - keine hardcoded Design Values außerhalb der Foundations
- neue oder geänderte semantische Tokens in `styleguide.css` gepflegt - neue oder geänderte semantische Tokens in `styleguide.css` gepflegt
- bestehende Struktur von `styleguide.css` eingehalten - bestehende Struktur von `styleguide.css` eingehalten
- bei modularisiertem CSS: alle relevanten Moduldateien sind in `styleguide.css` importiert, keine verwaisten `styles/*.css`
- betroffene Dokumentation nachgeführt - betroffene Dokumentation nachgeführt
- Components unverändert verwendet - Components unverändert verwendet
- keine Component-Internals überschrieben - keine Component-Internals überschrieben
@@ -90,8 +90,36 @@ flatten_css() {
done < "$source_file" done < "$source_file"
} }
assert_no_unimported_styles() {
local source_file="$1"
local source_root="$2"
local styles_dir="$source_root/styles"
local missing_imports=()
if [[ ! -d "$styles_dir" ]]; then
return 0
fi
while IFS= read -r css_file; do
local rel_path="./styles/$(basename "$css_file")"
if ! grep -Eq "^[[:space:]]*@import[[:space:]]+\"$rel_path\"[[:space:]]*;" "$source_file"; then
missing_imports+=("$rel_path")
fi
done < <(find "$styles_dir" -maxdepth 1 -type f -name '*.css' | sort)
if [[ ${#missing_imports[@]} -gt 0 ]]; then
echo "Unimported CSS module files detected in styles/:" >&2
for file in "${missing_imports[@]}"; do
echo " - $file" >&2
done
echo "Add missing @import lines in $source_file before syncing." >&2
exit 1
fi
}
TMP_UPSTREAM_CSS="$(mktemp)" TMP_UPSTREAM_CSS="$(mktemp)"
trap 'rm -f "$TMP_UPSTREAM_CSS"' EXIT trap 'rm -f "$TMP_UPSTREAM_CSS"' EXIT
assert_no_unimported_styles "$SOURCE_CSS" "$STYLEGUIDE_REPO_ROOT"
flatten_css "$SOURCE_CSS" "$STYLEGUIDE_REPO_ROOT" "$TMP_UPSTREAM_CSS" flatten_css "$SOURCE_CSS" "$STYLEGUIDE_REPO_ROOT" "$TMP_UPSTREAM_CSS"
cp "$TMP_UPSTREAM_CSS" "$PORTAL_CSS_PATH" cp "$TMP_UPSTREAM_CSS" "$PORTAL_CSS_PATH"