Opentype feature best practice

I’m still new to coding my own custom opentype features and am curious about best practice.

If I want to code the typeface to behave in a certain way by default, where should I put my code?
Previously I have put things into the liga feature as this seems to be on by default for most software, but i’m sure that’s not smart for many reasons.

One example is the cap height hyphen and colon. If I have this code in the case (case sensitive forms), it’s often only activated at the users discretion, where as I would like the default behaviour of the font to always swap those characters. And when I want it to occur between numerals, where should this live?

If I create a custom feature for it, how do I ensure that it is ‘on’ by default?
Where would I find naming conventions for the feature, etc?

Any guidance or advice would be welcome!

For your kind of usage, calt might be the best. The user still can deactivate it but it should be on by default.

As a general rule of thumb, do not try to outsmart the user unless you have a very good reason to.

Not sure this is a good idea, because this may lead to a situation where the dashes have different positions in the same line, or even same word.

The font does not decide it. The app in which it is used does. The spec says which feature should be on by default:

No guarantee however that every app developer implemented it according to the spec.

Thanks both.

will look into placing into calt instead.