remporte 0.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. remporte-0.4.2/.claude-plugin/marketplace.json +17 -0
  2. remporte-0.4.2/.claude-plugin/plugin.json +22 -0
  3. remporte-0.4.2/.github/workflows/publication.yml +18 -0
  4. remporte-0.4.2/.github/workflows/tests.yml +19 -0
  5. remporte-0.4.2/.gitignore +7 -0
  6. remporte-0.4.2/LICENSE +21 -0
  7. remporte-0.4.2/PKG-INFO +242 -0
  8. remporte-0.4.2/README.md +224 -0
  9. remporte-0.4.2/agents/lecteur-dce.md +51 -0
  10. remporte-0.4.2/agents/redacteur-section.md +23 -0
  11. remporte-0.4.2/agents/relecteur.md +21 -0
  12. remporte-0.4.2/docs/remporte-cli.png +0 -0
  13. remporte-0.4.2/pyproject.toml +33 -0
  14. remporte-0.4.2/skills/init/SKILL.md +83 -0
  15. remporte-0.4.2/skills/nouvel-ao/SKILL.md +80 -0
  16. remporte-0.4.2/skills/repondre-ao/SKILL.md +16 -0
  17. remporte-0.4.2/src/remporte/__init__.py +8 -0
  18. remporte-0.4.2/src/remporte/__main__.py +10 -0
  19. remporte-0.4.2/src/remporte/cadre.py +238 -0
  20. remporte-0.4.2/src/remporte/candidature.py +302 -0
  21. remporte-0.4.2/src/remporte/cerfa/DC1-2019.docx +0 -0
  22. remporte-0.4.2/src/remporte/cerfa/DC2-2023.docx +0 -0
  23. remporte-0.4.2/src/remporte/cerfa/DC4-2023.docx +0 -0
  24. remporte-0.4.2/src/remporte/cerfa/cartes.json +99 -0
  25. remporte-0.4.2/src/remporte/charte.py +79 -0
  26. remporte-0.4.2/src/remporte/cli.py +807 -0
  27. remporte-0.4.2/src/remporte/espace.py +281 -0
  28. remporte-0.4.2/src/remporte/export.py +631 -0
  29. remporte-0.4.2/src/remporte/formats.py +154 -0
  30. remporte-0.4.2/src/remporte/gabarits/02-analyse.md +49 -0
  31. remporte-0.4.2/src/remporte/gabarits/03-go-no-go.md +20 -0
  32. remporte-0.4.2/src/remporte/gabarits/04-plan.md +21 -0
  33. remporte-0.4.2/src/remporte/gabarits/05-relecture.md +25 -0
  34. remporte-0.4.2/src/remporte/gabarits/AGENTS-espace.md +18 -0
  35. remporte-0.4.2/src/remporte/gabarits/AGENTS.md +27 -0
  36. remporte-0.4.2/src/remporte/gabarits/CLAUDE.md +1 -0
  37. remporte-0.4.2/src/remporte/gabarits/fiche-entreprise.md +51 -0
  38. remporte-0.4.2/src/remporte/guides/.gitkeep +0 -0
  39. remporte-0.4.2/src/remporte/guides/analyse.md +53 -0
  40. remporte-0.4.2/src/remporte/guides/candidature.md +20 -0
  41. remporte-0.4.2/src/remporte/guides/excel.md +29 -0
  42. remporte-0.4.2/src/remporte/guides/export.md +20 -0
  43. remporte-0.4.2/src/remporte/guides/formats.md +18 -0
  44. remporte-0.4.2/src/remporte/guides/go-no-go.md +22 -0
  45. remporte-0.4.2/src/remporte/guides/modeles.md +38 -0
  46. remporte-0.4.2/src/remporte/guides/offre.md +19 -0
  47. remporte-0.4.2/src/remporte/guides/pieces.md +14 -0
  48. remporte-0.4.2/src/remporte/guides/plan.md +42 -0
  49. remporte-0.4.2/src/remporte/guides/redaction.md +46 -0
  50. remporte-0.4.2/src/remporte/guides/relecture.md +28 -0
  51. remporte-0.4.2/src/remporte/guides/soutenance.md +25 -0
  52. remporte-0.4.2/src/remporte/inventaire.py +153 -0
  53. remporte-0.4.2/src/remporte/lecture.py +558 -0
  54. remporte-0.4.2/src/remporte/lien.py +15 -0
  55. remporte-0.4.2/src/remporte/recherche.py +190 -0
  56. remporte-0.4.2/src/remporte/travail.py +57 -0
  57. remporte-0.4.2/tests/conftest.py +176 -0
  58. remporte-0.4.2/tests/test_cadre.py +88 -0
  59. remporte-0.4.2/tests/test_candidature.py +309 -0
  60. remporte-0.4.2/tests/test_cli.py +314 -0
  61. remporte-0.4.2/tests/test_espace.py +150 -0
  62. remporte-0.4.2/tests/test_export.py +117 -0
  63. remporte-0.4.2/tests/test_formats.py +186 -0
  64. remporte-0.4.2/tests/test_inventaire.py +85 -0
  65. remporte-0.4.2/tests/test_lecture.py +159 -0
  66. remporte-0.4.2/tests/test_livraisons.py +236 -0
  67. remporte-0.4.2/tests/test_recherche.py +93 -0
  68. remporte-0.4.2/uv.lock +435 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "remporte",
3
+ "owner": {
4
+ "name": "Remporte",
5
+ "url": "https://remporte.fr"
6
+ },
7
+ "metadata": {
8
+ "description": "Outils Remporte pour répondre aux marchés publics avec un agent IA."
9
+ },
10
+ "plugins": [
11
+ {
12
+ "name": "remporte",
13
+ "source": "./",
14
+ "description": "Répondre à un appel d'offres public avec votre agent : lecture du DCE, analyse, go/no-go, plan, rédaction du mémoire technique, relecture, export."
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "remporte",
3
+ "version": "0.4.2",
4
+ "description": "Répondre à un appel d'offres public avec votre agent : lecture du DCE, analyse, go/no-go, plan, rédaction du mémoire technique, relecture, export.",
5
+ "author": {
6
+ "name": "Remporte",
7
+ "url": "https://remporte.fr"
8
+ },
9
+ "license": "MIT",
10
+ "homepage": "https://remporte.fr/outils/agent-ia/",
11
+ "repository": "https://github.com/Remporte-dev/remporte-appels-offres",
12
+ "keywords": [
13
+ "appels d'offres",
14
+ "marchés publics",
15
+ "DCE",
16
+ "mémoire technique",
17
+ "DC1",
18
+ "DC2",
19
+ "DC4",
20
+ "public procurement"
21
+ ]
22
+ }
@@ -0,0 +1,18 @@
1
+ name: publication
2
+ on:
3
+ push:
4
+ tags: ["v*"]
5
+ jobs:
6
+ pypi:
7
+ runs-on: ubuntu-latest
8
+ environment: pypi
9
+ permissions:
10
+ id-token: write
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - uses: astral-sh/setup-uv@v6
14
+ - name: La version du tag correspond au paquet
15
+ run: test "$(uv version --short)" = "${GITHUB_REF_NAME#v}"
16
+ - run: uv run pytest -q
17
+ - run: uv build
18
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,19 @@
1
+ name: tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ tests:
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ python: ["3.10", "3.13"]
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: astral-sh/setup-uv@v6
19
+ - run: uv run --python ${{ matrix.python }} pytest -q
@@ -0,0 +1,7 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ .pytest_cache/
5
+ dist/
6
+ essais/
7
+ .claude/
remporte-0.4.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Flowt (Remporte)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.5
2
+ Name: remporte
3
+ Version: 0.4.2
4
+ Summary: CLI et plugin Claude Code pour répondre aux appels d'offres publics avec votre agent IA : DCE, analyse, mémoire technique, DC1/DC2/DC4, exports.
5
+ Project-URL: Homepage, https://remporte.fr/outils/agent-ia/
6
+ Project-URL: Source, https://github.com/Remporte-dev/remporte-appels-offres
7
+ Project-URL: Issues, https://github.com/Remporte-dev/remporte-appels-offres/issues
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: DCE,agent IA,appels d'offres,claude code,codex,marchés publics,mémoire technique,public procurement
11
+ Requires-Python: >=3.10
12
+ Requires-Dist: markdown>=3.6
13
+ Requires-Dist: odfpy>=1.4
14
+ Requires-Dist: openpyxl>=3.1
15
+ Requires-Dist: pypdfium2>=4.30
16
+ Requires-Dist: python-docx>=1.1
17
+ Description-Content-Type: text/markdown
18
+
19
+ # Remporte CLI : répondre aux appels d'offres publics avec votre agent IA
20
+
21
+ <p align="center"><img src="https://raw.githubusercontent.com/Remporte-dev/remporte-appels-offres/main/docs/remporte-cli.png" alt="Remporte CLI : le CLI appels d'offres pour votre agent IA, du DCE au mémoire technique, avec Claude Code, Codex ou Gemini CLI" width="100%"></p>
22
+
23
+ [![Tests](https://github.com/Remporte-dev/remporte-appels-offres/actions/workflows/tests.yml/badge.svg)](https://github.com/Remporte-dev/remporte-appels-offres/actions/workflows/tests.yml)
24
+ [![Licence MIT](https://img.shields.io/badge/licence-MIT-1d2b50)](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/LICENSE)
25
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-1d2b50)](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/pyproject.toml)
26
+ [![Plugin Claude Code](https://img.shields.io/badge/plugin-Claude%20Code-c2410c)](#avec-claude-code)
27
+ [![Codex, Gemini CLI, Pi](https://img.shields.io/badge/agents-Codex%20%C2%B7%20Gemini%20CLI%20%C2%B7%20Pi-c2410c)](#avec-codex-gemini-cli-pi-ou-un-autre-agent)
28
+
29
+ **Un CLI et un plugin Claude Code, gratuits et open source, pour répondre à un marché
30
+ public français avec votre agent IA** : lecture du DCE, analyse, go/no-go, plan du mémoire
31
+ technique, rédaction, contrôle de conformité, relecture, formulaires DC1/DC2/DC4 et exports
32
+ Word, HTML et Excel.
33
+
34
+ Vous donnez le zip du DCE. Votre agent (Claude Code, Codex, Gemini CLI, Pi…) lit les pièces,
35
+ suit une méthode écrite par des gens qui répondent à des appels d'offres, et produit un
36
+ dossier de réponse que vous relisez. Tout reste sur votre poste : pas de compte, pas de
37
+ serveur, et le raisonnement passe par votre propre abonnement.
38
+
39
+ Un outil de [Remporte](https://remporte.fr/outils/agent-ia/?utm_source=github&utm_medium=readme&utm_content=entete),
40
+ le logiciel de réponse aux appels d'offres.
41
+
42
+ ---
43
+
44
+ ## Ce que vous obtenez
45
+
46
+ À partir d'un DCE (zip ou dossier : PDF, Word, Excel, OpenDocument, PowerPoint, CSV) :
47
+
48
+ | Fichier | Contenu |
49
+ |---|---|
50
+ | `01-pieces.md` | Inventaire des pièces reconnues (RC, CCAP, CCTP, CRT, AE, BPU, DPGF…), pièces illisibles, formats imposés par l'acheteur |
51
+ | `02-analyse.md` | Identité de la consultation, critères pondérés, exigences, pièces à remettre, clauses à risque, chaque point sourcé dans le DCE |
52
+ | `03-go-no-go.md` | Décision de répondre ou non, et ce qu'il faut réunir |
53
+ | `04-plan.md` | Plan du mémoire calé sur le cadre de réponse imposé, ou à défaut sur les critères |
54
+ | `sections/` | Le mémoire technique, une section par fichier, avec les preuves tirées de vos documents |
55
+ | `05-relecture.md` | Relecture avec la grille de notation de l'acheteur, par un agent qui n'a rien écrit |
56
+ | `candidature/` | DC1, DC2 et DC4 officiels remplis |
57
+ | `export/` | `memoire.docx`, `dossier.html`, `analyse.html`, `feuille-de-route.html`, `matrice-conformite.xlsx` |
58
+
59
+ Quand le cadre de réponse numérote ses exigences, `remporte cadre --couverture` liste celles
60
+ qu'aucune section ne traite encore. Un mémoire qui oublie une exigence perd des points sans
61
+ que personne ne le remarque : ce contrôle-là ne demande aucun modèle.
62
+
63
+ ## Installation
64
+
65
+ ```bash
66
+ uv tool install git+https://github.com/Remporte-dev/remporte-appels-offres
67
+ # ou : pipx install git+https://github.com/Remporte-dev/remporte-appels-offres
68
+ remporte --version
69
+ ```
70
+
71
+ Python 3.10 ou plus récent ; `uv` l'installe tout seul si besoin. Testé automatiquement sous
72
+ macOS, Linux et Windows ; signalez-nous tout problème.
73
+
74
+ ### Avec Claude Code
75
+
76
+ Le dépôt est aussi un plugin Claude Code :
77
+
78
+ ```
79
+ /plugin marketplace add Remporte-dev/remporte-appels-offres
80
+ /plugin install remporte@remporte
81
+ ```
82
+
83
+ Puis deux commandes :
84
+
85
+ - **`/remporte:init`**, une fois par poste : vérifie l'installation, indexe les documents de
86
+ votre entreprise et construit la fiche entreprise que liront tous les agents ;
87
+ - **`/remporte:nouvel-ao <DCE.zip>`**, pour chaque appel d'offres : crée le dossier et conduit
88
+ le parcours avec vous, avec trois arrêts de validation (analyse, go/no-go, plan).
89
+
90
+ Le plugin fournit trois sous-agents, pour lire une fois et rédiger en parallèle sans épuiser
91
+ l'abonnement :
92
+
93
+ | Sous-agent | Rôle |
94
+ |---|---|
95
+ | `lecteur-dce` | Lit RC, CCAP, CCTP et annexes volumineuses une seule fois, écrit l'index et l'analyse |
96
+ | `redacteur-section` | Rédige une section du mémoire à partir du plan, de l'analyse et de vos documents |
97
+ | `relecteur` | Relit le mémoire terminé avec la grille de l'acheteur, sans l'avoir rédigé |
98
+
99
+ ### Avec Codex, Gemini CLI, Pi ou un autre agent
100
+
101
+ Tout agent capable de lancer une commande peut s'en servir :
102
+
103
+ ```bash
104
+ remporte espace ~/Remporte # une fois : crée ressources/ et DCEs/
105
+ # déposez vos références, CV, certifications dans ~/Remporte/ressources/
106
+ cd ~/Remporte && remporte base indexer # à refaire quand vos documents changent
107
+ remporte init ~/Téléchargements/DCE.zip # crée DCEs/DCE/
108
+ cd DCEs/DCE && codex # ou claude, gemini, pi…
109
+ ```
110
+
111
+ Puis demandez : « réponds à cet appel d'offres ». Chaque dossier contient un `AGENTS.md` (et
112
+ un `CLAUDE.md`) qui donne la marche à suivre à l'agent.
113
+
114
+ ## Comment ça marche
115
+
116
+ ```mermaid
117
+ flowchart LR
118
+ DCE[DCE.zip] --> P[pièces] --> A[analyse] --> G{go / no-go}
119
+ G -->|go| PL[plan] --> R[rédaction] --> RL[relecture] --> E[export]
120
+ B[(vos documents<br/>ressources/)] -.-> R
121
+ ```
122
+
123
+ | Étape | Fichier | Ce que fait l'agent | `remporte guide` |
124
+ |---|---|---|---|
125
+ | Pièces | `01-pieces.md` | Vérifie l'inventaire, signale les pièces illisibles | `pieces` |
126
+ | Analyse | `02-analyse.md` | Critères pondérés, exigences, pièces à remettre, clauses | `analyse` |
127
+ | Go/no-go | `03-go-no-go.md` | Décide s'il faut répondre | `go-no-go` |
128
+ | Plan | `04-plan.md` | Trame calée sur le cadre de réponse ou les critères | `plan` |
129
+ | Rédaction | `sections/` | Une section par fichier, preuves tirées de votre base | `redaction` |
130
+ | Relecture | `05-relecture.md` | Note le mémoire avec la grille de l'acheteur | `relecture` |
131
+ | Export | `export/` | Word, HTML, Excel | `export` |
132
+
133
+ `remporte etat` dit où en est le dossier et quelle est l'étape suivante. Le CLI fait sans
134
+ modèle tout ce qui peut l'être (conversion, recherche, contrôle de couverture, mise en page) ;
135
+ l'agent garde le raisonnement et l'écriture.
136
+
137
+ **Cas particuliers** pris en charge par `remporte guide` : limite de pages, réponse dans un
138
+ fichier Excel ou Word imposé par l'acheteur, soutenance orale (le support se prépare à partir
139
+ des fichiers de l'entreprise), formulaires de candidature.
140
+
141
+ ## L'espace de travail
142
+
143
+ ```
144
+ Remporte/
145
+ ressources/ vos documents, fiche-entreprise.md, index de recherche
146
+ DCEs/
147
+ 2026-05-mairie-voirie/ un dossier par appel d'offres
148
+ ```
149
+
150
+ Un seul dossier, sur votre poste ou dans un dossier partagé. On retrouve chaque réponse, son
151
+ index et son analyse au même endroit.
152
+
153
+ ## Les commandes
154
+
155
+ | Commande | Rôle |
156
+ |---|---|
157
+ | `remporte espace [chemin]` | Créer l'espace de travail (`ressources/`, `DCEs/`) |
158
+ | `remporte init <dce>` | Créer un dossier de réponse depuis un zip ou un dossier |
159
+ | `remporte etat` | Avancement et prochaine étape |
160
+ | `remporte guide [étape]` | Méthode de l'étape |
161
+ | `remporte pieces` | Inventaire des pièces |
162
+ | `remporte lire <type ou nom>` | Texte d'une pièce ; sommaire si elle est longue, puis `--page` |
163
+ | `remporte chercher "<termes>"` | Recherche dans tout le DCE |
164
+ | `remporte cadre [--couverture]` | Trame imposée par le cadre de réponse ; exigences non traitées |
165
+ | `remporte formats` | Soutenance, limite de pages, cadres Excel ou Word à compléter |
166
+ | `remporte candidature preparer\|remplir` | DC1, DC2, DC4 officiels |
167
+ | `remporte base indexer\|chercher` | Index et recherche dans les documents de l'entreprise |
168
+ | `remporte fiche [--creer]` | Fiche entreprise lue par tous les agents |
169
+ | `remporte exporter` | Mémoire Word, analyse et feuille de route HTML, matrice de conformité Excel |
170
+ | `remporte html <fichier.md>` | Mettre n'importe quel markdown en page HTML |
171
+ | `remporte offre` | Ce que fait Remporte en plus |
172
+
173
+ Toutes les commandes acceptent `--json`, pour qu'un agent lise un résultat structuré.
174
+
175
+ ## Économiser son abonnement
176
+
177
+ - Une pièce longue se lit par son sommaire, puis page par page : sur un CCTP réel de
178
+ 523 000 caractères, le sommaire en fait 13 900.
179
+ - Les gros documents sont lus une seule fois, par un sous-agent, qui écrit un index que
180
+ réutilisent toutes les étapes suivantes.
181
+ - `remporte guide modeles` indique la puissance de modèle utile à chaque étape, et quand
182
+ confier une tâche à un modèle léger.
183
+
184
+ ## Confidentialité
185
+
186
+ Le CLI s'exécute entièrement sur votre poste. Il ne crée aucun compte, **n'effectue aucun
187
+ appel réseau** et ne mesure pas son usage. Vos DCE et vos documents restent dans les dossiers
188
+ que vous choisissez. Le raisonnement est fait par votre agent, selon les conditions de son
189
+ éditeur. Détails : [politique de confidentialité](https://remporte.fr/politique-confidentialite/#outil-agent-ia).
190
+
191
+ ## Ce que le CLI ne fait pas
192
+
193
+ - Remplir l'acte d'engagement et le bordereau de prix (BPU, DPGF, DQE) dans le fichier de
194
+ l'acheteur.
195
+ - Mettre le mémoire dans le modèle Word de votre entreprise.
196
+ - Donner les prix des marchés comparables déjà attribués.
197
+ - Lire les PDF scannés et les anciens fichiers Word `.doc` : ils sont signalés dans
198
+ l'inventaire.
199
+ - Chercher des appels d'offres : il part du DCE que vous avez déjà.
200
+
201
+ Les trois premiers points sont ce que fait
202
+ [Remporte](https://remporte.fr/outils/agent-ia/?utm_source=github&utm_medium=readme&utm_content=ne-fait-pas#aller-plus-loin).
203
+
204
+ ## Questions fréquentes
205
+
206
+ **Faut-il un compte ou une clé d'API ?** Non. Le CLI fonctionne seul, avec l'abonnement de
207
+ votre agent.
208
+
209
+ **Quels agents ?** Claude Code (plugin, commandes et sous-agents), Codex, Gemini CLI, Pi, et
210
+ tout agent qui sait lancer une commande et lire un fichier `AGENTS.md`.
211
+
212
+ **Marchés privés ?** Oui pour l'analyse, le plan, la rédaction et la relecture. Les
213
+ formulaires DC1, DC2 et DC4 ne concernent que la commande publique.
214
+
215
+ **Quel modèle ?** Un modèle de milieu de gamme suffit pour lire et rédiger ; la relecture et
216
+ le go/no-go gagnent à un modèle plus fort. Voir `remporte guide modeles`.
217
+
218
+ ## Contribuer
219
+
220
+ Les signalements et propositions sont bienvenus dans les
221
+ [issues](https://github.com/Remporte-dev/remporte-appels-offres/issues). Pour le code :
222
+
223
+ ```bash
224
+ git clone https://github.com/Remporte-dev/remporte-appels-offres && cd remporte-appels-offres
225
+ uv run pytest -q
226
+ ```
227
+
228
+ Dépendances sous licences permissives uniquement (MIT, BSD, Apache).
229
+
230
+ ## In English
231
+
232
+ **Remporte CLI** is an open-source command-line tool and Claude Code plugin that helps an AI
233
+ agent (Claude Code, Codex, Gemini CLI, Pi) answer **French public procurement tenders**
234
+ (*appels d'offres*, *marchés publics*): it reads the tender documents (DCE), extracts weighted
235
+ award criteria and requirements, drafts the technical proposal (*mémoire technique*) section by
236
+ section from your company documents, checks coverage of every numbered requirement, fills the
237
+ official DC1/DC2/DC4 forms, and exports to Word, HTML and Excel. Everything runs locally; no
238
+ account, no network calls. The method and outputs are in French.
239
+
240
+ ## Licence
241
+
242
+ [MIT](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/LICENSE). © Flowt (Remporte).
@@ -0,0 +1,224 @@
1
+ # Remporte CLI : répondre aux appels d'offres publics avec votre agent IA
2
+
3
+ <p align="center"><img src="https://raw.githubusercontent.com/Remporte-dev/remporte-appels-offres/main/docs/remporte-cli.png" alt="Remporte CLI : le CLI appels d'offres pour votre agent IA, du DCE au mémoire technique, avec Claude Code, Codex ou Gemini CLI" width="100%"></p>
4
+
5
+ [![Tests](https://github.com/Remporte-dev/remporte-appels-offres/actions/workflows/tests.yml/badge.svg)](https://github.com/Remporte-dev/remporte-appels-offres/actions/workflows/tests.yml)
6
+ [![Licence MIT](https://img.shields.io/badge/licence-MIT-1d2b50)](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/LICENSE)
7
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-1d2b50)](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/pyproject.toml)
8
+ [![Plugin Claude Code](https://img.shields.io/badge/plugin-Claude%20Code-c2410c)](#avec-claude-code)
9
+ [![Codex, Gemini CLI, Pi](https://img.shields.io/badge/agents-Codex%20%C2%B7%20Gemini%20CLI%20%C2%B7%20Pi-c2410c)](#avec-codex-gemini-cli-pi-ou-un-autre-agent)
10
+
11
+ **Un CLI et un plugin Claude Code, gratuits et open source, pour répondre à un marché
12
+ public français avec votre agent IA** : lecture du DCE, analyse, go/no-go, plan du mémoire
13
+ technique, rédaction, contrôle de conformité, relecture, formulaires DC1/DC2/DC4 et exports
14
+ Word, HTML et Excel.
15
+
16
+ Vous donnez le zip du DCE. Votre agent (Claude Code, Codex, Gemini CLI, Pi…) lit les pièces,
17
+ suit une méthode écrite par des gens qui répondent à des appels d'offres, et produit un
18
+ dossier de réponse que vous relisez. Tout reste sur votre poste : pas de compte, pas de
19
+ serveur, et le raisonnement passe par votre propre abonnement.
20
+
21
+ Un outil de [Remporte](https://remporte.fr/outils/agent-ia/?utm_source=github&utm_medium=readme&utm_content=entete),
22
+ le logiciel de réponse aux appels d'offres.
23
+
24
+ ---
25
+
26
+ ## Ce que vous obtenez
27
+
28
+ À partir d'un DCE (zip ou dossier : PDF, Word, Excel, OpenDocument, PowerPoint, CSV) :
29
+
30
+ | Fichier | Contenu |
31
+ |---|---|
32
+ | `01-pieces.md` | Inventaire des pièces reconnues (RC, CCAP, CCTP, CRT, AE, BPU, DPGF…), pièces illisibles, formats imposés par l'acheteur |
33
+ | `02-analyse.md` | Identité de la consultation, critères pondérés, exigences, pièces à remettre, clauses à risque, chaque point sourcé dans le DCE |
34
+ | `03-go-no-go.md` | Décision de répondre ou non, et ce qu'il faut réunir |
35
+ | `04-plan.md` | Plan du mémoire calé sur le cadre de réponse imposé, ou à défaut sur les critères |
36
+ | `sections/` | Le mémoire technique, une section par fichier, avec les preuves tirées de vos documents |
37
+ | `05-relecture.md` | Relecture avec la grille de notation de l'acheteur, par un agent qui n'a rien écrit |
38
+ | `candidature/` | DC1, DC2 et DC4 officiels remplis |
39
+ | `export/` | `memoire.docx`, `dossier.html`, `analyse.html`, `feuille-de-route.html`, `matrice-conformite.xlsx` |
40
+
41
+ Quand le cadre de réponse numérote ses exigences, `remporte cadre --couverture` liste celles
42
+ qu'aucune section ne traite encore. Un mémoire qui oublie une exigence perd des points sans
43
+ que personne ne le remarque : ce contrôle-là ne demande aucun modèle.
44
+
45
+ ## Installation
46
+
47
+ ```bash
48
+ uv tool install git+https://github.com/Remporte-dev/remporte-appels-offres
49
+ # ou : pipx install git+https://github.com/Remporte-dev/remporte-appels-offres
50
+ remporte --version
51
+ ```
52
+
53
+ Python 3.10 ou plus récent ; `uv` l'installe tout seul si besoin. Testé automatiquement sous
54
+ macOS, Linux et Windows ; signalez-nous tout problème.
55
+
56
+ ### Avec Claude Code
57
+
58
+ Le dépôt est aussi un plugin Claude Code :
59
+
60
+ ```
61
+ /plugin marketplace add Remporte-dev/remporte-appels-offres
62
+ /plugin install remporte@remporte
63
+ ```
64
+
65
+ Puis deux commandes :
66
+
67
+ - **`/remporte:init`**, une fois par poste : vérifie l'installation, indexe les documents de
68
+ votre entreprise et construit la fiche entreprise que liront tous les agents ;
69
+ - **`/remporte:nouvel-ao <DCE.zip>`**, pour chaque appel d'offres : crée le dossier et conduit
70
+ le parcours avec vous, avec trois arrêts de validation (analyse, go/no-go, plan).
71
+
72
+ Le plugin fournit trois sous-agents, pour lire une fois et rédiger en parallèle sans épuiser
73
+ l'abonnement :
74
+
75
+ | Sous-agent | Rôle |
76
+ |---|---|
77
+ | `lecteur-dce` | Lit RC, CCAP, CCTP et annexes volumineuses une seule fois, écrit l'index et l'analyse |
78
+ | `redacteur-section` | Rédige une section du mémoire à partir du plan, de l'analyse et de vos documents |
79
+ | `relecteur` | Relit le mémoire terminé avec la grille de l'acheteur, sans l'avoir rédigé |
80
+
81
+ ### Avec Codex, Gemini CLI, Pi ou un autre agent
82
+
83
+ Tout agent capable de lancer une commande peut s'en servir :
84
+
85
+ ```bash
86
+ remporte espace ~/Remporte # une fois : crée ressources/ et DCEs/
87
+ # déposez vos références, CV, certifications dans ~/Remporte/ressources/
88
+ cd ~/Remporte && remporte base indexer # à refaire quand vos documents changent
89
+ remporte init ~/Téléchargements/DCE.zip # crée DCEs/DCE/
90
+ cd DCEs/DCE && codex # ou claude, gemini, pi…
91
+ ```
92
+
93
+ Puis demandez : « réponds à cet appel d'offres ». Chaque dossier contient un `AGENTS.md` (et
94
+ un `CLAUDE.md`) qui donne la marche à suivre à l'agent.
95
+
96
+ ## Comment ça marche
97
+
98
+ ```mermaid
99
+ flowchart LR
100
+ DCE[DCE.zip] --> P[pièces] --> A[analyse] --> G{go / no-go}
101
+ G -->|go| PL[plan] --> R[rédaction] --> RL[relecture] --> E[export]
102
+ B[(vos documents<br/>ressources/)] -.-> R
103
+ ```
104
+
105
+ | Étape | Fichier | Ce que fait l'agent | `remporte guide` |
106
+ |---|---|---|---|
107
+ | Pièces | `01-pieces.md` | Vérifie l'inventaire, signale les pièces illisibles | `pieces` |
108
+ | Analyse | `02-analyse.md` | Critères pondérés, exigences, pièces à remettre, clauses | `analyse` |
109
+ | Go/no-go | `03-go-no-go.md` | Décide s'il faut répondre | `go-no-go` |
110
+ | Plan | `04-plan.md` | Trame calée sur le cadre de réponse ou les critères | `plan` |
111
+ | Rédaction | `sections/` | Une section par fichier, preuves tirées de votre base | `redaction` |
112
+ | Relecture | `05-relecture.md` | Note le mémoire avec la grille de l'acheteur | `relecture` |
113
+ | Export | `export/` | Word, HTML, Excel | `export` |
114
+
115
+ `remporte etat` dit où en est le dossier et quelle est l'étape suivante. Le CLI fait sans
116
+ modèle tout ce qui peut l'être (conversion, recherche, contrôle de couverture, mise en page) ;
117
+ l'agent garde le raisonnement et l'écriture.
118
+
119
+ **Cas particuliers** pris en charge par `remporte guide` : limite de pages, réponse dans un
120
+ fichier Excel ou Word imposé par l'acheteur, soutenance orale (le support se prépare à partir
121
+ des fichiers de l'entreprise), formulaires de candidature.
122
+
123
+ ## L'espace de travail
124
+
125
+ ```
126
+ Remporte/
127
+ ressources/ vos documents, fiche-entreprise.md, index de recherche
128
+ DCEs/
129
+ 2026-05-mairie-voirie/ un dossier par appel d'offres
130
+ ```
131
+
132
+ Un seul dossier, sur votre poste ou dans un dossier partagé. On retrouve chaque réponse, son
133
+ index et son analyse au même endroit.
134
+
135
+ ## Les commandes
136
+
137
+ | Commande | Rôle |
138
+ |---|---|
139
+ | `remporte espace [chemin]` | Créer l'espace de travail (`ressources/`, `DCEs/`) |
140
+ | `remporte init <dce>` | Créer un dossier de réponse depuis un zip ou un dossier |
141
+ | `remporte etat` | Avancement et prochaine étape |
142
+ | `remporte guide [étape]` | Méthode de l'étape |
143
+ | `remporte pieces` | Inventaire des pièces |
144
+ | `remporte lire <type ou nom>` | Texte d'une pièce ; sommaire si elle est longue, puis `--page` |
145
+ | `remporte chercher "<termes>"` | Recherche dans tout le DCE |
146
+ | `remporte cadre [--couverture]` | Trame imposée par le cadre de réponse ; exigences non traitées |
147
+ | `remporte formats` | Soutenance, limite de pages, cadres Excel ou Word à compléter |
148
+ | `remporte candidature preparer\|remplir` | DC1, DC2, DC4 officiels |
149
+ | `remporte base indexer\|chercher` | Index et recherche dans les documents de l'entreprise |
150
+ | `remporte fiche [--creer]` | Fiche entreprise lue par tous les agents |
151
+ | `remporte exporter` | Mémoire Word, analyse et feuille de route HTML, matrice de conformité Excel |
152
+ | `remporte html <fichier.md>` | Mettre n'importe quel markdown en page HTML |
153
+ | `remporte offre` | Ce que fait Remporte en plus |
154
+
155
+ Toutes les commandes acceptent `--json`, pour qu'un agent lise un résultat structuré.
156
+
157
+ ## Économiser son abonnement
158
+
159
+ - Une pièce longue se lit par son sommaire, puis page par page : sur un CCTP réel de
160
+ 523 000 caractères, le sommaire en fait 13 900.
161
+ - Les gros documents sont lus une seule fois, par un sous-agent, qui écrit un index que
162
+ réutilisent toutes les étapes suivantes.
163
+ - `remporte guide modeles` indique la puissance de modèle utile à chaque étape, et quand
164
+ confier une tâche à un modèle léger.
165
+
166
+ ## Confidentialité
167
+
168
+ Le CLI s'exécute entièrement sur votre poste. Il ne crée aucun compte, **n'effectue aucun
169
+ appel réseau** et ne mesure pas son usage. Vos DCE et vos documents restent dans les dossiers
170
+ que vous choisissez. Le raisonnement est fait par votre agent, selon les conditions de son
171
+ éditeur. Détails : [politique de confidentialité](https://remporte.fr/politique-confidentialite/#outil-agent-ia).
172
+
173
+ ## Ce que le CLI ne fait pas
174
+
175
+ - Remplir l'acte d'engagement et le bordereau de prix (BPU, DPGF, DQE) dans le fichier de
176
+ l'acheteur.
177
+ - Mettre le mémoire dans le modèle Word de votre entreprise.
178
+ - Donner les prix des marchés comparables déjà attribués.
179
+ - Lire les PDF scannés et les anciens fichiers Word `.doc` : ils sont signalés dans
180
+ l'inventaire.
181
+ - Chercher des appels d'offres : il part du DCE que vous avez déjà.
182
+
183
+ Les trois premiers points sont ce que fait
184
+ [Remporte](https://remporte.fr/outils/agent-ia/?utm_source=github&utm_medium=readme&utm_content=ne-fait-pas#aller-plus-loin).
185
+
186
+ ## Questions fréquentes
187
+
188
+ **Faut-il un compte ou une clé d'API ?** Non. Le CLI fonctionne seul, avec l'abonnement de
189
+ votre agent.
190
+
191
+ **Quels agents ?** Claude Code (plugin, commandes et sous-agents), Codex, Gemini CLI, Pi, et
192
+ tout agent qui sait lancer une commande et lire un fichier `AGENTS.md`.
193
+
194
+ **Marchés privés ?** Oui pour l'analyse, le plan, la rédaction et la relecture. Les
195
+ formulaires DC1, DC2 et DC4 ne concernent que la commande publique.
196
+
197
+ **Quel modèle ?** Un modèle de milieu de gamme suffit pour lire et rédiger ; la relecture et
198
+ le go/no-go gagnent à un modèle plus fort. Voir `remporte guide modeles`.
199
+
200
+ ## Contribuer
201
+
202
+ Les signalements et propositions sont bienvenus dans les
203
+ [issues](https://github.com/Remporte-dev/remporte-appels-offres/issues). Pour le code :
204
+
205
+ ```bash
206
+ git clone https://github.com/Remporte-dev/remporte-appels-offres && cd remporte-appels-offres
207
+ uv run pytest -q
208
+ ```
209
+
210
+ Dépendances sous licences permissives uniquement (MIT, BSD, Apache).
211
+
212
+ ## In English
213
+
214
+ **Remporte CLI** is an open-source command-line tool and Claude Code plugin that helps an AI
215
+ agent (Claude Code, Codex, Gemini CLI, Pi) answer **French public procurement tenders**
216
+ (*appels d'offres*, *marchés publics*): it reads the tender documents (DCE), extracts weighted
217
+ award criteria and requirements, drafts the technical proposal (*mémoire technique*) section by
218
+ section from your company documents, checks coverage of every numbered requirement, fills the
219
+ official DC1/DC2/DC4 forms, and exports to Word, HTML and Excel. Everything runs locally; no
220
+ account, no network calls. The method and outputs are in French.
221
+
222
+ ## Licence
223
+
224
+ [MIT](https://github.com/Remporte-dev/remporte-appels-offres/blob/main/LICENSE). © Flowt (Remporte).
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: lecteur-dce
3
+ description: Lit les pièces d'un DCE (RC, CCAP, CCTP, CRT, annexes volumineuses) une seule fois, écrit l'index du dossier puis l'analyse. À déléguer au début de chaque réponse à un appel d'offres, pour que les autres agents n'aient plus à relire les pièces.
4
+ model: sonnet
5
+ tools: Read, Write, Edit, Bash, Glob, Grep
6
+ ---
7
+
8
+ Tu es le lecteur du DCE. Tu lis les pièces une fois, pour toute l'équipe :
9
+ après toi, les autres agents travaillent sur tes fichiers et non sur les
10
+ pièces. Ton travail doit donc être exact, sourcé et complet.
11
+
12
+ Le dossier de réponse t'est donné par l'agent qui te délègue. Toutes les
13
+ commandes `remporte` prennent `--dossier "<dossier>"` si tu n'y es pas.
14
+
15
+ ## 1. L'entreprise
16
+
17
+ Lis `remporte fiche` : c'est l'entreprise qui répond. Tu en as besoin pour
18
+ juger ce qui, dans le DCE, la concerne particulièrement (exigences qu'elle
19
+ couvre, qu'elle ne couvre pas, certifications demandées).
20
+
21
+ ## 2. L'index du DCE : `00-index.md`
22
+
23
+ Lis `01-pieces.md`. Pour chaque pièce, sans la recopier :
24
+
25
+ ```
26
+ ## <type> — <nom du fichier>
27
+ - Contenu : deux lignes.
28
+ - À retenir : articles ou pages clés, avec leur numéro
29
+ (ex. « critères : RC art. 7.2, p. 8 » ; « pénalités : CCAP art. 13 »).
30
+ ```
31
+
32
+ Une pièce longue se lit par son sommaire (`remporte lire <pièce>`), puis par
33
+ les pages utiles (`--page N`) et `remporte chercher`. Ne lis jamais un CCTP
34
+ d'un bloc.
35
+
36
+ ## 3. L'analyse : `02-analyse.md`
37
+
38
+ Suis `remporte guide analyse` et remplis le gabarit. Chaque ligne porte sa
39
+ source [RC art. 7.2]. Les pondérations se recopient exactement. Ce qui n'est
40
+ pas dans le DCE s'écrit « non précisé dans le DCE » ; n'invente rien.
41
+
42
+ Ajoute en fin de « Points de vigilance » une courte section « Au regard de
43
+ l'entreprise » : exigences que la fiche entreprise ne couvre pas, ou qu'elle
44
+ couvre de façon fragile (certification absente, référence manquante, effectif
45
+ juste).
46
+
47
+ ## 4. Ce que tu rends
48
+
49
+ Un message court à l'agent qui t'a délégué : les deux fichiers écrits, les
50
+ pièces illisibles ou absentes, les trois points qui comptent le plus pour la
51
+ décision de répondre. Pas de résumé de l'analyse : elle est dans le fichier.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: redacteur-section
3
+ description: Rédige une section du mémoire technique d'une réponse à appel d'offres, à partir du plan, de l'analyse, de l'index du DCE et de la fiche entreprise. Un appel par section ; plusieurs peuvent tourner en parallèle.
4
+ model: sonnet
5
+ tools: Read, Write, Edit, Bash, Glob, Grep
6
+ ---
7
+
8
+ Tu rédiges **une** section du mémoire technique. L'agent qui te délègue te
9
+ donne le dossier de réponse et la section (numéro et titre de `04-plan.md`).
10
+
11
+ 1. Lis `remporte guide redaction` et suis-le.
12
+ 2. Lis la ligne de ta section dans `04-plan.md` (critère servi, poids, volume
13
+ visé), `00-index.md` pour savoir où chercher, et `remporte fiche`.
14
+ 3. Va chercher la matière précise : `remporte chercher` dans le DCE (pages
15
+ indiquées par l'index), `remporte base chercher` pour les références, les
16
+ CV et les preuves. Ne lis pas une pièce entière.
17
+ 4. Écris `sections/NN-titre.md`, en commençant par `# NN — Titre`. Si le CRT
18
+ numérote ses exigences, une sous-partie `### PP 0NN — …` par exigence que
19
+ porte ta section.
20
+ 5. N'invente aucune référence, aucun chiffre, aucun nom : `[à compléter : …]`.
21
+
22
+ Rends un message court : le fichier écrit, son volume en mots, les
23
+ informations manquantes. Ne coche pas le plan : l'agent principal le fait.