fix(tooling): skip agent worktrees by updating the web standard - #26
Merged
Merged
Conversation
WillieCubed
had a problem deploying
to
preview
September 24, 2026 01:43 — with
GitHub Actions
Failure
Preview deployments
|
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
force-pushed
the
fix/agent-worktree-ignores
branch
from
September 24, 2026 02:10
d568bd2 to
17fe262
Compare
This was referenced Sep 24, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.jsonchad no rule for it. Sopnpm 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:updatenow adds.claude/worktreesto a repository's root.gitignore,.prettierignoreand markdownlint ignores wherever it's missing, and it no longer rewrites files inside nested checkouts.What changes in Labs
The updater put
.claude/worktreesfirst in the markdownlintignores, 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/homegains asyncscript (astro sync), andturbo.jsonruns it beforelint, so lint reads Astro's generated types on a clean checkout. The production platform checks from 0.4.0 pass unchanged, because Labs has noplatform.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/brandhad one Astro-only entry,analytics/astro, which wrapped the analytics package's Astro integration for the home app'sastro.config.ts, its only user. Brand never declaredastro; inside Labs it borrowed the home app's copy. The migration export therefore gave brand anastrodevDependency so that the file type-checked in a standalone project. The standard's contract, since 0.4.1, counts any package that depends onastroas an Astro project needingastro syncwiring, so the exported project failed its ownpnpm check.A brand package has no reason to require a framework. The home app now adds
lvbtAnalytics({ site: LABS_SITE })from@lasvegasfortransit/analytics/astroitself, 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.2tag 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.jsonrecordsrelease: null. The vendored files are identical to what v0.4.2 will contain. The plugin source in.claude/settings.jsonstays on v0.3.5 until the tag exists.Follow-ups
v0.4.2tag, create its GitHub release, and dispatchPublish packages.pnpm standards:update --release v0.4.2 --applyin Labs and move.claude/settings.jsonto v0.4.2. This changes only the release field and the plugin ref.🤖 Generated with Claude Code