Install
$ agentstack add skill-perongh-skills-sign-in-forms ✓ 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
Sign-in Form Best Practices
Structure
- Wrap credential inputs in a real `
, not a. Password managers key off` + submit button. - Every input gets a `
above it. Never useplaceholder` as a label. - Use `
— never a styled`. Copy says the action: Sign in, Create account. - One field per purpose. Do not double up email or password confirmation inputs.
- Give
idandnamestable values (not randomized per build/render). Autofill breaks without them.
Input Attributes
Email/username input:
(Use autocomplete="username" even for email — that's the token password managers recognize.)
Sign-in password:
Sign-up / new password / password reset:
Change-password forms: old password gets current-password, new password gets new-password.
Phone: type="tel". Numeric PIN: inputmode="numeric".
Rely on the required attribute for missing-field validation before adding JS.
Password UX
- Add a Show password toggle that flips
typebetweenpasswordandtext. The toggle button needsaria-labelwarning that the password will be visible on screen. - Include a Forgot password link near the password input.
- Describe password rules with a sibling element referenced by
aria-describedbyon the input.
Submission
- On success: navigate to a new page, or
history.pushState()/replaceState()and remove the form from the DOM. This is how password managers detect success and offer to save. - Disable the submit button after the first click to prevent double-submit. Do not disable it before the user has filled things in — show a validation message instead.
- Two-step sign-in (email page → password page): still use one `
, or on the second page include a hidden` carrying the email value so password managers store the right credential.
Mobile & Touch
- Inputs and buttons need ≥48×48 CSS px hit area. Add ~15 px padding on mobile, ~10 px on desktop.
- Input font-size ≥16 px on desktop, ~20 px on mobile. Sub-16 px input font on iOS triggers zoom.
- Give inputs a visible border (
#cccor darker on white) — the browser default is nearly invisible on Android. - Keep email, password, and submit button at the top of the viewport so the on-screen keyboard doesn't cover the submit button.
Validation
- Use built-in HTML validation (
type="email",required,pattern) first. It sets focus and shows a prompt with zero JS. - Style invalid inputs with
input:not(:placeholder-shown):invalid— the:not(:placeholder-shown)prevents empty fields from flashing red before the user has typed. - For richer real-time validation use the Constraint Validation API (
setCustomValidity,checkValidity).
Accessibility
- Labels above inputs, not beside — better on mobile and scans faster.
aria-describedbyfor rules/hints,aria-labelon icon-only buttons (Show password, etc.).- Errors must be announced: put error text in a live region or reference it via
aria-describedbywhen invalid.
Do Not
- Do not use
placeholderas the only label. - Do not randomize
id/namebetween renders — kills autofill. - Do not require email or password re-entry ("confirm password").
- Do not disable submit until the form is valid without telling the user why.
- Do not use
autocomplete="off"on password fields — modern browsers ignore it and it breaks managers.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: PeronGH
- Source: PeronGH/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.