Add Package
remix-run/remix
Create or align a package in the Remix monorepo to match existing package conventions.
Add a workspace to the dunx monorepo - a published package under packages/, a published CLI under tools/, a private workspace under internal/, or an example under examples/ - with correct manifest…
$ npx skills add petarzarkov/dunx --skill new-package -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petarzarkov/dunx new-package --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/petarzarkov/dunx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/new-package .claude/skills/new-package && 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 "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .claude/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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/petarzarkov/dunx/tree/main/.claude/skills/new-packageType 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 petarzarkov/dunx --skill new-package -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petarzarkov/dunx new-package --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petarzarkov/dunx.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/new-package .agents/skills/new-package && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .agents/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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 petarzarkov/dunx --skill new-package -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petarzarkov/dunx new-package --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petarzarkov/dunx.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/new-package .cursor/skills/new-package && 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 "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .cursor/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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/petarzarkov/dunx.git --path .claude/skills/new-package--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 petarzarkov/dunx --skill new-package -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petarzarkov/dunx new-package --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petarzarkov/dunx.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/new-package .gemini/skills/new-package && 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 "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .gemini/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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 petarzarkov/dunx new-packageInstalls 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 petarzarkov/dunx --skill new-package -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/petarzarkov/dunx.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/new-package .github/skills/new-package && 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 "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .github/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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 petarzarkov/dunx --skill new-package -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install petarzarkov/dunx new-package --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petarzarkov/dunx.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/new-package .opencode/skills/new-package && 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 "new-package" agent skill from https://github.com/petarzarkov/dunx/tree/main/.claude/skills/new-package into .opencode/skills/new-package/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-package", 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.
new-packageAdd a workspace to the dunx monorepo - a published package under packages/, a published CLI under tools/, a private workspace under internal/, or an example under examples/ - with correct manifest…
New Package is an agent skill from petarzarkov/dunx. Add a workspace to the dunx monorepo - a published package under packages/, a published CLI under tools/, a private workspace under internal/, or an example under examples/ - with correct manifest fields, tsconfig, exports-driven build entrypoints, README, and coverage badge. Use when creating @dunx/http, @dunx/testing, @dunx/create-app, examples/full, or when adding a public subpath export to an existing package.
Its SKILL.md is about 1.5k 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 Development, covering Monorepo tooling and Technical documentation. It works with TypeScript. The repository describes itself as: fastest web DI framework. NestJS-style structure at Bun speed. Constructor DI with no reflect-metadata, no experimentalDecorators, no JavaScript router. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d8be36b. 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.
Shell commands in SKILL.md call:
bunbunxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use bunx, which can reach the network depending on how they are called.
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.
New Package loads about 1.5k tokens when it runs. Until then it costs about 107 tokens; SKILL.md has 713 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 petarzarkov/dunx at commit d8be36b, republished under its MIT licence (© petarzarkov). 713 words, ~1,465 tokens.
.claude/skills/new-package/SKILL.md (or your agent's skills folder).packages/core is the reference. Copy its shape rather than composing a manifest
from memory.
| Parent | For | Published | Reference |
|---|---|---|---|
packages/ | framework an app imports | yes | packages/core |
tools/ | a CLI a consumer runs (bunx @dunx/<name>) | yes | tools/mcp |
internal/ | repo-only: site, harness, bundle, shared UI | no | internal/ui |
examples/ | an app that consumes the packages | no | examples/minimal |
Two lists decide what publishes, and both must name a new published parent -
they are the only places that know: PUBLISHABLE_DIRS in scripts/version.ts and
PUBLISHED_DIRS in scripts/update-readme.ts. private: true is what actually
stops a publish, so getting the parent wrong fails safe.
A workspace with no build script is skipped by scripts/build-all.ts, which
is how internal/ui ships as source with its exports pointing at src/.
packages/<name>/ or tools/<name>/package.json - copy packages/core/package.json and change name to
@dunx/<name>, description, keywords, homepage, and
repository.directory - the last two carry the parent, so tools/<name>
rather than packages/<name> for a CLI. Leave the rest alone. The fields that are not optional:"type": "module" - without it verbatimModuleSyntax raises TS1287
against ESM syntax, and Node treats the shipped ESM as CommonJSmain + types → dist/ paths, and an exports map with types and
import conditions. No module field, no require condition - ESM only"files": ["LICENSE", "README.md", "dist"] - without it src/ shipsversion: "0.0.0" - scripts/version.ts owns it from herebuild, test, test:cov, typechecktsconfig.json - exactly packages/core/tsconfig.json: extends the root,
include: ["src"], exclude: ["node_modules", "dist"]. One per package. Do
not add a build variant.src/index.ts re-exporting the public surface, LICENSE, README.md.bun install to link the workspace.bun run build && bun run typecheck && bun run test.bun run gen:cov && bun run gen:readme - picks up the coverage badge and the
README Packages table row.bun run ci - rule-example.test.ts fails until examples/full imports
every new public subpath (Rule 4)./release.scripts/build-package.ts derives entrypoints from the manifest's exports and
bin fields. That is deliberate: a subpath cannot be added without also being
built. So the manifest edit is the build change - add the exports key, then
bun run build and confirm the file exists in dist/.
examples/<name>/Same skeleton, minus publishing: "private": true, no files, no exports, no
publishConfig. Depend on packages with "@dunx/core": "workspace:*".
Name it @dunx/example-<dir>. CI reaches every example through
bun run --filter '@dunx/example-*' test, so an off-pattern name is an example
that silently stops being checked. It needs a bunfig.toml with the compiler
preload under both the root and [test], a tsconfig.json extending the root, a
typecheck script, and a test script with at least one test - --filter
matches only workspaces that have the script, so an example without one is skipped
without saying so.
There are four, and they are not one per package - they are a ladder of
questions an evaluator asks in order (minimal → databases / testing →
full). Per-package examples were tried and reverted; that reversal holds. Before
adding a fifth, read docs/ROADMAP.md, "The example ladder", which records which
candidates were rejected and why:
examples/full is the integration example. It grows through the phases and is
the only place the packages are shown composing. Do not fork it per phase, and do
not carve pieces out of it into new examples.examples/minimal is valuable only because it is small. Do not add to it.An example that needs a service CI does not have (Redis, Postgres, MySQL, S3, network) must detect that, print a clear "skipping" line, and still exit 0. An example that cannot run is an example nobody notices has rotted.
.js extension. tsc copies the specifier verbatim
into the emitted .d.ts; extensionless fails for consumers on
node16/nodenext. moduleResolution: nodenext makes this a compile error
here instead of their problem.dependencies unless genuinely required at runtime. Validation-library
adapters go in peerDependencies.Finish with the publish-guard agent - it checks the exports map against real
dist/ output.
© petarzarkov, 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 .claude/skills/new-package of petarzarkov/dunx.
Open the folder on GitHubat commit d8be36b
New Package 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 |
|---|---|---|---|---|---|---|
| New Package this skillpetarzarkov/dunx | 100 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Add Packageremix-run/remix | 33k | — | ~2k | Automated safety check: Pass | MIT | |
| Enforce Rules For Typescriptmoeru-ai/airi | 50k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Adk Readme WriterBrainDAO/adk-ts | 119 | — | ~2.6k | Automated safety check: Notes | MIT | |
| Nx Importnrwl/nx | 29k | 6 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Link Workspace Packagesnomcopter/react-mosaic | 4.8k | 6 repos | ~760 | Automated safety check: Pass | Custom licence |
remix-run/remix
Create or align a package in the Remix monorepo to match existing package conventions.
moeru-ai/airi
Enforce AIRI's TypeScript and Vue source rules for imports, naming, comments, JSDoc, fallbacks, stateful and protocol code, and module design.
BrainDAO/adk-ts
ADK-TS README specialist. An agent skill from BrainDAO/adk-ts.
nrwl/nx
Import, merge, or combine repositories into an Nx workspace using nx import.
nomcopter/react-mosaic
Link workspace packages in monorepos (npm, yarn, pnpm, bun).
teambit/bit
Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.
petarzarkov/dunx
Revise one documentation file so it states facts instead of performing insight, and get it under the budgets in scripts/no-slop.test.ts.
petarzarkov/dunx
Version and publish @dunx/ packages to npm. An agent skill from petarzarkov/dunx.
petarzarkov/dunx
Resolve an open technical question by measuring it on real Bun instead of assuming, then record the verified result in docs/architecture/constraints.md.
petarzarkov/dunx
Write or refresh HANDOFF.md - a compact resume point holding completed objectives, live file paths, approaches already tried and rejected, and the exact next steps, placed against the roadmap in…
petarzarkov/dunx
Regenerate the coverage report and badges, or diagnose a wrong percentage, a 404ing badge, or a package showing 0%.
Works with
Categories
Add a workspace to the dunx monorepo - a published package under packages/, a published CLI under tools/, a private workspace under internal/, or an example under examples/ - with correct manifest…. New Package is an agent skill from petarzarkov/dunx. Add a workspace to the dunx monorepo - a published package under packages/, a published CLI under tools/, a private workspace under internal/, or an example under examples/ - with correct manifest fields, tsconfig, exports-driven build entrypoints, README, and coverage badge.
New Package fits situations like: creating @dunx/http; @dunx/create-app; adding a public subpath export to an existing package.
Run `npx skills add petarzarkov/dunx --skill new-package -a claude-code`. Or copy the skill folder (.claude/skills/new-package in petarzarkov/dunx) into .claude/skills/new-package in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petarzarkov/dunx --skill new-package -a codex`. Or copy the skill folder (.claude/skills/new-package in petarzarkov/dunx) into .agents/skills/new-package 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 petarzarkov/dunx --skill new-package -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/new-package, .gemini/skills/new-package, .github/skills/new-package and .opencode/skills/new-package in your project.
Going by SKILL.md and its folder, New Package needs the command-line tools its instructions call (bun and bunx).
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.
New Package 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.5k tokens (SKILL.md is roughly 5.9k 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 New Package: Add Package (remix-run/remix, 33k stars), Enforce Rules For Typescript (moeru-ai/airi, 50k stars), Adk Readme Writer (BrainDAO/adk-ts, 119 stars) and Nx Import (nrwl/nx, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
petarzarkov (a GitHub user) maintains it in petarzarkov/dunx, which has 100 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.
Source: petarzarkov/dunx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.