AgentSkillsCN

Platform Browser Extensions

浏览器扩展平台

SKILL.md

Browser Extensions

Rules

PriorityImpactReferenceNameDescriptionPrefixCondition
1CRITICAL1-browser-extension-project-structureProject Structureโครงสร้างโปรเจกต์ browser extension ที่ถูกต้องbrowser-ext-เมื่อสร้างโปรเจกต์ browser extension ใหม่
2CRITICAL2-browser-extension-manifestManifest Configurationการกำหนดค่า manifest ให้ถูกต้องbrowser-ext-เมื่อกำหนดค่า manifest
3HIGH3-browser-extension-entrypointsEntrypointsการใช้งาน entrypoints ใน WXTbrowser-ext-เมื่อสร้าง entrypoints ใหม่
4HIGH4-browser-extension-content-scriptsContent Scriptsการใช้งาน content scripts ที่ถูกต้องbrowser-ext-เมื่อสร้าง content scripts
5HIGH5-browser-extension-backgroundBackground Scriptsการใช้งาน background scripts ที่ถูกต้องbrowser-ext-เมื่อสร้าง background scripts
6HIGH6-browser-extension-permissionsPermissionsการจัดการ permissions ที่ปลอดภัยbrowser-ext-เมื่อกำหนด permissions
7MEDIUM7-browser-extension-storageStorage APIการใช้งาน storage API ที่ถูกต้องbrowser-ext-เมื่อใช้ storage
8MEDIUM8-browser-extension-messagingMessagingการสื่อสารระหว่าง componentsbrowser-ext-เมื่อสื่อสารระหว่าง components
9MEDIUM9-browser-extension-uiUI Componentsการสร้าง UI สำหรับ extensionsbrowser-ext-เมื่อสร้าง UI
10LOW10-browser-extension-publishingPublishingการ publish extensions ไปยัง storesbrowser-ext-เมื่อ publish extensions

Scripts

PriorityImpactReferenceNameDescriptionPrefixCondition
1CRITICAL1-browser-ext-initInit Projectเริ่มต้นโปรเจกต์ browser extension ใหม่browser-ext-เมื่อสร้างโปรเจกต์ใหม่
2HIGH2-browser-ext-devDev Modeเริ่มโหมด developmentbrowser-ext-เมื่อต้องการพัฒนา
3HIGH3-browser-ext-buildBuild ExtensionBuild extension สำหรับ productionbrowser-ext-เมื่อต้องการ build
4MEDIUM4-browser-ext-zipZip ExtensionZip extension สำหรับ publishingbrowser-ext-เมื่อต้องการ zip
5MEDIUM5-browser-ext-publishPublish ExtensionPublish extension ไปยัง storesbrowser-ext-เมื่อต้องการ publish

Overview

Browser Extensions คือโปรแกรมเสริมที่ทำงานบน web browsers ช่วยเพิ่มความสามารถของ browser และปรับปรุงประสบการณ์การใช้งานของผู้ใช้

WXT เป็น framework สำหรับสร้าง web extensions ที่รองรับหลาย browser (Chrome, Firefox, Edge, Safari) และทั้ง MV2 และ MV3 มีคุณสมบัติหลักๆ ดังนี้:

  • Multi-browser Support: รองรับ Chrome, Firefox, Edge, Safari และ Chromium browsers
  • MV2 & MV3: สร้าง extensions สำหรับทั้ง Manifest V2 และ V3
  • Fast HMR: Hot Module Replacement ที่รวดเร็วสำหรับ UI development
  • File-based Entrypoints: Manifest ถูกสร้างจากไฟล์ในโปรเจกต์
  • TypeScript: รองรับ TypeScript โดย default
  • Auto-imports: Nuxt-like auto-imports เพื่อเร่งการพัฒนา
  • Frontend Framework Agnostic: รองรับหลาย frontend frameworks
  • Module System: Reuse code ได้หลาย extensions
  • Automated Publishing: Zip, upload, submit, และ publish extensions อัตโนมัติ
  • Bundle Analysis: Tools สำหรับวิเคราะห์ bundle size

Project Structure

โครงสร้างโปรเจกต์ browser extension ที่ใช้ WXT:

code
📂 {rootDir}/
├── .output/           # Build artifacts
├── .wxt/              # Generated by WXT (TS config)
├── assets/            # CSS, images, assets
├── components/        # UI components (auto-imported)
├── composables/      # Composable functions (auto-imported)
├── entrypoints/      # Entrypoints ทั้งหมด
│   ├── background.ts  # Background script
│   ├── popup.html     # Popup page
│   ├── options.html   # Options page
│   ├── content.ts     # Content script
│   └── ...
├── hooks/            # React/Solid hooks (auto-imported)
├── modules/          # WXT modules
├── public/           # Static files
├── utils/            # Utility functions (auto-imported)
├── .env              # Environment variables
├── .env.publish      # Environment variables for publishing
├── app.config.ts     # Runtime config
├── package.json      # Package manager file
├── tsconfig.json     # TypeScript config
├── web-ext.config.ts # Browser startup config
└── wxt.config.ts     # Main WXT config

Entrypoints

WXT ใช้ไฟล์ใน entrypoints/ เป็น inputs เมื่อ bundle extension แต่ละ entrypoint ถูกกำหนดจากชื่อไฟล์หรือโฟลเดอร์:

Background Scripts

  • background.ts หรือ background/index.ts - Background script/service worker

Pages

  • popup.html หรือ popup/index.html - Popup page
  • options.html หรือ options/index.html - Options page
  • newtab.html หรือ newtab/index.html - New tab page
  • history.html หรือ history/index.html - History page
  • bookmarks.html หรือ bookmarks/index.html - Bookmarks page
  • devtools.html หรือ devtools/index.html - Devtools page
  • sidepanel.html หรือ sidepanel/index.html - Side panel

Content Scripts

  • content.ts หรือ content/index.ts - Content script
  • {name}.content.ts - Named content script
  • {name}.content/index.ts - Named content script in folder

Other

  • sandbox.html หรือ sandbox/index.html - Sandboxed page
  • {name}.html - Unlisted page
  • {name}.ts - Unlisted script
  • {name}.css - Unlisted CSS

Manifest Generation

Manifest ถูกสร้างจากหลายแหล่ง:

  1. Global options ใน wxt.config.ts
  2. Entrypoint-specific options ในแต่ละ entrypoint
  3. WXT Modules
  4. Hooks

Installation

ใช้คำสั่ง init เพื่อสร้างโปรเจกต์ใหม่:

bash
pnpm dlx wxt@latest init
# หรือ
bunx wxt@latest init
# หรือ
npx wxt@latest init

Development

เริ่มโหมด development:

bash
wxt

Browser จะเปิดอัตโนมัติเมื่อเริ่ม development

Building

Build extension สำหรับ production:

bash
wxt build

Target browser เฉพาะ:

bash
wxt -b chrome
wxt -b firefox

Publishing

Publish extension ไปยัง stores:

bash
wxt publish

References