Package on asset store: https://assetstore.unity.com/packages/tools/modeling/mesh-slicer-59618
The main stages of slicing is:
Find all renderers with meshes
Preparing data stage
Here, in PrepareData method, you can do some pre-calculations and store it in slice data, it will be returned to you in finish method. For example, you can save the Id of the person who is going to chop the enemy's head and then get it in OnSliceFinished method. It is important in asynchronous mode, because you may have a lot of slicing at the same time and you do not know how was initiator of successful one.
The plugin tries to slice each mesh separately. If, after slice, validation is not success, it do not slice this mesh.
The whole slice is success if we have meshes on both sides of the plane, even if no meshes was sliced.
Apply changes and invoke event handlers. I believe nothing is needed to be clarified there.