Skip to content

Conversation

@Sourya07
Copy link
Contributor

@Sourya07 Sourya07 commented Dec 11, 2025

Implements comprehensive LLM-optimized documentation following the llms.txt standard to help LLMs generate correct AsyncAPI v3 documents.

Changes:

  • Added scripts/build-llms-txt.ts to generate llms.txt and llms-full.txt
  • Added scripts/build-sitemap.ts to generate sitemap.xml
  • Added scripts/test-llms-txt.ts for format validation
  • Updated package.json with new build scripts integrated into build process
  • Generates public/llms.txt with structured AsyncAPI documentation index
  • Generates public/llms-full.txt with expanded content and v3 guidance
  • Generates public/sitemap.xml for broader search engine consumption
  • Exports AsyncAPI v3 JSON schema to public/schemas/3.0.0.json
  • Added docs/LLM_DOCUMENTATION.md maintenance guide

All files automatically generated during build process.
Format validated and compliant with llms.txt specification.

Addresses issue #4408 - AI improvements for better LLM-generated AsyncAPI documents

Summary by CodeRabbit

  • New Features

    • Added LLM-optimized documentation generation to enhance AI model understanding of AsyncAPI resources
    • Added automatic sitemap generation for improved search engine optimization
  • Chores

    • Extended build process to generate documentation artifacts and sitemap during builds
    • Added validation for generated documentation files

✏️ Tip: You can customize this high-level summary in your review settings.

…syncapi#4408

Implements comprehensive LLM-optimized documentation following the llms.txt standard to help LLMs generate correct AsyncAPI v3 documents.

Changes:
- Added scripts/build-llms-txt.ts to generate llms.txt and llms-full.txt
- Added scripts/build-sitemap.ts to generate sitemap.xml
- Added scripts/test-llms-txt.ts for format validation
- Updated package.json with new build scripts integrated into build process
- Generates public/llms.txt with structured AsyncAPI documentation index
- Generates public/llms-full.txt with expanded content and v3 guidance
- Generates public/sitemap.xml for broader search engine consumption
- Exports AsyncAPI v3 JSON schema to public/schemas/3.0.0.json
- Added docs/LLM_DOCUMENTATION.md maintenance guide

All files automatically generated during build process.
Format validated and compliant with llms.txt specification.

Addresses issue asyncapi#4408 - AI improvements for better LLM-generated AsyncAPI documents
@netlify
Copy link

netlify bot commented Dec 11, 2025

Deploy Preview for asyncapi-website ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 7d9d9b7
🔍 Latest deploy log https://app.netlify.com/projects/asyncapi-website/deploys/693dcb077591b30009cbcc72
😎 Deploy Preview https://deploy-preview-4706--asyncapi-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 11, 2025

Walkthrough

This PR introduces infrastructure for generating LLM-optimized documentation artifacts including llms.txt, llms-full.txt, and sitemap.xml, along with build scripts for generation and validation, plus comprehensive documentation describing the maintenance process.

Changes

Cohort / File(s) Summary
Documentation
docs/LLM_DOCUMENTATION.md
Adds detailed guide for maintaining LLM-optimized documentation, including structure, formatting rules, build procedures, validation steps, and best practices.
Configuration & Build System
package.json, .gitignore
Adds generate:llms and generate:sitemap npm scripts; chains them into existing build pipeline. Ignores generated artifact directories and files.
Build & Generation Scripts
scripts/build-llms-txt.ts
Generates llms.txt and llms-full.txt with AsyncAPI resource sections, titles, URLs, and descriptions; copies AsyncAPI v3 schemas to public directory.
Validation Script
scripts/test-llms-txt.ts
Validates llms.txt against specification (H1 header, blockquote, markdown links, sections) and ensures presence of generated files (llms.txt, llms-full.txt, sitemap.xml, schemas).
Sitemap Generation
scripts/build-sitemap.ts
Generates sitemap.xml with proper XML formatting, including URLs with location, last modified date, change frequency, and priority.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20–25 minutes

  • scripts/build-llms-txt.ts: Verify file I/O operations, schema copying logic, error handling, and data structure completeness for LLMS sections
  • scripts/test-llms-txt.ts: Review validation rules (markdown link formats, section structure, required files) and error aggregation logic
  • scripts/build-sitemap.ts: Confirm XML escaping, file write correctness, and error handling
  • package.json: Ensure script chaining integrates properly with existing build workflow

Suggested labels

ready-to-merge

Suggested reviewers

  • derberg
  • akshatnema
  • devilkiller-ag
  • sambhavgupta0705
  • vishvamsinh28
  • anshgoyalevil
  • Mayaleeeee
  • TRohit20

Poem

🐰 Hop, hop! New scripts to build, we say,
Sitemaps and schemas in their way,
LLMs shall feast on docs so fine,
AsyncAPI shines in each new line,
Generated treasures, validated right—
A rabbit's delight!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly summarizes the main change: adding LLM-friendly documentation files (llms.txt and sitemap.xml), which is the core objective of this pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Sourya07 Sourya07 changed the title Async api v3 feat: add LLM-friendly documentation (llms.txt, sitemap.xml) Dec 11, 2025
@codecov
Copy link

codecov bot commented Dec 11, 2025

Codecov Report

❌ Patch coverage is 0% with 165 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.88%. Comparing base (9c3dcd6) to head (7d9d9b7).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
scripts/test-llms-txt.ts 0.00% 84 Missing ⚠️
scripts/build-llms-txt.ts 0.00% 55 Missing ⚠️
scripts/build-sitemap.ts 0.00% 26 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##            master    #4706       +/-   ##
============================================
- Coverage   100.00%   82.88%   -17.12%     
============================================
  Files           22       25        +3     
  Lines          799      964      +165     
  Branches       146      166       +20     
============================================
  Hits           799      799               
- Misses           0      165      +165     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@asyncapi-bot
Copy link
Contributor

asyncapi-bot commented Dec 11, 2025

⚡️ Lighthouse report for the changes in this PR:

Category Score
🔴 Performance 34
🟢 Accessibility 98
🟢 Best practices 92
🟢 SEO 100
🔴 PWA 33

Lighthouse ran on https://deploy-preview-4706--asyncapi-website.netlify.app/

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (2)
public/llms.txt (1)

1-41: Generated file should not be committed (duplicate of sitemap.xml issue).

Like public/sitemap.xml, this file is generated by scripts/build-llms-txt.ts and should not be committed to the repository. See the review comment on public/sitemap.xml for the full rationale and solution.

Include this file in the .gitignore entry mentioned in the sitemap.xml review.

public/llms-full.txt (1)

1-58: Generated file should not be committed (duplicate of sitemap.xml issue).

This file is generated by scripts/build-llms-txt.ts and should not be committed. See the review comment on public/sitemap.xml for the complete rationale and solution.

Include this file in the .gitignore entry mentioned in the sitemap.xml review.

🧹 Nitpick comments (3)
scripts/build-llms-txt.ts (2)

187-206: Ensure PUBLIC_DIR exists before writing files.

The script writes to PUBLIC_DIR without verifying it exists. While the copySchemas() function correctly creates its subdirectory with recursive: true, the main files lack this protection.

Apply this diff to ensure the directory exists:

 async function main() {
     try {
         console.log('Generating LLM-friendly documentation files...\n');
 
+        // Ensure public directory exists
+        await fs.mkdir(PUBLIC_DIR, { recursive: true });
+
         const llmsTxt = generateLLMSTxt();
         await fs.writeFile(path.join(PUBLIC_DIR, 'llms.txt'), llmsTxt, 'utf-8');

18-149: Consider future automation for documentation discovery.

The hardcoded sections array works for the initial implementation but creates a maintenance burden. Each new documentation page requires manual updates to this script.

For future consideration, you could explore auto-discovery mechanisms such as:

  • Parsing the site's navigation configuration
  • Reading from a centralized documentation manifest
  • Automatically scanning markdown files with frontmatter metadata

This would reduce manual maintenance and keep the LLM documentation automatically in sync with site structure.

scripts/build-sitemap.ts (1)

14-78: Consider the maintenance implications of hardcoded URLs.

Similar to build-llms-txt.ts, this script uses a hardcoded URL list that requires manual updates when documentation structure changes.

For future iterations, consider:

  • Generating the sitemap dynamically from the site's navigation structure or file system
  • Using a centralized configuration file for both scripts
  • Adding automated checks to detect new documentation pages that should be included

This would help keep the sitemap automatically in sync with actual site content.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1e63086 and c839d4f.

📒 Files selected for processing (8)
  • docs/LLM_DOCUMENTATION.md (1 hunks)
  • package.json (3 hunks)
  • public/llms-full.txt (1 hunks)
  • public/llms.txt (1 hunks)
  • public/sitemap.xml (1 hunks)
  • scripts/build-llms-txt.ts (1 hunks)
  • scripts/build-sitemap.ts (1 hunks)
  • scripts/test-llms-txt.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: anshgoyalevil
Repo: asyncapi/website PR: 3950
File: scripts/utils/check-locales.ts:122-129
Timestamp: 2025-04-20T16:05:16.482Z
Learning: In the AsyncAPI website project, Next.js throws errors at runtime when locale files are missing, making additional validation for missing files unnecessary in the check-locales script.
Learnt from: sagarkori143
Repo: asyncapi/website PR: 0
File: :0-0
Timestamp: 2025-06-20T14:47:22.389Z
Learning: The AsyncAPI website modularization PR uses Promise.allSettled for parallel execution of build tasks, which provides better performance and fault isolation compared to sequential execution.
📚 Learning: 2025-01-18T08:44:43.614Z
Learnt from: akshatnema
Repo: asyncapi/website PR: 3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is a project-specific requirement enforced by the linting rules and build setup, even though it differs from typical Node.js behavior.

Applied to files:

  • scripts/build-llms-txt.ts
  • scripts/test-llms-txt.ts
  • package.json
📚 Learning: 2025-01-18T08:44:43.614Z
Learnt from: akshatnema
Repo: asyncapi/website PR: 3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In the AsyncAPI website project, JavaScript test files must include the .ts extension when importing TypeScript files (e.g., `require('../scripts/build-rss.ts')`). This is enforced by the project's configuration which uses `moduleResolution: "bundler"` in tsconfig.json and TypeScript-aware ESLint plugins. The .ts extensions are required even though the files are imported using CommonJS require statements.

Applied to files:

  • scripts/build-llms-txt.ts
  • scripts/test-llms-txt.ts
  • package.json
📚 Learning: 2025-07-19T20:58:34.040Z
Learnt from: bandantonio
Repo: asyncapi/website PR: 4264
File: markdown/docs/tutorials/getting-started/coming-from-openapi.md:24-25
Timestamp: 2025-07-19T20:58:34.040Z
Learning: In the AsyncAPI website documentation, anchor references to specification sections can use camelCase format (e.g., #serverObject, #parameterObject, #messageObject) even if the actual HTML IDs on the spec page use hyphenated lowercase format. This is acceptable and should not be changed.

Applied to files:

  • public/llms.txt
  • public/llms-full.txt
📚 Learning: 2025-05-09T17:35:57.171Z
Learnt from: TRohit20
Repo: asyncapi/website PR: 4107
File: markdown/docs/tools/studio/architecture.md:23-23
Timestamp: 2025-05-09T17:35:57.171Z
Learning: In the AsyncAPI Studio architecture documentation, "Layer Breakdown" is intentionally structured as an H3 heading (subsection) because it provides additional detail about the layered architecture pattern introduced earlier, rather than being a standalone main section.

Applied to files:

  • public/llms.txt
  • public/llms-full.txt
📚 Learning: 2024-12-30T11:00:42.064Z
Learnt from: JeelRajodiya
Repo: asyncapi/website PR: 3423
File: jest.config.cjs:6-7
Timestamp: 2024-12-30T11:00:42.064Z
Learning: The user only wants coverage for scripts, not for .tsx files, because the existing tests are focused on scripts.

Applied to files:

  • scripts/test-llms-txt.ts
📚 Learning: 2024-11-29T17:36:09.783Z
Learnt from: vishvamsinh28
Repo: asyncapi/website PR: 3378
File: tests/markdown/check-markdown.test.js:133-138
Timestamp: 2024-11-29T17:36:09.783Z
Learning: When testing the 'main' function in 'check-markdown.test.js', it's acceptable to simply ensure it doesn't throw any errors, as the functions it calls are already tested elsewhere.

Applied to files:

  • scripts/test-llms-txt.ts
📚 Learning: 2025-04-20T16:05:16.482Z
Learnt from: anshgoyalevil
Repo: asyncapi/website PR: 3950
File: scripts/utils/check-locales.ts:122-129
Timestamp: 2025-04-20T16:05:16.482Z
Learning: In the AsyncAPI website project, Next.js throws errors at runtime when locale files are missing, making additional validation for missing files unnecessary in the check-locales script.

Applied to files:

  • scripts/test-llms-txt.ts
📚 Learning: 2025-01-18T08:44:43.614Z
Learnt from: akshatnema
Repo: asyncapi/website PR: 3423
File: tests/index.test.js:2-7
Timestamp: 2025-01-18T08:44:43.614Z
Learning: In JavaScript test files within the AsyncAPI website project, TypeScript file imports must include the .ts extension to avoid lint errors, even though the files being imported are JavaScript files.

Applied to files:

  • package.json
🪛 LanguageTool
docs/LLM_DOCUMENTATION.md

[uncategorized] ~48-~48: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...- ✓ All required files exist - ✓ Proper markdown formatting - ✓ Correct link structure ...

(MARKDOWN_NNP)


[style] ~70-~70: This is not the usual sequence for adjectives that have no special emphasis.
Context: ... Adding New Documentation When you add new important documentation pages: 1. **Edit `script...

(EN_ADJ_ORDER)


[uncategorized] ~120-~120: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...with H2 sections (## Section) - ✓ Use markdown links: [title](url) - ✓ Add descripti...

(MARKDOWN_NNP)

🪛 markdownlint-cli2 (0.18.1)
docs/LLM_DOCUMENTATION.md

188-188: Bare URL used

(MD034, no-bare-urls)


189-189: Bare URL used

(MD034, no-bare-urls)


207-207: Bare URL used

(MD034, no-bare-urls)


209-209: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: cypress-run
  • GitHub Check: Lighthouse CI
🔇 Additional comments (8)
scripts/build-llms-txt.ts (1)

1-7: LGTM!

The imports and constants are well-structured and appropriate for the file generation tasks.

package.json (1)

14-14: LGTM!

The new npm scripts are well-integrated into the build pipeline. The chaining in build-scripts ensures the LLM documentation files are generated as part of the standard build process, and the script commands follow the project's existing conventions using tsx.

Also applies to: 25-26

scripts/build-sitemap.ts (2)

80-87: LGTM!

The XML entity escaping function correctly handles all standard XML special characters (&, <, >, ", ').


17-55: Fix incorrect URL for specification v2 reference and consider dynamic sitemap generation.

The sitemap contains hardcoded URLs that require manual updates when site structure changes. During verification, one URL was found to be incorrect:

  • Line 29: /docs/reference/specification/v2 should be /docs/reference/specification/v2.x (the actual markdown file is v2.x.md)

All other documentation URLs (15 of 16) correctly map to existing markdown files. To prevent future mismatches between the sitemap and actual pages, consider either:

  1. Dynamically generating sitemap entries from the built pages directory instead of maintaining a hardcoded list
  2. Adding automated tests to validate all sitemap URLs correspond to accessible pages during the build process
⛔ Skipped due to learnings
Learnt from: anshgoyalevil
Repo: asyncapi/website PR: 3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.
docs/LLM_DOCUMENTATION.md (1)

1-209: Excellent documentation structure and content.

The documentation is comprehensive, well-organized, and provides clear guidance for maintaining the LLM documentation system. The structure, examples, validation checklist, and troubleshooting sections will be very helpful for future maintainers.

scripts/test-llms-txt.ts (3)

20-109: LGTM - Comprehensive format validation.

The validateLLMSTxt() function thoroughly validates the llms.txt file against the specification requirements. The checks are well-structured with appropriate distinction between errors (spec violations) and warnings (recommendations).

Key validations:

  • Required H1 header
  • Required blockquote description
  • H2 section organization
  • Absolute URL validation
  • Optional section presence
  • Proper list structure

114-140: LGTM - Appropriate file existence validation.

The validation correctly checks for all generated artifacts:

  • llms.txt and llms-full.txt (documentation files)
  • sitemap.xml (search engine sitemap)
  • schemas/3.0.0.json (AsyncAPI v3 schema)

This ensures the build process completed successfully and all required files are present.


145-189: LGTM - Clear validation orchestration and output.

The main function effectively orchestrates both validation checks and provides clear, actionable output. The use of process.exit(1) on failure is appropriate for CI/CD integration, and the success message includes helpful next steps for submission to LLM directories.

Comment on lines +188 to +189
1. **llmstxt.site**: https://llmstxt.site/submit
2. **directory.llmstxt.cloud**: https://directory.llmstxt.cloud/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Format bare URLs as markdown links.

The static analysis tools correctly identify bare URLs that should be formatted as markdown links for better readability and consistency.

Apply this diff to format the URLs:

 After deploying to production, submit to LLM directories:
 
-1. **llmstxt.site**: https://llmstxt.site/submit
-2. **directory.llmstxt.cloud**: https://directory.llmstxt.cloud/
+1. **llmstxt.site**: <https://llmstxt.site/submit>
+2. **directory.llmstxt.cloud**: <https://directory.llmstxt.cloud/>
 
 Provide:
 - URL: `https://www.asyncapi.com/llms.txt`
 For questions or issues:
-- GitHub Issue: https://github.com/asyncapi/website/issues/4408
+- GitHub Issue: <https://github.com/asyncapi/website/issues/4408>
 - AsyncAPI Slack: #11-website channel
-- Standard: https://llmstxt.org/
+- Standard: <https://llmstxt.org/>

Note: Using angle brackets <URL> creates auto-links in markdown, which satisfies the linter while keeping the URLs clickable.

Also applies to: 207-209

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

188-188: Bare URL used

(MD034, no-bare-urls)


189-189: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In docs/LLM_DOCUMENTATION.md around lines 188-189 (and also apply the same
change to lines 207-209), the two bare URLs should be formatted as markdown
links or auto-links; replace "https://llmstxt.site/submit" and
"https://directory.llmstxt.cloud/" with markdown-style links (e.g.,
[llmstxt.site](https://llmstxt.site/submit)) or wrap them in angle brackets
(<https://...>) so the linter recognizes them as links and the text remains
clickable and consistent.

Comment on lines 1 to 135
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.asyncapi.com/</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.asyncapi.com/tools</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.asyncapi.com/blog</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.asyncapi.com/community</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/reference/specification/v3.0.0</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/reference/specification/v2</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/migration/migrating-to-v3</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts/application</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts/channel</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts/message</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts/server</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/concepts/protocol</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tutorials</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tutorials/create-asyncapi-document</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tutorials/streetlights-interactive</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tutorials/message-validation</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tutorials/generate-code</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://www.asyncapi.com/docs/tools</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.asyncapi.com/llms.txt</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://www.asyncapi.com/llms-full.txt</loc>
<lastmod>2025-12-11</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Generated files should not be committed to the repository.

This sitemap.xml file is generated by scripts/build-sitemap.ts and contains today's date. Committing generated files to version control creates several issues:

  1. Merge conflicts: Multiple PRs will conflict when updating the same generated file
  2. Stale content: The lastmod dates become outdated in the repository
  3. Git history bloat: Generated content pollutes the commit history
  4. Source of truth confusion: The script is the source of truth, not the committed file

Recommended approach:

  1. Add generated files to .gitignore:
# Generated LLM documentation files
/public/llms.txt
/public/llms-full.txt
/public/sitemap.xml
/public/schemas/
  1. Ensure the build process generates these files:

    • In local development: npm run build-scripts (already configured)
    • In CI/CD: Ensure the build step runs before deployment
    • Document that these files are generated and not manually edited
  2. If you need to verify the output locally, generate the files and review them without committing:

npm run generate:llms && npm run generate:sitemap

This approach is standard practice for build artifacts and aligns with how the project handles other generated content.

🤖 Prompt for AI Agents
In public/sitemap.xml (lines 1-135): this file is generated by
scripts/build-sitemap.ts and should not be committed; remove the committed
generated file from the PR (or revert the commit), add the generated outputs to
.gitignore (include /public/sitemap.xml, /public/llms.txt, /public/llms-full.txt
and /public/schemas/), and ensure the repository/CI invocation runs the build
script to regenerate these artifacts during local dev and CI/CD (document the
npm run build-scripts / generate commands in the contributing or build docs so
developers know how to produce and verify these files without committing them).

Generated files (llms.txt, llms-full.txt, sitemap.xml, schemas/) should not be committed to version control.

- Added all generated files to .gitignore
- Removed committed generated files from git tracking
- Updated documentation to clarify these are build artifacts
- Files will be automatically generated during npm run build-scripts
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
docs/LLM_DOCUMENTATION.md (1)

194-195: Format bare URLs as markdown links.

Lines 194–195 and 213–215 contain bare URLs that violate the no-bare-urls linter rule. Wrap them in angle brackets to create auto-links that remain clickable and satisfy the linter.

Apply this diff:

 After deploying to production, submit to LLM directories:
 
-1. **llmstxt.site**: https://llmstxt.site/submit
-2. **directory.llmstxt.cloud**: https://directory.llmstxt.cloud/
+1. **llmstxt.site**: <https://llmstxt.site/submit>
+2. **directory.llmstxt.cloud**: <https://directory.llmstxt.cloud/>
 
 Provide:
 - URL: `https://www.asyncapi.com/llms.txt`
 - Description: "AsyncAPI specification for event-driven APIs"
 
 ## Future Enhancements
 ## Support
 
 For questions or issues:
-- GitHub Issue: https://github.com/asyncapi/website/issues/4408
+- GitHub Issue: <https://github.com/asyncapi/website/issues/4408>
 - AsyncAPI Slack: #11-website channel
-- Standard: https://llmstxt.org/
+- Standard: <https://llmstxt.org/>

Also applies to: 213-215

🧹 Nitpick comments (1)
docs/LLM_DOCUMENTATION.md (1)

54-54: Capitalize "Markdown" as proper noun.

"Markdown" is the proper name of the markup language and should be capitalized in both locations.

Apply this diff:

- ✓ Proper markdown formatting
+ ✓ Proper Markdown formatting
- ✓ Use markdown links: `[title](url)`
+ ✓ Use Markdown links: `[title](url)`

Also applies to: 126-126

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c839d4f and 8ca99c3.

📒 Files selected for processing (2)
  • .gitignore (1 hunks)
  • docs/LLM_DOCUMENTATION.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .gitignore
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: asyncapi-bot
Repo: asyncapi/website PR: 0
File: :0-0
Timestamp: 2025-02-18T12:07:42.211Z
Learning: The following PR commands are supported in the asyncapi/website repository:
- `/please-take-a-look` or `/ptal`: Requests attention from reviewers who haven't reviewed the PR
- `/ready-to-merge` or `/rtm`: Triggers automerge when all conditions are met
- `/do-not-merge` or `/dnm`: Blocks automerge even if all conditions are met
- `/autoupdate` or `/au`: Adds autoupdate label to keep PR in sync with target branch
- `/update` or `/u`: One-time update of PR with latest changes from target branch
📚 Learning: 2024-11-13T20:34:18.998Z
Learnt from: bandantonio
Repo: asyncapi/website PR: 3393
File: markdown/blog/2024-Q1-docs-report.md:10-12
Timestamp: 2024-11-13T20:34:18.998Z
Learning: In the markdown files for the AsyncAPI website, avatar image paths should be referenced without the `public` prefix (e.g., use `/img/avatars/...` instead of `/public/img/avatars/...`).

Applied to files:

  • docs/LLM_DOCUMENTATION.md
📚 Learning: 2025-01-19T04:51:41.255Z
Learnt from: anshgoyalevil
Repo: asyncapi/website PR: 3557
File: tests/fixtures/markdown/check-edit-links-data.js:3-11
Timestamp: 2025-01-19T04:51:41.255Z
Learning: In the AsyncAPI website repository, the test data in `tests/fixtures/markdown/check-edit-links-data.js` intentionally includes inconsistent paths (with and without 'docs' prefix) to verify the script's ability to normalize and handle ambiguous path structures.

Applied to files:

  • docs/LLM_DOCUMENTATION.md
🪛 LanguageTool
docs/LLM_DOCUMENTATION.md

[uncategorized] ~54-~54: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...- ✓ All required files exist - ✓ Proper markdown formatting - ✓ Correct link structure ...

(MARKDOWN_NNP)


[style] ~76-~76: This is not the usual sequence for adjectives that have no special emphasis.
Context: ... Adding New Documentation When you add new important documentation pages: 1. **Edit `script...

(EN_ADJ_ORDER)


[uncategorized] ~126-~126: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...with H2 sections (## Section) - ✓ Use markdown links: [title](url) - ✓ Add descripti...

(MARKDOWN_NNP)

🪛 markdownlint-cli2 (0.18.1)
docs/LLM_DOCUMENTATION.md

194-194: Bare URL used

(MD034, no-bare-urls)


195-195: Bare URL used

(MD034, no-bare-urls)


213-213: Bare URL used

(MD034, no-bare-urls)


215-215: Bare URL used

(MD034, no-bare-urls)

⏰ Context from checks skipped due to timeout of 180000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Redirect rules - asyncapi-website
  • GitHub Check: Header rules - asyncapi-website
  • GitHub Check: Pages changed - asyncapi-website
  • GitHub Check: cypress-run
🔇 Additional comments (1)
docs/LLM_DOCUMENTATION.md (1)

1-192: Well-structured maintenance guide.

The document clearly explains the build process, validation steps, and maintenance workflow. Organization and technical content look solid.

@Sourya07
Copy link
Contributor Author

@derberg have a look on this 😊

@derberg
Copy link
Member

derberg commented Dec 15, 2025

This repository is a production project, not a sandbox for testing AI-assisted development tools. We require contributors to fully understand the logic they are submitting so they can support it during review. We cannot allocate maintainer time to reviewing experimental or auto-generated code.

@derberg derberg closed this Dec 15, 2025
@Sourya07 Sourya07 deleted the AsyncAPI-v3 branch December 15, 2025 07:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants