allow, deny, instruct kararlarını kullanırlar.
Hızlı örnek
Özel ilkeleri yüklemenin iki yolu
Seçenek 1: Kurala Dayalı (önerilen)
*policies.{js,mjs,ts} dosyalarını .failproofai/policies/ dizinine koyun ve bunlar otomatik olarak yüklenecektir — hiç bayrak veya yapılandırma değişikliği gerekmez. Bu, git hook’ları gibi çalışır: bir dosya koyun, işe başlar.
- Hem proje hem de kullanıcı dizinleri taranır (birleşim — ilk kapsam kazanmaz)
- Dosyalar her dizin içinde alfabetik olarak yüklenir. Sırayı kontrol etmek için
01-,02-ön eki kullanın - Yalnızca
*policies.{js,mjs,ts}ile eşleşen dosyalar yüklenir; diğer dosyalar yoksayılır - Her dosya bağımsız olarak yüklenir (dosya başına açık başarısız olur)
- Açık
--customve yerleşik ilkelerle birlikte çalışır
Seçenek 2: Açık dosya yolu
policies-config.json içinde customPoliciesPath olarak depolanır. Dosya her hook olayında taze yüklenir - olaylar arasında önbelleğe alma yoktur.
Her ikisini birlikte kullanma
Kurala dayalı ilkeler ve açık--custom dosyası bir arada bulunabilir. Yükleme sırası:
- Açık
customPoliciesPathdosyası (yapılandırılmışsa) - Proje kurala dayalı dosyalar (
{cwd}/.failproofai/policies/, alfabetik) - Kullanıcı kurala dayalı dosyalar (
~/.failproofai/policies/, alfabetik)
API
İçe Aktar
customPolicies.add(hook)
Bir ilkeyi kaydeder. Aynı dosyada birden fazla ilke için gerektiği kadar çağırın.
Karar Yardımcıları
deny(message) - mesaj Claude’a "Blocked by failproofai:" ön ekiyle görünür. Tek bir deny tüm diğer değerlendirmeleri kısaltır.
instruct(message) - mesaj Claude’un mevcut araç çağrısı için bağlamına eklenir. Tüm instruct mesajları birikimlenir ve birlikte teslim edilir.
Bilgilendirici izin mesajları
allow(message) işleme izin verir ve Claude’a geri bilgilendirici bir mesaj gönderir. Mesaj, hook işleyicisinin stdout yanıtında additionalContext olarak teslim edilir — instruct tarafından kullanılan aynı mekanizma, ancak anlamsal olarak farklı: bir uyarı değil, bir durum güncellemesidir.
Kullanım durumları:
- Durum onayları:
allow("All CI checks passed.")— Claude’a her şeyin yeşil olduğunu söyler - Açık başarısız açıklamalar:
allow("GitHub CLI not installed, skipping CI check.")— Claude’a bir kontrolün neden atlandığını söyler, böylece tam bağlamı vardır - Birden fazla mesaj birikmesi: birkaç ilke her biri
allow(message)döndürürse, tüm mesajlar satır sonlarıyla birleştirilir ve birlikte teslim edilir
PolicyContext alanları
SessionMetadata alanları
Olay türleri
Değerlendirme sırası
İlkeler şu sırayla değerlendirilir:- Yerleşik ilkeler (tanım sırasında)
customPoliciesPathöğesinden açık özel ilkeler (.add()sırasında)- Proje
.failproofai/policies/öğesinden kurala dayalı ilkeler (dosyalar alfabetik, içinde.add()sırası) - Kullanıcı
~/.failproofai/policies/öğesinden kurala dayalı ilkeler (dosyalar alfabetik, içinde.add()sırası)
İlk
deny tüm sonraki ilkeleri kısaltır. Tüm instruct mesajları birikimlenir ve birlikte teslim edilir.Geçişken içe aktarmalar
Özel ilke dosyaları göreceli yollar kullanarak yerel modülleri içe aktarabilir:from "failproofai" içe aktarmalarını gerçek dist yoluna yeniden yazarak ve ESM uyumluluğunu sağlamak için geçici .mjs dosyaları oluşturarak uygulanır.
Olay türü filtrelemesi
Bir ilkenin ne zaman başlatılacağını sınırlamak içinmatch.events kullanın:
match öğesini tamamen atlayarak her olay türünde başlatılmasını sağlayın.
Hata yönetimi ve arıza modları
Özel ilkeler açık başarısız olur: hatalar hiçbir zaman yerleşik ilkeleri engelleme veya hook işleyiciyi çökmez.Tam örnek: birden fazla ilke
Örnekler
examples/ dizini çalışmaya hazır ilke dosyalarını içerir:

