Installer et utiliser tstack : les 9 skills d'agent de Theo testés dans Claude Code et Codex, avec sol-loop qui fait tourner GPT-6.1 Sol sur la même clé

Theo a publié en open source tstack, les 9 skills d'agent qu'il utilise tous les jours. Nous les avons testés dans Claude Code 2.1.310 et Codex 0.164.0 avec une seule API Key de ce site : installation en 3 s environ ; dans Codex, sol-loop a fait 2 tours en 62 s, et Claude Code 2 tours en 70 s une fois un sous-agent Sol ajouté. Des deux côtés, gpt-6.1-sol a repéré un bug de division entière. Nous expliquons aussi pourquoi full-send laisse l'Agent fusionner les PR tout seul, et la configuration qui bloque la fusion dans les deux clients.

9 分钟阅读
Installer et utiliser tstack : les 9 skills d'agent de Theo testés dans Claude Code et Codex, avec sol-loop qui fait tourner GPT-6.1 Sol sur la même clé

En bref : tstack est un ensemble de 9 skills d'agent que Theo (t3dotgg) a publié en open source le 26 octobre. Pour l'installer, il suffit de copier les dossiers dans ~/.claude/skills/ ou ~/.codex/skills/. Nous avons connecté Claude Code et Codex avec la même API Key de ce site. Résultats :

  • Installation (cloner le dépôt + copier dans les deux clients) : environ 3 s ;
  • Dans Codex 0.164.0, dire « sol loop » lui a fait lancer un sous-agent gpt-6.1-sol pour relire le code : 2 tours, 62 s, avec un bug de division entière repéré et corrigé ;
  • Claude Code 2.1.310 ne peut pas lancer sol-loop tel quel et répond honnêtement « aucune voie ne permet de lancer Sol » ; après ajout d'un sous-agent avec model: gpt-6.1-sol, il passe en 2 tours, 70 s ;
  • full-send laisse l'Agent fusionner les PR tout seul. Nous avons ajouté des deux côtés une règle qui bloque gh pr merge, et elle a bloqué la commande dans les deux cas.

Créer une API Key et connecter Claude Code et Codex avec une seule clé →

Qu'est-ce que tstack

D'après le post d'annonce de Theo sur X, tstack regroupe « les skills que j'utilise tous les jours », nettoyés et publiés. Au moment de la rédaction, le post comptait environ 440 000 vues et le dépôt GitHub environ 2 000 étoiles, sous licence MIT. Le README indique qu'il fonctionne dans Claude Code comme dans Codex ; certains skills utilisent les fonctions de T3 Code quand elles existent et se rabattent sinon sur les outils natifs du client.

Les 9 skills et leurs déclencheurs (d'après le README du dépôt) :

SkillÀ direCe qu'il fait
full-sendfull sendSans surveillance : termine la modification, la prouve, la relit, ouvre une PR, surveille la CI, puis la fusionne lui-même
full-stopfull stopComme full-send, mais s'arrête à « prête à fusionner » sans fusionner
councilcouncilFait relire par trois modèles de fournisseurs différents jusqu'à ce qu'ils soient d'accord
sol-loopsol loopFait relire la modification par GPT Sol en boucle jusqu'à accord des deux agents
file-prfile a PROuvre une PR courte qui commence par le problème, pas par la liste des changements
takeovertake overTermine la PR, la branche ou le fil d'Agent de quelqu'un d'autre en lui laissant le crédit
babysit-prbabysitSuit une PR à travers la CI et les bots de revue, et corrige les vrais problèmes
modernizemodernizeRebase une vieille PR et décide si elle doit encore exister
leaving-pr-commentsautomatiqueFixe le format des commentaires que l'Agent publie en votre nom

Les skills dépendent les uns des autres : full-send utilise sol-loop, file-pr et babysit-pr ; full-stop utilise full-send. Le plus simple est de tout installer.

Étape 1 : configurer Claude Code et Codex

Les deux clients peuvent utiliser la même clé de ce site.

Pour Claude Code, dans le fichier global ~/.claude/settings.json :

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
  },
  "model": "claude-sonnet-5-5"
}

L'adresse est https://api.aicodewith.ai, sans /v1. Pour toutes les étapes, voir Connecter Claude Code à une API tierce.

Pour Codex, dans le fichier global ~/.codex/config.toml :

toml
model = "gpt-6.1-sol"
model_provider = "aicodewith"

[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "YOUR_API_KEY"

Pour le sens de chaque champ, voir Codex config.toml expliqué.

Étape 2 : installer tstack

bash
git clone https://github.com/t3dotgg/tstack
mkdir -p ~/.claude/skills ~/.codex/skills
cp -R tstack/skills/* ~/.claude/skills/   # Claude Code
cp -R tstack/skills/* ~/.codex/skills/    # Codex

Ces étapes ont pris environ 3 s dans notre test. Une fois installés, Claude Code affiche les skills au démarrage, et Codex lit le SKILL.md correspondant quand vous dites un déclencheur. Pour savoir ce que sont les skills et où ils se rangent, voir Utiliser les Skills dans les agents IA.

Deux autres prérequis : les skills qui ouvrent des PR, comme full-send et babysit-pr, demandent une GitHub CLI authentifiée (gh) ; le script d'attente de babysit-pr demande python3.

Étape 3 : appeler GPT Sol avec la même clé et lancer sol-loop

Vérifiez d'abord que la clé atteint Sol. La liste des modèles de ce site contient gpt-6.1-sol. Nous avons envoyé une phrase à l'endpoint Responses et reçu un HTTP 200 en environ 4 s :

bash
curl https://api.aicodewith.ai/chatgpt/v1/responses \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-6.1-sol","input":"Reply with exactly: SOL_OK"}'

Le projet de test est minuscule : calc.py dans average() a reçu un test de liste vide, mais la même modification a aussi changé / en //. Les tests existants ne vérifient qu'une moyenne entière, donc ils restent verts. Ce bug est laissé à Sol.

Dans Codex

Lancez dans le dossier du projet :

bash
codex exec --sandbox workspace-write "sol loop: review the current uncommitted changes (no remote, use HEAD as the base). After approval, do not commit or push."

Terminé en 62 s. Le journal de session montre que Codex a d'abord cherché delegate_task de T3 Code, ne l'a pas trouvé, puis a utilisé son spawn_agent intégré pour lancer un sous-agent avec "model":"gpt-6.1-sol". Déroulé :

  • Tour 1 : Sol signale que average([1, 2]) renvoie 1 au lieu de 1.5 ;
  • L'Agent principal remet /, ajoute un test test_average_fractional et vérifie que ce test échoue sur l'ancien code ;
  • Tour 2 : Sol approuve. Rien n'a été commité ni poussé.

Rapport final de Codex (traduit de l'original) :

text
2 tours de sol-loop terminés. GPT-6.1 Sol a donné son approbation finale ; rien ne reste ouvert.
- S1 corrigé : la division entière faussait les moyennes non entières ; / restauré, gestion de la liste vide conservée, test de régression ajouté.
Rien commité, rien poussé ; les changements restent dans le répertoire de travail.

Dans Claude Code

Si vous dites simplement « sol loop », Claude Code refuse de le lancer. Réponse en 11 s (traduite de l'original) :

text
La revue Sol n'a pas pu tourner, donc cette modification n'a pas passé la revue.
Blocage : aucune voie ici ne permet de lancer Sol... Selon les règles de sol-loop, je ne remplacerai pas Sol par un autre modèle, et je ne traiterai pas une revue absente comme une approbation.

C'est la règle du skill : dans Claude Code, il ne tourne qu'avec un sous-agent configuré pour Sol, et il ne doit pas changer de modèle. La solution consiste à créer ~/.claude/agents/sol-reviewer.md :

markdown
---
name: sol-reviewer
description: Read-only code reviewer running GPT Sol. Use for the sol-loop skill.
model: gpt-6.1-sol
tools: Read, Grep, Glob, Bash
---
You are a read-only code reviewer. Never edit, commit, or push. Follow the review brief you are given and reply in its exact format.

L'endpoint compatible Anthropic de ce site peut aussi appeler gpt-6.1-sol, donc ce sous-agent utilise la même clé. Relancez :

bash
claude -p "sol loop: review the current uncommitted changes (no remote, use HEAD as the base). After approval, do not commit or push." --permission-mode acceptEdits

70 s et 2 tours, même résultat que Codex : au tour 1, Sol renvoie VERDICT: CHANGES et signale le problème de division ; après correction, le tour 2 renvoie VERDICT: APPROVE. Les statistiques d'usage de la sortie listent à la fois claude-sonnet-5-5 (Agent principal) et gpt-6.1-sol (sous-agent de revue), ce qui montre que c'est bien Sol qui a relu.

Au démarrage, Claude Code affiche une notice unrecognized_model parce qu'il ne reconnaît pas le nom gpt-6.1-sol. Vous pouvez l'ignorer, elle n'empêche pas l'exécution. Pour configurer les sous-agents, voir aussi Configuration des sous-agents Claude Code.

ScénarioRésultatDurée
Cloner + copier dans les deux clientsRéussienviron 3 s
sol-loop dans Codex 0.164.02 tours, Sol approuve62 s
Claude Code 2.1.310, sans sous-agent SolSignale un blocage, pas de revue11 s
Claude Code 2.1.310 avec sol-reviewer2 tours, Sol approuve70 s

Créer une API Key et lancer sol-loop dans Claude Code et Codex →

Le risque de full-send : autoriser l'Agent à fusionner lui-même

full-send : le SKILL.md est sans détour. Si vous dites « full send », vous ne regardez pas le fil, et l'Agent mène la modification jusqu'à la fusion dans la branche principale. Il accorde explicitement trois permissions à l'Agent :

  • Une fois la porte de fusion passée, fusionner la PR lui-même ;
  • Après un rebase, pousser de force la branche de la PR avec --force-with-lease ;
  • Ignorer les règles du projet du type « demande-moi avant ce genre de test » et lancer les tests directement.

Il a des limites : pas de --admin pour contourner la protection de branche, et supprimer des données ou toucher la production exige toujours de demander à une personne. Mais la fusion elle-même ne vous est plus demandée. Si votre dépôt déploie à chaque fusion, dire « full send » revient à laisser l'Agent mettre en production tout seul.

Le skill dit « si l'utilisateur n'a pas clairement demandé full send, ne suppose pas l'autonomie totale », mais c'est laissé au jugement de l'Agent, pas à un vrai interrupteur. Tant que le skill est installé, il peut se déclencher par erreur.

Comment le désactiver ou le limiter

Du plus léger au plus strict :

Option 1 : ne pas installer full-send

Si vous voulez seulement que Sol relise le code, copiez uniquement le dossier sol-loop (il ne dépend d'aucun autre skill) et laissez de côté full-send et full-stop.

Option 2 : utiliser full-stop à la place

Il suit le même déroulé mais s'arrête à « prête à fusionner », et c'est vous qui cliquez sur fusionner.

Option 3 : bloquer la commande de fusion dans Claude Code

Ajoutez dans le fichier global ~/.claude/settings.json :

json
{
  "permissions": {
    "deny": ["Bash(gh pr merge:*)", "Bash(gh api:*)"]
  }
}

gh api doit aussi être bloqué, sinon l'Agent peut fusionner en appelant directement l'API GitHub. Quand nous avons demandé à Claude Code d'exécuter gh pr merge 1 --squash, la commande a été bloquée en moins de 5 s, et le champ permission_denials du résultat l'a enregistrée.

Option 4 : bloquer la commande de fusion dans Codex

Créez ~/.codex/rules/default.rules :

python
prefix_rule(
    pattern = ["gh", "pr", "merge"],
    decision = "forbidden",
    justification = "Merging a PR must be done by a human",
)

Refusée en moins de 8 s dans notre test, avec dans le journal rejected: Merging a PR must be done by a human. Pour plus de réglages de bac à sable et d'approbation, voir Les permissions du bac à sable Codex.

Option 5 : activer la protection de branche sur GitHub

Exigez une approbation avant la fusion. D'après la documentation de GitHub, l'auteur d'une PR ne peut pas approuver sa propre PR ; l'Agent utilise votre compte gh, il ne peut donc pas réunir l'approbation seul. Cette couche ne dépend pas de la configuration du client, c'est la plus fiable.

Nous n'avons pas lancé full-send jusqu'à la fusion sur un vrai dépôt ; nous avons seulement testé sol-loop, dont il dépend, et les deux règles de blocage ci-dessus.

Questions fréquentes

Peut-on utiliser tstack sans T3 Code ?

Oui. Nous n'avons jamais installé T3 Code. Codex utilise ses sous-agents intégrés ; Claude Code a besoin d'un sous-agent Sol configuré comme ci-dessus.

sol-loop peut-il relire avec un autre modèle ?

Le skill dit explicitement de ne pas changer de modèle et de signaler un blocage si Sol n'est pas disponible. Pour changer cela, modifiez vous-même SKILL.md ; le README vous encourage d'ailleurs à « vous les approprier ».

De quoi council a-t-il besoin ?

D'après le README, council a besoin des modèles phares de trois fournisseurs différents qui relisent en même temps, par exemple Claude Opus, GPT Sol et Gemini Pro. La liste de ce site contient claude-opus-5-5, gpt-6.1-sol et gemini-4-argon, vous pouvez donc configurer un sous-agent pour chacun comme sol-reviewer. Nous n'avons pas testé council ici.

Dans Codex, sol-loop ne relit-il que les modifications non commitées ?

Non. Avec un remote, il utilise git merge-base pour trouver la base et relit toute la branche ; il n'utilise HEAD que s'il n'y a pas de remote. Pour relire seulement le répertoire de travail, vous pouvez aussi utiliser la revue intégrée de Codex ; voir La revue Codex des modifications non commitées.

Environnement de test

  • Claude Code 2.1.310, Codex CLI 0.164.0, Linux ;
  • commit tstack 92e38e2 (2026-10-27) ;
  • Modèles principaux : claude-sonnet-5-5 pour Claude Code et gpt-6.1-sol pour Codex ; modèle de revue gpt-6.1-sol ;
  • Toutes les requêtes sont passées par la même API Key de ce site. Nous avons supprimé après le test la configuration et les journaux contenant la clé.

Créer une API Key et commencer avec tstack →

相关文章

Pourquoi Claude bannit-il des comptes ? La théorie communautaire du « système de points » et Claude Code sans changer de compte

Pourquoi Claude bannit-il des comptes ? La théorie communautaire du « système de points » et Claude Code sans changer de compte

Depuis le 28 octobre, deux publications affirmant que « Claude bannit les comptes selon un système de points » ont cumulé environ 770 000 vues sur X. Nous séparons les affirmations de la communauté de ce qu'Anthropic publie réellement sur les bannissements et les recours, puis nous testons Claude Code 2.1.310 avec une API Key de notre site : les requêtes simples répondent en 1,4 à 1,7 seconde environ, et une petite tâche de correction de bug avec tests se termine en 8,5 secondes. Configuration de Codex et Cursor et dépannage 401/429 inclus.

Un AGENTS.md dans Téléchargements peut-il détourner Codex et Claude Code ? Vérifier config.toml et settings.json, se protéger et changer de Key (commandes incluses)

Un AGENTS.md dans Téléchargements peut-il détourner Codex et Claude Code ? Vérifier config.toml et settings.json, se protéger et changer de Key (commandes incluses)

Selon un rapport de Forever Security, un AGENTS.md déposé dans ~/Downloads peut amener Codex à ajouter un serveur MCP à son config.toml global et à installer un paquet npm malveillant, et un CLAUDE.md bien construit peut amener Claude Code à pointer ANTHROPIC_BASE_URL vers le serveur d'un attaquant. Ce guide donne des commandes de vérification macOS/Linux et PowerShell, montre une configuration AICodeWith correcte, présente nos tests de trust_level et explique comment changer de Key en cas de compromission.

Migrer de Claude Code à Codex : transférer règles, skills, MCP et hooks avec /import — model_provider survit-il à l'import ? (testé avec une API Key tierce)

Migrer de Claude Code à Codex : transférer règles, skills, MCP et hooks avec /import — model_provider survit-il à l'import ? (testé avec une API Key tierce)

Le /import de Codex CLI peut transférer dans Codex le CLAUDE.md, le settings.json, les hooks, les skills, les MCP, les sous-agents et les conversations récentes de Claude Code. Dans notre test, le model_provider = "aicodewith" existant n'a pas été modifié et les appels fonctionnaient normalement après l'import ; mais la Key du settings.json est écrite dans l'environnement shell de Codex et doit être retirée à la main.