Que fait econ-research-kit ?
La recherche en économie comme un ensemble d'étapes exécutables. Pas une collection de prompts — une bibliothèque de workflows où chaque compétence déclare ses entrées, ses artefacts et ses critères d'acceptation.
Ce que c'est, et ce que ce n'est pas
Ceci est un ensemble de huit compétences, chacune couvrant une étape d'un projet empirique. Chaque compétence vous indique quand y entrer, ce qu'elle nécessite, quoi faire, quels fichiers elle doit produire et comment vérifier le résultat.
Ceci n'est pas un dépôt de prompts. Un prompt produit du texte. Une compétence produit des fichiers qu'une autre personne peut relancer. Si une étape se termine par "l'assistant a écrit un joli paragraphe", l'étape n'a pas été accomplie.
Ceci n'est pas non plus un substitut à votre jugement sur l'identification. Les compétences ici vous obligent à énoncer vos hypothèses et leurs menaces. Elles ne peuvent pas vous dire si les hypothèses tiennent.
Ouvrage compagnon : book/ contient Prompt Engineering for Economists par LW Walker, avec chers amis et famille adorée, 208 pages et soixante modèles. Le livre explique pourquoi chaque étape est conçue ainsi ; ce dépôt dit quoi y faire. book/README.md fait correspondre les chapitres aux étapes.
Les huit étapes
| # | Étape | Compétence | La question à laquelle elle répond |
|---|---|---|---|
| 0 | Porte de faisabilité | skills/feasibility/ | Cela peut-il être fait avec les données et la variation disponibles ? |
| 1 | Problème et littérature | skills/literature/ | Le fossé est-il réel, et vaut-il un article ? |
| 2 | Design d'identification | skills/identification/ | Quelle variation identifie l'effet, et qu'est-ce qui la briserait ? |
| 3 | Données | skills/data-prep/ | Les variables sont-elles définies comme je le pense ? |
| 4 | Estimation | skills/estimation/ | La spécification est-elle défendable, et contre quoi chaque test de robustesse protège-t-il ? |
| 5 | Tableaux et figures | skills/tables-figures/ | Les résultats respectent-ils le format de la revue ? |
| 6 | Rapport | skills/report/ | Quelqu'un d'autre peut-il reproduire cela à partir de mes fichiers ? |
| 7 | Rédaction et soumission | skills/writing/ | La prose porte-t-elle l'histoire de l'identification ? |
| — | Réponse aux rapporteurs | skills/review/ | Comment répondre sans concéder ce que je ne devrais pas ? |
L'étape 0 est une porte, pas une étape. Si elle échoue, arrêtez-vous. Ne nettoyez pas les données pour un projet dont l'identification ne peut pas fonctionner.
Routage : ce que dit l'utilisateur, quelle compétence activer
Avant de lire le tableau ci-dessous, exécutez python scripts/preflight.py "<les mots de l'utilisateur>". Cela vous indique lesquelles des quatre cases sont manquantes. Ensuite, exécutez python scripts/spec.py "<les mots de l'utilisateur>" : cela imprime un brouillon de spécification de tâche — les quatre cases, l'étape lue, un prompt modifiable, et les trois choses à confirmer — et ce brouillon est ce que vous montrez à l'utilisateur avant d'effectuer tout travail. Modifiez-le ensemble, puis commencez. Chaque "premier geste" dans le tableau ne se produit qu'après que les quatre cases sont remplies ; tant qu'une case est ouverte, le seul geste est de poser une question à son sujet.
| L'utilisateur dit quelque chose comme | Entrer | Premier geste |
|---|---|---|
| "我想研究 X,这东西能做吗?" / "有没有数据?" / "this is probably infeasible" | skills/feasibility/ | Énumérer les données et la variation avant d'écrire du code |
| "这个题目有没有人做过?" / "novelty" / "文献缺口" | skills/literature/ | Écrire d'abord le plan de recherche, puis construire la matrice |
| "我用 DID / IV / RDD / 事件研究" / "识别策略" / "how do I identify this" | skills/identification/ | Écrire la liste des menaces avant la régression |
| "数据洗一下" / "变量怎么构造" / "merge 不上" / "口径" | skills/data-prep/ | Vérifier d'abord les définitions des variables sur les années |
| "跑个回归" / "加固定效应" / "稳健性" / "robustness" | skills/estimation/ | Justifier le niveau de clustering et l'ensemble des effets fixes |
| "做个表" / "三线表" / "画事件研究图" / "regression table" | skills/tables-figures/ | Décider Stata ou Python, puis adapter le format de la revue |
| "整理成报告" / "复现" / "replication package" | skills/report/ | Faire du rapport un résultat de script, jamais un fichier édité manuellement |
| "写摘要" / "写引言" / "投稿" / "abstract" | skills/writing/ | Rédiger le paragraphe d'identification avant l'introduction |
| "审稿意见怎么回" / "referee report" / "rebuttal" | skills/review/ | Classer chaque commentaire en doit-faire / discutable / rejetable |
Si deux compétences pourraient toutes deux s'appliquer, remontez en amont. Un problème de tableau est généralement un problème de spécification ; un problème de spécification est généralement un problème d'identification.
Avant toute chose : rappel, puis demande
Chaque session commence par des fichiers, pas par la mémoire :
python scripts/recall.py
Cela indique où en est le projet, ce que la dernière étape a produit et ce qui est encore ouvert.
Une session qui saute cette étape reposera des questions auxquelles le dépôt répond déjà, ou reconstruira quelque chose qui existe déjà. Exécutez-le d'abord, puis scripts/preflight.py, puis répondez.
Cinq règles strictes
1. Demandez avant de répondre : n'avancez pas tant que les quatre cases ne sont pas remplies.
Pour toute demande de recherche, la première action est python scripts/preflight.py "<les mots de l'utilisateur dans leur propre langue>". Cela divise la question en quatre cases — unité d'analyse, variable de traitement, résultat, comparaison — et vous indique lesquelles manquent.
- Cases manquantes : écrivez au plus trois questions, posez-les toutes à la fois, puis arrêtez-vous et attendez la réponse.
- Une case que vous avez remplie par inférence doit être marquée "en supposant X", et l'utilisateur doit la confirmer.
- Ce n'est que lorsque les quatre cases sont remplies — par l'utilisateur, ou par une hypothèse que l'utilisateur a confirmée — que vous pouvez entrer dans l'étape 2 de toute compétence. C'est la seule règle du kit qui exige de s'arrêter pour attendre un humain. Un travail produit au-delà de cette porte est une conjecture habillée en vêtements de document.
2. Lisez glossary.yaml avant d'écrire un terme méthodologique.
Il a trois niveaux : locked (utilisez textuellement), pending (utilisez le premier candidat et mettez l'alternative entre parenthèses), fallback (gardez le nom propre chinois, donnez l'expansion anglaise une fois). Violer une traduction locked est un défaut, pas un choix de style.
3. Les spécificités de domaine vivent dans domains/, pas dans les compétences.
Les compétences décrivent comment travailler. Elles ne décrivent pas ce qu'est 中央环保督察, comment le CFPS définit l'éducation, ou ce que les rapporteurs demandent sur l'exposition à la pollution. Chaque compétence a une dernière section qui indique quel fichier de domaine ouvrir. Ouvrez-le.
4. Chaque étape doit laisser un fichier, et chaque fichier doit passer sa liste d'acceptation.
## Acceptance est une liste de vérification, pas une suggestion. Un élément auquel vous ne pouvez pas répondre par oui/non est un élément mal rédigé — réécrivez-le.
5. Dites où vous êtes avant de faire quoi que ce soit d'autre. Chaque réponse qui entre dans une étape s'ouvre par trois lignes : quelle étape (numéro et nom), ce que cette seule étape fait (une phrase, jamais "analyser les données"), et quel fichier elle produira ainsi que si l'utilisateur doit confirmer avant que vous ne continuiez. Une réponse sans cet en-tête est une boîte noire, et l'utilisateur la paie.
Chaque étape se termine aussi en posant une question et en attendant. Voir le tableau ci-dessous.
Huit points de confirmation
La porte à l'étape 0 n'est pas la seule. Chaque étape se clôt par une question et s'arrête. Ce n'est pas de la politesse : une décision que l'utilisateur n'a jamais vue est une décision que l'utilisateur ne peut pas corriger.
| Étape | La question à poser et à attendre | Continuer sans réponse |
|---|---|---|
| 0 Faisabilité | Les quatre cases sont remplies ; pouvez-vous fixer les deux que j'ai inférées ? | Non |
| 1 Problème et littérature | Laquelle de ces trois questions candidates ? Le fossé est-il celui-ci ? | Non |
| 2 Design d'identification | Groupe de traitement, groupe de comparaison, timing fixés ainsi : acceptez-vous ? | Non |
| 3 Données | Définitions des variables et limites de l'échantillon tracées ainsi : acceptez-vous ? | Non |
| 4 Estimation | Spécification principale et cette liste de robustesse : ajoutez ou retirez quelque chose ? | Non |
| 5 Tableaux et figures | Cette disposition de tableau et ce style de note : est-ce ce que vous voulez ? | Non |
| 6 Rapport | Conclusion d'une page rédigée ainsi : un changement dans la lecture des chiffres ? | Non |
| 7 Rédaction | Quelle partie de ce brouillon revient en arrière ? | Non |
| 8 Réponse aux rapporteurs | Révisons-nous ce commentaire ou résistons-nous, et est-ce la raison ? | Non |
python scripts/stage.py 3 imprime l'en-tête et la question pour n'importe quelle étape, afin que le libellé ne dérive pas entre les sessions. workflows/main.yaml est la même ligne principale écrite comme un contrat de transfert lisible par machine : chaque étape déclare requires (ce qui doit déjà être sur le disque) et produces (ce qu'elle doit laisser derrière elle), et python scripts/workflow_check.py échoue si une étape nécessite quelque chose qu'aucune étape précédente ne produit. python scripts/gate.py status rend la porte mécanique plutôt qu'une convention : elle maintient un fichier d'état par projet (.econ-kit/gate.json), refuse d'avancer tant que les artefacts de l'étape n'existent pas et qu'une réponse humaine d'au moins huit caractères n'est pas enregistrée, et enregistre la réponse avec un horodatage. gate.py pass "<la réponse>" est le seul chemin possible ; --force existe mais écrit le manquement dans le dossier. Pour voir à quoi ressemblent réellement les vérifications de n'importe quelle étape, exécutez python scripts/explain.py 6 (--list montre les neuf étapes ; pour les étapes 3 et 4, qui ont déjà des scripts exécutables, il pointe vers ces scripts et vers la liste d'acceptation de la compétence à la place).
Quand un terme est incertain
Ne choisissez jamais silencieusement une traduction. Si le terme est dans pending, utilisez le premier candidat et ajoutez l'alternative entre parenthèses. Marquez au plus trois de ces endroits dans une même sortie ; au-delà, utilisez le premier candidat silencieusement et ajoutez une ligne de résumé à la fin.
Si le terme n'est pas du tout dans le glossaire, gardez l'original chinois et donnez une expansion anglaise entre parenthèses. Ajoutez-le ensuite à pending dans glossary.yaml pour que la personne suivante n'ait pas à décider à nouveau.
Recherche par domaine
| Direction | Répertoire |
|---|---|
| Économie de l'énergie et de l'environnement | domains/energy-env/ |
| Économie du travail | domains/labor/ |
| Économie de l'éducation | domains/education/ |
| Économie de la santé | domains/health/ |
| Économie comportementale et expérimentale | domains/behavioral/ |
| Économie du développement et expériences de terrain | domains/development/ |
| Économie publique et évaluation des politiques | domains/public/ |
| Organisation industrielle et régulation | domains/industrial-organization/ |
| Économie du commerce et de l'espace | domains/trade-spatial/ |
| Macroéconomie et finance | domains/macro-finance/ |
| Histoire économique et sources textuelles | domains/economic-history/ |
| Modélisation théorique et conception de mécanismes | domains/theory/ |
Douze directions sont couvertes. Les trois premières sont celles autour desquelles ce kit a été construit ; le travail, l'éducation et la santé sont les trois domaines que le livre traite ensemble sous la rubrique microéconomie appliquée ; les autres ont été ajoutées pour qu'un lecteur extérieur à la microéconomie appliquée trouve encore une étagère sur laquelle s'appuyer.
Chaque direction a cinq fichiers : institutional.md (contexte et paragraphes prêts à citer), measures.md (comment la variable de traitement est construite), data.md (sources et noms de variables), pitfalls.md (ce que les rapporteurs demandent et comment répondre), et route.md (comment cette direction parcourt les huit étapes).
Données
data-dict/ contient des sources de micro-données chinoises : CFPS, CHARLS, la base de données des entreprises industrielles chinoises, et les données de surveillance de la pollution. Vérifiez-le avant d'inventer un nom de variable — l'ensemble de données en a probablement déjà un. Si votre source ne s'y trouve pas, lisez d'abord data-dict/README.md : certaines sources ont une entrée et d'autres délibérément pas, et un nom de variable deviné est pire qu'un nom marqué.
Lorsque la question n'est pas "comment s'appelle cette variable" mais "existe-t-il même une source pour cela", data-dict/_catalog.md et scripts/lookup_source.py recherchent dans un répertoire externe de plus d'un millier de sources avec des liens d'accès et des articles d'application. Ces résultats sont des pistes, pas des entrées : les fichiers numérotés ici restent le seul endroit où les détails au niveau des variables sont consignés.
Ce que ce kit ne fera pas
- Il ne décidera pas si votre identification est crédible. Il vous fera écrire les menaces.
- Il ne remplacera pas la lecture de l'article que vous citez. Les références hallucinées sont la défaillance la plus courante de l'écriture assistée par IA ;
skills/writing/inclut une étape de vérification. - Il ne s'exécutera pas tout seul. Les scripts dans
scripts/vérifient la structure ; l'analyse vous appartient.