Skip to content

chore: bump deps, modernise Claude Code config, and spring-clean docs#39

Merged
michellepace merged 13 commits into
mainfrom
chore/deps-and-spring-clean
Apr 26, 2026
Merged

chore: bump deps, modernise Claude Code config, and spring-clean docs#39
michellepace merged 13 commits into
mainfrom
chore/deps-and-spring-clean

Conversation

@michellepace

@michellepace michellepace commented Apr 7, 2026

Copy link
Copy Markdown
Owner

Summary

A no-behaviour-change spring clean with five themes:

  • Dependency bumpsnext 16.2.1→16.2.4, react/react-dom 19.2.4→19.2.5, @biomejs/biome 2.4.9→2.4.13, @playwright/test 1.58.2→1.59.1, tailwindcss 4.1.18→4.2.2, typescript 6.0.2→6.0.3, vitest 4.1.2→4.1.5, plus minor bumps to @types/node, @rolldown/plugin-babel, baseline-browser-mapping, jsdom, lefthook, markdownlint-cli2. README and .claude/CLAUDE.md Tech-Stack tables updated to match.
  • Vitest config simplified — dropped vite-tsconfig-paths in favour of Vitest's built-in resolve: { tsconfigPaths: true }.
  • Markdownlint migrated to cli2 format.markdownlint.yaml.markdownlint-cli2.yaml, with new ignores: block (node_modules/**) and two extra disabled rules (MD028, MD032).
  • Docs folder renamex_docs/.xdocs/ (all seven existing files moved verbatim). Removed unused images (github-social-thin.jpg, old rough-notes.png); added nextjs-hero.png (now the README hero), a fresh rough-notes.png, and two new working notes (agentmd-over-skills.md, hero-ui.md). All README links updated.
  • Claude Code config modernised — plugins replace local commands:
    • .claude/settings.json: added $schema; alphabetised permissions; switched syntax from Bash(cmd:*) to Bash(cmd *); collapsed several entries into wildcards (Bash(npm run *), mcp__playwright__browser_*).
    • New enabledPlugins block: git-utils@my-claude-marketplace and typescript-lsp@claude-plugins-official enabled; frontend-design and feature-dev declared but disabled.
    • extraKnownMarketplaces swapped: removed playwright-skill; added my-claude-marketplace and claude-plugins-official.
    • Local commands deleted (now superseded by plugins): .claude/commands/coderabbit.md, commit.md, merge-cleanup.md.

Other small bits

  • Bug fix in app/page.tsx: added h-4 w-4 to the Vercel logomark <Image> to silence the next/image aspect-ratio warning on Vercel.
  • README: added a one-liner about npm install -g typescript-language-server typescript for the new typescript-lsp plugin.
  • .vscode/settings.json: hides **/.ruff_cache in the file explorer.

Heads-up for consumers cloning the template

  • Local Claude Code commands are gone — opt into the marketplace plugins instead.
  • Bookmarks into x_docs/ need updating to .xdocs/.
  • Tooling that referenced .markdownlint.yaml should point at .markdownlint-cli2.yaml.

Test plan

  • lefthook run pre-commit --all-files (biome-check, npm-install, type-check, unit-tests)
  • lefthook run pre-push --all-files (build, Playwright E2E on chromium + Mobile Safari)
  • Verify Vercel preview deployment renders correctly in light and dark modes
  • Confirm GitHub Actions checks pass on the PR

🤖 Generated with Claude Code

michellepace and others added 4 commits April 6, 2026 22:11
…e resolve

Dependencies:
- Bump next 16.2.1→16.2.2, tailwindcss 4.1.18→4.2.2,
  playwright 1.58.2→1.59.1, biome 2.4.9→2.4.10
- Bump baseline-browser-mapping, lefthook, @types/node
- Remove vite-tsconfig-paths in favour of Vite's built-in
  tsconfigPaths resolve option

Dropping vite-tsconfig-paths simplifies the Vitest plugin chain
with no behaviour change — Vite now supports this natively.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Directory rename:
- Move all docs from x_docs/ to .xdocs/ (hidden directory)
- Remove unused images (github-social-thin.jpg, old rough-notes.png)

New documents:
- HeroUI v3 evaluation report comparing against shadcn/ui
- Vercel AGENTS.md vs skills eval comparison

Hidden directory keeps project docs out of the file explorer while
remaining version-controlled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Markdownlint:
- Replace .markdownlint.yaml with .markdownlint-cli2.yaml (adds
  ignores support and node_modules exclusion)
- Add MD028 and MD032 rule disables for blockquotes and template lists

VS Code:
- Hide .ruff_cache directory in file explorer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Permissions (.claude/settings.json):
- Add $schema for validation
- Update Bash permission syntax from colon to space separators
- Sort allow list alphabetically
- Remove extra marketplace registration for playwright-skill

Commands:
- Expand coderabbit command with structured output, thread
  resolution, and cleanup steps
- Update commit template docs glob to include .xdocs/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Apr 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nextjs-base Ready Ready Preview, Comment Apr 26, 2026 10:40pm

michellepace and others added 3 commits April 26, 2026 23:52
Dependency updates:
- next 16.2.2 → 16.2.4, react/react-dom 19.2.4 → 19.2.5
- @biomejs/biome 2.4.10 → 2.4.13, typescript 6.0.2 → 6.0.3
- vitest 4.1.2 → 4.1.5, jsdom 29.0.1 → 29.0.2
- @tailwindcss/postcss 4.2.2 → 4.2.4, @types/node 25.5.2 → 25.6.0
- lefthook 2.1.5 → 2.1.6, markdownlint-cli2 0.22.0 → 0.22.1
- @rolldown/plugin-babel 0.2.2 → 0.2.3, baseline-browser-mapping 2.10.16
  → 2.10.23

Config:
- Bump biome.json $schema URL to match installed CLI (2.4.13)

All updates are patch or minor bumps within existing semver ranges.
Verified with full pre-commit (biome, tsc, vitest) and pre-push
(next build, Playwright) lefthook runs — all green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Plugin setup:
- Register michellepace/my-claude-marketplace in extraKnownMarketplaces
- Enable git-utils@my-claude-marketplace at project scope so collaborators
  inherit the same workflow commands

Removed local commands (now provided by the plugin):
- .claude/commands/coderabbit.md
- .claude/commands/commit.md
- .claude/commands/merge-cleanup.md

Settings tidy:
- Reorder permissions block (allow, deny, ask) for consistency

Docs:
- Bump README Next.js version reference to 16.2.4

Centralises commit, merge-cleanup, and CodeRabbit workflows in the shared
marketplace plugin, removing local copies that would drift over time.
Tailwind v4 preflight applies `height: auto` to all <img>, which conflicts
with the explicit `width={16} height={16}` on the homepage Vercel logomark
and trips next/image's aspect-ratio console warning. Add explicit
`h-4 w-4` classes so the rendered size matches the intrinsic ratio.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Apr 26, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@michellepace has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 16 minutes and 8 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 16 minutes and 8 seconds.

⌛ 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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: dc0e3a80-9976-4f69-8705-ba3425270149

📥 Commits

Reviewing files that changed from the base of the PR and between 3bc25ad and 1bfb7e4.

📒 Files selected for processing (3)
  • .claude/settings.json
  • .github/workflows/test-e2e-vercel.yml
  • .xdocs/own/agentmd-over-skills.md

Walkthrough

This PR pins and bumps tooling versions, replaces markdownlint config, revises Claude settings and permissions, removes three AI command templates, adds documentation pages, tweaks Vitest config, updates package and Biome schema, and makes a small UI Tailwind sizing change. (50 words)

Changes

Cohort / File(s) Summary
Docs & README
​.claude/CLAUDE.md, README.md, .xdocs/own/*
Pins tech stack versions (Next.js 16.2.4, React 19.2.5, TypeScript 6, Tailwind 4.2), migrates doc assets to .xdocs/, and adds two new evaluation docs (agentmd-over-skills, hero-ui).
AI Command Templates (deleted)
​.claude/commands/coderabbit.md, ​.claude/commands/commit.md, ​.claude/commands/merge-cleanup.md
Removes three .claude/commands/ markdown workflows (comment parsing/CodeRabbit, commit-msg template, post-merge cleanup).
Claude settings & permissions
​.claude/settings.json
Rewrites permissions.allow patterns (switches many Bash(<cmd>:*) to Bash(<cmd> *) and expands wildcards), collapses Playwright browser MCP allows, reorders deny/ask, adds enabledPlugins, and changes marketplaces to my-claude-marketplace plus claude-plugins-official.
Markdownlint config
.markdownlint.yaml (deleted), .markdownlint-cli2.yaml (added)
Replaces legacy markdownlint config with markdownlint-cli2 config and disables/ignores several common markdown rules and node_modules/**.
Editor & tooling configs
.vscode/settings.json, biome.json, vitest.config.ts
Adds .ruff_cache to VSCode exclusions; updates Biome $schema version; switches Vitest to resolve.tsconfigPaths: true and removes vite-tsconfig-paths plugin import.
Dependencies
package.json
Bumps next to ^16.2.4, react/react-dom to ^19.2.5, and updates multiple devDependencies (Biome, Playwright, Tailwind, TypeScript, Vitest, Lefthook, markdownlint-cli2, etc.).
App UI tweak
app/page.tsx
Adds explicit Tailwind sizing classes (h-4 w-4) to the next/image inside the primary deploy button.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Hopping through pins and configs bright,

I nudge the versions, set them right.
Docs relocated, commands set free,
Tiny sizes tuned for UI glee,
A rabbit cheers — the toolchain's light!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarises the five main themes: dependency version bumps, Claude Code config modernisation, and documentation spring-clean.
Description check ✅ Passed The description comprehensively outlines all five themes (dependency bumps, Vitest config, markdownlint migration, docs folder rename, Claude Code config) and matches the changeset.
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
  • Commit unit tests in branch chore/deps-and-spring-clean

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

257-258: ⚠️ Potential issue | 🟡 Minor

Update stale alias documentation to match current Vite config

Line 257 still points to vite-tsconfig-paths, but this PR removes it. Please update the note to reflect native Vite alias/tsconfig path resolution.

Proposed doc fix
-4. The `@/`* import alias works in tests thanks to `vite-tsconfig-paths`
+4. The `@/`* import alias works in tests via Vite config (`resolve.alias`/tsconfig paths)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` around lines 257 - 258, The README's note about test alias
resolution is stale: replace the reference to `vite-tsconfig-paths` with the
now-correct description that Vite (and tsconfig paths) are resolved natively,
e.g., change the bullet mentioning "`vite-tsconfig-paths`" and the line
referring to the "@/* import alias" to state that the `@/`* alias works in tests
via Vite's native alias/tsconfig path resolution; update any adjacent wording to
remove mention of the removed plugin and ensure consistency with the current
Vite config and tsconfig paths.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.xdocs/own/agentmd-over-skills.md:
- Around line 1-15: Fix the heading and published date: in the top heading line
that currently reads "# Vercel: `Agents.md`outperforms skills in our agent
evals" add a space after the closing backtick and normalize casing to match the
body (change `Agents.md` to `AGENTS.md`) so it reads "# Vercel: `AGENTS.md`
outperforms skills in our agent evals"; also correct the SOURCE published date
string "2026-17-01" to a valid ISO date "2026-01-17".

In `@README.md`:
- Line 29: Update the README's "(4) Housekeeping" paragraph to stop directing
users to local command files that were removed; replace the current wording that
references .xdocs/, CLAUDE.md, .mcp.json and .claude/commands with a short note
explaining that local commands were replaced by a marketplace plugin and either
point to the marketplace installation/configuration instructions or remove the
path-specific guidance entirely, and ensure the README no longer instructs users
to modify a non-existent .claude/commands directory.

In `@vitest.config.ts`:
- Around line 6-7: Vitest cannot resolve tsconfig path aliases via Vite 8's
resolve.tsconfigPaths, so update the Vite/Vitest config: import and add the
vite-tsconfig-paths plugin into the existing plugins array (alongside react()
and babel(...))—e.g., add viteTsconfigPaths() as a plugin entry so tests can
resolve "@/..." imports; you can keep resolve: { tsconfigPaths: true } but
ensure vite-tsconfig-paths is present in the plugins list in vitest.config.ts.

---

Outside diff comments:
In `@README.md`:
- Around line 257-258: The README's note about test alias resolution is stale:
replace the reference to `vite-tsconfig-paths` with the now-correct description
that Vite (and tsconfig paths) are resolved natively, e.g., change the bullet
mentioning "`vite-tsconfig-paths`" and the line referring to the "@/* import
alias" to state that the `@/`* alias works in tests via Vite's native
alias/tsconfig path resolution; update any adjacent wording to remove mention of
the removed plugin and ensure consistency with the current Vite config and
tsconfig paths.
🪄 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: ASSERTIVE

Plan: Pro

Run ID: 865f6b58-0617-4fad-9bac-ba6775fa987c

📥 Commits

Reviewing files that changed from the base of the PR and between 7b2bf98 and bd2baa4.

⛔ Files ignored due to path filters (7)
  • .xdocs/images/app_screenshot.jpg is excluded by !**/*.jpg
  • .xdocs/images/nextjs-hero.png is excluded by !**/*.png
  • .xdocs/images/rough-notes.png is excluded by !**/*.png
  • .xdocs/images/template-explained.png is excluded by !**/*.png
  • package-lock.json is excluded by !**/package-lock.json
  • x_docs/images/github-social-thin.jpg is excluded by !**/*.jpg
  • x_docs/images/rough-notes.png is excluded by !**/*.png
📒 Files selected for processing (23)
  • .claude/CLAUDE.md
  • .claude/commands/coderabbit.md
  • .claude/commands/commit.md
  • .claude/commands/merge-cleanup.md
  • .claude/settings.json
  • .markdownlint-cli2.yaml
  • .markdownlint.yaml
  • .vscode/settings.json
  • .xdocs/own/WORDS.md
  • .xdocs/own/agentmd-over-skills.md
  • .xdocs/own/hero-ui.md
  • .xdocs/own/quick_notes.md
  • .xdocs/own/theme_resources.md
  • .xdocs/own/zustand.md
  • .xdocs/project-setup.md
  • .xdocs/reference/README.md
  • .xdocs/reference/default.theme.css
  • .xdocs/reference/preflight.css
  • README.md
  • app/page.tsx
  • biome.json
  • package.json
  • vitest.config.ts
💤 Files with no reviewable changes (4)
  • .claude/commands/commit.md
  • .claude/commands/coderabbit.md
  • .claude/commands/merge-cleanup.md
  • .markdownlint.yaml

Comment thread .xdocs/own/agentmd-over-skills.md Outdated
Comment thread README.md Outdated
Comment thread vitest.config.ts
michellepace and others added 2 commits April 27, 2026 01:11
Settings:
- Register anthropics/claude-plugins-official as a known marketplace
- Enable typescript-lsp@claude-plugins-official for semantic code intelligence
  (go-to-definition, find-references, live diagnostics) during Claude edits
- Declare frontend-design and feature-dev as known but disabled, kept off by
  default to avoid context bloat and toggled on when needed

README:
- Document npm install -g typescript-language-server typescript as a clone-time
  prerequisite, since Claude Code does not auto-install LSP server binaries

Complements the existing pre-commit and pre-push gates: hooks remain the safety
net, while LSP gives Claude semantic understanding during the edit loop, which
should reduce iteration before commits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Removed (destructive or arbitrary execution risk):
- Bash(npx vercel *) — wildcard authorised production deploys, env rm,
  deployment rm; specific safe vercel subcommand allows already cover
  read-only operations
- Bash(xargs *) — effectively allowed arbitrary command execution via
  piped input
- Bash(sed *) — in-place file edits superseded by safer Edit tool

Consolidated:
- 10 individual Bash(npm run X) entries replaced with Bash(npm run *),
  since npm run is bounded to scripts defined in package.json
- 13 explicit mcp__playwright__browser_* entries replaced with the
  wildcard, restoring access to type, fill_form, press_key,
  select_option, hover, drag, file_upload and handle_dialog which were
  previously prompting on every use; browser_run_code kept explicitly
  as a visible reminder that arbitrary in-page JS execution is allowed

Net: 26 lines removed, 3 added. Same effective surface for everyday
work, smaller blast radius, future-proofed for new npm scripts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@michellepace michellepace changed the title chore: update deps, tidy workspace and docs chore: bump deps, modernise Claude Code config, and spring-clean docs Apr 26, 2026
michellepace and others added 2 commits April 27, 2026 01:47
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
agentmd-over-skills.md (PR #39 thread r3144154014):
- Add missing space and normalise casing: `Agents.md` → `AGENTS.md`
- Correct invalid ISO date `2026-17-01` → `2026-01-17`

README.md (PR #39 thread r3144154017):
- Drop housekeeping step's reference to removed `.claude/commands/`
- Remove `.claude/commands/` row from Config Files table

The commands directory was deleted earlier in this branch in favour of
the `git-utils` marketplace plugin, leaving the README with two dead
links. Title and date fixes correct rendering and metadata in a working
notes doc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
README.md (1)

257-257: ⚠️ Potential issue | 🟡 Minor

Update stale Vitest alias documentation

Line 257 of README.md incorrectly attributes alias support to vite-tsconfig-paths, but the PR uses Vitest's native tsconfigPaths resolution instead.

Suggested documentation edit
-4. The `@/`* import alias works in tests thanks to `vite-tsconfig-paths`
+4. The `@/`* import alias works in tests via Vitest's native tsconfig-path resolution
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 257, Update the README: change the claim that the `@/`*
import alias in tests works because of `vite-tsconfig-paths` to state it uses
Vitest's native `tsconfigPaths` resolution; edit the sentence referencing
`vite-tsconfig-paths` to instead reference `tsconfigPaths` (Vitest) and
optionally add a brief note that Vitest handles the alias resolution natively so
readers know to configure `tsconfigPaths` in the Vitest config rather than
installing `vite-tsconfig-paths`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/settings.json:
- Around line 35-36: Remove the redundant explicit entry
"mcp__playwright__browser_run_code" because the wildcard
"mcp__playwright__browser_*" already covers it; either delete the explicit line
from the .claude/settings.json allow list or, if you want to keep it for
documentation, replace the explicit entry with a clear inline comment explaining
the intent (e.g., "kept explicit for clarity") so the file no longer contains a
no-op duplicate.
- Line 38: Update the deny pattern in the "deny" array of .claude/settings.json
so it blocks all dotenv variants; replace the current Read(**/.env) entry with a
glob that matches .env*, e.g., Read(**/.env*), to cover .env, .env.local,
.env.production.local, etc., ensuring the string remains quoted in the "deny"
array.

In @.xdocs/own/agentmd-over-skills.md:
- Around line 194-196: The doc currently shows two different codemod channels:
the command `npx `@next/codemod`@canary agents-md` and an earlier recommendation
of `@latest`; choose one as the guide's default and make the other explicitly
optional/experimental. Update the `npx `@next/codemod`@canary agents-md` line (or
the earlier `@latest` mention) so both references match the chosen default, and
add one short clarifying note that the alternate channel (e.g., `@canary` if you
pick `@latest`, or `@latest` if you pick `@canary`) is experimental/optional for
users who want bleeding-edge behavior.

---

Outside diff comments:
In `@README.md`:
- Line 257: Update the README: change the claim that the `@/`* import alias in
tests works because of `vite-tsconfig-paths` to state it uses Vitest's native
`tsconfigPaths` resolution; edit the sentence referencing `vite-tsconfig-paths`
to instead reference `tsconfigPaths` (Vitest) and optionally add a brief note
that Vitest handles the alias resolution natively so readers know to configure
`tsconfigPaths` in the Vitest config rather than installing
`vite-tsconfig-paths`.
🪄 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: ASSERTIVE

Plan: Pro

Run ID: 746e48ff-579f-4bec-bd61-d5214f94ff80

📥 Commits

Reviewing files that changed from the base of the PR and between bd2baa4 and 3bc25ad.

📒 Files selected for processing (3)
  • .claude/settings.json
  • .xdocs/own/agentmd-over-skills.md
  • README.md

Comment thread .claude/settings.json
Comment thread .claude/settings.json Outdated
Comment thread .xdocs/own/agentmd-over-skills.md Outdated
.claude/settings.json (PR #39 thread r3144232338):
- Widen dotenv deny glob `Read(**/.env)` → `Read(**/.env*)` to cover
  `.env.local`, `.env.production.local` and other Next.js variants
- Remove `Bash(cat *)` from the allow list to close the bypass path
  (Read tool already covers legitimate file reads and respects deny)

agentmd-over-skills.md (PR #39 thread r3144232341):
- Align codemod channel guidance: `@next/codemod@canary` → `@latest`
  on lines 194 and 224 to match the recommendation earlier in the doc

`agents-md` ships in stable `@next/codemod@16.2.4`, so the original
blog's `@canary` recommendation is no longer needed. The settings
change is defence-in-depth: blocking the Read tool path for all
dotenv variants and dropping the broad `cat` allow that could read
them via Bash.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Supersedes Dependabot PR #40. Script body uses only the injected
`github.rest.*` and `context` globals, none of which v9 changed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@michellepace michellepace merged commit cff78ad into main Apr 26, 2026
7 checks passed
@michellepace michellepace deleted the chore/deps-and-spring-clean branch April 26, 2026 22:44
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