repo_conventions injects AGENTS.md and CLAUDE.md as two blocks — identical content is paid twice when CLAUDE.md is a symlink/copy of AGENTS.md
メンテナーはふだん 1 日以内に返信
@tachytelicdetonation がすでに取り組んでいます。
2026年9月18日 から。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- ai
調査の方向性
テキスト生成ポリシービルダーの repo_conventions ケースから始め、AGENTS.md と CLAUDE.md に対する readRepositoryInstructions 呼び出しを調査します。CLAUDE.md をシンボリックリンクまたは同一のコピーにして再現し、生成された規約プロンプトに共有コンテンツが 1 回だけ含まれることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Summary
When generating commit messages / change-request descriptions, the repo_conventions text-generation policy appends the repository's AGENTS.md and CLAUDE.md as two separate blocks. A very common convention (recommended in the agents.md ecosystem and by Claude Code docs) is to keep CLAUDE.md as a symlink to (or byte-identical copy of) AGENTS.md. In that setup the same content is included twice in every such prompt — in our repo that is ~38k chars ≈ ~10k tokens, so ~20k tokens per generation for zero new information.
Where
Observed in the installed macOS app, T3 Code (Alpha) 0.0.42, app.asar (minified; the repo_conventions case of the text-generation policy builder):
case "repo_conventions": {
const subjects = yield* readRecentCommitSubjects(cwd);
const agentInstructions = yield* readRepositoryInstructions(cwd, "AGENTS.md");
const claudeInstructions = settings.modelSelection.instanceId === "claudeAgent"
|| (yield* providerRegistry.getProviders).some((provider) =>
provider.instanceId === settings.modelSelection.instanceId
&& provider.driver === "claudeAgent")
? yield* readRepositoryInstructions(cwd, "CLAUDE.md") : "";
const examples = [
...subjects.length > 0 ? [["Recent commit subjects from this repository:", ...subjects].join("\n")] : [],
...agentInstructions ? [`Local AGENTS.md:\n${agentInstructions}`] : [],
...claudeInstructions ? [`Local CLAUDE.md:\n${claudeInstructions}`] : []
].join("\n\n");
...
}
readRepositoryInstructions reads through the symlink, so claudeInstructions ends up byte-identical to agentInstructions.
Repro
- Repo with a large
AGENTS.mdandCLAUDE.md -> AGENTS.md(symlink), Claude driver. - Trigger commit-message / change-request generation.
- The conventions prompt contains
Local AGENTS.md:andLocal CLAUDE.md:blocks with the same content.
Proposed fix
Dedup by content after reading — cheapest form is a one-line guard:
...claudeInstructions && claudeInstructions !== agentInstructions
? [`Local CLAUDE.md:\n${claudeInstructions}`] : []
(String equality covers symlinks, hardlinks and manual copies alike; a content hash works too if the strings are large. Resolving symlinks alone would miss the copy case.)
- 主要言語
- TypeScript
- スター
- 24.8k
- フォーク
- 6.4k
- 平均マージ
- 7時間 29分
- マージ済み PR(30日)
- 223
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pingdotgg/t3code のほかの issue
-
bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
pingdotgg/t3code#15682 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
pingdotgg/t3code#15659 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
pingdotgg/t3code#15558 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
invalid via-triage
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
pingdotgg/t3code#15405 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug via-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
pingdotgg/t3code#15380 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
pingdotgg/t3code の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
openzim/mwoffliner#2933 ·
メンテナーはふだん 1 日以内に返信
-
Use the README category name for website links and submissions対応中かも @dajiaohuang が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
birobirobiro/awesome-shadcn-ui#647 ·
メンテナーはふだん 2 日以内に返信
-
check:passed streams:add
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
Urigo/accounter-fullstack#4604 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信