> Since we can use composable matchers - there's no need to pass more then one matcher as an argument to all.

I don't understand what you mean.  If the user wants every item in a collection to match against more than one matcher, how else would they do it?  You have a line above like this:

``` ruby
expect([3,3,3]).to all.eq(3).and be_an(Integer)
```

...which I think you actually meant to be this:

``` ruby
expect([3,3,3]).to all(eq(3)).and be_an(Integer)
```

...but that won't pass. The `and be_an(Integer)` part is the equivalent of:

``` ruby
expect([3,3,3]).to be_an(Integer)
```

...but the target of the expectation is an array, not an integer, so it'll fail.

If we want to support allowing multiple matchers to match against all elements in a collection, I think `all` needs to accept multiple matchers as arguments; I can't see any other way for it to work, and I think it would surprise me if it didn't support it.

Anyhow, I don't think `pass_all` reads well at all, and I see no advantage over the chained `and` form.  You can certainly define it as a custom matcher if you like it, though :).