Code:
mob/verb/showpas()
usr << output(null,"passives.paslist1") // clear the grid.
for(var/obj/O in usr.CraftPassives)
usr << output(O,"passives.paslist1:1,[usr.CraftPassives.Find(O)]")
mob/var/list/CraftPassives = list()
mob/verb/Learnpassives()
var/obj/Passives/Crafting/Blacksmithing/Blacksmithing = locate() in usr.CraftPassives
Blacksmithing= new() // create a new fireball object
usr.CraftPassives.Add(Blacksmithing)
Also, sending null to the grid does not clear the grid; it only clears the current cell.
This is also a bad idea:
mob/var/list/CraftPassives = list()
Not all mobs will need this list; only players will. It doesn't have to be initialized until it's needed. Therefore, leave off the =list() and don't create the list till you need it.