Skip to content
Back to skills

Access

ASecurity

See who can sign in and what each person may use; add, change or remove a person.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 12, 2026
ai-agentsbashnodegitapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned November 12, 2026

npx -y skills add matthewwong525/WongStack --skill access --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Access?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Access
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/matthewwong525-access/badge)](https://www.skillsdirectory.com/skills/matthewwong525-access)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: access
description: See who can sign in and what each person may use; add, change or remove a person.
user-invocable: true
---

# /access

You read and change the app's people as the person in the chat. The app decides what they may do: only the owner or an Admin can change people. The [Access page](https://github.com/matthewwong525/WongStack/blob/main/wiki/stack/employee-access.md) owns the rules.

From the repo root, call the app with this computer's sign-in. The app's address is `app` in `.agents/access/slots.json`, else the one a WongStack install records:

```bash
node --input-type=module -e '
import { appOrigin } from "./.claude/skills/access/scripts/lib/client.mjs";
import { headers, signInHelp } from "./.claude/skills/access/signin/computer.mjs";
const app = appOrigin(".");
const signed = headers(app);
if (!signed) throw new Error(`Not signed in: ${signInHelp(app)}`);
const [, , path, body] = process.argv;
const init = { headers: { ...signed, "content-type": "application/json", ...(body && { origin: app }) }, redirect: "error" };
const answer = await fetch(new URL(`/api/access/${path}`, app), body ? { ...init, method: "POST", body } : init);
console.log(answer.status, await answer.text());' <path> [json]
```

| You want | Path | Body |
|---|---|---|
| Who has what | `status` | none |
| Add or change a person | `people` | `{"email":"a@shop.com","removed":false,"apps":{"<app>":true},"keys":{"<key>":"read"}}` |
| Give a person a role | `people` | `{"email":"a@shop.com","removed":false,"role":"<role id>"}` |
| Remove a person | `people` | `{"email":"a@shop.com","removed":true}` |
| Make or change a role | `roles` | `{"name":"Sales","apps":{…},"keys":{…}}`, with `id` to change one |

1. Read `status` first. Name each person, their role, apps and key levels in plain words, never as JSON.
2. Before each save, say what changes, for whom, and ask. Save only on a yes, one change at a time.
3. After a save, read `status` again and say what is now true.
4. A refusal is `{"code": "<why>"}`: tell the person in plain words. `owner_required`: they are not the owner or an Admin; `owner_setup_required`: the app names no owner, or the sign-in did not reach it.
5. With no `.agents/access/slots.json`, Access is not set up: offer [the setup guide](references/setup.md).

Files in this skill

  • .claude-plugin/plugin.json242 B
  • .codex-plugin/plugin.json266 B
  • README.md3.4 KB
  • SKILL.md2.3 KB
  • hooks/claude.json199 B
  • hooks/codex.json190 B
  • references/setup.md7.1 KB
  • screen/access.css10.5 KB
  • screen/address.mjs2.1 KB
  • screen/api.mjs11.6 KB
  • screen/api.test.mjs13.4 KB
  • screen/app.mjs1.2 KB
  • screen/app.test.mjs40.3 KB
  • screen/confirm.mjs1.1 KB
  • screen/context.mjs248 B
  • screen/copy-text.mjs1.3 KB
  • screen/fields.mjs1001 B
  • screen/hidden.test.mjs6.8 KB
  • screen/labels.mjs1.4 KB
  • screen/leaving.test.mjs14.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.