Skip to content
Back to skills

Typescript Language

ASecurity

Use a branded type so a validated ID is not interchangeable with an arbitrary string: ```ts export type UserId = string & { readonly __brand: "UserId" }; export function parseUserId(value: string): UserId { if (!/^usr_[a-zA-Z0-9]+$/.test(value)) { throw new Error("Invalid user ID"); } return value as UserId; } export function loadUser(id: UserId): Promise<User> { return repository.findById(id); } ``` Only the parser (or a schema validator at the input boundary) should create the brand. The `l...

  • 549 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
development

Security analysis

A100/100

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

Scanned September 5, 2026

npx -y skills add HoangNguyen0403/agent-skills-standard --skill typescript-language --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Typescript Language?

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

Security grade badge for Typescript Language
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hoangnguyen0403-typescript-language-6215ff78/badge)](https://www.skillsdirectory.com/skills/hoangnguyen0403-typescript-language-6215ff78)

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
Use a branded type so a validated ID is not interchangeable with an arbitrary string:

```ts
export type UserId = string & { readonly __brand: "UserId" };

export function parseUserId(value: string): UserId {
  if (!/^usr_[a-zA-Z0-9]+$/.test(value)) {
    throw new Error("Invalid user ID");
  }
  return value as UserId;
}

export function loadUser(id: UserId): Promise<User> {
  return repository.findById(id);
}
```

Only the parser (or a schema validator at the input boundary) should create the brand. The `loadUser` signature now rejects a plain `string`; avoid a non-null assertion and keep the runtime validation separate from the compile-time brand.

Files in this skill

  • eval-1.baseline.md785 B
  • eval-1.with-skill.md769 B
  • eval-2.baseline.md1.3 KB
  • eval-2.with-skill.md1.3 KB
  • eval-3.baseline.md888 B
  • eval-3.with-skill.md659 B
  • trigger-1.md129 B
  • trigger-2.md146 B
  • trigger-3.md86 B
  • trigger-4.md116 B

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.

Comments

Loading comments…