config-parse
package.json'da unutulan bir virgül ya da bir YAML dosyasında kayan bir girinti o anda hiçbir sorun çıkarmaz. Bunu bir sonraki build'de ya da bir servis açılmayı reddettiğinde fark edersiniz; çoğu zaman da hatayı yapan edit'ten çok uzakta. Bu mod, bir Edit ya da Write'ın dokunduğu her JSON, YAML, TOML veya .env dosyasını hemen parse eder ve bir parse hatası varsa modele o anda söyler.
Ne yapar
Engine'in çalıştırdığı her Edit ya da Write'tan sonra yola bakar.
.json,.jsonc,.yml,.yaml,.toml,.envya da.env.<ad>dosyası parse edilir; gerisine dokunulmaz. Kendi aracının yorumlu JSON olarak okuduğu dosyalarda (.jsonc,tsconfig*.json,jsconfig*.json,.vscode/*.json,devcontainer.json)//ve/* */yorumları ile sondaki virgüller serbesttir. Diğer bütün JSON dosyaları katı kurallarla parse edilir.JSON'u mod kendisi parse eder.
.envdosyası satır satır okunur: boş olmayan, yorum olmayan veKEY=valuebiçiminde olmayan bir satır (başındakiexportsorun değil), satır numarasıyla birlikte bulgudur.YAML ve TOML'u
python3parse eder (güvenli bir loader'layaml.load_allvetomllib.load); dosya yolu tek bir argv öğesi olarak geçer.---ile ayrılmış bir akıştaki her doküman okunur;!Refya da!vaultgibi uygulama tag'leri de kabul edilir, çünkü ikisi de geçerli YAML'dır. Python ya da modül yoksa o tür session boyunca atlanır ve tek bir satır bunu haber verir.Parse edilemeyen dosya iki kanala gider. Model, dosyayı ve hatayı söyleyen bir
contextnotu alır. Siz sidebar stream'inde kırmızı bir kayıt görürsünüz: önce dosya, sonra hata; parser'ın verdiği konum, örneğinline 2ya da(line 3, column 5), sarı yazılır. Sidebar kapalıysa bir transcript satırı görürsünüz. Dosyanın yolu, session'ın başladığı git repository'sinin köküne göre yazılır; repository dışındaysanız session'ın dizinine göre. Bu kök session başlarken bir kez okunur; çünkü Bash'te yapılan bircd, session'ın dizinini değiştirir.Sonraki bir edit aynı dosyayı yeniden parse edilebilir hâle getirirse duran kayıt silinir ve yeşil bir satır bunu söyler. Bu satır yalnız size gider; çünkü dosyayı model kendisi düzeltti. Bulgusu açıkken silinen bir dosya da bir sonraki ölçümde aynı şekilde kapanır:
<dosya> is gone, and its parse error with it. Yerinde duran ama okunamayan dosyanın bulgusu açık kalır.Hiçbir edit'i reddetmez. Dosya önce yazılır, sonra okunur.
Modelin kapatmadığı bir bulgu, her main loop turn'ünün sonunda yeniden ölçülür; geride kalan, bir sonraki prompt'unuzla birlikte modele tek bir not olarak gider:
config-parse: 1 file(s) still do not parse: package.json. Fix them.Bu, turn başına bir nottur; prompt başına değil. Olmasa bulgu yalnız edit anında bir kez söylenir, sonra pane'de öylece durur ve model onu unuturdu. Size yeni bir satır düşmez; çünkü pane aynı bulguyu zaten gösteriyor.
denymodunda bir dosya parse edilemediği sürecegit commit,git pushvegit mergekomutlarını da durdurur. Durdurmadan önce açık dosyaların hepsini yeniden parse eder; model onları düzelttiyse komut kendiliğinden geçer.git commityalnız kendi dosyalarından sorumludur: mod index'i okur (git diff --cached --name-only -z) ve commit, açık dosyaların hiçbirini içermiyorsa geçer; kaç bulgunun hâlâ durduğunu tek satırla söyler.pushvemergeiçin okunacak bir index yoktur; orada bütün bulgular geçerlidir. Aşılacak bir yol yoktur:--dry-run,--helpve-hgeçer, ama bozuk bir dosyanın gerçek commit'i düzeltmeyi bekler. Varsayılannotemodudur ve hiçbir şeyi durdurmaz.
Canlı denemede sondaki bir virgülle bozulan JSON dosyası notu aldı (Property name must be a string literal); a: 1: 2 ile bozulan YAML dosyası python hatasını aldı; sonraki a: 1 Write'ı bulguyu parses as YAML again ile kapattı.
Komut
/config-parse açık mı kapalı mı, mod ve parse edilemeyen dosyalar
/config-parse on | off varsayılan açık
/config-parse mode note yalnız not verir; varsayılan budur
/config-parse mode deny bir dosya parse edilemediği sürece commit, push ve merge de durur
Kurulum
claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install config-parse@kilimcininkoroglu-mods
Function hook'lar henüz early access aşamasında. Claude Code 2.1.288 ve üzerinde varsayılan olarak yüklenir, açılacak bir ayar yok.
Kurulumdan sonra
- YAML kontrolü için
python3ve PyYAML kurun (python3 -m pip install pyyaml). TOML için python 3.11 veya üstü yeter. Bunlar olmadan bu iki tür atlanır; JSON ve.envyine çalışır. - Claude Code'u yeniden başlatın.
Nereye uzanır
Claude Code 2.1.283 üzerinde claude plugin validate ile doğrulandı:
❯ ./register.ts hooks: session.start, command.run{command=config-parse}, tool.call{tool=Edit}, tool.call{tool=Write}, turn.complete, prompt.submit, tool.call{tool=Bash}
❯ ./register.ts calls: $.command.register, $.fs.exists (via isGone), $.fs.read (via fileText), $.process.run (via pythonCheck, shownRootOf, stagedPaths), $.session.cwd, $.sidebar.clear (via closeOne), $.sidebar.set (via toPerson), $.store.get (via readSettings), $.store.set (via runCommand, setMode), $.ui.log
Reach L2: dosya okur ve bir process çalıştırır.
1. Okur: her Edit ve Write'ın yolunu, her Bash çağrısının komutunu, düzenlenen JSON ve .env dosyalarının metnini; turn sonunda açık her dosyayı yeniden
2. Çalıştırır: YAML ve TOML dosyaları için argv ile python3 -c; dosyaları repository köküne göre gösterebilmek için session başında bir kez git rev-parse --show-toplevel; deny modunda bir commit anında git rev-parse --show-toplevel ve git diff --cached --name-only -z
3. Gönderir: modele dosya adını ve parse hatasını, bulgu durdukça bir sonraki prompt'la bir not daha; makineden dışarı bir şey çıkmaz
4. Saklar: $.store içinde açık/kapalı ayarını ve modu
5. Düşman girdi: yol tool çağrısından gelir ve python'a hiçbir zaman shell üzerinden değil, tek bir argv öğesi olarak ulaşır; python programı sabit bir metindir ve sys.argv[1]'i okur
Sınırlar
- Kontrol yazmadan sonra çalışır; bozuk dosya, bir sonraki edit onu düzeltene kadar diskte durur. Hiçbir edit reddedilmez;
denymodunda yalnız commit, push ve merge durur. denymodunu aşmanın bir yolu yoktur. Bir bulgu düzeltilemeyecek durumdaysa gate'i/config-parse mode noteile siz kapatırsınız.- Mod'un
git commit|push|mergeolarak okuyamadığı bir wrapper, alias ya da script üzerinden çalışan git komutu gate'ten geçer. git commit -a,-amve--sonrasında pathspec verilen commit'ler index'e göre daraltılmaz; çünkü bunlar, index'te henüz olmayan dosyaları da commit'ler. Bu commit'lerde açık bulguların hepsi geçerlidir.- Index, komut çalışmadan önce okunur. Dosyaları bu okumayla çalıştırma arasında değişen bir commit, okuma anındaki index'e göre ölçülür.
.envsatırının yalnız biçimine bakılır. Yanlış bir değer, eksik bir tırnak ya da tekrarlanan bir key bulgu sayılmaz.- Mod'un yorumlu JSON olarak tanımadığı bir adla duran yorumlu JSON dosyası (1. maddedeki listenin dışındaki bir
.jsonadı) bozuk olarak bildirilir; çünkü o ad katı kurallarla okunur. - YAML ve TOML için
python3gerekir; onun olmadığı bir makinede bu dosyalar hiç kontrol edilmez. - Edit ve Write dışında yapılan bir düzenleme, örneğin Bash'te bir
sed, görülmez.
Geliştirme
make install # eslint, typescript-eslint, typescript
make lint # complexity sınırı 10; aşılırsa build kırılır
make typecheck # /plugin-types çıktısı olan .claude/types/ gerekir
make validate
make test # claude plugin test