Domain skill
atlas
Markdown synced from browser-harness domain skills.
- Host
- atlas
- Files
- 1
Agent prompt
Use this skill
Copy this prompt into your coding agent to make it enable browser-harness domain skills and read this exact domain folder before automating.
Set up https://github.com/browser-use/browser-harness for me if it is not already installed. If setup is needed, read `install.md` first to install and connect it to my real browser. Then read `SKILL.md` for normal usage and always read `helpers.py` because that is where the browser-harness functions are. Enable domain skills if they are not already enabled by setting `BH_DOMAIN_SKILLS=1` for browser-harness. Use the `atlas` domain skill from `agent-workspace/domain-skills/atlas/`. Read every markdown file for this domain before inventing an approach: - agent-workspace/domain-skills/atlas/overview.md Use those domain-skill notes to complete my task for `atlas` in my real browser. When you open a setup, verification, or task tab, activate it so I can see the active browser tab.
Skill contents
What the agent will read
Overview
overview.md
- --- name: atlas-recruit description: Atlas recruitment platform (my.recruitwithatlas.com) — routes, filters, GraphQL bootstrap for authenticated UI probes. ---
- Gated recruitment SaaS. Auth via Google SSO (WebAuthn/passkey). GraphQL backend at /graphql (NextAuth session cookie, credentials: 'include' from the tab).
- BD opportunities uses ?filters=[JSON] (URL-encoded). Example "Me" filter:
- Filter IDs seen: opportunityowner, stage, industry, segment, conversionprobability.
Show full markdown
name: atlas-recruit description: Atlas recruitment platform (my.recruitwithatlas.com) — routes, filters, GraphQL bootstrap for authenticated UI probes.
Atlas — my.recruitwithatlas.com
Gated recruitment SaaS. Auth via Google SSO (WebAuthn/passkey). GraphQL backend at /graphql (NextAuth session cookie, credentials: 'include' from the tab).
Routes
| Route | What |
|---|---|
/home | Dashboard (default landing after login) |
/sign-in | Redirect target when unauthenticated |
/business-development/opportunities | BD opportunities (kanban / list view) |
/business-development/leads | Leads |
/business-development/prospects | Prospects |
/business-development/playbook | Playbook |
/candidates | Candidate pipeline |
/projects/<id> | Specific job / project |
/graphql | Authenticated GraphQL endpoint (POST) |
Filters in URL
BD opportunities uses ?filters=[JSON] (URL-encoded). Example "Me" filter:
[{"id":"opportunity_owner","selectedOptions":[{"id":"<USER_UUID>","title":"Me","excludeFromSearch":false}]}]
Filter IDs seen: opportunity_owner, stage, industry, segment, conversion_probability.
Finding your own user UUID
- Apply a filter like "owner = Me" in
/business-development/opportunities, then readselectedOptions[0].idout of the URLfilters=param. - Or:
query { me { id email } }via the GraphQL endpoint (see below). - User UUIDs are tenant-stable; keep them in a local secret store, not in this shared skill.
Stages (BD funnel)
Identified → Initial Outreach → Late Stage → Converted → Archived. Seen as tab labels on /business-development/opportunities.
Auth quirks
- Google SSO flows through
accounts.google.com/signin/oauth/id?...— passkey / WebAuthn only, no password fallback visible. - Session state lives in multiple cookies (JWE session + CSRF). Injecting only the JWE into a fresh Chrome profile is not sufficient for UI access — you land in a login loop. For UI work: log in once inside a persistent Chrome profile and let all cookies settle. For backend-only GraphQL calls: the
__Secure-authjs.session-tokenJWE alone is enough when sent withcookie: __Secure-authjs.session-token=<jwe>from an external HTTP client.
GraphQL endpoint
POST https://my.recruitwithatlas.com/graphql using the tab's own cookies:
js("""
fetch('/graphql', {
method: 'POST',
headers: {'Content-Type': 'application/json', 'apollo-require-preflight': 'true'},
credentials: 'include',
body: JSON.stringify({query: 'query { me { id email } }'})
}).then(r => r.json()).then(j => JSON.stringify(j))
""")
This reuses the session cookies of the current tab — no JWE juggling needed when browsing from inside browser-harness.
Known mutations (verified against production schema, April 2026): opportunityCreate, opportunityUpdate, companyCreate, projectCreate, projectUpdate, opportunityAddLead, createOpportunityNote. Create mutations return placeholder names; follow with an opportunityUpdate / projectUpdate to set the final name or description. opportunityAddLead side-effects Project.company onto Opportunity.targetCompany when the opp had none.
Page titles
The app sets a green-dot emoji prefix on titles: 🟢 Atlas Agency (sign-in), 🟢 Business development (BD overview), etc. Useful for wait_for conditions — the emoji is consistent across routes.