vibes-plug 2.14.1 → 3.9.0
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/.claude/rules/vibes-plug-core.md +5 -0
- package/.cursor/rules/vibes-plug-core.mdc +7 -2
- package/.cursorrules +8 -2
- package/AGENTS.md +23 -2
- package/CHANGELOG.md +114 -0
- package/CLAUDE.md +10 -3
- package/README.md +216 -611
- package/bin/vibes.mjs +1104 -0
- package/package.json +11 -3
- package/plugin.json +4 -3
- package/scripts/check-anti-slop.mjs +53 -0
- package/scripts/install.js +3 -1
- package/scripts/update_skills.js +1 -1
- package/scripts/update_skills.mjs +86 -0
- package/scripts/validate-skills.mjs +111 -0
- package/skills/accessibility-testing-expert/SKILL.md +117 -116
- package/skills/affective-computing-emotion-ai/SKILL.md +83 -0
- package/skills/agentic-coding-workflow-expert/SKILL.md +297 -0
- package/skills/agentic-memory-architect/SKILL.md +52 -0
- package/skills/agentic-micro-economy-architect/SKILL.md +92 -0
- package/skills/ai-llm-integration-expert/SKILL.md +330 -194
- package/skills/ai-media-generation-expert/SKILL.md +173 -172
- package/skills/ai-prompt-engineering-expert/SKILL.md +204 -134
- package/skills/ai-safety-governance-expert/SKILL.md +223 -0
- package/skills/angular-expert/SKILL.md +149 -148
- package/skills/anti-slop/SKILL.md +134 -133
- package/skills/api-design-expert/SKILL.md +4 -3
- package/skills/api-gateway-proxy-expert/SKILL.md +3 -2
- package/skills/app-analyzer-optimizer/SKILL.md +4 -3
- package/skills/apple-ecosystem-expert/SKILL.md +6 -5
- package/skills/astro-framework-expert/SKILL.md +201 -200
- package/skills/async-queue-temporal-expert/SKILL.md +218 -217
- package/skills/authentication-identity-expert/SKILL.md +174 -173
- package/skills/autonomous-red-teamer/SKILL.md +338 -203
- package/skills/autonomous-tdd-debugger/SKILL.md +6 -5
- package/skills/biome-linter-formatter-expert/SKILL.md +90 -89
- package/skills/blockchain-web3-expert/SKILL.md +116 -115
- package/skills/brainstorming/SKILL.md +392 -377
- package/skills/browser-automation-expert/SKILL.md +260 -222
- package/skills/bun-runtime-expert/SKILL.md +5 -4
- package/skills/chatbot-messaging-expert/SKILL.md +115 -114
- package/skills/ci-cd-devops-architect/SKILL.md +3 -2
- package/skills/cloud-hosting-expert/SKILL.md +5 -4
- package/skills/coderabbit/SKILL.md +5 -4
- package/skills/compliance-gdpr-privacy-expert/SKILL.md +3 -2
- package/skills/composable-mach-architect/SKILL.md +338 -0
- package/skills/cron-scheduler-expert/SKILL.md +5 -4
- package/skills/data-pipeline-etl-expert/SKILL.md +3 -2
- package/skills/data-telemetry-expert/SKILL.md +5 -4
- package/skills/data-visualization-expert/SKILL.md +155 -154
- package/skills/database-orm-expert/SKILL.md +166 -165
- package/skills/deep-research-analyst/SKILL.md +182 -136
- package/skills/dependency-upgrade-migrator/SKILL.md +11 -10
- package/skills/design-system-architect/SKILL.md +4 -3
- package/skills/desktop-electron-expert/SKILL.md +129 -128
- package/skills/documentation-site-expert/SKILL.md +60 -59
- package/skills/doku-mcp-server/SKILL.md +5 -4
- package/skills/doku-payment-gateway/SKILL.md +250 -232
- package/skills/domain-driven-design-expert/SKILL.md +3 -2
- package/skills/e2e-testing-expert/SKILL.md +5 -4
- package/skills/ecommerce-expert/SKILL.md +88 -87
- package/skills/email-notification-expert/SKILL.md +5 -4
- package/skills/ephemeral-generative-ui-architect/SKILL.md +88 -0
- package/skills/error-resilience-expert/SKILL.md +14 -13
- package/skills/event-driven-architect/SKILL.md +5 -4
- package/skills/feature-flag-analytics-expert/SKILL.md +3 -2
- package/skills/file-upload-media-expert/SKILL.md +5 -4
- package/skills/firebase-security-expert/SKILL.md +5 -4
- package/skills/form-validation-expert/SKILL.md +7 -6
- package/skills/frontier-ai-models-expert/SKILL.md +116 -0
- package/skills/fullstack-expert/SKILL.md +185 -184
- package/skills/gemini-agent-booster/SKILL.md +248 -172
- package/skills/geospatial-maps-expert/SKILL.md +81 -80
- package/skills/global-a11y-i18n-expert/SKILL.md +5 -4
- package/skills/glsl-shader-expert/SKILL.md +191 -190
- package/skills/go-programming-expert/SKILL.md +5 -4
- package/skills/graph-rag-knowledge-expert/SKILL.md +201 -200
- package/skills/graphql-apollo-expert/SKILL.md +5 -4
- package/skills/headless-cms-expert/SKILL.md +182 -181
- package/skills/hig/SKILL.md +5 -4
- package/skills/js-backend-expert/SKILL.md +219 -218
- package/skills/legacy-code-translator/SKILL.md +6 -5
- package/skills/llm-finops-router/SKILL.md +52 -0
- package/skills/local-slm-edge-ai-expert/SKILL.md +168 -167
- package/skills/logging-error-tracking-expert/SKILL.md +5 -4
- package/skills/mcp-server-architect/SKILL.md +315 -307
- package/skills/micro-frontend-architect/SKILL.md +5 -4
- package/skills/mobile-expo-expert/SKILL.md +5 -4
- package/skills/modern-css-native-expert/SKILL.md +190 -189
- package/skills/monorepo-architect/SKILL.md +5 -4
- package/skills/mpa-orchestrator/SKILL.md +41 -4
- package/skills/multi-agent-orchestration/SKILL.md +388 -254
- package/skills/mvc-expert/SKILL.md +5 -4
- package/skills/n8n-automation-expert/SKILL.md +90 -89
- package/skills/nextjs-app-router-expert/SKILL.md +3 -2
- package/skills/openapi-swagger-codegen-expert/SKILL.md +4 -3
- package/skills/payment-gateway-expert/SKILL.md +131 -128
- package/skills/pdf-document-generation-expert/SKILL.md +92 -91
- package/skills/performance-web-vitals/SKILL.md +5 -4
- package/skills/post-quantum-crypto-migrator/SKILL.md +3 -2
- package/skills/prd-architect/SKILL.md +183 -182
- package/skills/proactive-background-watcher/SKILL.md +5 -4
- package/skills/production-ready-hardener/SKILL.md +10 -9
- package/skills/pwa-offline-first-expert/SKILL.md +227 -226
- package/skills/pydantic-ai-expert/SKILL.md +162 -161
- package/skills/python-programming-expert/SKILL.md +5 -4
- package/skills/rate-limit-abuse-prevention/SKILL.md +5 -4
- package/skills/realtime-collaboration-expert/SKILL.md +3 -2
- package/skills/rich-text-editor-expert/SKILL.md +178 -177
- package/skills/rust-programming-expert/SKILL.md +5 -4
- package/skills/saas-architect/SKILL.md +155 -154
- package/skills/saas-billing/SKILL.md +394 -382
- package/skills/saas-multi-tenant/SKILL.md +7 -6
- package/skills/scalability-clean-code/SKILL.md +5 -4
- package/skills/search-engine-expert/SKILL.md +90 -89
- package/skills/self-healing-cloud-orchestrator/SKILL.md +3 -2
- package/skills/senior-frontend/SKILL.md +14 -9
- package/skills/seo/SKILL.md +4 -4
- package/skills/session-memory-manager/SKILL.md +129 -128
- package/skills/solidjs-expert/SKILL.md +81 -80
- package/skills/spa-orchestrator/SKILL.md +5 -4
- package/skills/sse-websocket-streaming-expert/SKILL.md +3 -2
- package/skills/state-management-expert/SKILL.md +5 -4
- package/skills/supabase-security-expert/SKILL.md +5 -4
- package/skills/svelte-sveltekit-expert/SKILL.md +92 -91
- package/skills/svg-animation-motion-expert/SKILL.md +3 -2
- package/skills/synthetic-data-finetuning-expert/SKILL.md +156 -155
- package/skills/tailwind-expert/SKILL.md +62 -5
- package/skills/tanstack-query-expert/SKILL.md +5 -4
- package/skills/tauri-expert/SKILL.md +5 -4
- package/skills/typescript-expert/SKILL.md +5 -4
- package/skills/ui-ux-pro-max/SKILL.md +7 -6
- package/skills/vector-db-rag-expert/SKILL.md +209 -208
- package/skills/vercel-ai-sdk-expert/SKILL.md +226 -181
- package/skills/voice-ai-realtime-agent/SKILL.md +243 -242
- package/skills/vue-frontend-expert/SKILL.md +5 -4
- package/skills/wasm-edge-computing-expert/SKILL.md +3 -2
- package/skills/web-3d-graphics-expert/SKILL.md +314 -313
- package/skills/web-game-engine-expert/SKILL.md +330 -329
- package/skills/web-scraper/SKILL.md +158 -157
- package/skills/website-design-cloner/SKILL.md +5 -4
- package/skills/webxr-ar-vr-expert/SKILL.md +163 -162
- package/skills/wordpress-headless-expert/SKILL.md +145 -144
- package/skills/zero-tech-debt-auditor/SKILL.md +115 -0
- package/skills/zero-to-prod-orchestrator/SKILL.md +281 -229
- package/skills/zero-trust-secret-vault/SKILL.md +3 -2
- package/BLUEPRINT.md +0 -319
- package/skills/bootstrap-to-modern/SKILL.md +0 -94
- package/skills/multiple-entry-points/SKILL.md +0 -91
- package/skills/secure-fuzz-testing/SKILL.md +0 -207
- package/skills/visual-qa-vision-agent/SKILL.md +0 -71
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: secure-fuzz-testing
|
|
3
|
-
description: "Expert-level skill for writing and integrating coverage-guided fuzz tests in Python, Rust, and Go for secure code validation in English and Indonesian."
|
|
4
|
-
author: "Roedy Rustam"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Secure Fuzz Testing
|
|
8
|
-
|
|
9
|
-
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<a name="english"></a>
|
|
14
|
-
## English
|
|
15
|
-
|
|
16
|
-
### Orchestration & Integration
|
|
17
|
-
Connects and orchestrates with relevant domain skills like `brainstorming`, `zero-to-prod-orchestrator`, and `project-context-mapper` to ensure cohesive execution.
|
|
18
|
-
|
|
19
|
-
### Description
|
|
20
|
-
Expert-level guidance for writing, running, and integrating coverage-guided fuzz tests (fuzzing) to identify security vulnerabilities, memory leaks, and input-validation issues in software applications. This skill covers writing fuzz targets in **Python**, **Rust**, and **Go**, configuring compilers with sanitizers (ASan, MSan, UBSan), and setting up automated CI/CD security pipelines.
|
|
21
|
-
|
|
22
|
-
### Trigger Conditions
|
|
23
|
-
- Use when designing or reviewing data parsers, serialization/deserialization logic, or file formats.
|
|
24
|
-
- Use when writing libraries that process untrusted network input or binary data streams.
|
|
25
|
-
- Use when integrating automated security testing into a DevSecOps pipeline (CI/CD).
|
|
26
|
-
- Use when troubleshooting complex memory bugs, edge-case crashes, or unhandled exceptions.
|
|
27
|
-
|
|
28
|
-
### Writing Fuzz Targets
|
|
29
|
-
Coverage-guided fuzzers need a target function that accepts a stream of bytes and processes it.
|
|
30
|
-
|
|
31
|
-
#### 1. Python Fuzzing (Atheris)
|
|
32
|
-
`Atheris` is a coverage-guided fuzzer for Python. It can fuzz Python code and native extensions:
|
|
33
|
-
```python
|
|
34
|
-
import sys
|
|
35
|
-
import atheris
|
|
36
|
-
|
|
37
|
-
with atheris.instrument_imports():
|
|
38
|
-
import our_parser # Import target module inside instrument_imports
|
|
39
|
-
|
|
40
|
-
def TestOneInput(data):
|
|
41
|
-
if len(data) < 4:
|
|
42
|
-
return
|
|
43
|
-
try:
|
|
44
|
-
# Decode and parse the byte data
|
|
45
|
-
text = data.decode("utf-8", errors="ignore")
|
|
46
|
-
our_parser.parse_config(text)
|
|
47
|
-
except our_parser.ParseException:
|
|
48
|
-
# Expected exceptions should be caught to avoid false positives
|
|
49
|
-
pass
|
|
50
|
-
|
|
51
|
-
atheris.Setup(sys.argv, TestOneInput)
|
|
52
|
-
atheris.Fuzz()
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
#### 2. Rust Fuzzing (cargo-fuzz & libFuzzer)
|
|
56
|
-
Rust has first-class fuzzing support via `cargo-fuzz` which wraps `libFuzzer`:
|
|
57
|
-
```rust
|
|
58
|
-
#![no_main]
|
|
59
|
-
use libfuzzer_sys::fuzz_target;
|
|
60
|
-
|
|
61
|
-
fuzz_target!(|data: &[u8]| {
|
|
62
|
-
if let Ok(input_str) = std::str::from_utf8(data) {
|
|
63
|
-
let _ = our_crate::parse_config(input_str);
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
```
|
|
67
|
-
- **Run Fuzzer**: Execute `cargo +nightly fuzz run <target_name>`.
|
|
68
|
-
|
|
69
|
-
#### 3. Go Fuzzing (Native Go Fuzz)
|
|
70
|
-
Go supports native fuzzing in its standard library (`testing` package):
|
|
71
|
-
```go
|
|
72
|
-
package main
|
|
73
|
-
|
|
74
|
-
import (
|
|
75
|
-
"testing"
|
|
76
|
-
"ourmodule/parser"
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
func FuzzParseConfig(f *testing.F) {
|
|
80
|
-
// Add seed corpus for initial coverage guidance
|
|
81
|
-
f.Add([]byte("config_key = value"))
|
|
82
|
-
|
|
83
|
-
f.Fuzz(func(t *testing.T, data []byte) {
|
|
84
|
-
_, err := parser.ParseConfig(data)
|
|
85
|
-
if err != nil {
|
|
86
|
-
t.Skip() // Skip expected/graceful errors
|
|
87
|
-
}
|
|
88
|
-
})
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
- **Run Fuzzer**: Run `go test -fuzz=FuzzParseConfig -fuzztime=10m`.
|
|
92
|
-
|
|
93
|
-
### Diagnostics & Sanitizers
|
|
94
|
-
Use compiler instrumentation flags to expose hidden bugs:
|
|
95
|
-
- **AddressSanitizer (ASan)**: Detects out-of-bounds access, use-after-free, and memory leaks.
|
|
96
|
-
- **UndefinedBehaviorSanitizer (UBSan)**: Detects integer overflows, alignment issues, and division by zero.
|
|
97
|
-
- **ThreadSanitizer (TSan)**: Finds data races in multithreaded environments.
|
|
98
|
-
|
|
99
|
-
### DevSecOps & CI Integration
|
|
100
|
-
- **OSS-Fuzz**: For open-source projects, integrate with Google's OSS-Fuzz for continuous fuzzing infrastructure.
|
|
101
|
-
- **GitHub Actions**: Run fuzz targets on pull requests with short run times (`fuzztime=5m`) to catch regression errors without blocking pipelines.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
### Troubleshooting & Common Gotchas
|
|
106
|
-
- **False Positives**: Ensure expected API errors and clean validation errors do not cause the fuzzer to abort. Catch expected exceptions or use `t.Skip()` where appropriate.
|
|
107
|
-
- **State Pollution**: Fuzz targets must be stateless. Avoid sharing mutable global states between iterations.
|
|
108
|
-
- **Infinite Loops**: Guard against code that hangs. Configure timeouts (`-timeout=25` in libFuzzer) to automatically crash long-running executions.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
<a name="bahasa-indonesia"></a>
|
|
113
|
-
## Bahasa Indonesia
|
|
114
|
-
|
|
115
|
-
### Integrasi Orkestrasi
|
|
116
|
-
Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
|
|
117
|
-
|
|
118
|
-
### Deskripsi
|
|
119
|
-
Panduan tingkat ahli untuk menulis, menjalankan, dan mengintegrasikan pengujian berbasis cakupan (*coverage-guided fuzzing*) untuk mengidentifikasi celah keamanan, kebocoran memori, dan kesalahan validasi input dalam aplikasi perangkat lunak. Skill ini mencakup penulisan target fuzzing dalam bahasa **Python**, **Rust**, dan **Go**, konfigurasi compiler dengan sanitizer (ASan, MSan, UBSan), serta penyiapan pipa otomatisasi keamanan CI/CD.
|
|
120
|
-
|
|
121
|
-
### Kondisi Pemicu
|
|
122
|
-
- Gunakan saat merancang atau memeriksa parser data, logika serialisasi/deserialisasi, atau pemroses format berkas.
|
|
123
|
-
- Gunakan saat menulis pustaka (*library*) yang memproses input jaringan yang tidak tepercaya atau aliran data biner.
|
|
124
|
-
- Gunakan saat mengintegrasikan pengujian keamanan otomatis ke dalam alur kerja DevSecOps (CI/CD).
|
|
125
|
-
- Gunakan saat mendiagnosis bug memori yang kompleks, crash pada kasus ekstrem (*edge-cases*), atau *exception* yang tidak ditangani.
|
|
126
|
-
|
|
127
|
-
### Penulisan Target Fuzzing
|
|
128
|
-
Fuzzer berbasis cakupan memerlukan fungsi target yang menerima aliran byte untuk kemudian diproses secara dinamis.
|
|
129
|
-
|
|
130
|
-
#### 1. Fuzzing Python (Atheris)
|
|
131
|
-
`Atheris` adalah fuzzer berbasis cakupan untuk kode Python dan ekstensi native (C/C++):
|
|
132
|
-
```python
|
|
133
|
-
import sys
|
|
134
|
-
import atheris
|
|
135
|
-
|
|
136
|
-
with atheris.instrument_imports():
|
|
137
|
-
import our_parser # Impor modul target di dalam instrument_imports
|
|
138
|
-
|
|
139
|
-
def TestOneInput(data):
|
|
140
|
-
if len(data) < 4:
|
|
141
|
-
return
|
|
142
|
-
try:
|
|
143
|
-
# Dekode data byte menjadi teks
|
|
144
|
-
text = data.decode("utf-8", errors="ignore")
|
|
145
|
-
our_parser.parse_config(text)
|
|
146
|
-
except our_parser.ParseException:
|
|
147
|
-
# Tangkap exception yang diharapkan agar tidak dianggap crash palsu
|
|
148
|
-
pass
|
|
149
|
-
|
|
150
|
-
atheris.Setup(sys.argv, TestOneInput)
|
|
151
|
-
atheris.Fuzz()
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
#### 2. Fuzzing Rust (cargo-fuzz & libFuzzer)
|
|
155
|
-
Rust memiliki dukungan fuzzing kelas satu melalui utilitas `cargo-fuzz` yang menggunakan pustaka `libFuzzer`:
|
|
156
|
-
```rust
|
|
157
|
-
#![no_main]
|
|
158
|
-
use libfuzzer_sys::fuzz_target;
|
|
159
|
-
|
|
160
|
-
fuzz_target!(|data: &[u8]| {
|
|
161
|
-
if let Ok(input_str) = std::str::from_utf8(data) {
|
|
162
|
-
let _ = our_crate::parse_config(input_str);
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
```
|
|
166
|
-
- **Jalankan Fuzzer**: Eksekusi perintah `cargo +nightly fuzz run <nama_target>`.
|
|
167
|
-
|
|
168
|
-
#### 3. Fuzzing Go (Native Go Fuzz)
|
|
169
|
-
Go mendukung pengujian fuzzing secara native dalam pustaka standarnya (`testing` package):
|
|
170
|
-
```go
|
|
171
|
-
package main
|
|
172
|
-
|
|
173
|
-
import (
|
|
174
|
-
"testing"
|
|
175
|
-
"ourmodule/parser"
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
func FuzzParseConfig(f *testing.F) {
|
|
179
|
-
// Tambahkan seed corpus awal sebagai panduan awal cakupan fuzzer
|
|
180
|
-
f.Add([]byte("config_key = value"))
|
|
181
|
-
|
|
182
|
-
f.Fuzz(func(t *testing.T, data []byte) {
|
|
183
|
-
_, err := parser.ParseConfig(data)
|
|
184
|
-
if err != nil {
|
|
185
|
-
t.Skip() // Lewati error yang memang diharapkan (ditangani dengan aman)
|
|
186
|
-
}
|
|
187
|
-
})
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
- **Jalankan Fuzzer**: Eksekusi perintah `go test -fuzz=FuzzParseConfig -fuzztime=10m`.
|
|
191
|
-
|
|
192
|
-
### Diagnosis & Sanitizer
|
|
193
|
-
Gunakan tanda instrumentasi kompiler untuk mendeteksi bug tersembunyi secara dini:
|
|
194
|
-
- **AddressSanitizer (ASan)**: Mendeteksi akses memori di luar batas (*out-of-bounds*), penggunaan setelah dibebaskan (*use-after-free*), dan kebocoran memori (*memory leak*).
|
|
195
|
-
- **UndefinedBehaviorSanitizer (UBSan)**: Mendeteksi overflow integer, masalah penyelarasan memori (*alignment*), dan pembagian dengan nol.
|
|
196
|
-
- **ThreadSanitizer (TSan)**: Menemukan perebutan data (*data race*) pada eksekusi multithread.
|
|
197
|
-
|
|
198
|
-
### Integrasi DevSecOps & CI
|
|
199
|
-
- **OSS-Fuzz**: Untuk proyek open-source, integrasikan dengan platform OSS-Fuzz dari Google untuk pemantauan berkelanjutan.
|
|
200
|
-
- **GitHub Actions**: Jalankan target fuzzing pada pull request dengan batasan waktu yang singkat (`fuzztime=5m`) untuk menangkap regresi kode tanpa menghambat alur build.
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
### Pemecahan Masalah & Kesalahan Umum
|
|
205
|
-
- **Crash Palsu (False Positives)**: Pastikan error API yang ditangani dengan aman tidak membuat fuzzer berhenti. Tangkap exception tersebut atau gunakan `t.Skip()` pada Go.
|
|
206
|
-
- **Polusi State (State Pollution)**: Pastikan target fuzzing bersifat stateless. Jangan biarkan state global mutable dibagikan antar iterasi pengujian.
|
|
207
|
-
- **Loop Tak Terbatas**: Waspadai kode yang mengalami hang. Konfigurasikan batas waktu (`-timeout=25` pada libFuzzer) agar eksekusi yang macet secara otomatis dilaporkan sebagai crash.
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: visual-qa-vision-agent
|
|
3
|
-
description: "Equips the AI agent with visual QA capabilities using Playwright/Puppeteer and the agent's innate Vision capabilities to self-correct UI layout, CSS alignment, and visual regressions."
|
|
4
|
-
author: "Roedy Rustam"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Visual QA & Vision Agent
|
|
8
|
-
|
|
9
|
-
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<a name="english"></a>
|
|
14
|
-
## English
|
|
15
|
-
|
|
16
|
-
### Orchestration & Integration
|
|
17
|
-
Connects and orchestrates with relevant domain skills like `brainstorming`, `zero-to-prod-orchestrator`, and `project-context-mapper` to ensure cohesive execution.
|
|
18
|
-
|
|
19
|
-
### Description
|
|
20
|
-
This skill transforms the agent from a blind code generator into a visual designer. Instead of hoping the CSS looks correct, the agent is instructed to write a script that takes a screenshot of the newly created component, analyzes the screenshot using its own Vision AI capabilities, and iteratively tweaks the CSS until it matches the design intent perfectly.
|
|
21
|
-
|
|
22
|
-
### Trigger Conditions
|
|
23
|
-
Activate this skill when the user says:
|
|
24
|
-
- "Fix the CSS, the button is misaligned."
|
|
25
|
-
- "Make it look exactly like this mockup."
|
|
26
|
-
- "Ensure the UI is responsive on mobile screens."
|
|
27
|
-
|
|
28
|
-
### Core Concepts
|
|
29
|
-
|
|
30
|
-
#### 1. The Visual QA Loop
|
|
31
|
-
1. **Code:** The agent writes the HTML/CSS/React component.
|
|
32
|
-
2. **Serve:** The agent starts a local dev server in the background.
|
|
33
|
-
3. **Capture:** The agent runs a quick Playwright/Puppeteer script to take screenshots at various viewports (Mobile, Tablet, Desktop).
|
|
34
|
-
4. **Analyze:** The agent receives the screenshot (via the `view_file` tool on the image) and analyzes the visual hierarchy, contrast, and alignment.
|
|
35
|
-
5. **Correct:** The agent fixes margin, padding, or flexbox issues based on what it *saw*, not just what the code says.
|
|
36
|
-
|
|
37
|
-
#### 2. Agent Constraints (Mandatory Visual Verification)
|
|
38
|
-
- **NO BLIND CSS GUESSING**: You are strictly prohibited from finalizing a frontend component without verifying it visually first. You MUST use a `browser_subagent` to capture a screenshot of your work.
|
|
39
|
-
- **Pixel-Perfect Validation**: Compare the screenshot against the initial design spec or generic UI/UX best practices. Iterate on the CSS until the visual output is flawless.
|
|
40
|
-
- Always check contrast ratios visually if design tokens are overridden.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
### Integration with Other Skills (MANDATORY)
|
|
45
|
-
- `browser-automation-expert` — Provides the Playwright code needed to capture the screenshots.
|
|
46
|
-
- `tailwind-expert` — Provides the CSS utility classes used to fix the alignment issues discovered by Vision.
|
|
47
|
-
- `ui-components-expert` — Defines the correct visual standards (spacing, sizing) the agent should look for.
|
|
48
|
-
|
|
49
|
-
### Referenced By Orchestrators (MANDATORY)
|
|
50
|
-
- `brainstorming` — Add to "UI/UX & Design Systems".
|
|
51
|
-
- `zero-to-prod-orchestrator` — Phase 5 (Frontend / UI Validation).
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
<a name="bahasa-indonesia"></a>
|
|
56
|
-
## Bahasa Indonesia
|
|
57
|
-
|
|
58
|
-
### Integrasi Orkestrasi
|
|
59
|
-
Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
|
|
60
|
-
|
|
61
|
-
### Deskripsi
|
|
62
|
-
Skill ini memanfaatkan kemampuan *Vision* (penglihatan) bawaan AI untuk melakukan *Quality Assurance* (QA) visual. Agen tidak lagi sekadar menebak CSS secara buta, melainkan mengambil *screenshot* dari halaman yang dibuatnya, melihat hasilnya, dan mengkoreksi *margin/padding* secara mandiri.
|
|
63
|
-
|
|
64
|
-
### Kondisi Pemicu
|
|
65
|
-
- Saat pengguna meminta untuk merapikan UI yang berantakan.
|
|
66
|
-
- Saat melakukan *cloning* desain dari gambar *mockup*.
|
|
67
|
-
|
|
68
|
-
### Panduan Singkat
|
|
69
|
-
- **Gunakan Mata Anda (Wajib Verifikasi Visual):** Anda dilarang keras memfinalisasi atau menyelesaikan tugas frontend tanpa melihat hasilnya terlebih dahulu. Anda WAJIB mengambil *screenshot*, melihatnya menggunakan tool `view_file`, dan memverifikasi layout secara visual (*pixel-perfect*).
|
|
70
|
-
- **Siklus Visual:** Tulis Kode ➔ Ambil Screenshot ➔ Analisis dengan *Vision* ➔ Perbaiki Tailwind/CSS ➔ Selesai.
|
|
71
|
-
- **Jangan Menebak:** Terkadang `justify-center` tidak berfungsi karena ada pembungkus (*wrapper*) absolut. Jangan menebak-nebak di dalam kode; lihat hasil akhirnya secara visual!
|