Is `pagebreak` just a command, or also an element?

Yes, for all intents and purposes a pagebreak is an element. I think you can find more elements than you can find non-elements. What I mean by element is the compiler definition of one. See How can I enumerate every element function in Typst?. It doesn’t mean the show rule will go well (e.g., with cite).

For more details, see the page.rs code

Below is “unexpected”, but perfectly acceptable Typst code.

#show math.overbrace: it => {
  it.annotation
}
$overbrace(1 + 1, "sum")$

For bibliography show rules, it’s very difficult… This is because the bibliography is not very flexible atm. Any reference to a label is first checked against the bibliography, and turned into a citation, but with no referring element.

#show cite: it => { // Do not do this
  ref(it.key) // it's a trap! (infinite loop)
}
#show ref: it => {
  // how to detect if the ref is to a bibliography item? 
  // it.element == none?
  // not very satisfying!
}