Does one really have to provide 'stage' in included CI templates?

Imagine a template-job:

npm_build:
  image: ...
  tags: [docker, kvm]
  before_script:
    - npm config set ...
    - npm config set ...
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - build/
  cache:
    paths:
      - "$HOME/.npm"

and a real job, which uses the previous one:

include:
  - project: 'common-libraries/frontend/ci_templates'
    file: 'npm/npm_build.yml'
    ref: 'master'

stages:
  - build

build:
  extends: npm_build
  stage: build

Is my understanding correct that this setup is not possible due to the fact that “stage: …” is omitted in the template? It’s really confusing. Is it a template or not? How does one know a specific stage in a… library?