on
Designing golden paths for developers with Backstage’s revamped Scaffolder
Golden paths are the company-approved routes that let developers create, operate, and ship software without repeatedly wrestling with platform decisions. When executed well they feel like a well-marked trail through a city: obvious, fast, and safe. Backstage’s recent evolution of the Scaffolder, the growing ecosystem of template tooling (visual editors, field extensions), and richer integrations with GitOps tools mean platform teams can craft golden paths that are both opinionated and flexible — guiding developers while reducing costly toil. This article walks through the practical design patterns that make those golden paths reliable, pleasant, and maintainable.
Why the Scaffolder matters for golden paths
- The Scaffolder is the place where opinions turn into artifacts: a form + a pipeline + outputs. That triad is exactly how you encode a golden path: the form is the developer-facing contract, the pipeline is the automated recipe, and the outputs are the scaffolded repository, CI, and platform metadata. Backstage’s recent Portal Scaffolder redesign explicitly aims to make the entire template lifecycle usable from inside the portal — not just the initial create flow — which helps platform teams own and iterate on golden paths without pushing developers out to CLI or raw YAML. (backstage.spotify.com)
Key platform tooling that changed the game (short)
- Visual authoring: “Template Designer” plugins turn YAML-first templates into a drag-and-drop canvas, which lowers the barrier to authoring and helps product managers or platform architects validate the structure of a golden path. That visual layer is increasingly used in examples and integrations. (backstage.io)
- Custom form fields: Backstage now supports custom field extensions for the Scaffolder forms (built with FormFieldBlueprint), so inputs can be guided with rich UX (dropdowns, cluster pickers, cost center lookups) and inline validation. That improves first-time success and reduces hand-holding. (backstage.io)
- Secrets & action invocation: Recent Backstage releases added a clearer secrets schema and a v2 invocation endpoint for actions, enabling separation of public inputs and sensitive credentials during template runs — a safer golden path for onboarding external services or cloud credentials. (github.com)
- GitOps / deployment integration: Plugins and examples (Argo CD, Red Hat’s Developer Hub GitOps patterns) show how scaffolder templates can create Git repos and then hand off to a GitOps controller for actual cluster deployment — keeping developer workflows simple while operations remain declarative. (npmjs.com)
Design goals for golden paths in Backstage Think in terms of developer experience, correctness, and evolvability:
- Developer experience: forms should make the common case fast; hidden complexity should live in actions. Use field extensions and sensible defaults to remove noisy decisions.
- Correctness: enforce policy and validate input before any run. Validation should catch mistakes early and map directly to actionable messages.
- Evolvability: templates are living artifacts. Platform teams need ways to evolve templates, communicate changes, and manage drift in existing services.
Practical patterns and examples
1) Make the form the product The form is where most friction lives. Replace free-text boxes with constrained inputs:
- Use dropdowns for organization-wide enums (teams, cost centers).
- Use searchable pickers for clusters or namespaces.
- Add descriptive help text and short examples inline.
Backstage’s FormFieldBlueprint API makes it straightforward to build and register custom form field extensions for these needs, which then show up in the Scaffolder UI and enforce schema-level constraints. That reduces bad inputs and clarifies the golden path. (backstage.io)
2) Validate early, clearly, and locally Validation should run before any long-running actions:
- Parameter schema validation (types, required fields).
- Cross-field validation (e.g., “region” must match chosen cluster).
- Policy checks (tagging, cost-center presence) as part of the pre-flight steps.
Because the scaffolder model keeps the form and pipeline separate, include a lightweight pre-step that synthesizes a dry-run check and returns deterministic errors to the user — fewer partial runs; faster learning loops.
3) Separate secrets from inputs A golden path often requires credentials (cloud service tokens, container registry credentials). Use the Scaffolder’s secret-handling features (and recent v2 action invocation/secrets schema support) to present secrets fields safely and let platform-managed secrets be injected by the backend rather than typed into public forms. That keeps auditability and reduces accidental secret leakage. (github.com)
4) Make templates idempotent and observable
- Idempotency: templates should be safe to re-run (return sensible errors or merge behavior).
- Observable outputs: produce clear links in the template output to the new repository, pipeline logs, and the created entity in the software catalog. These outputs turn a scaffold into a traceable onboarding event.
5) Keep templates updatable — plan for change Template updates are inevitable: dependencies change, CI steps evolve, policy tightens. The golden-path design must balance:
- Managed template upgrades (where a central template change should propagate) versus
- Respect for existing instances (don’t auto-break running services).
Tooling and patterns to support this:
- Keep a CHANGELOG in the template repo and display a “template version” in the generated entity.
- If you maintain “managed templates” or central archetypes, make it explicit which resources are centrally managed and which are owned by the team. (Some platforms provide managed-template concepts that apply new boilerplate to new projects but require migration steps for existing repos; plan communication accordingly.) (backstage.io)
6) Integrate with GitOps for a clean handoff A golden path should produce the right Git materials so a GitOps controller (Argo CD, Flux) can take over. Many Backstage setups use plugins or actions that create repos, push starter code, and then register an Argo CD application. The developer flow remains simple: fill the form, click create, watch the portal show build & sync links. Examples and plugins already exist to make that integration smoother. (npmjs.com)
A minimal template example (conceptual) Below is a compact, conceptual scaffolder template showing the shape of an opinionated golden path. It demonstrates: parameters with a custom field, a step that uses secrets, and outputs linking to the catalog.
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: opinionated-service
spec:
owner: platform-team@example.com
title: Opinionated Service
parameters:
- title: Service info
required:
- name
- team
properties:
name:
type: string
description: "Kebab-case name for your service"
team:
type: string
description: "Team responsible"
'x-field':
# this is a custom field extension registered in the app
'ui:field': team-selector
steps:
- id: create-repo
name: Create Git repository
action: github:create-repository
input:
repoName: ''
description: 'Scaffolded by the platform'
- id: add-ci
name: Add CI and infra
action: repo:apply-template
input:
repo: ''
# secrets are handled via the action's secret schema (not in parameters)
output:
links:
- url: ''
title: "Repository"
- url: '/catalog/'
title: "Catalog Entry"
This snippet is illustrative; the real scaffolder YAML will reference registered actions, field extensions, and secret schemas. The important part for a golden path is that the template is the single source of truth for developer-facing choices, automation steps, and the outputs that connect people back to platform observability.
Operational concerns and governance
- Ownership: Each template should have a clearly defined owner and contact info. That reduces “who broke my template?” coordination costs.
- Testing: Add template unit tests (dry-run runs, mocked actions), and run them in CI. Roadie and other vendors provide sandboxes for dry-run validation to catch template logic issues before they hit production. (roadie.io)
- Audit & policy: Log template runs, include the created entity metadata, and attach policy-as-code checks where necessary (e.g., required tags, allowed base images).
UX is not an afterthought The best golden paths don’t just eliminate steps — they replace them with clarity. A good Scaffolder form:
- explains why a field exists,
- provides a sensible default,
- and makes the recommended option the easiest path.
Design for the common case and surface the uncommon choices progressively; that’s how you get both speed and safety.
Closing analogy Think of a developer’s first project creation as a concert’s soundcheck. The roadies (platform), stage design (infrastructure), and song sheets (templates) need to be set up so the band (developers) can hit the first chord without errors. Backstage’s renewed Scaffolder, the growing visual authoring tools, and richer integrations let platform teams set up that soundcheck once and have it work reliably for every team that shows up — while still allowing the band to riff when they need to.
Selected references and reading
- Backstage Portal Scaffolder documentation and redesign notes. (backstage.spotify.com)
- Writing custom field extensions for the Scaffolder (FormFieldBlueprint examples). (backstage.io)
- Recent Backstage release notes (secrets schema, scaffolder templates). (github.com)
- Template Designer and related plugin ecosystem for visual template authoring. (backstage.io)
- Examples and patterns for GitOps-based delivery with Backstage (Argo CD, Red Hat Developer Hub patterns). (npmjs.com)
If the portal is the trailhead, the template is the map: keep it readable, mark the hazards, and make the path the obvious, enjoyable route.