backstage-scaffolderlisted
Install: claude install-skill bendaamerahmed/backstage-idp-plugin
# Backstage Scaffolder
Write `Template` entities and custom scaffolder actions that survive review, run under the permission framework, and fail loudly instead of silently.
## Preconditions
- Release line from `backstage.json`; scaffolder packages resolved via `yarn why @backstage/plugin-scaffolder-backend`.
- Backend generation: `createBackend()` + `backend.add(import('@backstage/plugin-scaffolder-backend'))` in `packages/backend/src/index.ts` is the new backend system. A `packages/backend/src/plugins/scaffolder.ts` router is legacy — migrate first (`backstage-plugin-migrate`) or register actions through the router's options and say so in your report.
- Frontend generation matters only for custom field extensions: NFS uses `FormFieldBlueprint` + `createFormField` from `@backstage/plugin-scaffolder-react/alpha`. Read the installed package's exports rather than assuming the legacy registration shape.
- `@backstage/plugin-catalog-backend-module-scaffolder-entity-model` present in the backend — without it `kind: Template` does not validate and no template appears.
- Working SCM `integrations` in `app-config.yaml` for whichever host the template publishes to.
- A local backend you may run. Any run that touches a real SCM org is an external mutation — stop and get authorization first.
## Procedure
1. **Inventory before authoring.** `GET /api/scaffolder/v2/actions` (or the `/create/actions` page) for installed actions and their input/output schemas; `GET /api/scaffolder/v2/tem