| name | setup-dev-environment |
| description | Set up an arcade-services local development environment from zero by following docs/DevGuide.md. Use when asked to "set up my dev environment", "bootstrap local development", "get me running locally", or "configure the repo for local dev". Runs the automatable steps, verifies prerequisites, and flags the human-gated ones. |
Set Up the Local Development Environment
Walks a contributor through getting the Product Construction Service (PCS) and DARC running
locally, following docs/DevGuide.md. The skill runs the steps it
can, verifies prerequisites, and clearly flags steps that require a human (installs that
need a GUI, access grants, machine-specific paths). It is a guided checklist, not a magic one-shot
installer.
When to Use
- A new contributor wants a working local environment from scratch.
- An existing checkout needs the database, EF migrations, or
launchSettings.json configured.
- You want to verify which prerequisites are still missing.
Ground Rules
docs/DevGuide.md is the source of truth. If it changes, prefer it over this skill and update
this file.
- Never invent or guess secrets, tokens, KeyVault values, or machine-specific paths. Prompt the
user for VMR /
TmpPath locations instead of assuming them.
- Run one step at a time and confirm it succeeded before moving on; report failures with the exact
command and error.
- Use the global
dotnet command for build/test/tool commands.
Steps That Require a Human (verify, then flag — do NOT attempt to automate)
Surface these early as a checklist and let the user confirm each one. The skill cannot complete
them:
- Install Visual Studio (Preview) with the
Azure Development => .NET Aspire SDK (Preview)
workload and ASP.NET and web development => .NET 8.0/9.0 WebAssembly Build Tools.
- Install Docker Desktop (https://www.docker.com/products/docker-desktop).
- Install SQL Server Express
(https://www.microsoft.com/en-us/sql-server/sql-server-downloads).
git config --system core.longpaths true — needs an elevated shell, so the user must run
it themselves (the skill can run the --global variant; see below).
- Join the
maestro-auth-test GitHub org — someone must add the user manually.
- Get read access to the
ProductConstructionDev KeyVault — someone must grant it.
For each, verify whether it is already satisfied where possible (e.g. docker info, dotnet --info,
checking a sqlcmd/SQL connection) and report ✅ / ❌ with the remediation from the list above.
Steps the Skill Can Run
Step 1: Configure git long paths (global)
git config --global core.longpaths true
Remind the user to also run the --system variant from an elevated shell (human-gated, above).
Step 2: Install the EF Core CLI
dotnet tool install --global dotnet-ef
If already installed, dotnet ef --version confirms it; skip the install.
Step 3: Build Maestro.Data
dotnet build src\Maestro\Maestro.Data\Maestro.Data.csproj
Step 4: Create / update the local database
The generated obj files live in the root artifacts folder, not the project's obj folder.
Resolve the absolute obj path first, then run from src\Maestro\Maestro.Data:
cd src\Maestro\Maestro.Data
dotnet ef --msbuildprojectextensionspath <repo-root>\artifacts\obj\Maestro.Data\ database update
Step 5: Seed the Repositories table
This requires the local SQL Express DB (human-gated install above) to be reachable. Insert the rows
from the DevGuide (do not alter the values):
INSERT INTO [Repositories] (RepositoryName, InstallationId) VALUES
('https://github.com/maestro-auth-test/maestro-test', 289474),
('https://github.com/maestro-auth-test/maestro-test2', 289474),
('https://github.com/maestro-auth-test/maestro-test3', 289474),
('https://github.com/maestro-auth-test/maestro-test-vmr', 289474),
('https://github.com/maestro-auth-test/arcade', 289474),
('https://github.com/maestro-auth-test/dnceng-vmr', 289474);
The DevGuide does this via SQL Server Object Explorer in VS; the same SQL can be run with sqlcmd
against the local SQLEXPRESS instance.
Step 6: Configure launchSettings.json (prompt for machine-specific paths)
Ask the user for their TmpPath (and reuse an existing VMR TMP folder if they have one), then write:
src\ProductConstructionService\ProductConstructionService.AppHost\Properties\launchSettings.json
src\ProductConstructionService\ProductConstructionService.Api\Properties\launchSettings.json
Use the exact templates from docs/DevGuide.md ("Configuring the service for local runs"), filling
in only the user-provided paths. Never hardcode another machine's paths.
Validation
docker info succeeds (Docker Desktop running).
dotnet build of the solution / Maestro.Data succeeds (warnings are errors in this repo).
dotnet ef ... database update reports Done. and the Repositories rows exist.
- Optionally run the service: set
ProductConstructionService.AppHost as startup project (or
dotnet run from src\ProductConstructionService\ProductConstructionService.AppHost) and confirm
it starts.
Output / Hand-off
End with a checklist summarizing each step as ✅ done, ⚠️ needs user action (with the exact
remediation), or ❌ failed (with the command + error), so the user knows precisely what remains.