Skip to content

Add Node.js CI workflow#13

Closed
cryptofixyup wants to merge 2 commits into
looptech-ai:mainfrom
cryptofixyup:main
Closed

Add Node.js CI workflow#13
cryptofixyup wants to merge 2 commits into
looptech-ai:mainfrom
cryptofixyup:main

Conversation

@cryptofixyup
Copy link
Copy Markdown
Contributor

@cryptofixyup cryptofixyup commented May 9, 2026

This workflow sets up a CI pipeline for Node.js applications, including installation of dependencies, building the code, and running tests across multiple Node.js versions.

What

Why

Type of change

  • Registry entry — adds or edits a row in registry.json for an existing format.
  • New format — adds a schemas/<name>@<int>.json plus ok / bad fixtures.
  • Code / docs / tooling — changes scripts, MCP, CLI, site, workflows, or docs.

Checklist

  • If this adds a registry entry: the new id matches owner/repo and is unique.
  • If this adds a schema or fixture: ajv compiles, the ok fixture validates, the bad fixture fails.
  • npm test is green locally.
  • npm run validate is green (or the PR explains why a graph_url 404s in CI).
  • No third-party CDN added without a pinned version + integrity hash where possible.
  • No backend / always-on LLM dependency introduced — the registry stays a static-pointer service (see How it works).
  • First-time contributor? Include a Signed-off-by: line per DCO, or note in the PR that you'd like help adding one.

For non-technical contributors 👋

If this is your first PR, just fill in What and Why. A maintainer will help with anything else.

Summary by CodeRabbit

  • Chores

    • Added a continuous integration workflow to run automated build and tests across multiple Node.js versions on code changes.
    • Refresh of registry and site metadata timestamps to reflect recent sync/generation times.
  • Documentation

    • Updated README registry entries to reflect new last-synced dates.

Review Change Stack

This workflow sets up a CI pipeline for Node.js applications, including installation of dependencies, building the code, and running tests across multiple Node.js versions.
@cryptofixyup cryptofixyup requested a review from amacsmith as a code owner May 9, 2026 23:01
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 9, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 95107046-d493-4c92-a00a-1e7dded667cf

📥 Commits

Reviewing files that changed from the base of the PR and between 0e5dd96 and 53f5224.

📒 Files selected for processing (4)
  • README.md
  • registry.json
  • site/.well-known/repos.json
  • site/stats.json
✅ Files skipped from review due to trivial changes (4)
  • site/stats.json
  • site/.well-known/repos.json
  • README.md
  • registry.json

📝 Walkthrough

Walkthrough

Adds a Node.js CI GitHub Actions workflow (matrix: 18.x, 20.x, 22.x) with checkout, setup, install, optional build, and tests; also refreshes generated_at/last_synced/drift_checked_at timestamps in registry and site metadata and updates three README table dates.

Changes

Node.js CI Workflow Setup

Layer / File(s) Summary
Workflow Header and Trigger
.github/workflows/node.js.yml
Adds header comments and configures triggers for push and pull_request on main.
Build Job and Matrix
.github/workflows/node.js.yml
Defines build job on ubuntu-latest with Node.js matrix 18.x, 20.x, 22.x.
CI Job Steps
.github/workflows/node.js.yml
Implements steps: checkout, actions/setup-node@v4 with npm cache, npm ci, npm run build --if-present, and npm test.

Registry & Site Timestamp Updates

Layer / File(s) Summary
Registry generated_at
registry.json
Updates the top-level generated_at timestamp.
Registry entries timestamps
registry.json
Refreshes last_synced and drift_checked_at for three registry entries.
Site metadata and README
site/.well-known/repos.json, site/stats.json, README.md
Updates last_synced in repos.json, generated_at in site/stats.json, and advances three Last synced dates in README table.

Estimated Code Review Effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A workflow bunny hops with glee,
Testing Node versions one, two, three!
Timestamps tick and README gleams,
CI hums softly through the streams. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add Node.js CI workflow' directly and clearly describes the main change—adding a new GitHub Actions workflow for Node.js CI—which is the primary modification in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
⚔️ Resolve merge conflicts
  • Resolve merge conflict in branch main

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0e5dd961e9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Drop unsupported Node 18 from CI matrix

The workflow adds 18.x to the test matrix even though this repo explicitly declares Node >=20.0.0 in package.json (and .nvmrc is 20), so CI is now validating an environment the project does not support. This creates avoidable red builds when scripts or dependencies rely on Node 20+ behavior, which can block merges despite supported runtimes being healthy; the matrix should align to supported versions only.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
.github/workflows/node.js.yml (1)

17-21: 💤 Low value

Consider adding fail-fast and timeout configuration.

To improve CI robustness:

  • Add fail-fast: false to the strategy to allow all Node.js versions to complete testing even if one fails
  • Add timeout-minutes to the job to prevent hung builds
🔧 Suggested enhancement
     strategy:
+      fail-fast: false
       matrix:
         node-version: [18.x, 20.x, 22.x]
         # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+    
+    timeout-minutes: 10
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/node.js.yml around lines 17 - 21, Update the GitHub
Actions job strategy and job-level timeout: inside the existing strategy block
(the matrix that defines node-version) add fail-fast: false so other matrix jobs
continue running even if one fails, and add a timeout-minutes key at the job
level (e.g., under the job that uses strategy/matrix) to cap maximum run time
and avoid hung builds; reference the strategy/matrix node-version entries when
editing to ensure placement is correct.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/node.js.yml:
- Around line 23-25: Update the GitHub Actions steps referencing
actions/checkout and actions/setup-node to use the latest stable major versions
by changing the action references from actions/checkout@v4 to
actions/checkout@v6 and from actions/setup-node@v4 to actions/setup-node@v6 in
the workflow file (look for the uses: entries for actions/checkout and
actions/setup-node).
- Line 19: Update the GitHub Actions Node.js matrix under the node-version key
to remove EOL versions and test current supported LTS releases by replacing the
array [18.x, 20.x, 22.x] with the supported set (e.g., [22.x, 24.x]); if you
must keep legacy testing, include 20.x only explicitly after confirming
requirement, but do not keep 18.x which is EOL.

---

Nitpick comments:
In @.github/workflows/node.js.yml:
- Around line 17-21: Update the GitHub Actions job strategy and job-level
timeout: inside the existing strategy block (the matrix that defines
node-version) add fail-fast: false so other matrix jobs continue running even if
one fails, and add a timeout-minutes key at the job level (e.g., under the job
that uses strategy/matrix) to cap maximum run time and avoid hung builds;
reference the strategy/matrix node-version entries when editing to ensure
placement is correct.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ece5f14b-e456-465f-af7f-2c9c20b82f4f

📥 Commits

Reviewing files that changed from the base of the PR and between 41cf450 and 0e5dd96.

📒 Files selected for processing (1)
  • .github/workflows/node.js.yml
📜 Review details
🔇 Additional comments (2)
.github/workflows/node.js.yml (2)

1-10: LGTM!

The workflow name is descriptive, and the trigger configuration appropriately runs CI on pushes and pull requests to the main branch.


31-31: ⚡ Quick win

Test script is already defined in package.json.

The package.json contains a test script (node --test 'scripts/__tests__/*.test.mjs'), so the npm test command will execute successfully. Adding --if-present is not necessary for this repository.

			> Likely an incorrect or invalid review comment.


strategy:
matrix:
node-version: [18.x, 20.x, 22.x]
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

What are the currently supported Node.js LTS versions as of May 2026?

💡 Result:

As of May 9, 2026, the Node.js “LTS” release lines currently supported by the Node.js project are: 1) Node.js 24.x — Active LTS [1] 2) Node.js 22.x — Maintenance LTS [1] 3) Node.js 20.x — Maintenance LTS (ends Apr 30, 2026; still an LTS line during May 2026 only if downstream/security tooling continues it, but per the project schedule its EOL date is Apr 30, 2026) [2][3] Note: Node.js 25.x is “Current” (not LTS) [1][2], and Node.js 26.x is also “Current” (not yet LTS; enters LTS in October 2026) [4].

Citations:


Update Node.js matrix to remove EOL versions and include current LTS releases.

Node.js 18.x reached end-of-life in April 2025, and Node.js 20.x reached end-of-life on April 30, 2026. Both versions no longer receive security updates. The current matrix should be updated to test against supported releases: Node.js 24.x (Active LTS), 22.x (Maintenance LTS), and optionally 20.x only if legacy support is explicitly required. Testing against EOL versions provides false confidence and should be avoided.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/node.js.yml at line 19, Update the GitHub Actions Node.js
matrix under the node-version key to remove EOL versions and test current
supported LTS releases by replacing the array [18.x, 20.x, 22.x] with the
supported set (e.g., [22.x, 24.x]); if you must keep legacy testing, include
20.x only explicitly after confirming requirement, but do not keep 18.x which is
EOL.

Comment on lines +23 to +25
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the latest releases of GitHub Actions used in this workflow

echo "Checking actions/checkout releases..."
gh api repos/actions/checkout/releases/latest --jq '.tag_name'

echo -e "\nChecking actions/setup-node releases..."
gh api repos/actions/setup-node/releases/latest --jq '.tag_name'

Repository: looptech-ai/understand-quickly

Length of output: 167


Update GitHub Actions to the latest versions.

The workflow is using actions/checkout@v4 and actions/setup-node@v4, but v6 is now the latest stable version for both actions. Update to actions/checkout@v6 and actions/setup-node@v6 to ensure access to the latest security patches and features.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/node.js.yml around lines 23 - 25, Update the GitHub
Actions steps referencing actions/checkout and actions/setup-node to use the
latest stable major versions by changing the action references from
actions/checkout@v4 to actions/checkout@v6 and from actions/setup-node@v4 to
actions/setup-node@v6 in the workflow file (look for the uses: entries for
actions/checkout and actions/setup-node).

Copy link
Copy Markdown
Member

amacsmith commented May 10, 2026

Thanks so much for opening this, @cryptofixyup! 🙏 Genuinely appreciate the contribution and the engagement — this kind of "let's actually test on multiple Node versions" hygiene is exactly what catches breakage before users hit it.

Quick context update so you know where things stand:

  1. Node 18 support is landing now. When you opened this, our package.json declared engines: ">=20.0.0", which would have made the 18.x leg of your matrix fail at npm ci. We've just opened #14 to lower the engines floor to >=18.0.0 across root/cli/mcp — once that merges, your workflow will actually run end-to-end on all three Node versions in your matrix. So your PR effectively prompted that improvement. Thank you.

  2. What this workflow adds vs what we already have. Our existing validate.yml only runs on changes to registry.json, schemas/, scripts/, and package*.json, and only on Node 20 (pinned via .nvmrc). Your workflow fills two real gaps: it covers the other paths (docs, site, cli, mcp), and it covers Node 18 + Node 22. That's genuinely useful.

  3. One tiny tidy-up before we merge. The npm run build --if-present step is a no-op for us (no build script), so it can be dropped — but it's harmless, so this isn't a blocker. We'll either rebase your branch onto main once chore: lower minimum Node version to 18 #14 lands, or merge as-is. Either way, you get credit for the contribution.

Thanks again for jumping in! 🚀

Copy link
Copy Markdown
Member

Quick update, @cryptofixyup — and thank you again for kicking this off! 🙏

Here's where we landed:

  1. Node 18 support is live. #14 merged: engines.node is now >=18.0.0 across root/cli/mcp, so the 18.x leg of your matrix is now actually viable. Your PR directly prompted this improvement — appreciate it.

  2. Your workflow has been cherry-picked into a new PR with you credited as co-author. See ci: add Node matrix workflow (18.x, 20.x, 22.x) #15 — it carries Co-authored-by: cryptofixyup <…> so the contribution shows up on your GitHub profile. We did three small refinements to fit our conventions: dropped npm run build --if-present (we don't have a build script), pinned actions/checkout and actions/setup-node to the @v6 versions we just bumped to in chore(actions): bump the actions group across 1 directory with 6 updates #11, and added a concurrency group + fail-fast: false.

  3. Why we're closing this PR rather than merging it. Your PR's head branch picked up some upstream registry-sync timestamp diffs along the way. Merging as-is would briefly regress those timestamps on main (about a day's worth of sync data) — net-net cleaner to land the equivalent change via ci: add Node matrix workflow (18.x, 20.x, 22.x) #15. We'd have happily updated your branch directly instead, but Allow edits from maintainers is off on this PR, so we couldn't do that from our side. Totally fine — flagging it just for context, not as criticism.

Genuinely grateful for the engagement. Drop more contributions our way any time! 🚀


Generated by Claude Code

@amacsmith amacsmith closed this May 10, 2026
amacsmith added a commit that referenced this pull request May 10, 2026
* ci: add Node matrix workflow (18.x, 20.x, 22.x)

Complements validate.yml (which pins to .nvmrc=20) by smoke-testing
'npm ci && npm test' on the full engine band declared in package.json
(>= 18.0.0 after #14). Catches breakage on newer Node versions before
downstream users hit it.

Originally proposed by @cryptofixyup in #13. Refinements vs the
original:
- Renamed to node-matrix.yml so the intent is explicit alongside
  validate.yml, smoke.yml, etc.
- Pinned actions to the versions used elsewhere in the repo
  (checkout@v6, setup-node@v6) per the actions group bump in #11.
- Dropped 'npm run build --if-present' (no build script in root).
- Added 'permissions: contents: read' to follow the principle of
  least privilege.
- Added concurrency group to cancel superseded runs.
- Added 'fail-fast: false' so all matrix legs report independently
  rather than aborting on the first failure.

Co-authored-by: cryptofixyup <199330534+cryptofixyup@users.noreply.github.com>

* fix(ci): Node 18/20 glob expansion + add publish-time version regression test

- npm test/test:coverage scripts now use bash glob expansion via
  `bash -c 'shopt -s nullglob; node --test scripts/__tests__/*.test.mjs'`
  so Node 18/20 (which don't support glob in --test) work alongside
  Node 22/24.

- New scripts/check-versions.mjs runs before each publish workflow
  (cli, mcp, pysdk) and asserts that the package.json version matches
  the tag-implied version. Catches the class of bug where a tag like
  cli-v0.2.0 publishes a 0.1.1 package because version bump was missed.
  12 regression tests cover semver malformedness, tag/version mismatch,
  refs/tags/ prefix tolerance, pyproject.toml read path, and
  unknown-prefix tolerance.

Closes #15.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: cryptofixyup <199330534+cryptofixyup@users.noreply.github.com>
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.

2 participants