with one click
write-api-docs
Write or audit public API docs for Remix packages. Use when adding or tightening JSDoc on exported functions, classes, interfaces, type aliases, or option objects.
Menu
Write or audit public API docs for Remix packages. Use when adding or tightening JSDoc on exported functions, classes, interfaces, type aliases, or option objects.
| name | write-api-docs |
| description | Write or audit public API docs for Remix packages. Use when adding or tightening JSDoc on exported functions, classes, interfaces, type aliases, or option objects. |
Use this skill when documenting public APIs in Remix packages.
The goal is to document the API users can actually import, not every helper in src/lib. Work from the package exports outward, add concise JSDoc to the public declarations, and make sure the result passes the repo's ESLint JSDoc rules.
This skill owns detailed JSDoc style and lint expectations. If documenting an API reveals that the TypeScript contract itself should change, use the typescript-expert skill for the type design work.
src entry files that back those exports.src/lib.pnpm run lint.The source of truth is the package's package.json.
package.json exports.src/.src/*.ts entry files define the public surface by re-exporting symbols from src/lib.src/lib is public only if it is re-exported by one of those public src/*.ts entry files.Rules:
src/lib is public.src/lib.For public API, add JSDoc to:
For public interfaces:
For public object-shaped type aliases:
interface when you are introducing a new public object shapeFor overloads:
Keep comments short, factual, and user-facing.
@param / @returns docs as needed.@returns for non-void functions and include a real description.@param, include descriptions and do not add a hyphen before the description.@param default values in parenthesis at the end of the comment, do not use @default tags@example code block when it helps to show a use-case or pattern. Skip @example for simple getters, trivial constructors, or APIs whose usage is self-evident.{@link API} to link to related Remix APIs when it adds value. Don't link every related API — use discretion to avoid noise.Good:
/**
* Creates an {@link AuthProvider} for direct credentials-based authentication.
*
* @param options Parsing and verification hooks for submitted credentials.
* @returns A provider that can be passed to `createAuthLoginRequestHandler()`.
*/
export function createCredentialsAuthProvider(...) {}
Avoid:
/**
* @param {CredentialsAuthProviderOptions} options - options
* @returns {CredentialsAuthProvider}
*/
The relevant rules live in eslint.config.js.
For packages/**/*.{ts,tsx} (excluding tests), ESLint enforces JSDoc on callable declarations such as:
Important enforced details:
jsdoc/require-paramjsdoc/require-param-namejsdoc/require-param-descriptionjsdoc/require-returnsjsdoc/require-returns-descriptionjsdoc/no-typesjsdoc/check-param-namesjsdoc/check-typesjsdoc/check-alignmentPractical implication:
package.json exports instead of guessing from src/lib?src/*.ts entry file?@param and @returns where required?pnpm run lint pass?Build and review Remix 3 applications using the `remix` npm package and subpath imports. Use when working on Remix app structure, routes, controllers, middleware, validation, data access, auth, sessions, file uploads, server setup, UI components, hydration, navigation, or tests.
Fix a reported issue in Remix from a GitHub issue. Use when the user provides a GitHub issue URL and asks to fix a bug, investigate an issue, or reproduce a problem. Handles the full workflow: fetching the issue, finding the reproduction, writing a failing test, and implementing the fix.
Create or update Remix repo change files under `packages/*/.changes`. Use when a user asks for release notes, changes, a missing changelog entry, a prerelease note, or an update to existing unpublished release notes.
Create GitHub pull requests with clear, reviewer-friendly descriptions. Use when asked to open or prepare a PR, especially when the PR needs strong context, related links, and feature usage examples. This skill enforces concise PR structure, avoids redundant sections like validation/testing, and creates the PR with gh CLI.
Create or align a package in the Remix monorepo to match existing package conventions. Use when adding a brand new package under packages/, or when fixing an existing package's structure, test setup, TypeScript/build config, code style, and README layout to match the rest of Remix 3.
Publish a placeholder npm package at version 0.0.0 so package names are reserved and npm OIDC permissions can be configured before CI publishing. Use when creating a brand-new package that is not ready for full release.