Compétence : Gestionnaire de Projets Portfolio
RÈGLE CRITIQUE : Lorsque l'utilisateur demande d'ajouter, mettre à jour ou enregistrer un nouveau projet ou outil sur son site portfolio (F:\AaradhyaDT\AaradhyaDT.github.io) :
- NE JAMAIS ouvrir et découper manuellement
projects.htmlavec des regex ou remplacer de grands blocs de chaînes. - NE JAMAIS créer manuellement des balises
hrefGitHub brutes non chiffrées dansprojects.html. - NE JAMAIS coder en dur ou deviner les numéros de projet (
p-00x) ou les comptes de filtres.
Vous DEVEZ invoquer le moteur déterministe d'intégration de projet :
F:\AaradhyaDT\AaradhyaDT.github.io\scripts\add_project.py
1. Workflow d'Ingestion Rapide (Mode Manifeste Zéro-Token)
- Formuler un manifeste JSON de projet propre et compact (en mémoire ou dans un fichier temporaire) :
{
"title": "Windows Pilot — Moteur d'Automatisation Sémantique UIA & MCP pour Bureau",
"repo_url": "https://github.com/AaradhyaDT/windows-pilot",
"category": ["apps", "hardware"],
"status": "Sep 2026",
"bullets": [
"Moteur d'automatisation critique pour agents IA autonomes sur Windows.",
"Contrôle Microsoft UI Automation (UIA) COM & Win32 indépendant de la résolution.",
"Serveur MCP natif (winpilot-mcp) avec conscience des bureaux virtuels."
],
"tags": ["Python 3.10+", "Win32 API", "MCP Server", "Windows 11"],
"section": "personal",
"tier": "vip"
}
- Enregistrer dans un fichier temporaire (ex.
new_project.json) et exécuter avec aperçu ou ajout en direct :
Aperçu avec Dry Run (recommandé d'abord) :
python scripts/add_project.py --from-json new_project.json --dry-run
Application en direct :
python scripts/add_project.py --from-json new_project.json
2. Mode CLI à Commande Unique
Pour des ajouts rapides directement via des options en terminal :
python scripts/add_project.py `
--title "Nom de l'outil — Description du sous-titre" `
--repo "https://github.com/AaradhyaDT/my-tool" `
--category apps aiml `
--status "En cours" `
--bullets "Élément d'architecture technique clé 1." "Élément de benchmark ou métrique clé 2." `
--tags "Python" "FastMCP" "Async"
3. Ce que le Moteur Exécute Automatiquement
En moins d'une seconde, add_project.py :
- Attribution d'ID contiguë : Scanne le DOM, trouve l'entier max actuel (ex.
34), et attribuep-035etP — 035. - Chiffrement sans fuite : Chiffre l'URL du dépôt avec AES-256-GCM (PBKDF2) en utilisant
vip2026oumaster2026et enregistreproj-<slug>dansaccess.js. - Génération de carte : Génère un balisage
<details class="project-card reveal ...">conforme et accessible avec le lien verrouillédata-payload-link-id="proj-<slug>". - Injection dans la section DOM : Injecte la carte dans
#section-personal(par défaut) ou#section-projects. - Recomptage exact des filtres : Analyse toutes les cartes du DOM et écrit automatiquement les comptes exacts dans
<span class="proj-filter-count">pourAll,aiml,embedded,hardwareetapps. - Intégrité post-ajout : Exécute automatiquement
scripts/extract_index.py(met à jour l'index de recherche statique) etscripts/verify.py(garantit que les 26/26 catégories de vérification passent, y comprisrelease-shaset l'intégritéversion).
4. SHA de Version et Invariant d'Intégrité "Quoi de neuf"
Lors du versionnage, de l'incrémentation ou de l'ajout de versions à assets/js/data/releases.js :
- NE JAMAIS utiliser de chaînes
shasynthétiques ou factices (ex.rel50,rel55,upg47,xtool20). - TOUJOURS s'assurer que chaque
shaest un hash court de commit Git valide et existant (correspondant à^[0-9a-f]{7,40}$) qui pointe directement vershttps://github.com/AaradhyaDT/AaradhyaDT.github.io/commit/<sha>. scripts/site_automation.pyrésout automatiquementgit rev-parse --short HEADpour les versions majeures, etscripts/verify.py(Catégorie 26 :release-shas) applique cette règle lors du pre-commit et du CI.
5. Finalisation du Déploiement
Une fois que tous les ajouts passent la vérification locale :
.\sync.bat -m "feat(projects): enregistrer <nom-du-projet> dans la vitrine du portfolio"
(Exécute l'extraction de recherche en un seul passage, la mise à jour du graphe AST, la vérification des 26 catégories, le commit, le push et la synchronisation avec le cache de bot).