Lattice-skin structures composed of a thin-shell skin and a lattice infill are widespread in nature and large-scale engineering due to their efficiency and exceptional mechanical properties. Recent advances in additive manufacturing, or 3D printing, make it possible to create lattice-skin structures of almost any size with arbitrary shape and geometric complexity. We propose a novel gradient-based approach to optimising both the shape and infill of lattice-skin structures to improve their efficiency further. The respective gradients are computed by fully considering the lattice-skin coupling while the lattice topology and shape optimisation problems are solved in a sequential manner. The shell is modelled as a Kirchhoff-Love shell and analysed using isogeometric subdivision surfaces, whereas the lattice is modelled as a pin-jointed truss. The lattice consists of many cells, possibly of different sizes, with each containing a small number of struts. We propose a penalisation approach akin to the SIMP (solid isotropic material with penalisation) method for topology optimisation of the lattice. Furthermore, a corresponding sensitivity filter and a lattice extraction technique are introduced to ensure the stability of the optimisation process and to eliminate scattered struts of small cross-sectional areas. The developed topology optimisation technique is suitable for non-periodic, non-uniform lattices. For shape optimisation of both the shell and the lattice, the geometry of the lattice-skin structure is parameterised using the free-form deformation technique. The topology and shape optimisation problems are solved in an iterative, sequential manner. The effectiveness of the proposed approach and the influence of different algorithmic parameters are demonstrated with several numerical examples.