formulaid (the survey generator, CorrelAid/formulaid) wants this site's survey methodology (phases 1–2) without the XLSForm specification. For question types it already ships the registry-generated cdl-survey-types reference from formtransform, which is authoritative, and the general spec in its context contradicts it.
Today scripts/build_skill.sh in formulaid fetches https://umfragen.civic-data.de/llm-phases12-xlsform.txt (LLM_METHODOLOGY_URL, line 26). It then deletes everything between the headings # XLSForm-Dokumentation and # Fragen formulieren (lines 185–192), and checks for Fragen formulieren again at line 268. That breaks silently if those headings change. A dedicated endpoint removes the guesswork.
Steps
- Add
src/pages/llm-phases12.txt.ts, the same wrapper as the existing llm-*.txt.ts files, calling buildLlmTxt('none', 2): phases 1–2 without XLSForm examples and without the xlsform-standard page.
buildLlmTxt / getSlugsForPhases (src/lib/utils/llm-txt.ts, lines 247 and 232) need a way to leave a page out of text output. toc.json already marks xlsform-standard in excludeFromGraphic for the Fragebogendesign section (line 25). Add an equivalent text exclusion (e.g. excludeFromText), or have the 'none' format skip it. Don't reuse excludeFromGraphic for this; the two may diverge.
- Keep every existing endpoint working and unchanged. Other consumers may rely on them.
- Once it's live, open an issue on
CorrelAid/formulaid: switch LLM_METHODOLOGY_URL to /llm-phases12.txt and drop the heading strip. Link it here.
Acceptance criteria
Until formulaid has switched, don't rename # XLSForm-Dokumentation or # Fragen formulieren.
Rules (apply to all site changes around formtransform)
-
Don't restate the supported XLSForm subset in prose. Link to it: https://github.com/CorrelAid/formtransform#supported-xlsform-subset. A hand-copied type list on the site becomes a third source of truth, after the registry and the generated skill.
-
Don't rename or delete these snippet paths. Three apps fetch them at build time through the GitHub API, and each falls back to an empty string, so a rename doesn't fail a build. It silently empties a section of the app:
| App |
Fetches |
| formtransform-app |
src/content/snippets/formtransform/{en,de}.html, liability/{en,de}.html |
| qwac |
qwac/{en,de}.html, liability/{en,de}.html |
| formulaid |
formulaid/{en,de}.html, liability/{en,de}.html |
-
Headings in the llm*.txt endpoints are an interface. formulaid's scripts/build_skill.sh fetches llm-phases12-xlsform.txt and slices it by the headings # XLSForm-Dokumentation and # Fragen formulieren. Don't change them without telling CorrelAid/formulaid.
-
German is primary; EN/DE snippets stay in sync. The apps render whichever locale the visitor has.
-
Registry facts belong to CorrelAid/formtransform. If the site needs a machine-readable list of supported types, open an issue there. Don't copy JSON into the site.
formulaid (the survey generator,
CorrelAid/formulaid) wants this site's survey methodology (phases 1–2) without the XLSForm specification. For question types it already ships the registry-generatedcdl-survey-typesreference from formtransform, which is authoritative, and the general spec in its context contradicts it.Today
scripts/build_skill.shin formulaid fetcheshttps://umfragen.civic-data.de/llm-phases12-xlsform.txt(LLM_METHODOLOGY_URL, line 26). It then deletes everything between the headings# XLSForm-Dokumentationand# Fragen formulieren(lines 185–192), and checks forFragen formulierenagain at line 268. That breaks silently if those headings change. A dedicated endpoint removes the guesswork.Steps
src/pages/llm-phases12.txt.ts, the same wrapper as the existingllm-*.txt.tsfiles, callingbuildLlmTxt('none', 2): phases 1–2 without XLSForm examples and without thexlsform-standardpage.buildLlmTxt/getSlugsForPhases(src/lib/utils/llm-txt.ts, lines 247 and 232) need a way to leave a page out of text output.toc.jsonalready marksxlsform-standardinexcludeFromGraphicfor the Fragebogendesign section (line 25). Add an equivalent text exclusion (e.g.excludeFromText), or have the'none'format skip it. Don't reuseexcludeFromGraphicfor this; the two may diverge.CorrelAid/formulaid: switchLLM_METHODOLOGY_URLto/llm-phases12.txtand drop the heading strip. Link it here.Acceptance criteria
curl localhost:4321/llm-phases12.txt(underbun run dev) contains the Datenschutz and Operationalisierung sections and no# XLSForm-Dokumentationheadingllm-phases12-xlsform.txt,llm-xlsform.txt,llm.txt,llm-ddi.txtare byte-identical before/after (diff the built files)bun run buildpassesUntil formulaid has switched, don't rename
# XLSForm-Dokumentationor# Fragen formulieren.Rules (apply to all site changes around formtransform)
Don't restate the supported XLSForm subset in prose. Link to it: https://github.com/CorrelAid/formtransform#supported-xlsform-subset. A hand-copied type list on the site becomes a third source of truth, after the registry and the generated skill.
Don't rename or delete these snippet paths. Three apps fetch them at build time through the GitHub API, and each falls back to an empty string, so a rename doesn't fail a build. It silently empties a section of the app:
src/content/snippets/formtransform/{en,de}.html,liability/{en,de}.htmlqwac/{en,de}.html,liability/{en,de}.htmlformulaid/{en,de}.html,liability/{en,de}.htmlHeadings in the
llm*.txtendpoints are an interface. formulaid'sscripts/build_skill.shfetchesllm-phases12-xlsform.txtand slices it by the headings# XLSForm-Dokumentationand# Fragen formulieren. Don't change them without tellingCorrelAid/formulaid.German is primary; EN/DE snippets stay in sync. The apps render whichever locale the visitor has.
Registry facts belong to
CorrelAid/formtransform. If the site needs a machine-readable list of supported types, open an issue there. Don't copy JSON into the site.