For the naming, you already get the name from the for loop so you can just do something like cmds.joint(p=piv[0:3], name="%s_joint" % (geo)) (The % is a quick way to concatenate strings in python). Not sure about the skinning. Should have just bumped this one up than make a new thread haha.
Hey John, sorry didnt see the bump. So reason why it doesnt work is because geo is a temp variable that is referenced in the for loop (You can call it later in the script too but it would be the last object in the selection list or objects passed in. What you want to do is seperate functionality into functions. This way…