Team selection, the process of selecting a group of agents with complementary skills to achieve a goal, is an important collaborative task in multi-agent systems. Typically, team selection occurs at run-time using a first principles approach, for example after agents have exchanged relevant information about their abilities, loads, or other status. In time-critical domains such approaches may be impractical. Our work assumes that agents have limited resources and are embedded in a continuously changing world. We provide a mechanism whereby system developers can describe "recipes" for team selection in terms of the required abilities of the team, and appropriate run-time constraints. We refer to such recipes as allocations. The paper provides definitions and algorithms, and includes comparisons with related work.