name: library-craft description: "Reviews reusable package craft: exports, layout, naming, tests, docs, compatibility, and release shape. Use for npm packages, SDKs, framework utilities, reusable modules, or public APIs."
Library Craft
Quick Start
Use this skill when the work affects a reusable package, public API, package exports, or maintainer-facing source organization.
Example trigger: library-craft this package before we publish
Default posture: analysis first. Do not edit source files unless the user explicitly asks to implement.
Default scope: review the whole library contract unless the user gives a narrower scope.
Breaking changes are welcome when they make the library cleaner, smaller, or more honest. If the user opts out of breaking changes, preserve compatibility and name the trade-off.
Workflow
- Identify the package, public entrypoints, consumer contract, and whether breaking changes are allowed.
- Read package metadata, export maps, source entrypoints, build config, tests, fixtures, README/docs, examples, and release notes.
- Separate the public surface from internal shape.
- Review the craft lenses:
surface- exports, subpaths, types, defaults, runtime guarantees.shape- folders, helpers, generated files, fixtures, build output.names- user-facing concepts, options, files, helpers.tests- public API, fixtures, examples, type tests, regression checks.comments- public docs, rationale, compatibility notes, noisy narration.release- semver impact, migration path, shims, deprecations.
- Load references/principles.md for the review vocabulary.
- For serious public-surface decisions, recommend focused ecosystem comparison. Load references/ecosystem-comparison.md before proposing large API, export, compatibility, or release-shape changes.
- Load references/report-shape.md before writing the final aggressive report.
Action Labels
keep- preserve a pattern that is earning its cost.rename- a name hides the concept or leaks implementation.move- file or folder placement fights the scan path.narrow- public surface or options are broader than needed.split- one entrypoint or file owns multiple public concepts.merge- separation creates ceremony without a real concept.comment- comments are missing, stale, noisy, or API-significant.test- contract, fixture, type, or example coverage is missing.break- compatibility is making the package worse.
For every break, include what breaks, why it is worth it, the migration path, and whether a compatibility shim should exist.
Rules
- Keep
keepshort; spend most of the report on pressure. - Treat
package.jsonexports, README examples, and generated types as API. - Comments explain why; they do not narrate what the code already says.
- Do not invent a new taxonomy when the package already has a clear local pattern.
- If the issue is really module depth, seam design, or locality, hand off to
improve-codebase-architecture. - If naming changes affect project language, say so and suggest
grill-with-docs; do not update project context by default. - Do not publish comments, issues, releases, or PR notes without explicit user consent.