Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
This skill should be used when working with an aweb identity itself — the Ed25519 signing keypair, E2E encryption keys, did:key and did:aw, the public AWID registry, local versus global identities…
$ npx skills add awebai/aweb --skill aweb-identity -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install awebai/aweb aweb-identity --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/aweb-identity .claude/skills/aweb-identity && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .claude/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/awebai/aweb/tree/main/skills/aweb-identityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add awebai/aweb --skill aweb-identity -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install awebai/aweb aweb-identity --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/aweb-identity .agents/skills/aweb-identity && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .agents/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add awebai/aweb --skill aweb-identity -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install awebai/aweb aweb-identity --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/aweb-identity .cursor/skills/aweb-identity && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .cursor/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/awebai/aweb.git --path skills/aweb-identity--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add awebai/aweb --skill aweb-identity -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install awebai/aweb aweb-identity --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/aweb-identity .gemini/skills/aweb-identity && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .gemini/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install awebai/aweb aweb-identityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add awebai/aweb --skill aweb-identity -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/aweb-identity .github/skills/aweb-identity && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .github/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add awebai/aweb --skill aweb-identity -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install awebai/aweb aweb-identity --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/awebai/aweb.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/aweb-identity .opencode/skills/aweb-identity && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aweb-identity" agent skill from https://github.com/awebai/aweb/tree/main/skills/aweb-identity into .opencode/skills/aweb-identity/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aweb-identity", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aweb-identityThis skill should be used when working with an aweb identity itself — the Ed25519 signing keypair, E2E encryption keys, did:key and did:aw, the public AWID registry, local versus global identities…
Aweb Identity is an agent skill from awebai/aweb. This skill should be used when working with an aweb identity itself — the Ed25519 signing keypair, E2E encryption keys, did:key and did:aw, the public AWID registry, local versus global identities, custodial versus self-custodial custody, what aw init does to a directory, addressability (a global identity's address and route), inboundmode delivery policy, contacts, key rotation, and identity-level workspace diagnostics. Use this whenever an agent is reasoning about WHO it is rather than WHICH TEAM it is acting in.
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering End-to-end testing. The repository describes itself as: Communication for AI agents: stable identity, durable mail and chat, and wake-up events across sessions, runtimes, machines, and organizations. MIT, self-hostable. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3fbb43c. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(aw *)From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
aweb.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Aweb Identity loads about 5.6k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 2,985 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from awebai/aweb at commit 3fbb43c, republished under its MIT licence (© awebai). 2,985 words, ~5,598 tokens.
.claude/skills/aweb-identity/SKILL.md (or your agent's skills folder).Use this skill when the question is about the agent's own identity — its keys, custody model, address, inbound delivery policy, contacts, or key rotation. For team certificates, joining teams, multi-team selection, hosted vs BYOT team authority, or fresh BYOT setup, load aweb-team-membership. For day-to-day work coordination, load aweb-coordination. For mail/chat response policy, load aweb-messaging.
Vocabulary used throughout this skill and referenced by sibling skills. Read once; refer back as needed.
aweb-team-membership) are signed by a separate team controller key, not by the identity's own key. Recipients verify each signature with the corresponding public key without trusting the coordination server.did:key — the public key encoded as a DID, e.g. did:key:z6Mk.... Identifies the current signing key.did:aw — a stable identity DID kept in the public AWID registry. Maps to the current did:key, so an identity can rotate its signing key without changing its did:aw. Only global identities have a did:aw.awid.ai) — the public registry of identity and team facts: did:aw → did:key mappings, namespaces, addresses, team records, team certificates, address-route bindings. Anyone can verify against AWID without trusting aweb.acme.com) registered in AWID, controlled by a namespace controller keypair. Addresses are scoped under a namespace.did:key and did:aw, can hold one or more public addresses (<namespace>/<name>). Survives key rotation, moves across machines..aw/signing.key. Custodial means aweb holds the encrypted private key in a hosted account (browser/MCP harnesses without a local terminal). Identity custody is independent of team authority — see aweb-team-membership for the combined matrix..aw/A workspace can hold any combination of these. For team-related files (teams.yaml, team-certs/), see aweb-team-membership.
signing.key — Ed25519 private key for self-custodial workspaces. If absent, this directory has no local signing identity. Custodial identities never write this file; their key material lives in the hosted account.encryption.yaml and encryption-keys/ — local E2E message-decryption keyring. encryption.yaml names the active encryption key; encryption-keys/ stores the active and archived X25519 private keys plus identity-signed public assertions. Back these up with the workspace. Losing archived encryption keys makes old encrypted messages unrecoverable.workspace.yaml — server URL (aweb_url), authentication, and per-membership workspace metadata. Binds this directory to one aweb coordination server. Does NOT hold the active-team selection (that's in teams.yaml).aw init vs aw id create — workspace onboarding vs identity-onlyThese two commands look similar and are not interchangeable. The decision turns on whether you want the current directory to become a connected aweb workspace or just to prepare an identity (with no team binding yet).
aw id namespace prepare-controller --domain <domain> — creates or reuses the local namespace controller key under ~/.awid/controllers/ and prints the _awid.<domain> DNS TXT value. It is local-only: it does not create a did:aw, address, team, workspace, or cloud row. Tell the human to keep ~/.awid safe and backed up; this key controls the namespace.
aw id namespace check-txt --domain <domain> — read-only DNS propagation check. It verifies that _awid.<domain> matches the local namespace controller key before you proceed with controller-signed operations.
aw id create --domain <domain> --name <name> — creates a standalone global identity (did:key + did:aw + DNS-backed address) and registers it in AWID. Writes .aw/identity.yaml and .aw/signing.key, but does not create a team certificate and does not connect this directory to an aweb server (no workspace.yaml server binding, no teams.yaml membership entry, no team-certs/*.pem). Use this when you only need the identity — for example, preparing BYOT member identities offline before importing the customer-signed team state into aweb cloud (see aweb-team-membership Fresh BYOT setup).
aw init — workspace onboarding. The current directory becomes a connected aweb workspace bound to one identity, one active team, and one aweb coordination server. Three onboarding flows are supported:
aw team join normally installs the certificate and connects immediately using the invite's embedded service URL. After the membership-only aw id team accept-invite, aw team join --no-connect, or fetch-cert paths, run the printed aw workspace connect --service <url> command when a service URL was cached (or choose the service explicitly for a legacy token) to write .aw/workspace.yaml. Certificates name members and teams, not servers; new invites and the teams cache carry the service URL.*.aweb.ai and binds the directory to it.--byod — onboards under a customer-owned domain instead of hosted aweb.ai. This still creates a workspace binding and a team (default:<domain>) on app.aweb.ai. --byod is NOT offline identity prep for a BYOT controller; that's aw id create.aw init --global (with or without --byod) — creates an addressed self-custodial global identity AND wires the workspace. The workspace half is what makes this different from aw id create. Do not reach for aw init --global when you want only an identity.
aw init updates the aweb section of AGENTS.md / CLAUDE.md by default; pass --do-not-touch-agents-md to skip. It refuses to overwrite an existing identity in .aw/.
When deciding which to run:
aw init (one of the three flows above).aw id namespace prepare-controller, publish the _awid.<domain> TXT, then aw id namespace check-txt.aw id create. Do NOT use aw init --byod --global; that command bootstraps and connects default:<domain> and is not the offline BYOT prep path.| Custody | Where the private key lives | How rotation works | Typical harness |
|---|---|---|---|
| Self-custodial | .aw/signing.key on the agent's machine | Local: aw id rotate-key | Terminal CLI (Claude Code, Codex, Pi runtime) |
| Custodial | Identity signing key material is held in the hosted aweb account (not a local E2E message-decryption key) | Cloud-account operation (no local CLI command rotates a custodial key) | Browser/MCP agents on Claude.ai, ChatGPT, Claude Desktop |
A self-custodial agent has full control over its key — and full responsibility for backups. A custodial agent inherits aweb's account-level recovery story.
The normative E2E contract is docs/e2e-messaging-contract.md. Do not invent protocol details here; use this skill for operational guidance.
For local E2E messaging, the self-custodial client needs both identity signing material and local encryption private keys. Back up the active encryption private key and archived encryption private keys with the same seriousness as .aw/signing.key: losing archived encryption keys makes historical encrypted messages unrecoverable. AC/aweb cannot recover or decrypt old encrypted messages for support.
An identity must publish an identity-signed encryption-key assertion before it can receive E2E messages. New self-custodial identity and team-install paths create local encryption key material automatically, including aw id create, aw init, aw workspace connect / aw service init, aw team join / aw id team accept-invite, and aw id team fetch-cert. Legacy bootstrap/add-worktree compatibility flows may also set up keys, but do not make them the product-center path. Current aw can create/publish the sender's key on the first explicit --e2ee send from an upgraded old worktree. It cannot create keys for a different old recipient; if the recipient has no published key, tell them to upgrade aw/Pi/channel and run aw id encryption-key setup, or ask the human whether to send a server-readable upgrade note with the current plaintext default or --plaintext. Missing, stale, unsigned, or mismatched encryption-key discovery fails closed for explicit --e2ee; do not retry as plaintext unless the human explicitly chooses server-readable plaintext. Service signatures may assert route support, but not recipient encryption-key authority. Local identities omit absent stable_id/address fields instead of sending empty strings. In non-interactive runs, stop, report the exact aw doctor / command error, and ask the human or coordinator to run the approved key setup, backup, or rotation flow.
Use the CLI keyring commands for self-custodial E2E readiness:
aw id encryption-key setup # create/publish the active key if needed
aw id encryption-key rotate # publish a new active key; keep archived keys
aw id encryption-key show # inspect local keyring statesetup stores the private key locally before publishing the public assertion. For global identities it publishes to AWID; for connected local/team workspaces it publishes to the active aweb service. rotate must not delete old private keys. After either command, remind the human to back up .aw/encryption-keys/.
Hosted custodial MCP, dashboard-side send/read, and other server-side tools are server-readable hosted messaging, not E2E, because plaintext or decryption capability enters AC/aweb. Do not use the end-to-end label for hosted custodial/server-side messaging unless a future design keeps plaintext and decryption fully outside AC.
AWID controller keys are separate from worktree identity keys. Namespace and team controller keys live under ~/.awid/; they are authority keys, not app config. Keep that directory safe and backed up. Worktree identity keys (.aw/signing.key) remain with the workspace they act from.
Do NOT promise that a local CLI command can recover a lost custodial key. For custodial recovery, follow the hosted account recovery path or escalate to the identity owner.
Local identities are the default for a CLI workspace. They have a team-local alias (alice), get no AWID record, and cannot be addressed from other teams. They are fine for most work-inside-one-team scenarios.
Global identities are addressable across teams. They are registered in AWID with a stable did:aw, hold one or more public addresses (<namespace>/<name>), and can rotate their signing key without losing identity. Create one with aw id create --domain <domain> --name <name> (DNS-TXT verification required unless --skip-dns-verify) when you want identity-only, no workspace binding. Use aw init --global instead only when you also want this directory to become a connected aweb workspace bound to a team; see the aw init vs aw id create section above for the distinction.
A workspace binds to exactly one identity at a time. If a global identity is bound, it can still act with a team-local alias in any team it's a member of — the team certificate provides the alias.
For first contact, agents address each other by a concrete route, not by did:aw:
alice (only meaningful within the active team).<namespace>/<name>, e.g. acme.com/alice or myteam.aweb.ai/support.A bare did:aw is identity binding, not a delivery route. It identifies WHO; an address tells the server WHERE to deliver. Address-route bindings are registered in AWID and verified there.
Every global identity has an inbound_mode setting controlling who can deliver to it after a route resolves. Two values:
open — accept all valid routed senders. Default for hosted identities so they can receive first contact.team-and-contacts — accept verified same-team senders plus exact active identity contacts. Stricter; used when first contact should be filtered.Inspect and change with:
aw inbound-mode # show current
aw inbound-mode open # set to open
aw inbound-mode team-and-contacts # set stricterDelivery happens in two steps: first resolve a route via AWID, then evaluate the recipient's inbound_mode. Team certificates are what prove "same team" for team-and-contacts; their full model is in aweb-team-membership. Contacts cover the non-team trusted-sender case (below).
Contacts are saved identity/address relationships for repeated cross-team messaging. They are per-identity, not per-team — an identity sees the same contacts regardless of which team is active.
aw contacts add <namespace>/<name> --label <local-nickname>
aw contacts list
aw contacts remove <namespace>/<name>Contacts add a sender to the trusted set for the recipient's inbound_mode=team-and-contacts policy. They do NOT synthesize routes or AWID resolver entries; the contact target still needs a valid global address in AWID.
Add a contact when repeated cross-team messaging is expected. For one-shot communication, use the full address.
For a self-custodial identity with the existing local key available, rotate with:
aw id rotate-keyThis generates a new keypair, registers the new did:key against the same did:aw in AWID (signed by the old key), and the team controller will need to re-issue any team certificates against the new did:key. Teammates see the did:aw unchanged.
If the existing key may be compromised, stop using that identity for sensitive actions until rotation completes and teammates know which key is current. If rotation requires the old key and you cannot trust it, escalate to the team/identity owner.
For custodial identities, rotation and recovery are cloud-account operations. There is no local CLI command that rotates a custodial key; follow the hosted account recovery path. Do not present custodial account recovery as recovery for local encrypted message history: server-readable hosted modes may have an account recovery story, but local encrypted history cannot be recovered by AC/aweb if archived encryption keys are lost.
Start with:
aw whoami
aw id show
aw workspace statusInterpret failures by what's missing (file references assume a self-custodial CLI workspace; custodial browser/MCP identities live entirely in the hosted account):
No .aw/ in this directory — there is no workspace here at all. Run aw init or move to a directory that has been initialized.
.aw/signing.key missing — workspace exists but has no signing key. Self-custodial identity is unusable until the key is restored from backup or a new identity is created.
E2E encryption-key check fails — distinguish the cases the CLI reports: missing local encryption private key, missing published encryption-key assertion, stale/mismatched assertion, or missing archived key for an older message. Do not advise plaintext fallback. Capture the exact error, run aw doctor when available, and ask the human to restore keys from backup or run aw id encryption-key setup / aw id encryption-key rotate as appropriate. Use --plaintext only when the human explicitly chooses server-readable plaintext.
.aw/workspace.yaml missing or empty — workspace exists but is not bound to any aweb server, even when signing.key is present. Re-run aw init.
No global identity / no did:aw registered — only a local workspace identity exists. For cross-team addressability without changing the workspace binding, use aw id create --domain <domain> --name <name> (DNS-TXT verification). Use aw init --global only if you also want this directory rebound as a connected aweb workspace under that global identity.
Already ran aw init --byod --global expecting offline BYOT prep — that command bootstrapped and connected this directory to the default:<domain> team on app.aweb.ai (the team created during BYOD onboarding), leaving .aw/{identity.yaml,signing.key,teams.yaml,workspace.yaml,team-certs/} populated. This is a connected workspace under that default:<domain> team, NOT a BYOT-imported team. To recover, pick one:
aw id create --domain <domain> --name <name> there and follow the aweb-team-membership Fresh BYOT setup.aw init: back up .aw/ first (so the global identity material isn't lost), then remove the entire .aw/ directory, then run aw id create clean. aw reset is NOT enough here: it only detaches the workspace binding (.aw/context and .aw/workspace.yaml); it leaves identity.yaml, signing.key, teams.yaml, and team-certs/ in place, so the directory still looks like the mistaken global identity.default:<domain> team — coordinate with the team owner about whether that team is acceptable for the workflow; no rollback needed in that case.If the mistaken run claimed an address, created a disposable AWID team, or should fully deregister the namespace, the namespace controller holder can clean those facts with aw id namespace delete-address --domain <domain> --name <name>, aw id team delete --namespace <domain> --team <team>, and finally aw id namespace delete --domain <domain> after active certificates are revoked. For full deregistration, you may skip straight to aw id namespace delete after revoking every active certificate; AWID deletes the namespace's teams and addresses transactionally. These commands remove address/team/namespace registry facts; they do not erase append-only did:aw identity history or remove DNS TXT records.
Signing key does not match DNS controller — the local namespace controller key does not match the DID published in the _awid.<domain> DNS TXT record. Check the authoritative DNS record with dig +short TXT _awid.<domain>. If AWID returns 404 but DNS still publishes a controller DID, DNS is still the active root of trust for recovery flows; either restore the matching key or publish a new _awid.<domain> TXT for the key you intend to use.
AWID resolver says the address is unbound — the route is not registered or has been rotated away. Look up the address directly with aw id namespace resolve <namespace>/<name> --json, or resolve the underlying did:aw with aw id resolve <did:aw> once you have the stable ID. Then check the namespace controller's state with aw id namespace <namespace> --json if the address record is genuinely missing.
For team-membership-shaped failures (no team certificate, active-team mismatch, BYOT controller missing), load aweb-team-membership.
Run aw whoami and aw id show. Check identity (local vs global), did:key if global, did:aw if global, address(es), inbound mode, and current key fingerprint.
You need a global identity. To mint one without binding this directory to a workspace, run aw id create --domain <domain> --name <name>. To rebind a fresh directory as a connected workspace under a new global identity, run aw init --global in that fresh directory. Then publish the address and set inbound_mode appropriately.
The recipient is seeing a signature that doesn't match the public key they have for your did:aw. Either your key has been rotated and the recipient hasn't refreshed (aw id show shows the current did:key; ask them to re-resolve), or the message is being relayed by an actor without your private key. Confirm key state and re-resolve at the recipient.
For self-custodial: aw id rotate-key. Make sure the old key is still available (or use a coordinator-signed re-issue if not). Tell teammates so they re-fetch certificates. For custodial: cloud-account flow.
Read these only when deeper context is needed:
© awebai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/aweb-identity of awebai/aweb.
Open the folder on GitHubat commit 3fbb43c
Aweb Identity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Aweb Identity this skillawebai/aweb | 115 | — | ~5.6k | Automated safety check: Pass | MIT | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| Uloop Replay Inputkurotu/VRCQuestTools | 373 | 3 repos | ~615 | Automated safety check: Pass | MIT | |
| Ui4 Convert Testspayloadcms/payload | 45k | — | ~3.5k | Automated safety check: Pass | MIT | |
| E2Estackia/rtp2httpd | 2.2k | — | ~517 | Automated safety check: Pass | GPL-2.0 |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
kurotu/VRCQuestTools
Replay recorded PlayMode keyboard and mouse input. An agent skill from kurotu/VRCQuestTools.
payloadcms/payload
A skill your agent uses when UI changes are complete and e2e tests need updating.
stackia/rtp2httpd
Write, run, review, or debug rtp2httpd E2E tests and their harness in e2e/ and scripts/run-e2e.sh.
MotherofallVPNs/MoaV
Run and debug MoaV's end-to-end tests — real protocol connectivity (client-test.sh) and the moav CLI smoke test — against a LIVE server, via the self-hosted e2e workflow or a local test VPS.
awebai/aweb
Recognizes old aweb bootstrap-era `agents/` directories and migrates them to current team and identity primitives, since the old command family is retired.
awebai/aweb
Guides decisions for agents working in an aweb team: when to check shared state, claim tasks, take locks, read team roles and instructions, and open separate worktrees.
awebai/aweb
Guides how an agent reads and responds to aweb mail and chat events, choosing between asynchronous mail and synchronous chat and respecting sender verification and encryption boundaries.
awebai/aweb
This skill should be used when joining or being added to an aweb team, picking the correct invite/add-member path for the team's authority model (hosted vs BYOT), accepting invites, fetching team…
awebai/aweb
Creates or appends a folio document from the built-in pitch, memo or metrics templates by sending schema-checked slots that folio renders to Markdown.
awebai/aweb
A skill your agent uses when an agent needs to show a human an folio document: mint a document-bound capability link with POST /v1/present, open the returned URL for the human, print it as fallback…
Categories
This skill should be used when working with an aweb identity itself — the Ed25519 signing keypair, E2E encryption keys, did:key and did:aw, the public AWID registry, local versus global identities…. Aweb Identity is an agent skill from awebai/aweb. This skill should be used when working with an aweb identity itself — the Ed25519 signing keypair, E2E encryption keys, did:key and did:aw, the public AWID registry, local versus global identities, custodial versus self-custodial custody, what aw init does to a directory, addressability (a global identity's address and route), inboundmode delivery policy, contacts, key rotation, and identity-level workspace diagnostics.
Aweb Identity fits situations like: tasks that involve End-to-end testing.
Run `npx skills add awebai/aweb --skill aweb-identity -a claude-code`. Or copy the skill folder (skills/aweb-identity in awebai/aweb) into .claude/skills/aweb-identity in your project. Claude Code loads it when a task matches its description.
Run `npx skills add awebai/aweb --skill aweb-identity -a codex`. Or copy the skill folder (skills/aweb-identity in awebai/aweb) into .agents/skills/aweb-identity in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add awebai/aweb --skill aweb-identity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aweb-identity, .gemini/skills/aweb-identity, .github/skills/aweb-identity and .opencode/skills/aweb-identity in your project.
SKILL.md names no scripts, command-line tools or credentials: Aweb Identity is instructions for the agent only. Its frontmatter pre-approves these tools: Bash(aw *).
SKILL.md names 1 domain. As links in the text: aweb.ai. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Aweb Identity is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Aweb Identity: Web Application Testing (anthropics/skills, 180k stars), TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars), Uloop Replay Input (kurotu/VRCQuestTools, 373 stars) and Ui4 Convert Tests (payloadcms/payload, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
awebai (a GitHub organization) maintains it in awebai/aweb, which has 115 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 10, 2026.
Source: awebai/aweb on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.