Skip to content

Add client library guide#1

Merged
tilo-14 merged 20 commits intomainfrom
client-guides
Nov 26, 2025
Merged

Add client library guide#1
tilo-14 merged 20 commits intomainfrom
client-guides

Conversation

@tilo-14
Copy link
Member

@tilo-14 tilo-14 commented Nov 11, 2025

Summary

  • Add client library guide in subdirectory structure (client-library/README.mdx)
  • Update docs.json navigation to reference the new file path
  • File appears in "Compressed PDAs" tab under "Client Guides" section

Changes

  • New file: client-library/README.mdx - Complete client library guide for TypeScript and Rust
  • Modified: docs.json - Updated navigation path from client-library to client-library/README

Summary by CodeRabbit

  • New Features

    • Added a comprehensive Rust & TypeScript client guide with end-to-end examples and troubleshooting.
  • Documentation

    • Renamed "Guides" to "Program Guides" in Compressed PDAs navigation and updated related links.
    • Clarified landing copy (128‑byte validity proofs), adjusted AI search text, and added a developer tools section.
    • Minor content and table updates across compressed PDAs docs.
  • Removed

    • Purged multiple internal agent/skill/template documentation files.
  • Chores

    • Added internal agent folder to .gitignore and cleaned OpenAPI server URLs.

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

@coderabbitai
Copy link

coderabbitai bot commented Nov 11, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Added a comprehensive Rust/TypeScript ZK Compression client guide, updated Docs navigation and many internal links, removed numerous .claude agent/skill/template docs, adjusted landing copy and a system-accounts snippet, updated multiple OpenAPI server URLs to remove api-key query params, updated a submodule ref, and added .claude/ to .gitignore.

Changes

Cohort / File(s) Summary
Docs navigation & new page
docs.json, client-library/client-guide.mdx
Renamed inner nav group "Guides" → "Program Guides" and added new nav page client-library/client-guide; new MDX guide added with extensive TS/Rust client content.
Removed placeholder & link switches
compressed-pdas/client-library.mdx, compressed-pdas/*.mdx, resources/sdks/*.mdx, compressed-pdas/create-a-program-with-compressed-pdas.mdx
Deleted old placeholder MDX; updated many "Build a client" / Next Steps card hrefs to /client-library/client-guide; updated metadata for compressed-pdas/guides.mdx (title/description/sidebarTitle).
Client guide content
client-library/client-guide.mdx
Large new guide: setup, RPC examples (main/dev/local), V1/V2 address derivation, validity proofs, account/Merkle concepts, instruction construction, transaction assembly, full TS/Rust examples, debugging notes, UI elements and next steps.
Landing & SDK reference updates
intro-pages/landing.mdx, resources/sdks/client-development.mdx, resources/sdks/program-development.mdx
Landing copy adjusted (ZK proof phrasing, AI-search line removed/rewritten) and developer tools table added; SDK/resource cards updated to point at new guide and Program Guides.
System accounts snippet
snippets/compressed-pdas-system-accounts-list.mdx
Removed two rows (Noop Program & Invoking Program) and renumbered remaining table rows.
OpenAPI server URLs
openapi/*.yaml
Updated many OpenAPI specs to remove ?api-key=<api_key> query param from server URLs (mainnet/devnet endpoints); no schema/path changes.
.claude docs removed
.claude/CLAUDE.md, .claude/avoid.md, .claude/agents/*, .claude/commands/*, .claude/skills/*, .claude/tasks/README.md
Deleted numerous agent, skill, template, checklist, and command documentation files under .claude/.
VCS / submodule
mintlify-docs/docs
Submodule commit reference updated (pointer change only).
Gitignore
.gitignore
Added .claude/ to ignore list.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer (TS/Rust)
    participant SDK as Client SDK
    participant RPC as RPC Node
    participant Program as Compressed-PDAs Program
    participant Tree as Merkle / State
    participant Proof as Validity Verifier

    rect rgb(245,248,255)
      Dev->>SDK: build instruction(s) + validity proof(s)
      SDK->>RPC: send transaction
    end

    rect rgb(240,255,240)
      RPC->>Program: deliver transaction
      Program->>Tree: read merkle/state
      Program->>Proof: validate proof(s)
      alt proof valid
        Program-->>RPC: apply state changes
      else proof invalid
        Program-->>RPC: reject tx (error)
      end
      RPC-->>SDK: return tx result
      SDK-->>Dev: surface result
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • Mixed edits: many deletions (low effort) plus one large, content-rich MDX requiring careful review.
  • Pay attention to:
    • Code examples, imports and types in client-library/client-guide.mdx.
    • docs.json nav changes and all updated hrefs for routing/build correctness.
    • OpenAPI server URL changes and any auth implications in integration tests.
    • References to removed .claude files elsewhere in docs or CI.

"I hop through lines and stack the page,
Bits of proof and examples on my stage,
New client guides tucked soft and neat,
Old agent notes left behind my feet,
A twitch, a nibble — docs are now complete." 🐇✨

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 'Add client library guide' directly corresponds to the main change: adding a new client library guide file (client-library/client-guide.mdx) and updating navigation in docs.json to include this new page entry.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b35fd9f and 3a77b2d.

📒 Files selected for processing (26)
  • openapi/api.yaml (1 hunks)
  • openapi/getCompressedAccount.yaml (1 hunks)
  • openapi/getCompressedAccountBalance.yaml (1 hunks)
  • openapi/getCompressedAccountProof.yaml (1 hunks)
  • openapi/getCompressedAccountsByOwner.yaml (1 hunks)
  • openapi/getCompressedBalanceByOwner.yaml (1 hunks)
  • openapi/getCompressedMintTokenHolders.yaml (1 hunks)
  • openapi/getCompressedTokenAccountBalance.yaml (1 hunks)
  • openapi/getCompressedTokenAccountsByDelegate.yaml (1 hunks)
  • openapi/getCompressedTokenAccountsByOwner.yaml (1 hunks)
  • openapi/getCompressedTokenBalancesByOwner.yaml (1 hunks)
  • openapi/getCompressedTokenBalancesByOwnerV2.yaml (1 hunks)
  • openapi/getCompressionSignaturesForAccount.yaml (1 hunks)
  • openapi/getCompressionSignaturesForAddress.yaml (1 hunks)
  • openapi/getCompressionSignaturesForOwner.yaml (1 hunks)
  • openapi/getCompressionSignaturesForTokenOwner.yaml (1 hunks)
  • openapi/getIndexerHealth.yaml (1 hunks)
  • openapi/getIndexerSlot.yaml (1 hunks)
  • openapi/getLatestCompressionSignatures.yaml (1 hunks)
  • openapi/getLatestNonVotingSignatures.yaml (1 hunks)
  • openapi/getMultipleCompressedAccountProofs.yaml (1 hunks)
  • openapi/getMultipleCompressedAccounts.yaml (1 hunks)
  • openapi/getMultipleNewAddressProofs.yaml (1 hunks)
  • openapi/getMultipleNewAddressProofsV2.yaml (1 hunks)
  • openapi/getTransactionWithCompressionInfo.yaml (1 hunks)
  • openapi/getValidityProof.yaml (1 hunks)

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.

Copy link

@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

🧹 Nitpick comments (5)
client-library/README.mdx (5)

700-700: Fix hyphenation: "32 byte pubkeys" → "32-byte pubkeys".

Compound adjectives modifying a noun should be hyphenated.

Apply this diff:

- * Indices are included in instruction data, instead of 32 byte pubkeys.
+ * Indices are included in instruction data, instead of 32-byte pubkeys.

176-176: Remove duplicate word: "Starts a start a" → "Starts a".

Typo in the Rust Localnet section.

Apply this diff:

- Starts a start a single-node Solana cluster, an RPC node, and a prover node at ports 8899, 8784, and 3001.
+ Starts a single-node Solana cluster, an RPC node, and a prover node at ports 8899, 8784, and 3001.

1279-1279: Fix spelling: "feepayer" → "fee payer".

Use the two-word form for clarity in informal contexts.

Apply this diff:

- 1. **Pass program-specific accounts** as defined by your program's IDL (signer, feepayer).
+ 1. **Pass program-specific accounts** as defined by your program's IDL (signer, fee payer).

1262-1285: Step 7 shows only Rust code; consider adding TypeScript equivalent.

The "Instruction" step demonstrates building an instruction in Rust but omits the TypeScript equivalent, while other steps consistently show both languages. If instruction building is framework-independent and identical between languages, a clarifying note would help. If there's a meaningful TypeScript pattern, include it for completeness.


1287-1290: Step 8 "Send Transaction" is empty.

The final step contains no implementation guidance. Either provide guidance on submitting transactions (which will be framework/library-dependent), or remove the empty step. If intentional (to keep guide generic), consider a brief note explaining why transaction submission is omitted.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 24b238d and e9363df.

📒 Files selected for processing (2)
  • client-library/README.mdx (1 hunks)
  • docs.json (1 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/README.mdx

[grammar] ~700-~700: Use a hyphen to join words.
Context: ...luded in instruction data, instead of 32 byte pubkeys. * The indices point to the...

(QB_NEW_EN_HYPHEN)


[grammar] ~1279-~1279: Ensure spelling is correct
Context: ... defined by your program's IDL (signer, feepayer). 2. Add all remaining accounts fro...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🔇 Additional comments (2)
docs.json (1)

33-33: Navigation path correctly updated for the new README file.

The change from "client-library" to "client-library/README" properly aligns with the new file structure and Mintlify conventions for resolving README.mdx files in subdirectories.

client-library/README.mdx (1)

1-1327: Comprehensive and well-structured client library guide.

The documentation effectively covers the full workflow from installation through instruction building for both TypeScript and Rust. MDX formatting is clean, code examples are consistent and properly annotated, and the step-by-step progression is logical. Version pinning is clear (TS: 0.22.1-alpha.1, Rust: 0.16.0). Navigation updates in docs.json correctly reference the new file.

Copy link

@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

🧹 Nitpick comments (3)
client-library/README.mdx (3)

724-750: Consider clarifying the accounts array graphics and headings per previous review feedback.

The graphics at lines 724-750 show the account structure for Anchor and Native programs. However, the section headings and explanatory text could be clearer based on previous reviewer feedback:

  • The heading at line 724 "Array Anchor framework:" is grammatically awkward. Previous suggestion was "Accounts Array Anchor framework:" or similar.
  • The Native Programs section heading at line 740 could be more specific (e.g., "Instruction Accounts for Native Programs:").
  • The notation "(before)" at line 749 is unexplained. Clarify what it refers to (e.g., "before packing").

Consider restructuring these sections for better clarity, or elaborate on what each graphic illustrates.


1267-1284: Clarify Anchor-specific method references in the instruction building section.

Lines 1279-1284 reference Anchor-specific methods (.accounts() and .remainingAccounts()) in comments, but the code example shown (lines 1267-1277) is pure Rust using the Instruction struct directly, which doesn't use these methods.

This creates confusion about whether this guidance applies to Anchor programs, native programs, or both. Either:

  1. Provide separate examples for Anchor vs. native program patterns, or
  2. Clarify the context of these comments.

Additionally, line 1279 contains a spelling error: "feepayer" should be "fee payer" (two words).


1293-1327: Reconsider "Full Code Examples" section - currently provides setup, not examples.

The section heading at line 1293 ("Full Code Examples") promises complete working code examples, but the content (lines 1295-1327) provides CLI setup instructions instead. This mismatch may confuse users looking for end-to-end working programs.

Consider either:

  1. Renaming the section to "Local Testing Setup" to match the content, or
  2. Adding actual complete code examples showing a full create/update/burn workflow
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e9363df and 827b8a3.

📒 Files selected for processing (1)
  • client-library/README.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/README.mdx

[grammar] ~700-~700: Use a hyphen to join words.
Context: ...luded in instruction data, instead of 32 byte pubkeys. * The indices point to the...

(QB_NEW_EN_HYPHEN)


[grammar] ~1279-~1279: Ensure spelling is correct
Context: ... defined by your program's IDL (signer, feepayer). 2. Add all remaining accounts fro...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

Copy link

@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 (1)
client-library/README.mdx (1)

700-700: Hyphenate compound adjective for clarity.

Line 700 uses "32 byte pubkeys" but should hyphenate the compound adjective: "32-byte pubkeys".

-* Indices are included in instruction data, instead of 32 byte pubkeys.
+* Indices are included in instruction data, instead of 32-byte pubkeys.
🧹 Nitpick comments (1)
client-library/README.mdx (1)

303-308: Clarify the constraint on random tree usage.

The tip at lines 303–308 advises minimizing different trees but doesn't explicitly state a critical constraint: random trees should only be used when there are no input compressed accounts. This is easy to miss but crucial for developers to understand.

Consider making this constraint more explicit. For example:

  • When creating an account → use the address tree (not random, specific derivation required)
  • When updating/closing/burning an existing account → use its existing state tree (not random)
  • Only use random tree selection when you have no input compressed accounts to reference

Would you like me to generate clearer guidance text that explicitly states this constraint?

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 827b8a3 and ae42ef1.

📒 Files selected for processing (1)
  • client-library/README.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/README.mdx

[grammar] ~700-~700: Use a hyphen to join words.
Context: ...luded in instruction data, instead of 32 byte pubkeys. * The indices point to the...

(QB_NEW_EN_HYPHEN)


[grammar] ~1279-~1279: Ensure spelling is correct
Context: ... defined by your program's IDL (signer, feepayer). 2. Add all remaining accounts fro...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🔇 Additional comments (1)
client-library/README.mdx (1)

1-10: Excellent comprehensive structure and coverage.

The guide provides thorough, step-by-step coverage of the client library workflow with consistent TypeScript and Rust examples throughout. The use of tabs, tip boxes, and progressive disclosure makes complex concepts accessible. Documentation quality is high overall, with good cross-references and a logical progression from setup through instruction execution.

Copy link

@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: 1

♻️ Duplicate comments (1)
client-library/README.mdx (1)

700-700: Fix hyphenation in compound adjective: "32 byte" → "32-byte".

Line 700 uses the compound adjective "32 byte pubkeys," which requires a hyphen to properly modify the noun "pubkeys."

Apply this diff:

-* Indices are included in instruction data, instead of 32 byte pubkeys.
+* Indices are included in instruction data, instead of 32-byte pubkeys.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ae42ef1 and 032cf22.

📒 Files selected for processing (2)
  • client-library/README.mdx (1 hunks)
  • docs.json (3 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/README.mdx

[grammar] ~700-~700: Use a hyphen to join words.
Context: ...luded in instruction data, instead of 32 byte pubkeys. * The indices point to the...

(QB_NEW_EN_HYPHEN)

🔇 Additional comments (4)
docs.json (3)

16-16: Navigation updates are consistent with new file structure.

The renamed tab "Docs," updated page references with c-token/ prefix, and new client-library/README path all align correctly with the file organization. ✓

Also applies to: 21-22, 33-33


80-105: Footer updates add appropriate branding and partnership links.

The new footer sections ("Compressed by Light Protocol" and "Indexed by Helius") with their respective links provide clear attribution and partnership visibility. The added Discord social link completes the community channels.


38-48: Confirm the "Compressible" tab's file path is intentional.

Verification confirms that compressible/README does not exist in the repository, nor does the compressible/ directory exist. Determine whether this is a forward reference for an upcoming PR or if the path needs correction.

client-library/README.mdx (1)

1172-1188: Add TypeScript example to match the Tab pattern used in Step 6.

Step 6 (instruction_data section) uses <Tab> elements to provide both TypeScript and Rust implementations. The Instruction section (lines 1176–1186) breaks this pattern by showing only Rust. Add a TypeScript tab demonstrating how to construct an Instruction using Anchor's method or builder approach to maintain consistency with the documented pattern.

Copy link

@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: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 032cf22 and b25877e.

📒 Files selected for processing (1)
  • client-library/README.mdx (1 hunks)
🧰 Additional context used
🪛 GitHub Check: Mintlify Validation (luminouslabs-cc5545c6) - vale-spellcheck
client-library/README.mdx

[warning] 17-17: client-library/README.mdx#L17
Did you really mean 'Solana'?


[warning] 64-64: client-library/README.mdx#L64
Did you really mean 'validator'?


[warning] 64-64: client-library/README.mdx#L64
Did you really mean 'Solana'?


[warning] 67-67: client-library/README.mdx#L67
Did you really mean 'devnet'?


[warning] 67-67: client-library/README.mdx#L67
Did you really mean 'mainnet'?


[warning] 69-69: client-library/README.mdx#L69
Did you really mean 'Solana's'?


[warning] 95-95: client-library/README.mdx#L95
Did you really mean 'Solana'?


[warning] 99-99: client-library/README.mdx#L99
Did you really mean 'Merkle'?


[warning] 111-111: client-library/README.mdx#L111
Did you really mean 'Solana'?


[warning] 114-114: client-library/README.mdx#L114
Did you really mean 'devnet'?


[warning] 114-114: client-library/README.mdx#L114
Did you really mean 'mainnet'?


[warning] 172-172: client-library/README.mdx#L172
Did you really mean 'Solana'?


[warning] 197-197: client-library/README.mdx#L197
Did you really mean 'validator'?


[warning] 197-197: client-library/README.mdx#L197
Did you really mean 'Solana'?


[warning] 206-206: client-library/README.mdx#L206
Did you really mean 'Merkle'?


[warning] 212-212: client-library/README.mdx#L212
Did you really mean 'Merkle'?


[warning] 212-212: client-library/README.mdx#L212
Did you really mean 'Merkle'?


[warning] 216-216: client-library/README.mdx#L216
Did you really mean 'Devnet'?


[warning] 284-284: client-library/README.mdx#L284
Did you really mean 'Reinit'?


[warning] 304-304: client-library/README.mdx#L304
Did you really mean 'pubkeys'?


[warning] 307-307: client-library/README.mdx#L307
Did you really mean 'Merkle'?


[warning] 307-307: client-library/README.mdx#L307
Did you really mean 'pubkey'?


[warning] 308-308: client-library/README.mdx#L308
Did you really mean 'pubkey'?


[warning] 308-308: client-library/README.mdx#L308
Did you really mean 'Merkle'?


[warning] 309-309: client-library/README.mdx#L309
Did you really mean 'Merkle'?


[warning] 312-312: client-library/README.mdx#L312
Did you really mean 'devnet'?


[warning] 339-339: client-library/README.mdx#L339
Did you really mean 'PDAs'?


[warning] 340-340: client-library/README.mdx#L340
Did you really mean 'PDAs'?


[warning] 428-428: client-library/README.mdx#L428
Did you really mean 'pubkey'?


[warning] 471-471: client-library/README.mdx#L471
Did you really mean 'Helius'?

Copy link

@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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.windsurf/rules/mint.md (1)

1-130: Fix typo in working relationship section.

Line 29 uses "inferrance" but should use "inference" (the act of inferring; a conclusion drawn from evidence).

Apply this diff:

-If you are making an inferrance, stop and ask me for confirmation or say that you need more information
+If you are making an inference, stop and ask me for confirmation or say that you need more information
🧹 Nitpick comments (7)
client-library/README.mdx (1)

1334-1357: Instruction assembly example lacks TypeScript parallel.

The section provides only a Rust example (lines 1345-1355), breaking the TypeScript/Rust parallel that's maintained throughout earlier steps. Consider adding a TypeScript Instruction construction example for consistency and completeness.

.windsurf/workflows/ask-deepwiki.md (1)

1-114: Address markdown formatting violations.

The file has multiple markdownlint style violations (per static analysis):

  • Heading style: Using atx headings (#) instead of setext (underline) format
  • List indentation: Using 4 spaces instead of 2
  • Bare URL at line 34: Should be wrapped in markdown link syntax

If your project enforces these standards, apply fixes. Otherwise, these are cosmetic and can be deferred. Given the "Chill" review stance, this is territory.

Would you like me to generate a corrected version matching your preferred markdown style?

mintlify-docs/quick-reference/api-reference/endpoint/webhook.mdx (1)

1-4: Clarify the webhook endpoint title.

The title "New Plant" is vague and doesn't clearly indicate this is a webhook endpoint. Consider a more descriptive title such as "New Plant Webhook" or "Plant Webhook" to improve documentation clarity.

Does the title accurately reflect the endpoint type for end users browsing the API documentation?

mintlify-docs/quick-reference/quickstart.mdx (1)

16-16: Use hyphen for compound adjective.

Line 16 should read "three-step quickstart guide" (hyphenate compound adjectives that precede a noun).

Apply this diff:

-  Follow our three step quickstart guide.
+  Follow our three-step quickstart guide.
mintlify-docs/quick-reference/essentials/images.mdx (1)

16-16: Minor style: Capitalize "Markdown" as proper noun.

Line 16 references "markdown syntax" but Markdown is a proper noun and should be capitalized consistently with the file title and Mintlify documentation conventions.

-The [markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images
+The [Markdown syntax](https://www.markdownguide.org/basic-syntax/#images) lets you add images
mintlify-docs/quick-reference/essentials/markdown.mdx (1)

31-31: Minor style: Capitalize "Markdown" consistently.

Line 31 references "markdown formatting" but should use the proper noun capitalization "Markdown formatting" for consistency with the file title and documentation standards.

-We support most markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
+We support most Markdown formatting. Simply add `**`, `_`, or `~` around text to format it.
mintlify-docs/quick-reference/api-reference/openapi.json (1)

41-46: Consider adding maxItems constraint to array response (optional best practice).

The GET /plants response returns an unbounded array of Plant objects (lines 41-46). While this is common in demo specifications, OpenAPI best practices recommend defining a maxItems constraint to document API expectations and prevent potential performance issues.

This is a minor refinement for a demo spec. If your actual backend has limits, consider adding:

"schema": {
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Plant"
  },
  "maxItems": 100
}

Alternatively, the limit query parameter (lines 25-34) effectively serves this purpose by allowing clients to control response size.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b25877e and 359e792.

⛔ Files ignored due to path filters (2)
  • images/deepwiki-logo.svg is excluded by !**/*.svg
  • images/windsurf-logo.svg is excluded by !**/*.svg
📒 Files selected for processing (32)
  • .windsurf/rules/mint.md (1 hunks)
  • .windsurf/workflows/ask-deepwiki.md (1 hunks)
  • api-reference-overview.mdx (1 hunks)
  • api-reference/links.mdx (1 hunks)
  • client-library/README.mdx (1 hunks)
  • compressed-token.mdx (1 hunks)
  • docs.json (3 hunks)
  • light-client.mdx (1 hunks)
  • light-program-test.mdx (1 hunks)
  • light-sdk.mdx (1 hunks)
  • mintlify-docs/docs (1 hunks)
  • mintlify-docs/quick-reference/ai-tools/claude-code.mdx (1 hunks)
  • mintlify-docs/quick-reference/ai-tools/cursor.mdx (1 hunks)
  • mintlify-docs/quick-reference/ai-tools/windsurf.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/endpoint/create.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/endpoint/delete.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/endpoint/get.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/endpoint/webhook.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/introduction.mdx (1 hunks)
  • mintlify-docs/quick-reference/api-reference/openapi.json (1 hunks)
  • mintlify-docs/quick-reference/development.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/code.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/images.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/markdown.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/navigation.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/reusable-snippets.mdx (1 hunks)
  • mintlify-docs/quick-reference/essentials/settings.mdx (1 hunks)
  • mintlify-docs/quick-reference/index.mdx (1 hunks)
  • mintlify-docs/quick-reference/quickstart.mdx (1 hunks)
  • mintlify-docs/quick-reference/table-styling.md (1 hunks)
  • mintlify-docs/snippets/snippet-intro.mdx (1 hunks)
  • stateless-js.mdx (1 hunks)
✅ Files skipped from review due to trivial changes (6)
  • mintlify-docs/quick-reference/ai-tools/claude-code.mdx
  • compressed-token.mdx
  • mintlify-docs/quick-reference/essentials/code.mdx
  • mintlify-docs/quick-reference/essentials/navigation.mdx
  • mintlify-docs/docs
  • mintlify-docs/quick-reference/essentials/settings.mdx
🧰 Additional context used
🪛 Checkov (3.2.334)
mintlify-docs/quick-reference/api-reference/openapi.json

[medium] 41-46: Ensure that arrays have a maximum number of items

(CKV_OPENAPI_21)

🪛 GitHub Check: Mintlify Validation (luminouslabs-cc5545c6) - vale-spellcheck
client-library/README.mdx

[warning] 17-17: client-library/README.mdx#L17
Did you really mean 'Solana'?


[warning] 64-64: client-library/README.mdx#L64
Did you really mean 'validator'?


[warning] 64-64: client-library/README.mdx#L64
Did you really mean 'Solana'?


[warning] 67-67: client-library/README.mdx#L67
Did you really mean 'devnet'?


[warning] 67-67: client-library/README.mdx#L67
Did you really mean 'mainnet'?


[warning] 69-69: client-library/README.mdx#L69
Did you really mean 'Solana's'?


[warning] 99-99: client-library/README.mdx#L99
Did you really mean 'Solana'?


[warning] 108-108: client-library/README.mdx#L108
Did you really mean 'Merkle'?


[warning] 120-120: client-library/README.mdx#L120
Did you really mean 'Solana'?


[warning] 123-123: client-library/README.mdx#L123
Did you really mean 'devnet'?


[warning] 123-123: client-library/README.mdx#L123
Did you really mean 'mainnet'?


[warning] 181-181: client-library/README.mdx#L181
Did you really mean 'Solana'?


[warning] 220-220: client-library/README.mdx#L220
Did you really mean 'validator'?


[warning] 220-220: client-library/README.mdx#L220
Did you really mean 'Solana'?


[warning] 229-229: client-library/README.mdx#L229
Did you really mean 'Merkle'?


[warning] 235-235: client-library/README.mdx#L235
Did you really mean 'Merkle'?


[warning] 235-235: client-library/README.mdx#L235
Did you really mean 'Merkle'?


[warning] 287-287: client-library/README.mdx#L287
Did you really mean 'Devnet'?


[warning] 309-309: client-library/README.mdx#L309
Did you really mean 'Reinit'?


[warning] 327-327: client-library/README.mdx#L327
Did you really mean 'pubkeys'?


[warning] 330-330: client-library/README.mdx#L330
Did you really mean 'Merkle'?


[warning] 330-330: client-library/README.mdx#L330
Did you really mean 'pubkey'?


[warning] 331-331: client-library/README.mdx#L331
Did you really mean 'pubkey'?


[warning] 331-331: client-library/README.mdx#L331
Did you really mean 'Merkle'?


[warning] 332-332: client-library/README.mdx#L332
Did you really mean 'Merkle'?

api-reference-overview.mdx

[warning] 3-3: api-reference-overview.mdx#L3
Did you really mean 'SDKs'?


[warning] 14-14: api-reference-overview.mdx#L14
Did you really mean 'Solana'?

api-reference/links.mdx

[warning] 2-2: api-reference/links.mdx#L2
Did you really mean 'SDKs'?


[warning] 3-3: api-reference/links.mdx#L3
Did you really mean 'SDKs'?


[warning] 14-14: api-reference/links.mdx#L14
Did you really mean 'Solana'?

🪛 Gitleaks (8.29.0)
mintlify-docs/quick-reference/ai-tools/cursor.mdx

[high] 127-129: Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource.

(curl-auth-header)

🪛 LanguageTool
mintlify-docs/quick-reference/api-reference/endpoint/get.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: 'Get Plants' openapi: 'GET /plants' ---

(QB_NEW_DE)

mintlify-docs/quick-reference/index.mdx

[grammar] ~16-~16: Use a hyphen to join words.
Context: ...start" horizontal > Follow our three step quickstart guide. ## Make ...

(QB_NEW_EN_HYPHEN)

.windsurf/rules/mint.md

[grammar] ~29-~29: Ensure spelling is correct
Context: ...uld be valuable. - If you are making an inferrance, stop and ask me for confirmation or sa...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[style] ~46-~46: To elevate your writing, try using a synonym here.
Context: ...e successful. Too much content makes it hard to find what people are looking for. To...

(HARD_TO)

mintlify-docs/quick-reference/essentials/markdown.mdx

[uncategorized] ~31-31: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...p> ## Text formatting We support most markdown formatting. Simply add **, _, or `
...

(MARKDOWN_NNP)

client-library/README.mdx

[grammar] ~960-~960: Ensure spelling is correct
Context: ...`` ### Tree Accounts Depending on your instruction...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

light-client.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "light-client" url: "https://docs.rs/light-client/latest/light_client/" ---

(QB_NEW_DE)

light-program-test.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "light-program-test" url: "https://docs.rs/light-program-test/latest/light_program_test/" ---

(QB_NEW_DE)

light-sdk.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "light-sdk" url: "https://docs.rs/light-sdk/latest/light_sdk/" ---

(QB_NEW_DE)

mintlify-docs/quick-reference/api-reference/endpoint/webhook.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: 'New Plant' openapi: 'WEBHOOK /plant/webhook' ---

(QB_NEW_DE)

mintlify-docs/quick-reference/essentials/images.mdx

[uncategorized] ~16-~16: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ... /> ## Image ### Using Markdown The [markdown syntax](https://www.markdownguide.org/b...

(MARKDOWN_NNP)

stateless-js.mdx

[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "stateless.js" url: "https://lightprotocol.github.io/light-protocol/stateless.js/index.html" ---

(QB_NEW_DE)

🪛 markdownlint-cli2 (0.18.1)
.windsurf/workflows/ask-deepwiki.md

15-15: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


31-31: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


34-34: Bare URL used

(MD034, no-bare-urls)


36-36: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


37-37: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


39-39: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


40-40: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


41-41: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


42-42: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


43-43: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


45-45: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


53-53: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


57-57: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


76-76: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


82-82: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


88-88: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


95-95: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


100-100: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


106-106: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)


111-111: Heading style
Expected: setext; Actual: atx

(MD003, heading-style)

🔇 Additional comments (32)
mintlify-docs/snippets/snippet-intro.mdx (1)

1-4: LGTM!

This concise DRY principle snippet appropriately emphasizes the importance of reusable content in documentation. It will serve well as an imported component.

mintlify-docs/quick-reference/table-styling.md (1)

1-39: LGTM!

Clear, practical guidance on Tailwind-based table styling. The explanation of why inline styles are problematic and the concrete example make this a useful quick-reference addition.

client-library/README.mdx (7)

1-224: Prerequisites section is comprehensive and well-structured.

Clear separation of TypeScript and Rust setup paths, with appropriate links to API documentation. RPC environment setup (mainnet/devnet/localnet) is well-explained with working examples for both languages.


226-350: Tree configuration guidance is clear and comprehensive.

V1/V2 distinction is well-explained, tree requirement matrix is accurate, and the accordion explaining TreeInfo structure adds helpful context. Best practices guidance about minimizing tree variety per transaction is valuable.


352-489: Address derivation guidance is clear and complete.

V1/V2 distinction is evident, and the important reminder about using the same address tree for all operations is emphasized appropriately.


491-732: Validity proof guidance is thorough and practical.

Clear distinction between create (non-inclusion proof) and update operations (existence proof). Combined proof optimization section with concrete circuit capacity tables is especially valuable. Example showing create + update in one proof demonstrates real-world optimization.


734-1061: Accounts configuration guidance is comprehensive and well-illustrated.

The PackedAccounts visual diagram clarifies account layout. Tree account requirement tables for V1/V2 are accurate. The accordion explaining Light System accounts provides good reference material without overwhelming the main flow.


1063-1332: Instruction data guidance is comprehensive and operation-specific.

Each operation (create, update, close, reinit, burn) has clear code examples and explanatory steps. The distinction between proof types and tree account requirements for each operation is well-documented.


1365-1630: Full code examples are comprehensive and well-integrated.

Both TypeScript and Rust examples follow the step-by-step flow of the guide and show complete, executable workflows. The reference to GitHub for additional operation examples and debugging resources is appropriate.

mintlify-docs/quick-reference/essentials/reusable-snippets.mdx (1)

1-110: LGTM!

Well-structured guide showing three patterns for snippet reuse (default export, variables, components). The warning about MDX compilation in arrow functions is important and appropriately placed.

mintlify-docs/quick-reference/ai-tools/windsurf.mdx (1)

1-96: LGTM!

Clear setup instructions with well-structured embedded workspace rules. Aligns with the mint.md governance approach and provides actionable guidance for Windsurf configuration in documentation workflows.

mintlify-docs/quick-reference/ai-tools/cursor.mdx (1)

127-129: No changes needed—placeholder is already explicit.

The cURL example at lines 127-129 already uses YOUR_API_KEY as a clear, recognizable placeholder following standard documentation conventions. Changing it to YOUR_API_KEY_HERE provides no meaningful improvement and is unnecessary. The current format is unambiguous and appropriate.

Likely an incorrect or invalid review comment.

stateless-js.mdx (1)

1-4: LGTM!

Frontmatter is correctly structured with a valid external documentation link. The static analysis warning is a false positive.

light-client.mdx (1)

1-4: LGTM!

Frontmatter is correctly structured with a valid docs.rs reference. The static analysis warning is a false positive.

mintlify-docs/quick-reference/api-reference/endpoint/delete.mdx (1)

1-4: LGTM!

Frontmatter is correctly formatted and consistent with the OpenAPI endpoint documentation pattern.

light-sdk.mdx (1)

1-4: LGTM!

Frontmatter is correctly structured with a valid docs.rs reference. Consistent with other SDK documentation files.

mintlify-docs/quick-reference/index.mdx (1)

1-97: LGTM!

The introduction page is well-structured with clear sections, helpful card navigation, and relevant documentation links. Content is comprehensive and user-friendly.

mintlify-docs/quick-reference/api-reference/endpoint/get.mdx (1)

1-4: LGTM!

Frontmatter is correctly formatted and consistent with the OpenAPI endpoint documentation pattern.

light-program-test.mdx (1)

1-4: LGTM!

Minimal frontmatter correctly references the external Rust documentation. The static analysis warning is a false positive.

mintlify-docs/quick-reference/api-reference/endpoint/create.mdx (1)

1-3: LGTM!

Endpoint metadata correctly structured with OpenAPI reference. Aligns with the API documentation pattern.

mintlify-docs/quick-reference/essentials/images.mdx (1)

1-59: Well-structured documentation.

The guide clearly explains image usage with practical examples, file size constraints, and hosting recommendations. The iframe and embed sections provide good context for advanced HTML usage.

mintlify-docs/quick-reference/api-reference/introduction.mdx (1)

1-33: LGTM!

Clear introduction explaining both OpenAPI and MDX documentation approaches. The authentication example is well-presented. Static analysis warnings (SDKs, Solana) are false positives—these are legitimate technical terms.

api-reference-overview.mdx (1)

1-52: LGTM!

Well-organized overview with clear card descriptions for each library. The TypeScript/JavaScript and Rust sections are properly structured. Static analysis warnings are false positives.

Note: This file is very similar to api-reference/links.mdx. Confirm that both are needed for the navigation/routing structure you intend.

api-reference/links.mdx (1)

1-52: Duplicate content detected.

This file is nearly identical to api-reference-overview.mdx with the same CardGroups and library descriptions. Only the title differs slightly ("Overview to Libraries and SDKs" vs "Overview").

Confirm whether both files are intentionally duplicated for different navigation contexts, or if one should be consolidated.

mintlify-docs/quick-reference/essentials/markdown.mdx (1)

1-88: Comprehensive Markdown guide.

Excellent coverage of formatting, linking, blockquotes, and LaTeX integration with clear examples throughout.

mintlify-docs/quick-reference/development.mdx (2)

49-55: Verify CLI update command syntax.

Line 54 shows npm mint update which is not standard npm command syntax. Verify the correct command for updating the Mintlify CLI.

Expected formats would be one of:

  • npm update -g mint
  • npm install -g mint@latest
  • mint update (if mint is a standalone CLI)

Please confirm the correct command.


1-94: Comprehensive development guide.

Clear instructions for local setup, custom ports, link validation, and troubleshooting. The prerequisites and step-by-step guide are well-structured. Address the CLI update command syntax above, and the guide is solid.

docs.json (4)

39-50: Verify nested group structure in API Reference section.

The "Overview" group is nested as a child page object within the "API Reference" group (lines 39-50). This nested "group" structure is non-standard for Mintlify's typical pages array, which usually contains page references or top-level group objects. Verify that this nesting pattern is compatible with your Mintlify configuration and rendering engine.

If Mintlify expects flat groups, consider restructuring this as:

"pages": [
  "api-reference-overview",
  {
    "group": "stateless-js",
    "pages": ["stateless-js"]
  },
  // ... etc
]

Or confirm that your version of Mintlify supports nested groups.


87-98: Approve DeepWiki contextual option addition.

The new "Open DeepWiki" contextual option (lines 87-98) is well-structured with proper icon reference, dynamic context passing, and description. This provides useful debugging assistance to users.


111-112: Approve footer social links update.

Adding Discord link to footer socials alongside existing X and GitHub links improves community channel discoverability.


114-133: Approve new footer link sections.

The new footer sections "Compressed by Light Protocol" and "Indexed by Helius" with their respective links are properly structured and enhance footer navigation clarity.

mintlify-docs/quick-reference/api-reference/openapi.json (1)

1-216: LGTM — OpenAPI specification is well-structured.

The OpenAPI 3.1.0 specification for the Plant Store API is comprehensive and properly structured:

  • Clear paths with GET, POST, DELETE operations
  • Proper request/response definitions with schema references
  • Webhook support for event notifications
  • Bearer authentication properly configured
  • Schema composition using allOf for inheritance

The spec integrates well with the documentation structure referenced in docs.json.

Co-authored-by: ananas-block <58553958+ananas-block@users.noreply.github.com>
Copy link

@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: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1be6795 and 582f97c.

📒 Files selected for processing (1)
  • client-library/client-guide.mdx (1 hunks)
🧰 Additional context used
🪛 GitHub Check: Mintlify Validation (luminouslabs-cc5545c6) - vale-spellcheck
client-library/client-guide.mdx

[warning] 10-10: client-library/client-guide.mdx#L10
Did you really mean 'Solana'?


[warning] 94-94: client-library/client-guide.mdx#L94
Did you really mean 'Solana's'?


[warning] 120-120: client-library/client-guide.mdx#L120
Did you really mean 'Solana'?


[warning] 120-120: client-library/client-guide.mdx#L120
Did you really mean 'validator'?


[warning] 141-141: client-library/client-guide.mdx#L141
Did you really mean 'Helius'?


[warning] 191-191: client-library/client-guide.mdx#L191
Did you really mean 'Solana'?


[warning] 284-284: client-library/client-guide.mdx#L284
Did you really mean 'PDAs'?


[warning] 285-285: client-library/client-guide.mdx#L285
Did you really mean 'PDAs'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'Merkle'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'pubkeys'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'Merkle'?


[warning] 302-302: client-library/client-guide.mdx#L302
Did you really mean 'Helius'?


[warning] 323-323: client-library/client-guide.mdx#L323
Did you really mean 'pubkeys'?


[warning] 324-324: client-library/client-guide.mdx#L324
Did you really mean 'Merkle'?


[warning] 351-351: client-library/client-guide.mdx#L351
Did you really mean 'pubkeys'?


[warning] 387-387: client-library/client-guide.mdx#L387
Did you really mean 'pubkey'?


[warning] 387-387: client-library/client-guide.mdx#L387
Did you really mean 'pubkey'?


[warning] 414-414: client-library/client-guide.mdx#L414
Did you really mean 'pubkeys'?


[warning] 431-431: client-library/client-guide.mdx#L431
Did you really mean 'Merkle'?


[warning] 486-486: client-library/client-guide.mdx#L486
Did you really mean 'pubkeys'?


[warning] 487-487: client-library/client-guide.mdx#L487
Did you really mean 'pubkeys'?


[warning] 514-514: client-library/client-guide.mdx#L514
Did you really mean 'pubkeys'?


[warning] 514-514: client-library/client-guide.mdx#L514
Did you really mean 'pubkey'?


[warning] 531-531: client-library/client-guide.mdx#L531
Did you really mean 'Merkle'?


[warning] 533-533: client-library/client-guide.mdx#L533
Did you really mean 'pubkeys'?


[warning] 534-534: client-library/client-guide.mdx#L534
Did you really mean 'pubkeys'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'Pre'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'PDAs'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'CPIs'?


[warning] 560-560: client-library/client-guide.mdx#L560
Did you really mean 'pre'?


<Step>
## Accounts
In your instruction data, you reference in which [Merkle tree](/learn/core-concepts/merkle-trees-validity-proofs#state-trees) compressed accounts are or will be stored and other accounts required to interact with the <Tooltip tip="The system program enforces the compressed account layout with ownership and sum checks and verifies the validity of your input state. It is also invoked to create/write to compressed accounts and PDAs.">Light System Program</Tooltip>.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
In your instruction data, you reference in which [Merkle tree](/learn/core-concepts/merkle-trees-validity-proofs#state-trees) compressed accounts are or will be stored and other accounts required to interact with the <Tooltip tip="The system program enforces the compressed account layout with ownership and sum checks and verifies the validity of your input state. It is also invoked to create/write to compressed accounts and PDAs.">Light System Program</Tooltip>.
In your instruction data, you reference in which [Merkle tree](/learn/core-concepts/merkle-trees-validity-proofs#state-trees) compressed accounts are or will be stored. Usage of compressed accounts requires additional accounts such as the <Tooltip tip="The system program enforces the compressed account layout with ownership and sum checks and verifies the validity of your input state. It is also invoked to create/write to compressed accounts and PDAs.">Light System Program</Tooltip>.

Copy link

@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: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 582f97c and 393e7a5.

📒 Files selected for processing (2)
  • client-library/client-guide.mdx (1 hunks)
  • snippets/compressed-pdas-system-accounts-list.mdx (1 hunks)
🧰 Additional context used
🪛 GitHub Check: Mintlify Validation (luminouslabs-cc5545c6) - vale-spellcheck
client-library/client-guide.mdx

[warning] 10-10: client-library/client-guide.mdx#L10
Did you really mean 'Solana'?


[warning] 94-94: client-library/client-guide.mdx#L94
Did you really mean 'Solana's'?


[warning] 120-120: client-library/client-guide.mdx#L120
Did you really mean 'Solana'?


[warning] 120-120: client-library/client-guide.mdx#L120
Did you really mean 'validator'?


[warning] 141-141: client-library/client-guide.mdx#L141
Did you really mean 'Helius'?


[warning] 191-191: client-library/client-guide.mdx#L191
Did you really mean 'Solana'?


[warning] 284-284: client-library/client-guide.mdx#L284
Did you really mean 'PDAs'?


[warning] 285-285: client-library/client-guide.mdx#L285
Did you really mean 'PDAs'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'Merkle'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'pubkeys'?


[warning] 289-289: client-library/client-guide.mdx#L289
Did you really mean 'Merkle'?


[warning] 302-302: client-library/client-guide.mdx#L302
Did you really mean 'Helius'?


[warning] 323-323: client-library/client-guide.mdx#L323
Did you really mean 'pubkeys'?


[warning] 324-324: client-library/client-guide.mdx#L324
Did you really mean 'Merkle'?


[warning] 351-351: client-library/client-guide.mdx#L351
Did you really mean 'pubkeys'?


[warning] 387-387: client-library/client-guide.mdx#L387
Did you really mean 'pubkey'?


[warning] 387-387: client-library/client-guide.mdx#L387
Did you really mean 'pubkey'?


[warning] 414-414: client-library/client-guide.mdx#L414
Did you really mean 'pubkeys'?


[warning] 431-431: client-library/client-guide.mdx#L431
Did you really mean 'Merkle'?


[warning] 486-486: client-library/client-guide.mdx#L486
Did you really mean 'pubkeys'?


[warning] 487-487: client-library/client-guide.mdx#L487
Did you really mean 'pubkeys'?


[warning] 514-514: client-library/client-guide.mdx#L514
Did you really mean 'pubkeys'?


[warning] 514-514: client-library/client-guide.mdx#L514
Did you really mean 'pubkey'?


[warning] 533-533: client-library/client-guide.mdx#L533
Did you really mean 'Merkle'?


[warning] 535-535: client-library/client-guide.mdx#L535
Did you really mean 'pubkeys'?


[warning] 557-557: client-library/client-guide.mdx#L557
Did you really mean 'Pre'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'PDAs'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'CPIs'?


[warning] 558-558: client-library/client-guide.mdx#L558
Did you really mean 'pre'?


[warning] 559-559: client-library/client-guide.mdx#L559
Did you really mean 'pinocchio'?

🔇 Additional comments (4)
snippets/compressed-pdas-system-accounts-list.mdx (1)

35-35: Row indices correctly updated after removal.

The table renumbering is consistent with removing two rows (Noop Program and Invoking Program). Account Compression Authority (#5) and System Program (#6) are properly sequenced.

Also applies to: 43-43

client-library/client-guide.mdx (3)

1-6: File naming discrepancy with PR objectives.

The PR objectives reference client-library/README.mdx, but the actual file is client-library/client-guide.mdx. Verify this naming aligns with the intended navigation structure in docs.json and that import statements referencing this file (line 8) are correct.


46-1063: Core documentation structure and content is comprehensive and well-organized.

The step-by-step workflow (Setup through Send Transaction) progresses logically and provides solid guidance. TabSection patterns are consistent, code examples are clear, and the coverage of both TypeScript and Rust (where present) is thorough. Apart from the three critical gaps already noted (missing compressed-token version, missing TypeScript in Step 6, empty Step 7), the documentation quality is high.


1094-1359: Full code examples are comprehensive and production-quality.

Both TypeScript and Rust examples demonstrate complete, working workflows with proper imports, error handling, and test assertions. These serve as excellent reference implementations for developers completing the step-by-step guide.

Comment on lines +57 to +90
<Tabs>
<Tab title="npm">

```bash
npm install --save \
@lightprotocol/stateless.js@0.22.1-alpha.1 \
@lightprotocol/compressed-token@0.22.1-alpha.1 \
@solana/web3.js
```

</Tab>

<Tab title="yarn">

```bash
yarn add \
@lightprotocol/stateless.js@0.22.1-alpha.1 \
@lightprotocol/compressed-token@0.22.1-alpha.1 \
@solana/web3.js
```

</Tab>

<Tab title="pnpm">

```bash
pnpm add \
@lightprotocol/stateless.js@0.22.1-alpha.1 \
@lightprotocol/compressed-token@0.22.1-alpha.1 \
@solana/web3.js
```

</Tab>
</Tabs>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Unpublished package version @lightprotocol/compressed-token@0.22.1-alpha.1 will cause installation failures.

The npm registry confirms @lightprotocol/compressed-token@0.22.1-alpha.1 does not exist (404). While @lightprotocol/stateless.js@0.22.1-alpha.1 is valid, the compressed-token package must be updated to the published version 0.22.0 in all three package manager tabs (npm, yarn, pnpm).

 <Tab title="npm">

 ```bash
 npm install --save \
     @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
     @solana/web3.js
yarn add \
    @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
    @solana/web3.js
pnpm add \
    @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
    @solana/web3.js
```
🤖 Prompt for AI Agents
In client-library/client-guide.mdx around lines 57 to 90, the install
instructions reference an unpublished package version
@lightprotocol/compressed-token@0.22.1-alpha.1 which causes install failures;
update all three package-manager code blocks (npm, yarn, pnpm) to use the
published version @lightprotocol/compressed-token@0.22.0 so the commands
succeed, ensuring the other packages and versions remain unchanged.

Comment on lines +1088 to +1092
<Step>
## Send Transaction

</Step>
</Steps>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Send Transaction step is empty—leaves end-to-end workflow incomplete.

Step 7 provides no code examples or guidance for the final transaction submission step. Add minimal, copy-paste-ready implementations for TypeScript and Rust:

 <Step>
 ## Send Transaction

+<Tabs>
+<Tab title="Typescript">
+
+```typescript
+const tx = new web3.Transaction();
+tx.add(instruction);
+tx.recentBlockhash = (await rpc.getRecentBlockhash()).blockhash;
+tx.sign(signer);
+
+const sig = await rpc.sendTransaction(tx, [signer]);
+await confirmTx(rpc, sig);
+console.log("Transaction confirmed:", sig);
+```
+
+</Tab>
+
+<Tab title="Rust">
+
+```rust
+let sig = rpc
+    .create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer])
+    .await?;
+
+println!("Transaction confirmed: {}", sig);
+```
+
+</Tab>
+</Tabs>
+
 </Step>
🤖 Prompt for AI Agents
In client-library/client-guide.mdx around lines 1088 to 1092, the "Send
Transaction" step is empty and needs minimal, copy-paste-ready TypeScript and
Rust examples; add a TypeScript snippet that creates a Transaction, adds the
instruction, sets recentBlockhash, signs with the signer, sends via
rpc.sendTransaction and awaits confirmation, and add a Rust snippet that calls a
helper like create_and_send_transaction (or the equivalent RPC helper) with the
instruction and payer to send and print the returned signature.

- Remove empty Key Points section
- Simplify combined proof advantage description
- Reorganize accounts section with clearer accordion structure
- Update system accounts list from 8 to 6 accounts
- Remove Noop Program and Invoking Program entries
- Clarify PackedAccounts purpose and instruction structure
Copy link

@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: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 393e7a5 and d4ac06e.

📒 Files selected for processing (1)
  • client-library/client-guide.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/client-guide.mdx

[grammar] ~537-~537: Use a hyphen to join words.
Context: ...pend PackedAccounts after your program specific accounts and in anchor in `rema...

(QB_NEW_EN_HYPHEN)

Copy link

@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: 3

♻️ Duplicate comments (1)
client-library/client-guide.mdx (1)

537-537: Use hyphen to join compound modifier.

Change "program specific" to "program-specific" before the noun "accounts":

-We recommend to append `PackedAccounts` after your program specific accounts and in anchor in `remaining_accounts`.
+We recommend to append `PackedAccounts` after your program-specific accounts and in anchor in `remaining_accounts`.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d4ac06e and 7bcb253.

📒 Files selected for processing (1)
  • client-library/client-guide.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
client-library/client-guide.mdx

[grammar] ~537-~537: Use a hyphen to join words.
Context: ...pend PackedAccounts after your program specific accounts and in anchor in `rema...

(QB_NEW_EN_HYPHEN)

Copy link

@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 (1)
client-library/client-guide.mdx (1)

606-606: Use hyphen to join compound modifier.

Use program-specific instead of program specific before the noun "accounts".

-We recommend to append `PackedAccounts` after your program specific accounts and in anchor in `remaining_accounts`.
+We recommend to append `PackedAccounts` after your program-specific accounts and in anchor in `remaining_accounts`.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7bcb253 and b35fd9f.

📒 Files selected for processing (11)
  • client-library/client-guide.mdx (1 hunks)
  • compressed-pdas/create-a-program-with-compressed-pdas.mdx (1 hunks)
  • compressed-pdas/guides.mdx (1 hunks)
  • compressed-pdas/guides/how-to-burn-compressed-accounts.mdx (1 hunks)
  • compressed-pdas/guides/how-to-close-compressed-accounts.mdx (1 hunks)
  • compressed-pdas/guides/how-to-create-compressed-accounts.mdx (1 hunks)
  • compressed-pdas/guides/how-to-reinitialize-compressed-accounts.mdx (1 hunks)
  • compressed-pdas/guides/how-to-update-compressed-accounts.mdx (1 hunks)
  • compressed-pdas/program-examples.mdx (2 hunks)
  • resources/sdks/client-development.mdx (1 hunks)
  • resources/sdks/program-development.mdx (1 hunks)
✅ Files skipped from review due to trivial changes (3)
  • compressed-pdas/guides/how-to-burn-compressed-accounts.mdx
  • compressed-pdas/guides/how-to-close-compressed-accounts.mdx
  • compressed-pdas/guides/how-to-create-compressed-accounts.mdx
🧰 Additional context used
🪛 LanguageTool
client-library/client-guide.mdx

[grammar] ~606-~606: Use a hyphen to join words.
Context: ...pend PackedAccounts after your program specific accounts and in anchor in `rema...

(QB_NEW_EN_HYPHEN)

🔇 Additional comments (8)
resources/sdks/client-development.mdx (1)

82-82: Link target correctly updated to new client guide path.

The href update from /compressed-pdas/client-library to /client-library/client-guide aligns with the new documentation structure introduced in this PR.

compressed-pdas/guides/how-to-reinitialize-compressed-accounts.mdx (1)

588-588: Link correctly updated to new client guide destination.

The "Build a client for your program" card now points to the centralized /client-library/client-guide path.

compressed-pdas/guides/how-to-update-compressed-accounts.mdx (1)

577-577: Link updated consistently with other guides.

The href change to /client-library/client-guide maintains parity with the navigation updates across all compressed-pdas guides.

compressed-pdas/create-a-program-with-compressed-pdas.mdx (1)

185-188: Card updated with consistent navigation path and punctuation.

Title now ends with a period for consistency with other cards, and href correctly points to /client-library/client-guide.

compressed-pdas/program-examples.mdx (1)

13-17: Content clarified and broken link corrected.

The Basic Operations descriptions are tightened for clarity, and the Next Steps href corrected from the malformed /compressed-pdas/guides/guides to /compressed-pdas/guides. This fixes the broken navigation path.

Also applies to: 50-50

compressed-pdas/guides.mdx (1)

2-4: Navigation metadata updated for renamed documentation section.

The page title, description, and sidebar label now reflect the "Program Guides" organization and provide clearer context for the overview function of this page.

resources/sdks/program-development.mdx (1)

50-53: Card target updated to align with navigation restructuring.

The title now reflects "Program Guides" and the href points to /compressed-pdas/guides (the overview) rather than the specific create-a-program page, providing better navigation hierarchy.

client-library/client-guide.mdx (1)

1-10: New comprehensive client guide successfully introduces centralized learning resource.

The new client-guide.mdx provides a well-structured, multi-step guide for TypeScript and Rust developers with clear sections on setup, RPC connections, address derivation, validity proofs, account packing, instruction building, and transaction submission. The integration of graphics, tabs for cross-language examples, and full code examples supports the PR objective of consolidating client-side guidance under a single authoritative resource.

Comment on lines +127 to +128
@lightprotocol/stateless.js@0.22.1-alpha.1 \
@lightprotocol/compressed-token@0.22.1-alpha.1 \
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

CRITICAL: Unpublished package version will cause installation failures.

The installation instructions reference @lightprotocol/compressed-token@0.22.1-alpha.1 across all three package manager tabs (npm, yarn, pnpm), but this version does not exist on npm and will cause 404 errors. While @lightprotocol/stateless.js@0.22.1-alpha.1 is valid, the compressed-token package must be updated to the published version 0.22.0.

Update all three tabs:

 <Tab title="npm">

 ```bash
 npm install --save \
     @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
     @solana/web3.js
yarn add \
    @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
    @solana/web3.js
pnpm add \
    @lightprotocol/stateless.js@0.22.1-alpha.1 \
-    @lightprotocol/compressed-token@0.22.1-alpha.1 \
+    @lightprotocol/compressed-token@0.22.0 \
    @solana/web3.js
```

Also applies to: 138-139, 149-150

🤖 Prompt for AI Agents
In client-library/client-guide.mdx around lines 127-128 (and also apply same
change at 138-139 and 149-150): the docs reference an unpublished package
version @lightprotocol/compressed-token@0.22.1-alpha.1 which will cause install
failures; update each occurrence in the npm, yarn, and pnpm install snippets to
use the published version @lightprotocol/compressed-token@0.22.0 so the commands
succeed (replace 0.22.1-alpha.1 with 0.22.0 in all three tabs and the other
noted line ranges).

Comment on lines +1178 to +1181
<Step>
## Send Transaction

</Step>
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Empty Send Transaction step leaves end-to-end workflow incomplete.

Step 7 provides no code examples or guidance for the final transaction submission step. Add minimal, copy-paste-ready implementations for TypeScript and Rust:

 <Step>
 ## Send Transaction

+<Tabs>
+<Tab title="Typescript">
+
+```typescript
+const tx = new web3.Transaction();
+tx.add(instruction);
+tx.recentBlockhash = (await rpc.getRecentBlockhash()).blockhash;
+tx.sign(signer);
+
+const sig = await rpc.sendTransaction(tx, [signer]);
+await confirmTx(rpc, sig);
+console.log("Transaction confirmed:", sig);
+```
+
+</Tab>
+
+<Tab title="Rust">
+
+```rust
+let sig = rpc
+    .create_and_send_transaction(&[instruction], &payer.pubkey(), &[payer])
+    .await?;
+
+println!("Transaction confirmed: {}", sig);
+```
+
+</Tab>
+</Tabs>
+
 </Step>
🤖 Prompt for AI Agents
In client-library/client-guide.mdx around lines 1178 to 1181, the "Send
Transaction" step is empty and must be replaced with minimal, copy-paste-ready
TypeScript and Rust examples showing how to build, sign, send and confirm a
transaction; add a TypeScript Tab that creates a Transaction, adds the
instruction, sets recentBlockhash, signs with the signer, sends via
rpc.sendTransaction and waits for confirmation, then logs the signature, and add
a Rust Tab that calls the RPC helper to create and send the transaction with the
payer and signer(s), awaits the result, and prints the returned signature.
Ensure both snippets are placed inside their respective Tab blocks and use the
same variable names referenced earlier (rpc, instruction, signer/payer) so
readers can copy-paste directly.

…ground

Remove ?api-key=<api_key> from server URLs across all OpenAPI specs.
This fixes the Mintlify API playground not rendering request examples
and language snippets.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@tilo-14 tilo-14 merged commit 1023430 into main Nov 26, 2025
2 of 3 checks passed
@tilo-14 tilo-14 deleted the client-guides branch January 10, 2026 23:27
@coderabbitai coderabbitai bot mentioned this pull request Feb 2, 2026
4 tasks
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.

2 participants