@@ -38,19 +38,19 @@ def sync_plugin_metadata(version: str) -> None:
3838
3939def matches_tag_filter (rule_tags : list [str ], filter_tags : list [str ]) -> bool :
4040 """
41- Check if rule has all required tags (case-insensitive AND logic).
41+ Check if rule has all required tags (AND logic).
4242
4343 Args:
44- rule_tags: List of tags from the rule (already lowercase from parsing )
45- filter_tags: List of tags to filter by
44+ rule_tags: List of tags from the rule (already normalized to lowercase )
45+ filter_tags: List of tags to filter by (already normalized to lowercase)
4646
4747 Returns:
4848 True if rule has all filter tags (or no filter), False otherwise
4949 """
5050 if not filter_tags :
5151 return True # No filter means all pass
5252
53- return all (tag . lower () in rule_tags for tag in filter_tags )
53+ return all (tag in rule_tags for tag in filter_tags )
5454
5555
5656def update_skill_md (language_to_rules : dict [str , list [str ]], skill_path : str ) -> None :
@@ -351,10 +351,10 @@ def _resolve_source_paths(args) -> list[Path]:
351351
352352 # Convert all sources
353353 aggregated = {"success" : [], "errors" : [], "skipped" : []}
354- # Parse comma-separated tags
354+ # Parse comma-separated tags and normalize to lowercase
355355 filter_tags = None
356356 if cli_args .tags :
357- filter_tags = [tag .strip () for tag in cli_args .tags .split ("," ) if tag .strip ()]
357+ filter_tags = [tag .strip (). lower () for tag in cli_args .tags .split ("," ) if tag .strip ()]
358358
359359 # Print tag filter info if active
360360 if filter_tags :
0 commit comments