# Schematics

> Use this skill when working with Spartacus schematics - Angular schematics for installing, configuring, and migrating Spartacus libraries. Trigger when the user mentions writing, debugging, or testing schematics, works with migration scripts or constructor/component deprecations, creates feature schematics configuration, adds new library installation schematics, tests schematics with verdaccio, or updates migrations.json or deprecation data files. Even if the user just mentions 'schematics', 'ng add', or 'ng update' in the context of Spartacus development, load this skill.

- Skill: `sap/schematics` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sap/schematics`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sap/schematics/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: sap (https://skillmd.com/u/sap)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sap/schematics

---


# Spartacus Schematics Development

This skill covers developing and testing Angular schematics for Spartacus library installation and migration.

## Directory Structure

| Path | Purpose |
|------|---------|
| `core-libs/schematics/` | Main installation and migration schematics |
| `core-libs/schematics/src/migrations/` | Version-specific migration scripts |
| `core-libs/schematics/src/shared/` | Shared utilities |
| `core-libs/schematics/src/shared/lib-configs/` | Feature schematics configurations |
| `<lib>/schematics/` | Feature-specific installation schematics in each library |

## Testing Commands

```bash
# Core Schematics lib
cd core-libs/schematics && npm run test


# All libs' schematics
npm run test:all-schematics

# Single library schematics (Jest)
nx run <library-name>:test-jest

# Specific test file
nx run <library-name>:test-jest --testPathPatterns="<spec-filename>"
```

**Technical note**: During `build`/`test`, `feature-toggles.ts` is copied from `@spartacus/core` to `src/feature-toggles.copied-from-core-lib.ts` (git-ignored). This avoids direct dependency on `@spartacus/core`.

