From frontend-setup
Walk through setting up the Buildertrend frontend on your local machine. For designers and PMs who are new to development tools.
npx claudepluginhub buildertrend/product-toolkit --plugin frontend-setupThis skill uses the workspace's default tool permissions.
You are helping a non-engineering user (probably a designer or PM) set up the BTNet frontend on their local machine. They may have little to no experience with terminals, Git, or development tools.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
You are helping a non-engineering user (probably a designer or PM) set up the BTNet frontend on their local machine. They may have little to no experience with terminals, Git, or development tools.
IMPORTANT: Never combine commands with shell operators. No &&, ||, ;, |, >, <, `, $(...), or eval. Always run each command as a separate Bash tool call. The only exception is piping to pbcopy or clip to copy a command to the clipboard (see below).
Copy commands to the clipboard automatically. Whenever a step requires the user to run a command in a separate terminal, copy the command to their clipboard before telling them to run it. On Mac, use echo <command> | pbcopy. On Windows, use echo <command> | clip. Then tell the user the command has been copied to their clipboard and they just need to paste it into their terminal and press Enter.
Get the Buildertrend frontend (Clients.App) running locally in their browser so they can view and interact with the UI connected to our shared test environment.
First, detect whether this is Mac or Windows.
On Mac only — check for admin privileges first:
Run id -Gn | grep -q admin to check if the user has admin access. If they do NOT (the command exits with a non-zero code), stop the setup and explain:
Do not continue with any installation steps if the user is not an admin on Mac.
If the user is an admin (or on Windows), check for each of these and install any that are missing:
On Mac:
xcode-select -p. If missing, run xcode-select --install and wait for the user to complete the system dialog.brew --version. If missing, install using two steps: first download the installer with curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o /tmp/brew_install.sh, then run it with NONINTERACTIVE=1 bash /tmp/brew_install.sh. After install, follow any "Next steps" instructions the installer prints (usually adding Homebrew to PATH).fnm --version. If missing, install via Homebrew: brew install fnm, then add fnm's shell initialization to their shell profile (fnm env --use-on-cd — see https://github.com/Schniz/fnm#shell-setup).node --version. Need version >=22.12.0 <23. If missing or wrong version, use fnm install 22 then fnm use 22.corepack enable then verify with pnpm --version. Need version >=10.0.0.On Windows:
git --version. If missing, install via winget install Git.Git or direct them to https://git-scm.com/download/win.fnm --version. If missing, install via winget install Schniz.fnm, then add fnm's shell initialization to their shell profile (see https://github.com/Schniz/fnm#shell-setup).node --version. Need version >=22.12.0 <23. If missing or wrong version, use fnm install 22 then fnm use 22.corepack enable then verify with pnpm --version. Need version >=10.0.0.Tell the user what you found and what you're going to install before proceeding.
Before downloading anything, check if the project is already on this computer. Look for a BTNet directory in these common locations:
~/BTNet)~/Desktop/BTNet)~/dev/BTNet, ~/repos/BTNet, ~/code/BTNet)~/Documents/BTNet, ~/Downloads/BTNet)Run ls on each candidate path to find it. If you find a BTNet directory, verify it's the right project by checking that Clients.App exists inside it (run ls on the BTNet/Clients.App path).
If found: Tell the user you found an existing copy. Ask if they need to re-run any setup steps — for example, reinstalling dependencies, reconfiguring the environment, or connecting tools. If they do, cd into the BTNet directory and skip ahead to the relevant step. If they don't need anything, suggest:
/frontend-setup:preview to start the app and see it in your browser/frontend-setup:contribute to make changes to the frontendThen stop — do not continue with the remaining steps.
If not found: Ask the user: "I don't see the project on your computer yet. Have you downloaded it before? If so, let me know where it is. Otherwise, we'll download it now." If the user provides a path, verify it the same way (check for Clients.App inside it). If they say no, continue with Steps 3 and 4.
Skip this step if you already found the project in Step 2.
This is the one step that cannot be automated. Walk the user through it clearly:
If they can't find "Generate Git Credentials" or run into issues with this step, tell them to reach out to Michael Hanson for help before continuing.
Ask the user to confirm when they have their credentials and clone URL ready before continuing.
Skip this step if you already found the project in Step 2.
Important: You cannot run git clone yourself because it will prompt for the Git credential password (the one they generated in Azure DevOps, NOT their computer login password), which requires interactive input that Claude cannot handle. Instead, walk the user through running it themselves in a separate terminal window:
git clone followed by the clone URL they copied in Step 2, then press Enter. (Give them an example of how the command will look, like git clone https://...)After cloning, cd into the repo:
cd BTNet
The project uses private npm packages that require authentication. This step needs to open a browser window for sign-in, so the user must run it themselves — Claude cannot open browsers.
First, figure out the full path to the BTNet repo. Run pwd to see where you are. If you cloned it in Step 4, check if a BTNet folder exists nearby. Construct the full path to it.
Walk the user through running the command in their terminal:
cd <full path to BTNet> — give them the exact command with the actual path filled inpnpm run setup-project and press EnterIf this fails (especially on Mac), tell the user to try the cross-platform alternative instead: have them run pnpm run setup-btfeedauth-crossplatform first, then pnpm install, in the same terminal.
If both fail, tell the user to reach out to Michael Hanson for help with package feed authentication before continuing.
After the user reports success, ask if they saw any errors in the output before moving on.
Create the file Clients.App/.env.development.local with this content:
VITE_WARN_FLAGS=true
VITE_APIX_PROXY=https://api.test.buildertrend.net
VITE_WEBFORMS_URL=https://test.buildertrend.net
This tells the frontend to connect to the shared test environment instead of looking for a local backend server.
The dev server uses a custom address (local.buildertrend.net) that your computer doesn't know about yet. You need to add an entry to your computer's hosts file so it knows that address points to your own machine.
First, read the hosts file to check if the entry already exists:
On Mac: Read /etc/hosts and look for a line containing local.buildertrend.net. If it's already there, skip to the next step.
If the entry is missing, you cannot run this command yourself because it requires admin permissions and file redirection that Claude can't do. Walk the user through running it in a separate terminal:
sudo sh -c 'echo "127.0.0.1 local.buildertrend.net" >> /etc/hosts'On Windows: This step must be done manually. Walk the user through it:
C:\Windows\System32\drivers\etc\127.0.0.1 local.buildertrend.netAfter adding the entry on either OS, verify it worked by reading the hosts file again and confirming the line is present.
Now let's get the app running. Invoke /frontend-setup:preview — it will start the dev server and help the user open it in their browser.
Wait for the user to confirm the app is working before continuing to Step 9.
This step is optional — the frontend is already running. But connecting these tools lets Claude help the user work with designs in Figma, work items in Azure DevOps, and documentation in Confluence directly from the chat.
Tell the user you're going to connect three tools they may use in their day-to-day work: Figma (for viewing designs), Azure DevOps (for viewing work items and code), and Confluence (for viewing wiki pages and documentation). Explain that each one may open a browser window asking them to sign in.
Connect Azure DevOps:
Connect Figma:
Connect Confluence:
If any tool connects without prompting for sign-in, that means the user is already authenticated — just let them know it's ready to use.
If something goes wrong, here are common issues:
rm -rf node_modules && pnpm install from the BTNet root directory.pnpm run setup-bt-feed-credentials or pnpm run setup-btfeedauth-crossplatform.node --version. Use fnm use 22 to switch.whoami and npm config get prefix to get the username and npm prefix path, then run sudo chown -R <username> <prefix>/{lib/node_modules,bin,share} with those literal values filled in.If you can't resolve an issue using the steps above, tell the user to reach out to Michael Hanson for help.