brainstorming
Structured design dialogue that validates ideas before implementation begins.
external-site-profile-learning
Use this skill when investigating, adding, validating, or debugging external website profiles for the 99idea Playwright browser demo. It teaches how to probe selectors, classify failure modes, add config-driven profiles, and validate both heuristic and Gemini flows.
Full skill instructions
Use this skill when working on the target Playwright browser project (for example, the 99idea demo project).
This project is a Playwright-based browser demo that supports config-driven external site profiles through:
scenarios\site-profiles.jsonsrc\site-profiles.jssrc\planner.jssrc\llm-planner.jssrc\run-demo.jsUse this skill when the task involves any of the following:
button or [name="q"].searchInputSelector and submitSelector.loadWhen stabilizing a site, consider whether the profile should be:
A good profile should record not just how to interact with the UI, but also what the best execution path is.
Open the homepage in Playwright and inspect:
Record:
Use this decision process:
When the site is a good fit, add a data-only profile to scenarios\site-profiles.json with:
namehostnamessearchInputSelectorsubmitSelectorverificationModeexpectedUrlTemplate when URL verification is availableexecutionTier — recommended execution path: opencli, fetch, or browseropencliCommand — if opencli supports it, the exact command templateauthLevel — PUBLIC, COOKIE, HEADER, or LOGIN-GATEDKeep the behavior in code and the site data in JSON.
Recommended profile-writing rules:
verificationMode: "url" when the site has a deterministic query stringverificationMode: "title" when the search result page has a stable title changeValidate in this order:
Use commands like:
npm run validate:external:core
npm run validate:external:popup
npm run validate:external:heavy
npm run validate:external
npm run validate:external:llm:core
npm run validate:external:llm:popup
npm run validate:external:llm:heavy
npm run validate:external:llm
node src\run-demo.js --allow-external --url "https://example.com/" --goal "Search Example for AI and verify that the URL includes q=AI."
node src\run-demo.js --scenario <temp-scenario.json> --planner llm
Before Gemini validation, ensure:
GEMINI_API_KEY is availableBROWSER_USE_LLM_PROVIDER=geminiIf the site hangs on full load, use a temporary scenario with:
waitUntil: "domcontentloaded"postNavigationLoadState: "domcontentloaded"Use these interpretations:
strict mode violation / multiple matches
The selector is too broad. Add a stronger container-qualified selector.
timeout waiting for visible or editable
The control is hidden, disabled, off-screen, or not opened yet.
type succeeds but Enter does not navigate
The site likely needs a specific submit control instead of Enter.
works only with a special opener path
Consider a special scenario instead of a default profile.
rate limit / anti-bot / login gate
Do not force it into the stable regression matrix.
These are already proven patterns in this project:
#searchInput#search-form button[type="submit"]#id-search-field#submitq={searchTerm}form.mini-search input[name="query"]form.mini-search buttonquery={searchTerm}input[name="search_query"]button.ytSearchboxComponentSearchButtonsearch_query={searchTerm}#pageFooter input[name="q"]#pageFooter button.search-bar__submitq={searchTerm}domcontentloaded because the homepage may stall on full load#nav-searchform input.nav-search-input#nav-searchform .nav-search-btnkeyword={searchTerm}GitHub works through the search palette, but repeated probing can trigger secondary rate limits.
Recommended pattern:
button[aria-label="Search or jump to…"]#query-builder-testEnterq={searchTerm}Do not treat GitHub as a normal default regression target.
type and click steps back to the exact profile selectors.core, popup, and heavy.Structured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs