Files
personas/personas/_shared/community-skills/pentest-reporter/SKILL.md
salvacybersec 0183a1eb5f feat(community-skills): add opencode-cli + feynman-cli + migrate 12 skills
Two new tool-operation skills with deep references/ docs:
- opencode-cli: SKILL.md + 6 references covering rules, agents, models,
  commands, formatters, permissions, skills, MCP, plugins, custom tools,
  LSP, themes, keybinds, server API, SDK, GitHub Actions, IDE, network,
  troubleshooting (full opencode.ai/docs surface)
- feynman-cli: SKILL.md + 6 references covering install, setup, config,
  CLI, REPL slash commands, agents/tools/packages, and full pi-subagents
  custom-agent spec (verified against the working install)

Migrate 12 skills from ~/.claude/skills into _shared/community-skills/:
- clean copy: intel-briefing, vercel-react-best-practices, ui-ux-pro-max
- core-only: notebooklm (data/images stripped — 184M to 224K)
- light sanitize: anythingllm-manager (gitea URL), foia-tool (DB password),
  jira (atlassian instance + email), librarian (paths), obsidian-tasks
  (vault path + email-in-cred-path)
- branding sanitize: marketing-strategist + pentest-reporter (Proudsec
  variants normalized to <COMPANY>)
- secrets sanitize: waha-whatsapp (IP, API key, vault path placeholders)

Skipped per user: proudguard-api (kept locally only).

build.py:
- DEFAULT_SKILL_PERSONA_MAP: 14 new entries
- NAME_PATTERNS: opencode + jira to coding-tools; notebooklm + feynman-
  to ai-llm-dev; waha- to osint-intel

Community-skills index: 703 -> 716 (+13).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 12:19:53 +03:00

12 KiB
Raw Blame History

name, description
name description
pentest-reporter Generate professional <COMPANY>-format pentest reports following the canonical "Sızma Testi Raporu" template (Turkish defense-client schema). Triggers on pentest report, sızma testi raporu, write report, scan results, findings, executive summary, müşteri raporu, final pentest, rapor hazırla.

Pentest Reporter — Canonical Schema

Canonical template (must be followed exactly): <SCANS_ROOT>/<client>/Sizma_Testi_Örnek.docx (Master archived in any client engagement folder; backup with date suffix before edit.)

This is the single source of truth for all deliverables. Schema established 2026-04-20 (Aras EDAŞ engagement). Every Turkish-defense-client report MUST mirror this structure 1:1 — sections, table layouts, finding-card format, fonts (Roboto + RobotoMono), colour bands.

Report Schema (21 tables, 9 sections)

COVER PAGE
 ├── "Sızma Testi Raporu" (title)
 └── "GİZLİ" + dağıtım uyarısı (red banner)

SECTION 1 — Gizlilik Beyanı (Confidentiality Declaration)
SECTION 2 — Önemli Uyarı (Important Notice)
SECTION 3 — Yasal Sorumluluklar (Legal Responsibilities)
SECTION 4 — İletişim Bilgileri ve Test Ekibi
   └── TABLE 0: Kişi Adı | Ünvan | Sertifikalar     (2 rows)
SECTION 5 — Doküman ve Sürüm Kontrolü
   ├── TABLE 1: Doküman Kontrolü                    (11 rows × 2 cols)
   │     [Doküman Başlığı, Doküman No, İlk Yayın Tarihi, Revizyon No,
   │      Son Revizyon Tarihi, Toplam Sayfa Sayısı, Hazırlayan, Onaylayan,
   │      Sınıflandırma, Geçerlilik, Dağıtım]
   └── TABLE 2: Sürüm Kontrolü                      (Sürüm | Tarih | Hazırlayan | Açıklama)
SECTION 6 — İçindekiler (auto TOC)
SECTION 7 — Çalışmaların Özeti                     (3-paragraph intro: scope, 3-phase methodology, value)
SECTION 8 — Test Metodolojisi
   ├── 8.1 Genel Süreç (Planlama→Keşif→Tarama→Zafiyet Analizi→İstismar→Raporlama→Doğrulama)
   ├── 8.2 Dış Ağ Testleri
   ├── 8.3 Yerel Ağ Testleri
   ├── 8.4 Kablosuz Ağ Testleri
   ├── 8.5 Sosyal Mühendislik Testleri
   └── 8.6 Hizmet Reddi (DDoS) Testleri
SECTION 9 — Risk Ölçeği
   ├── TABLE 3: Risk Seviyesi → Açıklama            (6 rows: Acil/Kritik/Yüksek/Orta/Düşük/Bilgi)
   ├── 9.1 Risk Değerlendirmesi
   ├── 9.2 İstismar Edilme İhtimali (4 faktör)
   ├── 9.3 Etki (Gizlilik/Bütünlük/Erişilebilirlik)
   ├── TABLE 4: Kapsam                              (Sistem Adı | Erişim Bilgisi | Kullanıcı | Nokta)
   └── TABLE 5: Sızma Testi Ekibi IP Adresleri      (Sistem | Erişim Bilgisi | Erişim Noktası)
SECTION 10 — Kuruluş Desteği (teşekkür paragrafı)
SECTION 11 — Yönetici Özeti
   ├── Hitap paragrafı ("[Müşteri] Yetkilisinin Dikkatine;")
   ├── Tarih + bulgu sayı özeti ("X kritik, Y yüksek, Z orta, W düşük")
   ├── 11.1 Güvenlik Açıkları Kategorisel Dağılımı
   │     └── TABLE 6: Risk Dağılımı                 (3 rows × 6 cols: Risk|Kritik|Yüksek|Orta|Düşük|Toplam)
   ├── 11.2 Tavsiye Özeti
   ├── 11.3 Acil Eylem Planı (5 madde: Önceliklendirme, Web/Sistem İyileştirme, Politika+Eğitim, İzleme, Yedekleme)
   └── 11.4 Güvenlik Açıkları Listelenmesi
         └── TABLE 7: Bulgu Listesi                 (Bulgu Adı | Risk Seviyesi | Bulgu Kategorisi)
SECTION 12 — Keşif Çalışmaları
   ├── DNS/IP/Kullanıcı keşfi paragrafı
   ├── Tespit Edilen Aktif Host Listesi
   │     ├── 12.1 Dahili / AD Altyapısı
   │     │     └── TABLE 8                          (IP | Rol/Hizmet Notları | Kaynak)
   │     ├── 12.2 İş İstasyonları ve SMB Sunucuları
   │     │     └── TABLE 9                          (IP | Belirlenen Host Adı / Rol | Kaynak)
   │     ├── 12.3 VoIP / Güvenlik Cihazları
   │     │     └── TABLE 10                         (IP Adresleri | Ortak Hizmetler/Rol | Kaynak)
   │     └── 12.4 Diğer Alt Ağlar
   │           └── TABLE 11                         (IP | Açıklama | Kaynak)
SECTION 13 — İç Ağ Testleri (Findings I1..In)
   ├── 13.0 Test Çalışmalarının Özeti (Black-Box, OWASP+NIST, araç güncelliği, Acil Eylem)
   └── For each finding I<N>:
         ├── Heading 2: "I<N>  <Bulgu Adı>"
         ├── Heading 3: "Bulgu Kanıtı:"
         ├── Komut/çıktı bloğu (kod biçemi, RobotoMono)
         └── TABLE 12+: Bulgu Kartı                 (5 rows × 2 cols)
               R0: Seviye          | KRİTİK / YÜKSEK / ORTA / DÜŞÜK / BİLGİ
               R1: Açıklama Ve Etki| Tanım: ... | Etki: ...
               R2: Referans        | URL/CVE/CWE listesi
               R3: Çözüm Önerisi   | Birincil + İkincil çözüm
               R4: Etkilenen Sistemler | IP listesi
SECTION 14 — Dış Ağ Testleri (varsa, aynı I-card formatı, prefix "E<N>")
SECTION 15 — Web Uygulama Testleri (varsa, "W<N>")
SECTION 16 — Raporda Geçen Teknik Terimler
   └── TABLE 18: Terim | Açıklama                   (22 rows std)
SECTION 17 — Raporda Geçen Kısaltmalar
   └── TABLE 19: Kısaltma | Açılım | Türkçesi       (57 rows std)
SECTION 18 — Testler Esnasında Kullanılan Araçlar
   └── TABLE 20: Aracın İsmi | Kategori | Web Adresi (81 rows std)

Severity Color Bands (cell fill in finding cards)

Seviye Hex Use
ACİL #7B1F1F (dark red) Reserved for active malware/C2
KRİTİK #C0392B (red) RCE, full domain compromise, DA on EOL DC
YÜKSEK #E67E22 (orange) Privesc, kerberoast DA, unconstrained delegation
ORTA #F1C40F (yellow) Info disclosure, weak crypto, missing headers
DÜŞÜK #3498DB (blue) RPC info, SSL pref, expired-cert non-prod
BİLGİ #7F8C8D (gray) Version banner, open port, OS guess

CVSS Mapping

CVSS 3.1 Seviye
9.010.0 KRİTİK
7.08.9 YÜKSEK
4.06.9 ORTA
0.13.9 DÜŞÜK
0.0 BİLGİ

(ACİL is a qualitative escalation — used only for active intrusion evidence like C2 beacons / live worms detected during the scan.)

Document Control Defaults

Alan Varsayılan
Doküman Başlığı "<Müşteri> Sızma Testi Raporu"
Doküman No "ST-" (engagement start date)
İlk Yayın Tarihi engagement closing date (DD.MM.YYYY)
Revizyon No "-" first issue, "1.1" / "1.2" sonrası
Hazırlayan ""
Onaylayan "< proje yöneticisi>"
Sınıflandırma "GİZLİ"
Geçerlilik "12 ay" (yeniden test gerektirir)
Dağıtım "Müşteri ve sınırlı dağıtım"

Sürüm Kontrolü Defaults

| Sürüm | Tarih       | Hazırlayan | Açıklama                     |
| V1.0  | DD.MM.YYYY  | <COMPANY>   | İlk yayın                    |
| V1.1  | DD.MM.YYYY  | <COMPANY>   | <revizyon konusu>            |

Workflow

digraph reporter {
  start [label="Müşteri raporu hazırla isteği"];
  read_template [label="1. Sizma_Testi_Örnek.docx oku\n   (python-docx ile)"];
  collect_data [label="2. Tüm scan/log/rapor verileri topla\n   (10+ paralel agent dispatch)"];
  classify [label="3. Bulguları KRİTİK/YÜKSEK/ORTA/DÜŞÜK/BİLGİ\n   sınıflandır + CVSS ata"];
  build [label="4. Python jeneratör çalıştır\n   (template klon + tablo doldur)"];
  manual [label="5. Word'de elle rötuş\n   (renk bantları, başlık formatı, sayfa kırma)"];
  deliver [label="6. PDF export + GİZLİ damga + dağıtım"];

  start -> read_template -> collect_data -> classify -> build -> manual -> deliver;
}

Python Generator Pattern

Use python-docx to clone the template and replace text + table cells, never rebuild from scratch. This preserves Roboto/RobotoMono fonts, theme colours, header/footer, and page numbering.

from docx import Document
from copy import deepcopy

doc = Document('Sizma_Testi_Örnek.docx')

# 1. Replace cover page client name
for p in doc.paragraphs:
    if 'Soler Palau' in p.text or '[CLIENT]' in p.text:
        for run in p.runs:
            run.text = run.text.replace('Soler Palau', client_name)

# 2. Update document control table (Table 1)
table_doc = doc.tables[1]
table_doc.cell(0, 1).text = f"{client_name} Sızma Testi Raporu"
table_doc.cell(1, 1).text = f"ST-{engagement_id}"
# ... per template default

# 3. Replace risk distribution table (Table 6)
table_risk = doc.tables[6]
table_risk.cell(1, 1).text = str(critical_count)
# ...

# 4. For each finding, deepcopy the I1 finding card table and append
template_card = deepcopy(doc.tables[12])  # I1 card as template
for finding in findings:
    new_card = deepcopy(template_card)
    new_card.cell(0, 1).text = finding['severity']
    new_card.cell(1, 1).text = f"Tanım: {finding['description']} | Etki: {finding['impact']}"
    new_card.cell(2, 1).text = '\n'.join(finding['references'])
    new_card.cell(3, 1).text = finding['remediation']
    new_card.cell(4, 1).text = '\n'.join(finding['affected_hosts'])
    # Insert after I_N heading paragraph
    insert_table_after(doc, new_card, anchor_para)

doc.save(f'{client_name}_Sizma_Testi_Raporu_{date}.docx')

Checklist (must-pass before delivery)

  • Template original yedeklendi (<name>_BACKUP_<YYYYMMDD_HHMMSS>.docx)
  • Cover page müşteri ismi değiştirildi (Soler Palau → <Müşteri>)
  • "GİZLİ" banner korundu, dağıtım uyarısı korundu
  • Sections 1-3 (Gizlilik/Uyarı/Yasal) DEĞİŞMEDEN korundu — hukuki standart metni
  • Doküman Kontrolü tablosu güncel (yeni doküman no, tarih, sayfa sayısı)
  • Sürüm Kontrolü tablosu V1.0 satırı eklendi
  • Yönetici Özeti hitabı doğru müşteri yetkilisine yazıldı
  • Risk Dağılımı tablosu doğru sayılarla dolduruldu
  • Tavsiye Özeti + Acil Eylem Planı standart 5-madde + müşteri-özel cümle
  • Bulgu Listesi tablosu (TABLE 7) tüm I-card sayısı kadar satır
  • Her finding için bulgu kartı (5x2) doldurulmuş
  • Bulgu Kanıtı bölümü RAW komut+çıktı (RobotoMono kod bloğu)
  • IP adresleri / hostnames / hash'ler verbatim — değiştirilmemiş
  • Renk bantları severity'e göre uygulanmış
  • İçindekiler güncellenmiş (Word: F9 ile refresh)
  • Header/footer logosu + sayfa no çalışıyor
  • PDF export "GİZLİ" damgası + dağıtım kuyruğu hazır

Reference Engagements

  • Aras EDAŞ (2026-04) — first engagement using this canonical schema. 4 KRİTİK + 10 YÜKSEK + 8 ORTA + 8 DÜŞÜK/BİLGİ. Final report path: scans/aras/05_reports/ARAS_FINAL_PENTEST_REPORT_<DATE>.docx. Generator: scans/aras/06_raw/scripts/generate_aras_report.py.
  • Soler Palau (2025-10) — original template source. 3 KRİTİK + 0 YÜKSEK + 2 ORTA + 1 DÜŞÜK = 6 bulgu örneği.

Integration Pointers

  • Kill Chain Scanner DB (MariaDB killchain-mariadb) — bulgular findings tablosundan çekilir, severity + cvss + cwe + remediation alanları doğrudan map edilir
  • Burp Suite Pro v2026.2.1 — XML export --burp-import ile parse, her issue bir I-card olur
  • Obsidian — markdown ön-taslak pentest reports/ vault'una yazılır, sonra DOCX üretilir
  • PDF export — Word "Save As PDF" (PDF/A-3 önerilir; arşiv için)
  • Authorization logdb_log_authorization() ile rapor üretim kaydı tutulur (PoC paylaşımı, dağıtım listesi)