Updates to skill management

* Ensure 2 skills don't have the same text
* When 2 skills begin with the same text, ensure they behave correctly when typed
minor refactor