This repository was archived by the owner on May 29, 2026. It is now read-only.
feat(docs): AI-crawler-friendly defaults in the template scaffold#40
Merged
Conversation
Every new Conduction app spun up from this template now inherits the
AI-baseline contract on first deploy:
- @conduction/docusaurus-preset bumped from ^2.6.1 to ^3.4.0. The
3.4.0 release ships Organization + WebSite JSON-LD on every page,
SoftwareApplication from <DetailHero>, FAQPage from <FAQ>, default
og:image + twitter:* meta, sitemap options, and a postBuild plugin
that emits a sensible default robots.txt when the site doesn't
ship its own.
- docs/scripts/validate-ai-baseline.mjs: generic validator that
checks the 8 universal AI-crawler contract items: robots.txt
exists with AI-bot allow lines + a Sitemap, sitemap.xml has >= 1
URL, homepage emits Organization + WebSite JSON-LD, og:image /
og:type / twitter:* meta are present, and og:image resolves to
a real file in the build. Exits 1 on regression so CI blocks.
- docs/package.json: postbuild npm script wires the validator into
every `npm run build`, plus a validate:ai-baseline alias for
ad-hoc runs.
- docs/static/llms.txt: placeholder llmstxt.org-format index that
app teams customise per app. Markers ({{APP_NAME}}, {{slug}},
{{ONE_SENTENCE_DESCRIPTION}}) make the TODO obvious.
Combined with the centralised ConductionNL/.github documentation
workflow change that runs build on every PR, this means a regression
to the AI baseline now blocks at PR review time, fleet-wide, for
every app built from this scaffold.
App teams: replace docs/static/llms.txt placeholders, optionally
drop a per-app docs/static/img/og-app.png and reference it via
themeConfig.image, and optionally ship a docs/static/robots.txt
to override the preset default.
Contributor
Quality Report — ConductionNL/nextcloud-app-template @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| composer | ✅ | ✅ 100/100 | |||
| npm | ✅ | ✅ 428/428 | |||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ⏭️ |
Coverage: 0% (0/3 statements)
Quality workflow — 2026-05-18 17:45 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every new Conduction app spun up from this template now inherits the AI-crawler baseline on first deploy. Combined with the centralised
ConductionNL/.githubworkflow change (PR #73 there), this means a regression to the AI baseline blocks at PR review time, fleet-wide, for every app built from this scaffold.What changed
docs/package.json: bumped@conduction/docusaurus-presetfrom^2.6.1to^3.4.0. Preset 3.4.0 ships Organization + WebSite JSON-LD on every page, SoftwareApplication from<DetailHero>, FAQPage from<FAQ>, defaultog:image+ twitter meta, sitemap options, and a postBuild plugin that emits a sensible defaultrobots.txtwhen the site doesn't ship its own.docs/package.jsonscripts:postbuildruns the validator after everydocusaurus build.validate:ai-baselinealias for ad-hoc runs.docs/scripts/validate-ai-baseline.mjs(new): generic 8-check validator. Asserts robots.txt exists with AI-bot allow lines + a Sitemap, sitemap.xml has >= 1 URL, homepage emits Organization + WebSite JSON-LD, og:image / og:type / twitter:* meta are present, and og:image resolves to a real file in the build. Exits 1 on regression so CI blocks.docs/static/llms.txt(new): placeholder llmstxt.org index. App teams customise the{{APP_NAME}},{{slug}},{{ONE_SENTENCE_DESCRIPTION}}markers per app.What app teams should customise
After spinning up a new app from this template:
{{...}}markers indocs/static/llms.txtwith the app's actual name, slug, and intro.docs/static/img/og-app.pngat 1200x630 and setthemeConfig.image: 'img/og-app.png'indocusaurus.config.js. Otherwise the preset's default Conduction-branded OG card is used.docs/static/robots.txtto override the preset's open-posture default (e.g. for closed-customer portals).Test plan
validate:ai-baselinecheck via thepostbuildhookcd docs && npm install && npm run buildsucceeds locally