slop-ai-indo 1.2.0 → 1.2.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yanuar (slop-ai-indo)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,361 @@
1
+
2
+ # slop-ai-indo
3
+
4
+ > **Slop AI Indo: Aturan Anti-Slop untuk AI Coding Agent.** Menghentikan agen menghasilkan UI dan teks klise (*AI slop*) yang generik, tanpa membuat hasilnya menjadi kaku atau dingin. Ini adalah sebuah **penyaring (filter), bukan panduan gaya (style guide)**: tidak mendikte warna, font, atau tata letak tertentu. Bukan hanya untuk membangun halaman web: Slop AI Indo juga menulis dan mengaudit teks, sehingga teks buatan AI tidak lagi terbaca seperti bot. Dan Slop AI Indo tidak pernah mempercantik tampilan sendirian; `DESIGN.md` (milik Anda) adalah sumber keindahan dan arah visual sesungguhnya.
5
+
6
+ > **Baru di sini? Mulailah dari [GUIDE.md](GUIDE.md).** Panduan ini menjelaskan apa itu slop-ai-indo dan cara memasangnya dari nol.
7
+
8
+ ## Apa yang Dilakukannya
9
+
10
+ - **38 aturan wajib** (R-01 hingga R-38) dalam tiga tingkatan: *Hard Gate* (mutlak tanpa kompromi), *Purpose-Gate* (teknik diizinkan hanya jika ada alasan fungsional), *Quality Locks* (kunci konsistensi visual & kode).
11
+ - **Liveliness Toolkit** dengan tiga skala kendali (*ENERGY / RHYTHM / MOTION*) dan pembacaan desain, sehingga hasilnya hidup dan spesifik, bukan sekadar "bersih".
12
+ - **Verifikasi Fungsional Langsung:** pengujian interaktif elemen (smoke test R-35) dan audit kontras warna sebelum kode diserahkan.
13
+ - **Skill aditif modular**, satu per bidang kebutuhan, sehingga agen hanya memuat apa yang dibutuhkan oleh tugas terkait.
14
+
15
+ Filter inti mencegah kode murahan (*slop*) tetapi tidak menciptakan arah gaya. `DESIGN.md` (milik Anda) yang menyuplainya; hasil yang steril berarti arah desainnya hilang, bukan filternya yang gagal (R-37).
16
+
17
+
18
+
19
+
20
+ ## Cara Pemasangan (Install)
21
+
22
+ Slop AI Indo didistribusikan sebagai kumpulan **skill agen terstandar** (satu folder per skill, memuat berkas `SKILL.md`). Filter inti selalu dimuat; skill lainnya hanya dimuat saat tugas membutuhkannya. Bagian ini adalah referensi lengkap: semua perintah instalasi di satu tempat. [GUIDE.md](GUIDE.md) memandu langkahnya dari awal, dan bagian Pembaruan (*Update*) serta Penghapusan (*Remove*) mencakup setiap metode dengan cara yang sama.
23
+
24
+ ### 1. Pemasang Resmi NPM (`npx slop-ai-indo`) - Rekomendasi
25
+
26
+ Cukup jalankan satu perintah ini di folder proyek mana saja:
27
+
28
+ ```bash
29
+ npx slop-ai-indo
30
+ ```
31
+
32
+ Perintah ini secara otomatis memasang **1 paket lengkap**:
33
+ - `DESIGN.md`: Standar estetika human-crafted (bisa dipilih langsung saat instalasi: Enterprise SaaS, Dark Modern, Editorial, Utilitarian, atau Default).
34
+ - `AGENTS.md`: Aturan otomatis AI agent saat membuka proyek terkait.
35
+ - `slop-ai-indo.md`: Mesin filter inti (38 aturan wajib).
36
+ - `.agents/`: Folder konfigurasi lengkap dengan 11 modul skill terstandar (termasuk arsitektur backend, audit keamanan, testing, dan kebersihan kode).
37
+
38
+ ### 2. Pemasang Instan Lokal Windows (`slop.bat`)
39
+
40
+ Jika Anda bekerja secara lokal di Windows dan ingin memasang tanpa koneksi internet, gunakan skrip batch bawaan:
41
+
42
+ ```cmd
43
+ slop.bat
44
+ ```
45
+ *(Atau tentukan folder tujuan: `slop.bat D:\path\ke\proyek`)*
46
+
47
+ ### 3. Direktori Skills (skills.sh & GitHub)
48
+
49
+ slop-ai-indo juga terdaftar di [skills.sh](https://skills.sh/yanuar1997/slop-ai-indo) dan dapat dipasang langsung dari repositori GitHub:
50
+
51
+ ```bash
52
+ npx skills add yanuar1997/slop-ai-indo
53
+ ```
54
+
55
+ ### 4. Plugin (Claude Code)
56
+
57
+ Tambahkan repositori ke marketplace sekali, lalu pasang pluginnya:
58
+
59
+ ```text
60
+ /plugin marketplace add https://github.com/yanuar1997/slop-ai-indo
61
+ /plugin install slop-ai-indo
62
+ ```
63
+
64
+ ### 5. Plugin (Antigravity)
65
+
66
+ Repositori ini juga merupakan plugin native untuk Antigravity. Pasang menggunakan Antigravity CLI:
67
+
68
+ ```bash
69
+ agy plugin install https://github.com/yanuar1997/slop-ai-indo
70
+ ```
71
+
72
+ ### 6. Plugin (Codex)
73
+
74
+ Repositori ini berfungsi sebagai plugin dan marketplace Codex. Tambahkan marketplace sekali, lalu pasang pluginnya:
75
+
76
+ ```bash
77
+ codex plugin marketplace add yanuar1997/slop-ai-indo
78
+ codex plugin add slop-ai-indo
79
+ ```
80
+
81
+ ### 7. Plugin (Cursor)
82
+
83
+ Repositori ini adalah plugin Cursor. Tambahkan sebagai marketplace plugin menggunakan Cursor Agent CLI:
84
+
85
+ ```bash
86
+ agent plugin marketplace add https://github.com/yanuar1997/slop-ai-indo
87
+ ```
88
+
89
+ Kemudian buka menu **Customize** di Cursor, cari **slop-ai-indo**, dan pilih **Install** (pilih cakupan proyek atau user).
90
+
91
+ ### 8. Plugin (Kimi Code)
92
+
93
+ Pasang langsung di sesi Kimi Code, lalu buka sesi baru:
94
+
95
+ ```text
96
+ /plugins install https://github.com/yanuar1997/slop-ai-indo
97
+ ```
98
+
99
+ ### 9. Plugin (Cline)
100
+
101
+ Pasang menggunakan Cline CLI:
102
+
103
+ ```bash
104
+ cline plugin install https://github.com/yanuar1997/slop-ai-indo.git
105
+ ```
106
+
107
+ *Catatan:* Dokumentasi resmi Cline saat ini membatasi plugin untuk lingkungan CLI/SDK/Kanban, dan belum berlaku untuk ekstensi editor VS Code/JetBrains. Untuk pengguna ekstensi editor, gunakan metode 1 (`slop.bat`) atau metode 2 (Direktori Skills GitHub).
108
+
109
+ ### 10. Plugin (OpenCode)
110
+
111
+ Repositori ini berfungsi sebagai plugin dan marketplace OpenCode. Pasang menggunakan OpenCode CLI:
112
+
113
+ ```bash
114
+ opencode plugin marketplace install https://github.com/yanuar1997/slop-ai-indo
115
+ ```
116
+
117
+ ### Di Mana Lokasi Skill Disimpan
118
+
119
+ Setiap skill berbentuk folder berstandar terbuka Agent Skills (`<nama>/SKILL.md`), sehingga dapat langsung dikenali oleh agen mana pun yang mendukung standar ini. Pemasang (Metode 1) akan menyimpannya ke folder yang sesuai berikut ini:
120
+
121
+ | Agen Coding | Jalur Pembacaan Skill |
122
+ |-------------|--------------------------|
123
+ | Claude Code | `.claude/skills/` |
124
+ | Codex | `.codex/skills/` |
125
+ | Antigravity | `.agents/skills/` |
126
+ | OpenCode | `.opencode/skills/` |
127
+ | Cursor | `.cursor/skills/` |
128
+ | Cline | `.cline/skills/` |
129
+ | Amp | `.agents/skills/` |
130
+ | Gemini CLI | `.gemini/skills/` (dukungan legasi) |
131
+ | Hermes | `.hermes/skills/` |
132
+ | GitHub Copilot | `.agents/skills/` |
133
+ | Kimi Code | `.agents/skills/` |
134
+ | Oh My Pi | `.omp/skills/` |
135
+ | DeepSeek | `.deepseek/skills/` |
136
+
137
+ Antigravity, Copilot, Kimi Code, dan Amp berbagi satu folder (`.agents/skills/`). Pemasang menuliskan folder bersama ini sehingga memilih mereka bersamaan hanya memasang skill satu kali. Oh My Pi (`.omp/skills/`) dan DeepSeek (`.deepseek/skills/`) juga mendukung pembacaan folder bersama tersebut secara langsung.
138
+
139
+ ### Manual (Berkas Tunggal)
140
+
141
+ Berkas inti `slop-ai-indo.md` adalah filter lengkap yang dapat Anda salin langsung ke jendela obrolan AI apa pun. Unduh dan minta agen Anda untuk membacanya; panduan wizard di dalamnya akan memandu instalasi skill secara manual:
142
+
143
+ ```bash
144
+ curl -o slop-ai-indo.md https://raw.githubusercontent.com/yanuar1997/slop-ai-indo/main/slop-ai-indo.md
145
+ ```
146
+
147
+ ## Pembaruan (Update)
148
+
149
+ slop-ai-indo tidak memperbarui dirinya sendiri secara otomatis di latar belakang. Untuk memperbarui paket ke versi terbaru, cukup jalankan:
150
+
151
+ ```bash
152
+ npx slop-ai-indo
153
+ ```
154
+
155
+ | Metode | Perintah Pembaruan |
156
+ |--------|--------------------|
157
+ | Pemasang Resmi NPM | `npx slop-ai-indo` |
158
+ | Skrip Lokal Windows | `slop.bat` |
159
+ | Direktori skills.sh & GitHub | `npx skills add yanuar1997/slop-ai-indo` |
160
+ | Plugin Claude Code | `claude plugin update slop-ai-indo` |
161
+ | Plugin Antigravity | `agy plugin install https://github.com/yanuar1997/slop-ai-indo` |
162
+ | Plugin Codex | `codex plugin marketplace upgrade slop-ai-indo` |
163
+ | Plugin Cursor | `agent plugin marketplace update https://github.com/yanuar1997/slop-ai-indo` |
164
+ | Plugin Kimi Code | `/plugins install https://github.com/yanuar1997/slop-ai-indo` |
165
+ | Plugin Cline | `cline plugin install https://github.com/yanuar1997/slop-ai-indo.git --force` |
166
+ | Plugin OpenCode | `opencode plugin marketplace install https://github.com/yanuar1997/slop-ai-indo` |
167
+ | Manual | Unduh ulang berkas `slop-ai-indo.md` |
168
+
169
+ Skill dimuat saat sesi agen dimulai, jadi bukalah sesi baru setelah melakukan pembaruan.
170
+
171
+ ## Daftar Skill Modular
172
+
173
+ | Skill | Cakupan Kerja | Hadir Sejak Versi |
174
+ |-------|---------------|-------------------|
175
+ | **slop-ai-indo** | Filter inti: 38 aturan, tingkatan gerbang, skala liveliness | v1.0.0 |
176
+ | **slop-ai-indo-ui** | Visual & tata letak: layout, warna, komponen, dekorasi, gerak, struktur | v1.0.0 |
177
+ | **slop-ai-indo-copywriting** | Penulisan & teks: judul, CTA, tone, anti kata klise AI, higienitas markdown | v1.0.0 |
178
+ | **slop-ai-indo-human** | Aksesibilitas: rasio kontras (disertai checker), navigasi keyboard, fokus, status elemen | v1.0.0 |
179
+ | **slop-ai-indo-layoutmobile** | Responsivitas mobile: adaptasi layar HP hingga desktop, breakpoint, grid, overflow, area sentuh | v1.0.0 |
180
+ | **slop-ai-indo-code** | Kebersihan komentar kode: membuang komentar klise AI, larangan DocBlock boilerplate pada native typing, menjaga komentar arsitektural | v1.0.0 |
181
+ | **slop-ai-indo-security** | Audit keamanan mendalam: tinjauan kerentanan source-first, threat modeling, verifikasi sandbox, pelaporan defensif | v1.0.0 |
182
+ | **slop-ai-indo-docs** | Dokumentasi teknis: pencegahan narasi hampa, cuplikan kode halusinasi, dan arsitektur fiktif di README & PRD | v1.0.2 |
183
+ | **slop-ai-indo-identity** | Karakter & identitas produk: pencegahan penjiplakan layout SaaS populer, ikon generik, dan palet acak | v1.0.2 |
184
+ | **slop-ai-indo-backend** | Arsitektur backend & API: Clean REST URL, parameter binding, controller ramping, DTO/Resource, database lookup table, $fillable, foreign key cascade | v1.1.0 |
185
+ | **slop-ai-indo-test** | Pengujian otomatis & mocking: pemberantasan tes palsu, over-mocking, asersi hampa, skenario kegagalan nyata | v1.1.0 |
186
+
187
+ Pilih skill yang sesuai dengan pekerjaan:
188
+ - Membuat UI → `slop-ai-indo-ui`
189
+ - Menulis teks/konten → `slop-ai-indo-copywriting`
190
+ - Aksesibilitas & kontras → `slop-ai-indo-human`
191
+ - Desain responsif mobile → `slop-ai-indo-layoutmobile`
192
+ - Komentar kode program → `slop-ai-indo-code`
193
+ - Audit keamanan & kerentanan kode → `slop-ai-indo-security`
194
+ - Dokumentasi teknis & PRD → `slop-ai-indo-docs`
195
+ - Identitas produk & branding → `slop-ai-indo-identity`
196
+ - Arsitektur backend & API → `slop-ai-indo-backend`
197
+ - Pengujian otomatis & unit test → `slop-ai-indo-test`
198
+ - Tugas campuran → pasang beberapa skill sekaligus
199
+ - Tanpa skill tambahan → berkas inti sendirian sudah merupakan filter yang lengkap
200
+
201
+ ## Rekomendasi Preset Desain (DESIGN.md)
202
+
203
+ Saat memasang ke dalam proyek (`npx slop-ai-indo`), Anda dapat memilih preset estetika human-crafted yang otomatis disalin menjadi `DESIGN.md`:
204
+
205
+ | Preset | Karakter Visual & Arah Desain | Rekomendasi Kasus Penggunaan |
206
+ |--------|-------------------------------|------------------------------|
207
+ | **Enterprise SaaS** *(enterprise)* | Kanvas terang bersih, sudut 4px - 6px, border hairline, hierarki elegan ala Linear, n8n, Stripe, Notion. | Rekomendasi umum untuk aplikasi web B2B, SaaS, CRM, dashboard operasional, portal enterprise. |
208
+ | **Dark Modern** *(dark-modern)* | Kanvas matte zinc/obsidian `#09090b`, sudut 6px - 8px, hairline border, tanpa pendaran neon ala Vercel, Supabase, Raycast. | Cloud console, platform developer, AI tooling modern, produk bertema dark mode default. |
209
+ | **Fintech & Transaksi** *(fintech)* | Kanvas slate kokoh, angka tabular (`tabular-nums`), field nominal terstruktur, badge status audit perbankan ala Stripe, Wise, Mercury, Brex. | Gateway pembayaran, checkout e-commerce, dashboard investasi, akuntansi, aplikasi perbankan. |
210
+ | **Developer Tooling & Docs** *(devtools)* | Tata letak three-pane, kontainer kode presisi dengan tombol salin, badge shortcut keyboard (`<kbd>`), callout teknis ala Tailwind Docs, Cloudflare, Prisma. | Portal dokumentasi API, library open-source, knowledge base teknis, CLI reference. |
211
+ | **Minimalist Monochrome** *(minimal-monochrome)* | Monokromatik hitam-putih murni, rasio kontras maksimal, garis tegas 1px - 2px solid, zero drop-shadow ala Raycast, Basecamp, Teenage Engineering. | Utility tools, antarmuka minimalis radikal, portfolio desain, brutalism arsitektural. |
212
+ | **Editorial & Content** *(editorial)* | Kanvas hangat (warm off-white), tipografi serif anggun, panjang baris terukur 65ch - 75ch ala Substack, Stripe Press, ReadCV. | Blog, newsletter, publikasi artikel panjang, platform media dan konten berbasis tulisan. |
213
+ | **Utilitarian & Dense Data** *(utilitarian)* | Rasio data-ke-tinta tinggi, grid padat tanpa ruang mubazir, border penyekat tegas, status data semantik ala Grafana, Datadog, Retool. | Monitoring server, dashboard analitik teknis, visualisasi metrik real-time, industrial SCADA/IoT. |
214
+ | **Bawaan** *(default)* | Standar dasar human-crafted asli slop-ai-indo. | Proyek umum yang ingin menyesuaikan arah gaya secara mandiri dari awal. |
215
+
216
+ ## Mode Penggunaan (Usage Modes)
217
+
218
+ Slop AI Indo digunakan dalam salah satu dari dua mode, yang ditentukan di awal sesi:
219
+
220
+ - **DURING (Saat Pengerjaan):** Memandu pengerjaan saat kode sedang dibangun, mencegah AI slop sejak awal. Gunakan saat membuat fitur atau UI baru dari nol.
221
+ - **AFTER (Audit Pasca Pengerjaan):** Mengaudit pekerjaan yang sudah selesai: menghasilkan daftar temuan bernomor, meminta persetujuan mana yang harus diperbaiki, lalu memberikan laporan tindak lanjut. Gunakan untuk membersihkan kode yang sudah ada.
222
+
223
+ ## Mesin Linter Deterministik (`slop-lint`)
224
+
225
+ Verifikasi kode secara instan dan deterministik tanpa menunggu evaluasi subjektif LLM:
226
+
227
+ ```bash
228
+ # Memeriksa seluruh file di proyek saat ini
229
+ npx slop-ai-indo lint
230
+
231
+ # Memeriksa folder tertentu
232
+ npx slop-ai-indo lint ./src
233
+
234
+ # Output format JSON untuk integrasi CI/CD
235
+ npx slop-ai-indo lint --json
236
+ ```
237
+
238
+ Linter ini memindai berkas secara statis dan memvalidasi aturan inti:
239
+ - **UI & CSS:** `transition: all` (R-09), tombol kapsul 9999px (R-12), outer neon glow (R-11), penghapusan focus outline tanpa pengganti (R-06).
240
+ - **Teks & Copywriting:** Kata klise promosi AI (*"unlock the power"*, *"seamless synergy"*, *"game-changing"*, dll.) (R-02), angka/metrik kepuasan fiktif tanpa kutipan (R-08), dan em-dash jamak tanpa tujuan.
241
+ - **Kebersihan Kode:** Komentar klise yang mengulang sintaks dan DocBlock boilerplate pada native typing (R-31), placeholder TODO malas/halusinasi (R-32).
242
+ - **Backend & Keamanan:** Clean RESTful URLs, parameter binding anti-SQL Injection, dan sanitasi query (B-09 s/d B-15).
243
+
244
+ ## Server MCP Terpadu (`slop-mcp`)
245
+
246
+ Slop AI Indo menyediakan server Model Context Protocol (MCP) terpadu berbasis stdio untuk dipanggil langsung oleh AI agent di IDE (Claude Code, Cursor, Antigravity, Cline, Windsurf):
247
+
248
+ ```bash
249
+ # Menjalankan server MCP secara langsung
250
+ npx slop-ai-indo mcp
251
+ ```
252
+
253
+ ### Konfigurasi MCP di IDE
254
+ Tambahkan entri berikut pada konfigurasi MCP IDE Anda:
255
+
256
+ ```json
257
+ {
258
+ "mcpServers": {
259
+ "slop-ai-indo": {
260
+ "command": "npx",
261
+ "args": ["-y", "slop-ai-indo", "mcp"]
262
+ }
263
+ }
264
+ }
265
+ ```
266
+
267
+ ### Tools yang Disediakan Server MCP:
268
+ 1. **`check_contrast`**: Menghitung rasio kontras WCAG 2.1 antara dua warna heksadesimal dengan vonis kepatuhan AA (normal & large text).
269
+ 2. **`lint_snippet`**: Memeriksa potongan kode aktif secara in-memory dari AI slop sebelum ditulis ke disk.
270
+ 3. **`lint_file`**: Menjalankan analisis statis deterministik pada path berkas atau direktori proyek.
271
+ 4. **`validate_delivery_gate`**: Memvalidasi kelengkapan 4 blok wajib laporan Delivery Gate (Aturan, Smoke Test, Kontras, dan PASS/FAIL).
272
+ 5. **`get_rule`**: Mengambil referensi detail dan solusi perbaikan dari suatu aturan anti-slop berdasarkan Rule ID.
273
+
274
+ ---
275
+
276
+ ## Git Pre-commit Hook & CI/CD Pipeline
277
+
278
+ Slop AI Indo menyediakan penjaga gerbang otomatis (*automated gatekeeper*) agar kode yang mengandung AI slop tidak pernah masuk ke repositori git atau lolos ke branch produksi.
279
+
280
+ ### 1. Git Pre-commit Hook Lokal
281
+
282
+ Pasang Git pre-commit hook ke direktori repositori Anda hanya dengan satu perintah:
283
+
284
+ ```bash
285
+ npx slop-ai-indo hook
286
+ ```
287
+
288
+ Fitur Pre-commit Hook:
289
+ - **Zero-overhead & Cepat (<100ms):** Hanya memindai berkas yang sedang di-*stage* (`git diff --cached`), tanpa overhead subprocess yang lambat.
290
+ - **Deteksi Pelanggaran Statis:** Otomatis memblokir commit jika kode Anda memuat warna heksadesimal mentah (`R-02`), teks placeholder/lorem ipsum mentah (`R-06` & `R-12`), blok try-catch kosong (`R-08`), debugging `console.log` liar (`R-09`), import font yang tidak sesuai aturan (`R-11`), atau pelanggaran lainnya.
291
+ - **Bypass Darurat:** Jika dalam kondisi darurat Anda tetap harus melakukan commit, gunakan opsi bawaan git atau environment variable:
292
+ ```bash
293
+ git commit -m "emergency fix" --no-verify
294
+ # atau
295
+ SLOP_SKIP_HOOK=1 git commit -m "emergency fix"
296
+ ```
297
+
298
+ ### 2. Integrasi CI/CD (GitHub Actions)
299
+
300
+ Jadikan audit anti-slop sebagai salah satu tahap pengecekan otomatis pada setiap *Pull Request* dan *Push*.
301
+
302
+ Salin template workflow yang sudah disediakan ke direktori proyek Anda:
303
+
304
+ ```bash
305
+ mkdir -p .github/workflows
306
+ cp templates/slop-audit.yml .github/workflows/
307
+ ```
308
+
309
+ Contoh isi workflow (`.github/workflows/slop-audit.yml`):
310
+
311
+ ```yaml
312
+ name: Slop AI Audit Gate
313
+
314
+ on:
315
+ push:
316
+ branches: [ main, master, develop ]
317
+ pull_request:
318
+ branches: [ main, master, develop ]
319
+
320
+ jobs:
321
+ audit:
322
+ name: Audit Anti-Slop Code Quality
323
+ runs-on: ubuntu-latest
324
+ steps:
325
+ - name: Checkout repository
326
+ uses: actions/checkout@v4
327
+
328
+ - name: Set up Node.js
329
+ uses: actions/setup-node@v4
330
+ with:
331
+ node-version: 20
332
+ cache: 'npm'
333
+
334
+ - name: Run Deterministic Slop Linter
335
+ run: npx -y slop-ai-indo lint .
336
+ ```
337
+
338
+ Jika linter menemukan pelanggaran aturan pada kode PR, pipeline otomatis berstatus *Failed* dengan rincian baris dan Rule ID yang harus diperbaiki oleh kontributor atau AI agent.
339
+
340
+ ## Peta Jalan (Roadmap)
341
+
342
+ **v1.2.1** adalah rilis saat ini. Riwayat setiap rilis dan rencana fitur selanjutnya tercantum lengkap di [ROADMAP.md](ROADMAP.md).
343
+
344
+ ## FAQ (Pertanyaan yang Sering Diajukan)
345
+
346
+ ### Apakah Slop AI Indo adalah sebuah panduan gaya (style guide)?
347
+ Bukan, melainkan sebuah **penyaring (filter)**. Slop AI Indo tidak mendikte palet warna, jenis font, atau template tata letak tertentu. Filter ini menolak teknik desain murahan yang tanpa tujuan fungsional dan menuntut tampilan yang hidup; arahan desain spesifik diserahkan sepenuhnya kepada Anda melalui `DESIGN.md`.
348
+
349
+ ### Agen AI apa saja yang didukung?
350
+ Semua agen AI coding modern, melalui metode berikut:
351
+ - **Pemasang resmi NPM (`npx slop-ai-indo`):** Mendukung Claude Code, Codex, Antigravity, OpenCode, Cursor, Cline, Amp, Gemini CLI, Hermes, GitHub Copilot, Kimi Code, Oh My Pi, dan DeepSeek.
352
+ - **Direktori skills (GitHub) dan skrip lokal:** Tersedia via `slop.bat` dan `slop.ps1`.
353
+ - **Plugin native:** Tersedia untuk Claude Code, Antigravity, Codex, Cursor, Kimi Code, Cline, dan OpenCode dari repositori ini.
354
+ - **Berkas tunggal (`slop-ai-indo.md`):** Berfungsi pada agen AI apa pun yang dapat membaca teks Markdown polos, termasuk jendela chat browser atau aplikasi ponsel.
355
+
356
+ ### Apa yang dimaksud dengan "Skill"?
357
+ Folder modul yang mendalami satu topik spesifik (UI, penulisan teks, aksesibilitas, dll.), yang memuat berkas `SKILL.md` berisi aturan khususnya. Modul ini merujuk pada aturan inti berdasarkan nomor dan tidak pernah menduplikasi isi aturan inti.
358
+
359
+ ## Pengembang & Kontributor
360
+
361
+ Dikembangkan dan dirawat oleh [Yanuar (yanuar1997)](https://github.com/yanuar1997).
package/bin/slop-lint.mjs CHANGED
@@ -22,18 +22,18 @@ try {
22
22
 
23
23
  if (!isQuiet) {
24
24
  console.log(pc.bold(pc.cyan('\nšŸ” slop-lint: Mesin Linter Deterministik Slop AI Indo')))
25
- console.log(pc.dim(`Memeriksa: ${targetPath}\n`))
25
+ console.log(pc.dim(`Memeriksa direktori: ${targetPath}\n`))
26
26
  }
27
27
 
28
28
  if (result.findings.length === 0) {
29
29
  if (!isQuiet) {
30
30
  console.log(pc.green('āœ” BERSIH:') + pc.dim(` ${result.scannedFiles} file diperiksa, nol slop terdeteksi.`))
31
- console.log(pc.bold(pc.green('Status: PASSED (Lolos Delivery Gate)\n')))
31
+ console.log(pc.bold(pc.green(`Skor Kualitas: 100/100 | Status: PASSED (Bebas dari Slop)\n`)))
32
32
  }
33
33
  process.exit(0)
34
34
  }
35
35
 
36
- // Group findings by file
36
+ // Kelompokkan temuan berdasarkan berkas
37
37
  const byFile = new Map()
38
38
  for (const f of result.findings) {
39
39
  if (!byFile.has(f.file)) byFile.set(f.file, [])
@@ -45,19 +45,27 @@ try {
45
45
  console.log(pc.bold(pc.underline(relFile)))
46
46
  for (const item of items) {
47
47
  const isHard = item.tier === 'Hard Gate'
48
- const tierBadge = isHard ? pc.red(`[${item.tier}]`) : pc.yellow(`[${item.tier}]`)
48
+ const isPurpose = item.tier === 'Purpose-Gate'
49
+ const tierBadge = isHard
50
+ ? pc.red(`[${item.tier}]`)
51
+ : isPurpose
52
+ ? pc.magenta(`[${item.tier}]`)
53
+ : pc.yellow(`[${item.tier}]`)
49
54
  const ruleCode = pc.bold(item.ruleId)
50
- console.log(` ${pc.dim(`baris ${item.line}`)} ${tierBadge} ${ruleCode} ${pc.bold(item.name)}`)
55
+ const location = `${item.line}:${item.column}`
56
+ console.log(` ${pc.dim(location)} ${tierBadge} ${ruleCode} ${pc.bold(item.name)}`)
51
57
  console.log(` ${pc.dim('Kode:')} ${pc.italic(item.snippet)}`)
52
58
  console.log(` ${pc.cyan('Solusi:')} ${item.fix}\n`)
53
59
  }
54
60
  }
55
61
 
56
62
  console.log(pc.dim('─'.repeat(60)))
63
+ const scoreColor = result.score >= 80 ? pc.green : result.score >= 60 ? pc.yellow : pc.red
57
64
  console.log(
58
65
  `Total diperiksa: ${pc.bold(result.scannedFiles)} file | Ditemukan: ${pc.bold(result.counts.total)} temuan ` +
59
- `(${pc.red(`${result.counts.hardGate} Hard Gate`)}, ${pc.yellow(`${result.counts.qualityLocks} Quality Lock`)})`
66
+ `(${pc.red(`${result.counts.hardGate} Hard Gate`)}, ${pc.magenta(`${result.counts.purposeGate} Purpose-Gate`)}, ${pc.yellow(`${result.counts.qualityLocks} Quality Lock`)})`
60
67
  )
68
+ console.log(`Skor Kebersihan Kode: ${scoreColor(pc.bold(`${result.score}/100`))}`)
61
69
 
62
70
  if (result.passed) {
63
71
  console.log(pc.bold(pc.yellow('Status: WARNING (Peringatan Kualitas, Hard Gate lolos)\n')))
@@ -67,6 +75,6 @@ try {
67
75
  process.exit(1)
68
76
  }
69
77
  } catch (err) {
70
- console.error(pc.red(`Error: ${err.message}`))
78
+ console.error(pc.red(`Kesalahan: ${err.message}`))
71
79
  process.exit(1)
72
80
  }