소스 정보
- 저장소
- materialofair/oh-my-codex
- 최근 소스 활동
- 2026년 4월 8일 11:15
- 감지된 SKILL.md 언어
- 영어
- 스타
- 12
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/materialofair/oh-my-codex --skill electron-driver명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
三阶段专利撰写workflow(Research → Plan → Implement),借鉴AutoPatent架构,通过 Codex CLI 原生 spawn_agent 派发 explorer/reviewer child agent 协作,确保专利质量和授权率;也用于整理或优化已有 DOCX 专利交底书、保留图片和版式资源并生成新版 Word 文档
Analyze raw prompts, identify intent and gaps, inventory the current oh-my-codex skill catalog across local/upstream sources, choose the best-fit skill chain, and output a ready-to-paste optimized prompt for Codex. Advisory role only — never executes the task itself. TRIGGER when: user says "optimize prompt", "improve my prompt", "how to write a prompt for", "help me prompt", "rewrite this prompt", or explicitly asks to enhance prompt quality. Also triggers on Chinese equivalents: "优化prompt", "改进prompt", "怎么写prompt", "帮我优化这个指令". DO NOT TRIGGER when: user wants the task executed directly, or says "just do it" / "直接做". DO NOT TRIGGER when user says "优化代码", "优化性能", "optimize performance", "optimize this code" — those are refactoring/performance tasks, not prompt optimization.
Tests Codex skill functionality with TDD approach, verifying skills work correctly through automated test scenarios and validation
SOC 직업 분류 기준
SKILL.md 표시 중
| name | electron-driver |
| description | E2E Testing & Automation for Electron Apps (Playwright) |
| model | sonnet |
| version | 0.1.0 |
| source | fork |
| checksum | e44a4288375c0d42cb602a811d60898e45f8ec8dc3eac176f5890244b7f1afc6 |
| updated_at | 2026-02-06T07:19:11.000Z |
| layer | domain |
The standard tool for End-to-End (E2E) Verification of Electron Applications.
Use this skill when you need to:
Supports two robust modes: Launch (Clean E2E Test) and Attach (Live Debugging).
--remote-debugging-port).e2e and tddelectron-driver is the Electron-specific execution backend in the testing stack:
$tdd validates core logic and IPC units first.$e2e defines end-user journey scenarios.$electron-driver executes those scenarios against real Electron runtime windows/processes.Use this skill when $e2e detects Electron context or when desktop-runtime debugging is required.
npm install playwright-core (locally preferred) or npm install -g playwright-core.node_modules/.bin/electron or the packaged app).--remote-debugging-port=<port>.| Mode | Use Case | Pros | Cons |
|---|---|---|---|
| Launch | Automated tests, reproducible tasks | Clean env, no port conflicts, auto-close | Slower start, loses current app state |
| Attach | Debugging current session, "Drive my app" | Preserves state, instant feedback | Complex setup (ports), fragile |
Create a script that launches the app.
File: test-driver.cjs (Use .cjs to avoid ESM/CJS issues)
const { _electron: electron } = require('playwright-core');
(async () => {
// Launch the app
// args: pointing to main.js or the packaged app executable
const app = await electron.launch({
args: ['.'], // Or path to executable
env: { ...process.env, NODE_ENV: 'development' }
});
try {
// Smart Window Find (ignoring DevTools)
const page = await app.firstWindow();
if (page.url().startsWith('devtools://')) {
// Loop to find real window if first one is devtools
// (Logic typically handled by waiting for first non-devtools window)
}
console.log(`Title: ${await page.title()}`);
// --- ACTION LOGIC ---
// Modern Locator API
await page.getByRole('button', { name: 'Login' }).click();
await expect(page.getByText('Welcome')).toBeVisible(); // requires @playwright/test runner or stand-alone expect
page.().();
} (err) {
.(err);
} {
app.();
}
})();
Pre-check: Ensure app is running with --remote-debugging-port=9222 (or check console for actual port).
File: attach-driver.cjs
const { chromium } = require('playwright-core');
(async () => {
try {
// Connect to CDP
const browser = await chromium.connectOverCDP('http://localhost:9222');
// Find the right page (Filter out DevTools)
const context = browser.contexts()[0];
const pages = context.pages();
const page = pages.find(p => !p.url().startsWith('devtools://'));
if (!page) throw new Error('No valid app window found');
// --- ACTION LOGIC ---
await page.locator('#submit-btn').click();
// --------------------
await browser.close(); // Disconnects (does not kill app)
} catch (e) {
console.error(e);
}
})();
page.getByRole('button', { name: 'Save' })page.getByText('Hello World')page.getByPlaceholder('Email')page.locator('.css-class')await locator.click()await locator.fill('text')await page.waitForSelector(...) (Old)await locator.waitFor() (Explicit)await locator.click() (Auto-waits)SyntaxError: Cannot use import statement... -> Save file as .mjs or change project type. Recommendation: Always save temp scripts as .cjs and use require.