{
  "catalog": {
    "name": "rnp-skills-catalog",
    "version": "1.0.0",
    "description": "Catálogo de skills reutilizáveis",
    "categories": [
      {
        "id": "negocio",
        "title": "Negócio",
        "color": "#D97706",
        "description": "Skills voltadas para estratégia, vendas, clientes e gestão.",
        "skills": []
      },
      {
        "id": "operacao",
        "title": "Operação",
        "color": "#CA8A04",
        "description": "Skills voltadas para apoio à operação.",
        "skills": []
      },
      {
        "id": "infraestrutura",
        "title": "Infraestrutura",
        "color": "#FF0000",
        "description": "Skills para cloud, provisionamento, segurança, observabilidade e ambientes.",
        "skills": []
      },
      {
        "id": "desenvolvimento",
        "title": "Desenvolvimento",
        "color": "#0EA5E9",
        "description": "Skills de engenharia de desenvolvimento frontend e backend.",
        "skills": [
          {
            "id": "backend-java-external-client",
            "title": "Spring external service client (outbound integration)",
            "description": "When calling an external service or admin API from the backend, or reviewing an existing outbound client for consistency — structure an OUTBOUND HTTP integration client in Spring (RestClient/WebClient/Feign): endpoint constants, timeouts, retry/resilience, error→typed-exception mapping, and credential propagation. Does not cover inbound REST endpoints (see backend-rnp-java-rest-api) or async messaging between services (see backend-rnp-messaging-rabbitmq).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-java-external-client",
            "install_command": "appstarter-cli-dev skills install backend-java-external-client",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-bootstrap",
            "title": "RNP Backend Archetype Bootstrap",
            "description": "When scaffolding a brand-new RNP backend from the AppStarter Maven archetype (br.rnp:projeto-backend-archetype, Spring Boot 4 / Java 25) — triggers on \"create a backend project for RNP\" / \"crie um projeto backend da RNP\". Step 0 runs standards-ai-config; validating GITLAB_TOKEN is the first token-dependent action (stops with guidance if missing). Generates via mvn archetype:generate against the GitLab Maven Package Registry (group 638), asks the project name and GitLab group prefix (interactive question UI, plain-text fallback), proposes the Maven coordinates as defaults, renames the generated folder to `backend`, rewrites the pom.xml scm URLs to SSH, wires Keycloak (realm <name>, clients <name>-backend/<name>-frontend, ROLE_USER via default-roles), and ends with a git/SSH next-steps guide. Does not cover the frontend template (see frontend-rnp-bootstrap), fullstack scaffolding (see appstarter-rnp-bootstrap), or CI/CD wiring (see backend-rnp-cicd).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-bootstrap",
            "install_command": "appstarter-cli-dev skills install backend-rnp-bootstrap",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-ai-config"
            ]
          },
          {
            "id": "frontend-typescript-best-practices",
            "title": "TypeScript Best Practices",
            "description": "When creating, refactoring, or reviewing TypeScript code in the frontend stack — defines TypeScript development standards focused on classes, arrow-function methods, and file naming conventions — the base that frontend-react-conventions extends. Does not cover React-specific patterns (see frontend-react-conventions).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-typescript-best-practices",
            "install_command": "appstarter-cli-dev skills install frontend-typescript-best-practices",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-security-auth",
            "title": "Backend authorization & identity",
            "description": "When securing or reviewing an endpoint's authorization, or when editing etc/realm-export.json / troubleshooting local Keycloak login — two concerns for an RNP backend. Authorization — enforce and diagnose action-level access with Spring method security (@PreAuthorize on controller/v1 only) over roles/authorities from the validated JWT; RNP is role-based (no OAuth scope, no tenant/client partitioning); the canonical expression is hasRole('ROLE_USER'). Keycloak realm — maintain the local realm export/import (Docker Compose + realm JSON) and map backend config to realm clients/roles. Does not cover threat-modeling or claim-mapper security changes (see backend-security-review) or query performance (see backend-data-postgres-query).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-security-auth",
            "install_command": "appstarter-cli-dev skills install backend-rnp-security-auth",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-java-rest-api",
            "title": "Spring REST resource API (controller/v1)",
            "description": "When adding or changing a REST endpoint, its DTOs/mappers, or its error paths — build a versioned Spring Boot REST resource (controller/v1) end-to-end: controller contract (ResponseEntity, OpenAPI @Tag/@Operation with stable operationId, pagination), record DTOs and MapStruct mappers, and error responses via the MessageProperty enum (i18n). Does not cover scaffolding the module the controller lives in (see backend-rnp-java-module-scaffold), authorization of the operation (see backend-rnp-security-auth), or tests (see backend-rnp-java-testing).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-java-rest-api",
            "install_command": "appstarter-cli-dev skills install backend-rnp-java-rest-api",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-data-liquibase",
            "title": "RNP Liquibase migrations",
            "description": "When creating or reviewing a Liquibase migration in an RNP backend — adding a changeset under src/main/resources/db/migrations/, naming the file (V1_###_<slug>.xml), wiring the master changelog, writing rollback, ordering changesets, or copying a DDL changeset template (the cookbook in assets/*.tpl — create table, _aud twin, insert/update, add/drop column, index, unique, FK). Covers migration mechanics and templates. Does not cover object/column names (see backend-rnp-data-mad) or Envers _aud table specifics (see backend-rnp-data-envers-audit).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-data-liquibase",
            "install_command": "appstarter-cli-dev skills install backend-rnp-data-liquibase",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "backend-rnp-data-mad"
            ]
          },
          {
            "id": "backend-rnp-data-envers-audit",
            "title": "RNP Envers Audit",
            "description": "When the user explicitly requested an Envers-audited entity (\"Envers\", \"@Audited\", \"_AUD\", \"histórico de revisões\"), or a failure traces to a *_aud table/constraint (e.g. a 500 on delete/update caused by an insert into a *_aud table) — safely add or change Hibernate Envers @Audited entities in an RNP backend without breaking the _aud twin tables. Encodes the NOT-NULL-audited-column bug class. Does not cover the default AuditableEntity metadata tier (see backend-rnp-java-module-scaffold) or migration mechanics (see backend-rnp-data-liquibase).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-data-envers-audit",
            "install_command": "appstarter-cli-dev skills install backend-rnp-data-envers-audit",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "backend-rnp-data-liquibase",
              "backend-rnp-data-mad"
            ]
          },
          {
            "id": "backend-java-dependency-upgrade",
            "title": "Spring dependency upgrade",
            "description": "When bumping the framework/BOM, the language (JDK) version, or a library with breaking changes or a CVE fix, or when triaging a build break after a dependency change — upgrade the runtime, framework, or dependencies of a Spring Boot / JVM project safely: read the official migration guide, stage the bump, resolve deprecations and transitive conflicts, and verify behavior before merge. Does not cover authoring new application code or a pure security audit of existing code (see backend-security-review).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-java-dependency-upgrade",
            "install_command": "appstarter-cli-dev skills install backend-java-dependency-upgrade",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "standards-skill-validation",
            "title": "Skill Validation",
            "description": "When validating, checking, or linting one or more skills against the Agent Skills Spec — frontmatter fields, name/folder match, naming rules, and size limits. It runs the official skills-ref validator via a cross-platform Python runner (scripts/validate_skills.py), bootstrapping it on first use. Use when the user asks to validate a skill, validate all skills, or check a skill before committing. Do not use for authoring or naming decisions — see standards-skill-authoring.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-skill-validation",
            "install_command": "appstarter-cli-dev skills install standards-skill-validation",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "standards-skill-authoring",
            "title": "Skill Authoring",
            "description": "When authoring a skill in this repository — creating, naming, structuring, renaming, splitting, merging, or reviewing one, or writing its SKILL.md frontmatter. Covers the purpose-prefix naming convention, the assets/references/scripts layout with the 500-line and progressive-disclosure rules, the frontmatter contract the skills-ref validator enforces (allowed fields, name/folder match, description ≤1024), and the create-then-validate workflow. For running the validator itself, see standards-skill-validation.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-skill-authoring",
            "install_command": "appstarter-cli-dev skills install standards-skill-authoring",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-skill-validation"
            ]
          },
          {
            "id": "git-conventional-commits",
            "title": "Conventional Commits",
            "description": "When creating, reviewing, or suggesting Git commit messages OR pull/merge request titles — applies Conventional Commits 1.0.0 (required type + description, optional scope/body/footer, version-bump per type, breaking-change notation) plus two repo-mandatory extensions that each require asking the user before writing the message; the `Refs: <issue-id>` footer (ask for the issue id) and the commit-language question (en-US default). Stack-agnostic.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/git-conventional-commits",
            "install_command": "appstarter-cli-dev skills install git-conventional-commits",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-routes-standard",
            "title": "React Route Constants Standard",
            "description": "When creating or refactoring routes, router setup, or navigation — defines route constants standards (centralizing global routes in common/constants/routes.ts and per-feature strings in features/*/constants/featureNameRoutes.ts) AND the route composition architecture for the React frontend (useRoutes + RouteObject[] feature arrays orchestrated by App.router.tsx). Do not use for general folder placement (use frontend-architecture-foundation).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-routes-standard",
            "install_command": "appstarter-cli-dev skills install frontend-routes-standard",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-rnp-bootstrap",
            "title": "Frontend Template Bootstrap",
            "description": "When scaffolding a brand-new frontend project from the rnpbr Vite + TypeScript starter template (github.com/rnpbr/appstarter-frontend-vite-ts-tpl). Triggers on \"create a frontend project for RNP\" / \"crie um projeto frontend da RNP\". Validates GITHUB_TOKEN first and stops with guidance if missing, then clones the template into a folder named `frontend`. Uses the interactive AskUserQuestion UI by default (plain-text fallback) to ask the project name and GitLab group prefix, renames the project in package.json and package-lock.json, sets the repository URL over SSH (git+ssh://git@gitlab.rnp.br/<prefix>/frontend.git), wires the env.js Keycloak/connection keys (KEYCLOAK_REALM, KEYCLOAK_CLIENT_ID, KEYCLOAK_ROLE_CLIENT_ID, KEYCLOAK_URL, API_URL) with a default-and-change prompt, and ends with a git/SSH next-steps guide; also flags that npm install needs an NPM_TOKEN for the @rnpbr GitHub Packages registry.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-rnp-bootstrap",
            "install_command": "appstarter-cli-dev skills install frontend-rnp-bootstrap",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-ai-config"
            ]
          },
          {
            "id": "frontend-react-conventions",
            "title": "React Frontend Conventions",
            "description": "When implementing, reviewing, refactoring, or standardizing React features and components — covers core React + TypeScript + Vite + Sass/SCSS conventions — class-oriented services/helpers, arrow functions, component pattern, semantic HTML5, and file/component naming. For production patterns (composition, performance, data fetching, UX states) use frontend-react-composition-performance; for styling use frontend-styles-scss.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-react-conventions",
            "install_command": "appstarter-cli-dev skills install frontend-react-conventions",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-react-composition-performance",
            "title": "React Composition, Performance & UX",
            "description": "When shaping a React feature for scale or reviewing it for performance/UX quality — composing small single-responsibility components, memoization and lazy-loading decisions, centralizing data fetching in typed services with explicit async states (idle/loading/success/error), and treating loading/error/empty as official parts of every flow. Use alongside frontend-react-conventions (core React/TS conventions). Does not cover styling (see frontend-styles-scss) or pure visual/UX review (see frontend-design-guidelines).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-react-composition-performance",
            "install_command": "appstarter-cli-dev skills install frontend-react-composition-performance",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-dependency-install-cooldown",
            "title": "Dependency Install Cooldown (7 days)",
            "description": "When installing, adding, or upgrading any frontend dependency via npm/yarn/pnpm/bun — enforces a minimum 7-day cooldown between a package version's publish date and its installation to mitigate supply-chain attacks (such as the TanStack and similar npm registry compromises). Does not cover transitive dependencies (exempt from the standard workflow) or backend Maven dependency upgrades (see backend-java-dependency-upgrade).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-dependency-install-cooldown",
            "install_command": "appstarter-cli-dev skills install frontend-dependency-install-cooldown",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-architecture-foundation",
            "title": "Frontend Architecture Foundation",
            "description": "When starting work in a new or incomplete frontend codebase, scaffolding features, placing new files, reviewing project structure, applying file naming conventions (PascalCase pages, useHookName, no index.ts/index.tsx barrel files), onboarding to a repo, or deciding where styles, components, services, layouts, config, and state should live — defines and enforces the default shared React frontend architecture and folder structure. Assume the baseline architecture even when some folders do not yet exist, and create the missing structure as needed. Does not cover SCSS/BEM authoring (see frontend-styles-scss) or React component code conventions (see frontend-react-conventions).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-architecture-foundation",
            "install_command": "appstarter-cli-dev skills install frontend-architecture-foundation",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-security-review",
            "title": "Backend security review (threat model + vulnerability checklist)",
            "description": "When reviewing a diff as a security gate before merge, or when threat-modeling a change to auth/Keycloak/JWT/scopes or sensitive data — security review for a JVM/Spring backend: the STRIDE threat-modeling methodology (trust boundaries, attacker capabilities, scope-bypass) AND the concrete code-level vulnerability-class checklist (injection, SSRF, insecure deserialization, mass-assignment, secret exposure, misconfiguration, vulnerable dependencies). Does not cover enforcing/auditing authorization correctness — action checks or row-level visibility (see backend-rnp-security-auth).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-security-review",
            "install_command": "appstarter-cli-dev skills install backend-security-review",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-messaging-rabbitmq",
            "title": "RNP RabbitMQ messaging — implement & review",
            "description": "When ADDING a new async queue flow/consumer/producer or REVIEWING an existing messaging flow in an RNP backend (RabbitMQ on-premise / SQS on AWS, over the RNP core queue abstraction configured under cali.queue.*) — covers application.yml wiring, the MessageQueueProducer wrapper, QueueConsumer with explicit bean naming, publishing from a service, Testcontainers/docker-compose, and the pre-merge review gate (idempotency, listener routing, publish-after-commit, retry/DLQ). Publishing always happens after the DB commit. Does not cover transaction boundary design (see backend-java-transactions) or synchronous HTTP integrations (see backend-java-external-client).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-messaging-rabbitmq",
            "install_command": "appstarter-cli-dev skills install backend-rnp-messaging-rabbitmq",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-java-testing",
            "title": "RNP backend tests",
            "description": "When writing or reviewing backend tests in an RNP project — two modes. Unit — isolated JUnit 5 + Mockito + AssertJ + Fixture Factory tests in the Given-When-Then style, no Spring context, for a service/validator/mapper/Specification. Integration — booted-app tests with real infrastructure (Testcontainers), real OAuth2 auth via Keycloak, and real HTTP (RestTestClient/TestRestTemplate) by extending BaseIntegrationTest. Owns the repo's canonical Maven test commands. Does not cover the REST contract itself (see backend-rnp-java-rest-api) or realm/role setup (see backend-rnp-security-auth).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-java-testing",
            "install_command": "appstarter-cli-dev skills install backend-rnp-java-testing",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-java-refactor",
            "title": "Java Refactor (RNP conventions)",
            "description": "When cleaning up or restructuring RNP Java code while preserving observable behavior — the request says \"refactor\"/\"tidy\"/\"simplify\"/\"improve X\", generated code needs a conventions check, or a new constructor dependency causes a Spring bean cycle / BeanCurrentlyInCreationException — review and refactor against RNP conventions (template-generated DTOs, MessageProperty, FetchType.LAZY, controller-only authorization, lowercase MAD names) and break bean cycles via a facade. These rules outrank default refactoring judgment. Does not cover security review (see backend-security-review), architecture-level dependency direction (see backend-arch-review), or test run commands (see backend-rnp-java-testing).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-java-refactor",
            "install_command": "appstarter-cli-dev skills install backend-rnp-java-refactor",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "backend-rnp-java-testing"
            ]
          },
          {
            "id": "backend-rnp-java-module-scaffold",
            "title": "Backend Module Scaffold",
            "description": "When creating any feature/module under br.rnp.<projeto>.module.* — a JPA entity, a read-only resource, an integration adapter, or when the user asks to \\\"criar um CRUD\\\"/\\\"nova feature\\\" — scaffold Spring Boot backend modules from profile templates: base-only package layout, read-only resource, integration-backed module (controller/service delegating to an external client), or full CRUD (controller/v1, service, repository, entity, DTOs, MapStruct mapper, pagination). Auditing is opt-in and confirmed with the user: default entity is BaseEntity (no audit columns); \\\"auditável\\\" means AuditableEntity metadata columns with NO _AUD table; Envers runs only on explicit Envers keywords. Does not cover the REST endpoint/DTO contract details (see backend-rnp-java-rest-api), outbound HTTP calls (see backend-java-external-client), or Envers mechanics (see backend-rnp-data-envers-audit).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-java-module-scaffold",
            "install_command": "appstarter-cli-dev skills install backend-rnp-java-module-scaffold",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "backend-rnp-java-rest-api",
              "backend-java-external-client",
              "backend-rnp-data-mad",
              "backend-rnp-data-liquibase",
              "backend-rnp-data-envers-audit"
            ]
          },
          {
            "id": "backend-rnp-data-mad",
            "title": "RNP MAD — database naming & modeling standard",
            "description": "When naming or modeling database objects in an RNP backend — creating/reviewing a Liquibase changeset, an `@Table`/`@Column`/`@SequenceGenerator`, or any table, column, primary key, foreign key, index, sequence, or constraint name. Encodes the RNP MAD (Metodologia de Administração de Dados) naming standard — object/table prefixes (tb_, rl_, au_, …), column prefixes (co_, dt_, ds_, st_, nu_, …), and mandatory object comments. Do not use for query performance review (backend-data-postgres-query), Envers `_AUD` mechanics (backend-rnp-data-envers-audit), or migration file mechanics like rollback/ordering (backend-rnp-data-liquibase).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-data-mad",
            "install_command": "appstarter-cli-dev skills install backend-rnp-data-mad",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-rnp-cicd",
            "title": "RNP backend CI/CD (GitLab)",
            "description": "When setting up or reviewing CI/CD for an RNP backend — the project `.gitlab-ci.yml`, the `Dockerfile`, or the `k8s/deployment.yaml`. RNP uses GitLab only (no GitHub Actions); the project `.gitlab-ci.yml` is minimal and includes the shared RNP pipeline template, while the Dockerfile and k8s manifests are parameterized by GitLab CI variables. Use for pipeline/image/deploy wiring; for project scaffolding and the Maven settings.xml see backend-rnp-bootstrap.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-rnp-cicd",
            "install_command": "appstarter-cli-dev skills install backend-rnp-cicd",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-java-transactions",
            "title": "Spring transaction management",
            "description": "When adding or reviewing @Transactional, designing a multi-step atomic operation, choosing propagation/isolation, or debugging a transaction that didn't roll back / didn't commit as expected — get Spring @Transactional boundaries right: propagation, read-only optimization, isolation, REQUIRES_NEW semantics, and the proxy self-invocation pitfall. Does not cover query cost / N+1 / lazy loading (see backend-data-postgres-query) or publish-after-commit messaging (see backend-rnp-messaging-rabbitmq).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-java-transactions",
            "install_command": "appstarter-cli-dev skills install backend-java-transactions",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-java-observability",
            "title": "Spring observability (proactive instrumentation)",
            "description": "When adding logging/tracing to a flow, wiring correlation IDs, enriching error reports, or reviewing log hygiene — instrument backend code for production diagnosability: structured logging, MDC/correlation IDs across the request and async boundaries, error-reporter context (breadcrumbs/scopes), and strict redaction (never log secrets/JWT/PII). Does not cover triaging a production error already captured (out of scope — production triage consumes these signals) or query performance profiling (see backend-data-postgres-query).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-java-observability",
            "install_command": "appstarter-cli-dev skills install backend-java-observability",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-data-redis-cache",
            "title": "Redis / Spring Cache review",
            "description": "When a change adds or edits @Cacheable/@CacheEvict/@CachePut or cache configuration, or a user reports seeing another scope's data — review Spring Cache / Redis usage for correctness BEFORE performance: cache-key scoping (no cross-scope data leak), TTL presence, key SpEL, and eviction on writes. Any cross-scope leak escalates to backend-security-review. Does not cover query/persistence cost (see backend-data-postgres-query).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-data-redis-cache",
            "install_command": "appstarter-cli-dev skills install backend-data-redis-cache",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-data-postgres-query",
            "title": "PostgreSQL / JPA query review",
            "description": "When a change touches an entity, repository, Specification, or @Query, or an endpoint is slow — review JPA/Hibernate persistence against PostgreSQL for correctness and performance: N+1, missing FetchType.LAZY, unbounded queries, missing pagination, Specification inefficiency, and missing indexes. Does not cover transaction boundaries (see backend-java-transactions), cache scope (see backend-data-redis-cache), object naming (see backend-rnp-data-mad), or migration mechanics (see backend-rnp-data-liquibase).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-data-postgres-query",
            "install_command": "appstarter-cli-dev skills install backend-data-postgres-query",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "appstarter-rnp-bootstrap",
            "title": "RNP AppStarter Bootstrap (Frontend + Backend)",
            "description": "When scaffolding a brand-new RNP AppStarter project (frontend and/or backend) from a single base name — triggers on \"crie um projeto appstarter da rnp\" / \"create an RNP appstarter project\". Asks the generation scope (Both / Only frontend / Only backend), validates the token(s) that scope needs (stops with guidance if missing), asks once for the project name and one shared GitLab group prefix, derives the naming convention and Keycloak realm/clients as defaults, confirms, then delegates to backend-rnp-bootstrap and frontend-rnp-bootstrap and keeps Keycloak in sync across frontend env.js and backend config. Ends with a combined git/SSH next-steps report. Does not cover single-project scaffolding (see backend-rnp-bootstrap / frontend-rnp-bootstrap) or work on an existing project (see the skill catalogs). The delegated skills' rules outrank this file.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/appstarter-rnp-bootstrap",
            "install_command": "appstarter-cli-dev skills install appstarter-rnp-bootstrap",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-ai-config",
              "backend-rnp-bootstrap",
              "frontend-rnp-bootstrap"
            ]
          },
          {
            "id": "appstarter-skills-pack",
            "title": "AppStarter Skills Pack",
            "description": "When working inside an already-generated RNP AppStarter fullstack project (backend + frontend), or asked \"what skills exist for this project\" / \"which catalog applies\" for a fullstack solution — static index that points to standards-backend-skill-catalog (backend/Java routing) and standards-frontend-skill-catalog (frontend/React routing). Does no task-based routing itself (see those catalogs for bundles and choose-by-task guides) and does not scaffold a new project (see appstarter-rnp-bootstrap).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/appstarter-skills-pack",
            "install_command": "appstarter-cli-dev skills install appstarter-skills-pack",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-backend-skill-catalog",
              "standards-frontend-skill-catalog",
              "appstarter-rnp-bootstrap"
            ]
          },
          {
            "id": "standards-backend-skill-catalog",
            "title": "Backend & Base Skill Catalog",
            "description": "When starting backend/Java/Spring work, deciding which backend skill applies to a task, or asking \"which backend skill should I use\" / \"what backend skills exist\" — index and catalog of this repository's base skills (standards-*, meta-*, git-*) and backend skills (backend-*, appstarter-*), with quick-route bundles and a choose-by-task guide. Does not cover frontend routing (see standards-frontend-skill-catalog).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-backend-skill-catalog",
            "install_command": "appstarter-cli-dev skills install standards-backend-skill-catalog",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-skill-authoring",
              "standards-ai-config",
              "backend-rnp-java-rest-api",
              "backend-java-transactions",
              "backend-rnp-java-refactor",
              "backend-java-external-client",
              "backend-java-observability",
              "backend-rnp-java-testing",
              "backend-rnp-java-module-scaffold",
              "backend-java-dependency-upgrade",
              "backend-rnp-data-mad",
              "backend-rnp-data-liquibase",
              "backend-data-postgres-query",
              "backend-data-redis-cache",
              "backend-rnp-data-envers-audit",
              "backend-rnp-messaging-rabbitmq",
              "backend-rnp-security-auth",
              "backend-security-review",
              "backend-arch-review",
              "backend-rnp-cicd",
              "backend-rnp-bootstrap",
              "appstarter-rnp-bootstrap"
            ]
          },
          {
            "id": "rnp-validator-feature-pack",
            "title": "Validate Feature Packs (PRD generation)",
            "description": "When the user wants to validate the RNP feature packs and surface their open questions — triggers on \"valide os feature packs\", \"gere uma PRD para cada feature pack\", \"crie os PRDs de 02_feature_packs\", \"rode o validador de feature pack\". Drives cy-create-prd in batch over every subfolder of 02_feature_packs (one PRD per pack) with three overrides — (1) fully autonomous, NO interactive questions — every business conflict, gap, or ambiguity goes to Open Questions instead of being asked or inferred; (2) NO web research, only pack-folder content; (3) PRD prose in pt-BR, template structural headings kept in their original language. The primary artifact is a consolidated _feature_pack_validation.md report (status plus open questions grouped per feature pack); the per-pack cy-create-prd files are kept alongside it. Use whenever the request is about auditing 02_feature_packs for missing or conflicting business rules. Not for TechSpecs (see cy-create-techspec) or tasks (see cy-create-tasks).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/rnp-validator-feature-pack",
            "install_command": "appstarter-cli-dev skills install rnp-validator-feature-pack",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "figma-design-analysis",
            "title": "Figma Design Analysis",
            "description": "Analyze Figma files, frames, screens, components, and prototypes through read-only Figma MCP tools; extract traceable design facts without inventing product or business requirements; synthesize a canonical design-spec.md; and optionally assemble a development handoff with selected screenshots, exported SVG assets, and a verified asset manifest. Use for Figma design audits, frame-to-spec extraction, visual development handoffs, design evidence capture, state and interaction inventories, responsive and accessibility evidence, Compozy inputs, and conversion of an existing analysis.json into the canonical design specification.",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/figma-design-analysis",
            "install_command": "appstarter-cli-dev skills install figma-design-analysis",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "mobile-rnp-flutter-bootstrap",
            "title": "RNP AppStarter Mobile — Project Bootstrap",
            "description": "When bootstrapping, generating, or scaffolding a NEW RNP AppStarter Mobile (Flutter) project from the `appstarter_mobile` Mason brick — triggers on \"create/start a new RNP Flutter app\", \"generate a project from the archetype\", \"appstarter mobile\", or \"mason make appstarter_mobile\". Provisions the toolchain on macOS, Linux/WSL and Windows/Git Bash (installing FVM per OS on approval, Flutter stable, mason_cli via pub, FLUTTER_HOME/DART_HOME/PATH), refreshes the brick from gitlab.rnp.br/arquitetura/rnp_flutter_app_archetype, and collects the four brick variables (app_name, app_description, android_keystore_alias, android_keystore_password) up front so generation runs unattended, passing them through a JSON config that is deleted after use because it carries the keystore password. Requires GITLAB_TOKEN exported. Ends at generation — it does not build, test, git-init, or configure the IdP. Does not cover adding feature modules to an existing project (see mobile-rnp-flutter-module-scaffold).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/mobile-rnp-flutter-bootstrap",
            "install_command": "appstarter-cli-dev skills install mobile-rnp-flutter-bootstrap",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "mobile-rnp-flutter-module-scaffold",
            "title": "RNP Flutter — Feature Module Scaffold",
            "description": "When creating or scaffolding a feature module for an RNP AppStarter Mobile (Flutter) app — one module = one business domain (one macro resource `/recurso`) — the CRUD vertical slice under `lib/app/modules/<feature>/`: model, list/find/save/update/delete use cases (Dio), Triple store, list page with the app menu, create/edit form, `createModule`, tests and the `app_module`/`MenuWidget` wiring. The list is one-shot or PAGINATED with infinite scroll (`infinite_scroll_pagination` 5.x). Derivable from an OpenAPI spec via `scripts/openapi_extract.py`, which also settles module boundaries, flags relationships (drill-down, parent picker) to confirm, and fills `.env` (backend URL, IdP issuer/realm/clientId). Triggers on \"add/create a module/feature/screen/form/paginated list/infinite scroll/drill-down\", \"split modules by domain\" or \".env/backend URL\" in a Flutter app on this architecture (flutter_modular v7 + flutter_triple + rnp_flutter_core/oidc). Not for project bootstrap (see mobile-rnp-flutter-bootstrap).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/mobile-rnp-flutter-module-scaffold",
            "install_command": "appstarter-cli-dev skills install mobile-rnp-flutter-module-scaffold",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "standards-ai-config-mobile-flutter",
            "title": "AI Assistant Config — RNP AppStarter Mobile (Flutter)",
            "description": "When configuring an RNP AppStarter Mobile (Flutter) project for coding agents — triggers on \"configure the AI/agents for this Flutter app\", \"create AGENTS.md\", \"set up CLAUDE.md/Codex/Cursor/Copilot here\", or right after mobile-rnp-flutter-bootstrap generates a project. Writes the AI-agnostic AGENTS.md plus the tool-specific file each selected tool reads (CLAUDE.md, GEMINI.md, .github/copilot-instructions.md) as independent full copies of one rendered content — no @import indirection — with the Flutter/Modular-7/Triple conventions and skill routing filled from the real project (pubspec.yaml, .fvmrc, lib/app/modules). Then ensures the AppStarter CLI is present and installs mobile-rnp-flutter-module-scaffold, verifying the result because the CLI exits 0 even when the skill is missing. Never overwrites an existing file without asking. Does not cover non-mobile projects (see standards-ai-config), project generation (see mobile-rnp-flutter-bootstrap), or authoring skills (see standards-skill-authoring).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-ai-config-mobile-flutter",
            "install_command": "appstarter-cli-dev skills install standards-ai-config-mobile-flutter",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "cli-rnp-operate",
            "title": "Appstarter CLI — Command Reference",
            "description": "Complete reference for the Appstarter CLI commands (RNP/getInsight). Use this skill whenever the user mentions any Appstarter CLI command, wants to generate projects (backend, frontend, infra, AI or mobile), authenticate, manage skills from the catalog, manage store plugins, run dump/import/export, create plugin wrappers, check the CLI version, or run the CLI tests. Also use it when the user asks \\\"how do I run X on appstarter\\\", \\\"what is the command for Y\\\", or any variation involving appstarter-cli.jar, workspace, generate, generate-mobile, auth, skills, store, dump, plugin, wrapper, qrcode, version, history or GITLAB_PRIVATE_TOKEN.",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/cli-rnp-operate",
            "install_command": "appstarter-cli-dev skills install cli-rnp-operate",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "backend-arch-review",
            "title": "Java architecture review (macro structure gate)",
            "description": "When asked to review architecture/structure/module organization, when adding or moving a module, when a feature specified as a screen is about to become modules, or when a change risks crossing a layer or creating a package cycle — macro-level architecture review for a modular JVM backend: package/module boundaries (one module = one domain, never a screen), dependency direction, layering, and cycles, enforceable with ArchUnit. This is the macro gate. Does not cover per-file coding standards or component-internal refactoring (see backend-rnp-java-refactor), persistence/query cost (see backend-data-postgres-query), or vulnerability classes (see backend-security-review).",
            "version": "0.0.1",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/backend-arch-review",
            "install_command": "appstarter-cli-dev skills install backend-arch-review",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-design-guidelines",
            "title": "Web Design Guidelines",
            "description": "When creating or reviewing layouts, visual components, and user experience — applies web design guidelines inspired by Vercel Labs for clear, consistent, accessible, and conversion-oriented interfaces. Owns WHAT states/contrast/feedback must exist (the spec). Does not cover the React implementation of those states (see frontend-react-composition-performance), component code conventions (see frontend-react-conventions), or folder placement (see frontend-architecture-foundation).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-design-guidelines",
            "install_command": "appstarter-cli-dev skills install frontend-design-guidelines",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-styles-bem",
            "title": "Frontend Styles: BEM Naming",
            "description": "When naming new CSS/SCSS classes, reviewing or refactoring existing class names, deciding block boundaries, flattening deep selectors, or enforcing the no-tag/no-ID-selector rule — block, element, and modifier naming with the BEM methodology for frontend components. Does not cover SCSS authoring/nesting/7-1 structure (see frontend-styles-scss) or token/theme decisions (see frontend-styles-tokens-themes).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-styles-bem",
            "install_command": "appstarter-cli-dev skills install frontend-styles-bem",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "frontend-styles-scss",
            "title": "Frontend Styles: SCSS Authoring & SASS Architecture",
            "description": "When authoring, reviewing, or refactoring SCSS for React components — SCSS structure, nesting, specificity/flatness, component style files, 7-1 layout, or Tailwind/styled-components removal. Covers the `&`-nested block pattern, dedicated component style files and their naming, colocation/import rules, and the SASS 7-1 global architecture. This is the entry point for any styling task; it orchestrates the workflow and delegates class naming to frontend-styles-bem and value/token ownership to frontend-styles-tokens-themes. Does not cover pure folder placement (see frontend-architecture-foundation).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-styles-scss",
            "install_command": "appstarter-cli-dev skills install frontend-styles-scss",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "frontend-styles-bem",
              "frontend-styles-tokens-themes"
            ]
          },
          {
            "id": "frontend-styles-tokens-themes",
            "title": "Frontend Styles: Tokens & Themes",
            "description": "When adding or changing styling variables, classifying a value (abstracts vs themes vs local), enforcing theme parity across light/dark, converting Figma Px→Rem with fidelity, removing hardcoded spacing/colors/sizes, or choosing shared-vs-local value placement — decides where a styling value lives (design tokens, theme variables, or component-local custom properties) and keeps themes consistent. Does not cover SCSS nesting/file structure (see frontend-styles-scss) or class naming (see frontend-styles-bem).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-styles-tokens-themes",
            "install_command": "appstarter-cli-dev skills install frontend-styles-tokens-themes",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "standards-ai-config",
            "title": "AI Assistant Config (self-contained per-tool instruction files)",
            "description": "When initializing or configuring a project's AI-assistant instructions — always generates the AI-agnostic AGENTS.md plus the tool-specific file each selected tool reads (CLAUDE.md, GEMINI.md, .github/copilot-instructions.md), all independent full copies of the same content (Codex/Cursor read AGENTS.md natively; no @import indirection). Triggers on \"configure the AI for this project\", \"create AGENTS.md\", \"set up CLAUDE.md/Copilot\"; invoked first by the *-rnp-bootstrap skills, before any scaffolding. Asks which AI tool(s) the team uses (multi-select) and its own scope (frontend / backend / both), and never overwrites an existing file without asking. Does not cover authoring or naming skills (see standards-skill-authoring) or unifying the catalogs.",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-ai-config",
            "install_command": "appstarter-cli-dev skills install standards-ai-config",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          },
          {
            "id": "standards-frontend-skill-catalog",
            "title": "Frontend & Base Skill Catalog",
            "description": "When starting frontend work, deciding which frontend skill applies to a task, or asking \"which skill should I use\" / \"what skills exist\" — index and catalog of this repository's base skills (standards-*, meta-*, git-*) and frontend skills (frontend-*, appstarter-*), with quick-route bundles and a choose-by-task guide. Does not cover backend routing (see standards-backend-skill-catalog).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/standards-frontend-skill-catalog",
            "install_command": "appstarter-cli-dev skills install standards-frontend-skill-catalog",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": [
              "standards-skill-authoring",
              "standards-ai-config",
              "frontend-architecture-foundation",
              "frontend-routes-standard",
              "frontend-react-conventions",
              "frontend-react-composition-performance",
              "frontend-styles-scss",
              "frontend-styles-bem",
              "frontend-styles-tokens-themes",
              "frontend-design-guidelines",
              "frontend-typescript-best-practices",
              "frontend-dependency-install-cooldown",
              "frontend-rnp-bootstrap",
              "appstarter-rnp-bootstrap",
              "git-conventional-commits"
            ]
          },
          {
            "id": "frontend-rnp-design-system",
            "title": "RNP AppStarter Design System (@rnpbr/rnp-design-system on gov.br)",
            "description": "When building or reviewing RNP AppStarter UI and you need the concrete design-system VALUES and components — the gov.br-based @rnpbr/rnp-design-system package (v2 = React 18/19; v1 legacy = React 17). Covers the palette (#1351b4 primary, neutrals, feedback colors), Rawline/Raleway 14px type scale, radius (4/8px, pill), 8px spacing scale, elevation, grid/icon tokens, light+dark theming (semantic pairs; inverted/dark props; v1 .dark-mode), and the 35-component inventory (Button/Input/Card/Modal/Header/Table/DatePicker/Matrix…) + CSS/JS utilities. Read references/design.md for tokens; references/components.md for props, variants, states, Storybook/Figma links; copy assets/ .tpl templates (component snippets, page shell, ECharts chart). Consume var(--color-primary-default) or the /tokens export — never hardcode hex/px. Does not cover token placement (frontend-styles-tokens-themes), SCSS/BEM (frontend-styles-scss/-bem), React conventions (frontend-react-conventions), or the UX spec (frontend-design-guidelines).",
            "version": "1.0.0",
            "repository": "https://gitlab.rnp.br/ia/agent-skills/gasc/appstarter/frontend-rnp-design-system",
            "install_command": "appstarter-cli-dev skills install frontend-rnp-design-system",
            "status": "active",
            "owner": "GASC",
            "tags": [],
            "dependencies": []
          }
        ]
      }
    ]
  }
}
