Pass accurately and with the right weight through a target gate. Strike a clean line through the middle of the gate, weight it to your partner, and adjust the angle as you move between gates.
Set two or three small gates (pairs of cones about a metre apart) between two players around 15 yards apart. Pass the ball through a gate to your partner, who receives and returns it through the next gate after you both shift to line it up. Strike a clean line through the middle and weight it to feet. Use both feet, and count clean passes through the gates.
A gate does not have an opinion. The ball goes through it or it does not, and the player knows which without waiting for a coach to say so. That instant, undeniable feedback is the reason this simple exercise outperforms far more elaborate passing drills for grooving technique, particularly with young players who will argue with a coach's judgement but not with two cones.
It also isolates the two things that actually make a pass good, and separates them. Line is whether the ball travels where it was aimed, which the gate measures directly. Weight is whether it arrives usefully, which the partner measures by whether he can control it comfortably. A pass can pass through the gate and still be wrong if it arrives too hard, and saying that out loud stops players optimising for the visible half only.
The striking detail worth policing is the standing foot. Placed beside the ball and pointing at the target, the pass goes where it was intended. Placed behind or turned away, the hips close and the ball leaks off line, which is what most missed gates actually are. Players will blame the strike; the fault is almost always a foot placed six inches wrong.
Moving between gates after each pass is what stops it becoming static. Adjusting the angle for a new gate means the setup has to be rebuilt every repetition, which is closer to a match than striking twenty identical passes from a fixed spot.
Save it to your private drills, then change the animation, adjust positions, swap equipment, or drop it into a session block. Or start from a blank pitch and build your own.