Basically the way you make abilities work is you find the relevant ASM and add a check for it. There's no "ability table" beyond the name and description tables like some people say- ability is just a byte in the Pokemon's data that the game checks constantly. Most of the ones in YAFRH are damage calc-related, and are inserted next to the other damage calc-related ability checks. You'll probably want to look up JPAN's Battle Scripts thread for reference as his documentation on the battle structs is very helpful for this.
As for actual implementation, I simply shoved in new code where Plus and Minus were and utilized the free space opened by the DPSS in YAFRH if I recall correctly. If I was going to do this again though, I would instead replace the Huge Power/Pure Power checks at x3edfc with a branch to free space where I could insert code all I wanted without worrying about room. Play around with the bx command for doing this if you aren't sure how.
Skill Link is implemented differently and is significantly simpler- I instead replaced the multi-hit move battle script, which checks if the user has Skill Link and branches back to the old one if they don't. If they do it does a bunch of the same initialization stuff and then sets the multi-hit counter to 5 before branching back to the middle of it. Technically I believe you'd also need to tweak Triple Kick but I removed that so it's a non-issue.
You're free to borrow the ability implementations in YAFRH with credit if you can figure them out- Multiscale, Technician, and Adaptability replace Plus, Minus, and Sturdy (I didn't break checks for the latter, I just removed OHKO moves). Skill Link replaces Huge Power- I did break that check. Also take note that my Technician implementation probably does not handle Pursuit correctly. Also it might be simpler to just repoint the ability name and description tables and use numbers past Air Lock for your abilities, especially if you don't want to remove any old ones.