Nettoyage du Notebook

Nettoie automatiquement uniquement les enregistrements jetables de la tâche en cours terminée ; une invocation publique directe sans portée supprime l'intégralité du Notebook de la session en cours.

Qu'est-ce que Nettoyage du Notebook ?

Cette compétence pour Cursor permet de nettoyer automatiquement les enregistrements jetables du Notebook d'une tâche terminée, en utilisant par défaut la portée `scope=current-task` lorsqu'elle est invoquée par le ‘Main’ ou un propriétaire désigné. Elle évite la suppression accidentelle de données importantes en reposant sur des vérifications strictes d'appartenance, de complétude et d'exclusions. En cas d'invocation publique sans portée, elle supprime tout le répertoire Notebook de la session en cours après avoir validé l'identifiant de session, l'intégrité du répertoire et l'absence de liens symboliques. La compétence suit un processus précis incluant la vérification du fichier `plan.md`, la validation des chemins canoniques, et l'utilisation exclusive de `fs.rmSync` sans `force` ni globs, garantissant ainsi une suppression sécurisée et documentée.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/ARQAWA/cursor-pi/tree/HEAD/research/history/codex-harness-cursor/plugins/scope-focus/cursor/skills/cleanup-notebook

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Nettoyage du Notebook ?

La sélection automatique par le 'Main' ou son propriétaire désigné utilise toujours uniquement scope=current-task ci-dessous, jamais la valeur par défaut de toute la session. Utilisez-la lorsqu'il existe des enregistrements jetables avérés, après le résultat et les vérifications requises, et après que le nettoyage des éléments temporaires de la tâche soit terminé en utilisant leur propriété/liens. Sinon, ne lancez pas de workflow de nettoyage. Les instructions de conservation, les résultats demandés du Notebook, les originaux requis et les liens encore utilisés sont des exclusions. Ne les déplacez pas et ne les archivez pas uniquement pour permettre la suppression. Les pauses, les blocages, les attentes d'approbation, la fin de tour, l'arrêt de l'agent et l'annulation sans abandon ne sont pas une complétion ; préservez la poursuite nécessaire.

Une invocation publique directe sans cette portée autorise la suppression de l'intégralité du répertoire Task Notebook pour cette session Cursor, y compris les enregistrements terminés. Pour cette valeur par défaut publique, n'attendez pas la fin de la tâche et ne demandez pas de deuxième confirmation.

Valeur par défaut publique pour toute la session

Prenez le session_id actuel uniquement lorsqu'il est explicitement disponible dans le contexte de la tâche Cursor. Avec les modules intégrés de Node.js, calculez sessionKey comme Buffer.from(session_id, 'utf8').toString('hex'), puis calculez la cible exacte comme path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey). Exigez un identifiant de session non vide. S'il est indisponible, ne supprimez rien et signalez que le notebook de la session actuelle ne peut pas être identifié. N'inférez jamais une session à partir d'un listing de répertoire, d'un ancien notebook ou d'une autre tâche.

Si la cible est absente, signalez que rien ne nécessitait de suppression. Si elle est présente, vérifiez que la racine du notebook Scope Focus et la cible sont des répertoires réels, pas des liens symboliques. Lorsque plan.md existe, exigez qu'il s'agisse d'un fichier normal, pas d'un lien symbolique, et exigez que son en-tête Session: corresponde à l'identifiant de session actuel. Énumérez son contenu et revérifiez la cible exacte et les exclusions avant la suppression. Ne suivez pas les liens en dehors de la cible et ne supprimez pas d'autres répertoires de session, fichiers de dépôt ou rapports HTML stockés ailleurs.

Supprimez uniquement la cible vérifiée avec fs.rmSync(target, { recursive: true }), sans force ni globs. Confirmez ensuite que la cible est absente et signalez le résultat. Si la propriété ou la cible est ambiguë, ne supprimez rien et signalez la raison exacte. Ne créez pas automatiquement un notebook de remplacement.

scope=current-task

Utilisez automatiquement pour les enregistrements éligibles de la tâche en cours ou sur une demande explicite nommant cette portée. Elle n'autorise jamais la suppression de toute la session.

Attendez le résultat substantiel réel, les preuves requises et chaque CLEAN sélectionné ou obligatoire, ainsi que le résultat final du notebook avec le nettoyage encore en attente. Conservez les enregistrements nécessaires à la poursuite tant que l'une de ces conditions n'est pas remplie.

Exigez la clé de tâche exacte, sa relation avec cette exécution terminée, et soit un session_id actuel explicitement disponible, soit un chemin plan.md de notebook explicitement fourni pour la même tâche sélectionnée sous le contrat de continuation manuelle du Task Notebook. Ne recherchez pas de notebooks et n'inférez pas la session actuelle à partir de répertoires ou d'anciens enregistrements. Pour une session en cours, calculez le chemin session-key existant comme ci-dessus. Pour un chemin manuel fourni, validez l'en-tête Session: d'origine par rapport à son répertoire session-key et à la relation explicite avec cette tâche ; ne le réaffectez pas à la session actuelle.

Résolvez le os.tmpdir() réel avec fs.realpathSync. Exigez que le répertoire de session soit directement à l'intérieur de son espace de noms scope-focus/task-notebook. Les répertoires de l'espace de noms, de la session et de la tâche doivent être des répertoires réels, pas des liens symboliques ; le plan d'entrée, s'il est présent, doit être un fichier normal. Validez le confinement canonique et chaque composant de chemin affecté avant la mutation. Une clé de tâche doit être un nom de base compatible avec le système de fichiers, jamais un séparateur, . ou ... Vérifiez Session:, Task:, la sélection directe ou la sélection automatique avec sa source d'ordre et son besoin, et l'association d'exécution exacte. Le localisateur racine fourni par le 'Main' a priorité sur le localisateur local d'un enfant ; les métadonnées seules n'accordent aucune propriété. Un chemin manuel fourni doit passer les mêmes vérifications d'emplacement et de propriété qu'un chemin calculé.

Énumérez uniquement les cibles et exclusions exactes. Supprimez le répertoire de la clé de tâche uniquement lorsque son contenu est constitué d'enregistrements avérés de cette exécution ; conservez les originaux requis, les résultats, les autres tâches et toute entrée inconnue ou ambiguë. Une propriété inconnue bloque la suppression de cette cible, mais pas la permission de supprimer son parent. Supprimez le plan.md de la session uniquement si son en-tête nomme encore cette exécution. S'il appartient maintenant à une autre tâche, conservez-le et utilisez les enregistrements de propriété établis pour le répertoire de cette tâche ; cet en-tête différent n'est pas une autorisation pour supprimer une autre tâche. Une preuve manquante ou contradictoire n'autorise aucune suppression.

Revérifiez les chemins exacts, la propriété, la complétion et les exclusions immédiatement avant la suppression. Utilisez les modules intégrés de Node.js pour les cibles avérées, sans force, globs ou suivi de liens symboliques. Supprimez le répertoire parent de la session et de l'espace de noms uniquement s'ils sont effectivement vides ; conservez les autres clés de tâche et sessions. Confirmez que les cibles sélectionnées sont absentes et que les exclusions subsistent ensuite. Si déjà absentes, ne créez rien. Signalez le résultat réel ou la limitation concrète ; ne créez pas de notebook, de migration ou d'archive de remplacement.

Si une suppression éligible requise reste inachevée, conservez la poursuite nécessaire et signalez le travail restant concret. Les enregistrements inconnus ou conservés sont exclus et non une permission de supprimer leur parent. Ne revendiquez pas une complétion totale tant qu'un travail obligatoire reste en cours.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills associés