Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
Package Validation (publint & attw)
Validate your package configuration and type declarations before publishing.
Overview
tsdown integrates with publint and Are the types wrong? (attw) to catch common packaging issues. Both are optional dependencies.
Installation
# publint only
npm install -D publint
# attw only
npm install -D @arethetypeswrong/core
# both
npm install -D publint @arethetypeswrong/core
publint
Checks that package.json fields (exports, main, module, types) match your actual output files.
Enable
export default defineConfig({
publint: true,
})
Configuration
export default defineConfig({
publint: {
level: 'error', // 'warning' | 'error' | 'suggestion'
},
})
CLI
tsdown --publint
attw (Are the types wrong?)
Verifies TypeScript declarations are correct across different module resolution strategies (node10, node16, bundler).
Enable
export default defineConfig({
attw: true,
})
Configuration
export default defineConfig({
attw: {
profile: 'node16', // 'strict' | 'node16' | 'esm-only'
level: 'error', // 'warn' | 'error'
ignoreRules: ['false-cjs', 'cjs-resolves-to-esm'],
},
})
Profiles
| Profile | Description |
|---|---|
strict |
Requires all resolutions to pass (default) |
node16 |
Ignores node10 resolution failures |
esm-only |
Ignores node10 and node16-cjs resolution failures |
Ignore Rules
Suppress specific problem types with ignoreRules:
| Rule | Description |
|---|---|
no-resolution |
Module could not be resolved |
untyped-resolution |
Resolution succeeded but has no types |
false-cjs |
Types indicate CJS but implementation is ESM |
false-esm |
Types indicate ESM but implementation is CJS |
cjs-resolves-to-esm |
CJS resolution points to an ESM module |
fallback-condition |
A fallback/wildcard condition was used |
cjs-only-exports-default |
CJS module only exports a default |
named-exports |
Named exports mismatch between types and implementation |
false-export-default |
Types declare a default export that doesn't exist |
missing-export-equals |
Types are missing export = for CJS |
unexpected-module-syntax |
File uses unexpected module syntax |
internal-resolution-error |
Internal resolution error in type checking |
CLI
tsdown --attw
CI Integration
Both tools support CI-aware options:
export default defineConfig({
publint: 'ci-only',
attw: {
enabled: 'ci-only',
profile: 'node16',
level: 'error',
},
})
Both tools require a package.json in your project directory.
Related Options
- CI Environment - CI-aware option details
- Package Exports - Auto-generate exports field