Skip to content

chore: setup spell-check and root pnpm config#2

Merged
jamesbhobbs merged 8 commits into
better-readmefrom
spell-check
Sep 29, 2025
Merged

chore: setup spell-check and root pnpm config#2
jamesbhobbs merged 8 commits into
better-readmefrom
spell-check

Conversation

@jamesbhobbs

@jamesbhobbs jamesbhobbs commented Sep 29, 2025

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Chores

    • Initialized project tooling and metadata for package management.
    • Added spell-check tooling with scripts and a curated dictionary for consistent text quality.
    • Defined required Node.js and package manager versions to standardize the development environment.
    • Updated ignore rules to exclude common build and dependency artifacts (e.g., node_modules).
  • CI

    • Introduced an automated spell-check workflow that runs on pushes and pull requests to catch typos early.

@coderabbitai

coderabbitai Bot commented Sep 29, 2025

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@jamesbhobbs has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 4 minutes and 22 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between d19ef20 and 5249cf1.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (8)
  • .github/workflows/ci.yml (1 hunks)
  • .husky/pre-commit (1 hunks)
  • .husky/pre-push (1 hunks)
  • .prettierignore (1 hunks)
  • .prettierrc (1 hunks)
  • CONTRIBUTING.md (2 hunks)
  • README.md (3 hunks)
  • package.json (1 hunks)
📝 Walkthrough

Walkthrough

Adds CI and spell-check tooling: new GitHub Actions workflow .github/workflows/ci.yml named "CI" that runs a spell-check job on pushes to main and on PRs; job checks out code, sets up pnpm and Node.js (using .nvmrc), installs dependencies with a frozen lockfile, and runs the pnpm spell-check script. Adds .nvmrc (Node 22.14.0), cspell.json (spell-check configuration and ignores), package.json (project metadata, engines, pnpm, cspell devDependency, spell-check and spell-check:fix scripts), and updates .gitignore to ignore node_modules.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant GH as GitHub
  participant Runner as Actions Runner
  participant Node as Node.js (.nvmrc)
  participant PNPM as pnpm
  participant CSpell as cspell

  Dev->>GH: Push to main / Open PR
  GH-->>Runner: Trigger "CI" workflow
  rect rgb(245,250,240)
    note over Runner: Job: spell-check
    Runner->>Runner: actions/checkout
    Runner->>Node: setup-node (node-version-file: .nvmrc)
    Runner->>PNPM: setup-pnpm (cache enabled)
    Runner->>PNPM: pnpm install --frozen-lockfile
    Runner->>CSpell: pnpm run spell-check
    alt No spelling issues
      CSpell-->>Runner: exit 0
      Runner-->>GH: Job success
    else Spelling issues
      CSpell-->>Runner: non-zero exit
      Runner-->>GH: Job failure
    end
  end
Loading

Possibly related PRs

  • deepnote/deepnote#18461: Updates workflows/actions to source Node.js version from .nvmrc (strong code-level overlap with this workflow change).

Suggested reviewers

  • FilipPyrek
  • hc2p
  • mfranczel

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title succinctly captures the main changes—adding spell-check configuration and root pnpm setup—using a clear “chore” prefix and specific terms that reflect the CI workflow, cspell settings, .nvmrc, and package.json updates.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a5b841a and 24c7fc9.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • .github/workflows/ci.yml (1 hunks)
  • .gitignore (1 hunks)
  • .nvmrc (1 hunks)
  • cspell.json (1 hunks)
  • package.json (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-08-25T14:42:02.289Z
Learnt from: CR
PR: deepnote/deepnote#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-25T14:42:02.289Z
Learning: Applies to {.nvmrc,.node-version,package.json} : Use Node.js 22 for this project

Applied to files:

  • .nvmrc
📚 Learning: 2025-09-29T10:19:33.783Z
Learnt from: CR
PR: deepnote/deepnote-internal#0
File: CLAUDE.md:0-0
Timestamp: 2025-09-29T10:19:33.783Z
Learning: Applies to {.nvmrc,.node-version,package.json} : Use Node.js 22 for this project (e.g., nvm use 22)

Applied to files:

  • .nvmrc
🪛 YAMLlint (1.37.1)
.github/workflows/ci.yml

[warning] 3-3: truthy value should be one of [false, true]

(truthy)

🔇 Additional comments (2)
package.json (1)

6-6: Align pnpm version in CI
package.json already declares "packageManager": "[email protected]", engines.pnpm is >=10.17.1 and pnpm-lock.yaml exists. Ensure your CI workflows install and run [email protected] to match.

.github/workflows/ci.yml (1)

14-27: Pin GitHub Actions to specific SHAs and lock PNPM to 10.17.1

  • Replace actions/checkout@v4, actions/setup-node@v4, and pnpm/action-setup@v2 with their commit SHAs for supply-chain safety.
  • Update pnpm/action-setup version from latest to '10.17.1' (matches package.json).

Comment thread .github/workflows/ci.yml
Comment on lines +9 to +11
jobs:
spell-check:
runs-on: ubuntu-latest

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Harden workflow permissions and add concurrency.

Limit GITHUB_TOKEN and cancel superseded runs.

 jobs:
+  # Principle of least privilege
+  permissions:
+    contents: read
+
   spell-check:
     runs-on: ubuntu-latest
+    concurrency:
+      group: ${{ github.workflow }}-${{ github.ref }}
+      cancel-in-progress: true

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 9-11, harden the workflow by adding a
top-level permissions block that restricts GITHUB_TOKEN to the minimum needed
(e.g., permissions: contents: read) and add a top-level concurrency block to
cancel superseded runs (e.g., concurrency: group: ${{ github.workflow }}-${{
github.ref }}, cancel-in-progress: true). Update the file to include both blocks
above the jobs section so the spell-check job inherits the limited token scope
and runs will be cancelled when a newer run for the same workflow/ref starts.

Comment thread .github/workflows/ci.yml Outdated
Comment on lines +28 to +29
- name: Install dependencies
run: pnpm install --frozen-lockfile

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

--frozen-lockfile will fail without pnpm-lock.yaml.

Either commit a lockfile or drop the flag. Also, Node cache=pnpm is ineffective without a lockfile.

-      run: pnpm install --frozen-lockfile
+      run: pnpm install --frozen-lockfile
+# Commit pnpm-lock.yaml, or change to:
+# run: pnpm install

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 28 to 29, the job runs "pnpm install
--frozen-lockfile" which will fail if pnpm-lock.yaml is not committed and also
makes the Node cache=pnpm ineffective; either commit and include pnpm-lock.yaml
in the repo and keep --frozen-lockfile (so CI uses the lockfile and cache
works), or remove the --frozen-lockfile flag and/or change the cache strategy to
a generic node_modules/cache so installs won't fail when the lockfile is
absent—update the workflow to reflect the chosen approach and ensure the cache
step matches (pnpm cache/node setup) if keeping the lockfile.

Comment thread .gitignore
@@ -0,0 +1 @@
node_modules No newline at end of file

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Good start; consider trailing slash and common folders.

Use a trailing slash and include typical tool dirs.

-node_modules
+node_modules/
+.pnpm-store/
+dist/
+build/
+coverage/
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
node_modules
node_modules/
.pnpm-store/
dist/
build/
coverage/
🤖 Prompt for AI Agents
In .gitignore around line 1, the entry "node_modules" should use a trailing
slash and you should add other common ignores; replace "node_modules" with
"node_modules/" and add typical tool and build folders (e.g. dist/, build/,
.next/, .cache/ or .parcel-cache/, coverage/), editor/IDE folders (.vscode/,
.idea/), local env and OS files (.env, .DS_Store), and common logs
(npm-debug.log, yarn-error.log, package-lock.json if you want to avoid
committing lockfiles) so the repo ignores generated modules, builds, caches,
editor settings and sensitive env files.

Comment thread .nvmrc
@@ -0,0 +1 @@
22.14.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

🧩 Analysis chain

Pin looks right. Align engines to Node 22 only.

.nvmrc pins 22.14.0; tighten package.json engines to avoid Node 23.

Proposed engines change (in package.json):

-    "node": ">=22.14.0",
+    "node": ">=22.14.0 <23",

Based on learnings.


🏁 Script executed:

#!/bin/bash
grep -R -n '"engines"' -n package.json -A 5

Length of output: 176


Tighten Node engine range to <23
Update package.json to match .nvmrc by restricting Node to versions below 23.

-    "node": ">=22.14.0",
+    "node": ">=22.14.0 <23",

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
.nvmrc lines 1-1: .nvmrc pins Node to 22.14.0 but package.json currently allows
broader Node versions; update package.json's "engines.node" to match and
restrict to <23 (for example ">=22.14.0 <23") so the declared Node engine range
aligns with .nvmrc; modify the package.json engines field accordingly and save.

Comment thread cspell.json
Comment on lines +1 to +51
{
"version": "0.2",
"language": "en",
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit",
"eslint",
"prettier",
"typescript",
"github",
"workflows",
"repo"
],
"ignorePaths": [
"node_modules/**",
"pnpm-lock.yaml",
".git/**",
"dist/**",
"build/**",
"coverage/**",
"*.min.js",
"*.min.css"
],
"overrides": [
{
"filename": "**/*.md",
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit"
]
}
]
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Config is sensible; minor tweaks for clarity.

  • Words duplicated between root and Markdown override; consider keeping in one place to avoid drift.
  • Consider "useGitignore": true for clarity (often default in v8).
  • Optionally ignore .github/** if workflow noise appears.
 {
   "version": "0.2",
   "language": "en",
+  "useGitignore": true,
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{
"version": "0.2",
"language": "en",
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit",
"eslint",
"prettier",
"typescript",
"github",
"workflows",
"repo"
],
"ignorePaths": [
"node_modules/**",
"pnpm-lock.yaml",
".git/**",
"dist/**",
"build/**",
"coverage/**",
"*.min.js",
"*.min.css"
],
"overrides": [
{
"filename": "**/*.md",
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit"
]
}
]
}
{
"version": "0.2",
"language": "en",
"useGitignore": true,
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit",
"eslint",
"prettier",
"typescript",
"github",
"workflows",
"repo"
],
"ignorePaths": [
"node_modules/**",
"pnpm-lock.yaml",
".git/**",
"dist/**",
"build/**",
"coverage/**",
"*.min.js",
"*.min.css"
],
"overrides": [
{
"filename": "**/*.md",
"words": [
"deepnote",
"jupyter",
"jupyterlab",
"ipynb",
"pnpm",
"monorepo",
"dockerised",
"vscode",
"windsurf",
"oss",
"toolkit"
]
}
]
}
🤖 Prompt for AI Agents
In cspell.json around lines 1 to 51, the review notes duplicate word lists
between the root "words" array and the Markdown override, suggests adding
"useGitignore": true, and optionally ignoring .github/**; remove duplication by
keeping shared words only at the root (or only in the Markdown override) and
remove them from the other location to avoid drift, add "useGitignore": true at
the top-level to respect .gitignore, and add ".github/**" to "ignorePaths" if
you want workflow files excluded.

Comment thread package.json
Comment on lines +7 to +10
"engines": {
"node": ">=22.14.0",
"pnpm": ">=10.17.1"
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Constrain engines to Node 22 to match .nvmrc.

Prevents accidental Node 23 usage.

-    "node": ">=22.14.0",
+    "node": ">=22.14.0 <23",

Based on learnings.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"engines": {
"node": ">=22.14.0",
"pnpm": ">=10.17.1"
},
"engines": {
"node": ">=22.14.0 <23",
"pnpm": ">=10.17.1"
},
🤖 Prompt for AI Agents
In package.json around lines 7 to 10, the "engines.node" range is too permissive
and allows Node 23; update it to constrain to Node 22 to match .nvmrc by
changing the node engine value to a 22-only range (for example ">=22.14.0
<23.0.0" or "22.x"); leave the pnpm engine as-is and commit the package.json
change so CI and developers will be prevented from using Node 23.

Comment thread package.json
"notebook",
"data-science"
],
"license": "UNLICENSED until specific license is agreed upon"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Invalid license value.

Use a valid SPDX expression. If unlicensed/private, use “UNLICENSED”.

-  "license": "UNLICENSED until specific license is agreed upon"
+  "license": "UNLICENSED"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"license": "UNLICENSED until specific license is agreed upon"
"license": "UNLICENSED"
🤖 Prompt for AI Agents
In package.json around line 25 the license field uses an invalid value
"UNLICENSED until specific license is agreed upon"; replace it with a valid SPDX
expression (for example "UNLICENSED" if the package is private/unlicensed, or a
valid identifier like "MIT" or "Apache-2.0") by updating the license property to
the chosen SPDX string.

@jamesbhobbs jamesbhobbs marked this pull request as ready for review September 29, 2025 16:19
@jamesbhobbs jamesbhobbs merged commit e9cc8e2 into better-readme Sep 29, 2025
3 checks passed
@jamesbhobbs jamesbhobbs deleted the spell-check branch September 29, 2025 16:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant