Conversation
Signed-off-by: Neha Gupta <gneha21[at]yahoo>
FAQSchema.jsx was never imported anywhere — dead code with no matching visible FAQ content, risking structured-data spam if accidentally used. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com>
Code Review SummaryStatus: No New Issues Found | Recommendation: Merge OverviewThis incremental review covers changes since commit
No new critical issues were found in the incremental changes. Previous inline comments from the initial review remain applicable. Previous Issues Still Applicable (6 issues)
Other Observations (not in diff)
Files Reviewed in This Increment (10 files)
Reviewed by claude-4.5-opus-20251124 · 473,529 tokens |
There was a problem hiding this comment.
Pull request overview
This PR updates Keploy documentation metadata/content and site crawling/indexing artifacts to improve SEO and AI discoverability.
Changes:
- Expanded key concept docs with richer frontmatter (
description,keywords) and introductory explanations. - Updated
robots.txtto explicitly allow major AI/search bots while disallowing Bytespider. - Added
static/llms.txtto provide an AI-friendly entrypoint summarizing Keploy docs and key links.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| versioned_docs/version-4.0.0/keploy-explained/how-keploy-works.md | Adds meta description/keywords and a clearer intro explaining record/replay architecture. |
| versioned_docs/version-4.0.0/concepts/what-is-keploy.md | Updates product description and adds keywords/intro paragraph for search clarity. |
| versioned_docs/version-4.0.0/concepts/what-is-a-keploy-ebpf.md | Clarifies eBPF concept with expanded description/keywords and an explanatory intro. |
| versioned_docs/version-4.0.0/concepts/what-are-keploy-features.md | Expands features description/keywords and adds a summarized “key features” intro paragraph. |
| static/robots.txt | Adds explicit AI bot allow rules, disallows Bytespider, retains default crawler directives. |
| static/llms.txt | Introduces an AI-oriented overview file with curated links into the docs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
static/robots.txt
Outdated
| Allow: / | ||
|
|
||
| User-agent: OAI-SearchBot | ||
| Allow: / | ||
|
|
||
| User-agent: ChatGPT-User | ||
| Allow: / | ||
|
|
||
| User-agent: ClaudeBot | ||
| Allow: / | ||
|
|
||
| User-agent: anthropic-ai | ||
| Allow: / | ||
|
|
||
| User-agent: PerplexityBot | ||
| Allow: / | ||
|
|
||
| User-agent: Perplexity-User | ||
| Allow: / | ||
|
|
||
| User-agent: Google-Extended | ||
| Allow: / | ||
|
|
||
| User-agent: GoogleOther | ||
| Allow: / | ||
|
|
||
| User-agent: Applebot-Extended | ||
| Allow: / | ||
|
|
||
| User-agent: Meta-ExternalAgent | ||
| Allow: / | ||
|
|
||
| User-agent: CCBot | ||
| Allow: / |
There was a problem hiding this comment.
The per-user-agent groups (e.g., GPTBot/ClaudeBot/etc.) only contain Allow: /. Because crawlers use the most specific matching group, these bots will no longer inherit the Disallow: /cgi-bin/ rule from the User-agent: * group and may crawl /cgi-bin/. Consider either removing the redundant allow-groups (and only keeping the Bytespider block), or repeating Disallow: /cgi-bin/ (and any other shared directives) within each explicit user-agent group.
| Allow: / | |
| User-agent: OAI-SearchBot | |
| Allow: / | |
| User-agent: ChatGPT-User | |
| Allow: / | |
| User-agent: ClaudeBot | |
| Allow: / | |
| User-agent: anthropic-ai | |
| Allow: / | |
| User-agent: PerplexityBot | |
| Allow: / | |
| User-agent: Perplexity-User | |
| Allow: / | |
| User-agent: Google-Extended | |
| Allow: / | |
| User-agent: GoogleOther | |
| Allow: / | |
| User-agent: Applebot-Extended | |
| Allow: / | |
| User-agent: Meta-ExternalAgent | |
| Allow: / | |
| User-agent: CCBot | |
| Allow: / | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: OAI-SearchBot | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: ChatGPT-User | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: ClaudeBot | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: anthropic-ai | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: PerplexityBot | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: Perplexity-User | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: Google-Extended | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: GoogleOther | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: Applebot-Extended | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: Meta-ExternalAgent | |
| Allow: / | |
| Disallow: /cgi-bin/ | |
| User-agent: CCBot | |
| Allow: / | |
| Disallow: /cgi-bin/ |
| id: how-keploy-works | ||
| title: How Keploy Works? | ||
| sidebar_label: Architecture | ||
| description: Keploy uses eBPF hooks at the Linux kernel level to capture real user traffic in Record mode and replay it as production-like sandboxes in Test mode — enabling production behavior replay, dependency virtualization, and continuous validation with automatic regression detection. |
There was a problem hiding this comment.
The description says "replay it as production-like sandboxes" which reads like the traffic is being replayed as a sandbox. Consider rephrasing to replay the captured traffic/requests in a production-like sandbox environment (or similar) to avoid confusion.
| - legacy application testing | ||
| --- | ||
|
|
||
| Keploy generates tests by using eBPF hooks to intercept network packets at the Linux kernel level. In Record mode, it captures every incoming HTTP request and outgoing dependency call — database queries, API calls, message queue interactions — saving them as YAML test cases. In Test mode, it replays those requests as production-like sandboxes with all dependencies automatically virtualized, comparing responses to detect regressions. This production behavior replay enables continuous validation, migration regression testing, and legacy application testing without code changes. |
There was a problem hiding this comment.
This line mixes a few potentially confusing/incorrect terms: eBPF typically attaches to kernel hooks and can observe socket/syscall-level I/O rather than literally "intercepting network packets", and "replays those requests as production-like sandboxes" is awkward phrasing. Consider updating wording to something like capturing socket-level traffic via eBPF hooks and replaying requests in a sandboxed environment.
| Keploy generates tests by using eBPF hooks to intercept network packets at the Linux kernel level. In Record mode, it captures every incoming HTTP request and outgoing dependency call — database queries, API calls, message queue interactions — saving them as YAML test cases. In Test mode, it replays those requests as production-like sandboxes with all dependencies automatically virtualized, comparing responses to detect regressions. This production behavior replay enables continuous validation, migration regression testing, and legacy application testing without code changes. | |
| Keploy generates tests by using eBPF hooks in the Linux kernel to capture socket-level application traffic. In Record mode, it captures every incoming HTTP request and outgoing dependency call — database queries, API calls, message queue interactions — saving them as YAML test cases. In Test mode, it replays those requests in a sandboxed environment that closely mimics production, with all dependencies automatically virtualized and responses compared to detect regressions. This production behavior replay enables continuous validation, migration regression testing, and legacy application testing without code changes. |
| title: What is Keploy eBPF | ||
| sidebar_label: Keploy eBPF | ||
| description: Keploy eBPF is a language-agnostic library that captures and replays API calls and subsequent network interactions. | ||
| description: eBPF (Extended Berkeley Packet Filter) is a Linux kernel technology that Keploy uses to intercept network packets at the socket level with near-zero overhead — enabling production behavior replay, dependency virtualization, legacy application testing, and infrastructure mocking without code changes. |
There was a problem hiding this comment.
The wording "intercept network packets at the socket level" is internally inconsistent (packets are L3/L2, sockets are L4+ API) and may be technically misleading. Consider describing this as capturing socket-level traffic / syscall-level network I/O via eBPF hooks, rather than intercepting packets.
| - AI Generated Tests | ||
| --- | ||
|
|
||
| Keploy is an open-source, AI-powered testing agent and sandboxing platform that uses eBPF to automatically generate test cases, dependency mocks, and production-like sandboxes from real user traffic. It records live API calls at the Linux kernel network layer and replays them as deterministic tests — requiring zero code changes, working with any programming language or framework, and scaling test coverage with AI-driven code velocity. Keploy enables production behavior replay, dependency virtualization for databases and external APIs, legacy application testing without code changes, and migration regression testing against production baselines. |
There was a problem hiding this comment.
"Linux kernel network layer" can be read as the OSI network layer (L3). If Keploy’s capture is happening at the socket/syscall layer (as suggested elsewhere), consider using more precise phrasing (e.g., kernel socket layer / syscall-level network I/O) to avoid technical ambiguity.
| Keploy is an open-source, AI-powered testing agent and sandboxing platform that uses eBPF to automatically generate test cases, dependency mocks, and production-like sandboxes from real user traffic. It records live API calls at the Linux kernel network layer and replays them as deterministic tests — requiring zero code changes, working with any programming language or framework, and scaling test coverage with AI-driven code velocity. Keploy enables production behavior replay, dependency virtualization for databases and external APIs, legacy application testing without code changes, and migration regression testing against production baselines. | |
| Keploy is an open-source, AI-powered testing agent and sandboxing platform that uses eBPF to automatically generate test cases, dependency mocks, and production-like sandboxes from real user traffic. It records live API calls at the Linux kernel socket layer (syscall-level network I/O) and replays them as deterministic tests — requiring zero code changes, working with any programming language or framework, and scaling test coverage with AI-driven code velocity. Keploy enables production behavior replay, dependency virtualization for databases and external APIs, legacy application testing without code changes, and migration regression testing against production baselines. |
| # Keploy Documentation | ||
|
|
||
| > Technical documentation for Keploy, an open-source AI-powered testing agent and sandboxing platform that automatically generates test cases, dependency mocks, and production-like sandboxes from real user traffic using eBPF kernel technology. Keploy keeps testing aligned with AI-driven code velocity — achieving 90% test coverage in minutes with zero code changes. |
There was a problem hiding this comment.
PR description mentions introducing a new FAQSchema.jsx component for structured FAQ JSON-LD, but this PR’s changed file set doesn’t include that component. If the component isn’t actually part of this PR (or wasn’t updated here), consider updating the PR description to avoid confusion for reviewers/release notes.
…g, sitemap - Add 40-60 word answer nuggets after H2s in what-is-keploy, how-keploy-works, features docs - Rephrase doc headings as questions for AI extraction - Upgrade Product schema to SoftwareApplication with featureList and keywords - Add sameAs entity disambiguation links to Organization schema - Add blog + landing cross-refs to llms.txt - Fix canonicalBase to match actual domain (keploy.io) - Add missing plugin package.json for docusaurus-tailwindcss-loader - Configure sitemap filename Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
docusaurus.config.js
Outdated
| "operatingSystem": ["Linux", "macOS", "Windows"], | ||
| "license": "https://www.apache.org/licenses/LICENSE-2.0", | ||
| "softwareHelp": "https://docs.keploy.io", | ||
| "codeRepository": "https://github.com/keploy/keploy", | ||
| "downloadUrl": "https://github.com/keploy/keploy/releases", | ||
| "isAccessibleForFree": true, | ||
| "url": "https://keploy.io", |
There was a problem hiding this comment.
In the SoftwareApplication JSON-LD, softwareHelp points to https://docs.keploy.io, but this site is configured with url: "https://keploy.io" and baseUrl: "/docs/", so the docs home resolves to https://keploy.io/docs/. Consider aligning softwareHelp with the configured docs URL (or update url/baseUrl if the canonical host is actually docs.keploy.io) to avoid inconsistent structured data.
| tagName: "script", | ||
| attributes: { | ||
| type: "application/ld+json", | ||
| }, | ||
| innerHTML: JSON.stringify({ | ||
| "@context": "https://schema.org/", | ||
| "@type": "Product", | ||
| description: | ||
| "Keploy - Open source tool that generates integration tests like unit tests with mocks or stubs from API calls.", | ||
| keywords: | ||
| "API testing, incident replay, network calls, code paths, test scenarios, code coverage, stubs, junit, go-test, live environment, production incidents, open source, regression tests, ai tests", | ||
| name: "Keploy", | ||
| url: "https://keploy.io/", | ||
| logo: "https://keploy.io/docs/img/favicon.png", | ||
| "@context": "https://schema.org", | ||
| "@type": "SoftwareApplication", | ||
| "name": "Keploy", |
There was a problem hiding this comment.
The PR description mentions adding a new FAQSchema.jsx component to inject FAQPage JSON-LD, but there is no FAQSchema implementation in this PR (repo-wide search returns no matches). Either add the component + wiring, or update the PR description to match the actual changes.
static/robots.txt: - Remove per-bot Allow groups that bypassed default Disallow rules. All crawlers now use single User-agent:* block. Only Bytespider blocked. how-keploy-works.md: - Fix description: "replay in production-like sandboxed environments" (not "replay as sandboxes") - Fix body: "capture socket-level application traffic" instead of "intercept network packets" (packets are L3, sockets are L4+) what-is-a-keploy-ebpf.md: - Fix description: "capture socket-level network I/O via kernel hooks" instead of "intercept network packets at the socket level" what-is-keploy.md: - Fix: "kernel socket layer (syscall-level network I/O)" instead of "kernel network layer" to avoid L3/OSI confusion docusaurus.config.js: - Fix softwareHelp URL: https://keploy.io/docs/ (matches actual url + baseUrl config) instead of https://docs.keploy.io Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com>
|
Kilo Code Review could not run — your account is out of credits. Add credits or switch to a free model to enable reviews on this change. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
static/robots.txt
Outdated
| # Default rules — apply to all crawlers including AI bots | ||
| User-agent: * | ||
| Allow: / | ||
| Crawl-delay: 5 | ||
| Disallow: /cgi-bin/ | ||
|
|
||
| # Block specific bot | ||
| User-agent: Bytespider | ||
| Disallow: / | ||
|
|
There was a problem hiding this comment.
In robots.txt, the wildcard User-agent: * group appears before the User-agent: Bytespider group. Some crawlers use a first-match-wins interpretation and may stop at the * group, causing the Bytespider-specific block to be ignored. To ensure Bytespider is reliably blocked, place the User-agent: Bytespider group before the wildcard group (or otherwise ensure Bytespider matches the intended group).
| # Default rules — apply to all crawlers including AI bots | |
| User-agent: * | |
| Allow: / | |
| Crawl-delay: 5 | |
| Disallow: /cgi-bin/ | |
| # Block specific bot | |
| User-agent: Bytespider | |
| Disallow: / | |
| # Block specific bot | |
| User-agent: Bytespider | |
| Disallow: / | |
| # Default rules — apply to all crawlers including AI bots | |
| User-agent: * | |
| Allow: / | |
| Crawl-delay: 5 | |
| Disallow: /cgi-bin/ |
docusaurus.config.js
Outdated
| "description": "Keploy is an open-source, AI-powered testing agent and sandboxing platform that automatically generates test cases, dependency mocks, and production-like sandboxes from real user traffic using eBPF. It helps developers achieve 90% test coverage in minutes with zero code changes.", | ||
| "applicationCategory": "DeveloperTool", | ||
| "applicationSubCategory": "Test Automation", | ||
| "operatingSystem": ["Linux", "macOS", "Windows"], |
There was a problem hiding this comment.
The JSON-LD operatingSystem field lists macOS and Windows, but the docs indicate Keploy does not natively support macOS/Windows and requires Lima/WSL/Docker. Structured data consumers may interpret operatingSystem as native support; consider limiting this to Linux (and/or clarifying the macOS/Windows requirement in a different field like requirements/description).
| "description": "Keploy is an open-source, AI-powered testing agent and sandboxing platform that automatically generates test cases, dependency mocks, and production-like sandboxes from real user traffic using eBPF. It helps developers achieve 90% test coverage in minutes with zero code changes.", | |
| "applicationCategory": "DeveloperTool", | |
| "applicationSubCategory": "Test Automation", | |
| "operatingSystem": ["Linux", "macOS", "Windows"], | |
| "description": "Keploy is an open-source, AI-powered testing agent and sandboxing platform that automatically generates test cases, dependency mocks, and production-like sandboxes from real user traffic using eBPF. It helps developers achieve 90% test coverage in minutes with zero code changes. Native support is available on Linux; macOS and Windows require a Linux environment such as Lima, WSL, or Docker.", | |
| "applicationCategory": "DeveloperTool", | |
| "applicationSubCategory": "Test Automation", | |
| "operatingSystem": "Linux", |
static/robots.txt: - Move Bytespider block before User-agent:* to ensure first-match-wins crawlers don't skip the specific block docusaurus.config.js: - Change operatingSystem from ["Linux","macOS","Windows"] to "Linux" since macOS/Windows require Lima/WSL/Docker (not native support) - Add clarification in description about macOS/Windows requirements Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: slayerjain <shubhamkjain@outlook.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| //cacheTime: 600 * 1000, // 600 sec - cache purge period | ||
| changefreq: "weekly", | ||
| priority: 0.5, | ||
| filename: "sitemap.xml", |
There was a problem hiding this comment.
@docusaurus/plugin-sitemap option is fileName (camelCase). Using filename will be ignored, so this change likely has no effect. Rename the key to fileName if you intend to override the sitemap output filename.
| filename: "sitemap.xml", | |
| fileName: "sitemap.xml", |
|
|
||
| Keploy has [native integrations](/concepts/general-glossary.md#4-interoperability) with your unit-testing libraries | ||
| like `go-test`, `jUnit`, `jest`, `pyTest`. Keploy gives combined test-coverage and can also be integrated in existing CI | ||
| pipelines easily within `go-test`, `jUnit`, `jest`, `pyTest` workflows. |
There was a problem hiding this comment.
Framework names are inconsistently capitalized in the newly added sentence (e.g., jUnit, jest, pyTest). Elsewhere in the docs these are referred to as JUnit, Jest, and pytest; please align the capitalization to avoid confusing readers/search.
| pipelines easily within `go-test`, `jUnit`, `jest`, `pyTest` workflows. | |
| pipelines easily within `go-test`, `JUnit`, `Jest`, `pytest` workflows. |
| - kernel-level traffic capture | ||
| --- | ||
|
|
||
| eBPF (Extended Berkeley Packet Filter) is a Linux kernel technology that Keploy uses to intercept network packets at the socket level with near-zero overhead. By injecting eBPF hooks, Keploy captures all incoming API requests and outgoing dependency calls — database queries, external API calls, and message queue interactions — without modifying application code or requiring language-specific SDK installation. This kernel-level capture enables production behavior replay, dependency virtualization, legacy application testing for systems never designed for testability, and infrastructure mocking that replaces heavy staging environments with production-like sandboxes. |
There was a problem hiding this comment.
This paragraph mixes "socket-level" capture terminology with "intercept network packets" wording. Socket-level capture is typically described as intercepting socket I/O / send-recv syscalls rather than packets; consider rephrasing for technical consistency within the page.
| eBPF (Extended Berkeley Packet Filter) is a Linux kernel technology that Keploy uses to intercept network packets at the socket level with near-zero overhead. By injecting eBPF hooks, Keploy captures all incoming API requests and outgoing dependency calls — database queries, external API calls, and message queue interactions — without modifying application code or requiring language-specific SDK installation. This kernel-level capture enables production behavior replay, dependency virtualization, legacy application testing for systems never designed for testability, and infrastructure mocking that replaces heavy staging environments with production-like sandboxes. | |
| eBPF (Extended Berkeley Packet Filter) is a Linux kernel technology that Keploy uses to capture socket-level network I/O with near-zero overhead. By injecting eBPF hooks, Keploy captures all incoming API requests and outgoing dependency calls — database queries, external API calls, and message queue interactions — without modifying application code or requiring language-specific SDK installation. This kernel-level capture enables production behavior replay, dependency virtualization, legacy application testing for systems never designed for testability, and infrastructure mocking that replaces heavy staging environments with production-like sandboxes. |
Summary
Changes
Documentation content:
SEO and AI discoverability:
Type of change