RestoPromt

lisans-denetimi — Açık Kaynak Lisans Taraması SKILL'i

SkillYazılım
RestoPromt19 Temmuz 2026

SKILL dosyası: .claude/skills/lisans-denetimi/SKILL.md olarak kaydet. Bağımlılıkları (transitif dahil) tarar, copyleft (GPL/AGPL/SSPL) riskini işaretler ve teslimat için bileşen+lisans listesi (LISANSLAR.md) üretir. AGPL'nin SaaS'ta bile tetiklendiğini bilir.

---
name: lisans-denetimi
description: Yeni paket eklenirken, teslimat/release öncesi veya "lisans kontrolü yap", "bu paketi kullanabilir miyim", "AGPL var mı bak" dendiğinde kullanılır. Tüm bağımlılıkları (transitif dahil) tarar, lisansları sınıflandırır, copyleft riskini işaretler ve teslimat kanıtı olarak bileşen+lisans listesi üretir.
---

# Açık Kaynak Lisans Denetimi

Amaç: projeye giren HER bileşenin lisansını bilmek, copyleft bulaşmasını
teslimattan ÖNCE yakalamak ve sözleşme gereği "bileşen + lisans listesi"
kanıtını üretmek.

## Neden kritik (özet)

- **Permissive (MIT, Apache-2.0, BSD, ISC):** al, kullan, sat — sadece
  lisans notunu koru. SaaS'ta risk yok.
- **GPL:** yazılımı DAĞITIRSAN kendi kodunu da GPL ile açman gerekir.
- **AGPL:** ağ üzerinden hizmet vermek bile "dağıtım" sayılır —
  **SaaS'ta da tetiklenir.** Tek bir AGPL'li kütüphane, teorik olarak
  platformun tüm kaynak kodunun açılmasını talep edilebilir hale getirir.
- **İkincil etki:** yatırım/satış due diligence'ında OSS taraması
  standarttır; AGPL bulgusu valuation düşürür veya deal'i öldürür.
  White-label verilen kod da bulaşmış olur.

## 1. Bağımlılıkları tara (transitif DAHİL)

Lock dosyasındaki GERÇEK sürümü tara, package.json'daki aralığı değil:

- **Node:** `npx license-checker-rseidelsohn --summary` (genel bakış),
  sonra `npx license-checker-rseidelsohn --csv --out lisanslar.csv` (tam liste).
  Sadece prod bağımlılıkları için `--production` ekle.
- **Python:** `pip-licenses --format=markdown --with-urls`
- **Go:** `go-licenses report ./...`
- **Rust:** `cargo license`

Araç kuramıyorsan: lock dosyasındaki paketlerin `node_modules/<paket>/package.json`
içindeki `license` alanını topluca oku.

## 2. Sınıflandır

| Sınıf | Lisanslar | Karar |
|-------|-----------|-------|
| Permissive | MIT, Apache-2.0, BSD-2/3, ISC, 0BSD, Unlicense, CC0 | ✅ Serbest |
| Zayıf copyleft | LGPL, MPL-2.0, EPL | ⚠️ Dinamik bağlama/dosya bazlı — nasıl kullanıldığına bak, raporla |
| Güçlü copyleft | GPL-2.0, GPL-3.0, **AGPL-3.0**, SSPL, EUPL | ⛔ ÖNCEDEN YAZILI ONAY olmadan girmez |
| Belirsiz | UNKNOWN, UNLICENSED, "SEE LICENSE IN...", çift lisans | ⚠️ Elle incele — bilinmeyen = riskli varsay |

Çift lisanslı paketlerde (ör. "MIT OR GPL-3.0") seçilebilen en permissive
lisansı raporla ama çift lisans olduğunu belirt.

## 3. Kopyalanan kodu da kontrol et

Paket yöneticisi dışından gelen kod en sık gözden kaçan bulaşma yoludur:

- Vendored/elle kopyalanmış dosyalarda lisans başlığı ara:
  `grep -ril "GNU General Public\|GNU Affero\|SPDX-License-Identifier: \(A\)\?GPL" src/`
- StackOverflow'dan kopyalanan uzun snippet'ler, "şu repodan aldım"
  denilen dosyalar → kaynağının lisansını sor/bul.
- Font, ikon seti, görsel gibi kod dışı varlıkların da lisansı vardır
  (OFL, CC-BY vb.) — atıf gerekiyorsa not et.

## 4. Teslimat kanıtını üret

Proje köküne `LISANSLAR.md` yaz:

- Tarih + taranan lock dosyası + kullanılan araç ve komut
- Tablo: paket, sürüm, lisans, sınıf (permissive/zayıf/güçlü/belirsiz)
- Özet: "X bağımlılık tarandı; Y permissive, Z incelenmeli, 0 güçlü copyleft"
- ⛔ veya ⚠️ bulgu varsa en üste BÜYÜK uyarı + önerilen alternatif paket

## 5. Bulgu varsa ne yap

1. Paketi hemen kaldırmayı ÖNERME davranış bozabilir — önce raporla.
2. Permissive alternatif öner (ör. AGPL'li rapor kütüphanesi yerine
   MIT'li muadili) ve geçiş maliyetini kısaca değerlendir.
3. Güçlü copyleft mutlaka kalacaksa: yazılı onay alınmadan merge/teslimat
   yapılmaması gerektiğini açıkça söyle.

## Korkuluklar

- Bu denetim HUKUKİ TAVSİYE DEĞİLDİR; kritik kararlarda (yatırım turu,
  satış, white-label sözleşmesi) uzman incelemesi öner.
- "License: UNKNOWN" çıktısını temiz sayma — bilinmeyen lisans,
  varsayılan olarak "tüm hakları saklı" demektir.
- Taramayı CI'a bağlamak istersen: `license-checker-rseidelsohn
  --failOn "GPL;AGPL;SSPL"` ile pipeline'ı kırdırabilirsin.

Değişiklik öner

Bu promptu yalnızca sahibi düzenleyebilir; ama sen bir iyileştirme önerebilirsin. Sahibi kabul ederse içerik güncellenir.

Öneri göndermek için giriş yap