| name | radar |
| description | Scanne issues, PRs, branches, milestones, CI et roadmap.md de Redface 2 et produit un rapport en 4 buckets (urgent / court terme / roadmap proche / gros chantiers). Spécialisé Redface 2 (lit la phase courante depuis methodology.md, les milestones, les dépendances externes déclarées dans roadmap.md). Mode `collecte` par défaut (signaux objectifs), mode `score` en argument pour avis subjectif. |
| argument-hint | [score] â sans argument: collecte brute. Avec 'score' ou 'triage': ajoute une couche de scoring subjective. |
| disable-model-invocation | true |
/radar â radar repo Redface 2
Objectif
Faire le tour rapide de l'état du repo et produire une liste actionnable de quoi faire ensuite. Pas un audit, pas une review : un radar court qui catégorise issues / PRs / branches / CI / roadmap pour que le contributeur (humain ou agent) attaque le bon truc.
Spécialisé Redface 2 :
- connaĂźt les phases (
docs/specs/roadmap.md, milestones GitHub Phase N â *)
- détecte les blocages structurels en lisant
docs/specs/roadmap.md (sections "prérequis externes", graphe mermaid de dépendances) et les corps d'issues du milestone courant (cherche bloque #N, dépend de #N, prérequis #N dans la description, ou les références d'autres issues via gh issue view <n> --json body). Ne pas hardcoder les numéros d'issues dans ce skill : ils dérivent dÚs qu'une issue est scindée ou fermée. Utiliser uniquement la roadmap canonique et les liens entre issues.
- connaĂźt la mĂ©thodologie triple-hybride et le fait que le projet n'a pas de dates fermes â les phases sont ordonnĂ©es par dĂ©pendances, pas datĂ©es (cf.
docs/specs/methodology.md)
Quand l'invoquer
- Début de session quand on hésite sur la prochaine action.
- Avant d'ouvrir une nouvelle PR pour vérifier qu'on ne marche pas sur une PR existante.
- Avant un sync (humain â agent, ou cross-agent) pour partager une vue d'ensemble.
- AprÚs une grosse merge pour voir ce que ça débloque.
Modes
| Mode | Argument | Sortie |
|---|
| Collecte (défaut) | aucun | Buckets remplis avec signaux objectifs uniquement (CI rouge, PR >14j, milestone courant, etc.). Aucune opinion, aucun classement à l'intérieur d'un bucket. |
| Score | score ou triage | MĂȘme collecte + couche subjective : score 1-5 par item (impact Ă effort Ă dĂ©bloque-quoi) et top-3 recommandĂ© pour la prochaine session. |
Le mode collecte est sĂ»r (on ne se trompe pas en restituant des faits). Le mode score est une opinion d'agent : utile en lecture rapide, mais Ă recouper avec le jugement humain. Toujours afficher mode: collecte ou mode: score en tĂȘte du rapport.
Ătapes
1. Source of truth â phase courante
Lire :
docs/specs/roadmap.md â lister les phases et leur statut (Ă faire, En cours, Fait).
docs/specs/methodology.md â noter le mode opĂ©rationnel courant (spec / prototype / TDD).
- Milestones GitHub :
gh api repos/ForumHFR/redface2/milestones --jq '.[] | {title, due_on, open_issues, closed_issues}'.
La phase active = premiĂšre phase avec open_issues > 0 ET dont les phases prĂ©cĂ©dentes sont closes ou marquĂ©es « non bloquantes ». Ne pas infĂ©rer un statut depuis les dates des milestones â due_on est indicatif, pas contractuel.
2. Collecte des signaux
Tous les signaux ci-dessous sont objectifs (vrai/faux, pas d'opinion). Lancer en parallĂšle quand possible.
| Signal | Commande | Bucket par défaut |
|---|
CI rouge sur main | gh run list -R ForumHFR/redface2 --workflow=ci.yml --branch=main --limit 5 --json conclusion,createdAt | Urgent |
| CI rouge sur PR ouverte | gh pr list -R ForumHFR/redface2 --json number,statusCheckRollup --jq '.[] | select(.statusCheckRollup[]?.conclusion=="FAILURE")' | Urgent |
| Security alerts (Dependabot) | gh api repos/ForumHFR/redface2/dependabot/alerts --jq '.[] | select(.state=="open") | {severity:.security_advisory.severity, package:.dependency.package.name, summary:.security_advisory.summary}' | Urgent (severity â„ moderate) |
| PR ouverte >14j sans review | gh pr list -R ForumHFR/redface2 --state open --json number,title,createdAt,reviewDecision | jq '[.[] | select((now - (.createdAt | fromdateiso8601)) > 1209600 and .reviewDecision != "APPROVED")]' | Urgent |
| PR ouverte récente (< 14j) | gh pr list -R ForumHFR/redface2 --state open | Court terme |
Issues priority:high ou bug ouvertes | gh issue list -R ForumHFR/redface2 --state open --label "bug" (le projet n'a pas encore de label priority:* ; ajouter ici les labels qui apparaissent plus tard) | Urgent si bug, sinon bucket de la phase concernée |
| Issues du milestone courant | gh issue list -R ForumHFR/redface2 --state open --milestone "<phase courante>" | Roadmap proche |
| Issues phase suivante | mĂȘme commande, milestone N+1 | Gros chantiers |
| Issues phases ultĂ©rieures (N+1, N+2, âŠ) | une commande par phase, ex. for p in phase-2 phase-3 phase-4 phase-5; do gh issue list -R ForumHFR/redface2 --state open --label "$p" --json number,title,labels; done. â ïž gh issue list --label "a,b,c" filtre en AND (intersection), pas en OR â ne pas utiliser en CSV pour une union de phases. | Gros chantiers |
| Branches feature actives | git branch -r --list 'origin/feature/*' --sort=-committerdate | head -10 | annoter chaque PR avec sa branche pour repérer les branches sans PR |
| Branches sans PR | comparer git branch -r --list 'origin/feature/*' avec gh pr list --json headRefName --jq '.[].headRefName' | Court terme (Ă transformer en PR ou nettoyer) |
| TODO/FIXME récents (commits derniers 30j) | voir bloc bash ci-dessous (commande sortie de la table car contient | qui casse l'échappement Markdown) | Court terme |
| Drafts ADR | for f in docs/adr/0*.md; do status=$(awk '/^## Statut/{getline; getline; print; exit}' "$f"); echo "$f â $status"; done puis filtrer ceux dont le statut commence par ProposĂ©. â ïž Le statut est Ă 2 lignes aprĂšs l'en-tĂȘte ## Statut (ligne vide intermĂ©diaire) â un grep -A1 '## Statut' ne fonctionne pas. | Gros chantiers (dĂ©cisions structurelles Ă acter) |
| DĂ©pendances externes | extraire la liste depuis docs/specs/roadmap.md (graphe mermaid des dĂ©pendances + sections « prĂ©requis externes » des phases) â chercher les repos en cylindre ou citĂ©s explicitement, puis pour chaque repo gh repo view <owner>/<repo> --json updatedAt. â ïž Les noms de repos citĂ©s Ă date dans roadmap.md (ex. XaaT/hfr-redkit pour MPStorage2, XaaT/hfr-redflag pour le Worker) sont plus stables que les numĂ©ros d'issues mais peuvent quand mĂȘme bouger (rename, archive, transfert) â ne pas les hardcoder ici, lire la roadmap. | Gros chantiers + flag « bloquant Phase N » |
Commande TODO/FIXME (sortie de la table car | casserait les colonnes Markdown â pattern shell complet ici, Ă copier-coller tel quel) :
git log --since="30 days ago" --pickaxe-regex -S 'TODO|FIXME' --oneline -- '*.kt' '*.md' | head -20
git show <sha> -- '*.kt' '*.md' | grep -E '^\+.*\b(TODO|FIXME)\b'
â ïž Ăviter git log -p brut sur 30 jours : gĂ©nĂšre le diff complet de tous les commits .kt/.md avant de filtrer, lent dĂšs que le repo grossit. --pickaxe-regex -S filtre cĂŽtĂ© Git et ne diff que les commits qui modifient effectivement une occurrence. Le pattern doit ĂȘtre 'TODO|FIXME' (POSIX ERE â \| est BRE et matche le caractĂšre | littĂ©ral, pas une alternance).
Notes :
gh api dependabot/alerts peut retourner 404 si Dependabot n'est pas activĂ© sur le repo â c'est un signal en soi (Ă activer ?), pas une erreur du skill. Le rapporter en âčïž.
- Toujours filtrer les issues
state:open. Le radar ne re-traite pas le clos.
- Pour les issues, toujours afficher le numéro et le label de phase (ex.
#15 [phase-1] HfrParser âŠ) â le numĂ©ro est le levier principal.
3. Buckets
Quatre buckets, dans cet ordre. Toujours rendre les quatre, mĂȘme vides ((rien) dans ce cas).
3.1 Urgent
Bloquants immĂ©diats. Doit pouvoir ĂȘtre attaquĂ© dans la session courante.
- CI rouge sur
main ou sur une PR ouverte
- Security alerts sévérité ℠moderate
- PR ouverte >14j sans review et sans activité (signal de stagnation)
- Issues
bug ouvertes (en attendant un label priority:high)
3.2 Court terme (cette semaine)
ĂlĂ©ments qui mĂ©ritent d'ĂȘtre tranchĂ©s rapidement mais pas critiques.
- PR ouvertes <14j (statut review, CI, derniers commentaires)
- Branches feature locales sans PR (Ă transformer ou supprimer)
- TODO/FIXME ajoutés dans les commits des 30 derniers jours
- Issues
bug non triées dans une phase
3.3 Roadmap proche (phase courante)
Issues attachées au milestone de la phase courante (cf. § 1).
- Trier par : prĂ©sence d'un blocage dĂ©clarĂ© dans la description â bloquantes en premier, puis grosses (label
architecture, storage, navigation), puis le reste.
- Annoter chaque issue avec la liste de ses dépendances connues (ex.
#3 PostRenderer â bloquĂ©e par #15 HfrParser).
- Phase courante par défaut détectée auto en § 1 ; le contributeur peut override en passant un argument (à étendre plus tard).
3.4 Gros chantiers (phases suivantes + structurels)
- Issues des phases N+1 et au-delĂ .
- ADRs
Proposé non actées.
- Dépendances externes (lire la liste depuis
roadmap.md Ă chaque run, ne pas hardcoder ici) â flagger comme đ externe.
- Initiatives spec-only (pas encore d'issue) repérées dans
roadmap.md comme « à acter ».
4. Mode score (optionnel)
Si l'argument est score ou triage :
- Pour chaque item, scorer impact (1-5) à effort inverse (1 = gros / 5 = petit) à débloque (nb d'autres items que ça libÚre, plafonné à 3).
- Trier l'intérieur de chaque bucket par score décroissant.
- Ajouter en tĂȘte de rapport un top-3 « si tu n'attaques qu'une chose cette semaine, attaque ⊠» â avec une justification d'une phrase par item.
- Toujours rappeler :
Score subjectif (mode score) â recouper avec le jugement humain.
Ne jamais scorer en mode collecte. Ne jamais ajouter de top-3 en mode collecte. Si le mode est ambigu, défaut = collecte.
Format de sortie
## /radar Redface 2 â <YYYY-MM-DD>
mode: <collecte | score>
phase courante: <Phase N â Nom> (milestone: N open / M closed)
mode opérationnel: <spec | prototype | TDD selon methodology.md>
### đš Urgent
- (rien) ou liste
### â±ïž Court terme
- ...
### đșïž Roadmap proche (phase courante)
- ...
### đïž Gros chantiers
- ...
---
âčïž Notes (signaux secondaires, dĂ©pendances externes, drafts ADR, etc.)
Variante mode score : ajouter avant les buckets :
### â Top 3 recommandĂ© (mode score)
1. **#NNN â <titre>** (score X/Y) â <justification 1 phrase>
2. ...
3. ...
Notes
- Le skill ne modifie rien : c'est un radar lecture-seule. Aucun
gh issue create, gh pr comment, push, ni édition de fichiers. Si une action est suggérée, c'est au contributeur (ou à un autre skill) de la déclencher.
- Les commandes réseau (
gh, git fetch) doivent ĂȘtre autorisĂ©es par l'agent ou l'humain. Le skill assume que la session a au moins gh auth status OK et un git fetch rĂ©cent â sinon il le note dans le rapport.
- Si le repo n'a pas encore de tags
phase-N ou de milestones (cas projet jeune), tomber en mode dégradé : afficher la liste brute des issues open sans bucket roadmap. Le rapport reste utile.
- Le mode
score est explicitement marquĂ© « subjectif ». Jamais utilisĂ© pour une dĂ©cision automatisĂ©e â c'est une aide Ă la lecture, pas une prioritĂ© figĂ©e.
- Couplage avec d'autres skills :
/preflight avant pour vérifier que gh est OK ; /spec-reality pour le pendant code/spec (le radar ne touche pas à la cohérence interne) ; /spec-audit pour un audit lourd des specs (radar = court, audit = long).