I can see several ways to make it more efficient but it ought to work as long as you are within 16 blocks of the spawner.
Are you standing where the screenshot was taken and killing the skeletons as they come down the water stream?
The skeletons won't spawn in the water so lowering the floor will let them spawn in 3 layers instead of 2.
Lowering the floor to at least 5 blocks under the spawner will drop them out of the volume that's checked for existing skeletons so new ones can spawn sooner.
Making the room 9X9 with the spawner in the middle will increase the number of spaces where they can spawn (though they are more likely to spawn closer to the spawner so that might not speed things up all that much.)
If there are at least 6 skeletons standing around, waiting to be killed, where the screenshot was taken they may be close enough to the spawner to block further spawning, it's very hard to tell from a single screenshot, you should get them at least 5 blocks away from the spawner as soon as possible. (preferably by letting them fall 5 blocks under the spawner.)
Pretty much what Hex said above. The main point is that, unlike natural overworld spawns (where mobs won't spawn within 24 blocks of you), you need to be within 16 blocks of a mob spawner for it to activate. The Dungeon spawn area for 1-wide mobs is 9x9x4, horizontally centered on the spawner, plus 2 blocks above and 1 below. Expanding your room to the maximum area will help. Also make sure there are no caves or other open areas nearby where mobs could spawn within detection 9x9x9 range of the spawner (expanding your room to max size will help with that).
Dropping spawned mobs out of range quickly will reduce missed spawn attempts. This is my Zombie Dungeon spawn room.
9x9x9 open area around the spawner and a 7 block drop below (4 for the valid spawn area, +2 for mob height, +1 because mobs jump in water). The zombies spawn and immediately fall out of detection range of the spawner block, so that it won't miss any spawn attempts due to mobs in range. From there they are flushed to the center of the room and then to a water mobivator. I prefer a center flush because it moves the mobs out faster.
The mobivator brings them up to my true 1-hit mob grinder.
I can kill all mobs in the chute with only 1 hit from a plain wooden sword, even if they spawn with enchanted armor.
a 5 block drop below (1 for the valid spawn area, +2 for mob height, +1 because mobs jump in water, +1 more just to be sure). The zombies spawn and immediately fall out of detection range of the spawner block, so that it won't miss any spawn attempts due to mobs in range.
I don't think that's quite right, though it may be a technicality, I'm pretty sure the mob height is irrelevant, I think it detects their feet, not their heads, 1 for the spawn area is valid but that would overlap the detection range, not be added to it.
The second sentence contains the most important factor, "detection range" which is 4 blocks in every direction (a 9X9X9 volume centered on the spawner.).
So that should be 6 blocks below the spawner (4 for the detection range, +1 because mobs jump in water (which I hadn't considered), +1 more just to be sure).
You are right. It's been quite awhile since I built that and I had forgotten the details. I just double checked my zombie dungeon grinder and I have a 7 block drop plus 4 blocks of space above. So the entire 9x9x9 detection range is contained in the room I dug out. Thanks for the correction. I have edited my previous post above to fix my errant info.
A point not discussed above is that placing blocks directly above the spawner will prevent spawned mobs from lingering there and increase rates; to fully optimize the build this should be either redstone blocks or observers both of which block movement but allow mobs to spawn partly within the block. [I have found, however, that the marginal improvement from simple solid blocks quite small. ]
One low probability issue with using non-solid blocks atop the spawner is that, because a mob spawner is itself a solid block, it is possible for any appropriately tall 1x1 mob to spawn atop it from general spawning (ie. not from the spawner) although this is suppressed when the spawner is active because the player is within a 16 radius. The only time I can see this being a consideration is that a chuckie (baby zombie), might spawn as one approaches a spawner and could escape if the kill system is only designed for skeletons or spiders.
Otherwise as in the above coments; the following is largely clarifications/restatements with a few tweak comments:
I use five air blocks between the bottom of the spawner and the top of the water floor for this type of design (which may be equivalent to either or both of Courageous_Marinade's / Hexubular's designs depending on how the counting is done).
Concrete example: if the spawner occupies y=20 the clear area I use is 9x9 (X*Z) [except for spiders which is 11x11] from y=22 down to y=13 with water occupying y=13.
[Spiders / cave spiders / silverfish formally need a two high spawning area although the top half can be filled with a transparent block (glass, slab, trapdoor, etc.). ]
I'm generally a fan of center flush systems, but the last spawner I developed was built side flush [attempting to ensure compatibility with the original 1.14 water physics] and I've not noticed a difference in rates even though this is a straight kill spawner. (Mobs die solely from sword damage [Smite5/Sweeping Edge3/Looting3/etc diamond sword] without any fall, suffication, or lava 'softening'.)
Rollback Post to RevisionRollBack
WARNING: I have an extemely "grindy" playstyle; YMMV — if this doesn't seem fun to you, mine what you can from it & bin the rest.
Forgot to mention putting blocks on top of the spawner to prevent mobs hanging out up there. I have glass blocks on top of mine, but it's hard to see with my clear glass resource pack. I'm sure Hexalobular is aware of that, and probably forgot to mention it as well.
I eliminate baby zombies by having them drop into lava below the mobivator.