In this paper we consider the k-set agreement problem in distributed round-based systems where processes communicate by message passing. We capture the synchrony and reliability of communication through the notion of communication graphs and characterize these graphs (and thus the systems they correspond to) through predicates. In particular we introduce the weak communication predicate Psrcs(k) for k-set agreement, and show that it is tight, in the sense that there is no algorithm for solving (k−1)-set agreement in systems characterized by Psrcs(k). We then present a novel distributed algorithm where processes approximate the stable skeleton graph, which reflects the underlying perpetual synchrony of a run. We prove that this approximation is correct in all runs, regardless of the communication predicate. Using the graph-theoretic properties of the stable skeleton, we show that our algorithm achieves k-set agreement in runs where Psrcs(k) holds. Regular Paper. Admissible for best ...