Skip to content

feat: monorepo#278

Open
sarahxsanders wants to merge 8 commits intomainfrom
monorepo
Open

feat: monorepo#278
sarahxsanders wants to merge 8 commits intomainfrom
monorepo

Conversation

@sarahxsanders
Copy link
Contributor

@sarahxsanders sarahxsanders commented Feb 17, 2026

presenting: v1 wizard monorepo skill

when you run the wizard in a monorepo:

  1. figures out what workspace manager you're using (pnpm, npm, yarn, Nx, Lerna, none)
  2. scans for valid apps and filters out libraries, test suites, and build tools
  3. lets you pick which projects to set up, and notes which ones already have PostHog installed
  4. runs all selected projects concurrently, each with its own isolated agent

What's new

monorepo orchestration: monorepo-flow.ts

three-phase execution model:

  1. preparation: version checks, package detection, context gathering, sequential because some frameworks prompt the user
  2. instrumentation: all agents launch, each wrapped in its own log file, runs concurrently
  3. post-flight: MCP client install (once), env var upload, combined summary

shared setup (OAuth, region, checks) run once and passed to each agent

Workspace detection: workspace-detection.ts

detects workspaces using a two pass system:

  1. reads the JS workspace config
  2. scans for non-JS projects the config missed

Turborepo is a label upgrade, not its own detector

App filtering: app-detection.ts

not everything in a monorepo is an app. this filters out library package, dev tool environments, and projects that aren't real apps

uses language-specific signals (entry points, start/dev scripts w/ real dependencies), framework integrations bypass this entirely as their detection signals are app signals

PostHog detection: posthog-detection.ts

Flags if PostHog is already configured for projects in a monorepo

Nx hoisted dependency support

Nx monorepos hoist all dependencies to the root package.json,. tryGetPackageJson now merges root deps when local package.json has zero when workspaceRootDir is set (pnpm/yarn/npm workspaces unaffected)

Remix as React Router

Remix v2 apps list @remix-run/react not react-router but they are React Router 7 🙃 added alternatePackageNames to the framework config so detection/version checks/etc. all recognize Remix

Detect Gatsby

Since we don't have a full Gatsby skill yet, I set detection as a JS Web app

What's changed

agent-runner.ts

split the monolithic function into composable phases:

  • runSharedSetup()
  • runPreflight()
  • runAgentWizard()

when called without a mode argument (single project), behavior is UNCHANGED from main today. Decomposition here is only additive

also, errors now throw DisplayedError instead of process.exit(1) so the monorepo orchestrator can keep going when one project fails

Terminal output: clack.ts (this may be irrelevant now w/ TUI updates)

Added withSilentOutput(), a proxy that turns clack into no-ops during MONOREPO execution only. this prevents terminal garbage from multiple agents running at the same time

this is never called in single-project mode

Logging: debug.ts

added AsyncLocalStorage for per-project log files. each agent write to its own log. this just feels the most organized way to handle this/discover these files later if you need.

falls back to the existing module-level log path for single project mode

Framework configs

  • removed embedded prompts and context, moved to context-mill
  • centralized python ignore patterns in glob-patterns.ts

no behavior change here

Detection order

  • javascript_web now requires a browser signal to avoid claiming server-only projects
  • javascript_node excludes known framework packages so the catch-all doesn't claim Next.js/Nuxt/etc.
  • integration enum reordered: web before node (more specific first)

@github-actions
Copy link

🧙 Wizard CI

Run the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands:

Test all apps:

  • /wizard-ci all

Test all apps in a directory:

  • /wizard-ci android
  • /wizard-ci angular
  • /wizard-ci astro
  • /wizard-ci django
  • /wizard-ci fastapi
  • /wizard-ci flask
  • /wizard-ci laravel
  • /wizard-ci next-js
  • /wizard-ci nuxt
  • /wizard-ci react-native
  • /wizard-ci react-router
  • /wizard-ci sveltekit
  • /wizard-ci swift
  • /wizard-ci tanstack-router
  • /wizard-ci tanstack-start
  • /wizard-ci vue

Test an individual app:

  • /wizard-ci android/Jetchat
  • /wizard-ci angular/angular-saas
  • /wizard-ci astro/astro-hybrid-marketing
Show more apps
  • /wizard-ci astro/astro-ssr-docs
  • /wizard-ci astro/astro-static-marketing
  • /wizard-ci astro/astro-view-transitions-marketing
  • /wizard-ci django/django3-saas
  • /wizard-ci fastapi/fastapi3-ai-saas
  • /wizard-ci flask/flask3-social-media
  • /wizard-ci laravel/laravel12-saas
  • /wizard-ci next-js/15-app-router-saas
  • /wizard-ci next-js/15-app-router-todo
  • /wizard-ci next-js/15-pages-router-saas
  • /wizard-ci next-js/15-pages-router-todo
  • /wizard-ci nuxt/movies-nuxt-3-6
  • /wizard-ci nuxt/movies-nuxt-4
  • /wizard-ci react-native/expo-react-native-hacker-news
  • /wizard-ci react-native/react-native-saas
  • /wizard-ci react-router/react-router-v7-project
  • /wizard-ci react-router/rrv7-starter
  • /wizard-ci react-router/saas-template
  • /wizard-ci react-router/shopper
  • /wizard-ci sveltekit/CMSaasStarter
  • /wizard-ci swift/hackers-ios
  • /wizard-ci tanstack-router/tanstack-router-code-based-saas
  • /wizard-ci tanstack-router/tanstack-router-file-based-saas
  • /wizard-ci tanstack-start/tanstack-start-saas
  • /wizard-ci vue/movies

Results will be posted here when complete.

@sarahxsanders sarahxsanders changed the title monorepo feat: monorepo Mar 3, 2026
@sarahxsanders sarahxsanders marked this pull request as ready for review March 3, 2026 21:53
@sarahxsanders sarahxsanders requested a review from a team March 3, 2026 21:53
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