Agents & OrchestrationSûr100100/100
add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
Add a new TRF rule to the mlinter. Checks for duplicates, creates the rule module and TOML entry, runs against all models, and handles violations (fix or allowlist).
ou envoie-le directement à ton agent.
Installer dans ton projet
$ npx arboris-cli install add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062aContenu à copier
---
name: add-mlinter-rule
description: Add a new TRF rule to the mlinter. Checks for duplicates, creates the rule module and TOML entry, runs against all models, and handles violations (fix or allowlist).
metadata:
origin: Hugging Face
---
# Add Mlinter Rule
## Input
- `<description>`: Natural-language description of what the rule should detect.
- Optional: specific AST pattern or a before/after diff showing the pattern.
## Constraints
- Rules MUST use static analysis only with Python's `ast` module. NEVER import runtime libraries like `torch` or `tensorflow`.
- Rules MUST follow the `check(tree, file_path, source_lines) -> list[Violation]` interface.
- Use the module-level `RULE_ID` constant instead of hardcoding the rule ID string.
## Workflow
1. Check for duplicate coverage in `mlinter/rules.toml`.
- Read the full TOML file and review existing rule descriptions and explanations.
- If an existing rule already covers the same concern, stop and ask whether to proceed, extend the existing rule, or abort.
2. Determine the next rule number.
- List all `mlinter/trf*.py` files and find the highest number.
- The new rule gets that number + 1, zero-padded to three digits.
3. Add the TOML entry to `mlinter/rules.toml`.
- Append a new `[rules.TRFXXX]` section at the end of the file with:
- `description`
- `default_enabled = true`
- `allowlist_models = []`
- `[rules.TRFXXX.explanation]` with `what_it_does`, `why_bad`, and `diff`
- Follow the exact formatting style of existing entries.
4. Create the rule module at `mlinter/trfXXX.py`.
- Start with the Apache 2.0 license header copied from an existing `trf*.py` file.
- Add a module docstring: `"""TRFXXX: <short description>."""`
- Import `ast`, `Path`, and any needed helpers from `._helpers`.
- Define `RULE_ID = "" # Set by discovery`.
- Implement `def check(tree: ast.Module, file_path: Path, source_lines: list[str]) -> list[Violation]:`.
- Refer to existing rules in `mlinter/trf*.py` for patterns and helpers.
5. Run the rule against all models.
```bash
python -m mlinter --enable-rules TRFXXX
```
- If the run errors, fix the rule code and re-run.
6. Handle violations.
- Present the list of violations to the user.
- Ask whether to fix the models or add them to `allowlist_models` in `mlinter/rules.toml`.
- If fixing, apply the fixes and re-run the rule to confirm zero violations.
- If allowlisting, extract the model directory names from the violation file paths and add them to `allowlist_models`.
7. Add tests in `tests/test_trfXXX.py`.
- Add at least one positive test and one negative test.
- Follow the existing pattern: create source strings, call `mlinter.analyze_file()`, and assert on violations.
- If the tests use the standard `_run(rule, source, file_name=...)` helper, inherit from
`RuleTestCase` from `tests/rule_test_utils.py`.
- For cross-file rules, use `tempfile.TemporaryDirectory` to create real file structures.
- If the rule maps a modeling class to a specific config class, add a regression where another config class in the same file would otherwise cause a false positive or false negative.
- Run the focused tests:
```bash
pytest tests/test_trfXXX.py -x -v
```
8. Update documentation.
- No rule page to write: the docs site generates one per rule from `rules.toml` and `docs/rules/` is git-ignored, so never commit one. This makes `description`/`what_it_does`/`why_bad`/`diff` published prose — write them for someone reading a failed CI job. Preview: `make docs-rules`.
- Add an entry under the `## [Unreleased]` section of `CHANGELOG.md` (create that section above the latest released version if it does not yet exist) describing the new rule. Mention any incidental changes shipped with it (e.g. expanding `MODELING_PATTERNS` to cover new file types), since those affect every rule.
- If the rule applies to file types not already documented, update the list in both `README.md` and `docs/index.md`.
9. Final validation.
```bash
make lint
make test
```
## Model architecture knowledge
The mlinter processes files one at a time via `analyze_file(file_path, text, enabled_rules)`. When a rule needs cross-file information, the rule module must read the other file from disk. Watch for these patterns:
### Multi-config directories
Some model directories contain multiple configuration files. Match by suffix first:
`modeling_foo_text.py` -> `configuration_foo_text.py`.
Only fall back to a generic `configuration_*.py` pick when there is no exact suffix match.
### Multi-class configuration files
A single `configuration_*.py` file can define multiple config classes. If the rule is checking a property that belongs to one specific config class, do not accept the first matching class in the file. Resolve the modeling class's target config class first:
- Prefer `config_class` from the model class, following local modeling inheritance if a parent `*PreTrainedModel` declares it.
- If there is no explicit `config_class`, infer the best match from class names, usually by longest shared prefix.
Then validate only that config class.
### Inherited configs
Some config classes inherit from another model config rather than directly from `PreTrainedConfig`. If the base class is not `PreTrainedConfig` or `PretrainedConfig` and still ends with `Config`, assume the field may be inherited and skip the violation unless the rule specifically needs stricter handling.
### Modular imported bases
`modular_*.py` files commonly define classes that inherit from another model's imported class, and
`analyze_file` only passes the AST for the file currently being linted. If a rule depends on inherited
methods or a full base chain, an imported base is unknown, not evidence that the expected behavior is
missing. Prefer resolving the generated `modeling_*.py` when the rule needs the flattened class, or
skip/report nothing when `_base_chain_has_unresolved_import(...)` says the local AST is inconclusive.
Always add a regression test with a `modular_*.py` class inheriting from an imported base.
### `tie_word_embeddings` is not in `PreTrainedConfig`
The base `PreTrainedConfig` does not define `tie_word_embeddings`. When a rule needs it, the model config must declare it explicitly, either as a class attribute or through `self.tie_word_embeddings = ...` in initialization code.
## Reference
- Rule modules: `mlinter/trf*.py`
- Rule config: `mlinter/rules.toml`
- Helpers: `mlinter/_helpers.py`
- Rule tests: `tests/test_trfXXX.py`
- Shared rule-test helpers: `tests/rule_test_utils.py`
- General linter tests: `tests/test_mlinter.py`
- README (repo front door + PyPI description): `README.md`
- Docs site source: `docs/` — hand-written pages only; `docs/rules/` is generated and git-ignored
- Rule page generator: `scripts/build_docs.py`Colle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
`<description>`: Natural-language description of what the rule should detect.
Optional: specific AST pattern or a before/after diff showing the pattern.
Rules MUST use static analysis only with Python's `ast` module. NEVER import runtime libraries like `torch` or `tensorflow`.
Rules MUST follow the `check(tree, file_path, source_lines) -> list[Violation]` interface.
Comment utiliser add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
Dis simplement à ton agent quelque chose comme :
Applique le skill add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a à cette tâche
Utilise add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a pour améliorer cette implémentation
Passe en revue ce sujet avec add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
Skills liés à add-mlinter-rule__huggingface-transformers-mlinter__ai-skills-0432dd43062a
acceleration__microsoft-aibast-agents-library__solutions-deal-progression-manual-skills-4c8a74dab5dd
Compare synthetic acceleration options and clearly separate scenario value from forecast commitments.account-overview__microsoft-aibast-agents-library__solutions-account-intelligence-manual-skills-3546ce8f6420
Create a synthetic Acme account overview and identify evidence that merits seller attention.acroform-writer__microsoft-cat-agent-skills__submissions-e44ef69423b5
Use this skill whenever the user wants values written INTO an existing PDF form that lives in the connected SharePoint knowledge source — filling out, completing, populating, or submitting a fillable PDF (application, intake sheet, contract, government form) from data they supply, a spreadsheet row, or the conversation. Triggers include "fill out the job application form", "complete the intake form for [person]", "populate our standard NDA template", and "make this ready to send / non-editable" (flatten). The source form should be found via knowledge search; only ask the user to upload it if knowledge search turns up nothing plausible. different task), and do NOT use it on scanned/image-only PDFs that have no real fillable fields — those need OCR or manual overlay instead, which this skill explicitly detects and reports rather than silently failing.