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>
12 KiB
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.0–10.0 | KRİTİK |
| 7.0–8.9 | YÜKSEK |
| 4.0–6.9 | ORTA |
| 0.1–3.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) — bulgularfindingstablosundan çekilir, severity + cvss + cwe + remediation alanları doğrudan map edilir - Burp Suite Pro v2026.2.1 — XML export
--burp-importile 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 log —
db_log_authorization()ile rapor üretim kaydı tutulur (PoC paylaşımı, dağıtım listesi)