Rope Physics Causing Issues
First, you need to fix the normals on the hat.  They're pointing the wrong direction.  This can often cause issues with physics, which can use normals to decide inside/outside-- what's solid and what's not.
But that's not the only issue.  The other issue is that you're colliding simple, low-vert-density strings of verts-- remember, your skin modifier isn't even being evaluated until after the physics-- and so there are only a few places on the mesh that are even being checked for collision with the hat.
By default, soft body physics like you're using uses virtual balls centered on each vertex of the mesh to test for collision.  And if you play that animation, after fixing normals, you'll notice that none of your vertices ever go through your hat.  The collision is working!  It's just that it looks wrong, because even though the verts collide properly, the edges still go through the hat.
One thing you can do is, just make more verts.  This will create more places along your string for Blender to test for collision with the hat.  Subdivide your strings to create 3 or 4 times as many verts.  Do this in edit mode: modifiers won't be evaluated until after your soft body physics have run.  You'll probably have to tweak your physics settings afterwards: more verts means more freedom of motion, which usually needs to be compensated for by strengthening soft body edge forces.
Another option is to use edge collision instead of vertex collision.  In properties/physics/soft body/edges, you'll see a checkmark for &quot;collision edge&quot;.  If you enable this, Blender will try to use the edges of the mesh for collision.  I think you'll see that you'll still want more vertices than you have right now though.