To create a tag archive page on Jekyll I added a tag.html file in my _layouts directory. This file is responsible for listing posts with the given tag. Here's how it works.

layout: default

  <ul class="post-list">
    {% capture tag %}{{ page.title | slugify }}{% endcapture %}

    {% for post in site.posts %}
      {% if post.tags contains tag %}
        <p class="post-meta">{{ | date: "%b %-d, %Y" }}</p>
        <h2><a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a></h2>
        {{ post.excerpt }}
        <a href="{{ post.url | prepend: site.baseurl }}" rel="nofollow">Continue reading &rarr;</a>
      {% endif %}
    {% endfor %}


First, it gets the selected tag from the page title slugified, then it loops through the site posts and show only those who contain the selected tag.

To use the tag.html template is necessary to create a markdown file for each tag. I created and placed it in the tag folder, it looks like this.

layout: tag
title: html5

Where title is the tag that will be filtered and layout is the tag.html template. Jekyll will create an HTML file for each tag defined this way. Finally to link the tags from my page footer I did this.

<ul class="site-tags">
  {% for tag in site.tags %}
    <li class="tag-link"><a href="{{ '/tag/' | append:tag[0] }}" rel="tag">{{ tag[0] }}</a></li>
  {% endfor %}