feat(docs): 1.17.0 Docs Update — EFP, ERC-8004#2327
Conversation
Adds EFP (Ethereum Follow Protocol) example queries to the shared SDK collection and surfaces them across the docs and agent skills. - ensnode-sdk: add `efp-follow-graph` / `efp-who-follows` / `efp-list` example queries; tag every GraphqlApiExampleQuery with the `plugin` it requires (existing → unigraph, new → efp). - ensskills: generate the efp-protocol skill's examples from the SDK (AUTOGEN:EXAMPLES, filtered to efp); filter the base omnigraph skill to unigraph. - docs: new "EFP" Omnigraph page (how to enable the plugin, API surface), three standalone EFP example pages each with an "EFP plugin required" tip, the efp plugin in the Existing Plugins table and on the hosted Alpha instance. Omnigraph examples snapshot refreshed to v1.16.0 (EFP responses recorded from a local efp-enabled instance). Closes #2324
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
2 Skipped Deployments
|
|
Warning Review limit reached
More reviews will be available in 22 minutes and 34 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses rolling per-developer review limits. Reviews become available again as older review attempts age out of the rolling limit window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds EFP (Ethereum Follow Protocol) plugin support across documentation, the Omnigraph SDK example-query dataset, and the ensskills generator. The GraphQL schema snapshot is updated to v1.16.0 with full EFP and contenthash types. New documentation pages cover EFP integration, ERC-8004 AI agents, ENSDb schema tables, and three runnable EFP example queries wired into the docs site. ChangesEFP Plugin Integration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Pull request overview
This PR expands ENSNode’s EFP (Ethereum Follow Protocol) developer experience by adding EFP Omnigraph example queries to the shared SDK collection, generating skill examples from that canonical source, and documenting the efp plugin + API surface on the docs site.
Changes:
- Add EFP example queries to
@ensnode/ensnode-sdkand tag all example queries with a requiredplugin: PluginName. - Update the ensskills generator to render example queries into
AUTOGEN:EXAMPLESregions filtered by plugin (unigraphvsefp). - Add Omnigraph docs pages for EFP and its examples; refresh the vendored Omnigraph examples snapshot to v1.16.0.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/ensskills/skills/efp-protocol/SKILL.md | Replaces hand-maintained example queries with an AUTOGEN:EXAMPLES region sourced from the SDK. |
| packages/ensskills/scripts/generate.ts | Generates example-query markdown filtered by plugin and writes both omnigraph + efp-protocol skill regions. |
| packages/ensnode-sdk/src/omnigraph-api/example-queries.ts | Adds plugin tagging to all example queries and introduces three EFP example queries. |
| docs/ensnode.io/src/data/omnigraph-examples/snapshot.json | Bumps the vendored examples snapshot metadata to v1.16.0. |
| docs/ensnode.io/src/data/omnigraph-examples/schema.graphql | Refreshes the vendored SDL snapshot to include the EFP types (and other upstream schema updates). |
| docs/ensnode.io/src/data/omnigraph-examples/responses.json | Adds recorded responses for the new EFP examples. |
| docs/ensnode.io/src/data/omnigraph-examples/examples.json | Adds the EFP examples to the vendored example list (and updates some existing variables). |
| docs/ensnode.io/src/data/omnigraph-examples/config.ts | Adds EFP examples to the docs-side example registry, including separate example pages. |
| docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-who-follows.mdx | New standalone doc page for the “who follows” EFP example with a plugin-required tip. |
| docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-list.mdx | New standalone doc page for the EFP list example with a plugin-required tip. |
| docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-follow-graph.mdx | New standalone doc page for the EFP follow-graph example with a plugin-required tip. |
| docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/efp.mdx | New EFP Omnigraph documentation page (enablement, what’s indexed, API entry points). |
| docs/ensnode.io/src/content/docs/docs/integrate/integration-options/ensnode-plugins.mdx | Adds efp to the “Existing Plugins” table and removes stale “under development” copy. |
| docs/ensnode.io/src/content/docs/docs/hosted-instances.mdx | Adds efp to the hosted Alpha instance’s plugin list. |
| docs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.ts | Adds EFP to the Omnigraph sidebar. |
| .changeset/efp-skill-examples.md | Changeset for ensskills example autogen/filtering behavior. |
| .changeset/efp-omnigraph-docs.md | Changeset for docs additions (EFP pages, plugin table update, hosted instance plugin list). |
| .changeset/efp-example-queries.md | Changeset for SDK example query additions + required plugin field. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Greptile SummaryThis PR surfaces the Ethereum Follow Protocol (EFP) across the ENSNode documentation, SDK example queries, and agent skills. It adds an
Confidence Score: 5/5Safe to merge — documentation and generated content only, with no changes to runtime logic or APIs. All changes are documentation, static data (captured responses, example queries), and a code-generation script update. The SDK change (adding a required No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
SDK["packages/ensnode-sdk\nexample-queries.ts\n(plugin field + 3 EFP queries)"]
GEN["packages/ensskills\nscripts/generate.ts\n(buildExamples(plugin))"]
OMNI["skills/omnigraph/SKILL.md\n(plugin === unigraph)"]
EFP_SK["skills/efp-protocol/SKILL.md\n(plugin === efp)"]
CONF["docs: data/omnigraph-examples/config.ts\n(3 EFP OmnigraphExampleConfig entries)"]
ASIDE["ExampleRequirementAside.astro\n(EFP category → tip aside)"]
EXSET["OmnigraphStaticExampleSet.astro\n(+ExampleRequirementAside)"]
EX_PAGES["examples/efp-*.mdx"]
SDK -->|"filtered by plugin"| GEN
GEN --> OMNI
GEN --> EFP_SK
SDK -->|"ids drive"| CONF
CONF -->|"looked up by"| ASIDE
ASIDE --> EXSET
EXSET --> EX_PAGES
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
SDK["packages/ensnode-sdk\nexample-queries.ts\n(plugin field + 3 EFP queries)"]
GEN["packages/ensskills\nscripts/generate.ts\n(buildExamples(plugin))"]
OMNI["skills/omnigraph/SKILL.md\n(plugin === unigraph)"]
EFP_SK["skills/efp-protocol/SKILL.md\n(plugin === efp)"]
CONF["docs: data/omnigraph-examples/config.ts\n(3 EFP OmnigraphExampleConfig entries)"]
ASIDE["ExampleRequirementAside.astro\n(EFP category → tip aside)"]
EXSET["OmnigraphStaticExampleSet.astro\n(+ExampleRequirementAside)"]
EX_PAGES["examples/efp-*.mdx"]
SDK -->|"filtered by plugin"| GEN
GEN --> OMNI
GEN --> EFP_SK
SDK -->|"ids drive"| CONF
CONF -->|"looked up by"| ASIDE
ASIDE --> EXSET
EXSET --> EX_PAGES
Reviews (5): Last reviewed commit: "docs: correct efp_account_metadata key d..." | Re-trigger Greptile |
- Document the efp_* tables and indexes in their own section of the ENSDb Database Schemas reference. - Abstract the 'EFP plugin required' tip into a reusable ExampleRequirementAside component driven by an example's category; render it from OmnigraphStaticExampleSet so every example page shows the right requirement notice (or none) automatically. - Drop a stray backtick from the efp-who-follows query comment that broke generated TS snippet typechecking.
Take over the ERC-8004 (AI Agent Discovery) page from #2309 and align both it and the EFP page to Lightwalker's terminology choices: - New nav group "Complementary Protocols" (collapsed), containing "EFP (Social Graph)" and "AI Agents / ERC-8004"; no SOON badge in nav. - ERC-8004 page: title "ERC-8004 (AI Agent Identity, Discovery, and Reputation)", "A complementary protocol for ENS" framing callout, plugin-named `erc8004` field (was `erc8004agents`), nested `agent` (was `erc8004agent`), "Example Queries" H2 with H3 examples, hyphenated filename erc-8004.mdx. Consistent "ENS Omnigraph" naming. - Move EFP page to omnigraph/complementary/efp (redirect added) and add the parallel "complementary to ENS" framing callout; sidebar label "EFP (Social Graph)". - Update inbound links (ensnode-plugins, database-schemas, example aside).
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
packages/ensnode-sdk/src/omnigraph-api/example-queries.ts (1)
920-1010: 📐 Maintainability & Code Quality | 🟡 MinorUpdate EFP namespace documentation to reflect multi-namespace support.
Line 925 incorrectly states "Indexed only in the mainnet namespace." The EFP plugin datasources are configured in both the mainnet and ens-test-env devnet namespaces, as evidenced by EFP datasource definitions in both
packages/datasources/src/mainnet.tsandpackages/datasources/src/ens-test-env.ts.Correct the comment to: "Indexed in the mainnet and ens-test-env devnet namespaces."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ensnode-sdk/src/omnigraph-api/example-queries.ts` around lines 920 - 1010, Update the documentation comment for the EFP (Ethereum Follow Protocol) section to correctly reflect the supported namespaces. Locate the comment block that precedes the efp-follow-graph example query and currently states "Indexed only in the mainnet namespace." Replace this statement with "Indexed in the mainnet and ens-test-env devnet namespaces" to accurately document that the EFP plugin datasources are configured in both the mainnet and ens-test-env devnet namespaces.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@docs/ensnode.io/src/content/docs/docs/services/ensdb/concepts/database-schemas.mdx`:
- Around line 595-599: The summary description of the efp_account_metadata table
incorrectly states that rows are unique per (address, key) but the composite
primary key definition includes chain_id as well. Update the summary sentence to
reflect that values are most-recent per (chain_id, address, key) to match the
actual composite key structure shown in the id column definition, eliminating
cross-chain ambiguity.
---
Outside diff comments:
In `@packages/ensnode-sdk/src/omnigraph-api/example-queries.ts`:
- Around line 920-1010: Update the documentation comment for the EFP (Ethereum
Follow Protocol) section to correctly reflect the supported namespaces. Locate
the comment block that precedes the efp-follow-graph example query and currently
states "Indexed only in the mainnet namespace." Replace this statement with
"Indexed in the mainnet and ens-test-env devnet namespaces" to accurately
document that the EFP plugin datasources are configured in both the mainnet and
ens-test-env devnet namespaces.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: b1a8ecbf-a320-4eb3-b534-873cfac0ca1c
📒 Files selected for processing (15)
docs/ensnode.io/astro.config.mjsdocs/ensnode.io/config/integrations/starlight/sidebar-topics/integrate.tsdocs/ensnode.io/src/components/molecules/omnigraph-static-example/ExampleRequirementAside.astrodocs/ensnode.io/src/components/organisms/OmnigraphStaticExampleSet.astrodocs/ensnode.io/src/content/docs/docs/integrate/integration-options/ensnode-plugins.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/complementary/efp.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/complementary/erc-8004.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-follow-graph.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-list.mdxdocs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-who-follows.mdxdocs/ensnode.io/src/content/docs/docs/services/ensdb/concepts/database-schemas.mdxdocs/ensnode.io/src/data/omnigraph-examples/examples.jsondocs/ensnode.io/src/data/omnigraph-examples/snapshot.jsonpackages/ensnode-sdk/src/omnigraph-api/example-queries.tspackages/ensskills/skills/efp-protocol/SKILL.md
💤 Files with no reviewable changes (3)
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-who-follows.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-list.mdx
- docs/ensnode.io/src/content/docs/docs/integrate/omnigraph/examples/efp-follow-graph.mdx
|
@greptile review |
| const category = getOmnigraphExampleConfigById(id)?.category; | ||
| --- | ||
|
|
||
| { | ||
| category === "EFP" && ( |
| ## Example Queries | ||
|
|
||
| ### Find ERC-8004 agents associated with an ENS name |
Closes #2324.
Surfaces EFP (Ethereum Follow Protocol) across the ENS Omnigraph example queries, agent skills, and docs. Builds on the EFP indexer/API landed in #2296.
What changed
SDK example queries (
packages/ensnode-sdk)efp-follow-graph,efp-who-follows,efp-list— ported from the hand-written ones in theefp-protocolskill.plugin: PluginNamefield toGraphqlApiExampleQuery. Existing queries are taggedunigraph; the new EFP ones are taggedefp. This is the tag everything downstream filters on.Agent skills (
packages/ensskills)efp-protocolskill's "Example queries" section is now anAUTOGEN:EXAMPLESregion generated from the SDK collection, filtered toplugin === efp(no more hand-maintained queries).omnigraphskill's examples are now filtered toplugin === unigraph.Docs (
docs/ensnode.io)efpplugin (PLUGINS), what it indexes, and theQuery.efp/Account.efpAPI surface. Mentions it's enabled on the hosted Alpha instance.:::tipreminding viewers theefpplugin is required, linking to the EFP page.efpto the Existing Plugins table (removing the stale "under development" note) and to the Alpha hosted instance's plugin list.efp-enabled mainnet instance. The largeschema.graphqldiff is the vendored SDL refreshing from v1.15.2 (it now includes the EFP types); it's a prettier-formatted copy of the current source SDL.Validation
pnpm generate(no drift),pnpm lintclean.ensnode-sdk,ensapi,ensskills.ensapiexample-queries unit test: 30 passed (27 + 3 EFP).pnpm -F @docs/ensnode build: 132 pages built, EFP pages + examples render, no broken links.🤖 Generated with Claude Code