I'd think that it is not possible for SqlDataSource control to know the existence of chkPrimary control inside the GridView in this case. I mean there could be n+1 rows inside that GridView. Which CheckBox is the right one?
I would think the only way to solve this is to change that parameter a bit:
<asp:Parameter Name="Primary_Skill" Type="Boolean" />
And add Selecting event handler to SqlDataSource where you set the value for Primary_Skill parameter:
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
e.Command.Parameters["Primary_Skill"].Value = ((CheckBox)gdSkills.Rows[...].Cells.Controls).Checked;
Or I could be totally mistaken of course. Wouldn't be the first time :)