<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Docker Sbx on Rémi Tech Notes</title><link>https://www.vrchr.fr/tags/docker-sbx/</link><description>Recent content in Docker Sbx on Rémi Tech Notes</description><generator>Hugo</generator><language>fr-fr</language><lastBuildDate>Thu, 06 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.vrchr.fr/tags/docker-sbx/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker sbx et Claude Code : mémoire et config custom depuis l'hôte</title><link>https://www.vrchr.fr/posts/2026/08/06/sbx-kit-project-host/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.vrchr.fr/posts/2026/08/06/sbx-kit-project-host/</guid><description>Utilisation d&amp;#39;un kit &amp;#39;mixin&amp;#39; sbx qui persiste la mémoire et les configs custom Claude Code sur l&amp;#39;hôte, pour que rien ne meure quand la sandbox disparaît.</description><content:encoded><![CDATA[<p>Depuis quelques temps, j'utilise comme beaucoup d'entre vous Claude Code pour accélérer
la gestion de mes tâches techniques. Je l'utilise surtout pour m'aider à résoudre, comprendre,
améliorer mes connaissances sur les sujets que je traite.</p>
<p>Utilisateur de la CLI, le fait de donner tout pouvoir à un outil tel que Claude ne me plaisait pas trop,
et j'ai donc naturellement commencé à utiliser Docker Sandbox (<code>sbx</code>) qui me permet, entre autres, d'avoir :</p>
<ul>
<li>Une isolation du filesystem (sbx n'a accès qu'au dossier courant, et il ne &quot;pourrit&quot; pas mon système hôte)</li>
<li>Pas d'accès à toutes mes variables d'environnement</li>
<li>Un contrôle sur les flux réseau sortants</li>
</ul>
<p>Mais le problème, c'est qu'une sandbox <code>sbx</code>, c'est une micro-vm qui peut être éphémère.
Une fois la session Claude terminée, vous pouvez la supprimer avec <code>sbx rm</code>, son historique et sa mémoire avec.</p>
<blockquote>
<p>⚠️ Ce que j'ai mis en place à date (été 2026) peut avoir évolué depuis, les projets sont très actifs !</p>
</blockquote>
<h2 id="les-problèmes">Les problèmes</h2>
<h3 id="la-mémoire">La mémoire</h3>
<p>Claude Code stocke la mémoire et l'historique de chaque session dans
<code>~/.claude/projects/&lt;slug&gt;/</code>. Oui, vous pouvez vérifier chez vous, vous aurez un dossier
dont le nom dérive du chemin du workspace pour chaque dossier où vous avez lancé une session Claude.
Dans une sandbox, ce dossier vit sur un volume Docker <strong>lié au cycle de vie de la sandbox</strong>.
Lorsqu'on supprime la sandbox (<code>sbx rm</code>), on perd tout : la mémoire accumulée au fil des sessions,
les transcripts <code>.jsonl</code>, la config perso.</p>
<p>Et donc vous voyez venir la tuile : au prochain <code>sbx run</code> alors que la sandbox a été détruite, tout est oublié 🫤.</p>
<h3 id="la-config-custom">La config custom</h3>
<p>Autre problème, j'utilise Claude à <strong>ma façon</strong>, et j'aimerais bien avoir <em>ma façon</em>
aussi dans la sandbox, comme par exemple :</p>
<ul>
<li>Mon propre <code>CLAUDE.md</code></li>
<li>Ma config propre (thème clair, en français, pas de télémétrie)</li>
<li>Mes plugins activés (<a href="https://github.com/rtk-ai/rtk">RTK</a>)</li>
</ul>
<p>Avec <code>sbx run claude</code>, Claude Code est lancé en mode <em>YOLO</em>, mais pas plus.
Il va falloir trouver un moyen de copier depuis l'hôte.</p>
<blockquote>
<p><em>TL;DR :</em> Vous pouvez retrouver mon kit <a href="https://github.com/rverchere/sbx-kit-claude-project-host">ici</a>
si vous avez la flemme de lire la suite 🫠.</p>
</blockquote>
<h2 id="une-solution--les-kits-mixin">Une solution : les kits mixin</h2>
<p>Docker sbx permet d'étendre les fonctionnalités de base avec des
<a href="https://docs.docker.com/ai/sandboxes/customize/kits/">kits</a>, notamment les <em>kits mixin</em>.
C'est donc cela que je vais utiliser pour résoudre mes 2 problèmes !</p>
<blockquote>
<p>J'utilise la spec <code>v2</code> des kits, livrée avec <code>sbx</code> 0.38.0, sortie le jour même de cet article.</p>
</blockquote>
<h3 id="sauver-la-mémoire-sur-lhôte">Sauver la mémoire sur l'hôte</h3>
<p>Un kit <code>sbx</code> ne peut pas monter un dossier arbitraire de l'hôte.
Les <strong>seuls</strong> chemins réellement persistants côté hôte dans une sandbox sont le workspace lui-même
et les <a href="https://docs.docker.com/ai/sandboxes/workflows/#share-agent-skills">skills</a>.
Tout le reste (<code>~/.claude/projects</code>, <code>sessions</code>, <code>todos</code>) est un volume déclaré par l'agent de base, donc lié
à la sandbox.</p>
<p>Ce qu'on va alors faire, c'est simplement de remplacer <code>~/.claude/projects/&lt;slug&gt;</code> par un <strong>lien symbolique</strong>
pointant vers <code>.claude-project/</code> à la racine du workspace : lorsque ma sandbox sera créée,
un dossier <code>.claude-project/</code> sera créé à la racine du workspace, et le lien symbolique sera mis en place.</p>
<p>Côté kit, cela se fait via un script exécuté à chaque démarrage de sandbox dans le fichier <a href="https://github.com/rverchere/sbx-kit-claude-project-host/blob/0.0.1/spec.yaml#L80"><code>spec.yaml</code></a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">startup</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span>- <span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l">Links ~/.claude/projects/&lt;slug&gt; to the workspace, excludes it from git</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w">    </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;1000&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w">    </span><span class="nt">command</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w">      </span>- <span class="l">sh</span><span class="w">
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="w">      </span>- -<span class="l">c</span><span class="w">
</span></span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="w">      </span>- <span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="sd">        # Mon super code généré par Claude pour faire un symlink</span><span class="w">
</span></span></span></code></pre></div><p>Ce script tourne à chaque démarrage de sandbox, mémoire et transcripts atterrissent alors
physiquement sur mon Mac, visibles dans le Finder, survivent à <code>sbx rm</code>.</p>
<p>J'ai défini un dossier <code>.claude-project/</code>, qui est exclu localement via <code>.git/info/exclude</code>,
cela est aussi géré au niveau du <a href="https://github.com/rverchere/sbx-kit-claude-project-host/blob/0.0.1/spec.yaml#L144">kit</a> :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># Ignore local to the clone, without touching the versioned .gitignore.</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># --git-common-dir (not --git-dir): in a linked worktree, --git-dir</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1"># points to .git/worktrees/&lt;name&gt;, where info/exclude is not read by git.</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="nv">GITDIR</span><span class="o">=</span><span class="k">$(</span>git -C <span class="s2">&#34;</span><span class="nv">$WS</span><span class="s2">&#34;</span> rev-parse --git-common-dir 2&gt;/dev/null<span class="k">)</span> <span class="o">||</span> <span class="nb">exit</span> <span class="m">0</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="k">case</span> <span class="s2">&#34;</span><span class="nv">$GITDIR</span><span class="s2">&#34;</span> in /*<span class="o">)</span> <span class="p">;;</span> *<span class="o">)</span> <span class="nv">GITDIR</span><span class="o">=</span><span class="s2">&#34;</span><span class="nv">$WS</span><span class="s2">/</span><span class="nv">$GITDIR</span><span class="s2">&#34;</span> <span class="p">;;</span> <span class="k">esac</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">mkdir -p <span class="s2">&#34;</span><span class="nv">$GITDIR</span><span class="s2">/info&#34;</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">grep -qxF <span class="s1">&#39;/.claude-project/&#39;</span> <span class="s2">&#34;</span><span class="nv">$GITDIR</span><span class="s2">/info/exclude&#34;</span> 2&gt;/dev/null <span class="se">\
</span></span></span><span class="line"><span class="ln">8</span><span class="cl">  <span class="o">||</span> <span class="nb">echo</span> <span class="s1">&#39;/.claude-project/&#39;</span> &gt;&gt; <span class="s2">&#34;</span><span class="nv">$GITDIR</span><span class="s2">/info/exclude&#34;</span>
</span></span></code></pre></div><p>Autre point important, avec <strong><code>agentInstructions</code></strong> je vais passer des instructions spécifiques
pour que Claude Code gère bien ce dossier <code>.claude-project/</code>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">agentInstructions</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span><span class="nt">content</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="sd">    ## Host-persisted project directory</span><span class="w">
</span></span></span></code></pre></div><p>Avec cela, lorsque la sandbox est arrêtée, supprimée, relancée, le dossier <code>.claude-project/</code> persiste avec ce qu'il faut !
Fini la perte de mémoire en environnement cloisonné 🧠 !</p>
<h3 id="récupérer-ma-config-perso">Récupérer ma config perso</h3>
<p>Le symlink règle la mémoire, mais chaque <code>sbx run</code> repart aussi avec un <code>settings.json</code> vierge.
Même mécanique ici, un script qui merge un fichier JSON custom avec celui par défaut à chaque démarrage grâce à <code>jq</code>.</p>
<p>Voici mon fichier <code>settings.custom.json</code> (extrait) qui sera fusionné :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="nt">&#34;theme&#34;</span><span class="p">:</span> <span class="s2">&#34;light-ansi&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="nt">&#34;statusLine&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;command&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="nt">&#34;command&#34;</span><span class="p">:</span> <span class="s2">&#34;~/.claude/statusline.sh&#34;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="nt">&#34;env&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="nt">&#34;CLAUDE_CODE_ENABLE_TELEMETRY&#34;</span><span class="p">:</span> <span class="s2">&#34;0&#34;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="nt">&#34;language&#34;</span><span class="p">:</span> <span class="s2">&#34;French&#34;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>Et toujours pareil, le merge sera effectué au démarrage de la sandbox, défini <a href="https://github.com/rverchere/sbx-kit-claude-project-host/blob/0.0.1/spec.yaml#L132">ici</a> dans le <code>spec.yaml</code> :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln">1</span><span class="cl">jq --arg dir <span class="s2">&#34;</span><span class="nv">$TARGET</span><span class="s2">&#34;</span> --slurpfile kit <span class="s2">&#34;</span><span class="nv">$CUSTOMSETTINGS</span><span class="s2">&#34;</span> <span class="se">\
</span></span></span><span class="line"><span class="ln">2</span><span class="cl">   <span class="s1">&#39;. * {autoMemoryDirectory: $dir} * $kit[0]&#39;</span> <span class="s2">&#34;</span><span class="nv">$SETTINGS</span><span class="s2">&#34;</span> &gt; <span class="s2">&#34;</span><span class="nv">$TMP</span><span class="s2">&#34;</span>
</span></span></code></pre></div><h3 id="ajouter-mes-plugins-rtk-surtout">Ajouter mes plugins (RTK surtout)</h3>
<p>On continue, cette fois-ci avec les plugins. Vous avez compris le principe maintenant,
du bon script shell dans le <code>spec.yaml</code>, mais au <code>setup</code> cette fois, pour éviter d'installer <code>RTK</code>
à chaque (re)démarrage de la sandbox !</p>
<p>Alors pour le moment c'est un peu sale, car on a &quot;pin&quot; la version de <code>RTK</code> à installer, pour éviter un <code>curl | sh</code> :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nt">setup</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w">  </span><span class="nt">install</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w">    </span>- <span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="l">Installs rtk (pinned binary, checksum verified) and its Bash hook</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w">      </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;1000&#34;</span><span class="w"> </span><span class="c"># Le user n&#39;est pas root, mais 1000 par défaut</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w">      </span><span class="nt">command</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd">
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="sd">        # Ma super installation de RTK</span><span class="w">
</span></span></span></code></pre></div><p>Le plugin RTK a besoin de définir des ordres dans le fichier <code>CLAUDE.md</code>, on voit ça juste après.</p>
<h3 id="mon-claudemd">Mon <code>CLAUDE.md</code></h3>
<p>Au fur et à mesure de mon utilisation de Claude, j'ai créé mon propre <code>CLAUDE.md</code> pour que l'outil me réponde
selon <strong>mes</strong> préférences, et j'aimerais bien le retrouver dans mes sandboxes.</p>
<p>Cette fois-ci, pas la peine de scripter, le kit permet de copier simplement des fichiers depuis
le répertoire <code>files/home/.claude</code> vers le répertoire <code>~/.claude/</code> de la sandbox.</p>
<p>&quot;Sauf que&quot;, mon fichier à moi <code>CLAUDE.md</code> est personnel (profil, stack de référence, décisions actées,
conventions de travail), pas forcément lié au projet ou à la sandbox.
J'ai donc décidé :</p>
<ul>
<li>de le nommer <code>PERSONA.md</code>, et de faire une inclusion via <code>@-import</code>.</li>
<li>d'avoir ce <code>PERSONA.md</code> <em>placeholder</em> dans le kit mis à disposition.</li>
<li>d'avoir <em>mon</em> <code>PERSONA.md</code> synchronisé avec <code>mise run claude</code> via une <code>task</code> personnalisée (voir plus bas).</li>
</ul>
<p>J'ai ensuite un <code>@RTK.md</code> : <a href="https://github.com/rtk-ai/rtk">rtk</a> en a besoin. Ce qui nous donne au final un fichier assez sommaire :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-md" data-lang="md"><span class="line"><span class="ln">1</span><span class="cl"><span class="cm">&lt;!-- PERSONA, mes infos &#34;persos&#34; --&gt;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="ni">@PERSONA</span>.md
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="cm">&lt;!-- Plugin RTK (https://github.com/rtk-ai/rtk) --&gt;</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="ni">@RTK</span>.md
</span></span></code></pre></div><h3 id="synchro-de-mon-personamd">Synchro de mon <code>PERSONA.md</code></h3>
<p>Pour utiliser mon vrai <code>~/.claude/PERSONA.md</code>, je le synchronise avec <code>mise run claude</code>,
dont voici la <code>task</code> correspondante. Au moins si besoin d'être utilisée ailleurs, elle n'est pas exclusive au kit :</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="cp">#!/usr/bin/env bash
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">#MISE description=&#34;Sandbox claude-project-host : new if absent, resume + attach if present&#34;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">#MISE dir=&#34;{{cwd}}&#34;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">#MISE tools={ &#34;github:docker/sbx-releases&#34; = &#34;latest&#34; }</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1">#USAGE arg &#34;&lt;workspace&gt;&#34; help=&#34;Chemin du workspace a monter&#34; default=&#34;.&#34;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1"># Copy PERSONA.md to the kit directory</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nv">kit_dir</span><span class="o">=</span><span class="s2">&#34;</span><span class="nv">$HOME</span><span class="s2">/.config/sbx/claude-project-host&#34;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">cp <span class="s2">&#34;</span><span class="nv">$HOME</span><span class="s2">/.claude/PERSONA.md&#34;</span> <span class="s2">&#34;</span><span class="nv">$kit_dir</span><span class="s2">/files/home/.claude/PERSONA.md&#34;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nv">ws</span><span class="o">=</span><span class="s2">&#34;</span><span class="k">$(</span><span class="nb">cd</span> <span class="s2">&#34;</span><span class="si">${</span><span class="nv">usage_workspace</span><span class="si">}</span><span class="s2">&#34;</span> <span class="o">&amp;&amp;</span> <span class="nb">pwd</span><span class="k">)</span><span class="s2">&#34;</span> <span class="o">||</span> <span class="o">{</span> <span class="nb">echo</span> <span class="s2">&#34;Workspace not found: &#39;</span><span class="si">${</span><span class="nv">usage_workspace</span><span class="si">}</span><span class="s2">&#39;&#34;</span> &gt;<span class="p">&amp;</span>2<span class="p">;</span> <span class="nb">exit</span> 1<span class="p">;</span> <span class="o">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nv">name</span><span class="o">=</span><span class="s2">&#34;claude-</span><span class="k">$(</span>basename <span class="s2">&#34;</span><span class="nv">$ws</span><span class="s2">&#34;</span><span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1"># Check if the sandbox is already present, reattach if so</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="k">if</span> sbx ls <span class="p">|</span> awk <span class="s1">&#39;{print $1}&#39;</span> <span class="p">|</span> grep -Fqx <span class="s2">&#34;</span><span class="nv">$name</span><span class="s2">&#34;</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">  <span class="nb">echo</span> <span class="s2">&#34;Sandbox &#39;</span><span class="nv">$name</span><span class="s2">&#39; present, reattaching...&#34;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  sbx run <span class="s2">&#34;</span><span class="nv">$name</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1"># Otherwise, create a new sandbox with the toolkit</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="nb">echo</span> <span class="s2">&#34;Sandbox &#39;</span><span class="nv">$name</span><span class="s2">&#39; absent, creating...&#34;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  sbx run --name <span class="s2">&#34;</span><span class="nv">$name</span><span class="s2">&#34;</span> --kit <span class="s2">&#34;</span><span class="nv">$kit_dir</span><span class="s2">&#34;</span> claude <span class="s2">&#34;</span><span class="nv">$ws</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="k">fi</span>
</span></span></code></pre></div><h2 id="en-plus">En plus</h2>
<h3 id="quelques-bonus">Quelques bonus</h3>
<p>Tant qu'à faire, je rajoute des instructions spécifiques dans mon kit :</p>
<ul>
<li>Faire des &quot;Session summaries&quot; : écrire un résumé après chaque choix / débat important,
au format Markdown Obsidian pour que je puisse l'intégrer facilement dans mon coffre de notes.</li>
<li>Pour le moment pas beaucoup plus 😅</li>
</ul>
<h3 id="distribution-du-kit">Distribution du kit</h3>
<p>Le mixin a été pensé pour mon usage perso, en français. Pour le publier, j'ai séparé le
mécanisme (générique, à partager) du contenu (personnel, à ne pas partager).</p>
<p>Deux fichiers concentraient le problème :</p>
<ul>
<li><strong><code>PERSONA.md</code></strong> — on l'a vu plus haut, le kit publié embarque désormais un <strong>placeholder</strong> (les
sections à remplir, sans contenu), et mon vrai <code>PERSONA.md</code> reste local, resynchronisé par une
tâche <code>mise run claude</code> qui vit hors du repo.</li>
<li><strong><code>&quot;language&quot;: &quot;French&quot;</code></strong> dans les préférences répliquées — un défaut personnel que je garde
pour mon propre usage, à charge pour quiconque fork le kit de le changer pour le sien.</li>
</ul>
<p>Et pour celles et ceux qui ont lu jusque-là, je remets le lien du dépôt : <a href="https://github.com/rverchere/sbx-kit-claude-project-host">https://github.com/rverchere/sbx-kit-claude-project-host</a></p>
<p>Amusez-vous bien avec Docker Sandbox et Claude Code !</p>
<h2 id="liens">Liens</h2>
<ul>
<li>Spec des kits <code>sbx</code> : <a href="https://github.com/docker/sbx-kits-contrib/blob/0.0.1/spec/SPEC-v2.md">SPEC-v2.md</a></li>
<li>Kits communautaires : <a href="https://github.com/docker/sbx-kits-contrib">sbx-kits-contrib</a></li>
<li>Plugin RTK : <a href="https://github.com/rtk-ai/rtk">rtk-ai/rtk</a></li>
</ul>]]></content:encoded></item></channel></rss>