tarek, your description is essentially correct. Here's what I do in a little more detail.
All of my fish puzzles are generated so they can be solved with the following techniques. The ordering is the default hierarchy used in my solver.
Naked Single
Hidden Single
Naked Pair
Naked Triple
Locked Candidate 1
Locked Candidate 2
Naked Quad
Hidden Pair
Hidden Triple
Hidden Quad
X-Wing
Swordfish
Jellyfish
XY-Wing
XYZ-Wing
Colors and Multiple Colors
finned/Sashimi X-Wing
finned/Sashimi Swordfish
finned/Sashimi Jellyfish
(print PM)
Templates
Because I've gone through different approaches for a best way to process a PM with multiple fish present, I haven't merged my GFF program into my solver yet. This leaves the following manual processing done by me ... and why I had bookeeping problems with earlier submissions.
When my solver lists a PM, then I manually take it and run it through my GFF program looking for the smallest size fish present. In my example above, that happened to be for 4-Fish and they only occurred for value <3>. I then manually update the PM and run it back through my solver. I've had to repeat this process as many as four times before my solver was able to complete a puzzle on its own. I then merge all of the above into one listing.
Note: My solver only lists the base sectors for fish. I may update the format before long. Also, I apply the same technique as many times as possible once I enter a routine. This
grouping often results in multiple entries for Locked Candidate (1), as an example. It also results in conjugate fish being listed together -- even if they eliminate the same cells.