# Skill Registry — Aurora Catalyst

A navigable catalog of the project's skills, organized by **scope** (physical location) and within
each scope by **type**. Each `SKILL.md` is the source of truth — this file is only the index.

**Sync rule**: after creating, editing, or deleting any skill, regenerate this file so it reflects
the real state.

## How to use this registry

1. Detect the **scope** of your task (monorepo, frontend, backend) — usually the first thing you
   know
2. Go to the matching section and locate the applicable skill type
3. Read the `SKILL.md` BEFORE writing code
4. Multiple skills may apply at once — read them all and combine their rules

---

## Monorepo (`.claude/skills/`)

Apply to the whole project, stack-agnostic.

### Aurora Domain

| Skill                   | Trigger                                                                                                                                                                                                | Path                                            |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------- |
| `business-rules-guard`  | Adding, modifying, or derogating business rules; rule cited or asked about by `BR-<BC>-<AGGREGATE>-<NNN>`; about to touch code of an aggregate with active rules; any `/business-rules:*` command run  | `.claude/skills/business-rules-guard/SKILL.md`  |
| `catalyst-cli`          | Running `catalyst …` commands, regenerating a module, reconciling `.origin` files, deciding whether a change belongs in YAML or in code, post-schema-edit workflows                                    | `.claude/skills/catalyst-cli/SKILL.md`          |
| `catalyst-schema`       | Analyzing or editing `*.aurora.yaml` files, validating naming, descriptions, and DDD semantics                                                                                                         | `.claude/skills/catalyst-schema/SKILL.md`       |
| `harness-rules-guard`   | An HR rule cited or asked about by `HR-<TOPIC>-<NNN>`; about to touch paths governed by an active harness rule; during `/opsx:propose` (declaring `## Harness rules applicable`); files under `cliter/harness-rules/`  | `.claude/skills/harness-rules-guard/SKILL.md`   |

### Code Quality

| Skill        | Trigger                                                                                                   | Path                                 |
| ------------ | --------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| `judgment-day` | Blind dual / adversarial review of a diff ("judgment day", "dual review", "juzgar"): two independent judges, fix confirmed issues, then re-judge | `.claude/skills/judgment-day/SKILL.md` |
| `typescript` | Implementing or refactoring TS in `.ts`/`.tsx` (types, interfaces, generics, type guards, removing `any`) | `.claude/skills/typescript/SKILL.md` |

### Workflow — OpenSpec SDD

| Skill                     | Trigger                                                            | Path                                              |
| ------------------------- | ------------------------------------------------------------------ | ------------------------------------------------- |
| `openspec-propose`        | Create a new change proposal with all artifacts in one step        | `.claude/skills/openspec-propose/SKILL.md`        |
| `openspec-explore`        | Think through an idea or investigate before committing to a change | `.claude/skills/openspec-explore/SKILL.md`        |
| `openspec-apply-change`   | Implement the tasks of an existing change                          | `.claude/skills/openspec-apply-change/SKILL.md`   |
| `openspec-archive-change` | Finalize and archive a change after implementation                 | `.claude/skills/openspec-archive-change/SKILL.md` |

### Meta

| Skill                            | Trigger                                                                          | Path                                                     |
| -------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `catalyst-skill-creator`         | Create new skills following the Agent Skills spec, document AI patterns          | `.claude/skills/catalyst-skill-creator/SKILL.md`         |
| `catalyst-update-skill-registry` | Regenerate this `REGISTRY.md` after creating/editing/deleting/renaming any skill | `.claude/skills/catalyst-update-skill-registry/SKILL.md` |

---

## Frontend (`frontend/.claude/skills/`)

Angular-specific.

### UI & Components

| Skill                               | Trigger                                                                                                                                                                                                                     | Path                                                                 |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| `catalyst-component-catalog`        | **Consume** `@aurora/components`: compose UI, generate screens, pick between existing components by reading `*.stories.ts`. Solution mode.                                                                                  | `frontend/.claude/skills/catalyst-component-catalog/SKILL.md`        |
| `catalyst-component-story-composer` | **Author** stories for `@aurora/components`: add a new component, update a stale story, batch-document. Three-phase procedure (extract facts from `.ts` → demand intent from dev → write + `tsc --noEmit`). Framework mode. | `frontend/.claude/skills/catalyst-component-story-composer/SKILL.md` |
| `catalyst-data-table-management`    | Define columns, render cells, reactive translations, table infrastructure (TanStack + Spartan)                                                                                                                              | `frontend/.claude/skills/catalyst-data-table-management/SKILL.md`    |
| `catalyst-form-composer-auditor`    | Compose or audit `*-detail.component.ts` / `*-form.component.ts` components (COMPOSE or AUDIT mode)                                                                                                                         | `frontend/.claude/skills/catalyst-form-composer-auditor/SKILL.md`    |
| `spartan-ng` | Add, search, compose, style, or debug Spartan UI (Brain/Helm); `@spartan-ng/*` imports, `nx generate @spartan-ng/cli:ui`, or any Angular project with Spartan installed | `frontend/.claude/skills/spartan/SKILL.md` |

### Data Access

| Skill                 | Trigger                                                                                                                                                     | Path                                                   |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| `catalyst-data-layer` | Wire components / resolvers / ad-hoc code to `@aurora/modules/graphql` (fetchers vs composables, query/mutate, resolver pattern, `pickModel`, escape hatch) | `frontend/.claude/skills/catalyst-data-layer/SKILL.md` |

### Layout & Design

| Skill                  | Trigger                                                                            | Path                                                    |
| ---------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------- |
| `layout-design-system` | Review layout, adjust spacing, density, visual hierarchy, compose dashboards/forms | `frontend/.claude/skills/layout-design-system/SKILL.md` |

### i18n

| Skill            | Trigger                                                                          | Path                                              |
| ---------------- | -------------------------------------------------------------------------------- | ------------------------------------------------- |
| `transloco-i18n` | Add translations, create i18n files, configure scope, debug missing translations | `frontend/.claude/skills/transloco-i18n/SKILL.md` |

### Structure & Review

Skills marked with `*` also exist in `backend/.claude/skills/`. When modifying one version, evaluate
whether the change applies to the other.

| Skill                           | Trigger                                                                                    | Path                                                          |
| ------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
| `catalyst-project-structure` \* | Navigate the frontend codebase, "where is X", plan where to place new files                | `frontend/.claude/skills/catalyst-project-structure/SKILL.md` |
| `catalyst-review-module` \*     | Coherence review of a complete frontend module (tree, naming, alignment with other skills) | `frontend/.claude/skills/catalyst-review-module/SKILL.md`     |

---

## Backend (`backend/.claude/skills/`)

NestJS-specific.

### Architecture

| Skill                                  | Trigger                                                                                                                                                                                                                                                                                                                                  | Path                                                                   |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `catalyst-cross-bounded-context-ports` | Cross-BC dependency (consumer BC needs to read/write data from supplier BC). Canonical Hexagonal pattern: port in consumer side, adapter in supplier side, bridge in composition root. Trigger words: "cross-bc", "consume service from another BC", "imports OtherBcModule". Antipattern detection on `imports: [OtherBcModule]` or wholesale `exports: [...XServices]` in new code | `backend/.claude/skills/catalyst-cross-bounded-context-ports/SKILL.md` |

### Application Layer

| Skill                        | Trigger                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Path                                                         |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `catalyst-handler-composer`  | Fill in business logic inside CLI-generated handlers in `@app/*/application/*/` (CRUD archetypes + `additionalApis` scaffolds); wire `@EmitEvent` / `@ApplySchema` / `@Format`; decide handler-vs-service split. Step 0 routes CLI-territory through the CLI before any hand edit. ALSO covers hand-written COMPOSITE HANDLERS for protocol-flow endpoints (OAuth token, JWKS, webhooks): the dispatch lives in the handler, NEVER duplicated across transports. Antipattern detection on `if (grantType==='X') ... else if ...` repeated in controller AND resolver | `backend/.claude/skills/catalyst-handler-composer/SKILL.md`  |
| `catalyst-field-schema`      | Declarative data-access layer: `FieldSchema` + 16 type handlers (incl. `password` bcrypt/mask), the three decorators `@ApplySchema` / `@Format` / `@Sanitize` with decision tree + `payloadIndex`, `Obj.diff` helper, `QueryStatement` shape, 40+ `Operator` enum, `include` patterns, and the documented `formatRecord` security gap with workaround (SPEC-07 upstream)                                                                                       | `backend/.claude/skills/catalyst-field-schema/SKILL.md`      |
| `catalyst-nestjs-primitives` | Catalog + reuse-first gate for NestJS primitives: the 3 catalyst-authored items (`@Auth` composite, `AuthenticationJwtGuard`, `AuthorizationPermissionsGuard`), upstream decorator catalog (`@Timezone`, `@Auditing`, `@CurrentAccount`, `@ContentLanguage`, `@TenantPolicy`, `@TenantConstraint`), dual REST/GraphQL context via `Api.getRequestFromExecutionContext()`, `dPermissions.all` convention, and last-resort templates                             | `backend/.claude/skills/catalyst-nestjs-primitives/SKILL.md` |
| `catalyst-backend-testing`   | Starting-point testing conventions for catalyst backend: the decorator-fires-in-TestingModule gotcha (`@ApplySchema` / `@Format` / `@Sanitize` / `@EmitEvent` all run during `handler.main()` in tests), synthesized write/read handler templates anchored on `IamCreateTagHandler` + `IamFindTagByIdHandler`, dual-context guard tests, supertest REST+GraphQL patterns, and the `dPermissions.all` seed utility pattern for `@Auth`-protected endpoint tests | `backend/.claude/skills/catalyst-backend-testing/SKILL.md`   |

### Structure & Review

Skills marked with `*` also exist in `frontend/.claude/skills/`. When modifying one version,
evaluate whether the change applies to the other.

| Skill                           | Trigger                                                                                   | Path                                                         |
| ------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `catalyst-project-structure` \* | Navigate the backend codebase, "where is X", plan where to place new files. Now includes the **Hand-written protocol-flow endpoints** section: dedicated `<flow>.module.ts` + `controllers/` + `resolvers/` + `graphql/` subdirs; the generated BC module IMPORTS the flow module instead of registering its hand-written code | `backend/.claude/skills/catalyst-project-structure/SKILL.md` |
| `catalyst-review-module` \*     | Coherence review of a complete backend module (tree, naming, alignment with other skills) | `backend/.claude/skills/catalyst-review-module/SKILL.md`     |
