Specialized knowledge for working with Angular 19 and Nx in the Sentinel monorepo. Use when generating components, running tests/builds, or working with the frontend workspace structure.
This skill provides specialized knowledge for working with Nx in the Sentinel monorepo.
The sentinel-frontend is an Nx monorepo with the following structure:
# Serve the main application (port 4200)
npx nx serve sentinel
# Serve with specific configuration
npx nx serve sentinel --configuration=development
npx nx serve sentinel --configuration=production
# Run all tests
npx nx test sentinel
# Run tests for specific file
npx nx test sentinel --testFile=path/to/specific.spec.ts
# Run tests in watch mode
npx nx test sentinel --watch
# Run with coverage
npx nx test sentinel --coverage
# Build for development
npx nx build sentinel
# Build for production
npx nx build sentinel --configuration=production
npm run build:prod # Shorthand defined in package.json
# Generate component
npx nx generate @angular/core:component --name=my-component --project=sentinel --standalone=true
# Generate service
npx nx generate @angular/core:service --name=my-service --project=sentinel
# Generate library
npx nx generate @nx/angular:library --name=my-lib
# Generate interface
npx nx generate @angular/core:interface --name=my-interface --project=sentinel
# Lint the project
npx nx lint sentinel
# Lint and fix
npx nx lint sentinel --fix
# Format with prettier
npx nx format:write
# View project dependency graph
npx nx graph
# Show affected projects
npx nx affected:graph
The workspace is configured with:
When generating components for Sentinel, always use:
--standalone=true: All components are standalone--project=sentinel: Target the main applicationapps/sentinel/src/app/For detailed component generation examples and templates, see component-generation.md.
When generating forms, use the new Signal Forms package (@angular/forms/signals).
Key points:
form() from @angular/forms/signals instead of FormGroup/FormControlsignal()Field component in templatesFor detailed examples and patterns, see signal-forms.md.
Reference implementation: login.component.ts
nx affected commands in CI/CDAfter updating the Rails backend API:
cd sentinel-backend
rails rswag:specs:swaggerize
cd ..
./tools/generate-api-clients.sh
This regenerates TypeScript clients in libs/sentinel/api-client/
The frontend is containerized and served via nginx in production:
cd sentinel-frontend
docker build -t sentinel-frontend .
npx nx reset
rm -rf node_modules package-lock.json
npm install
npx nx --version
Invoke this skill when: