From b3ff5eef2b97c91781d9f398fa5e5d6299c23144 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Wed, 20 May 2026 16:05:04 +0300 Subject: [PATCH 1/2] llms.txt deployment workflow --- .github/workflows/interactdocs.yml | 9 +++++++++ .gitignore | 5 +++++ package.json | 3 ++- packages/interact/package.json | 3 ++- packages/interact/rules/full-lean.md | 2 ++ scripts/generate-llms.mjs | 4 ++-- 6 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/interactdocs.yml b/.github/workflows/interactdocs.yml index 38846ba8..e8118cae 100644 --- a/.github/workflows/interactdocs.yml +++ b/.github/workflows/interactdocs.yml @@ -61,6 +61,9 @@ jobs: - name: Setup Pages uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d # v4 + - name: Generate llms.txt files + run: node scripts/generate-llms.mjs + - name: Prepare deployment directory run: | # Create the site structure: @@ -69,6 +72,8 @@ jobs: # /docs/ -> docs app # /playground/ -> playground app # /rules/ -> rules markdown files + # /llms.txt -> AI agent discovery index (llmstxt.org standard) + # /llms-full.txt -> All rules concatenated for single-fetch consumption mkdir -p _site/docs mkdir -p _site/playground @@ -89,6 +94,10 @@ jobs: # Copy rules from source (served at /rules/, not /docs/rules/) cp -r packages/interact/rules/* _site/rules/ + # Copy generated llms.txt files + cp llms.txt _site/llms.txt + cp llms-full.txt _site/llms-full.txt + - name: Upload artifact uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4 with: diff --git a/.gitignore b/.gitignore index 30db2d74..19dc7ca2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,8 @@ pnpm-lock.yaml package-lock.json .yarn/ tmp/ + +# Generated llms.txt files (built by scripts/generate-llms.mjs) +llms.txt +llms-full.txt +packages/interact/llms.txt diff --git a/package.json b/package.json index 70889503..4f096a91 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "format": "prettier . --write", "format:check": "prettier . --check", "serve": "npx serve apps/website -l 3000", - "serve:public": "npx serve apps/website -l tcp://0.0.0.0:3000" + "serve:public": "npx serve apps/website -l tcp://0.0.0.0:3000", + "generate:llms": "node scripts/generate-llms.mjs" }, "repository": { "type": "git", diff --git a/packages/interact/package.json b/packages/interact/package.json index 1cc31494..f02d07a5 100644 --- a/packages/interact/package.json +++ b/packages/interact/package.json @@ -26,7 +26,8 @@ "files": [ "dist", "rules", - "docs" + "docs", + "llms.txt" ], "sideEffects": false, "scripts": { diff --git a/packages/interact/rules/full-lean.md b/packages/interact/rules/full-lean.md index d694548d..8fb1776d 100644 --- a/packages/interact/rules/full-lean.md +++ b/packages/interact/rules/full-lean.md @@ -1,3 +1,5 @@ + + # @wix/interact — Rules Declarative configuration-driven interaction library. Binds animations to triggers via JSON config. diff --git a/scripts/generate-llms.mjs b/scripts/generate-llms.mjs index dc9a15b5..052c58eb 100644 --- a/scripts/generate-llms.mjs +++ b/scripts/generate-llms.mjs @@ -176,8 +176,8 @@ function main() { const content = readFileSync(join(RULES_DIR, name), 'utf-8'); const lineCount = countLines(content); - if (!content.startsWith('# ')) { - console.warn(`Warning: ${name} has no H1 heading on first line`); + if (!content.match(/^#\s/m)) { + console.warn(`Warning: ${name} has no H1 heading`); } return { name, content, lineCount }; From 5b172002c530ed19664614959113448235f1b346 Mon Sep 17 00:00:00 2001 From: ameerf-wix Date: Wed, 20 May 2026 16:10:07 +0300 Subject: [PATCH 2/2] llms.txt deployment workflow --- packages/interact/rules/full-lean.md | 2 -- scripts/generate-llms.mjs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/interact/rules/full-lean.md b/packages/interact/rules/full-lean.md index 8fb1776d..d694548d 100644 --- a/packages/interact/rules/full-lean.md +++ b/packages/interact/rules/full-lean.md @@ -1,5 +1,3 @@ - - # @wix/interact — Rules Declarative configuration-driven interaction library. Binds animations to triggers via JSON config. diff --git a/scripts/generate-llms.mjs b/scripts/generate-llms.mjs index 052c58eb..dc9a15b5 100644 --- a/scripts/generate-llms.mjs +++ b/scripts/generate-llms.mjs @@ -176,8 +176,8 @@ function main() { const content = readFileSync(join(RULES_DIR, name), 'utf-8'); const lineCount = countLines(content); - if (!content.match(/^#\s/m)) { - console.warn(`Warning: ${name} has no H1 heading`); + if (!content.startsWith('# ')) { + console.warn(`Warning: ${name} has no H1 heading on first line`); } return { name, content, lineCount };