lfx-setup/SKILL.md
Environment setup for any LFX repo — prerequisites, clone, install, env vars, and dev server. Adapts to repo type (Angular or Go). Use for getting started, first-time setup, broken environments, or install failures.
npx skillsauth add linuxfoundation/lfx-skills lfx-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are helping a contributor set up an LFX development environment from scratch. Walk through each step interactively, verifying success before moving on.
Key principle: Verify each step before proceeding to the next.
Before diving into the technical steps, here's what you should have ready:
github.com/linuxfoundation and see private repos, you're good.Don't worry if you're not sure about any of these — I'll check each one as we go and help you get access if needed. Don't assume success — check.
if [ -f apps/lfx-one/angular.json ] || [ -f turbo.json ]; then
echo "REPO_TYPE=angular" # lfx-v2-ui
elif [ -f go.mod ]; then
echo "REPO_TYPE=go" # Go microservice
fi
Check that the following are installed and verify versions:
echo "=== Prerequisites Check ==="
echo -n "Node.js: " && node --version 2>/dev/null || echo "NOT INSTALLED"
echo -n "Yarn: " && yarn --version 2>/dev/null || echo "NOT INSTALLED"
echo -n "Git: " && git --version 2>/dev/null || echo "NOT INSTALLED"
Required versions:
nvm install 22 && nvm use 22corepack enable && corepack prepare [email protected] --activateDocker is NOT required for local development. All services point to the shared dev environment.
macOS-specific notes:
corepack enable fails with permission errors: sudo corepack enablenpm install -g corepack firstxcode-select --installIf not already cloned:
git clone <repository-url>
cd lfx-v2-ui
Copy the env template:
cp apps/lfx-one/.env.example apps/lfx-one/.env
Get credentials from 1Password:
apps/lfx-one/.envValidate critical env vars:
echo "=== Env Var Check ==="
missing=()
for key in PCC_AUTH0_CLIENT_ID PCC_AUTH0_CLIENT_SECRET PCC_AUTH0_ISSUER_BASE_URL PCC_AUTH0_AUDIENCE PCC_AUTH0_SECRET PCC_BASE_URL LFX_V2_SERVICE; do
if grep -qE "^${key}=.+" apps/lfx-one/.env 2>/dev/null; then
echo "✓ $key"
else
echo "✗ $key — MISSING"
missing+=("$key")
fi
done
if [ ${#missing[@]} -gt 0 ]; then
echo -e "\nMissing vars: ${missing[*]}"
echo "Get these from 1Password → LFX One Dev Environment vault"
else
echo -e "\nAll critical env vars are populated ✓"
fi
yarn install
If yarn install fails:
EACCES errors → Don't use sudo. Check Node is installed via nvm, not system packagecorepack enable && corepack prepare [email protected] --activateyarn config set httpProxy ...node-gyp errors → Ensure Xcode Command Line Tools are installed: xcode-select --installVerify install succeeded:
[ -d node_modules ] && echo "✓ node_modules exists" || echo "✗ node_modules missing"
[ -f yarn.lock ] && echo "✓ yarn.lock exists" || echo "✗ yarn.lock missing"
yarn start
The app should be available at http://localhost:4200.
# Wait a few seconds for the server to start, then check
curl -s -o /dev/null -w "%{http_code}" http://localhost:4200
Expected: HTTP 200 or 302 (redirect to login).
If the server fails to start:
lsof -i :4200 to find the process, kill it or use a different port.env values match 1Passwordyarn build separately to see detailed errorsecho "=== Prerequisites Check ==="
echo -n "Go: " && go version 2>/dev/null || echo "NOT INSTALLED"
echo -n "Git: " && git --version 2>/dev/null || echo "NOT INSTALLED"
echo -n "Make: " && make --version 2>/dev/null | head -1 || echo "NOT INSTALLED"
Required:
go versiongit --versionmake --versionmake apigen handles this)Optional for full local stack:
helm versiongit clone <repository-url>
cd lfx-v2-<service>-service
Standard environment variables for running against the local stack:
export NATS_URL=nats://localhost:4222
export OPENSEARCH_URL=http://localhost:9200
export JWKS_URL=http://localhost:4457/.well-known/jwks
export LFX_ENVIRONMENT=lfx.
export PORT=8080
For running against the shared dev environment, get values from 1Password.
go mod download
go build ./...
If build fails:
go mod tidy && go mod downloadgo.mod for required versionexport CGO_ENABLED=0 if the service doesn't need CGOVerify:
echo $? # Should be 0
make apigen
If apigen fails:
go install goa.design/goa/v3/cmd/[email protected]cmd/*/design/*.go for syntax issuesgo run cmd/*-api/main.go
Verify:
curl -s http://localhost:8080/livez
# Expected: 200 OK
To run the full platform locally with all services:
# Clone the helm repo
git clone https://github.com/linuxfoundation/lfx-v2-helm
cd lfx-v2-helm
# Pull chart dependencies
helm dependency update charts/lfx-platform
# Create local values
cp charts/lfx-platform/values.local.example.yaml charts/lfx-platform/values.local.yaml
# Edit values.local.yaml — secrets are in 1Password
# Install
helm install -n lfx lfx-platform ./charts/lfx-platform \
--values charts/lfx-platform/values.local.yaml
| Symptom | Likely Cause | Fix |
|---------|-------------|-----|
| corepack enable permission error | System Node | sudo corepack enable or use nvm |
| yarn install EACCES | Root-owned files | Don't use sudo. Reinstall Node via nvm |
| Port 4200 in use | Zombie process | lsof -i :4200 then kill <PID> |
| Auth redirect loop | Wrong .env values | Re-copy from 1Password |
| ERR_MODULE_NOT_FOUND | Missing deps | rm -rf node_modules && yarn install |
| NATS connection refused | Local stack not running | Start the Helm platform stack |
| make apigen fails | Missing Goa | go install goa.design/goa/v3/cmd/[email protected] |
| Go build fails after Goa changes | Stale generated code | make apigen && go build ./... |
Once the app/service runs successfully:
═══════════════════════════════════════════
SETUP COMPLETE ✓
═══════════════════════════════════════════
Repo: [repo name]
Type: [Angular / Go microservice]
Running at: [URL]
═══════════════════════════════════════════
Suggest next steps:
/lfx-product-architect to understand how things work/lfx-coordinator/lfx-backend-builder or /lfx-ui-buildertools
Create a new ticket in the LFXV2 Jira project (linuxfoundation.atlassian.net). Guides the user through picking an issue type (Bug, Story, Task, Epic), writing a concise summary, and capturing the requirement, feature, or bug context — collecting reproduction steps for bugs. Optionally attaches a parent epic, labels, or priority if the user provides them. Submits the ticket via Atlassian MCP and returns the URL. Use this skill any time someone asks to "create a Jira ticket", "open an LFXV2 ticket", "file a bug", "log a story", "write up a feature request", "draft a ticket", or any variation of submitting work into LFXV2.
development
Starting point for LFX development. Describe what you want in plain language and this skill routes you to the right workflow.
development
Generate compliant Angular 20 frontend code — components, services, templates, drawers, pagination UI, and styling. Encodes signal patterns, component structure, PrimeNG wrapper strategy, and all frontend conventions. Only activates in Angular repos.
testing
Combine multiple feature branches across repos into worktrees for end-to-end journey testing. Create, refresh, and teardown integration environments that merge branches from multiple repos.