| name | hardcode-scan |
| description | Scanne un dépôt pour détecter secrets, URLs env-spécifiques et magic values hardcodées. Rapport fichier:ligne avec suggestions. |
| version | 1.0.0 |
| platforms | ["linux","macos"] |
| metadata | {"hermes":{"tags":["scan","secrets","security","hardcode","env"],"related_skills":["github","cost-audit"],"model":"deepseek-v4-full","coding_delegate":"mistral-3.5","coding_runtime":"vibe-cli"}} |
hardcode-scan
Adaptation de hardcode — ULK → Hermes. Carte :
docs/backlog/2026-06-28-SPEC-HERMES-HARDCODE-SCAN/CARD.md (P3, GitHub #247).
Scanne le code source : credentials, URLs/IPs env-dépendantes, magic values. Rapport
fichier:ligne : type : valeur masquée + suggestions (variable d'env, constante nommée).
Report-only par défaut ; un mode --fix opt-in édite les sources.
Runtime & modèles
Vault
- écriture optionnelle du rapport dans
Resources/reports/hardcode-YYYY-MM-DD.md (sur demande).
Procédure
- Cible : dépôt local ou cloné via skill
github.
- Appliquer les patterns de détection : tokens/keys, IPs, URLs
http://localhost/192.168.x.x, nombres magiques non commentés.
- Rapport
fichier:ligne : type : valeur masquée + suggestion de remplacement.
- Mode
--fix (opt-in) : proposer un diff → attendre confirmation → déléguer l'édition à Mistral via vibe.
- Écrire le rapport dans le vault si demandé.
Implémentation (v1 runnable)
Cœur déterministe livré : hardcode-scan.sh (à côté de ce SKILL.md). Scanne un dossier
et émet fichier:ligne:type. Report-only ; --fail-on-find pour usage CI. Patterns couverts :
clés AWS, en-têtes de clé privée, assignations secret/api_key/password/token (≥6 car.), tokens
Slack, URLs env-spécifiques (localhost/127.0.0.1/10.x/192.168.x) et IPs privées.
hardcode-scan.sh "$HERMES_VAULT" --fail-on-find
Testé via hermes/tests/hardcode-scan.test.sh (4 cas verts). Les nombres magiques et la
PII (emails/téléphones) relèvent du jugement — trop de faux positifs en regex pure — donc
délégués au modèle, pas au .sh. Le mode --fix (édition des sources) reste délégué à
Mistral 3.5 via vibe et n'est pas couvert par ce script.
Critères d'acceptation
Pièges
- Faux positifs sur URLs de documentation : exclure
example.com, localhost dans les tests.
- Ne pas proposer de fix automatique sans
--fix explicite — Hermes ne modifie pas le code sans accord.
- Prompt de délégation coding fermé (fichier + contrat) : vibe n'a pas de LSP.