Agent skill · Audited from source
typescript
skill · lobehub/lobehubNOASSERTION licenceAudited 31 Oct 2026 · source 11911c41ae4b
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 11911c41ae4b and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 4 findings, 0 critical or high. What it does: Use for TypeScript style and type safety when editing TS/TSX/MTS, including imports, async code and error suppression.
Cite
Cite this page
ModelsAtlas. “typescript (lobehub/lobehub)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/lobehub/typescript
5 skills are called “typescript”. You are viewing lobehub/lobehub.
- lobehub/lobehub★ 84k!CAUTION
- FranciscoMoretti/sparka★ 1.2k!CAUTION
- alinaqi/claude-bootstrap★ 707✓SAFE
- val1813/kwcode★ 685✓SAFE
- gentleman-programming/gentleman-skills★ 659✓SAFE
Trust audit
Audit 0.4.1 · source read 31 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 16,667 of 17,602 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 4 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (4)
MEDIUMInventory / provenanceinv.symlink · .claude/skills
.claude/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .codex/skills
.codex/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .cursor/skills
.cursor/skills
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .gemini/skills
.gemini/skills
- Why
- link not followed
- Fix
- —
Audit 0.4.1 · source sha 11911c41ae4b · 31 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherlobehub GitHub organizationOwner of the repository this skill is read from
- Source folderlobehub/lobehub/.agents/skills/typescriptThe exact folder we audited
- LicenceNOASSERTIONAs the repository states it
- Commit pinned for this verdict11911c41ae4bA new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Use for TypeScript style and type safety when editing TS/TSX/MTS, including imports, async code and error suppression.
---
name: typescript
description: 'Use for TypeScript style and type safety when editing TS/TSX/MTS, including imports, async code and error suppression.'
user-invocable: false
---
# TypeScript Code Style Guide
## Types and Type Safety
- Avoid explicit type annotations when TypeScript can infer
- Avoid implicitly `any`; explicitly type when necessary
- Use accurate types: prefer `Record<PropertyKey, unknown>` over `object` or `any`
- Prefer `interface` for object shapes (e.g., React props); use `type` for unions/intersections
- Prefer `as const satisfies XyzInterface` over plain `as const`
- Prefer `@ts-expect-error` over `@ts-ignore` over `as any`
- Avoid meaningless null/undefined parameters; design strict function contracts
- Prefer ES module augmentation (`declare module '...'`) over `namespace`; do not introduce `namespace`-based extension patterns
- When a type needs extensibility, expose a small mergeable interface at the source type and let each feature/plugin augment it locally instead of centralizing all extension fields in one registry file
- For package-local extensibility patterns like `PipelineContext.metadata`, define the metadata fields next to the processor/provider/plugin that reads or writes them
## Async Patterns
- **Async-first for IO**: new IO code (fs, child_process, etc.) must use async APIs at its boundaries — use promise-based variants like `import { readFile } from 'fs/promises'`, never `*Sync` by default. Function coloring is asymmetric: async→sync migration is never needed, while sync→async (when IO gets slower, gains concurrency, or grows a subprocess/network call) forces rewriting every caller up the chain — sync-first debt that compounds. Micro-costs of async (thread-pool dispatch, cache races) are not valid reasons: races are solved by caching the promise instead of the result
- `*Sync` is acceptable in exactly one place: call sites locked inside a synchronous contract you don't control — an existing sync signature chain (don't virally refactor a legacy sync chain in a bugfix, but new standalone modules must not extend such chains), or sync-only callbacks like `process.on('exit')`. Module-load-time and CLI startup init are NOT exceptions — use top-level `await` (ESM) there
## Imports
- Let lint enforce `simple-import-sort/imports` and `consistent-type-imports` with separate `import type` statements (`fixStyle: 'separate-type-imports'`).
## Code Structure
- Prefer **named exports** over `export default` — keeps refactor renames and IDE auto-import in sync, and avoids the `default` re-naming drift you get with `import Foo from './foo'`. Reserve `export default` for files where the framework requires it (Next.js page/route/layout, React.lazy targets, config files like `vitest.config.ts`). The codebase still has many `export default` occurrences — that's historical debt, not a pattern to copy; do not model new code on existing `export default` usage outside the framework-required cases above
## Reusability
- Before adding guards, parsing, normalization, timing, or JSON-safe helpers, search `packages/utils` and installed packages. Reuse `@lobechat/utils` or its relevant subpath instead of duplicating helpers across features.
- Do not hand-roll reusable record/object-map guards such as `typeof value === 'object' && value !== null`; import helpers like `isRecord`, `isPlainRecord`, `isObjectLike`, `toRecord`, `pickString`, `UnknownRecord`, etc. from `@lobechat/utils/object`.
- Assign `Date.now()` to a constant once and reuse for consistency
## Logging
- Never log user private information (API keys, etc.)
- Don't use `import { log } from 'debug'` directly (logs to console)
- Use `console.error` in catch blocks instead of debug package
- Always log the error in `.catch()` callbacks — silent `.catch(() => fallback)` swallows failures and makes debugging impossibleExcerpt, first 3,869 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 11911c4
git clone https://github.com/lobehub/lobehub git -C lobehub checkout 11911c41ae4b
The author documents no install command, so this uses the repository directly. Our verdict covers commit 11911c41ae4b only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
11911c41ae4b
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/lobehub/typescript/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →lobehub/lobehub
Use for Upstash Workflow/QStash handlers, triggers, durable steps and async fan-out.
lobehub/lobehub
Explicit compatibility entry for Zustand data-shape guidance.
lobehub/lobehub
Use for Vitest tests, mocks, coverage and failing-test diagnosis.
lobehub/lobehub
Use for TSX components, UI libraries, styling, state locality, layout, render performance and memoization.
lobehub/lobehub
Use for the OSS repository map, code-layer lookup, apps/packages/src ownership and business stubs.
lobehub/lobehub
Use for modals, dialogs and confirmations with createModal, confirmModal, ModalHost or base-ui modal APIs.
Add this badge to your README
[](https://modelsatlas.com/skills/lobehub/typescript/)
<a href="https://modelsatlas.com/skills/lobehub/typescript/"><img src="https://modelsatlas.com/skills/lobehub/typescript/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about typescript
What does the typescript skill do?
Is typescript safe to install?
What can typescript access on my machine?
How current is this page?
Sources
- github.com/lobehub/lobehub/tree/canary/.agents/skills/typescript — the audited source at commit 11911c41ae4b and every finding aboveObserved · 31 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the typescript skill do?
- Is typescript safe to install?
- What can typescript access on my machine?