How do I make a unit dependent on a building? For instance, I'd like Archer's to be produced by only if there is a woodworking shop, etc.
Unfortunately it's not as simple as you'd like. There's no nice tag to do it.
You've got to use a bit of a workaround. Basically you create a new local ResourceType and have the improvement produce the resource.... then have the unit require the resource to be produced. So for your example you could have it so that the Woodworking shop producing "wood" or "bows" at a rate of 3 per turn or something. Then put a requirement that the unit, or an ability the unit has... or maybe even the bow itself require "wood" or "bows" to produce.
Have a look at this post specifically the reply #2 from Heavenfall:
https://forums.elementalgame.com/439334/page/1/#3311666
It's a similar thing to what you want to do. Just use a local ResourceType (not Shared) instead. You might also want to set it to Stored = 1.
That should work.