Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions .cursor/rules/versioning-with-npm.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@

You are an expert release manager for a Yarn 4 monorepo who uses the npm CLI for quick version bumps and patch releases.

# Versioning With npm CLI

## Policy
- Prefer small, fast patch releases for incremental work.
- Treat new components and minor fixes as patch releases when they are additive and low-risk.
- Reserve minor/major only for notable feature waves or breaking changes.

Note: While the repo supports Changesets for broader release coordination, this rule documents the npm CLI flow for quick iterations.

## What Counts As “Small”
- Additive components (new UI or form wrappers) without breaking changes
- Bug fixes, perf tweaks, a11y refinements, copy/docs updates
- Internal refactors that don’t change public APIs

## Pre-flight
- Clean working tree: no uncommitted changes
- On a release-worthy branch (e.g., `main`)
- Build and tests pass: `yarn build && yarn test`

## Patch Bump (Single Workspace)
For the published package `@lambdacurry/forms`:

```bash
# Bump version with custom message
npm version patch -w @lambdacurry/forms -m "Add DateField component and fix TextField accessibility"

# The -m flag creates the git commit automatically with your message
# No need for separate git add/commit steps

## Post-version Steps
After running `npm version patch`, you'll need to:

1. **Return to top level**: `cd ../..` (if you're in the package directory)
2. **Update lockfile**: `yarn install` to update `yarn.lock` with the new version
3. **Commit lockfile**: `git add yarn.lock && git commit -m "Update yarn.lock for @lambdacurry/forms vX.Y.Z"`

This ensures the lockfile reflects the new package version and maintains consistency across the monorepo.
```

Guidelines:
- Keep the summary one line and human-readable.
- Examples: "Add DateField; fix TextField aria; smaller bundle".
- This updates `packages/components/package.json` and creates a normal commit without tags.

## Open PR and Merge
- Push your branch and open a PR.
- When the PR merges into `main`, GitHub CI publishes the package. No manual tagging or `npm publish` needed.

## Minor / Major (When Needed)
- Minor: larger feature sets or notable additions across multiple components
```bash
npm version minor -w @lambdacurry/forms -m "Add comprehensive form validation and new field types"
```
- Major: any breaking change (API removals/renames, behavior changes)
```bash
npm version major -w @lambdacurry/forms -m "Breaking: rename onSubmit to handleSubmit; remove deprecated props"
```

## Summary Message Tips
- Keep it under ~100 chars; list 2–3 highlights separated by semicolons
- Focus on user-visible changes first; include critical fixes
- Avoid noisy implementation detail; link to PR/issue in the PR body

## Coordination With Changesets
- Use this npm CLI flow for quick, low-risk patches.
- For multi-package changes, coordinated releases, or richer changelogs, prefer Changesets (`yarn changeset`) and follow the existing repo workflow.


## Coordination With Changesets
- Use this npm CLI flow for quick, low-risk patches.
- For multi-package changes, coordinated releases, or richer changelogs, prefer Changesets (`yarn changeset`) and follow the existing repo workflow.
65 changes: 65 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Repository Guidelines

## Project Structure & Module Organization
- `apps/docs`: Storybook docs, examples, and UI tests.
- `packages/components`: Source for `@lambdacurry/forms` (`src/**`, built to `dist/`).
- `types/`: Shared ambient types.
- `.changeset/`: Versioning and release metadata.
- Root configs: `biome.json`, `turbo.json`, `tsconfig.json`, `package.json` (Yarn workspaces).

## Build, Test, and Development Commands
- `yarn dev`: Run all workspace dev tasks via Turbo.
- `yarn build`: Build all packages/apps.
- `yarn serve`: Serve built Storybook (`apps/docs`).
- `yarn test`: Run workspace tests (Storybook test-runner in `apps/docs`).
- `yarn format-and-lint` | `:fix`: Check/auto-fix with Biome.
- Per workspace (examples):
- `yarn workspace @lambdacurry/forms build`
- `yarn workspace @lambdacurry/forms-docs dev`

## Coding Style & Naming Conventions
- Indentation: 2 spaces; max line width 120; single quotes (Biome enforced).
- TypeScript + React (ES modules). Keep components pure and typed.
- Filenames: kebab-case (e.g., `text-field.tsx`, `data-table-filter/**`).
- Components/Types: PascalCase; hooks: camelCase with `use*` prefix.
- Imports: organized automatically (Biome). Prefer local `index.ts` barrels when useful.

## Testing Guidelines
- Framework: Storybook Test Runner (Playwright under the hood) in `apps/docs`.
- Naming: co-locate tests as `*.test.tsx` near stories/components.
- Run: `yarn test` (CI-like) or `yarn workspace @lambdacurry/forms-docs test:local`.
- Cover critical interactions (forms, validation, a11y, filter behavior). Add stories to exercise states.

## Commit & Pull Request Guidelines
- Commits: short imperative subject, optional scope, concise body explaining rationale.
- Example: `Fix: remove deprecated dropdown select`.
- PRs: clear description, linked issues, screenshots or Storybook links, notes on testing.
- Required checks: `yarn format-and-lint` passes; build succeeds; tests updated/added.
- Versioning: when changing published package(s), add a Changeset (`yarn changeset`) before merge.

## Security & Configuration
- Node `22.9.0` (`.nvmrc`) and Yarn 4 (`packageManager`).
- Do not commit secrets. Keep large artifacts out of VCS (`dist`, `node_modules`).
- PR previews for Storybook are published via GitHub Pages; verify links in PR comments.

## Cursor Rules Review
- `.cursor/rules/react-typescript-patterns.mdc` (Always): React 19 + TS conventions, refs, props/types, naming.
- `.cursor/rules/ui-component-patterns.mdc` (Always): Radix + Tailwind 4 + CVA patterns, a11y, performance.
- `.cursor/rules/form-component-patterns.mdc`: Remix Hook Form + Zod wrappers, errors, server actions.
- `.cursor/rules/storybook-testing.mdc`: Storybook play tests, router stub decorator, local/CI flows.
- `.cursor/rules/monorepo-organization.mdc`: Imports/exports, package boundaries, Turbo/Vite/TS paths.
- `.cursor/rules/versioning-with-npm.mdc`: npm CLI version bumps (patch-first), CI publishes on merge.

When to review before starting work
- Building/refactoring UI components: react-typescript-patterns + ui-component-patterns.
- Form-aware components or validation: form-component-patterns.
- Writing/updating stories or interaction tests: storybook-testing.
- Moving files, changing exports/imports, adding deps/build entries: monorepo-organization.
- Complex UI (data table, Radix primitives, variants): ui-component-patterns for a11y/perf.

Quick checklist
- Files/names: kebab-case files; PascalCase components; named exports only.
- Types: explicit props interfaces; React 19 ref patterns; organize imports (Biome).
- Forms: Zod schemas, proper messages, `fetcher.Form`, show `FormMessage` errors.
- Tests: per-story decorators, semantic queries, three-phase play tests; run `yarn test`.
- Monorepo: no cross-package relative imports; verify `exports`, TS `paths`, Turbo outputs.
140 changes: 0 additions & 140 deletions apps/docs/src/remix-hook-form/dropdown-menu-select.stories.tsx

This file was deleted.

Loading