Skip to content

fix(tooling): skip agent worktrees by updating the web standard - #26

Merged
WillieCubed merged 3 commits into
mainfrom
fix/agent-worktree-ignores
Sep 24, 2026
Merged

WillieCubed merged 3 commits into
mainfrom
fix/agent-worktree-ignores

Conversation

@WillieCubed

@WillieCubed WillieCubed commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

TL;DR

The pre-push check passes again in a checkout that holds agent worktrees. markdownlint and Prettier now skip .claude/worktrees/, where Claude Code keeps other sessions' checkouts of Labs. The fix comes from the repository standard, so this PR updates Labs' vendored standard rather than hand-editing its configuration. It also takes Astro out of the brand package, which the newer standard's Astro rule flagged in the migration export.

Overview of Changes

Why the check failed

Claude Code creates each agent worktree, a full checkout of this repository on another branch, under .claude/worktrees/ inside the checkout. The main checkout has one now. Git already ignored the folder, but markdownlint doesn't read .gitignore, and Labs' .markdownlint-cli2.jsonc had no rule for it. So pnpm check, which the pre-push hook runs, linted the other session's Markdown and failed on errors such as MD025 in vendored skill assets. Those files aren't part of Labs' tree.

The standard's examples have always ignored the folder, which is why week-without-driving, created from the Astro template, never hit this. Labs' configuration predates those examples, and the updater never carried the rule to an existing repository. LasVegasForTransit/repository-tooling#44 closes that gap: pnpm standards:update now adds .claude/worktrees to a repository's root .gitignore, .prettierignore and markdownlint ignores wherever it's missing, and it no longer rewrites files inside nested checkouts.

What changes in Labs

The updater put .claude/worktrees first in the markdownlint ignores, with a comment saying why, and added it to .prettierignore. Prettier already skipped the folder through .gitignore; the explicit rule matches the examples. ESLint needs nothing: Labs lints each package on its own, and the shared configuration ignores the folder anyway.

Because Labs moves from v0.3.5, it also picks up the 0.4.x changes. apps/home gains a sync script (astro sync), and turbo.json runs it before lint, so lint reads Astro's generated types on a clean checkout. The production platform checks from 0.4.0 pass unchanged, because Labs has no platform.json. The rest of the diff is the vendored snapshot under .lvbt/web-platform/.

Brand no longer depends on Astro

The update also exposed a problem in the brand package. @lvbt/brand had one Astro-only entry, analytics/astro, which wrapped the analytics package's Astro integration for the home app's astro.config.ts, its only user. Brand never declared astro; inside Labs it borrowed the home app's copy. The migration export therefore gave brand an astro devDependency so that the file type-checked in a standalone project. The standard's contract, since 0.4.1, counts any package that depends on astro as an Astro project needing astro sync wiring, so the exported project failed its own pnpm check.

A brand package has no reason to require a framework. The home app now adds lvbtAnalytics({ site: LABS_SITE }) from @lasvegasfortransit/analytics/astro itself, taking the site name from @lvbt/brand/analytics, so brand still owns Labs' site identity. The export stops editing brand's manifest. The test that covered the wrapper now checks the home app's Astro configuration, and the brand and analytics references describe the new wiring.

Pinned to the release commit, not yet the tag

The v0.4.2 release commit is merged in repository-tooling, but the v0.4.2 tag isn't pushed yet. This update therefore pins the exact merged commit, a841b8c, which is how the standard vendors a snapshot before publication, so .lvbt/web-platform.json records release: null. The vendored files are identical to what v0.4.2 will contain. The plugin source in .claude/settings.json stays on v0.3.5 until the tag exists.

Follow-ups

  • Push the repository-tooling v0.4.2 tag, create its GitHub release, and dispatch Publish packages.
  • Re-run pnpm standards:update --release v0.4.2 --apply in Labs and move .claude/settings.json to v0.4.2. This changes only the release field and the plugin ref.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Preview deployments

  • Labs home at cad75245-4e9c-4155-9f62-30bcba685b43

WillieCubed and others added 3 commits September 23, 2026 19:10
The pre-push check failed in the main checkout because markdownlint
linted .claude/worktrees/, where Claude Code keeps other sessions'
worktrees of this repository. Labs' own markdownlint configuration
predates the standard's rule for that folder, and the updater never
carried it over.

Update the vendored standard from v0.3.5 to repository-tooling
a841b8c, the merged commit for v0.4.2. Its updater adds
.claude/worktrees to .markdownlint-cli2.jsonc and .prettierignore
(.gitignore already had it) and gives apps/home the Astro sync task
from v0.4.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The brand package carried an Astro-only entry, analytics/astro, that
wrapped the analytics package's integration for the home app's Astro
config. Brand never declared astro; inside Labs it borrowed the home
app's copy, so the migration export gave brand an astro devDependency
to type-check. The standard's contract then counts brand as an Astro
project that needs `astro sync` wiring, and the exported project fails
its check.

The home app now adds the analytics integration itself, with the site
from LABS_SITE in @lvbt/brand/analytics, and brand depends on no
framework. The export no longer edits brand's manifest. The test that
covered the wrapper moves to the home app's Astro configuration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The test that replaced the brand wrapper only checked the integration's
name, so a wrong or missing site would pass. It now checks the Astro
configuration passes LABS_SITE to the analytics integration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@WillieCubed
WillieCubed force-pushed the fix/agent-worktree-ignores branch from d568bd2 to 17fe262 Compare September 24, 2026 02:10
@WillieCubed
WillieCubed merged commit 02a79a4 into main Sep 24, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
preview — 17fe262c Deployed Sep 24, 2026 by WillieCubed via Remove temporary Workers #25
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