{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cecil - AI",
  "home_page_url": "https://cecil.app/documentation/ai/",
  "feed_url": "https://cecil.app/documentation/ai/feed.json",
  "description": "Use AI coding agents with Cecil and make your site readable by language models.",
  "icon": "https://cecil.app/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "favicon": "https://cecil.app/thumbnails/64x/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "language": "en",
  "items": [
    {
      "id": "https://cecil.app/documentation/ai/agent-skills/",
      "url": "https://cecil.app/documentation/ai/agent-skills/",
      "title": "Agent skills",
      "summary": "Install the Cecil skills to help AI coding agents build sites and themes.",
      "date_published": "2026-10-22T00:00:00+00:00",
      "date_modified": "2026-10-22T00:00:00+00:00","content_text": "Agent skills\nCecil provides agent skills: instructions that AI coding agents (Claude Code, GitHub Copilot, Cursor, etc.) load to work with Cecil the right way, following its conventions.\n\n\n\nSkill\nUse it to\n\n\n\n\ncecil\nCreate, configure, build and deploy a site: content, front matter, templates, assets, configuration, etc.\n\n\ncecil-theme\nCreate, structure and package a theme (visual theme or component theme) for Composer.\n\n\n\nInstall\nWith the GitHub CLI:\ngh skill install cecilapp\/cecil\nOr with npx skills:\nnpx skills add cecilapp\/cecil\nUsage\nOnce installed, ask your agent to create, build, configure or deploy a Cecil site, or to create a theme: it uses the matching skill automatically.\nExamples of prompts:\n\n“Create a Cecil blog with an English and a French version.”\n“Add a projects section with a list of cards on the homepage.”\n“Turn the layouts of this site into a reusable Cecil theme.”\n\nSkills are updated with Cecil: reinstall them after upgrading Cecil to get the latest instructions.",
      "content_html": "<h1>Agent skills</h1>\n<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>\n<table>\n<thead>\n<tr>\n<th>Skill</th>\n<th>Use it to</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<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>\n<td>Create, configure, build and deploy a site: content, front matter, templates, assets, configuration, etc.</td>\n</tr>\n<tr>\n<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>\n<td>Create, structure and package a theme (visual theme or component theme) for Composer.</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"install\">Install</h2>\n<p>With the <a href=\"https://cli.github.com\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub CLI</a>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">gh skill install cecilapp/cecil</code></pre>\n<p>Or with <a href=\"https://github.com/vercel-labs/skills\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">npx skills</code></a>:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">npx skills add cecilapp/cecil</code></pre>\n<h2 id=\"usage\">Usage</h2>\n<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>\n<p><em>Examples of prompts:</em></p>\n<ul>\n<li>“Create a Cecil blog with an English and a French version.”</li>\n<li>“Add a <code translate=\"no\">projects</code> section with a list of cards on the homepage.”</li>\n<li>“Turn the layouts of this site into a reusable Cecil theme.”</li>\n</ul>\n<aside class=\"note note-tip\"><p>Skills are updated with Cecil: reinstall them after upgrading Cecil to get the latest instructions.</p></aside>",
      "language": "en"
    },
    {
      "id": "https://cecil.app/documentation/ai/llms/",
      "url": "https://cecil.app/documentation/ai/llms/",
      "title": "Content for LLMs",
      "summary": "Render a llms.txt file and Markdown versions of your pages for language models.",
      "date_published": "2026-10-22T00:00:00+00:00",
      "date_modified": "2026-10-22T00:00:00+00:00","content_text": "Content for LLMs\nLanguage models read Markdown more easily than HTML. Cecil provides two output formats for them:\n\nllms: a llms.txt file, an index of the site;\nmarkdown: a Markdown version of each page.\n\nBoth are disabled by default.\nllms.txt\nSince version 8.114.0, the llms format renders the homepage as a llms.txt file at the root of the site. It contains:\n\nthe site title and description;\nthe links of the main menu (external URLs are ignored);\nthe top-level sections and their pages (sub-sections are nested), with their title and description.\n\nTo enable it, add the format to the homepage:\noutput:\n  pagetypeformats:\n    homepage:\n      llms: true\nWith the metatags template, the HTML homepage references the file with a &lt;link rel=\"describedby\" type=\"text\/markdown\"&gt; tag.\nExclude content\nTo exclude a page or a section (and its pages) from llms.txt, set llms: false in its front matter:\n---\ntitle: \"Legal notice\"\nllms: false\n---\nUnpublished and excluded sections are not listed.\nMarkdown pages\nThe markdown format renders a page as a Markdown file, next to its HTML version (e.g.: blog\/post-1.md for blog\/post-1\/index.html). The file contains the title and the body of the page; a section lists its pages.\nTo render all pages and sections in Markdown:\noutput:\n  pagetypeformats:\n    page:\n      markdown: true\n    section:\n      markdown: true\nOr for a single page, with the output variable:\n---\noutput: [html, markdown]\n---\nWith the metatags template, the HTML page references its Markdown version with a &lt;link rel=\"alternate\" type=\"text\/markdown\"&gt; tag. The links of llms.txt point to the Markdown version of the pages when it exists.\nTemplates\nTo customize these outputs, override the default templates in your layouts directory (see lookup rules):\n\nhome.llms.twig: the llms.txt file;\npage.markdown.twig, list.markdown.twig and home.markdown.twig: the Markdown pages.\n",
      "content_html": "<h1>Content for LLMs</h1>\n<p>Language models read Markdown more easily than HTML. Cecil provides two <a href=\"../configuration/8-output.md#default-formats\">output formats</a> for them:</p>\n<ul>\n<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>\n<li><code translate=\"no\">markdown</code>: a Markdown version of each page.</li>\n</ul>\n<p>Both are disabled by default.</p>\n<h2 id=\"llms-txt\">llms.txt</h2>\n<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>\n<ul>\n<li>the site title and description;</li>\n<li>the links of the main menu (external URLs are ignored);</li>\n<li>the top-level sections and their pages (sub-sections are nested), with their title and description.</li>\n</ul>\n<p>To enable it, add the format to the homepage:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">output:</span>\n  <span class=\"hljs-attr\">pagetypeformats:</span>\n    <span class=\"hljs-attr\">homepage:</span>\n      <span class=\"hljs-attr\">llms:</span> <span class=\"hljs-literal\">true</span></code></pre>\n<p>With the <a href=\"../configuration/1-site.md#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>\n<h3 id=\"exclude-content\">Exclude content</h3>\n<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>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-meta\">---</span>\n<span class=\"hljs-attr\">title:</span> <span class=\"hljs-string\">\"Legal notice\"</span>\n<span class=\"hljs-attr\">llms:</span> <span class=\"hljs-literal\">false</span>\n<span class=\"hljs-meta\">---</span></code></pre>\n<p>Unpublished and <a href=\"../content/2-front-matter.md#excluded\">excluded</a> sections are not listed.</p>\n<h2 id=\"markdown-pages\">Markdown pages</h2>\n<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>\n<p>To render all pages and sections in Markdown:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">output:</span>\n  <span class=\"hljs-attr\">pagetypeformats:</span>\n    <span class=\"hljs-attr\">page:</span>\n      <span class=\"hljs-attr\">markdown:</span> <span class=\"hljs-literal\">true</span>\n    <span class=\"hljs-attr\">section:</span>\n      <span class=\"hljs-attr\">markdown:</span> <span class=\"hljs-literal\">true</span></code></pre>\n<p>Or for a single page, with the <a href=\"../content/2-front-matter.md#output\"><code translate=\"no\">output</code></a> variable:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-meta\">---</span>\n<span class=\"hljs-attr\">output:</span> <span class=\"hljs-string\">[html,</span> <span class=\"hljs-string\">markdown]</span>\n<span class=\"hljs-meta\">---</span></code></pre>\n<p>With the <a href=\"../configuration/1-site.md#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>\n<h2 id=\"templates\">Templates</h2>\n<p>To customize these outputs, override the default templates in your <code translate=\"no\">layouts</code> directory (see <a href=\"../templates/1-lookup-rules.md\">lookup rules</a>):</p>\n<ul>\n<li><code translate=\"no\">home.llms.twig</code>: the <code translate=\"no\">llms.txt</code> file;</li>\n<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>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://cecil.app/documentation/ai/crawlers/",
      "url": "https://cecil.app/documentation/ai/crawlers/",
      "title": "AI crawlers",
      "summary": "Control which AI crawlers can access your site with robots.txt.",
      "date_published": "2026-10-22T00:00:00+00:00",
      "date_modified": "2026-10-22T00:00:00+00:00","content_text": "AI crawlers\nCecil generates a robots.txt file that allows all crawlers. To block AI crawlers (or some of them), add your own rules by creating a page with the robots path:\npages\/robots.md\n---\nlayout: robots\noutput: txt\n---\nUser-agent: GPTBot\nDisallow: \/\n\nUser-agent: ClaudeBot\nDisallow: \/\n\nUser-agent: Google-Extended\nDisallow: \/\nThe body of the page is appended to the default rules (see default pages).\nrobots.txt rules are directives: well-behaved crawlers follow them, but they don’t prevent access to your content.",
      "content_html": "<h1>AI crawlers</h1>\n<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>\n<p><em>pages/robots.md</em></p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-meta\">---</span>\n<span class=\"hljs-attr\">layout:</span> <span class=\"hljs-string\">robots</span>\n<span class=\"hljs-attr\">output:</span> <span class=\"hljs-string\">txt</span>\n<span class=\"hljs-meta\">---</span>\n<span class=\"hljs-attr\">User-agent:</span> <span class=\"hljs-string\">GPTBot</span>\n<span class=\"hljs-attr\">Disallow:</span> <span class=\"hljs-string\">/</span>\n\n<span class=\"hljs-attr\">User-agent:</span> <span class=\"hljs-string\">ClaudeBot</span>\n<span class=\"hljs-attr\">Disallow:</span> <span class=\"hljs-string\">/</span>\n\n<span class=\"hljs-attr\">User-agent:</span> <span class=\"hljs-string\">Google-Extended</span>\n<span class=\"hljs-attr\">Disallow:</span> <span class=\"hljs-string\">/</span></code></pre>\n<p>The body of the page is appended to the default rules (see <a href=\"../configuration/4-pages.md#pages-default\">default pages</a>).</p>\n<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>",
      "language": "en"
    }
  ]
}
