Install
$ agentstack add skill-bettyguo-browser-skills-login-flow ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Login Flow
When to invoke
The user task requires authentication. The agent provides credentials in:
vars.username(orvars.email)vars.password
Per and [docs/ethics.md](../../docs/ethics.md): we use the agent-provided creds only — typically sourced by the agent from env vars ($SITE_X_USER, $SITE_X_PASS) the user has set, or from a password manager the user controls. We never harvest, prompt for, or store credentials. The sensitive: true metadata flag tells the trace recorder to redact form-fill events in the exported zip.
Recipe
- waitfordom_ready timeout=5s
- waitforselector selector="input[type='password']" state=visible timeout=5s
- fill selector="input[type='email'], input[name='username'], input[name='email'], input[id='username'], input[id='email']" value="$vars.username"
- fill selector="input[type='password']" value="$vars.password"
- click selector="button[type='submit'], button:has-text('Sign in'), button:has-text('Log in'), input[type='submit']"
- wait extra=1000ms
Success criteria
- assert novisibleelement selector="input[type='password']"
- assert urlchangedsince=step1 OR cookiesetnamed="session"
When NOT to use
- OAuth / SSO flows that redirect through identity providers
(Google, Microsoft, Okta). Use handle-oauth-redirect (v0.2.0).
- Magic-link / passwordless flows. Out of v1 scope; agent must
poll its inbox separately.
- MFA-protected logins. If MFA is enabled and there's no pre-saved
session, the recipe will hit the MFA challenge and stop. The agent surfaces the MFA prompt and asks the user how to proceed.
Known failures
- **Sites that hide the password field until the email is submitted
first** (Google-style): the recipe fills email, submits, then needs to re-find the password field. v0.1 fails on these; the agent can retry with a "submit, wait, re-invoke" loop.
- Captcha after a few failed attempts:
detect-captchashould be
chained after this skill.
- "Are you sure?" dialogs post-login:
handle-modal-dialogchains.
Trace handling
Per sensitive: true:
- form-fill events for password fields are recorded as `{value:
"[REDACTED]"}` in the trace
- screenshots taken during this skill's steps are blackened over the
password field's bounding box (v0.1 omits screenshots from this skill entirely)
Related skills
dismiss-cookie-banner— sites with consent walls hit this firstdetect-captcha— failed-login rate-limiting often triggers captcha
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bettyguo
- Source: bettyguo/browser-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.