init-typescript
Installation
SKILL.md
init-typescript
Generate TypeScript tooling configuration files for a new project. This skill is used by the init-project skill but can also be used standalone.
Files to Generate
package.json
{
"name": "<project-or-subdirectory-name>",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "",
"build": "",
"lint": "biome check --write",
"typecheck": "tsc --noEmit",
"check": "pnpm run lint && pnpm run typecheck"
},
"devDependencies": {
"@biomejs/biome": "latest",
"typescript": "latest"
}
}
If Rust is co-located in the same repo, ask the user: "Do you want cargo check commands (clippy, fmt) wired into the package.json scripts?"
If yes, add these scripts (adjust --manifest-path if Rust is in a subdirectory):
"cargo:clippy": "cargo clippy --manifest-path <path>/Cargo.toml --all-targets --all-features",
"cargo:fmt": "cargo fmt --manifest-path <path>/Cargo.toml",
"cargo": "pnpm run cargo:clippy && pnpm run cargo:fmt",
"check": "pnpm run lint && pnpm run typecheck && pnpm run cargo"
tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"jsx": "react-jsx",
"module": "ESNext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"noEmit": true,
"strict": true,
"noImplicitReturns": true,
"noImplicitOverride": true,
"noFallthroughCasesInSwitch": true,
"noUncheckedIndexedAccess": true,
"noPropertyAccessFromIndexSignature": true,
"useUnknownInCatchVariables": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"incremental": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"]
}
biome.json
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
"files": { "ignoreUnknown": true },
"formatter": { "enabled": true, "indentStyle": "tab" },
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"correctness": {
"noUnusedVariables": "error",
"noUnusedImports": "error",
"noUnusedFunctionParameters": "error"
},
"suspicious": { "noExplicitAny": "warn" }
}
},
"javascript": { "formatter": { "quoteStyle": "double" } },
"assist": { "enabled": true, "actions": { "source": { "organizeImports": "on" } } }
}
src/ directory
Create an empty src/ directory:
mkdir -p src
Related skills
More from kstonekuan/init-project-skill
init-project
Scaffold a new project with opinionated tooling configs for TypeScript, Rust, Python, Docker, and/or Shell
6init-rust
Generate opinionated Rust project config files (Cargo.toml with pedantic clippy lints) for use with init-project
3init-python
Generate opinionated Python project config (pyproject.toml with ruff and ty) for use with init-project
3