Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,18 @@ jobs:
hugo-version: '0.133.1'
extended: true

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'

- name: Install markdown generator dependencies
run: npm install asciidoctor @asciidoctor/reducer downdoc

- name: Build
run: |
hugo --minify
node utils/generate-md.js

- name: Deploy
uses: peaceiris/actions-gh-pages@v4
Expand Down
11 changes: 8 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ UNAME=$(shell uname -s)
# Also because of the proxy 127.0.0.1 doesn't work as a bind address.
ifeq ($(UNAME), Darwin)
PODMAN_OPTS ?= -it --security-opt label=disable --pull=newer -p 4000:4000
HUGO_SERVER_OPTS = --bind 0.0.0.0
HUGO_SERVER_OPTS = --bind 0.0.0.0
else
PODMAN_OPTS ?= -it --security-opt label=disable --pull=newer --net=host
endif
Expand Down Expand Up @@ -35,12 +35,17 @@ test: htmltest ## Runs tests

.PHONY: build
build: ## Build the website locally in the public/ folder
podman run $(PODMAN_OPTS) -v $(PWD):/site:$(ATTRS) --entrypoint hugo $(HOMEPAGE_CONTAINER)
podman run $(PODMAN_OPTS) -v $(PWD):/site:$(ATTRS) $(HOMEPAGE_CONTAINER) -c "hugo && node utils/generate-md.js"

.PHONY: generate-md
generate-md: ## Generate Markdown versions of all pages in public/
node utils/generate-md.js

.PHONY: serve
serve: ## Build the website locally from a container and serve it
@echo "Serving via container. Browse to http://localhost:4000"
podman run $(PODMAN_OPTS) -v $(PWD):/site:$(ATTRS) --entrypoint hugo $(HOMEPAGE_CONTAINER) server -p 4000 $(HUGO_SERVER_OPTS)
podman run $(PODMAN_OPTS) -v $(PWD):/site:$(ATTRS) $(HOMEPAGE_CONTAINER) -c "hugo && node utils/generate-md.js && hugo server -p 4000 $(HUGO_SERVER_OPTS)"


.PHONY: htmltest
htmltest: build ## Runs htmltest against the site to find broken links
Expand Down
9 changes: 9 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ mediaTypes:
outputFormats:
patterns:
mediatype: application/json
llmstxt:
mediatype: text/plain
baseName: llms
isPlainText: true
notAlternative: true

menus:
main:
Expand All @@ -56,3 +61,7 @@ sitemap:
priority: 0.5
filename: sitemap.xml
enableRobotsTXT: true
outputs:
home:
- html
- llmstxt
28 changes: 28 additions & 0 deletions layouts/index.llmstxt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# {{ .Site.Title }}

> {{ .Site.Params.description }}

Important notes:

- Validated Patterns are built on OpenShift Container Platform (Kubernetes) and leverage GitOps principles using ArgoCD, Red Hat Advanced Cluster Management (RHACM), and Tekton
- They are designed for IT architects, advanced developers, and system administrators familiar with Kubernetes and OpenShift
- Patterns can be deployed using either the OpenShift-based Validated Patterns framework or the Ansible GitOps Framework (AGOF)
- All patterns require an available OpenShift 4.12+ cluster with cluster-admin privileges, at least 8 CPU cores, 16GB RAM, and dynamic storage provisioning
- Each pattern includes values files (values-global.yaml, values-hub.yaml) for customization and secrets management without committing sensitive data to git repositories
- Markdown versions of all pages are available by appending index.md to any page URL. For example: https://validatedpatterns.io/learn/quickstart/index.md
- Full documentation in a single file: https://validatedpatterns.io/llms-full.txt

## Learn
{{ range where .Site.RegularPages "Section" "learn" }}
- [{{ .Title }}]({{ .Permalink }}): {{ with .Params.summary }}{{ . }}{{ else }}{{ .Summary | plainify | truncate 150 }}{{ end }}
{{- end }}

## Patterns
{{ range .Site.Sections }}{{ if eq .Section "patterns" }}{{ range .Sections }}
- [{{ .Title }}]({{ .Permalink }}): {{ with .Params.summary }}{{ . }}{{ else }}{{ .Summary | plainify | truncate 150 }}{{ end }}
{{- end }}{{ end }}{{ end }}

## Contributing
{{ range where .Site.RegularPages "Section" "contribute" }}
- [{{ .Title }}]({{ .Permalink }}): {{ with .Params.summary }}{{ . }}{{ else }}{{ .Summary | plainify | truncate 150 }}{{ end }}
{{- end }}
5 changes: 5 additions & 0 deletions layouts/partials/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@
{{- /* Favicon */ -}}
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" sizes="180x180" href="/images/validated-patterns.png">

{{- /* Agent Discovery Links (RFC 8288 / RFC 9727) */ -}}
<link rel="api-catalog" href="/.well-known/api-catalog" type="application/linkset+json">
<link rel="service-doc" href="/llms.txt" type="text/plain">
<link rel="sitemap" href="/sitemap.xml" type="application/xml">

{{- /* DNS Prefetch and Preconnect for Performance */ -}}
<link rel="dns-prefetch" href="//use.fontawesome.com">
Expand Down
23 changes: 5 additions & 18 deletions layouts/partials/page-actions.html
Original file line number Diff line number Diff line change
@@ -1,15 +1,4 @@
{{- $repo := .Site.Params.github_repo | default "validatedpatterns/docs" -}}
{{- $branch := .Site.Params.github_branch | default "main" -}}
{{- $filePath := "" -}}
{{- $rawUrl := "" -}}
{{- $sourceLabel := "View source" -}}
{{- if .File -}}
{{- $filePath = .File.Path -}}
{{- $rawUrl = printf "https://raw.githubusercontent.com/%s/%s/content/%s" $repo $branch $filePath -}}
{{- if strings.HasSuffix $filePath ".md" -}}
{{- $sourceLabel = "View as Markdown" -}}
{{- end -}}
{{- end -}}
{{- $mdUrl := printf "%sindex.md" .Permalink -}}

<div class="page-actions" data-permalink="{{ .Permalink }}">
<button type="button" class="page-actions__button" data-action="copy-page" aria-label="Copy page content">
Expand All @@ -25,21 +14,19 @@
<i class="fas fa-link" aria-hidden="true"></i> Copy link
</button>
</li>
{{- if $rawUrl }}
<li role="menuitem">
<a href="{{ $rawUrl }}" target="_blank" rel="noopener">
<i class="fab fa-markdown" aria-hidden="true"></i> {{ $sourceLabel }}
<a href="{{ $mdUrl }}" target="_blank" rel="noopener">
<i class="fab fa-markdown" aria-hidden="true"></i> View as Markdown
</a>
</li>
{{- end }}
<li class="page-actions__divider" role="separator"></li>
<li role="menuitem">
<a href="https://claude.ai/new?q={{ printf "Read and summarize this documentation page: %s" .Permalink | urlquery }}" target="_blank" rel="noopener">
<a href="https://claude.ai/new?q={{ printf "Read this page from the Validated Patterns docs: %sindex.md and answer questions about the content." .Permalink | urlquery }}" target="_blank" rel="noopener">
<i class="fas fa-robot" aria-hidden="true"></i> Open in Claude
</a>
</li>
<li role="menuitem">
<a href="https://chatgpt.com/?q={{ printf "Read and summarize this documentation page: %s" .Permalink | urlquery }}" target="_blank" rel="noopener">
<a href="https://chatgpt.com/?q={{ printf "Read this page from the Validated Patterns docs: %sindex.md and answer questions about the content." .Permalink | urlquery }}" target="_blank" rel="noopener">
<i class="fas fa-comment-dots" aria-hidden="true"></i> Open in ChatGPT
</a>
</li>
Expand Down
33 changes: 33 additions & 0 deletions layouts/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
User-agent: *
Allow: /

User-agent: GPTBot
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-Web
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Applebot-Extended
Allow: /

User-agent: CCBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Bytespider
Disallow: /

User-agent: AhrefsBot
Disallow: /

Sitemap: {{ "sitemap.xml" | absURL }}

Content-Signal: ai-train=no, search=yes, ai-input=yes
2 changes: 1 addition & 1 deletion layouts/search/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ <h1 class="pf-c-title pf-m-4xl">
{{ partial "footer.html" . }}
</main>

{{ end }}
{{ end }}
23 changes: 23 additions & 0 deletions static/.well-known/agent-skills/index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://agentskills.io/schema/index.json",
"skills": [
{
"name": "validated-patterns-docs",
"type": "documentation",
"description": "Browse documentation for Red Hat Validated Patterns — GitOps-driven, automated application stacks for hybrid cloud deployments on OpenShift.",
"url": "https://validatedpatterns.io/llms.txt"
},
{
"name": "pattern-catalog",
"type": "catalog",
"description": "Discover 30+ validated patterns organized by industry, Red Hat product, and partner, with deployment guides and architecture details.",
"url": "https://validatedpatterns.io/patterns/"
},
{
"name": "quickstart-guide",
"type": "tutorial",
"description": "Step-by-step guide to deploying your first validated pattern on OpenShift using the GitOps framework.",
"url": "https://validatedpatterns.io/learn/quickstart/"
}
]
}
23 changes: 23 additions & 0 deletions static/.well-known/api-catalog
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"linkset": [
{
"anchor": "https://validatedpatterns.io/",
"service-doc": [
{
"href": "https://validatedpatterns.io/learn/quickstart/",
"type": "text/html"
}
],
"describedby": [
{
"href": "https://validatedpatterns.io/llms.txt",
"type": "text/plain"
},
{
"href": "https://validatedpatterns.io/sitemap.xml",
"type": "application/xml"
}
]
}
]
}
30 changes: 30 additions & 0 deletions static/.well-known/mcp/server-card.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"serverInfo": {
"name": "Validated Patterns Documentation",
"version": "1.0.0",
"description": "Documentation site for Red Hat Validated Patterns — GitOps-driven application stacks for hybrid cloud deployments on OpenShift."
},
"homepage": "https://validatedpatterns.io/",
"capabilities": {
"resources": true,
"tools": false,
"prompts": false
},
"resources": [
{
"uri": "https://validatedpatterns.io/llms.txt",
"name": "LLM-friendly documentation index",
"mimeType": "text/plain"
},
{
"uri": "https://validatedpatterns.io/sitemap.xml",
"name": "Sitemap",
"mimeType": "application/xml"
},
{
"uri": "https://validatedpatterns.io/patterns/",
"name": "All validated patterns",
"mimeType": "text/html"
}
]
}
19 changes: 14 additions & 5 deletions static/js/page-actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,20 @@
}

function copyPageContent(triggerEl) {
var content = document.querySelector(".pf-c-content");
if (!content) return;

var text = content.innerText || content.textContent;
copyToClipboard(text, triggerEl);
var mdUrl = window.location.href.replace(/\/?$/, "/") + "index.md";
fetch(mdUrl)
.then(function (res) {
if (!res.ok) throw new Error("not found");
return res.text();
})
.then(function (text) {
copyToClipboard(text, triggerEl);
})
.catch(function () {
var content = document.querySelector(".pf-c-content");
if (!content) return;
copyToClipboard(content.innerText || content.textContent, triggerEl);
});
}

function copyToClipboard(text, triggerEl) {
Expand Down
60 changes: 0 additions & 60 deletions static/llms.txt

This file was deleted.

Loading