laporan-generator 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/.agents/skills/laporan-generator/SKILL.md +132 -0
  2. package/.agents/skills/laporan-generator/agents/openai.yaml +3 -0
  3. package/.agents/skills/laporan-generator/references/campus-guide.md +120 -0
  4. package/.agents/skills/laporan-generator/references/metadata-schema.md +76 -0
  5. package/.agents/skills/laporan-generator/references/preset-schema.md +79 -0
  6. package/.agents/skills/laporan-generator/references/syntax-cheatsheet.md +122 -0
  7. package/.agents/skills/laporan-generator/references/template-guide.md +100 -0
  8. package/.agents/skills/laporan-generator/references/troubleshooting.md +105 -0
  9. package/.agents/skills/laporan-generator/resources/Makefile +90 -0
  10. package/.agents/skills/laporan-generator/resources/apa.csl +2273 -0
  11. package/.agents/skills/laporan-generator/resources/build-docx.sh +122 -0
  12. package/.agents/skills/laporan-generator/resources/build.sh +102 -0
  13. package/.agents/skills/laporan-generator/resources/chapters/bab1-pendahuluan.md +60 -0
  14. package/.agents/skills/laporan-generator/resources/chapters/bab2-tinjauan-pustaka.md +83 -0
  15. package/.agents/skills/laporan-generator/resources/chapters/bab3-metodologi.md +116 -0
  16. package/.agents/skills/laporan-generator/resources/chapters/bab4-hasil-dan-pembahasan.md +93 -0
  17. package/.agents/skills/laporan-generator/resources/chapters/bab5-penutup.md +27 -0
  18. package/.agents/skills/laporan-generator/resources/cover.md +50 -0
  19. package/.agents/skills/laporan-generator/resources/docx.lua +416 -0
  20. package/.agents/skills/laporan-generator/resources/laporan +464 -0
  21. package/.agents/skills/laporan-generator/resources/laporan.ps1 +552 -0
  22. package/.agents/skills/laporan-generator/resources/logo.jpg +0 -0
  23. package/.agents/skills/laporan-generator/resources/metadata.yml +35 -0
  24. package/.agents/skills/laporan-generator/resources/presets/itb-ta.yml +27 -0
  25. package/.agents/skills/laporan-generator/resources/presets/its-skripsi.yml +26 -0
  26. package/.agents/skills/laporan-generator/resources/presets/skripsi-4433.yml +26 -0
  27. package/.agents/skills/laporan-generator/resources/presets/standard.yml +26 -0
  28. package/.agents/skills/laporan-generator/resources/presets/ugm-skripsi.yml +26 -0
  29. package/.agents/skills/laporan-generator/resources/presets/ui-skripsi.yml +26 -0
  30. package/.agents/skills/laporan-generator/resources/presets/unpad-skripsi.yml +27 -0
  31. package/.agents/skills/laporan-generator/resources/reference.docx +0 -0
  32. package/.agents/skills/laporan-generator/resources/references.bib +115 -0
  33. package/.agents/skills/laporan-generator/resources/scripts/bundle.py +75 -0
  34. package/.agents/skills/laporan-generator/resources/scripts/docx-pagenum.py +192 -0
  35. package/.agents/skills/laporan-generator/resources/scripts/finalize-docx.py +291 -0
  36. package/.agents/skills/laporan-generator/resources/scripts/make-reference-docx.py +670 -0
  37. package/.agents/skills/laporan-generator/resources/scripts/report-doctor.py +211 -0
  38. package/.agents/skills/laporan-generator/resources/scripts/report-stats.py +149 -0
  39. package/.agents/skills/laporan-generator/resources/scripts/scan-preset.py +311 -0
  40. package/.agents/skills/laporan-generator/resources/scripts/setup-deps.ps1 +152 -0
  41. package/.agents/skills/laporan-generator/resources/scripts/setup-deps.sh +113 -0
  42. package/.agents/skills/laporan-generator/resources/scripts/test_scripts.py +128 -0
  43. package/.agents/skills/laporan-generator/resources/scripts/validate-preset.py +166 -0
  44. package/.agents/skills/laporan-generator/resources/template.typ +394 -0
  45. package/.agents/skills/laporan-generator/scripts/build.sh +78 -0
  46. package/.agents/skills/laporan-generator/scripts/bundle.py +75 -0
  47. package/.agents/skills/laporan-generator/scripts/docx-pagenum.py +192 -0
  48. package/.agents/skills/laporan-generator/scripts/finalize-docx.py +152 -0
  49. package/.agents/skills/laporan-generator/scripts/laporan +447 -0
  50. package/.agents/skills/laporan-generator/scripts/laporan.ps1 +529 -0
  51. package/.agents/skills/laporan-generator/scripts/make-reference-docx.py +630 -0
  52. package/.agents/skills/laporan-generator/scripts/report-doctor.py +211 -0
  53. package/.agents/skills/laporan-generator/scripts/report-stats.py +149 -0
  54. package/.agents/skills/laporan-generator/scripts/scan-preset.py +311 -0
  55. package/.agents/skills/laporan-generator/scripts/setup-deps.ps1 +152 -0
  56. package/.agents/skills/laporan-generator/scripts/setup-deps.sh +113 -0
  57. package/.agents/skills/laporan-generator/scripts/test_scripts.py +103 -0
  58. package/.agents/skills/laporan-generator/scripts/validate-preset.py +166 -0
  59. package/.agents/workflows/laporan-generator.md +8 -0
  60. package/LICENSE +21 -0
  61. package/Makefile +90 -0
  62. package/README.md +389 -0
  63. package/apa.csl +2273 -0
  64. package/bin/laporan-generator.js +71 -0
  65. package/build-docx.sh +122 -0
  66. package/build.sh +102 -0
  67. package/chapters/bab1-pendahuluan.md +60 -0
  68. package/chapters/bab2-tinjauan-pustaka.md +83 -0
  69. package/chapters/bab3-metodologi.md +116 -0
  70. package/chapters/bab4-hasil-dan-pembahasan.md +93 -0
  71. package/chapters/bab5-penutup.md +27 -0
  72. package/cover.md +50 -0
  73. package/docs/campus-guide.md +120 -0
  74. package/docs/metadata-schema.md +76 -0
  75. package/docs/preset-schema.md +79 -0
  76. package/docs/syntax-cheatsheet.md +122 -0
  77. package/docs/template-guide.md +100 -0
  78. package/docs/troubleshooting.md +105 -0
  79. package/docx.lua +416 -0
  80. package/laporan +464 -0
  81. package/laporan.ps1 +552 -0
  82. package/lib/init.js +118 -0
  83. package/lib/setup.js +33 -0
  84. package/lib/sync-hosts.js +194 -0
  85. package/lib/uninstall.js +123 -0
  86. package/logo.jpg +0 -0
  87. package/metadata.yml +35 -0
  88. package/package.json +65 -0
  89. package/presets/itb-ta.yml +27 -0
  90. package/presets/its-skripsi.yml +26 -0
  91. package/presets/skripsi-4433.yml +26 -0
  92. package/presets/standard.yml +26 -0
  93. package/presets/ugm-skripsi.yml +26 -0
  94. package/presets/ui-skripsi.yml +26 -0
  95. package/presets/unpad-skripsi.yml +27 -0
  96. package/reference.docx +0 -0
  97. package/references.bib +115 -0
  98. package/scripts/bundle.py +75 -0
  99. package/scripts/docx-pagenum.py +192 -0
  100. package/scripts/finalize-docx.py +291 -0
  101. package/scripts/make-reference-docx.py +670 -0
  102. package/scripts/report-doctor.py +211 -0
  103. package/scripts/report-stats.py +149 -0
  104. package/scripts/scan-preset.py +311 -0
  105. package/scripts/setup-deps.ps1 +152 -0
  106. package/scripts/setup-deps.sh +113 -0
  107. package/scripts/test_scripts.py +128 -0
  108. package/scripts/validate-preset.py +166 -0
  109. package/template.typ +394 -0
package/README.md ADDED
@@ -0,0 +1,389 @@
1
+ <p align="center">
2
+ <img src="logo.jpg" alt="Laporan Generator" width="180"/>
3
+ </p>
4
+
5
+ <h1 align="center">Laporan Generator</h1>
6
+
7
+ <p align="center">
8
+ <b>Universal Academic Document & Thesis Engine for AI Agents and Engineers</b><br/>
9
+ Otomatisasi dokumen akademik dan teknis dari Markdown ke PDF berstandar publikasi dan Microsoft Word (DOCX) dalam hitungan detik.<br/>
10
+ Mendukung pedoman resmi format penulisan kampus Indonesia (UI, ITB, UGM, ITS, UNPAD) dan standar internasional.
11
+ </p>
12
+
13
+ <p align="center">
14
+ <a href="https://www.npmjs.com/package/laporan-generator"><img src="https://img.shields.io/npm/v/laporan-generator?style=for-the-badge&color=cb3837&logo=npm" alt="npm version"></a>
15
+ <a href="https://github.com/muadzhdz/laporan-generator/actions/workflows/build.yml"><img src="https://github.com/muadzhdz/laporan-generator/actions/workflows/build.yml/badge.svg" alt="Status Build"></a>
16
+ <a href="#"><img src="https://img.shields.io/badge/Typst-0.13+-239DAD?style=for-the-badge&logo=typst&logoColor=white" alt="Typst"></a>
17
+ <a href="#"><img src="https://img.shields.io/badge/Pandoc-3.0+-blue?style=for-the-badge&logo=markdown" alt="Pandoc"></a>
18
+ <a href="#"><img src="https://img.shields.io/badge/Python-3.9+-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python"></a>
19
+ <a href="#"><img src="https://img.shields.io/badge/Tests-101%20Passed-success?style=for-the-badge" alt="Pengujian Lulus"></a>
20
+ <a href="#"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="Lisensi"></a>
21
+ </p>
22
+
23
+ <p align="center">
24
+ <a href="GETTING-STARTED.md">Panduan Cepat</a> &bull;
25
+ <a href="docs/campus-guide.md">Panduan Preset Kampus</a> &bull;
26
+ <a href="docs/syntax-cheatsheet.md">Cheatsheet Sintaks</a> &bull;
27
+ <a href="docs/metadata-schema.md">Skema Metadata</a> &bull;
28
+ <a href="docs/troubleshooting.md">Penyelesaian Masalah</a> &bull;
29
+ <a href="CHANGELOG.md">Catatan Perubahan</a>
30
+ </p>
31
+
32
+ ---
33
+
34
+ ## Ikhtisar
35
+
36
+ Laporan Generator adalah kompilator otomatisasi dokumen akademik berevolusi ganda (*dual-engine*) sekaligus kapabilitas terpadu untuk agen kecerdasan buatan (*AI Agent Skill*). Alat ini dirancang untuk menjembatani alur kerja rekayasa perangkat lunak modern dengan standar ketat format penulisan karya ilmiah perguruan tinggi.
37
+
38
+ Penyusunan makalah, laporan magang/praktik kerja lapangan (PKL), laporan proyek, hingga skripsi dan tesis kerap menguras waktu akibat proses penataan format manual di pengolah kata seperti Microsoft Word. Laporan Generator menuntaskan permasalahan ini secara menyeluruh langsung dari berkas sumber Markdown modular, yang dapat dikompilasi secara paralel menjadi:
39
+ 1. **PDF Kualitas Publikasi**: Tipografi presisi tinggi berbasis mesin typesetting modern Typst.
40
+ 2. **Microsoft Word Standar (.docx)**: Dokumen murni berbasis OpenXML dengan penataan hierarki heading yang rapi, bidang dinamis Daftar Isi (*TOC Field Codes*), serta penomoran halaman ganda (Romawi kecil untuk bagian awal dan angka Arab untuk batang tubuh bab).
41
+
42
+ Proyek ini juga memuat paket **AI Agent Skill** yang kompatibel dengan 10+ platform agen AI, memungkinkan agen cerdas menyusun draf, mengaudit sitasi, memindai pedoman kampus, dan membangun dokumen secara otonom.
43
+
44
+ ---
45
+
46
+ ## Sorotan Arsitektur
47
+
48
+ ### Alur Kerja Pipeline Dual-Engine
49
+
50
+ ```text
51
+ [ Berkas Sumber Markdown ]
52
+ ├── cover.md (Kata Pengantar & Lembar Depan)
53
+ ├── chapters/bab*.md (BAB I s.d. BAB V)
54
+ ├── metadata.yml (Preset Kampus, Penulis, Dosen, Lembar Pengesahan)
55
+ └── references.bib (Basis Data Sitasi BibTeX)
56
+ │
57
+ ├──> [ Pipeline Mesin Typst ]
58
+ │ ├── template.typ (Tata letak tipografi & margin dinamis)
59
+ │ ├── ImageMagick (Normalisasi kanal alfa citra)
60
+ │ └── typst compile ──> [ Laporan.pdf ]
61
+ │
62
+ └──> [ Pipeline Mesin Word/DOCX ]
63
+ ├── Pandoc + docx.lua (Transformasi AST untuk heading BAB)
64
+ ├── reference.docx (Gaya tipografi dasar TNR 12pt A4)
65
+ ├── scripts/finalize-docx.py (Injeksi kode bidang TOC dinamis)
66
+ └── scripts/docx-pagenum.py (Manipulasi OpenXML penomoran ganda) ──> [ Laporan.docx ]
67
+ ```
68
+
69
+ ### Fitur Rekayasa Unggulan
70
+
71
+ * **Penomoran Halaman Ganda Otomatis**:
72
+ * Bagian Awal (Kata Pengantar, Daftar Isi, Daftar Gambar/Tabel, Abstrak): Penomoran angka Romawi kecil di tengah bawah (`i, ii, iii...`), dengan nomor pada halaman cover disembunyikan secara otomatis.
73
+ * Bagian Utama (BAB I hingga Penutup dan Daftar Pustaka): Penomoran angka Arab (`1, 2, 3...`) yang diatur ulang dimulai dari halaman 1.
74
+ * **Daftar Isi Dinamis Microsoft Word Asli**:
75
+ * Menggunakan kode bidang murni OpenXML (`w:fldSimple` / `w:instrText TOC \o "1-3" \h \z \u`).
76
+ * Hierarki judul bab (`BAB I`, `1.1`, `1.1.1`) terdaftar dengan sempurna pada panel navigasi Word tanpa tumpang tindih teks atau kesalahan indentasi.
77
+ * Kompatibel penuh dengan Microsoft Office 365, Word 2016-2021, LibreOffice Writer, dan WPS Office.
78
+ * **Penomoran Otomatis Bab, Gambar, dan Tabel**:
79
+ * Penomoran gambar, tabel, dan persamaan matematika secara otomatis mengikat pada indeks bab aktif (contoh: `Gambar 1.1`, `Tabel 2.3`, `Persamaan (3.1)`).
80
+ * Variabel counter di-reset secara otomatis pada setiap batas pergantian bab.
81
+ * **Keterampilan Agen AI Lintas Platform (Multi-Host AI Skill)**:
82
+ * Terstruktur sesuai spesifikasi *Agent Skill Standard* lengkap dengan protokol wawancara interaktif 3 tahap di `SKILL.md`.
83
+ * Dapat dideteksi dan dieksekusi langsung oleh Antigravity CLI, Claude Code, Grok, Codex/OpenAI, GitHub Copilot, Cursor, Roo-Code/Cline, OpenCode, dan Kiro-CLI.
84
+ * **Peralatan Audit & Penjaminan Mutu**:
85
+ * `doctor`: Audit integritas dokumen untuk mendeteksi sitasi rusak/yatim, gambar yang tidak ditemukan di disk, struktur heading yang salah, dan kesalahan skema metadata.
86
+ * `stats`: Analisis komprehensif jumlah kata, karakter, perkiraan durasi membaca, estimasi total halaman, dan inventaris media.
87
+ * `bundle`: Pengemasan arsip rilis zip yang bersih dari berkas sementara untuk pengumpulan ke institusi.
88
+ * `preset scan`: Pemindai otomatis dokumen PDF pedoman kampus untuk mengekstrak margin dan gaya heading ke konfigurasi YAML baru.
89
+
90
+ ---
91
+
92
+ ## Dukungan Host AI Agent
93
+
94
+ Laporan Generator mendistribusikan *skill* agen ke direktori global maupun lokal repositori:
95
+
96
+ | Host AI Agent | Direktori Konfigurasi / Skill | Protokol Pemanggilan |
97
+ |---|---|---|
98
+ | **Antigravity CLI** | `~/.gemini/antigravity-cli/skills/laporan-generator` | Prompt interaktif / Slash command |
99
+ | **Claude Code** | `~/.claude/skills/laporan-generator` | Slash command / Natural language |
100
+ | **Grok** | `~/.grok/skills/laporan-generator` | Deteksi skill agen global |
101
+ | **OpenCode** | `~/.config/opencode/skills/laporan-generator` | Tooling native agen |
102
+ | **Kiro-CLI** | `~/.kiro/agents/laporan-generator.json` | Sub-agen kustom |
103
+ | **Universal Agents** | `~/.agents/skills/laporan-generator` | Standar direktori `.agents/` |
104
+ | **Cursor / Copilot** | `.github/copilot-instructions.md`, `.cursor/rules` | Konfigurasi aturan repo |
105
+
106
+ Untuk menyinkronkan seluruh skill ke seluruh host yang terpasang di sistem dalam satu perintah:
107
+ ```bash
108
+ npx laporan-generator sync-hosts
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Alur Penggunaan Cepat
114
+
115
+ ### Opsi A: Alur Otonom AI Agent via NPX (Direkomendasikan)
116
+
117
+ Anda dapat membuat atau menginisialisasi dokumen baru di folder mana pun tanpa perlu melakukan kloning repositori:
118
+
119
+ ```bash
120
+ # 1. Daftarkan kapabilitas Laporan Generator ke seluruh agen AI Anda
121
+ npx laporan-generator sync-hosts
122
+
123
+ # 2. Pasang dependensi sistem yang diperlukan (Typst, Pandoc, ImageMagick)
124
+ npx laporan-generator setup
125
+
126
+ # 3. Inisialisasi struktur dokumen akademik lengkap di direktori saat ini
127
+ npx laporan-generator init
128
+ ```
129
+
130
+ Setelah inisialisasi selesai, buka antarmuka obrolan AI Agent Anda (Antigravity CLI, Claude Code, atau OpenCode), lalu berikan instruksi:
131
+ > *"Tolong buatkan draf Skripsi lengkap BAB 1 sampai BAB 3 dengan format ITB (preset itb-ta) berdasarkan topik sistem deteksi intrusi jaringan menggunakan eBPF."*
132
+
133
+ Agen AI akan membaca `SKILL.md`, menjalankan protokol wawancara interaktif 3 tahap, menerapkan preset kampus, menyusun konten bab, memvalidasi sitasi pada `references.bib`, menjalankan audit kesehatan `doctor`, dan membangun dokumen PDF serta Word secara otomatis.
134
+
135
+ ---
136
+
137
+ ### Opsi B: Alur Baris Perintah (CLI) Mandiri / Manual
138
+
139
+ Jika Anda ingin menulis dokumen secara manual dan mengompilasinya langsung via terminal:
140
+
141
+ #### Linux / macOS:
142
+ ```bash
143
+ # Kloning repositori
144
+ git clone https://github.com/muadzhdz/laporan-generator.git tugas-akhir
145
+ cd tugas-akhir
146
+
147
+ # Periksa kelengkapan dependensi dan integritas berkas
148
+ ./laporan check
149
+
150
+ # Bangun dokumen PDF dan DOCX
151
+ ./laporan build
152
+
153
+ # Buka dokumen PDF hasil kompilasi
154
+ ./laporan view
155
+ ```
156
+
157
+ #### Windows (Native PowerShell 5.1+ / 7+ tanpa WSL):
158
+ ```powershell
159
+ # Kloning repositori
160
+ git clone https://github.com/muadzhdz/laporan-generator.git tugas-akhir
161
+ cd tugas-akhir
162
+
163
+ # Periksa kelengkapan dependensi dan integritas berkas
164
+ .\laporan.ps1 check
165
+
166
+ # Bangun dokumen PDF dan DOCX
167
+ .\laporan.ps1 build
168
+
169
+ # Buka dokumen PDF hasil kompilasi
170
+ .\laporan.ps1 view
171
+ ```
172
+
173
+ #### Lingkungan Nix Flake (Hermetik & Reproducible):
174
+ ```bash
175
+ # Masuk ke isolated devShell dengan versi toolchain identik
176
+ nix develop
177
+
178
+ # Kompilasi dokumen di dalam lingkungan devShell
179
+ ./laporan build
180
+ ```
181
+
182
+ #### Lingkungan Docker (Tanpa Dependensi Sistem Host):
183
+ ```bash
184
+ docker compose run --rm laporan-generator
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Matriks Perintah CLI
190
+
191
+ Seluruh perintah didukung secara konsisten di NPX, Linux/macOS Bash (`./laporan`), dan Windows PowerShell (`.\laporan.ps1`):
192
+
193
+ | Perintah | NPX (`npx laporan-generator`) | Bash (`./laporan`) | PowerShell (`.\laporan.ps1`) | Keterangan Fungsi |
194
+ |---|---|---|---|---|
195
+ | `init` | Didukung | Didukung | Didukung | Menyalin template berkas, metadata, dan draf bab awal |
196
+ | `sync-hosts` | Didukung | Didukung | Didukung | Memasang skill ke seluruh direktori agen AI yang terdeteksi |
197
+ | `setup` | Didukung | Didukung | Didukung | Memasang paket sistem Typst, Pandoc, ImageMagick, dan Python |
198
+ | `check` | Didukung | Didukung | Didukung | Memeriksa ketersediaan toolchain dan kelengkapan berkas |
199
+ | `build` | Didukung | Didukung | Didukung | Mengompilasi berkas sumber menjadi `Laporan.pdf` dan `Laporan.docx` |
200
+ | `stats` | Didukung | Didukung | Didukung | Menghitung jumlah kata, karakter, estimasi halaman, dan gambar |
201
+ | `doctor` | Didukung | Didukung | Didukung | Melakukan audit integritas sitasi, gambar hilang, dan format heading |
202
+ | `bundle` | Didukung | Didukung | Didukung | Mengemas proyek menjadi arsip ZIP rilis yang bersih |
203
+ | `preset list` | Didukung | Didukung | Didukung | Menampilkan daftar seluruh preset format kampus resmi |
204
+ | `preset apply <id>`| Didukung | Didukung | Didukung | Menerapkan konfigurasi preset kampus tertentu ke `metadata.yml` |
205
+ | `preset scan <pdf>`| Didukung | Didukung | Didukung | Memindai berkas PDF pedoman kampus menjadi file preset YAML baru |
206
+ | `view` | - | Didukung | Didukung | Membuka berkas `Laporan.pdf` pada PDF viewer bawaan sistem |
207
+ | `watch` | - | Didukung | Didukung | Melakukan kompilasi ulang otomatis saat berkas sumber disimpan |
208
+ | `clean` | - | Didukung | Didukung | Membersihkan berkas hasil build dan folder sementara |
209
+ | `uninstall` | Didukung | Didukung | Didukung | Menghapus seluruh instalasi skill dari seluruh host agen AI |
210
+
211
+ ---
212
+
213
+ ## Preset Kampus Resmi
214
+
215
+ Konfigurasi tata letak bawaan yang disesuaikan dengan pedoman penulisan universitas di Indonesia:
216
+
217
+ | ID Preset | Institusi / Standar | Batas Margin (A-B-K-Kn) | Tipografi | Gaya Judul Bab | Keterangan Khusus |
218
+ |---|---|---|---|---|---|
219
+ | `standard` | Standar Akademik Umum | 2.5cm - 2.5cm - 3.0cm - 2.5cm | Times New Roman, 12pt | `BAB I` (Tengah) | Format standar makalah, proyek, dan magang |
220
+ | `skripsi-4433` | Standar Skripsi Nasional | 4.0cm - 3.0cm - 4.0cm - 3.0cm | Times New Roman, 12pt | `BAB I` (Tengah) | Standar jilid hardcover dengan margin kiri 4cm |
221
+ | `ui-skripsi` | Universitas Indonesia | 2.5cm - 2.5cm - 2.5cm - 2.5cm | Times New Roman, 12pt | `BAB 1` (Angka Arab) | Format resmi Buku Pedoman Teknis UI |
222
+ | `itb-ta` | Institut Teknologi Bandung | 4.0cm - 3.0cm - 4.0cm - 3.0cm | Times New Roman, 12pt | `BAB I` (Tengah) | Cover minimalis tanpa dosen pembimbing luar |
223
+ | `ugm-skripsi` | Universitas Gadjah Mada | 4.0cm - 3.0cm - 4.0cm - 3.0cm | Times New Roman, 12pt | `BAB I` (Tengah) | Format resmi pedoman tugas akhir & tesis UGM |
224
+ | `its-skripsi` | Institut Teknologi Sepuluh Nopember | 4.0cm - 3.0cm - 4.0cm - 3.0cm | Times New Roman, 12pt | `BAB 1` (Angka Arab) | Format baku buku Tugas Akhir ITS |
225
+ | `unpad-skripsi` | Universitas Padjadjaran | 4.0cm - 3.0cm - 4.0cm - 3.0cm | Times New Roman, 12pt | `BAB I` (Tengah) | Format penulisan skripsi & karya ilmiah UNPAD |
226
+
227
+ ### Cara Mengaktifkan Preset
228
+ ```bash
229
+ ./laporan preset apply itb-ta
230
+ # atau
231
+ npx laporan-generator preset apply itb-ta
232
+ ```
233
+
234
+ ### Memindai Pedoman PDF Kampus Lain
235
+ Apabila universitas Anda belum terdaftar di atas, jalankan pemindai dokumen:
236
+ ```bash
237
+ ./laporan preset scan /path/ke/pedoman-skripsi.pdf
238
+ ```
239
+ Pemindai akan menganalisis parameter margin, ukuran font, dan penomoran bab dari teks dokumen pedoman, lalu menghasilkan berkas preset berekstensi `.yml` yang siap digunakan di direktori `presets/`.
240
+
241
+ ---
242
+
243
+ ## Konfigurasi Dokumen (`metadata.yml`)
244
+
245
+ Seluruh struktur dokumen, judul, informasi kepenulisan, tanda tangan lembar pengesahan, dan abstrak bilingual dikendalikan terpusat melalui `metadata.yml`:
246
+
247
+ ```yaml
248
+ title: "Analisis dan Implementasi Sistem Deteksi Intrusi Jaringan Berbasis eBPF"
249
+ document_type: "Skripsi"
250
+ margin_preset: "itb-ta"
251
+
252
+ author:
253
+ - name: "Mu'adz Hudzaifah"
254
+ nim: "13522001"
255
+
256
+ institution: "Institut Teknologi Bandung"
257
+ faculty: "Sekolah Teknik Elektro dan Informatika"
258
+ department: "Teknik Informatika"
259
+ city: "Bandung"
260
+ year: "2026"
261
+ date: "14 September 2026"
262
+
263
+ course: "Tugas Akhir II"
264
+ lecturer: "Dr. Ir. Pembimbing Utama, M.T."
265
+
266
+ # Lembar Pengesahan
267
+ approval:
268
+ city: "Bandung"
269
+ date: "14 September 2026"
270
+ supervisors:
271
+ - name: "Dr. Ir. Pembimbing Utama, M.T."
272
+ nip: "197501012000031001"
273
+ role: "Pembimbing I"
274
+ - name: "Dr. Eng. Pembimbing Pendamping, S.T."
275
+ nip: "198002022005011002"
276
+ role: "Pembimbing II"
277
+ dean:
278
+ name: "Prof. Dr. Dekan Fakultas, M.Sc."
279
+ nip: "196803031992031003"
280
+ role: "Dekan STEI"
281
+
282
+ # Abstrak Bahasa Indonesia
283
+ abstract_id: >
284
+ Deteksi intrusi jaringan konvensional seringkali menimbulkan overhead performa yang signifikan...
285
+ keywords_id: ["eBPF", "Deteksi Intrusi", "Linux Kernel", "Keamanan Jaringan"]
286
+
287
+ # Abstrak Bahasa Inggris
288
+ abstract_en: >
289
+ Conventional network intrusion detection systems frequently introduce notable performance overhead...
290
+ keywords_en: ["eBPF", "Intrusion Detection", "Linux Kernel", "Network Security"]
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Struktur Direktori
296
+
297
+ ```text
298
+ laporan-generator/
299
+ ├── bin/
300
+ │ └── laporan-generator.js # Router CLI global untuk Node.js / NPX
301
+ ├── lib/
302
+ │ ├── init.js # Modul inisialisasi dokumen baru
303
+ │ ├── setup.js # Wrapper instalasi dependensi sistem
304
+ │ ├── sync-hosts.js # Distributor skill agen AI multi-host
305
+ │ └── uninstall.js # Pembersih skill agen AI dari sistem
306
+ ├── .agents/
307
+ │ ├── skills/laporan-generator/ # Standar Universal Agent Skill
308
+ │ │ ├── SKILL.md # Instruksi dan protokol wawancara agen AI
309
+ │ │ ├── agents/ # Skema konfigurasi spesifik agen
310
+ │ │ ├── references/ # Rujukan skema YAML dan panduan teknis
311
+ │ │ ├── resources/ # Salinan berkas template dan utilitas
312
+ │ │ └── scripts/ # Skrip bantu audit dan kalkulasi dokumen
313
+ │ └── workflows/
314
+ │ └── laporan-generator.md # Definisi perintah alur kerja slash command
315
+ ├── chapters/
316
+ │ ├── bab1-pendahuluan.md # Latar belakang, rumusan masalah, dan tujuan
317
+ │ ├── bab2-tinjauan-pustaka.md # Landasan teori dan kajian literatur
318
+ │ ├── bab3-metodologi.md # Desain arsitektur dan metodologi riset
319
+ │ ├── bab4-hasil-dan-pembahasan.md # Implementasi, pengujian, dan pembahasan
320
+ │ └── bab5-penutup.md # Kesimpulan dan saran pengembangan
321
+ ├── docs/ # Dokumentasi teknis terperinci
322
+ ├── presets/ # Koleksi preset format resmi universitas
323
+ ├── scripts/
324
+ │ ├── finalize-docx.py # Injeksi kode bidang TOC murni pada Word
325
+ │ ├── docx-pagenum.py # Penerapan sistem nomor halaman ganda Word
326
+ │ ├── make-reference-docx.py # Pembangun berkas gaya reference.docx
327
+ │ ├── report-doctor.py # Pemeriksa kesehatan & integritas berkas
328
+ │ ├── report-stats.py # Kalkulator statistik kata dan halaman
329
+ │ ├── bundle.py # Utilitas pengemasan berkas rilis
330
+ │ ├── scan-preset.py # Pemindai otomatis PDF pedoman kampus
331
+ │ ├── validate-preset.py # Validator skema berkas preset YAML
332
+ │ ├── setup-deps.sh # Skrip instalasi dependensi Unix
333
+ │ └── setup-deps.ps1 # Skrip instalasi dependensi PowerShell Windows
334
+ ├── apa.csl # Format sitasi dan daftar pustaka standar APA 7th
335
+ ├── build.sh # Skrip kompilasi utama Linux/macOS
336
+ ├── build-docx.sh # Skrip kompilasi khusus dokumen Word
337
+ ├── cover.md # Kata Pengantar dan halaman depan
338
+ ├── docx.lua # Filter Pandoc Lua untuk transformasi AST Word
339
+ ├── flake.nix # Konfigurasi lingkungan kerja Nix reproducible
340
+ ├── laporan # Wrapper CLI interaktif Bash
341
+ ├── laporan.ps1 # Wrapper CLI native PowerShell Windows
342
+ ├── Makefile # Target otomatisasi pengembang
343
+ ├── metadata.yml # Konfigurasi aktif berkas dokumen
344
+ ├── reference.docx # Dokumen template acuan gaya Microsoft Word
345
+ ├── references.bib # Basis data pustaka format BibTeX
346
+ ├── template.typ # Mesin typesetting dan tata letak Typst
347
+ └── test.sh # Rangkaian pengujian otomatis (101 assertions)
348
+ ```
349
+
350
+ ---
351
+
352
+ ## Penjaminan Mutu & Pengujian
353
+
354
+ Laporan Generator dilengkapi rangkaian pengujian otomatis (*automated test suite*) yang memvalidasi pipeline Unix dan Windows, filter Lua, skrip manipulasi OpenXML, validasi preset, serta fungsionalitas CLI:
355
+
356
+ ```bash
357
+ # Menjalankan pengujian
358
+ ./test.sh
359
+ # atau
360
+ npm test
361
+ ```
362
+
363
+ ### Cakupan Pengujian (24 Test Suite / 101 Assertions)
364
+ * **Integritas Berkas**: Memverifikasi keberadaan seluruh template utama, skrip, dan skema acuan.
365
+ * **Pipeline Typst**: Memvalidasi rendering ukuran font, margin dinamis, logika penomoran bab, dan reset counter gambar/tabel.
366
+ * **Pipeline DOCX**: Memvalidasi transformasi AST Pandoc, filter Lua, field codes TOC OpenXML, dan nomor halaman ganda.
367
+ * **Validasi Preset**: Menguji seluruh preset bawaan terhadap skema spesifikasi YAML.
368
+ * **Perintah CLI**: Memverifikasi alur eksekusi `init`, `check`, `build`, `stats`, `doctor`, `bundle`, `preset`, dan `uninstall`.
369
+ * **Kebersihan & Keamanan**: Memastikan tidak ada berkas sampah biner, cache Python (`.pyc`), atau berkas temporer yang tertinggal.
370
+
371
+ ---
372
+
373
+ ## Pusat Dokumentasi
374
+
375
+ * **[Panduan Pemula (Zero to PDF)](GETTING-STARTED.md)**: Panduan langkah demi langkah dari instalasi hingga kompilasi pertama.
376
+ * **[Panduan Preset Kampus](docs/campus-guide.md)**: Rincian margin, tipografi, dan format penulisan antar universitas.
377
+ * **[Cheatsheet Sintaks Markdown](docs/syntax-cheatsheet.md)**: Panduan lengkap penulisan sitasi, rumus matematika, tabel, dan gambar.
378
+ * **[Skema Metadata](docs/metadata-schema.md)**: Referensi lengkap seluruh parameter pada `metadata.yml`.
379
+ * **[Skema Preset](docs/preset-schema.md)**: Spesifikasi format untuk membuat preset kampus baru.
380
+ * **[Panduan Template Typst](docs/template-guide.md)**: Arsitektur tipografi, font Libertinus Serif, dan aturan halaman.
381
+ * **[Penyelesaian Masalah (Troubleshooting)](docs/troubleshooting.md)**: Panduan penanganan kendala umum dependensi, font, dan izin sistem.
382
+ * **[Panduan Kontribusi](CONTRIBUTING.md)**: Pedoman pengembangan fitur baru dan penambahan preset.
383
+ * **[Catatan Perubahan (Changelog)](CHANGELOG.md)**: Riwayat pembaruan dan rilis versi.
384
+
385
+ ---
386
+
387
+ ## Lisensi
388
+
389
+ Didistribusikan di bawah lisensi MIT. Silakan baca berkas [LICENSE](LICENSE) untuk informasi lebih lanjut.