Moai Domain Humanize
modu-ai/moai-adk
AI text humanization and 윤문 (post-editing) specialist that detects and removes AI tells while preserving meaning, facts, and figures.
TypeScript anti-slop guardrails. An agent skill from web-infra-dev/rstest.
$ npx skills add web-infra-dev/rstest --skill typescript -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install web-infra-dev/rstest typescript --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/web-infra-dev/rstest.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/typescript .claude/skills/typescript && 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 "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .claude/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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/web-infra-dev/rstest/tree/main/.agents/skills/typescriptType 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 web-infra-dev/rstest --skill typescript -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install web-infra-dev/rstest typescript --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/web-infra-dev/rstest.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/typescript .agents/skills/typescript && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .agents/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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 web-infra-dev/rstest --skill typescript -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install web-infra-dev/rstest typescript --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/web-infra-dev/rstest.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/typescript .cursor/skills/typescript && 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 "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .cursor/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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/web-infra-dev/rstest.git --path .agents/skills/typescript--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 web-infra-dev/rstest --skill typescript -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install web-infra-dev/rstest typescript --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/web-infra-dev/rstest.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/typescript .gemini/skills/typescript && 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 "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .gemini/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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 web-infra-dev/rstest typescriptInstalls 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 web-infra-dev/rstest --skill typescript -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/web-infra-dev/rstest.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/typescript .github/skills/typescript && 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 "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .github/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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 web-infra-dev/rstest --skill typescript -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install web-infra-dev/rstest typescript --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/web-infra-dev/rstest.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/typescript .opencode/skills/typescript && 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 "typescript" agent skill from https://github.com/web-infra-dev/rstest/tree/main/.agents/skills/typescript into .opencode/skills/typescript/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "typescript", 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.
typescriptTypeScript anti-slop guardrails. An agent skill from web-infra-dev/rstest.
Typescript is an agent skill from web-infra-dev/rstest. TypeScript anti-slop guardrails. Use when writing or reviewing .ts, .tsx, and .mts files. Covers patterns that Biome, tsc, and rslint do not catch.
Its SKILL.md is about 1.3k 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 Writing & Content, covering Humanizing AI text, React components and LLM guardrails. It works with TypeScript. The repository describes itself as: The JavaScript testing framework powered by Rspack. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d56bf97. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Typescript loads about 1.3k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 483 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 web-infra-dev/rstest at commit d56bf97, republished under its MIT licence (© web-infra-dev). 483 words, ~1,304 tokens.
.claude/skills/typescript/SKILL.md (or your agent's skills folder).Skip formatting and lint rules — tooling handles those. This skill targets patterns that produce valid-looking but poor-quality code.
When in doubt, copy the local pattern in the file you are editing rather than importing a style from elsewhere.
Comments that repeat what the next line does are noise. Only comment why, never what.
// wrong
// Set the current file path
context.setFilePath(filePath);
// Initialize the reporter
const reporter = new Reporter(config);
// right — let code speak; comment only non-obvious intent
// Force sequential execution — parallel runs corrupt shared fixture state
context.setFilePath(filePath);
const reporter = new Reporter(config);Also avoid: section-header comments inside functions (// --- Validate ---), JSDoc that adds nothing beyond the signature, temporal markers (// added for, // Phase 1).
Do not add runtime checks that the type system already guarantees. Trust the types.
// wrong — param is already typed string
function resolvePattern(pattern: string): string {
if (typeof pattern !== 'string') {
throw new Error('pattern must be a string');
}
return glob(pattern);
}
// right — trust the type system
function resolvePattern(pattern: string): string {
return glob(pattern);
}Also avoid: redundant ?? [] / || {} on fields that are always initialized (normalize once at construction instead), null checks on values you just produced, try/catch around code that cannot throw.
asTreat as as a last resort, not a way to silence errors. If you need as, the types are probably wrong.
// wrong — casting to escape a type error
const name = (config as any).testName;
// right — narrow or fix the type
if ('testName' in config) {
const name = config.testName;
}as any or as unknown as X unless at a proven interop seam or test-only partial mock.anynoExplicitAny is off in this repository, so self-police. Prefer unknown + narrowing, or a generic, before reaching for any. Never let any leak into exported APIs, config types, or cross-package contracts.
Do not extract a function, class, or type that is used exactly once, unless it genuinely improves readability at the call site.
// wrong — called once, five lines away
function formatTestName(name: string): string {
return name.replace(/\.test$/, '');
}
// ... later:
const display = formatTestName(file);
// right — inline it
const display = file.replace(/\.test$/, '');Also avoid: interfaces with single implementations, factory functions that create one thing, options objects with 10 optional fields for features that don't exist yet.
Threshold: extract when used in 3+ places, or when the extraction meaningfully shortens a complex function.
If a catch block doesn't add information or recover, delete the try/catch.
// wrong — catches and rethrows with just a message rewrite
try {
await loadConfig(path);
} catch (error) {
throw new Error(
`Failed to load: ${error instanceof Error ? error.message : error}`,
);
}
// right — use cause to preserve the chain
try {
await loadConfig(path);
} catch (error) {
throw new Error(`Failed to load config at ${path}`, { cause: error });
}
// also right — just don't catch if you add nothing
await loadConfig(path);Also avoid: bare rethrow (catch (e) { throw e; }), empty catch blocks, catch blocks that only console.log.
When two declarations describe the same thing — types, constants, defaults, validation rules — one must derive from the other. Duplicating independently causes drift: they match today, diverge silently tomorrow. Derive via extends, Pick, ReturnType, typeof, satisfies, or simply importing the canonical definition.
Before writing a helper function, search the codebase. If it exists, import it. If it exists but isn't exported, export it. Don't create a second isObject() or normalizeSlashes().
type and interface — follow nearby code.import type for type-only imports.@default.© web-infra-dev, 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 .agents/skills/typescript of web-infra-dev/rstest.
Open the folder on GitHubat commit d56bf97
Typescript 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 |
|---|---|---|---|---|---|---|
| Typescript this skillweb-infra-dev/rstest | 505 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Moai Domain Humanizemodu-ai/moai-adk | 1.2k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Install Anti Sloptrycompai/crm | 11k | 1 repos | ~881 | Automated safety check: Pass | MIT | |
| Biome Anti Slopnightly-labs/openbot | 422 | — | ~1.5k | Automated safety check: Pass | Custom licence | |
| Deslop TypescriptConsensys/c0 | 105 | — | ~1.6k | Automated safety check: Pass | LGPL-3.0 | |
| Reduce Bundle Sizekcsujeet/ilamy-calendar | 351 | — | ~2.9k | Automated safety check: Pass | MIT |
modu-ai/moai-adk
AI text humanization and 윤문 (post-editing) specialist that detects and removes AI tells while preserving meaning, facts, and figures.
trycompai/crm
Install and configure the anti-slop Oxlint plugin in a local TypeScript or JavaScript repository.
nightly-labs/openbot
Install and configure vendored Biome anti-slop GritQL rules in a local TypeScript or JavaScript repository.
Consensys/c0
Run a final de-slopping pass on nearly finished JavaScript or TypeScript work before commit or PR.
kcsujeet/ilamy-calendar
Systematically reduce the shipped bundle size of a JS/TS library without sacrificing code readability or breaking consumer APIs.
viclafouch/meme-studio
A skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
web-infra-dev/rstest
Create or update draft GitHub release notes, or output organized Markdown when draft creation is unavailable.
web-infra-dev/rstest
Generate a narrative version release blog post from commits within a tag range.
web-infra-dev/rstest
Verify hand-written API doc signatures match the exported types.
web-infra-dev/rstest
Testing workflow for the Rstest monorepo. An agent skill from web-infra-dev/rstest.
web-infra-dev/rstest
Feature and bug-fix development checklist for the Rstest monorepo.
web-infra-dev/rstest
Create a pull request using repository branch rules, title conventions, templates, and concise English descriptions.
Works with
Categories
TypeScript anti-slop guardrails. An agent skill from web-infra-dev/rstest. Typescript is an agent skill from web-infra-dev/rstest. TypeScript anti-slop guardrails.
Typescript fits situations like: tasks that involve Humanizing AI text; tasks that involve React components; tasks that involve LLM guardrails.
Run `npx skills add web-infra-dev/rstest --skill typescript -a claude-code`. Or copy the skill folder (.agents/skills/typescript in web-infra-dev/rstest) into .claude/skills/typescript in your project. Claude Code loads it when a task matches its description.
Run `npx skills add web-infra-dev/rstest --skill typescript -a codex`. Or copy the skill folder (.agents/skills/typescript in web-infra-dev/rstest) into .agents/skills/typescript 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 web-infra-dev/rstest --skill typescript -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/typescript, .gemini/skills/typescript, .github/skills/typescript and .opencode/skills/typescript in your project.
SKILL.md names no scripts, command-line tools or credentials: Typescript is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Typescript is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.2k 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 Typescript: Moai Domain Humanize (modu-ai/moai-adk, 1.2k stars), Install Anti Slop (trycompai/crm, 11k stars), Biome Anti Slop (nightly-labs/openbot, 422 stars) and Deslop Typescript (Consensys/c0, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
web-infra-dev (a GitHub organization) maintains it in web-infra-dev/rstest, which has 505 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on September 30, 2026.
Source: web-infra-dev/rstest on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.