vibes-plug 2.5.0 → 2.11.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 +32 -0
- package/.cursor/rules/vibes-plug-core.mdc +51 -0
- package/.cursorrules +42 -0
- package/AGENTS.md +37 -7
- package/BLUEPRINT.md +309 -217
- package/CHANGELOG.md +133 -1
- package/CLAUDE.md +70 -0
- package/LICENSE +1 -1
- package/README.md +641 -415
- package/index.js +19 -0
- package/package.json +44 -8
- package/plugin.json +24 -7
- package/scripts/generate_swarm_gif.py +295 -0
- package/scripts/install.js +201 -0
- package/skills/accessibility-testing-expert/SKILL.md +116 -0
- package/skills/ai-cost-token-optimizer/SKILL.md +82 -52
- package/skills/ai-evals-benchmark-expert/SKILL.md +188 -0
- package/skills/ai-llm-integration-expert/SKILL.md +185 -178
- package/skills/ai-media-generation-expert/SKILL.md +172 -0
- package/skills/ai-prompt-engineering-expert/SKILL.md +84 -0
- package/skills/angular-expert/SKILL.md +148 -0
- package/skills/api-design-expert/SKILL.md +6 -3
- package/skills/api-gateway-proxy-expert/SKILL.md +81 -0
- package/skills/app-analyzer-optimizer/SKILL.md +6 -3
- package/skills/apple-ecosystem-expert/SKILL.md +144 -141
- package/skills/{asisten_ramah → asisten-ramah}/SKILL.md +7 -1
- package/skills/astro-framework-expert/SKILL.md +200 -0
- package/skills/async-queue-temporal-expert/SKILL.md +210 -24
- package/skills/authentication-identity-expert/SKILL.md +278 -275
- package/skills/auto-doc-updater/SKILL.md +7 -1
- package/skills/autonomous-chaos-monkey/SKILL.md +63 -63
- package/skills/autonomous-red-teamer/SKILL.md +172 -28
- package/skills/autonomous-tdd-debugger/SKILL.md +70 -64
- package/skills/background-jobs-queue-expert/SKILL.md +235 -0
- package/skills/biome-linter-formatter-expert/SKILL.md +89 -0
- package/skills/blockchain-web3-expert/SKILL.md +115 -0
- package/skills/bootstrap-to-modern/SKILL.md +9 -6
- package/skills/brainstorming/SKILL.md +58 -50
- package/skills/browser-automation-expert/SKILL.md +197 -21
- package/skills/bun-runtime-expert/SKILL.md +7 -1
- package/skills/chatbot-messaging-expert/SKILL.md +114 -0
- package/skills/ci-cd-devops-architect/SKILL.md +45 -36
- package/skills/cloud-hosting-expert/SKILL.md +7 -1
- package/skills/coderabbit/SKILL.md +7 -1
- package/skills/compliance-gdpr-privacy-expert/SKILL.md +85 -0
- package/skills/cron-scheduler-expert/SKILL.md +303 -297
- package/skills/data-pipeline-etl-expert/SKILL.md +84 -0
- package/skills/data-telemetry-expert/SKILL.md +7 -1
- package/skills/data-visualization-expert/SKILL.md +154 -0
- package/skills/database-migration-versioning-expert/SKILL.md +90 -0
- package/skills/database-orm-expert/SKILL.md +13 -3
- package/skills/dependency-upgrade-migrator/SKILL.md +300 -294
- package/skills/design-system-architect/SKILL.md +278 -259
- package/skills/desktop-electron-expert/SKILL.md +128 -0
- package/skills/documentation-site-expert/SKILL.md +59 -0
- package/skills/doku-mcp-server/SKILL.md +7 -1
- package/skills/doku-payment-gateway/SKILL.md +7 -1
- package/skills/domain-driven-design-expert/SKILL.md +82 -0
- package/skills/e2e-testing-expert/SKILL.md +7 -1
- package/skills/ecommerce-expert/SKILL.md +87 -0
- package/skills/edge-serverless-db-expert/SKILL.md +98 -42
- package/skills/email-notification-expert/SKILL.md +367 -361
- package/skills/error-resilience-expert/SKILL.md +485 -479
- package/skills/event-driven-architect/SKILL.md +7 -1
- package/skills/feature-flag-analytics-expert/SKILL.md +65 -45
- package/skills/file-upload-media-expert/SKILL.md +436 -430
- package/skills/firebase-security-expert/SKILL.md +7 -1
- package/skills/form-validation-expert/SKILL.md +406 -400
- package/skills/fullstack-expert/SKILL.md +60 -1
- package/skills/gemini-agent-booster/SKILL.md +173 -135
- package/skills/geospatial-maps-expert/SKILL.md +80 -0
- package/skills/global-a11y-i18n-expert/SKILL.md +7 -1
- package/skills/glsl-shader-expert/SKILL.md +106 -100
- package/skills/go-programming-expert/SKILL.md +21 -15
- package/skills/graph-rag-knowledge-expert/SKILL.md +159 -0
- package/skills/graphql-apollo-expert/SKILL.md +113 -107
- package/skills/headless-cms-expert/SKILL.md +181 -0
- package/skills/hig/SKILL.md +7 -1
- package/skills/js-backend-expert/SKILL.md +218 -216
- package/skills/legacy-code-translator/SKILL.md +70 -64
- package/skills/local-slm-edge-ai-expert/SKILL.md +167 -0
- package/skills/logging-error-tracking-expert/SKILL.md +343 -337
- package/skills/mcp-client-orchestrator/SKILL.md +75 -69
- package/skills/mcp-server-architect/SKILL.md +294 -194
- package/skills/micro-frontend-architect/SKILL.md +111 -105
- package/skills/mobile-expo-expert/SKILL.md +8 -2
- package/skills/mobile-push-notification-expert/SKILL.md +70 -50
- package/skills/modern-css-native-expert/SKILL.md +189 -0
- package/skills/monday-design-aesthetic/SKILL.md +7 -1
- package/skills/monorepo-architect/SKILL.md +7 -1
- package/skills/mpa-orchestrator/SKILL.md +20 -1
- package/skills/multi-agent-orchestration/SKILL.md +254 -234
- package/skills/multiple-entry-points/SKILL.md +37 -1
- package/skills/mvc-expert/SKILL.md +7 -1
- package/skills/n8n-automation-expert/SKILL.md +89 -0
- package/skills/nextjs-app-router-expert/SKILL.md +148 -0
- package/skills/openapi-swagger-codegen-expert/SKILL.md +67 -0
- package/skills/payment-gateway-expert/SKILL.md +85 -1
- package/skills/pdf-document-generation-expert/SKILL.md +91 -0
- package/skills/performance-web-vitals/SKILL.md +7 -1
- package/skills/post-quantum-crypto-migrator/SKILL.md +57 -57
- package/skills/prd-architect/SKILL.md +7 -1
- package/skills/proactive-background-watcher/SKILL.md +67 -61
- package/skills/production-ready-hardener/SKILL.md +461 -455
- package/skills/project-context-mapper/SKILL.md +84 -78
- package/skills/pwa-offline-first-expert/SKILL.md +185 -0
- package/skills/python-programming-expert/SKILL.md +407 -401
- package/skills/rate-limit-abuse-prevention/SKILL.md +376 -370
- package/skills/realtime-collaboration-expert/SKILL.md +55 -1
- package/skills/rich-text-editor-expert/SKILL.md +177 -0
- package/skills/rust-programming-expert/SKILL.md +7 -1
- package/skills/saas-billing/SKILL.md +7 -1
- package/skills/saas-multi-tenant/SKILL.md +7 -1
- package/skills/saas-mvp-launcher/SKILL.md +20 -1
- package/skills/saas-transformer/SKILL.md +499 -488
- package/skills/scalability-clean-code/SKILL.md +7 -1
- package/skills/search-engine-expert/SKILL.md +89 -0
- package/skills/secure-fuzz-testing/SKILL.md +7 -1
- package/skills/self-evolving-memory-graph/SKILL.md +90 -74
- package/skills/self-healing-cloud-orchestrator/SKILL.md +57 -57
- package/skills/senior-frontend/SKILL.md +141 -161
- package/skills/seo/SKILL.md +41 -17
- package/skills/session-context-loader/SKILL.md +82 -76
- package/skills/session-handoff-resume/SKILL.md +7 -1
- package/skills/{skill_baru → skill-baru}/SKILL.md +8 -2
- package/skills/solidjs-expert/SKILL.md +80 -0
- package/skills/spa-orchestrator/SKILL.md +20 -1
- package/skills/sse-websocket-streaming-expert/SKILL.md +93 -0
- package/skills/state-management-expert/SKILL.md +7 -1
- package/skills/supabase-migration/SKILL.md +47 -1
- package/skills/supabase-security-expert/SKILL.md +7 -1
- package/skills/svelte-sveltekit-expert/SKILL.md +91 -0
- package/skills/svg-animation-motion-expert/SKILL.md +115 -0
- package/skills/tailwind-expert/SKILL.md +88 -136
- package/skills/tanstack-query-expert/SKILL.md +7 -1
- package/skills/tauri-expert/SKILL.md +7 -1
- package/skills/token-saver/SKILL.md +1 -1
- package/skills/typescript-expert/SKILL.md +12 -6
- package/skills/ui-components-expert/SKILL.md +165 -279
- package/skills/ui-ux-pro-max/SKILL.md +23 -3
- package/skills/vector-db-rag-expert/SKILL.md +175 -19
- package/skills/vibe-code-gardener/SKILL.md +1 -1
- package/skills/visual-qa-vision-agent/SKILL.md +70 -64
- package/skills/voice-ai-realtime-agent/SKILL.md +202 -0
- package/skills/vue-frontend-expert/SKILL.md +131 -125
- package/skills/wasm-edge-computing-expert/SKILL.md +97 -0
- package/skills/web-3d-graphics-expert/SKILL.md +136 -130
- package/skills/web-game-engine-expert/SKILL.md +101 -95
- package/skills/web-scraper/SKILL.md +157 -207
- package/skills/website-design-cloner/SKILL.md +179 -173
- package/skills/webxr-ar-vr-expert/SKILL.md +122 -116
- package/skills/wordpress-headless-expert/SKILL.md +144 -0
- package/skills/zero-to-prod-orchestrator/SKILL.md +52 -27
- package/skills/zero-trust-secret-vault/SKILL.md +87 -39
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/workflows/publish.yml +0 -20
- package/CONTRIBUTING.md +0 -199
- package/SECURITY.md +0 -21
- package/banner.png +0 -0
- package/skills/autonomous-swarm-director/SKILL.md +0 -69
- package/skills/hyper-context-synthesizer/SKILL.md +0 -55
- package/skills/llm-cost-arbitrage-router/SKILL.md +0 -59
- package/skills/senior-fullstack/SKILL.md +0 -167
- package/skills/senior-fullstack/references/architecture_patterns.md +0 -160
- package/skills/senior-fullstack/references/development_workflows.md +0 -222
- package/skills/senior-fullstack/references/tech_stack_guide.md +0 -190
- package/skills/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
- package/skills/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
- package/skills/senior-fullstack/scripts/project_scaffolder.py +0 -114
- package/skills/seo-aeo-landing-page-writer/SKILL.md +0 -97
- package/skills/seo-geo/SKILL.md +0 -188
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-310.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
- package/skills/ui_ux_expert/SKILL.md +0 -125
- package/vibes-swarm-demo.gif +0 -0
|
@@ -1,96 +1,102 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: web-game-engine-expert
|
|
3
|
-
description: "Expert guide for web-based game development. Covers Entity Component System (ECS) architectures, physics engines (Rapier, Havok, Cannon-es), collision detection, and game loop optimization."
|
|
1
|
+
---
|
|
2
|
+
name: web-game-engine-expert
|
|
3
|
+
description: "Expert guide for web-based game development. Covers Entity Component System (ECS) architectures, physics engines (Rapier, Havok, Cannon-es), collision detection, and game loop optimization."
|
|
4
4
|
author: "Roedy Rustam"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Web Game Engine Expert (Physics & ECS)
|
|
8
|
-
|
|
9
|
-
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<a name="english"></a>
|
|
14
|
-
## English
|
|
15
|
-
|
|
16
|
-
###
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- `
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
###
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Web Game Engine Expert (Physics & ECS)
|
|
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
|
+
Production-grade guidance for building highly interactive 3D simulations and web games. Focuses on integrating modern WebAssembly-based **Physics Engines** (Havok, Rapier, Cannon-es) and structuring application state using the **Entity Component System (ECS)** pattern (e.g., bitECS, Miniplex).
|
|
21
|
+
|
|
22
|
+
### Trigger Conditions
|
|
23
|
+
Activate this skill when the user is:
|
|
24
|
+
- Adding physics (gravity, collisions, rigid bodies) to a 3D scene (Three.js/Babylon.js).
|
|
25
|
+
- Dealing with performance issues in web games with thousands of objects.
|
|
26
|
+
- Structuring a complex game or simulation architecture.
|
|
27
|
+
- Using `@dimforge/rapier3d`, `havok`, or `cannon-es`.
|
|
28
|
+
|
|
29
|
+
### Core Concepts
|
|
30
|
+
|
|
31
|
+
#### 1. Physics Engine Integration
|
|
32
|
+
Avoid calculating collisions manually in JavaScript. Use a dedicated physics engine.
|
|
33
|
+
- **Babylon.js + Havok:** Babylon.js natively supports Havok Physics (the same engine used in AAA titles like Zelda BotW).
|
|
34
|
+
- **Three.js / React Three Fiber + Rapier:** Use `@react-three/rapier` for seamless integration in R3F. It is written in Rust and compiled to WebAssembly.
|
|
35
|
+
|
|
36
|
+
```tsx
|
|
37
|
+
// React Three Fiber + Rapier Example
|
|
38
|
+
import { Physics, RigidBody } from '@react-three/rapier';
|
|
39
|
+
|
|
40
|
+
function GameScene() {
|
|
41
|
+
return (
|
|
42
|
+
<Physics gravity={[0, -9.81, 0]}>
|
|
43
|
+
{/* Falling Object */}
|
|
44
|
+
<RigidBody colliders="box" position={[0, 10, 0]}>
|
|
45
|
+
<mesh>
|
|
46
|
+
<boxGeometry />
|
|
47
|
+
<meshStandardMaterial color="hotpink" />
|
|
48
|
+
</mesh>
|
|
49
|
+
</RigidBody>
|
|
50
|
+
|
|
51
|
+
{/* Static Floor */}
|
|
52
|
+
<RigidBody type="fixed" colliders="cuboid">
|
|
53
|
+
<mesh position={[0, -1, 0]}>
|
|
54
|
+
<boxGeometry args={[10, 1, 10]} />
|
|
55
|
+
<meshStandardMaterial color="gray" />
|
|
56
|
+
</mesh>
|
|
57
|
+
</RigidBody>
|
|
58
|
+
</Physics>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
#### 2. Entity Component System (ECS)
|
|
64
|
+
Traditional Object-Oriented Programming (OOP) can cause performance bottlenecks in games due to poor cache locality. ECS stores data in contiguous memory arrays (Components) and processes them in tight loops (Systems).
|
|
65
|
+
- Use **bitECS** for extreme performance (uses TypedArrays).
|
|
66
|
+
- Use **Miniplex** for an easier, developer-friendly React integration.
|
|
67
|
+
|
|
68
|
+
### Best Practices
|
|
69
|
+
- **Decouple Logic from Rendering:** The physics engine should update at a fixed timestep (e.g., 60Hz), while rendering should happen at the screen's refresh rate (e.g., 144Hz) using interpolation to prevent stuttering.
|
|
70
|
+
- **Use Simple Colliders:** Never use complex mesh colliders (Convex/Trimesh) for moving objects unless absolutely necessary. Use primitives (Spheres, Boxes, Capsules).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
### Integration with Other Skills (MANDATORY)
|
|
75
|
+
This skill works best when combined with:
|
|
76
|
+
- `web-3d-graphics-expert` — For the visual rendering of the physics world.
|
|
77
|
+
- `webxr-ar-vr-expert` — For adding grabbable physics objects in VR space.
|
|
78
|
+
- `realtime-collaboration-expert` — For synchronizing physics state across multiple players using WebRTC.
|
|
79
|
+
|
|
80
|
+
### Referenced By Orchestrators (MANDATORY)
|
|
81
|
+
- `brainstorming` — Add to "3D & Graphics" or "Game Development".
|
|
82
|
+
- `zero-to-prod-orchestrator` — Phase 5 (Frontend / Simulation).
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
<a name="bahasa-indonesia"></a>
|
|
87
|
+
## Bahasa Indonesia
|
|
88
|
+
|
|
89
|
+
### Integrasi Orkestrasi
|
|
90
|
+
Terhubung dan mengorkestrasi skill domain yang relevan seperti `brainstorming`, `zero-to-prod-orchestrator`, dan `project-context-mapper` untuk memastikan eksekusi yang kohesif.
|
|
91
|
+
|
|
92
|
+
### Deskripsi
|
|
93
|
+
Panduan pengembangan *game* dan simulasi 3D di web. Mencakup integrasi *Physics Engine* berbasis WebAssembly (Rapier, Havok, Cannon) dan arsitektur *Entity Component System* (ECS).
|
|
94
|
+
|
|
95
|
+
### Kondisi Pemicu
|
|
96
|
+
- Saat menambahkan gravitasi, tabrakan (collision), atau benda padat (rigid body) ke dalam aplikasi 3D.
|
|
97
|
+
- Saat membuat game web yang membutuhkan performa tinggi dengan ribuan entitas.
|
|
98
|
+
|
|
99
|
+
### Panduan Singkat
|
|
100
|
+
- **Pilih Mesin Fisika:** Gunakan **Havok** jika menggunakan Babylon.js. Gunakan **Rapier** (`@react-three/rapier`) jika menggunakan Three.js/R3F.
|
|
101
|
+
- **Gunakan Collider Sederhana:** Untuk objek bergerak, selalu gunakan *primitive colliders* (Kotak, Bola, Kapsul) alih-alih *mesh collider* agar perhitungan CPU/WASM tetap ringan.
|
|
102
|
+
- **Pola ECS (Entity Component System):** Untuk game kompleks, pisahkan logika dan data menggunakan arsitektur ECS (seperti `miniplex` atau `bitECS`) untuk memaksimalkan performa *cache* memori.
|
|
@@ -1,207 +1,157 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: web-scraper
|
|
3
|
-
description: "Smart web data extraction
|
|
4
|
-
author: "Roedy Rustam"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Web Scraper Expert (2026 Edition)
|
|
8
|
-
|
|
9
|
-
[English](#english) | [Bahasa Indonesia](#bahasa-indonesia)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<a name="english"></a>
|
|
14
|
-
## English
|
|
15
|
-
|
|
16
|
-
###
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
async def
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
###
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
- [ ]
|
|
158
|
-
- [ ] Implement rate limiting — minimum 1-2 seconds between requests.
|
|
159
|
-
- [ ] Use descriptive `User-Agent` header with contact email.
|
|
160
|
-
- [ ] Cache results to avoid repeated requests.
|
|
161
|
-
- [ ] Prefer public APIs or official data feeds when available.
|
|
162
|
-
- [ ] Do not scrape personal/private data without consent.
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
<a name="bahasa-indonesia"></a>
|
|
167
|
-
## Bahasa Indonesia
|
|
168
|
-
|
|
169
|
-
### Deskripsi
|
|
170
|
-
Ekstraksi data web yang cerdas menggunakan strategi scraping modern — **Firecrawl** (ekstraksi terstruktur siap-LLM), **Jina Reader API** (Markdown bersih dari URL manapun), **Crawl4AI** (scraping Python async), **Playwright** (otomasi browser), dan **BeautifulSoup** (parsing HTML ringan). Mendukung paginasi, konten dinamis, ekspor terstruktur, dan ekstraksi data bertenaga AI.
|
|
171
|
-
|
|
172
|
-
### Kondisi Pemicu
|
|
173
|
-
- Mengekstrak data terstruktur dari website untuk analisis, data pelatihan, atau pipeline konten.
|
|
174
|
-
- Scraping halaman yang dirender JavaScript secara dinamis (SPA, aplikasi React).
|
|
175
|
-
- Mengonversi halaman web menjadi Markdown bersih untuk konteks LLM atau pipeline RAG.
|
|
176
|
-
- Mempelajari atau menduplikasi desain UI, template, dan komponen situs web langsung dari URL (Delegasikan ke `website-design-cloner`).
|
|
177
|
-
- Membangun pipeline data otomatis yang melakukan scraping, transformasi, dan penyimpanan.
|
|
178
|
-
- Mengekstrak data dalam skala besar dengan rate limiting dan rotasi proxy.
|
|
179
|
-
|
|
180
|
-
### Panduan Pemilihan Strategi
|
|
181
|
-
|
|
182
|
-
| Strategi | Tool | Terbaik Untuk | Perlu JS |
|
|
183
|
-
|---|---|---|---|
|
|
184
|
-
| **API Terkelola** | Firecrawl / Jina Reader | Konten siap LLM, Markdown bersih | Ditangani |
|
|
185
|
-
| **Python Async** | Crawl4AI | Volume tinggi, ekstraksi AI | Opsional |
|
|
186
|
-
| **Otomasi Browser** | Playwright | SPA kompleks, halaman butuh auth | ✅ |
|
|
187
|
-
| **HTML Ringan** | BeautifulSoup + httpx | HTML statis, ekstraksi cepat | ❌ |
|
|
188
|
-
|
|
189
|
-
### Firecrawl — Scraping Web Siap LLM
|
|
190
|
-
Firecrawl mengonversi URL apapun menjadi Markdown bersih siap LLM dengan satu panggilan API. Mendukung crawling seluruh situs, ekstraksi terstruktur berbasis skema JSON, dan penghapusan konten yang tidak relevan (navigasi, footer, iklan).
|
|
191
|
-
|
|
192
|
-
### Jina Reader API — Markdown Bersih dari URL Manapun
|
|
193
|
-
Jina Reader (`r.jina.ai/{url}`) mengonversi halaman web manapun menjadi Markdown yang dioptimalkan untuk LLM. Jina Search (`s.jina.ai/{query}`) melakukan pencarian web dan mengembalikan hasilnya sebagai Markdown.
|
|
194
|
-
|
|
195
|
-
### Crawl4AI — Web Scraper Python Async
|
|
196
|
-
Crawl4AI mendukung caching hasil, ekstraksi Markdown yang dioptimalkan AI, dan konfigurasi browser yang fleksibel untuk scraping konten dinamis.
|
|
197
|
-
|
|
198
|
-
### Playwright — Halaman Dinamis Kompleks
|
|
199
|
-
Gunakan Playwright untuk scraping SPA yang memerlukan eksekusi JavaScript, menunggu elemen dinamis, atau interaksi dengan halaman (klik, scroll, isi form).
|
|
200
|
-
|
|
201
|
-
### Checklist Scraping Etis
|
|
202
|
-
- [ ] Periksa `robots.txt` dan hormati aturan `Disallow`.
|
|
203
|
-
- [ ] Implementasikan rate limiting — minimal 1-2 detik antar permintaan.
|
|
204
|
-
- [ ] Gunakan header `User-Agent` deskriptif dengan email kontak.
|
|
205
|
-
- [ ] Cache hasil untuk menghindari permintaan berulang.
|
|
206
|
-
- [ ] Utamakan API publik atau feed data resmi jika tersedia.
|
|
207
|
-
- [ ] Jangan scraping data pribadi/privat tanpa izin.
|
|
1
|
+
---
|
|
2
|
+
name: web-scraper
|
|
3
|
+
description: "Smart agentic web data extraction with multi-strategy scraping (Crawl4AI v4, Firecrawl), LLM extraction loops, anti-bot bypass, and structured export / Ekstraksi data web cerdas dan agentic dengan scraping multi-strategi (Crawl4AI v4, Firecrawl), ekstraksi LLM, bypass anti-bot, dan ekspor terstruktur."
|
|
4
|
+
author: "Roedy Rustam"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agentic Web Scraper Expert (2026 Edition)
|
|
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 `browser-automation-expert`, `ai-llm-integration-expert`, `brainstorming`, and `zero-to-prod-orchestrator` to ensure cohesive agentic execution.
|
|
18
|
+
|
|
19
|
+
### Description
|
|
20
|
+
Advanced Agentic Web Scraping utilizing modern multi-strategy data extraction. Leverages **Crawl4AI v4** and **Firecrawl** to convert raw DOMs into LLM-friendly Markdown. Implements Agentic Extraction loops where the LLM guides the scraper dynamically based on page state. Incorporates strategies for bypassing anti-bot measures (Cloudflare Turnstile, Datadome) and navigating dynamic Shadow DOMs.
|
|
21
|
+
|
|
22
|
+
### Trigger Conditions
|
|
23
|
+
- Extracting structured data from websites for analysis, training data, or content pipelines.
|
|
24
|
+
- Scraping dynamic JavaScript-rendered pages and complex SPAs.
|
|
25
|
+
- Converting web pages to clean Markdown for LLM context or RAG pipelines.
|
|
26
|
+
- Dealing with anti-bot protections or complex Shadow DOM architectures during scraping.
|
|
27
|
+
- Implementing an automated agentic data extraction loop.
|
|
28
|
+
|
|
29
|
+
### Extracting DOM into LLM-Friendly Markdown
|
|
30
|
+
Use **Crawl4AI v4** for high-performance async extraction and **Firecrawl** for seamless LLM-ready conversion.
|
|
31
|
+
|
|
32
|
+
**Crawl4AI v4 (Async Python):**
|
|
33
|
+
```python
|
|
34
|
+
import asyncio
|
|
35
|
+
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode
|
|
36
|
+
|
|
37
|
+
async def extract_markdown(url: str):
|
|
38
|
+
config = BrowserConfig(headless=True, bypass_csp=True)
|
|
39
|
+
run_config = CrawlerRunConfig(
|
|
40
|
+
cache_mode=CacheMode.ENABLED,
|
|
41
|
+
remove_overlay_elements=True,
|
|
42
|
+
word_count_threshold=50
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
async with AsyncWebCrawler(config=config) as crawler:
|
|
46
|
+
result = await crawler.arun(url=url, config=run_config)
|
|
47
|
+
# Returns clean, AI-optimized markdown ready for LLM consumption
|
|
48
|
+
return result.markdown.fit_markdown
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Firecrawl (Managed API):**
|
|
52
|
+
```python
|
|
53
|
+
from firecrawl import FirecrawlApp
|
|
54
|
+
from pydantic import BaseModel
|
|
55
|
+
|
|
56
|
+
app = FirecrawlApp(api_key="fc-xxxx")
|
|
57
|
+
|
|
58
|
+
class ExtractionSchema(BaseModel):
|
|
59
|
+
title: str
|
|
60
|
+
content: str
|
|
61
|
+
key_metrics: list[str]
|
|
62
|
+
|
|
63
|
+
# Single API call to extract structured data based on JSON schema
|
|
64
|
+
result = app.scrape_url(
|
|
65
|
+
"https://example.com/data",
|
|
66
|
+
formats=["extract", "markdown"],
|
|
67
|
+
extract={"schema": ExtractionSchema.model_json_schema()}
|
|
68
|
+
)
|
|
69
|
+
print(result.markdown) # Clean markdown
|
|
70
|
+
print(result.extract) # Structured JSON
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Anti-Bot Bypass & Shadow DOMs
|
|
74
|
+
Scraping modern web apps requires bypassing anti-bot measures like Cloudflare Turnstile and Datadome, as well as accessing deeply nested elements.
|
|
75
|
+
|
|
76
|
+
1. **Anti-Bot Bypass (Cloudflare Turnstile, Datadome):**
|
|
77
|
+
- **Residential Proxies:** Rotate high-quality residential IPs to avoid datacenter IP bans.
|
|
78
|
+
- **Browser Fingerprinting:** Use tools like `playwright-stealth` or specialized stealth browsers (e.g., Undetected ChromeDriver, Curl-Impersonate) to mask automated fingerprints (WebGL, Canvas, User-Agent).
|
|
79
|
+
- **Human-like Interaction:** Introduce random delays, simulate realistic mouse movements, and handle CAPTCHAs via third-party solving services only when necessary.
|
|
80
|
+
2. **Dynamic Shadow DOMs:**
|
|
81
|
+
- Use CSS piercing selectors or JavaScript execution to penetrate the Shadow Root.
|
|
82
|
+
- Example (Playwright): `await page.locator('my-web-component >> css=.internal-element').text_content()`
|
|
83
|
+
- Recursively traverse the DOM tree injecting scripts to extract content from encapsulated components.
|
|
84
|
+
|
|
85
|
+
### Agentic Extraction Loops
|
|
86
|
+
Implement an autonomous loop where an LLM guides the scraper based on the current page state, rather than relying on brittle CSS selectors.
|
|
87
|
+
|
|
88
|
+
1. **Observe:** The scraper extracts the current DOM into clean Markdown.
|
|
89
|
+
2. **Analyze:** The LLM analyzes the Markdown to identify necessary data or the next interaction step (e.g., "Click the 'Load More' button").
|
|
90
|
+
3. **Act:** The LLM issues a command (extract data, navigate, click, fill form).
|
|
91
|
+
4. **Loop:** Repeat until the extraction goal is met.
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
async def agentic_scrape_loop(url: str, goal: str):
|
|
95
|
+
current_url = url
|
|
96
|
+
while True:
|
|
97
|
+
markdown_content = await extract_markdown(current_url)
|
|
98
|
+
# LLM analyzes state and decides next action
|
|
99
|
+
action = await llm_decide_action(markdown_content, goal)
|
|
100
|
+
|
|
101
|
+
if action.type == "COMPLETE":
|
|
102
|
+
return action.extracted_data
|
|
103
|
+
elif action.type == "CLICK":
|
|
104
|
+
await click_element(action.target_selector)
|
|
105
|
+
elif action.type == "NAVIGATE":
|
|
106
|
+
current_url = action.new_url
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Ethical Scraping Checklist
|
|
110
|
+
- [ ] Check `robots.txt` and respect `Disallow` rules.
|
|
111
|
+
- [ ] Implement rate limiting.
|
|
112
|
+
- [ ] Use descriptive `User-Agent` headers.
|
|
113
|
+
- [ ] Do not scrape personal/private data without consent.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
<a name="bahasa-indonesia"></a>
|
|
118
|
+
## Bahasa Indonesia
|
|
119
|
+
|
|
120
|
+
### Integrasi Orkestrasi
|
|
121
|
+
Terhubung dan mengorkestrasi skill domain yang relevan seperti `browser-automation-expert`, `ai-llm-integration-expert`, `brainstorming`, dan `zero-to-prod-orchestrator` untuk memastikan eksekusi agentic yang kohesif.
|
|
122
|
+
|
|
123
|
+
### Deskripsi
|
|
124
|
+
Scraping Web Agentic tingkat lanjut menggunakan ekstraksi data multi-strategi modern. Memanfaatkan **Crawl4AI v4** dan **Firecrawl** untuk mengubah DOM mentah menjadi Markdown yang ramah LLM. Mengimplementasikan loop Ekstraksi Agentic di mana LLM memandu scraper secara dinamis berdasarkan status halaman. Menggabungkan strategi untuk melewati tindakan anti-bot (Cloudflare Turnstile, Datadome) dan menavigasi Shadow DOM yang dinamis.
|
|
125
|
+
|
|
126
|
+
### Kondisi Pemicu
|
|
127
|
+
- Mengekstrak data terstruktur dari situs web untuk analisis, data pelatihan, atau pipeline konten.
|
|
128
|
+
- Scraping halaman yang dirender JavaScript secara dinamis dan SPA kompleks.
|
|
129
|
+
- Mengonversi halaman web menjadi Markdown bersih untuk konteks LLM atau pipeline RAG.
|
|
130
|
+
- Menghadapi perlindungan anti-bot atau arsitektur Shadow DOM yang kompleks saat scraping.
|
|
131
|
+
- Mengimplementasikan loop ekstraksi data agentic otomatis.
|
|
132
|
+
|
|
133
|
+
### Mengekstrak DOM menjadi Markdown Ramah LLM
|
|
134
|
+
Gunakan **Crawl4AI v4** untuk ekstraksi async berperforma tinggi dan **Firecrawl** untuk konversi siap LLM yang mulus. (Lihat contoh kode di bagian bahasa Inggris).
|
|
135
|
+
|
|
136
|
+
### Bypass Anti-Bot & Shadow DOM
|
|
137
|
+
1. **Bypass Anti-Bot (Cloudflare Turnstile, Datadome):**
|
|
138
|
+
- **Proxy Residensial:** Rotasi IP residensial berkualitas tinggi untuk menghindari pemblokiran IP datacenter.
|
|
139
|
+
- **Browser Fingerprinting:** Gunakan alat seperti `playwright-stealth` atau browser stealth khusus untuk menyembunyikan sidik jari otomatis.
|
|
140
|
+
- **Interaksi Mirip Manusia:** Tambahkan penundaan acak, simulasikan gerakan mouse yang realistis.
|
|
141
|
+
2. **Shadow DOM Dinamis:**
|
|
142
|
+
- Gunakan selektor penembus CSS atau eksekusi JavaScript untuk menembus Shadow Root.
|
|
143
|
+
- Telusuri pohon DOM secara rekursif dengan menyuntikkan skrip untuk mengekstrak konten.
|
|
144
|
+
|
|
145
|
+
### Loop Ekstraksi Agentic
|
|
146
|
+
Implementasikan loop otonom di mana LLM memandu scraper berdasarkan status halaman saat ini, bukan bergantung pada selektor CSS yang rentan rusak.
|
|
147
|
+
|
|
148
|
+
1. **Observasi:** Scraper mengekstrak DOM saat ini menjadi Markdown yang bersih.
|
|
149
|
+
2. **Analisis:** LLM menganalisis Markdown untuk mengidentifikasi data yang diperlukan atau langkah interaksi selanjutnya (misal: "Klik tombol 'Muat Lebih Banyak'").
|
|
150
|
+
3. **Aksi:** LLM mengeluarkan perintah (ekstrak data, navigasi, klik, isi form).
|
|
151
|
+
4. **Loop:** Ulangi hingga tujuan ekstraksi tercapai.
|
|
152
|
+
|
|
153
|
+
### Checklist Scraping Etis
|
|
154
|
+
- [ ] Periksa `robots.txt` dan hormati aturan `Disallow`.
|
|
155
|
+
- [ ] Implementasikan rate limiting.
|
|
156
|
+
- [ ] Gunakan header `User-Agent` yang deskriptif.
|
|
157
|
+
- [ ] Jangan scraping data pribadi/privat tanpa izin.
|