OK, this isn't a way to automate, as you and I would like, but it's a workaround. It relies on the observation that one's Skype username is in the title of the Contacts Window.
The Contacts Window is in the scratchpad, so you can toggle its visibility with a key; the Chat Windows remain tiled. Thus, when you lay out the tiled Chat Windows as tabbed or stacked, you exclude the Contacts Window.
# Skype.
for_window [instance="skype" title="G12ES"] floating enable, move scratchpad, scratchpad show;
bindsym $mod+backslash [instance="skype" title="G12ES"] scratchpad show;
Unfortunately it seems one can't assign the floating scratchpad window to a workspace, but one can assign the tiled Chat windows to a workspace.
UPDATE
I have abandoned the floating window approach. I now (1) fire up Skype in a workspace (2) enter my special "workspace layout" mode (3) type 's k y' and hey presto I have the contacts window on the left and a stacking container on the left (a terminal). If I then (4) open a chat window, it appears stacked in the terminal container. This is a vile hack ...
mode "Layout" {
# Skype.
# https://faq.i3wm.org/question/2593/tabbed-layout-for-skype-chats/
# The terminal acts as a stacked container for chat windows.
# The contacts window is moved to the right of the terminal.
# Chat windows are configured to appear inside the stacked container.
# See "Define workspace layouts ..." elsewhere in this file.
bindsym s exec i3-sensible-terminal --title "Skype™ Chat"
bindsym k layout stacking
bindsym y [instance="skype"] focus, move right, mode "default"
# Go back to normal.
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Tab mode "default"
}
# Define workspace layouts in conjunction with layout mode.
assign [title="Skype™ Chat"] sk
assign [instance="skype"] sk
for_window [instance="skype" title="Skype™ Chat"] move left, move left