From 92b3021688a5e5b5c0dc0822716da090df1b2986 Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Wed, 25 Mar 2026 11:00:54 -0400 Subject: [PATCH 1/8] feat(skills): add skills --- .claude-plugin/plugin.json | 4 ++ skills/build/SKILL.md | 35 ++++++++++++++++ skills/dev/SKILL.md | 33 +++++++++++++++ skills/format/SKILL.md | 27 ++++++++++++ skills/init/SKILL.md | 25 ++++++++++++ skills/lifecycle/SKILL.md | 39 ++++++++++++++++++ skills/lint/SKILL.md | 84 ++++++++++++++++++++++++++++++++++++++ skills/test/SKILL.md | 72 ++++++++++++++++++++++++++++++++ 8 files changed, 319 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 skills/build/SKILL.md create mode 100644 skills/dev/SKILL.md create mode 100644 skills/format/SKILL.md create mode 100644 skills/init/SKILL.md create mode 100644 skills/lifecycle/SKILL.md create mode 100644 skills/lint/SKILL.md create mode 100644 skills/test/SKILL.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..cccadcf --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,4 @@ +{ + "name": "@bomb.sh/tools", + "description": "Claude Code skills for the Bombshell dev toolchain" +} diff --git a/skills/build/SKILL.md b/skills/build/SKILL.md new file mode 100644 index 0000000..19340d5 --- /dev/null +++ b/skills/build/SKILL.md @@ -0,0 +1,35 @@ +--- +description: "Build TypeScript modules. Run with `pnpm run build`." +--- + +# Build + +Builds TypeScript to ESM using tsdown with opinionated defaults. + +## Usage + +```sh +pnpm run build +``` + +## How It Works + +`pnpm run build` runs `bsh build` which calls tsdown with: +- **Format:** ESM only +- **Sourcemaps:** enabled +- **Clean:** removes dist/ before building +- **Unbundled** by default (each source file produces one output file) +- **Entry:** defaults to `src/**/*.ts` + +## Flags + +Pass flags after `--` in pnpm: + +```sh +pnpm run build -- --dts # Generate .d.mts declaration files +pnpm run build -- --bundle # Bundle into single output (disables unbundled mode) +pnpm run build -- --minify # Minify output +pnpm run build -- src/index.ts # Specify custom entry points +``` + +Flags can be combined: `pnpm run build -- --dts --minify` diff --git a/skills/dev/SKILL.md b/skills/dev/SKILL.md new file mode 100644 index 0000000..ff24ffa --- /dev/null +++ b/skills/dev/SKILL.md @@ -0,0 +1,33 @@ +--- +description: "Run a dev watcher for TypeScript files. Run with `pnpm run dev`." +--- + +# Dev + +Runs a file with native Node TypeScript support and watches for changes. + +## Usage + +```sh +pnpm run dev +``` + +## How It Works + +`pnpm run dev` runs `bsh dev` which shells out to: + +``` +node --experimental-transform-types --no-warnings --watch-path=./src/ +``` + +- **Default file:** `./src/index.ts` +- **Watch path:** `./src/` — restarts on any change in the source directory +- **No transpiler needed** — Node handles TypeScript natively + +## Custom Entry + +```sh +pnpm run dev -- ./src/other.ts +``` + +Additional arguments after the file path are passed through to Node. diff --git a/skills/format/SKILL.md b/skills/format/SKILL.md new file mode 100644 index 0000000..98e8d4b --- /dev/null +++ b/skills/format/SKILL.md @@ -0,0 +1,27 @@ +--- +description: "Format code with oxfmt. Run with `pnpm run format`." +--- + +# Format + +Formats source files using oxfmt with the project's configuration. + +## Usage + +```sh +pnpm run format +``` + +## How It Works + +`pnpm run format` runs `bsh format` which calls oxfmt with: +- **Config:** `oxfmtrc.json` from `@bomb.sh/tools` +- **Default target:** `./src` + +## Custom Targets + +```sh +pnpm run format -- ./path/to/file.ts +``` + +Additional arguments are passed through to oxfmt. diff --git a/skills/init/SKILL.md b/skills/init/SKILL.md new file mode 100644 index 0000000..3d9c886 --- /dev/null +++ b/skills/init/SKILL.md @@ -0,0 +1,25 @@ +--- +description: "Scaffold a new Bombshell project from template. Run with `pnpm run init`." +--- + +# Init + +Scaffolds a new Bombshell project from the `bombshell-dev/template` GitHub template. + +## Usage + +```sh +pnpm run init +pnpm run init -- my-project +``` + +## How It Works + +`pnpm run init` runs `bsh init` which: +1. Clones `gh:bombshell-dev/template` via giget +2. Replaces `$name` placeholder in `package.json` and `README.md` +3. Outputs to `.temp/` directory + +## Arguments + +- First positional arg: project name (defaults to current directory name) diff --git a/skills/lifecycle/SKILL.md b/skills/lifecycle/SKILL.md new file mode 100644 index 0000000..6715d71 --- /dev/null +++ b/skills/lifecycle/SKILL.md @@ -0,0 +1,39 @@ +--- +description: "Bombshell project lifecycle — how to build, test, lint, format, and run dev tasks. Auto-invoke when working in any project that depends on @bomb.sh/tools." +--- + +# Bombshell Project Lifecycle + +This project uses `@bomb.sh/tools` (`bsh`) as its dev toolchain. All dev tasks are run through `package.json` scripts. + +## Rules + +1. **Always use `pnpm run