diff --git a/.prompts/build-note-header-from-frontmatter.md b/.prompts/build-note-header-from-frontmatter.md
new file mode 100644
index 00000000..fff486aa
--- /dev/null
+++ b/.prompts/build-note-header-from-frontmatter.md
@@ -0,0 +1,65 @@
+Read the `AGENTS.md` and `task` to get an understanding of the project. The task is to update the `build.js` file so that the header of the not is built from the frontmatter data.
+
+The `function convert(content, file)` converts the mardown files outputs them in the `src` folder.
+
+Here is an example of the `./CrowdSec.md` file.
+
+```markdown
+---
+title: CrowdSec
+kind: reference
+section: tool
+website: https://crowdsec.net/
+---
+
+## Beschreibung
+
+Die CrowdSec Security Engine läuft. Sie sammelt Metriken in den Server-Logs und wertet diese aus (ähnlich fail2ban, aber im grösseren Stil).
+
+Um die IP-Adressen aus den CrowdSec Blocklists zu blockieren, verwende wir den CrowdSec Firewall Bouncer:
+
+Diese Komponente kommuniziert mit der CrowdSec Security Engine und konfiguriert die Blocklists mit iptables.
+```
+
+The output is `./src/crowdsec.md`:
+
+```markdown
+# CrowdSec
+
+Website:
+
+## Beschreibung
+
+Die CrowdSec Security Engine läuft. Sie sammelt Metriken in den Server-Logs und wertet diese aus (ähnlich fail2ban, aber im grösseren Stil).
+
+Um die IP-Adressen aus den CrowdSec Blocklists zu blockieren, verwende wir den CrowdSec Firewall Bouncer:
+
+Diese Komponente kommuniziert mit der CrowdSec Security Engine und konfiguriert die Blocklists mit iptables.
+
+
+```
+
+The frontmatter fields are `title`, `website` and `repository`.
+
+If there is `website` and `repository` in the frontmatter the output looks like this:
+
+```markdown
+# CrowdSec
+
+Website:
+Respoitory:
+...
+```
\ No newline at end of file
diff --git a/.prompts/move-first-heading-to-frontmatter.md b/.prompts/move-first-heading-to-frontmatter.md
index b7a93cd5..142c895f 100644
--- a/.prompts/move-first-heading-to-frontmatter.md
+++ b/.prompts/move-first-heading-to-frontmatter.md
@@ -1,5 +1,5 @@
-Read the `AGENTS.md`. The task is to move the first heading which is the name of the file and the title of the document to the frontmatter/metadata. Here is an example:
+Read the `AGENTS.md` to get an understanding of the project. The task is to move the first heading which is the name of the file and the title of the document to the frontmatter/metadata. Here is an example:
The entry `CrowdSec.md` looks like this:
diff --git a/.prompts/remove-frontmatter-tags.md b/.prompts/remove-frontmatter-tags.md
new file mode 100644
index 00000000..da082377
--- /dev/null
+++ b/.prompts/remove-frontmatter-tags.md
@@ -0,0 +1,26 @@
+Read the `AGENTS.md` to get an understanding of the project. The task is to remove the `tags` key and values from the frontmatter of all files.
+
+Here is a simple example for `bpmn.io.md`:
+
+```markdown
+---
+tags:
+section: tool
+kind:
+website: "https://bpmn.io/"
+title: bpmn.io
+---
+
+```
+
+After the change:
+
+```markdown
+---
+section: tool
+kind:
+website: "https://bpmn.io/"
+title: bpmn.io
+---
+
+```
\ No newline at end of file
diff --git a/AGENTS.md b/AGENTS.md
index 59d5f07d..d32409c0 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,8 +1,8 @@
---
+title: AGENTS.md
section: meta
kind: explain
---
-# AGENTS.md
These are instructions and rules for the LLM agent when answering a prompt.
diff --git a/generate-bases-view.js b/generate-bases-view.js
index 22f26a8d..de7b1135 100644
--- a/generate-bases-view.js
+++ b/generate-bases-view.js
@@ -80,6 +80,8 @@ function evaluateFilterString(filter, fileObj, mdFile) {
const date = createPropertyObject(get('date'));
const author = createPropertyObject(get('author'));
const lang = createPropertyObject(get('lang'));
+ const website = createPropertyObject(get('website'));
+ const repository = createPropertyObject(get('repository'));
// For equality comparisons, we need to handle the object wrapper
const originalSection = section;