pr-simplify

Simplifiez vos modifications à leur correctif le plus petit et le plus complet. À utiliser avant d'ouvrir une PR, avant d'envoyer des réparations volumineuses, ou lorsqu'on vous demande de réduire une PR ou de nettoyer les approximations.

Qu'est-ce que pr-simplify ?

Cette compétence guide l'auteur d'une modification dans une révision systématique de son propre code afin de réduire une proposition de changement à son correctif le plus petit et le plus complet. Elle est conçue pour être exécutée localement sur votre branche avant d'ouvrir une Pull Request, et à nouveau avant d'y pousser des correctifs importants. La compétence se déroule en quatre étapes : 1) retrouver le plus petit correctif complet à partir de la base, 2) supprimer toute architecture superflue, 3) conserver uniquement les tests pertinents, et 4) prouver que le changement réduit fonctionne toujours. Le résultat attendu est un diff inspecté et justifié, où chaque ligne modifiée sert un objectif unique et clair, sans conception accidentelle ni duplication inutile. Cette approche s'applique à tout dépôt de code (GitHub, GitLab, etc.) et à tout langage de programmation, mais son efficacité dépend de la qualité du résumé d'intention et de la capacité du système à comprendre le contexte du projet.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/pr-simplify

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · 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

Simplifier la modification

Une relecture par l'auteur de la modification : exécutez-la sur votre propre branche avant d'ouvrir la PR, et à nouveau avant de pousser des réparations volumineuses. Elle précède la revue et ne la remplace jamais. Elle hérite du périmètre et de l'autorité de réparation de la tâche ; une demande de revue seule obtient des observations, pas des modifications. Le flux de travail du mainteneur choisi gère la publication, la revue et la fusion.

Le diff est une proposition. Des tests qui passent prouvent que ça fonctionne, pas que son architecture ou chaque test ajouté est nécessaire.

Règles : les sections "Principes de conception", "Un seul propriétaire, bascule complète", "Garanties d'exécution et de code" et "Produit et validation" du fichier racine AGENTS.md, ainsi que le fichier AGENTS.md de plus proche portée. Les étapes 2 et 3 appliquent toutes les règles à chaque fichier modifié.

1. Retrouver le plus petit correctif complet

Lisez le résultat attendu par l'utilisateur et le dernier périmètre, le diff complet par rapport à la base de fusion cible, et les preuves conservées. Réutilisez le contexte de session déjà rassemblé. Demandez ensuite :

En partant de la base, quel est le plus petit correctif complet utilisant les propriétaires déjà présents ? Introduirais-je encore cette architecture ?

Inspectez d'abord les plus grands modules, états, adaptateurs et structures de test ajoutés. Lisez leurs appelants directs et leur historique pertinent : un comportement apparemment redondant peut protéger une configuration livrée ou une régression antérieure. Le périmètre est le système modifié et les chemins qu'il remplace.

Tracez chaque bloc modifié jusqu'au résultat énoncé. Un bloc qui sert un autre objectif quitte cette modification : supprimez-le ou déplacez-le dans sa propre PR.

Comptez le nombre de lignes modifiées non mécaniques. Au-dessus d'environ 800, ou d'environ 500 pour une logique complexe, nommez la plus petite étape cohérente qui peut atterrir en premier et réduisez la modification à cette étape.

Terminé lorsque vous pouvez énoncer le défaut, l'invariant requis et le plus petit correctif complet en une phrase chacun, et que chaque bloc restant sert ce correctif.

2. Supprimer l'architecture superflue

Appliquez chaque simplification prise en charge dans le diff :

  • Un seul décideur. Déplacez la politique répétée du côté de l'appelant vers l'opération qui possède la décision. Migrez les appelants concernés et supprimez les anciennes implémentations, exportations et branches de réparation. Des transports différents peuvent partager une décision tout en conservant leurs propres contrats de livraison.
  • L'état existant d'abord. Remettez en question les nouveaux schémas, gestionnaires, caches et représentations combinées. Réutilisez un propriétaire existant lorsque sa durée de vie, son autorité, son atomicité et son nettoyage correspondent. Supprimez une migration proposée uniquement lorsqu'elle est réellement inutile ; conservez la migration qui maintient le fonctionnement de la configuration et de l'état existants après la mise à jour. Un nouvel état appartient à un champ qui le signifie.
  • Supprimez le chemin redondant. Supprimez les rendus parallèles, les analyseurs dupliqués, les opérations de cycle de vie factices utilisées uniquement pour obtenir un résultat, l'état dérivé que les appelants peuvent déjà obtenir, et les wrappers qui ne font que rediriger ou renommer. Préférez une représentation plus simple à des modes de repli autour de l'ancienne.
  • Polissez en dernier. Dans chaque bloc modifié, ne conservez que ce qu'un mainteneur du fichier environnant écrirait :
    • les commentaires qui expliquent la propriété, le cycle de vie, l'ordonnancement ou les contraintes ;
    • les vérifications et les blocs try/catch qui correspondent au module environnant et protègent les états réels ;
    • les types réels au lieu de conversions frauduleuses (as any, as unknown as T, élargir puis affirmer) ;
    • les variables et les aides qui ajoutent du sens au domaine, suppriment la duplication ou simplifient le flux de contrôle ;
    • les adaptateurs, alias, tentatives et replis soutenus par un contrat livré nommé et un plan de suppression ;
    • le nommage, le flux de contrôle, les imports et le formatage qui correspondent au fichier environnant.

Préservez le correctif demandé et le comportement pris en charge, pas la conception accidentelle de la proposition. Conservez les différences de domaine réelles et la compatibilité publique justifiée. Lorsque l'historique (git log -p -S <symbole>) laisse le but d'un chemin peu clair, conservez-le et signalez-le. Signalez les nouvelles décisions produit, les contrats cassés, le nettoyage sans rapport et le remplacement destructeur de branche comme des observations pour le propriétaire.

3. Conserver les tests pour les échecs

Pour chaque groupe de test ajouté ou modifié et ses aides de configuration, nommez l'échec observable distinct qu'il détecte.

Conservez les régressions pour le défaut réel et les limites distinctes : ordonnancement, annulation, autorité obsolète, redémarrage, rejet, erreurs réelles et différences de consommateurs affectés. Conservez les gardes de contrat statiques qui protègent indépendamment une limite réelle. Supprimez les cas en double sur le même chemin, les échos de simulation, les assertions de copie de champ ou de formulation incidentes, les assertions sur des valeurs définies statiquement, les tests qui ne font que prouver que la logique supprimée a disparu, les tests d'implémentations obsolètes, et les échafaudages ou hooks de production réservés aux tests. Consolidez les cas utiles dans une suite de tests du propriétaire existant.

La suppression de tests n'affaiblit jamais les assertions, la couverture des limites réelles ou les bases de référence qui restent.

Terminé lorsque chaque groupe de test restant a un échec nommé.

4. Prouver le changement réduit et le transmettre

Regroupez les modifications, puis réexécutez la reproduction et les vérifications ciblées pour les contrats modifiés et les consommateurs affectés. Réutilisez les preuves dont les intrants sont inchangés. Une affirmation préservée concernant le redémarrage, la mise à niveau ou le transport nécessite une preuve applicable. Le flux de travail existant sélectionne des vérifications plus larges.

Terminé lorsque le diff complet est inspecté, chaque règle a un verdict pour chaque fichier modifié, les simplifications prises en charge sont appliquées, les chemins remplacés sont inaccessibles et le comportement affecté a toujours une preuve. Aucune modification n'est un résultat valide lorsque la forme existante est justifiée. Visez un code net-négatif, pas un quota de suppression.

Rapportez dans le corps de la PR ou dans les preuves de tâche existantes : la responsabilité ou le mécanisme qui a disparu, le comportement toujours protégé, et les différences de production/test par rapport à la base de fusion. Étiquetez une réduction par rapport à une révision antérieure séparément du delta de l'ensemble du changement. Nommez toute croissance nécessaire ou toute décision non résolue.

Ouvrez ou mettez ensuite à jour la PR. Après les réparations ultérieures, simplifiez uniquement les nouvelles modifications et les propriétaires qu'elles touchent avant de les pousser.

Individual skills in this repo

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

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Skills associés