<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://cecil.app/xsl/atom.xsl" media="all"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cecil.app/documentation/ai/</id>
  <title>Cecil - AI</title>
  <subtitle><![CDATA[Cecil is a command-line PHP application that merges Markdown pages, media and Twig templates to generate a static website.]]></subtitle>
  <link href="https://cecil.app/documentation/ai/atom.xml" rel="self" type="application/atom+xml" />
  <link href="https://cecil.app/documentation/ai/" rel="alternate" type="text/html" />
  <updated>2026-10-22T22:06:51+00:00</updated>
  <author>
    <name>Cecil</name>
    <uri>https://cecil.app</uri>
  </author>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/ai/agent-skills/</id>
    <title>Agent skills</title>
    <published>2026-10-22T00:00:00+00:00</published>
    <updated>2026-10-22T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/ai/agent-skills/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>Agent skills</h1>
<p>Cecil provides <a href="https://agentskills.io" target="_blank" rel="noopener noreferrer">agent skills</a>: instructions that AI coding agents (Claude Code, GitHub Copilot, Cursor, etc.) load to work with Cecil the right way, following its conventions.</p>
<table>
<thead>
<tr>
<th>Skill</th>
<th>Use it to</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://github.com/Cecilapp/Cecil/blob/main/skills/cecil/SKILL.md" target="_blank" rel="noopener noreferrer"><code translate="no">cecil</code></a></td>
<td>Create, configure, build and deploy a site: content, front matter, templates, assets, configuration, etc.</td>
</tr>
<tr>
<td><a href="https://github.com/Cecilapp/Cecil/blob/main/skills/cecil-theme/SKILL.md" target="_blank" rel="noopener noreferrer"><code translate="no">cecil-theme</code></a></td>
<td>Create, structure and package a theme (visual theme or component theme) for Composer.</td>
</tr>
</tbody>
</table>
<h2 id="install">Install</h2>
<p>With the <a href="https://cli.github.com" target="_blank" rel="noopener noreferrer">GitHub CLI</a>:</p>
<pre><code class="language-bash hljs bash" translate="no">gh skill install cecilapp/cecil</code></pre>
<p>Or with <a href="https://github.com/vercel-labs/skills" target="_blank" rel="noopener noreferrer"><code translate="no">npx skills</code></a>:</p>
<pre><code class="language-bash hljs bash" translate="no">npx skills add cecilapp/cecil</code></pre>
<h2 id="usage">Usage</h2>
<p>Once installed, ask your agent to create, build, configure or deploy a Cecil site, or to create a theme: it uses the matching skill automatically.</p>
<p><em>Examples of prompts:</em></p>
<ul>
<li>“Create a Cecil blog with an English and a French version.”</li>
<li>“Add a <code translate="no">projects</code> section with a list of cards on the homepage.”</li>
<li>“Turn the layouts of this site into a reusable Cecil theme.”</li>
</ul>
<aside class="note note-tip"><p>Skills are updated with Cecil: reinstall them after upgrading Cecil to get the latest instructions.</p></aside>]]>
    </content>
  </entry>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/ai/llms/</id>
    <title>Content for LLMs</title>
    <published>2026-10-22T00:00:00+00:00</published>
    <updated>2026-10-22T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/ai/llms/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>Content for LLMs</h1>
<p>Language models read Markdown more easily than HTML. Cecil provides two <a href="/documentation/configuration/output/#default-formats">output formats</a> for them:</p>
<ul>
<li><code translate="no">llms</code>: a <a href="https://llmstxt.org" target="_blank" rel="noopener noreferrer"><code translate="no">llms.txt</code></a> file, an index of the site;</li>
<li><code translate="no">markdown</code>: a Markdown version of each page.</li>
</ul>
<p>Both are disabled by default.</p>
<h2 id="llms-txt">llms.txt</h2>
<p>Since version <ins>8.114.0</ins>, the <code translate="no">llms</code> format renders the homepage as a <code translate="no">llms.txt</code> file at the root of the site. It contains:</p>
<ul>
<li>the site title and description;</li>
<li>the links of the main menu (external URLs are ignored);</li>
<li>the top-level sections and their pages (sub-sections are nested), with their title and description.</li>
</ul>
<p>To enable it, add the format to the homepage:</p>
<pre><code class="language-yaml hljs yaml" translate="no"><span class="hljs-attr">output:</span>
  <span class="hljs-attr">pagetypeformats:</span>
    <span class="hljs-attr">homepage:</span>
      <span class="hljs-attr">llms:</span> <span class="hljs-literal">true</span></code></pre>
<p>With the <a href="/documentation/configuration/site/#metatags">metatags</a> template, the HTML homepage references the file with a <code translate="no">&lt;link rel="describedby" type="text/markdown"&gt;</code> tag.</p>
<h3 id="exclude-content">Exclude content</h3>
<p>To exclude a page or a section (and its pages) from <code translate="no">llms.txt</code>, set <code translate="no">llms: false</code> in its front matter:</p>
<pre><code class="language-yaml hljs yaml" translate="no"><span class="hljs-meta">---</span>
<span class="hljs-attr">title:</span> <span class="hljs-string">"Legal notice"</span>
<span class="hljs-attr">llms:</span> <span class="hljs-literal">false</span>
<span class="hljs-meta">---</span></code></pre>
<p>Unpublished and <a href="/documentation/content/front-matter/#excluded">excluded</a> sections are not listed.</p>
<h2 id="markdown-pages">Markdown pages</h2>
<p>The <code translate="no">markdown</code> format renders a page as a Markdown file, next to its HTML version (e.g.: <code translate="no">blog/post-1.md</code> for <code translate="no">blog/post-1/index.html</code>). The file contains the title and the body of the page; a section lists its pages.</p>
<p>To render all pages and sections in Markdown:</p>
<pre><code class="language-yaml hljs yaml" translate="no"><span class="hljs-attr">output:</span>
  <span class="hljs-attr">pagetypeformats:</span>
    <span class="hljs-attr">page:</span>
      <span class="hljs-attr">markdown:</span> <span class="hljs-literal">true</span>
    <span class="hljs-attr">section:</span>
      <span class="hljs-attr">markdown:</span> <span class="hljs-literal">true</span></code></pre>
<p>Or for a single page, with the <a href="/documentation/content/front-matter/#output"><code translate="no">output</code></a> variable:</p>
<pre><code class="language-yaml hljs yaml" translate="no"><span class="hljs-meta">---</span>
<span class="hljs-attr">output:</span> <span class="hljs-string">[html,</span> <span class="hljs-string">markdown]</span>
<span class="hljs-meta">---</span></code></pre>
<p>With the <a href="/documentation/configuration/site/#metatags">metatags</a> template, the HTML page references its Markdown version with a <code translate="no">&lt;link rel="alternate" type="text/markdown"&gt;</code> tag. The links of <code translate="no">llms.txt</code> point to the Markdown version of the pages when it exists.</p>
<h2 id="templates">Templates</h2>
<p>To customize these outputs, override the default templates in your <code translate="no">layouts</code> directory (see <a href="/documentation/templates/lookup-rules/">lookup rules</a>):</p>
<ul>
<li><code translate="no">home.llms.twig</code>: the <code translate="no">llms.txt</code> file;</li>
<li><code translate="no">page.markdown.twig</code>, <code translate="no">list.markdown.twig</code> and <code translate="no">home.markdown.twig</code>: the Markdown pages.</li>
</ul>]]>
    </content>
  </entry>
  <entry xml:lang="en">
    <id>https://cecil.app/documentation/ai/crawlers/</id>
    <title>AI crawlers</title>
    <published>2026-10-22T00:00:00+00:00</published>
    <updated>2026-10-22T00:00:00+00:00</updated>
    <link href="https://cecil.app/documentation/ai/crawlers/" rel="alternate" type="text/html" />
    <content type="html">
      <![CDATA[<h1>AI crawlers</h1>
<p>Cecil generates a <code translate="no">robots.txt</code> file that allows all crawlers. To block AI crawlers (or some of them), add your own rules by creating a page with the <code translate="no">robots</code> path:</p>
<p><em>pages/robots.md</em></p>
<pre><code class="language-yaml hljs yaml" translate="no"><span class="hljs-meta">---</span>
<span class="hljs-attr">layout:</span> <span class="hljs-string">robots</span>
<span class="hljs-attr">output:</span> <span class="hljs-string">txt</span>
<span class="hljs-meta">---</span>
<span class="hljs-attr">User-agent:</span> <span class="hljs-string">GPTBot</span>
<span class="hljs-attr">Disallow:</span> <span class="hljs-string">/</span>

<span class="hljs-attr">User-agent:</span> <span class="hljs-string">ClaudeBot</span>
<span class="hljs-attr">Disallow:</span> <span class="hljs-string">/</span>

<span class="hljs-attr">User-agent:</span> <span class="hljs-string">Google-Extended</span>
<span class="hljs-attr">Disallow:</span> <span class="hljs-string">/</span></code></pre>
<p>The body of the page is appended to the default rules (see <a href="/documentation/configuration/pages/#pages-default">default pages</a>).</p>
<aside class="note note-info"><p><code translate="no">robots.txt</code> rules are directives: well-behaved crawlers follow them, but they don’t prevent access to your content.</p></aside>]]>
    </content>
  </entry>
</feed>
