
Add Package
- 20 installs
- 33.3k repo stars
- Updated August 5, 2026
- remix-run/remix
Helps with ai & agent building tasks during AI-assisted development.
About
add-package is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- add-package
- AI & Agent Building
- AI-coding skill
Add Package by the numbers
- 20 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #10,459 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/remix-run/remix --skill add-packageAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 20 |
|---|---|
| repo stars | ★ 33.3k |
| Last updated | August 5, 2026 |
| Repository | remix-run/remix ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Add Package
Overview
Use this skill to scaffold and standardize packages so they look and behave like the existing @remix-run/* packages. Follow this exactly when creating package files, public exports, tests, and docs.
Workflow
1. Create the package directory and baseline files.
- Create
packages/<package-name>/. - Add:
package.jsontsconfig.jsontsconfig.build.jsonCHANGELOG.mdREADME.mdLICENSEsrc/- For new packages, start
CHANGELOG.mdwith## Unreleasedas the first section to indicate changes are not released yet.
2. Set up package.json using monorepo conventions.
- Use:
name:@remix-run/<package-name>version(for brand-new packages):"0.0.0"type:"module"license:"MIT"repository.directory:packages/<package-name>homepage:https://github.com/remix-run/remix/tree/main/packages/<package-name>#readme- Include
files: LICENSEREADME.mddistsrc!src/**/*.test.ts- Add standard scripts:
build:tsgo -p tsconfig.build.jsonclean:git clean -fdXprepublishOnly:pnpm run buildtest:remix-testtest:bun:bun x --bun remix-testtypecheck:tsgo --noEmit- Use baseline dev dependencies:
"@remix-run/assert": "workspace:^""@remix-run/test": "workspace:^""@types/node": "catalog:""@typescript/native-preview": "catalog:"- Add
keywordslike existing packages (short, lowercase, feature-focused).
3. Define exports with src entry files only.
- In
exports, map each public subpath to a dedicated file insrc. - Always include
./package.json. - Mirror each export in
publishConfig.exportswithdistoutput: types:./dist/<entry>.d.tsdefault:./dist/<entry>.js- Rule: every export must have a
srcfile that re-exports fromsrc/lib. - Example: export
./foo->src/foo.ts->export { ... } from './lib/foo.ts'
4. Add TypeScript config files with shared defaults.
Use this tsconfig.json pattern:
{
"compilerOptions": {
"strict": true,
"lib": ["ES2024", "DOM", "DOM.Iterable"],
"module": "ES2022",
"moduleResolution": "Bundler",
"target": "ESNext",
"allowImportingTsExtensions": true,
"rewriteRelativeImportExtensions": true,
"verbatimModuleSyntax": true
}
}Use this tsconfig.build.json pattern:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"outDir": "./dist"
},
"include": ["src"],
"exclude": ["src/**/*.test.ts"]
}5. Implement source structure and test setup.
- Structure source as:
src/<entry>.tsfor public entry pointssrc/lib/*.tsfor implementationsrc/lib/*.test.tsfor tests (colocated with implementation)- Tests use Remix's test runner:
import * as assert from '@remix-run/assert'import { describe, it } from '@remix-run/test'- Keep tests IDE-friendly:
- Do not generate tests with loops/conditionals inside
describe().
6. Follow monorepo code style rules while implementing.
- Use
import type { ... }andexport type { ... }for types. - Include
.tsextensions in relative imports. - Prefer
letfor locals; useconstonly at module scope. - Never use
var. - Prefer function declarations/expressions for normal functions.
- Use arrow functions for callbacks; use concise callbacks when returning a single expression.
- Use object method shorthand (
method() {}) instead of arrow properties. - Use native class fields and
#privatemembers. - Avoid Node-specific APIs when Web APIs are available.
7. Write README in the same style and section order as existing packages.
- Start with:
# <package-name>- One short paragraph describing purpose.
- Typical section order:
## Features## Installation## Usage- Optional deep-dive sections (only if needed)
## Related Packages(if applicable)## License- Installation instructions must always include installing the
remixpackage. - If using the package requires a peer dependency, installation instructions must also include that peer dependency in the command.
- Preferred installation pattern:
npm i remix- Example when a peer dependency is required:
npm i remix <peer-dependency>- Usage examples must always import from
remixpackage exports, not from@remix-run/<package-name>directly.
- License section format:
See [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)
8. Handle generated remix package updates deliberately.
packages/remixis generated automatically in CI.- Do not hand-edit
packages/remix/package.jsonorpackages/remix/src/*; run the generator when generated output is required. - When adding a new package, add it to
packages/remix/manifest.jsonbefore running the generator: - Add one entry per export:
"remix/<canonical-path>": "@remix-run/<package-name>","remix/<canonical-path>/foo": "@remix-run/<package-name>/foo". - Choose a domain-oriented canonical path (e.g.
remix/middleware/logger, notremix/logger-middleware). - If user asks for full surfacing, you can still update root
README.mdpackage list when applicable.
9. Validate before finishing.
- Run package checks:
pnpm --filter @remix-run/<package-name> run typecheckpnpm --filter @remix-run/<package-name> run testpnpm --filter @remix-run/<package-name> run build- Run repo lint (required):
pnpm run lint- Create
packages/<package-name>/.changes/on demand and add or update a change file when requested by contribution workflow. - For a brand-new package, the initial change file should use a
minor.filename (for example,minor.initial-release.md) so the first release bumps0.0.0to0.1.0.
Templates
Use this minimal src/index.ts style:
export { createThing, type ThingOptions } from './lib/thing.ts'Use this minimal test style:
import * as assert from '@remix-run/assert'
import { describe, it } from '@remix-run/test'
import { createThing } from './thing.ts'
describe('createThing', () => {
it('returns expected value', () => {
let result = createThing()
assert.equal(result, 'ok')
})
})interface:
display_name: 'Add Package'
short_description: 'Create new Remix monorepo packages consistently'
default_prompt: 'Use $add-package to scaffold and wire a new package in the Remix monorepo with the standard layout, scripts, tests, and README structure.'