project-setup

Scaffolds Bun TypeScript projects and configures dprint formatting with GitHub Actions CI.

2|Updated Apr 2, 2026
One-click install
npx skills add https://github.com/nseng-ai/ns --skill project-setup-nseng-ai
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: project-setup
Source: https://github.com/nseng-ai/ns/tree/main/skills/internal/repository-operations/project-setup
Command: npx skills add https://github.com/nseng-ai/ns --skill project-setup-nseng-ai

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) and assets (resource) components.

What problem does it solve? Setting up a new project or adding formatting tooling involves many small, error-prone decisions: tsconfig strictness, lint/format tool selection, test runner wiring, and CI workflow configuration. This Skill routes one-shot bootstrap requests to opinionated playbooks so the resulting project passes lint, typecheck, and tests on the first run. ## Core Features & Use Cases - Bun TypeScript scaffolding: Creates a complete Bun-centric project with strict ESM tsconfig, oxlint/oxfmt via ultracite, bun test, bunfig.toml, LICENSE, README, and optional CLI entry point. - Local dprint setup: Configures Markdown and TOML formatting with build-system integration for justfiles, Makefiles, or package.json scripts, preserving any existing configuration values. - dprint GitHub Actions CI: Adds a workflow running dprint check on pushes and PRs, with default-branch detection and protection against overwriting existing workflows. - Use Case: Ask to scaffold a new Bun CLI tool, and the Skill collects project metadata, generates all config and source files from templates, installs dependencies, and verifies bun run check, tsc --noEmit, and bun test all pass. ## Quick Start Ask the agent to create a new Bun TypeScript project named my-tool with a CLI entry point, or to add dprint formatting and CI to the current repository.

Frequently Asked Questions about project-setup

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I scaffold a new Bun TypeScript project?

Request a Bun TypeScript scaffold and provide the project name, author name, and email; description, license, and CLI entry point are optional with defaults. The playbook generates package.json, a strict ESM tsconfig, oxlint/oxfmt configs, bunfig.toml, source and test files, then verifies check, typecheck, and tests pass.

How do I set up dprint formatting for Markdown and TOML files?

The dprint setup playbook installs dprint if missing, copies a default dprint.json with markdown and toml plugins, adds .dprint/ to .gitignore, and integrates dprint check/fix into your justfile, Makefile, or package.json scripts. Existing configuration values are preserved; only missing plugins are added.

Does the Bun scaffold work with Node, pnpm, or Vitest projects?

No. The scaffold is intentionally Bun-centric and is not a default TypeScript template for existing Node, pnpm, or Vitest workspaces, nor for migrations away from Bun. It uses Bun's built-in test runner and runs TypeScript directly with no build step.

Can I add dprint GitHub Actions CI without a dprint config?

No. The CI playbook requires an existing dprint.json or .dprint.json in the project root and a GitHub remote. If no config exists, it directs you to run the local dprint setup first so config defaults stay consistent.

Why does the generated TypeScript code import local modules with .ts extensions?

Bun resolves explicit .ts import specifiers directly, and the strict tsconfig enables allowImportingTsExtensions, which requires them. Combined with verbatimModuleSyntax and noUncheckedIndexedAccess, these conventions ensure code passes tsc --noEmit and ultracite checks.

When should I not use this project-setup skill?

Do not use it for day-to-day operation of the tools it installs, such as routine dprint runs, ordinary CI edits, or ongoing workflows. It covers only one-shot bootstrap work: standing up a new project or adding a tooling setup once.