-
Notifications
You must be signed in to change notification settings - Fork 5
added mintlify docs #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
added mintlify docs #17
Conversation
Your Mintlify docs migration is now complete and available at staging site hosted by us here:https://lightprotocol-migration.mintlify.app/ Resources * Migrated Repository: https://github.com/Lightprotocol/developer-content/tree/95d96aab42cdc79d0badcb694d7684de61b55a31/zk-compression-docs * Staging Domain: https://lightprotocol-migration.mintlify.app/ What's Included: * All documentation content migrated to MDX format * Navigation structure preserved * Mintlify configuration (docs.json) set up * Basic styling and branding applied Next Steps To complete your documentation setup, please merge the PR containing the contents of the folder as you see fit and : 1. Connect Repository to Dashboard * Go to Settings > Git settings in your Mintlify dashboard * Connect the repository linked above 2. Set Up Redirects (if needed) * Add any necessary redirects for existing URLs * Our docs here: https://mintlify.com/docs/settings/broken-links#redirects-and-broken-links 3. Configure Custom Domain * Add your custom domain to go live * Our docs here: https://mintlify.com/docs/settings/custom-domain#custom-domain 4. Review and Provide Feedback * Timeline: Until 11/14, Friday EoD * Method: Please consolidate feedback in a Google Doc and send to us over email * Delivery: We will review the feedback, outline what’s in scope and try our best to address that feedback within 3 business days Support: support@mintlify.com
WalkthroughAdds a Mintlify docs site under Changes
Sequence Diagram(s)(Skipped — changes are documentation and API specs only; no control-flow code changes to diagram.) Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related PRs
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 52
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml (1)
1-933: Consolidate these OpenAPI spec files into organized, non-overlapping definitions.Your investigation confirms the review comment's core finding: the three files contain severely overlapping endpoint definitions with misleading filenames. Here's what's happening:
The Problem:
getCompressedAccount.yamlcontains 1 endpoint (correct)getCompressedAccountsByOwner.yamlcontains 6 endpoints, including/getCompressedAccountand/getCompressedAccountProof(misleading name, incorrect scope)getCompressedTokenAccountBalance.yamlcontains 8 endpoints—the union of both previous files plus 2 additional endpointsWhy This Is Critical:
Endpoint duplication:
/getCompressedAccountis defined identically in all three files. Any future fix to this endpoint must be made in three places—a maintenance nightmare and a source of consistency bugs.File names don't match content: A developer looking at
getCompressedAccountsByOwner.yamlexpects to find only thegetCompressedAccountsByOwnerendpoint and related helpers, not account proof queries or token delegate methods.Single Responsibility Principle violated: Each file should serve one purpose. Conflating multiple unrelated endpoints into one spec file defeats the organizational structure.
Recommended Fix:
Either:
- Option A (Recommended): Create individual spec files per endpoint, each containing only its own RPC method definition and shared schema components
- Option B: Create a single monolithic
api.yamlthat contains all endpoints, and remove the individual misleading filesVerify which approach matches your documentation generation pipeline (Mintlify appears to use individual files, based on the directory structure), then reorganize accordingly.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (105)
zk-compression-docs/mintlify-docs/favicon.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (2).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (3).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (4).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-germany 1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-germany.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-pt 1-2.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000xHackathon_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x_35_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Build_Anything.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Design ohne Titel-2.mp4is excluded by!**/*.mp4and included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Group 632668.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light Protocol v2 - Batched Merkle trees (3).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light Protocol v2 - Batched Merkle trees (4) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light-Protocol-v2 -Batched-Merkle-trees-(4).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ScaleAnything (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ScaleAnything.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-10 at 06.22.52.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-10 at 06.37.41.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-13 at 14.40.53.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled (5).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled (6).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled-4.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/banner-image.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/burn-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-burn (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-close (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-create (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-reinit (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-update (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/close-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/create-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-banner.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (1) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (10).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (11).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (12).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (13).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (14).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (16).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (17).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (18).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (19).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (2) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (21).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (24).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (25).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (3) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (32).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (34).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (4).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (5).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (6).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (7) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (7).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (8).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (9).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-(2).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-(3).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-20.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-22.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-23.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-burn-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-closes.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-create-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-reinit-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-update-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-new.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/reinit-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner Large 2.jpegis excluded by!**/*.jpegand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner Large.jpegis excluded by!**/*.jpegand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner.jpgis excluded by!**/*.jpgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/update-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/zkc24-ezgif.com-video-to-gif-converter.gifis excluded by!**/*.gifand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/zkcompression_1000x_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/logo/dark.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/logo/light.svgis excluded by!**/*.svgand included byzk-compression-docs/**
📒 Files selected for processing (54)
zk-compression-docs/mintlify-docs/LICENSE(1 hunks)zk-compression-docs/mintlify-docs/README.md(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-close-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-reinitialize-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/program-examples.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/add-wallet-support-for-compressed-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop-with-claim.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-node-js.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-web-client.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/how-to-combine-operations-in-one-transaction.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/use-token-2022-with-compression.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-approve-and-revoke-delegate-authority.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-and-register-a-mint-account-for-compression.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-merge-compressed-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-mint-compressed-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-transfer-compressed-token.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx(1 hunks)zk-compression-docs/mintlify-docs/deepwiki.mdx(1 hunks)zk-compression-docs/mintlify-docs/discord.mdx(1 hunks)zk-compression-docs/mintlify-docs/docs.json(1 hunks)zk-compression-docs/mintlify-docs/github.mdx(1 hunks)zk-compression-docs/mintlify-docs/index.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/ai-tools-guide.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/compressed-account-model.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/transaction-lifecycle.mdx(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccount.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountBalance.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountProof.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedBalanceByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByDelegate.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
zk-compression-docs/**/*.md
⚙️ CodeRabbit configuration file
zk-compression-docs/**/*.md: Cross-verify documentation with source code using CLAUDE.md mappings.
Prioritize accuracy over assumptions - always check actual source files.
Files:
zk-compression-docs/mintlify-docs/README.md
🪛 Checkov (3.2.334)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountBalance.yaml
[high] 1-119: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-119: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml
[high] 1-142: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-142: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 129-133: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml
[high] 1-146: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-146: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 138-142: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml
[high] 1-789: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-789: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 278-282: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccount.yaml
[high] 1-167: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-167: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml
[high] 1-1639: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1639: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1263-1267: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByDelegate.yaml
[high] 1-673: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-673: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 468-472: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml
[high] 1-1517: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1517: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1149-1153: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml
[high] 1-933: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-933: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 701-705: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwner.yaml
[high] 1-1294: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1294: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1044-1048: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedBalanceByOwner.yaml
[high] 1-1145: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1145: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 925-929: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountProof.yaml
[high] 1-132: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-132: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 116-120: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByOwner.yaml
[high] 1-554: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-554: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 349-353: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
🪛 LanguageTool
zk-compression-docs/mintlify-docs/github.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: GitHub url: "https://github.com/Lightprotocol" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/learn/core-concepts.mdx
[grammar] ~18-~18: Use a hyphen to join words.
Context: ...composability, and performance. ## High Level System Overview This is how it wo...
(QB_NEW_EN_HYPHEN)
zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx
[locale-violation] ~139-~139: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ete SPL token accounts and reclaim rent afterwards | | [Merge Compressed Account...
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: Client Library description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples. ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx
[style] ~25-~25: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...ber of writes to the same account to be very large (>>1000x). - The account stores large a...
(EN_WEAK_ADJECTIVE)
[uncategorized] ~70-~70: The official name of this software platform is spelled with a capital “H”.
Context: ...xt step and start building! <Card horizontal icon="github" title="Compressed Tokens" href="https:...
(GITHUB)
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx
[locale-violation] ~496-~496: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...nts in one transaction and reclaim rent afterwards.
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...Hash"> Only this root hash is stored on chain as single value on chain to secure...
(QB_NEW_EN_HYPHEN)
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...sh is stored on chain as single value on chain to secure the integrity of all com...
(QB_NEW_EN_HYPHEN)
[grammar] ~41-~41: Use a hyphen to join words.
Context: ... For compressed Solana accounts, the 32 byte leaf hashes effectively mirror the ...
(QB_NEW_EN_HYPHEN)
[style] ~114-~114: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... Address trees store derived addresses in an ind...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx
[grammar] ~11-~11: Use a hyphen to join words.
Context: ...y write to the account. * For Solana PDA like behavior your compressed account ne...
(QB_NEW_EN_HYPHEN)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx
[uncategorized] ~938-~938: The official name of this software platform is spelled with a capital “H”.
Context: ...mize claims. * Full Example on Github to [create an Airdrop with Claim](https...
(GITHUB)
zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx
[locale-violation] ~14-~14: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ete SPL token accounts and reclaim rent afterwards | | [How to Merge Compressed Accounts](...
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts.mdx
[style] ~135-~135: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 1290 characters long)
Context: ...pt to create token pools for an SPL mint! ```typescript create-token-pools.ts hi...
(EN_EXCESSIVE_EXCLAMATION)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-web-client.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "Example Web Client" url: "https://github.com/Lightprotocol/example-web-client" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx
[grammar] ~189-~189: Ensure spelling is correct
Context: ...uction_data.account_meta* Include the curent account data. * Anchor: BuildMyComp...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx
[grammar] ~193-~193: Ensure spelling is correct
Context: ...es the output state tree. * Include the curent account data. * Anchor: Pass `current...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
zk-compression-docs/mintlify-docs/index.mdx
[style] ~11-~11: ‘at a fraction of’ might be wordy. Consider a shorter alternative.
Context: ...ve that lets you create tokens and PDAs at a fraction of the cost. Scale your application to mil...
(EN_WORDINESS_PREMIUM_AT_A_FRACTION_OF)
🪛 markdownlint-cli2 (0.18.1)
zk-compression-docs/mintlify-docs/README.md
19-19: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
25-25: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🔇 Additional comments (56)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-node-js.mdx (1)
1-5: Empty file body is intentional and follows documented pattern—no action required.Verification confirms both
example-node-js.mdxandexample-web-client.mdxfollow the identical structure: front matter metadata (title + GitHub URL) with no body content. This is the intentional pattern for these reference files—they direct readers to external GitHub repositories via theurlfield rather than embedding documentation content. The front matter syntax is correct, and the structure is consistent with the PR's migration objectives.zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/how-to-combine-operations-in-one-transaction.mdx (1)
193-202: Verify TokenPoolInfo construction before pool creation.The code creates a
tokenPoolInfoobject (lines 193–202) with manually set values before the pool creation instruction executes. This includes:
isInitialized: true(line 198) — marked initialized before the transaction confirmsbump: 0with a placeholder comment (line 201) — the actual bump should be derived fromderiveTokenPoolPda()This pattern is unusual. Confirm with the SDK source that this is the correct approach for first-time compression. If the bump value is critical for the compress instruction, hardcoding
0could cause issues.Can you verify that this pattern matches the expected SDK usage and confirm whether the bump value should be derived or calculated?
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/use-token-2022-with-compression.mdx (4)
14-24: Token-2022 extension support list is accurate.The supported extensions match the official Light Protocol documentation: MetadataPointer, TokenMetadata, InterestBearingConfig, GroupPointer, GroupMemberPointer, TokenGroup, and TokenGroupMember. Content is consistent with upstream sources.
37-39: SDK version requirements are correct.The specified versions match official requirements: @lightprotocol/stateless.js ≥ 0.21.0, @lightprotocol/compressed-token ≥ 0.21.0, and @solana/web3.js ≥ 1.95.3.
184-190: TokenMetadataadditionalMetadatafield usage is correct.The
additionalMetadatafield is a valid field in the TokenMetadata interface and follows the standard pattern of key-value pairs. The code correctly structures this as an array of tuples. The example metadata object is well-formed.
319-330: API return types verified and correct—no changes needed.The code at lines 319–330 properly accesses the return structures:
getCompressedTokenAccountsByOwnerreturns{ items: Array<{ parsed: { amount } }> }
- Line 320:
senderCompressedAccounts.items.reduce()✓- Line 323:
recipientCompressedAccounts.items.reduce()✓- Both correctly access
account.parsed.amount✓
getTokenAccountBalancereturns{ value: { amount, uiAmount } }
- Line 328:
splBalance.value.uiAmount✓The code matches Light Protocol SDK patterns across all documented examples. No API contract violations detected.
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-web-client.mdx (1)
1-5: This review comment is incorrect regarding Mintlify best practices.The file follows the correct, documented Mintlify pattern for external navigation links. Per Mintlify's official documentation, the frontmatter
urlfield is the correct approach to make a page an external navigation link—not a redirect requiringmintlify.jsonconfiguration.The metadata-only structure is intentional and systematic across your codebase. I verified six similar files in the repo using the same pattern:
github.mdx,discord.mdx,deepwiki.mdx(external org links)example-node-js.mdx(sibling advanced guide with identical structure)create-an-airdrop-with-claim.mdxand the file under reviewAll follow this convention. The review's core claim that this is "non-standard" or that
mintlify.jsonshould be used here is incorrect. Server-side 301 redirects via docs.json are configured separately for SEO and redirect chains, not for external navigation links.If you want to add explanatory body content to all such pages for UX completeness, that's a valid enhancement choice—but the current structure is not a bug or violation of Mintlify best practices.
Likely an incorrect or invalid review comment.
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop-with-claim.mdx (1)
1-4: Verify that the stub page is intentional.This file contains only front matter without any body content. If this page is meant to be a full guide (as the filename suggests), the content may have been lost during migration. However, if this is intentionally a lightweight redirect to the external GitHub repo, confirm it will render correctly in Mintlify.
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx (3)
1-4: ✓ MDX front matter and Mintlify component syntax look correct.The document uses valid Mintlify components (CardGroup, Tabs, Steps, Accordion, Info, Warning, Tip) with proper syntax. Layout and structure are well-organized for a tutorial-style guide.
12-12: All external links are valid and active.Verification confirms that all 7 external URLs in the airdrop guide are currently reachable and return HTTP 200 status codes. No stale or broken links were detected across the Helius documentation, Airship calculator, or GitHub repository references.
74-101: Version constraints allow latest stable releases; documentation context should be clarified.The
≥ 0.21.0constraint for both packages is not problematic—both @lightprotocol/stateless.js and @lightprotocol/compressed-token are at version 0.22.0, and this constraint permits users to install the latest release. The minimum version floor provides stability without locking to outdated packages. However, the documentation should be updated to reference that 0.22.0 is now the stable release, ensuring developers understand they're working with current versions when following this guide.zk-compression-docs/mintlify-docs/LICENSE (1)
1-21: License file is appropriate.Standard MIT License text with no issues.
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides.mdx (1)
7-15: Verify external and internal documentation links are current.The table references GitHub repository links and internal documentation paths. Please confirm:
- External repos exist:
example-compressed-claim,example-web-client,example-nodejs-client- Internal paths match actual file structure (e.g.,
/compressed-tokens/advanced-guides/create-an-airdrop)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-merge-compressed-token-accounts.mdx (1)
136-232: Verify API signatures and function availability against current @Lightprotocol packages.The code example uses
mergeTokenAccounts(),mintTo(), andcreateMint()from@lightprotocol/compressed-token. Please confirm these functions exist in the current package version and that their signatures (parameters and return types) match the documented usage, particularly:
mergeTokenAccounts(rpc, payer, mint, tokenOwner)signature- RPC endpoint defaults (
localhost:8899)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx (1)
46-56: Verify light-sdk and anchor_lang versions are current and compatible.The guide specifies
light-sdk = "0.16.0"andanchor_lang = "0.31.1". Please confirm these are:
- Current and not deprecated
- Compatible with each other
- Compatible with the actual Anchor and Native Rust implementations provided below
zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml (1)
1-91: Add security definitions to OpenAPI spec.The OpenAPI specification lacks global security field definitions (Checkov CKV_OPENAPI_4/5). While this may be intentional for a public indexer endpoint, it should be explicitly documented. Consider adding one of:
Option 1: Explicitly allow unauthenticated access
openapi: 3.0.3 info: title: photon-indexer description: Solana indexer for general compression license: name: Apache-2.0 version: 0.50.0 +security: [] servers:Option 2: Document authentication requirements if applicable
components: securitySchemes: api_key: type: apiKey in: query name: api-keyThen add
security:reference at the operation or global level.Please confirm which approach is correct for your endpoint.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-approve-and-revoke-delegate-authority.mdx (1)
146-235: Verify API signatures for approve(), revoke(), and getCompressedTokenAccountsByDelegate().Please confirm these functions exist in current @Lightprotocol packages and their signatures match the documented usage:
approve(rpc, payer, mint, amount, owner, delegate)revoke(rpc, payer, delegatedAccounts, owner)rpc.getCompressedTokenAccountsByDelegate(delegate, {mint})zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-close-compressed-accounts.mdx (1)
45-56: Verify light-sdk version is current and API matches usage.The guide specifies
light-sdk = "0.16.0". Please confirm:
- This version is current and not deprecated
LightAccount::new_close()API exists and signature matches the usage pattern shown in lines 159-179- All imported traits and functions are available:
LightAccount,derive_address,CpiAccounts,LightSystemProgramCpizk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx (1)
1-4: Verify external resources are current.Similar to the reinitialize guide, ensure that GitHub links (lines 312, 438), zkcompression.com URLs (lines 298, 306), and SDK versions are current.
Combine verification of this file with the reinitialize guide using the shell script provided in that review.
zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx (1)
1-3: Stub page needs body content.This page contains only frontmatter metadata with no body content. If this is intended as an index/navigation page for client library guides, consider adding:
- A brief introduction to the client libraries (Rust and TypeScript)
- Links or cards pointing to available client guides
- Quick start information
- Feature overview
Verify whether this file is complete or if it requires body content for proper functionality.
zk-compression-docs/mintlify-docs/github.mdx (1)
1-3: LGTM; verify GitHub organization URL.The GitHub link page follows the established
urlredirect pattern. Verify thathttps://github.com/Lightprotocolis the correct organization URL.zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx (1)
1-4: Comprehensive guide structure; verify technical content is accurate.This guide provides a solid foundation for developers to start building with compressed PDAs. The structure, installation steps, and troubleshooting are well-presented. Consider requesting technical review of the:
- Version compatibility matrix
- Build/test success criteria
- Error scenarios and fixes
zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx (1)
7-17: All guide links verified—documentation files are present and correct.All 9 referenced guide files exist at their expected paths in
zk-compression-docs/mintlify-docs/compressed-tokens/guides/. The guides index is accurate and complete.zk-compression-docs/mintlify-docs/discord.mdx (1)
1-4: Discord invite URL verified and valid.The Discord invite link (
https://discord.com/invite/CYvjBgzRFP) returns HTTP 200, confirming it is current and accessible. No action required for this file.zk-compression-docs/mintlify-docs/deepwiki.mdx (1)
1-3: No changes required—DeepWiki URL and Mintlify configuration are correct.The
urlfield in frontmatter is a supported Mintlify feature that makes the sidebar link open the given external URL instead of an internal page. The DeepWiki URL returns HTTP 200 and is properly configured.zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-reinitialize-compressed-accounts.mdx (1)
1-4: Let me verify the light-sdk version to complete the validation:The search returned results for unrelated packages (different "light-sdk" packages). Let me search more specifically for the Light Protocol SDK:Let me search for the actual Light Protocol SDK package on GitHub:
All external links verified; external resources are current and accessible.
Verification completed successfully. All GitHub repository links return HTTP 200 status, zkcompression.com URLs are accessible, and the CLI version 0.27.1-alpha.2 is available on npm. The documentation references are valid and current. The frontmatter, structure, and code examples in the guide are sound.
zk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx (1)
7-15: Guides overview table is well-structured.The links are correctly formatted with proper paths to individual guide pages. These appear to map correctly to the navigation hierarchy defined in docs.json.
zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx (1)
33-64: Verify all three package manager installation commands are synchronized.The npm, yarn, and pnpm installation commands should remain in sync as dependencies are updated. This is a good practice checkpoint during future maintenance.
zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx (2)
22-26: General Recommendation section is clear and practical.The guidance on when to use vs. not use compression is well-articulated with concrete criteria (update frequency, write lifetime, data access patterns). This helps developers make informed architectural decisions.
52-65: State Cost breakdown is comprehensive and accurate.The table itemizing Solana base fee, leaf write cost, nullify cost, and address creation cost provides valuable transparency into the true cost model. The lamports values and formulas are helpful for cost estimation.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts.mdx (2)
133-201: Full code example is well-structured with clear comments.The TypeScript code example (create-token-pools.ts) is comprehensive and includes:
- Proper setup of payer and RPC connection
- SPL mint creation
- Token pool creation via createTokenPool()
- Optional additional pools for write-lock capacity
The step-by-step comments make it easy to follow, and the return value structure is clear.
219-262: Advanced Configuration section provides practical examples.The "Batch Pool Creation" and "Create Pool with Token-2022" examples demonstrate important use cases and extend the guide's utility for developers with more complex needs.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-and-register-a-mint-account-for-compression.mdx (2)
40-46: npm installation commands are correct.The npm command uses
--save-devcorrectly and includes all necessary dependencies for compressed token development.
162-203: Advanced Configurations section demonstrates important customization patterns.The examples for customizing mint authority and adding freeze authority are valuable for developers who need additional security controls. These configurations align with standard SPL token patterns.
zk-compression-docs/mintlify-docs/docs.json (1)
1-194: All navigation paths verified—docs.json is deployment-ready.Verification confirms all 72 pages referenced in the navigation hierarchy exist as
.mdxfiles. The JSON configuration is syntactically valid, the color scheme is consistent, and all required Mintlify schema fields are present. No missing files or dangling references that would result in 404 errors post-deployment.The documentation structure is well-organized and properly configured for the Mintlify platform.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-transfer-compressed-token.mdx (1)
1-214: Well-structured transfer guide with clear code examples.The documentation effectively covers prerequisites, full examples, troubleshooting, and advanced configurations. Code examples demonstrate proper error handling (balance checks, account limits) and follow consistent patterns with RPC setup and verification steps.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts.mdx (1)
1-241: Clear compression guide with practical troubleshooting.The document provides detailed setup, code examples with balance verification, and specific troubleshooting for common scenarios (insufficient balance, remaining amount exceeds balance). The distinction between complete and partial compression is well-explained with a helpful Check callout at lines 41–48.
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx (1)
1-493: Comprehensive guide with dual-tab workflow examples.The documentation effectively demonstrates compress-only and compress+decompress workflows in parallel tabs. Code examples include proper balance verification and error handling. Troubleshooting covers both insufficient balance and owner validation edge cases.
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/add-wallet-support-for-compressed-tokens.mdx (1)
1-360: Comprehensive wallet integration guide with end-to-end examples.The guide provides both quick code snippets and step-by-step integration flows. Covers key wallet functions: balance display, transaction history retrieval, and token sending. Advanced integrations for decompress/compress operations are well-documented with detailed parameter explanations.
Also applies to: 363-631
zk-compression-docs/mintlify-docs/learn/core-concepts.mdx (1)
1-17: Clear conceptual overview with strong component usage.The introductory page effectively uses Tooltip, Info, and Check components to explain core concepts without overwhelming detail. Logical flow from storage→access→validation→updates→indexing guides readers toward understanding the full system. DeepWiki integration and Card navigation to next topic are helpful.
Also applies to: 19-64
zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx (1)
1-30: Well-designed educational content on Merkle trees and validity proofs.The documentation uses Steps, Frames, and Tooltips effectively to break down complex ZK concepts. Tables and diagrams support understanding. The progression from tree structure→root hashing→proof mechanisms→V1/V2 optimizations is logical. Resources section at the end provides valuable external references.
Also applies to: 32-96, 99-164
zk-compression-docs/mintlify-docs/learn/core-concepts/transaction-lifecycle.mdx (2)
41-41: Verify relative documentation links resolve correctly.Lines 41, 76, and 140 use relative links to other documentation pages (e.g.,
/resources/json-rpc-methods/getcompressedaccount,/compressed-pdas/guides/how-to-update-compressed-accounts). Ensure these files exist in the Mintlify documentation structure and that Mintlify's routing configuration correctly resolves these paths after deployment.Also applies to: 76-76, 140-140
6-176: Clear, well-structured documentation with good visual hierarchy.The document effectively explains transaction lifecycle by progressing from overview → reading → writing → execution. The use of tabbed code examples (TypeScript/Rust) and diagrams supports developer learning. References to external resources (Solana docs, program examples, GitHub source) are contextually appropriate and help bridge to deeper understanding.
zk-compression-docs/mintlify-docs/compressed-pdas/program-examples.mdx (2)
55-55: Verify relative navigation link exists.The Card component on line 55 references
/compressed-pdas/create-a-program-with-compressed-pdas. Please confirm this documentation page exists in the Mintlify structure.
1-57: Well-organized index with clear categorization of examples.The document serves its purpose as a reference guide, grouping examples by complexity and use case (basic operations, counter logic, combinations, identity, comparison). The Info block (lines 20–27) provides a helpful glossary of operations. External links to GitHub and DeepWiki are contextually appropriate and add value for developers seeking source code and codebase navigation.
zk-compression-docs/mintlify-docs/learn/ai-tools-guide.mdx (3)
114-130: Excellent precision guidance for AI tool usage.The "Language precision" section (lines 114–130) provides concrete guidance on terminology and response formatting. Instructions to avoid vague verbs ("handles", "manages") and use exact names (function signatures, type names, operations) establish a high quality bar for AI-assisted development. The emphasis on source references (
file:linefrom DeepWiki) adds verifiability and traceability. This is a model example of how to guide AI tool usage effectively.
52-54: All MCP URLs and syntax are accurate against current DeepWiki documentation.I've cross-referenced every claim in your review comment against the latest DeepWiki MCP documentation:
- Line 53's Claude CLI command (
claude mcp add -s user -t http deepwiki https://mcp.deepwiki.com/mcp) correctly uses the HTTP transport endpoint.- Line 139's JSON configuration correctly references the SSE endpoint (
https://mcp.deepwiki.com/sse) for Claude Desktop and other IDEs.- Lines 97–99 and the tool examples at 154, 160, 166 follow the documented invocation pattern and require no updates.
The code is in sync with current documentation. No corrective action needed.
26-36: Consider migrating embedded video to stable platform for docs durability.The Google Drive iframe uses the official
/previewendpoint (best practice) and correct attributes, so it works as designed. However, Google Drive embedded iframes can become unstable if permissions change or Google modifies viewer behavior, and best practice recommends alternatives like YouTube or Vimeo for public documentation. Since this is a permanent reference in your docs, migrating this video to YouTube, Vimeo, or self-hosted storage would eliminate dependency on Google's viewer platform and ensure the guide remains accessible if Drive permissions or policies change. If staying with Google Drive, add a fallback text link to ensure readers can access the content if the embed fails.zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-mint-compressed-tokens.mdx (2)
8-8: Verify relative documentation links and external API references.Lines 8 (two links) reference related guides for creating mints and token pools. Line 103 references Helius API key documentation. Ensure these links are current and accessible:
/compressed-tokens/guides/how-to-create-and-register-a-mint-account-for-compression/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts- https://www.helius.dev/zk-compression
Also applies to: 8-8, 103-103
22-186: Comprehensive, well-structured guide with practical examples.The guide progresses logically from prerequisites → setup → working code → verification. The TypeScript example is concrete and includes actual API calls with proper error handling context. The Accordion sections make the guide scannable without overwhelming beginners. Troubleshooting section with specific error messages and solutions adds significant value for developers debugging integration.
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml (1)
667-933: Schema organization is clear and reusable.The
components/schemassection properly defines reusable schemas (Account,AccountData,Context,Hash,SerializablePubkey, etc.) with appropriate cross-references. TheadditionalProperties: falseconstraints on objects (lines 697, 711, 778, 927) enforce strict schemas, which is good for API stability. However, verify that all nested schema references are correctly defined and that no circular dependencies exist.zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx (3)
11-11: Verify relative link to compressed token accounts guide.Line 11 references
/compressed-tokens/guides/how-to-create-compressed-token-accounts. Ensure this documentation page exists in the Mintlify structure.
353-365: System Accounts reference table is exceptionally clear and helpful.The table (lines 353–365) describing system accounts for CPI includes concrete Solana program IDs (e.g.,
SySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7), linked Solscan entries, and clear role descriptions. This reference is valuable for developers and program auditors. Verify all Solana program IDs are correct and remain stable.
18-376: Clear, methodical implementation guide with comprehensive code samples.The guide's step-by-step approach, combined with parallel Anchor/Native Rust examples and detailed explanations at each stage, makes it accessible to developers with different experience levels. The progression from constants → account definition → instruction data → address derivation → initialization → CPI invocation mirrors the actual program flow and aids understanding. Tooltips and Info blocks provide just-in-time context without overwhelming the main narrative.
zk-compression-docs/mintlify-docs/learn/core-concepts/compressed-account-model.mdx (2)
108-108: Verify relative documentation links exist.Lines 108 and 124 reference client library guides:
https://github.com/Lightprotocol/developer-content/blob/main/zk-compression-docs/compressed-pdas/client-library/typescript.md#derive-addresshttps://github.com/Lightprotocol/developer-content/blob/main/zk-compression-docs/compressed-pdas/client-library/rust.md#derive-addressThese are external GitHub links, not relative Mintlify links, so they point outside the documentation site. Consider converting these to relative Mintlify links if equivalent documentation exists in the site structure (e.g.,
/compressed-pdas/client-library/typescriptand/compressed-pdas/client-library/rust).Line 36 references
/learn/core-concepts/merkle-trees-validity-proofsas a "Next Steps" forward reference. Ensure this page exists.Also applies to: 124-124, 36-36
6-176: Excellent conceptual introduction to compressed accounts with clear structure.The document effectively scaffolds learning by first explaining differences from regular accounts, then showing concrete structure definitions, and finally providing implementation examples. The comparison accordions (regular account vs. compressed, Solana PDA vs. compressed PDA derivation) aid understanding by contextualizing the new concepts. Code examples in both TypeScript and Rust support developers in their preferred language.
| * **Rust**: 1.86.0 or later | ||
| * **Solana CLI**: 2.2.15 | ||
| * **Anchor CLI**: 0.31.1 | ||
| * **Zk compression CLI**: 0.27.0 or later | ||
| * **Node.js**: 23.5.0 or later |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify version requirements are current and compatible.
The documentation specifies exact version requirements for the development environment:
- Rust: 1.86.0 or later
- Solana CLI: 2.2.15
- Anchor CLI: 0.31.1
- Zk compression CLI: 0.27.0 or later
- Node.js: 23.5.0 or later
Ensure these versions are:
- Currently available and stable
- Compatible with each other
- Not superseded by newer requirements
- Recommended for production use
🏁 Script executed:
#!/bin/bash
# Description: Check version availability and compatibility
# Check Solana CLI latest release
echo "Solana CLI latest releases:"
curl -s https://api.github.com/repos/solana-labs/solana/releases | jq -r '.[0:3] | .[] | .tag_name' | head -5
# Check Anchor CLI latest version
echo -e "\nAnchor CLI latest version info:"
npm view @project-serum/anchor version 2>/dev/null || echo "Check manually on npm"
# Check Light Protocol CLI versions
echo -e "\nLight Protocol CLI versions:"
npm view @lightprotocol/zk-compression-cli versions --json | jq -r '.[-5:]'Length of output: 211
Update version requirements to reflect current stable tooling releases.
The documented versions are significantly outdated:
- Solana CLI: Documentation states 2.2.15, but current releases use 2.2.17 or earlier 2.1.x series
- Anchor CLI: Documentation states 0.31.1, but the current stable is 0.32.1
- For Anchor 0.31.1 specifically, the recommended Solana version is 2.1.0, not 2.2.15
- ZK Compression CLI: 0.27.0 is correct as the latest version
Update the version matrix to match current ecosystem standards. Consider whether to pin 0.31.1 or upgrade to the latest Anchor 0.32.1 for better compatibility with current Solana tooling.
| | Example | Description | | ||
| |:---------|:------------| | ||
| | [basic-operations/anchor](https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/anchor) | Anchor programs to create, update, close, reinitialize and burn compressed accounts with Rust and TypeScript tests | | ||
| | [basic-operations/native-rust](https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/native-rust) | Native Solana program implementation to create, update, close, reinitialize and burn compressed accounts with Rust tests | | ||
| | [Counter (Anchor)](https://github.com/Lightprotocol/program-examples/tree/main/counter/anchor) | Full compressed account lifecycle (create, increment, decrement, reset, close) using Anchor framework | | ||
| | [Counter (Native)](https://github.com/Lightprotocol/program-examples/tree/main/counter/native) | Native Solana program implementation with Rust tests | | ||
| | [Counter (Pinocchio)](https://github.com/Lightprotocol/program-examples/tree/main/counter/pinocchio) | Pinocchio implementation using light-sdk-pinocchio with Rust tests | | ||
| | [Create-and-Update](https://github.com/Lightprotocol/program-examples/tree/main/create-and-update) | Create new compressed accounts and update existing ones within a single instruction and one validity proof | | ||
| | [Read-Only](https://github.com/Lightprotocol/program-examples/tree/main/read-only) | Create compressed accounts and read them on-chain | | ||
| | [Account Comparison](https://github.com/Lightprotocol/program-examples/tree/main/account-comparison) | Compare compressed accounts with standard Solana accounts | | ||
| | [ZK-ID](https://github.com/Lightprotocol/program-examples/tree/main/zk-id) | Program that uses zero-knowledge proofs for identity verification with compressed accounts | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify all program example links are valid and current.
The program examples table references 9 GitHub repositories. Verify that all links:
- Are accessible and return HTTP 200
- Point to active, maintained examples
- Still exist at the specified branches/commits
🏁 Script executed:
#!/bin/bash
# Description: Verify GitHub program example links
EXAMPLES=(
"https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/anchor"
"https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/native-rust"
"https://github.com/Lightprotocol/program-examples/tree/main/counter/anchor"
"https://github.com/Lightprotocol/program-examples/tree/main/counter/native"
"https://github.com/Lightprotocol/program-examples/tree/main/counter/pinocchio"
"https://github.com/Lightprotocol/program-examples/tree/main/create-and-update"
"https://github.com/Lightprotocol/program-examples/tree/main/read-only"
"https://github.com/Lightprotocol/program-examples/tree/main/account-comparison"
"https://github.com/Lightprotocol/program-examples/tree/main/zk-id"
)
echo "Checking GitHub repository links..."
for url in "${EXAMPLES[@]}"; do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$url")
REPO=$(echo "$url" | cut -d'/' -f5-)
if [ "$STATUS" = "200" ]; then
echo "✓ $REPO"
else
echo "✗ $REPO (HTTP $STATUS)"
fi
doneLength of output: 461
Fix broken link: basic-operations/native-rust returns HTTP 404.
The GitHub link for the basic-operations/native-rust example at line 195 is broken. The repository path does not exist or has been removed. Update the documentation to either:
- Remove the row if the example has been deprecated
- Point to the correct location if it has been moved
- Replace it with an active example if an alternative exists
Eight of the nine links verified successfully, but this broken reference will frustrate users attempting to access the documentation.
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx
around lines 189 to 199, the GitHub link for "basic-operations/native-rust"
(line ~195) returns 404; update the table by either removing that row if the
example is deprecated, replacing the URL with the correct repository path if it
was moved, or swapping in an active alternative example and its URL, then verify
the new link resolves (HTTP 200) and update the accompanying description to
match the chosen action.
| ## Next Steps | ||
|
|
||
| Create a compressed account. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Next Steps section is vague; add a specific guide link.
Line 84 states "Create a compressed account" without a corresponding link. This should direct users to a specific guide (e.g., /compressed-pdas/guides/how-to-create-compressed-accounts) to improve discoverability and user flow.
Consider this diff:
-## Next Steps
-
-Create a compressed account.
+## Next Steps
+
+Ready to start? [Create your first compressed account](/compressed-pdas/guides/how-to-create-compressed-accounts).📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Next Steps | |
| Create a compressed account. | |
| ## Next Steps | |
| Ready to start? [Create your first compressed account](/compressed-pdas/guides/how-to-create-compressed-accounts). |
🤖 Prompt for AI Agents
In zk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx around lines 82
to 84, the "Next Steps" section simply says "Create a compressed account" with
no link; update this line to include a direct link to the specific guide (for
example /compressed-pdas/guides/how-to-create-compressed-accounts) so users can
click through; make the link text descriptive (e.g., "Create a compressed
account — how-to guide") and ensure the URL path matches the repo's route
structure.
| * `&account_meta`: The `CompressedAccountMetaBurn` from instruction data (_Step 2_) that identifies the existing account for the Light System Program to nullify permanently. | ||
| * Anchor: Pass `&account_meta` directly | ||
| * Native Rust: Pass `&instruction_data.account_meta` | ||
| * Include the curent account data. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix spelling error: "curent" → "current".
Line 189 contains a typo in the documentation text.
-* Include the curent account data.
+* Include the current account data.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| * Include the curent account data. | |
| * Include the current account data. |
🧰 Tools
🪛 LanguageTool
[grammar] ~189-~189: Ensure spelling is correct
Context: ...uction_data.account_meta* Include the curent account data. * Anchor: BuildMyComp...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx
around line 189, fix the typo by changing "curent" to "current" so the bullet
reads "Include the current account data." — update the text in that line
accordingly and save the file.
| **Pass these parameters to `new_mut()`:** | ||
|
|
||
| * `&program_id`: The program's ID that owns the compressed account. | ||
| * `&account_meta`: The `CompressedAccountMeta` from instruction data (_Step 2_) that identifies the existing account and specifies the output state tree. | ||
| * Include the curent account data. | ||
| * Anchor: Pass `current_account` directly | ||
| * Native: Construct `MyCompressedAccount` with data from `instruction_data` | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typo: "curent" → "current".
Line 193 contains a spelling error that should be corrected for accuracy.
- * Include the curent account data.
+ * Include the current account data.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **Pass these parameters to `new_mut()`:** | |
| * `&program_id`: The program's ID that owns the compressed account. | |
| * `&account_meta`: The `CompressedAccountMeta` from instruction data (_Step 2_) that identifies the existing account and specifies the output state tree. | |
| * Include the curent account data. | |
| * Anchor: Pass `current_account` directly | |
| * Native: Construct `MyCompressedAccount` with data from `instruction_data` | |
| **Pass these parameters to `new_mut()`:** | |
| * `&program_id`: The program's ID that owns the compressed account. | |
| * `&account_meta`: The `CompressedAccountMeta` from instruction data (_Step 2_) that identifies the existing account and specifies the output state tree. | |
| * Include the current account data. | |
| * Anchor: Pass `current_account` directly | |
| * Native: Construct `MyCompressedAccount` with data from `instruction_data` |
🧰 Tools
🪛 LanguageTool
[grammar] ~193-~193: Ensure spelling is correct
Context: ...es the output state tree. * Include the curent account data. * Anchor: Pass `current...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx
around lines 189 to 196, fix the spelling typo "curent" to "current" in the
bullet "Include the curent account data." so the text reads "Include the current
account data."; ensure the change updates only that word and preserves
surrounding formatting and punctuation.
| openapi: 3.0.3 | ||
| info: | ||
| title: photon-indexer | ||
| description: Solana indexer for general compression | ||
| license: | ||
| name: Apache-2.0 | ||
| version: 0.50.0 | ||
| servers: | ||
| - url: https://mainnet.helius-rpc.com?api-key=<api_key> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apply same security and constraint fixes as previous OpenAPI spec.
This file has the same security configuration and array constraint issues as getCompressedAccountsByOwner.yaml:
- Add global security scheme (lines 1–9): Define
securitySchemeswith API key auth and apply to endpoints - Add array
maxItemsconstraints: Line 701–705 (params array in getMultipleCompressedAccountProofs)
Additionally, the new endpoint getCompressedTokenAccountBalance (lines 350–432) should include any authorization/rate-limit documentation in the response or description.
Refer to the previous file review for detailed remediation steps, or consolidate both specs to avoid duplicating fixes.
Also applies to: 350-432
🧰 Tools
🪛 Checkov (3.2.334)
[high] 1-933: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-933: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml
around lines 1-9, 350-432 and 701-705: the spec is missing a global security
scheme and array constraints and the new endpoint lacks auth/rate-limit
documentation; add a components.securitySchemes entry for the API key (header or
query as used elsewhere), apply a top-level security requirement so endpoints
inherit the API key auth, add maxItems (and any other relevant array constraints
like minItems/uniqueItems if applicable) to the params array referenced at lines
701-705, and update the getCompressedTokenAccountBalance operation (lines
350-432) to include authorization details and any rate-limit guidance in the
operation description and/or response headers documentation so clients know
required auth and limits.
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/TokenBalance' | ||
| UnsignedInteger: | ||
| type: integer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add maxItems constraint to array schema.
The items array in TokenBalanceListV2 (lines 138–142) lacks a maxItems constraint, which helps clients validate response boundaries and prevents unbounded array processing.
items:
type: array
maxItems: 1000 # Adjust based on your API limits
items:
$ref: '#/components/schemas/TokenBalance'🧰 Tools
🪛 Checkov (3.2.334)
[medium] 138-142: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml
around lines 138–142, the TokenBalanceListV2 array schema is missing a maxItems
constraint; add a maxItems (e.g., maxItems: 1000 or whatever your API limit is)
directly under the array schema to bound responses and help clients
validate/limit processing, keeping the existing items reference intact and
adjusting the numeric limit to match your service constraints.
| ``` | ||
| npm i -g mint | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add language specifier to fenced code block.
Line 19 code block should declare bash language for syntax highlighting.
-```
+```bash
npm i -g mint
-```
+```🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
19-19: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In zk-compression-docs/mintlify-docs/README.md around lines 19 to 21, the fenced
code block does not declare a language; update the opening backticks to include
the bash language specifier (e.g., change ``` to ```bash) so the snippet "npm i
-g mint" has proper bash syntax highlighting, and leave the closing backticks
unchanged.
| ``` | ||
| mint dev | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add language specifier to fenced code block.
Line 25 code block should declare bash language for syntax highlighting.
-```
+```bash
mint dev
-```
+```🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
25-25: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
In zk-compression-docs/mintlify-docs/README.md around lines 25 to 27, the fenced
code block containing the command `mint dev` is missing a language specifier;
update the opening backticks to include "bash" (i.e., ```bash) so the block
becomes a bash fenced code block for proper syntax highlighting.
| ### Resources | ||
| - [Mintlify documentation](https://mintlify.com/docs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add blank line before heading.
Markdown heading at line 42 needs a blank line above it for consistency with MDX standards.
- If a page loads as a 404: Make sure you are running in a folder with a valid `docs.json`.
+
### ResourcesCommittable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🤖 Prompt for AI Agents
In zk-compression-docs/mintlify-docs/README.md around lines 42 to 43, the
Markdown heading "### Resources" is missing a blank line above it; insert a
single blank line before that heading so the file follows MDX/Markdown spacing
conventions and renders consistently.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 24
♻️ Duplicate comments (29)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/how-to-combine-operations-in-one-transaction.mdx (2)
58-63: Fix bash comment syntax on line 62.Line 62 uses
##which is not valid bash comment syntax. Bash comments require a single#. Within the bash code block, this line should be:```bash # Start a local test validator light test-validator -## ensure you have the Solana CLI accessible in your system PATH +# ensure you have the Solana CLI accessible in your system PATH--- `260-262`: **Complete the Next Steps section with a link.** Line 262 references a transfer guide but provides no link. Add the link to guide users to the next step: ```diff ## Next Steps -Learn how to transfer compressed tokens. +Learn how to [transfer compressed tokens](../transfer-tokens).zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx (2)
37-41:⚠️ Verify version requirements are current and resolve compatibility mismatch.This flagged issue from previous review remains unresolved. The documented versions have compatibility concerns:
- Solana CLI 2.2.15 + Anchor CLI 0.31.1: These versions have a known mismatch. Anchor 0.31.1 officially recommends Solana 2.1.0, not 2.2.15.
- Potential obsolescence: Solana 2.2.17+ and Anchor 0.32.1+ are now stable. Pinning to older versions may confuse developers following this guide.
Update to either:
- Upgrade both to the latest stable (Solana 2.2.17+, Anchor 0.32.1+) and verify compatibility
- Or clarify why these specific older versions are required (if there's a technical reason)
What is the latest stable version of Anchor CLI and its recommended Solana CLI version?
189-200: Fix or remove the broken GitHub link in the program examples table.This flagged issue from the previous review remains unresolved. Line 192 references a GitHub link that returns HTTP 404:
| [basic-operations/native-rust](https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/native-rust) | Native Solana program implementation…Action required: Either:
- Remove this row if the example has been deprecated
- Point to the correct repository path if it was moved
- Replace with an active alternative example
Verify the updated link resolves (HTTP 200) before publishing.
#!/bin/bash # Description: Verify all program example links return HTTP 200 EXAMPLES=( "https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/anchor" "https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/native-rust" "https://github.com/Lightprotocol/program-examples/tree/main/counter/anchor" "https://github.com/Lightprotocol/program-examples/tree/main/counter/native" "https://github.com/Lightprotocol/program-examples/tree/main/counter/pinocchio" "https://github.com/Lightprotocol/program-examples/tree/main/create-and-update" "https://github.com/Lightprotocol/program-examples/tree/main/read-only" "https://github.com/Lightprotocol/program-examples/tree/main/account-comparison" "https://github.com/Lightprotocol/program-examples/tree/main/zk-id" ) echo "Verifying GitHub links for program examples..." for url in "${EXAMPLES[@]}"; do STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$url") EXAMPLE=$(echo "$url" | rev | cut -d'/' -f1 | rev) if [ "$STATUS" = "200" ]; then echo "✓ $EXAMPLE" else echo "✗ $EXAMPLE (HTTP $STATUS)" fi donezk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx (3)
936-939: Fix GitHub branding capitalization.Line 938 uses "Github" but the official branding is "GitHub". Apply this diff:
-* Full Example on Github to [create an Airdrop with Claim](https://github.com/Lightprotocol/example-compressed-claim). +* Full Example on GitHub to [create an Airdrop with Claim](https://github.com/Lightprotocol/example-compressed-claim).
17-24: Fix the broken internal link path.Line 19 references
/compressed-tokens/advanced-guides/how-to-create-an-airdrop-without-claim, but Mintlify will route the filecreate-an-airdrop.mdxto/compressed-tokens/advanced-guides/create-an-airdrop. This link is likely a self-reference within the CardGroup (advertising the programmatic approach). Either update it to the correct path or remove it if self-linking is not intended:<Card title="Custom Programmatic Airdrop" - link="/compressed-tokens/advanced-guides/how-to-create-an-airdrop-without-claim" + link="/compressed-tokens/advanced-guides/create-an-airdrop" icon="terminal" > Create a programmatic airdrop with this guide for more control. </Card>
931-941: Add a contextual header before the decompression script.The Advanced Features section jumps directly into the decompression code at line 940 with minimal context ("Add decompression of SPL Tokens with this script."). This area would benefit from a brief explanatory header and one-sentence introduction to clarify when/why users need this pattern (e.g., for custom claim UX where users opt to decompress). Example:
### Advanced Features <Info> Solana Wallets like Phantom and Backpack already support compressed tokens. Still, you can let users decompress to SPL via your Frontend to customize claims. </Info> * Full Example on GitHub to [create an Airdrop with Claim](https://github.com/Lightprotocol/example-compressed-claim). +### Optional: Decompression for Custom Claim UX + +If your claim interface requires users to decompress SPL tokens (for example, to sweep claims into a specific wallet), use this decompression workflow: + -* Add decompression of SPL Tokens with this script.zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-merge-compressed-token-accounts.mdx (1)
185-190: Unresolved: Prefer static import for BN over dynamic require.This issue was flagged in a previous review. Line 188 uses a dynamic
require('bn.js')call within the code, which is suboptimal. The code example should use a static import at the top of the code block and reference it directly.import { Keypair, PublicKey } from '@solana/web3.js'; import { createRpc } from '@lightprotocol/stateless.js'; +import BN from 'bn.js'; import { createMint, mintTo, mergeTokenAccounts } from '@lightprotocol/compressed-token';Then update line 186–190:
const totalBalance = accountsBefore.items.reduce( (sum, account) => sum.add(account.parsed.amount), - new (require('bn.js'))(0) + new BN(0) );zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx (1)
189-189: Unresolved: Fix spelling error "curent" → "current".This typo was flagged in a previous review and remains unfixed.
-* Include the curent account data. +* Include the current account data.zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/use-token-2022-with-compression.mdx (1)
114-114: Unresolved: Standardize API key placeholder formatting.This formatting inconsistency was flagged in a previous review. Line 114 uses escaped underscores (
<your\_api_key>), but line 120 in the code block uses unescaped format (<your_api_key>). Standardize to unescaped format in the display text to match the code block and avoid copy-paste confusion.-Follow these steps to create an RPC Connection. Replace \<your\_api_key> with your API key before running. +Follow these steps to create an RPC Connection. Replace `<your_api_key>` with your API key before running.zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx (1)
67-73: I need to verify the claims about broken URLs before finalizing this review. Let me check the current state of both the GitHub and zkcompression.com links:Fix outdated documentation links pointing to deprecated GitHub repository.
The review comment identifies a legitimate issue: documentation has been migrated from the developer repository to zkcompression.com. The GitHub URLs in lines 71–72 should be updated to reference the current documentation site.
-<Card horizontal icon="github" title="Compressed Tokens" href="https://github.com/Lightprotocol/developer-content/blob/main/zk-compression-docs/learn/compressed-tokens/overview.md"/> -<Card horizontal icon="github" title="Compressed PDAs" href="https://github.com/Lightprotocol/developer-content/blob/main/zk-compression-docs/learn/compressed-pdas/create-a-program-with-compressed-pdas.md"/> +<Card horizontal icon="github" title="Compressed Tokens" href="https://www.zkcompression.com/compressed-tokens/overview"/> +<Card horizontal icon="github" title="Compressed PDAs" href="https://www.zkcompression.com/compressed-pdas/create-a-program-with-compressed-pdas"/>zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/add-wallet-support-for-compressed-tokens.mdx (1)
361-362: ** Remove HTML<strong>tag artifact.**Line 361 contains an erroneous HTML
<strong>tag wrapping the mint declaration (flagged in a previous review). This formatting artifact should be removed for consistency with surrounding code block formatting.-<strong>const mint = new PublicKey("MINT ADDRESS"); // Replace with mint address -</strong> +const mint = new PublicKey("MINT ADDRESS"); // Replace with mint addresszk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx (1)
189-196: ** Fix spelling typo: "curent" → "current".**Line 193 contains a spelling error that was flagged in a previous review:
- * Include the curent account data. + * Include the current account data.zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx (1)
14-14: Fix locale violation: "afterwards" → "afterward"As flagged in the previous review, line 14 uses British English spelling "afterwards". For American English consistency across the documentation, change to "afterward".
- | [How to Compress complete SPL Token Accounts](/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts) | Compress complete SPL token accounts and reclaim rent afterwards | + | [How to Compress complete SPL Token Accounts](/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts) | Compress complete SPL token accounts and reclaim rent afterward |zk-compression-docs/mintlify-docs/README.md (3)
19-21: Add language specifier to fenced code blockAs flagged in the previous review, line 19 code block should declare bash language for syntax highlighting.
-``` +```bash npm i -g mint -``` +```
25-27: Add language specifier to fenced code blockAs flagged in the previous review, line 25 code block should declare bash language for syntax highlighting.
-``` +```bash mint dev -``` +```
42-43: Add blank line before headingAs flagged in the previous review, the Markdown heading at line 42 needs a blank line above it for consistency with MDX standards.
- If a page loads as a 404: Make sure you are running in a folder with a valid `docs.json`. + ### Resourceszk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx (1)
82-84: Next Steps section is vague; add a specific guide link.As flagged in the previous review, line 84 states "Create a compressed account" without a corresponding link. This should direct users to a specific guide to improve discoverability and user flow.
## Next Steps -Create a compressed account. +Ready to start? [Create your first compressed account](/compressed-pdas/guides/how-to-create-compressed-accounts).zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-accounts.mdx (2)
6-6: Remove redundant phrase: "Compressed Tokens" appears redundantly at end of sentence.Line 6 ends with a redundant phrase. The sentence already refers to compressed tokens and should not end with "Compressed Tokens". Rewrite for clarity and grammatical correctness:
-Compressed token accounts store ownership information for compressed tokens like regular token accounts with two core differences. Compressed Tokens +Compressed token accounts store ownership information for compressed tokens, similar to regular token accounts. However, they have two key differences:
1-17: File is critically incomplete—missing substantial content.This file contains only 17 lines and appears truncated. The AI summary indicates this should be a comprehensive guide with:
- Complete explanation of how
mintTo()andtransfer()create compressed token accounts (currently only mentioned without detail)- Prerequisites and dependencies installation section
- Full TypeScript/Anchor/Native Rust code examples with step-by-step setup
- Address derivation and initialization workflow details
- Troubleshooting and advanced configuration sections
- Links to source code and next steps
Peer guides in the same directory (e.g.,
how-to-mint-compressed-tokens.mdx,how-to-transfer-compressed-token.mdx) range from 207–496 lines and demonstrate the expected depth and structure.This file must be completed before merge. The guide currently ends abruptly after line 17, leaving users without actionable instructions or code examples.
zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx (1)
139-139: Use American English spelling "afterward" instead of "afterwards".In American English, "afterward" (without the 's') is the standard spelling for the adverb form.
-| [Compress Complete SPL Token Accounts](/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts) | Compress complete SPL token accounts and reclaim rent afterwards | +| [Compress Complete SPL Token Accounts](/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts) | Compress complete SPL token accounts and reclaim rent afterward |zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx (1)
496-496: Fix American English spelling: "afterwards" → "afterward".Line 496 uses the British English variant. Standardize to American English:
- Learn how to compress complete token accounts in one transaction and reclaim rent afterwards. + Learn how to compress complete token accounts in one transaction and reclaim rent afterward.zk-compression-docs/mintlify-docs/index.mdx (2)
87-89: Replace embedded Google Drive iframe with a direct link for security and reliability.Embedding external iframes (particularly Google Drive) introduces several concerns:
- Security/Privacy: Google Drive embeds expose user IP and analytics data to Google.
- Reliability: If the share link is revoked, the embed silently breaks without user notification.
- Performance: Iframe loading delays page render and adds external dependency latency.
Replace the iframe with a direct link card:
-<Frame> - <iframe src="https://drive.google.com/file/d/1-oxTqNMQX8LqP8FYSCDiG3YzIixnPbiN/preview" width="100%" height="100%" allow="autoplay" className="rounded-xl aspect-video"></iframe> -</Frame> +<Card + title="Watch: ZK Compression Overview" + href="https://drive.google.com/file/d/1-oxTqNMQX8LqP8FYSCDiG3YzIixnPbiN/view" + icon="video" +> + Learn the fundamentals of ZK Compression in this overview video. +</Card>This approach provides a visible link users can click, improving transparency and allowing users to handle link expiration gracefully.
11-11: Consider simplifying wordy phrase: "at a fraction of the cost" → "at significantly lower cost".The phrase "at a fraction of the cost" is somewhat verbose. A more concise alternative improves readability:
- ZK Compression is a Solana account primitive that lets you create tokens and PDAs at a fraction of the cost. + ZK Compression is a Solana account primitive that lets you create tokens and PDAs at significantly lower cost.This maintains clarity while improving brevity.
zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml (1)
129-131: Add maxItems constraint to prevent unbounded responses.The
itemsarray in theOwnerBalanceListschema lacks amaxItemsconstraint. Without this, clients could receive unbounded arrays, potentially causing performance degradation. Add a reasonable limit based on your indexer's capacity:items: type: array + maxItems: 1000 items: $ref: '#/components/schemas/OwnerBalance'Adjust
maxItemsto reflect your actual API pagination limit and document this constraint for API consumers.zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml (1)
278-282: Add maxItems constraint to filters array to prevent unbounded requests.The
filtersarray in thegetCompressedAccountsByOwnerrequest lacks amaxItemsconstraint. Without this limit, clients could send unbounded filter arrays, potentially causing performance degradation or DDoS. Add a reasonable maximum:filters: type: array + maxItems: 10 items: $ref: '#/components/schemas/FilterSelector'Adjust
maxItemsbased on your indexer's performance capacity and document the constraint for API consumers.zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx (3)
135-135: Remove duplicate verb: "optimize optimize" → "optimizes".Same issue as line 97: duplicated word from copy/paste.
-**V2** optimizes optimize compute unit consumption by up to 70% and is **currently on Devnet**. +**V2** optimizes compute unit consumption by up to 70% and is **currently on Devnet**.
114-115: Reduce word repetition: vary sentence openings in address tree section.Three successive sentences begin with "Address", which reduces readability. Combine or rephrase to improve flow.
-Address trees store derived addresses in an indexed structure. Unlike state trees that store account hashes, address trees store the actual address values along with pointers to maintain sorted order. +Address trees store derived addresses in an indexed structure, distinct from state trees that store account hashes. These trees hold the actual address values along with pointers to maintain sorted order.
97-97: Remove duplicate verb "optimize" from line 97.The documentation contains a clear typo where the word "optimize" is duplicated. Line 97 currently reads "V2 optimizes optimize compute unit consumption..." which is grammatically incorrect. The second "optimize" must be removed, leaving only the verb "optimizes."
-**V2** optimizes optimize compute unit consumption by up to 70% and is **currently on Devnet**. +**V2** optimizes compute unit consumption by up to 70% and is **currently on Devnet**.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (105)
zk-compression-docs/mintlify-docs/favicon.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (2).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (3).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs (4).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-cypherpunk-docs.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-germany 1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-germany.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x-pt 1-2.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000xHackathon_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/1000x_35_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Build_Anything.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Design ohne Titel-2.mp4is excluded by!**/*.mp4and included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Group 632668.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light Protocol v2 - Batched Merkle trees (3).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light Protocol v2 - Batched Merkle trees (4) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Light-Protocol-v2 -Batched-Merkle-trees-(4).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ScaleAnything (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ScaleAnything.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-10 at 06.22.52.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-10 at 06.37.41.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Screenshot 2024-05-13 at 14.40.53.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled (5).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled (6).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled-4.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/Untitled.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/banner-image.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/burn-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-burn (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-close (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-create (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-reinit (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-update (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/client-update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/close-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/create-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-banner.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/ger-card.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (1) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (10).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (11).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (12).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (13).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (14).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (16).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (17).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (18).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (19).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (2) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (21).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (24).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (25).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (3) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (32).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (34).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (4).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (5).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (6).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (7) (1).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (7).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (8).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image (9).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-(2).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-(3).pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-20.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-22.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/image-23.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-burn-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-burn.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-close.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-closes.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-create-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-create.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-reinit-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-update-1.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/program-update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card (1).svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-card.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/pt-new.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/reinit-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/reinit.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner Large 2.jpegis excluded by!**/*.jpegand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner Large.jpegis excluded by!**/*.jpegand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/solanazero-banner.jpgis excluded by!**/*.jpgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/update-dark.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/update.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/zkc24-ezgif.com-video-to-gif-converter.gifis excluded by!**/*.gifand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/images/zkcompression_1000x_banner.pngis excluded by!**/*.pngand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/logo/dark.svgis excluded by!**/*.svgand included byzk-compression-docs/**zk-compression-docs/mintlify-docs/logo/light.svgis excluded by!**/*.svgand included byzk-compression-docs/**
📒 Files selected for processing (54)
zk-compression-docs/mintlify-docs/LICENSE(1 hunks)zk-compression-docs/mintlify-docs/README.md(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-close-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-reinitialize-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-pdas/program-examples.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/add-wallet-support-for-compressed-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop-with-claim.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-node-js.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-web-client.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/how-to-combine-operations-in-one-transaction.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/use-token-2022-with-compression.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-approve-and-revoke-delegate-authority.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-complete-spl-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-and-register-a-mint-account-for-compression.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-merge-compressed-token-accounts.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-mint-compressed-tokens.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-transfer-compressed-token.mdx(1 hunks)zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx(1 hunks)zk-compression-docs/mintlify-docs/deepwiki.mdx(1 hunks)zk-compression-docs/mintlify-docs/discord.mdx(1 hunks)zk-compression-docs/mintlify-docs/docs.json(1 hunks)zk-compression-docs/mintlify-docs/github.mdx(1 hunks)zk-compression-docs/mintlify-docs/index.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/ai-tools-guide.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/compressed-account-model.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx(1 hunks)zk-compression-docs/mintlify-docs/learn/core-concepts/transaction-lifecycle.mdx(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccount.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountBalance.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountProof.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedBalanceByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByDelegate.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwner.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml(1 hunks)zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
zk-compression-docs/**/*.md
⚙️ CodeRabbit configuration file
zk-compression-docs/**/*.md: Cross-verify documentation with source code using CLAUDE.md mappings.
Prioritize accuracy over assumptions - always check actual source files.
Files:
zk-compression-docs/mintlify-docs/README.md
🪛 Checkov (3.2.334)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountsByOwner.yaml
[high] 1-789: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-789: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 278-282: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml
[high] 1-146: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-146: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 138-142: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedMintTokenHolders.yaml
[high] 1-142: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-142: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 129-133: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml
[high] 1-1517: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1517: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1149-1153: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByDelegate.yaml
[high] 1-673: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-673: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 468-472: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccount.yaml
[high] 1-167: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-167: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountProof.yaml
[high] 1-132: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-132: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 116-120: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountBalance.yaml
[high] 1-933: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-933: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 701-705: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml
[high] 1-1639: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1639: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1263-1267: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedAccountBalance.yaml
[high] 1-119: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-119: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwner.yaml
[high] 1-1294: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1294: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 1044-1048: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedBalanceByOwner.yaml
[high] 1-1145: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1145: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 925-929: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenAccountsByOwner.yaml
[high] 1-554: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-554: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
[medium] 349-353: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
🪛 LanguageTool
zk-compression-docs/mintlify-docs/learn/core-concepts/considerations.mdx
[style] ~25-~25: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...ber of writes to the same account to be very large (>>1000x). - The account stores large a...
(EN_WEAK_ADJECTIVE)
[uncategorized] ~70-~70: The official name of this software platform is spelled with a capital “H”.
Context: ...xt step and start building! <Card horizontal icon="github" title="Compressed Tokens" href="https:...
(GITHUB)
zk-compression-docs/mintlify-docs/github.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: GitHub url: "https://github.com/Lightprotocol" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/learn/core-concepts/merkle-trees-validity-proofs.mdx
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...Hash"> Only this root hash is stored on chain as single value on chain to secure...
(QB_NEW_EN_HYPHEN)
[grammar] ~31-~31: Use a hyphen to join words.
Context: ...sh is stored on chain as single value on chain to secure the integrity of all com...
(QB_NEW_EN_HYPHEN)
[grammar] ~41-~41: Use a hyphen to join words.
Context: ... For compressed Solana accounts, the 32 byte leaf hashes effectively mirror the ...
(QB_NEW_EN_HYPHEN)
[style] ~114-~114: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... Address trees store derived addresses in an ind...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx
[grammar] ~11-~11: Use a hyphen to join words.
Context: ...y write to the account. * For Solana PDA like behavior your compressed account ne...
(QB_NEW_EN_HYPHEN)
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-create-compressed-token-pools-for-mint-accounts.mdx
[style] ~135-~135: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 1290 characters long)
Context: ...pt to create token pools for an SPL mint! ```typescript create-token-pools.ts hi...
(EN_EXCESSIVE_EXCLAMATION)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-web-client.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "Example Web Client" url: "https://github.com/Lightprotocol/example-web-client" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/deepwiki.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: DeepWiki url: "https://deepwiki.com/Lightprotocol/light-protocol" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/example-node-js.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: "Example Node.js Client" url: "https://github.com/Lightprotocol/example-nodejs-client" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: Client Library description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples. ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/compressed-tokens/guides.mdx
[locale-violation] ~14-~14: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ete SPL token accounts and reclaim rent afterwards | | [How to Merge Compressed Accounts](...
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-burn-compressed-accounts.mdx
[grammar] ~189-~189: Ensure spelling is correct
Context: ...uction_data.account_meta* Include the curent account data. * Anchor: BuildMyComp...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
zk-compression-docs/mintlify-docs/compressed-tokens/overview.mdx
[locale-violation] ~139-~139: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...ete SPL token accounts and reclaim rent afterwards | | [Merge Compressed Account...
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx
[uncategorized] ~938-~938: The official name of this software platform is spelled with a capital “H”.
Context: ...mize claims. * Full Example on Github to [create an Airdrop with Claim](https...
(GITHUB)
zk-compression-docs/mintlify-docs/index.mdx
[style] ~11-~11: ‘at a fraction of’ might be wordy. Consider a shorter alternative.
Context: ...ve that lets you create tokens and PDAs at a fraction of the cost. Scale your application to mil...
(EN_WORDINESS_PREMIUM_AT_A_FRACTION_OF)
zk-compression-docs/mintlify-docs/compressed-tokens/guides/how-to-compress-and-decompress-spl-tokens.mdx
[locale-violation] ~496-~496: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ...nts in one transaction and reclaim rent afterwards.
(AFTERWARDS_US)
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop-with-claim.mdx
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: Create an Airdrop with Claim url: "https://github.com/Lightprotocol/example-compressed-claim" ---
(QB_NEW_DE)
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-update-compressed-accounts.mdx
[grammar] ~193-~193: Ensure spelling is correct
Context: ...es the output state tree. * Include the curent account data. * Anchor: Pass `current...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
zk-compression-docs/mintlify-docs/README.md
19-19: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
25-25: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
42-42: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
| --- | ||
| title: Client Library | ||
| description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples. | ||
| --- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
File content appears incomplete—no body after front matter.
The front matter promises "Rust and Typescript client guides" with "step-by-step implementation and full code examples," but the file contains no body content at all. This creates a disconnect between the metadata and the actual page structure.
Verify whether:
- This file should contain introductory content or links to separate client library guides
- The body content was inadvertently omitted during the Mintlify migration
- This is intentionally a stub/placeholder to be filled in later
Typo in description: "Typescript" should be "TypeScript" (capital S) to match standard naming conventions and consistency with the broader tech community.
Apply this diff to fix the capitalization:
-description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples.
+description: Overview to Rust and TypeScript client guides. Guides include step-by-step implementation and full code examples.🏁 Script executed:
#!/bin/bash
# Inspect the actual file content to verify state
echo "=== File Content ==="
cat zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx
echo -e "\n=== File Stats ==="
wc -l zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx
echo -e "\n=== Directory Listing ==="
fd --type f . zk-compression-docs/mintlify-docs/compressed-pdas/ | head -20
echo -e "\n=== TypeScript vs Typescript Usage in Docs ==="
rg -n "ypeScript" zk-compression-docs/mintlify-docs/ | head -15Length of output: 529
🏁 Script executed:
#!/bin/bash
# Check repository structure and locate documentation
echo "=== Repository Root Contents ==="
ls -la | head -20
echo -e "\n=== Search for zk-compression-docs Directory ==="
find . -maxdepth 2 -name "*zk-compression*" -o -name "*docs*" -type d 2>/dev/null | head -10
echo -e "\n=== Find All .mdx Files ==="
fd -e mdx | head -20
echo -e "\n=== Check for compressed-pdas Directory ==="
fd "compressed-pdas" -type dLength of output: 2702
🏁 Script executed:
#!/bin/bash
# Properly inspect the file content
echo "=== File Content ==="
cat "zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx"
echo -e "\n=== File Line Count ==="
wc -l "zk-compression-docs/mintlify-docs/compressed-pdas/client-library.mdx"
echo -e "\n=== Check TypeScript Naming in Docs ==="
rg -n "TypeScript|Typescript" zk-compression-docs/mintlify-docs --type mdx | head -20
echo -e "\n=== Inspect Similar Index Files ==="
cat "zk-compression-docs/mintlify-docs/compressed-pdas/guides.mdx"Length of output: 3269
🏁 Script executed:
#!/bin/bash
# Search for TypeScript naming across entire codebase
echo "=== TypeScript vs Typescript in Codebase ==="
rg -n "TypeScript|Typescript" zk-compression-docs/ | head -30
echo -e "\n=== Check Rust references for pattern ==="
rg -n "Rust and" zk-compression-docs/mintlify-docs --max-count 5Length of output: 12263
File missing promised body content—description incompleteness.
The front matter describes "Rust and Typescript client guides" with "step-by-step implementation and full code examples," but the file contains only YAML metadata with zero body content. Compare this to guides.mdx in the same directory, which provides table-based overviews and structured navigation. Verify whether:
- This file should contain introductory content or link structure for client guides
- Body content was omitted during migration
Fix TypeScript capitalization: The description uses "Typescript" but the standard throughout the codebase is "TypeScript" (capital S). Lines 3 in client-development.mdx and multiple other files use the proper capitalization.
-description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples.
+description: Overview to Rust and TypeScript client guides. Guides include step-by-step implementation and full code examples.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| --- | |
| title: Client Library | |
| description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples. | |
| --- | |
| --- | |
| title: Client Library | |
| description: Overview to Rust and TypeScript client guides. Guides include step-by-step implementation and full code examples. | |
| --- |
🧰 Tools
🪛 LanguageTool
[grammar] ~1-~1: Hier könnte ein Fehler sein.
Context: --- title: Client Library description: Overview to Rust and Typescript client guides. Guides include step-by-step implementation and full code examples. ---
(QB_NEW_DE)
| **Rust Crates** | ||
|
|
||
| * `light-sdk` - Core SDK for compressed accounts in native and anchor programs | ||
| * `light-sdk-pinocchio` Core SDK for compressed accounts in pinocchio programs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor formatting issue in Rust crates list.
Line 86 is missing a dash separator between the package name and description, inconsistent with the line above and below.
Apply this diff:
-* `light-sdk-pinocchio` Core SDK for compressed accounts in pinocchio programs
+* `light-sdk-pinocchio` - Core SDK for compressed accounts in pinocchio programs📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| * `light-sdk-pinocchio` Core SDK for compressed accounts in pinocchio programs | |
| * `light-sdk-pinocchio` - Core SDK for compressed accounts in pinocchio programs |
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-pdas/create-a-program-with-compressed-pdas.mdx
around line 86, the Rust crates list item "`light-sdk-pinocchio` Core SDK for
compressed accounts in pinocchio programs" is missing the dash separator between
the package name and its description; update that line to match surrounding list
items by inserting a " - " (dash and space) after the backticked crate name so
it reads like the other entries (e.g., "`light-sdk-pinocchio` - Core SDK for
compressed accounts in pinocchio programs").
| * Compressed and regular Solana accounts share the same functionality and are fully composable. | ||
| * A compressed account has two identifiers: the account hash and its address (optional). In comparison, regular Solana accounts are identified by their address. | ||
| * The account hash is not persistent and changes with every write to the account. | ||
| * For Solana PDA like behavior your compressed account needs an address as persistent identifier.\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Hyphenate compound adjective: "PDA like" → "PDA-like".
Line 11 uses an open compound adjective that should be hyphenated:
- For Solana PDA like behavior your compressed account needs an address as persistent identifier.\
+ For Solana PDA-like behavior your compressed account needs an address as persistent identifier.\📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| * For Solana PDA like behavior your compressed account needs an address as persistent identifier.\ | |
| * For Solana PDA-like behavior your compressed account needs an address as persistent identifier.\ |
🧰 Tools
🪛 LanguageTool
[grammar] ~11-~11: Use a hyphen to join words.
Context: ...y write to the account. * For Solana PDA like behavior your compressed account ne...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-pdas/guides/how-to-create-compressed-accounts.mdx
around line 11, the phrase "PDA like" should be hyphenated as "PDA-like"; update
the text to read "* For Solana PDA-like behavior your compressed account needs
an address as persistent identifier." to use the correct compound adjective
form.
| ## Basic Operations | ||
|
|
||
| * [**basic-operations/anchor**](https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/anchor) - Anchor program with Rust and TypeScript tests | ||
| * [**basic-operations/native-rust**](https://github.com/Lightprotocol/program-examples/tree/main/basic-operations/native-rust) - Native Solana program with `light-sdk` and Rust tests. | ||
|
|
||
| <Info> | ||
| Basic Operations include: | ||
| - **create** - Initialize a new compressed account. | ||
| - **update** - Modify data in an existing compressed account. | ||
| - **close** - Clear account data and preserve its address. | ||
| - **reinit** - Reinitialize a closed account with the same address. | ||
| - **burn** - Permanently delete a compressed account. | ||
| </Info> | ||
|
|
||
| ## Counter Program | ||
|
|
||
| Full compressed account lifecycle (create, increment, decrement, reset, close): | ||
|
|
||
| * [**counter/anchor**](https://github.com/Lightprotocol/program-examples/tree/main/counter/anchor) - Anchor program with Rust and TypeScript tests | ||
| * [**counter/native**](https://github.com/Lightprotocol/program-examples/tree/main/counter/native) - Native Solana program with `light-sdk` and Rust tests. | ||
| * [**counter/pinocchio**](https://github.com/Lightprotocol/program-examples/tree/main/counter/pinocchio) - Pinocchio program with `light-sdk-pinocchio` and Rust tests. | ||
|
|
||
| ## Create-and-update Program | ||
|
|
||
| * [**create-and-update**](https://github.com/Lightprotocol/program-examples/tree/main/create-and-update) - Create a new compressed account and update an existing compressed account with a single validity proof in one instruction. | ||
|
|
||
| ## Create-and-read Program | ||
|
|
||
| * [**read-only**](https://github.com/Lightprotocol/program-examples/tree/main/read-only) - Create a new compressed account and read it on-chain. | ||
|
|
||
| ## Compare compressed vs uncompressed Program | ||
|
|
||
| * [**account-comparison**](https://github.com/Lightprotocol/program-examples/tree/main/account-comparison) - Compare compressed vs regular Solana accounts. | ||
|
|
||
| ## ZK-ID Program | ||
|
|
||
| * [**zk-id**](https://github.com/Lightprotocol/program-examples/tree/main/zk-id) - A minimal Solana program that uses zero-knowledge proofs for identity verification with compressed accounts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify GitHub repository paths and program descriptions against source.
All program example links reference the Lightprotocol/program-examples repository. Verify that:
- All directory paths exist (e.g.,
basic-operations/anchor,counter/pinocchio, etc.) - The descriptions accurately reflect each program's functionality
- No programs have been removed or relocated in the referenced repository
Run this script to verify the repository structure:
🏁 Script executed:
#!/bin/bash
# Description: Verify program-examples repository structure matches documentation
# Check if the main repository exists and fetch its structure
gh repo view Lightprotocol/program-examples --json description
# List all top-level directories
gh api repos/Lightprotocol/program-examples/contents | jq -r '.[] | select(.type=="dir") | .name' | sort
# Verify key paths mentioned in the docs exist
PATHS=(
"basic-operations/anchor"
"basic-operations/native-rust"
"counter/anchor"
"counter/native"
"counter/pinocchio"
"create-and-update"
"read-only"
"account-comparison"
"zk-id"
)
for path in "${PATHS[@]}"; do
gh api repos/Lightprotocol/program-examples/contents/$path > /dev/null 2>&1 && echo "✓ $path exists" || echo "✗ $path NOT FOUND"
doneLength of output: 350
🏁 Script executed:
#!/bin/bash
# Check what subdirectories actually exist under basic-operations
gh api repos/Lightprotocol/program-examples/contents/basic-operations | jq -r '.[] | select(.type=="dir") | .name' | sortLength of output: 13
Update "basic-operations/native-rust" to "basic-operations/native" on line 19.
The program-examples repository contains basic-operations/native (not native-rust). All other 8 program paths are correct and verified.
🤖 Prompt for AI Agents
In zk-compression-docs/mintlify-docs/compressed-pdas/program-examples.mdx around
lines 15 to 51, the link text and path at line 19 incorrectly reference
"basic-operations/native-rust"; change it to "basic-operations/native" so the
markdown points to the actual repository path (update both the displayed link
text and the URL segment to use "native" instead of "native-rust").
| <Tabs> | ||
| <Tab title="Implementation Steps"> | ||
|
|
||
| <Check> | ||
| **What you'll build:** A test airdrop sending compressed tokens to 3 recipients on your local validator. | ||
| </Check> | ||
|
|
||
| <Steps> | ||
| <Step title="Prerequisites"> | ||
|
|
||
| Make sure you have dependencies and developer environment set up! | ||
|
|
||
| <Info> | ||
| System Requirements | ||
|
|
||
| * **Node.js >= 20.18.0** (required by latest Solana packages) | ||
| * npm or yarn package manager | ||
| </Info> | ||
|
|
||
| <Accordion title="Prerequisites & Setup"> | ||
|
|
||
| ### Dependencies | ||
|
|
||
| ```bash | ||
| npm install --save-dev typescript tsx @types/node && \ | ||
| npm install --save \ | ||
| @lightprotocol/stateless.js \ | ||
| @lightprotocol/compressed-token \ | ||
| @solana/web3.js \ | ||
| @solana/spl-token | ||
| ``` | ||
|
|
||
| **Alternatives:** | ||
|
|
||
| ```bash | ||
| yarn add --dev typescript tsx @types/node && \ | ||
| yarn add \ | ||
| @lightprotocol/stateless.js \ | ||
| @lightprotocol/compressed-token \ | ||
| @solana/web3.js \ | ||
| @solana/spl-token | ||
| ``` | ||
|
|
||
| ```bash | ||
| pnpm add --save-dev typescript tsx @types/node && \ | ||
| pnpm add \ | ||
| @lightprotocol/stateless.js \ | ||
| @lightprotocol/compressed-token \ | ||
| @solana/web3.js \ | ||
| @solana/spl-token | ||
| ``` | ||
|
|
||
| #### Developer Environment | ||
|
|
||
| By default, this guide uses Localnet. | ||
|
|
||
| ```bash | ||
| # Install the development CLI | ||
| npm install @lightprotocol/zk-compression-cli | ||
| ``` | ||
|
|
||
| ```bash | ||
| # Start a local test validator | ||
| light test-validator | ||
| ``` | ||
|
|
||
| ```typescript | ||
| // createRpc() defaults to local test validator endpoints | ||
| import { | ||
| Rpc, | ||
| createRpc, | ||
| } from "@lightprotocol/stateless.js"; | ||
|
|
||
| const connection: Rpc = createRpc(); | ||
|
|
||
| async function main() { | ||
| let slot = await connection.getSlot(); | ||
| console.log(slot); | ||
|
|
||
| let health = await connection.getIndexerHealth(slot); | ||
| console.log(health); | ||
| // "Ok" | ||
| } | ||
|
|
||
| main(); | ||
| ``` | ||
|
|
||
| **Alternative: Using Devnet** | ||
|
|
||
| Follow these steps to create an RPC Connection. Replace \<your\_api\_key> with your API key before running. | ||
|
|
||
| ```typescript | ||
| import { createRpc } from "@lightprotocol/stateless.js"; | ||
|
|
||
| // Helius exposes Solana and Photon RPC endpoints through a single URL | ||
| const RPC_ENDPOINT = "https://devnet.helius-rpc.com?api-key=<your_api_key>"; | ||
| const connection = createRpc(RPC_ENDPOINT, RPC_ENDPOINT, RPC_ENDPOINT); | ||
|
|
||
| console.log("Connection created!"); | ||
| console.log("RPC Endpoint:", RPC_ENDPOINT); | ||
| ``` | ||
|
|
||
| </Accordion> | ||
| </Step> | ||
|
|
||
| <Step title="Mint SPL tokens to your wallet"> | ||
|
|
||
| Run this `mint-spl-tokens.ts` to mint SPL tokens to your wallet. | ||
|
|
||
|
|
||
| ```typescript mint-spl-tokens.ts expandable | ||
| // Mint SPL Tokens for Airdrop - LocalNet | ||
| // 1. Load wallet and connect to local validator | ||
| // 2. Create SPL mint with token pool for compression via createMint() | ||
| // 3. Create ATA and mint SPL tokens to sender for airdrop preparation | ||
| // 4. Output mint address for use in simple-airdrop.ts | ||
|
|
||
| import { Keypair } from "@solana/web3.js"; | ||
| import { createRpc } from "@lightprotocol/stateless.js"; | ||
| import { | ||
| createMint, | ||
| getOrCreateAssociatedTokenAccount, | ||
| mintTo, | ||
| } from "@solana/spl-token"; | ||
| import { createTokenPool } from "@lightprotocol/compressed-token"; | ||
| import * as fs from 'fs'; | ||
| import * as os from 'os'; | ||
|
|
||
| // Step 1: Setup local connection and load wallet | ||
| const connection = createRpc(); // defaults to localhost:8899 | ||
|
|
||
| // Load wallet from filesystem | ||
| const walletPath = `${os.homedir()}/.config/solana/id.json`; | ||
| const secretKey = JSON.parse(fs.readFileSync(walletPath, 'utf8')); | ||
| const payer = Keypair.fromSecretKey(Buffer.from(secretKey)); | ||
|
|
||
| (async () => { | ||
| // Step 2: Create SPL mint with token pool for compression | ||
| const mint = await createMint(connection, payer, payer.publicKey, null, 9); | ||
| const poolTxId = await createTokenPool(connection, payer, mint); | ||
| console.log(`Mint address: ${mint.toBase58()}`); | ||
| console.log(`TokenPool created: ${poolTxId}`); | ||
|
|
||
| // Step 3: Create associated token account for sender | ||
| // The sender will send tokens from this account to the recipients as compressed tokens. | ||
| const ata = await getOrCreateAssociatedTokenAccount( | ||
| connection, | ||
| payer, | ||
| mint, // SPL mint with token pool for compression | ||
| payer.publicKey | ||
| ); | ||
| console.log(`ATA address: ${ata.address.toBase58()}`); | ||
|
|
||
| // Step 4: Mint SPL tokens to ATA. | ||
| // The sender will send tokens from this account to the recipients as compressed tokens. | ||
| const mintToTxId = await mintTo( | ||
| connection, | ||
| payer, | ||
| mint, // SPL mint with token pool for compression | ||
| ata.address, // distributor ATA | ||
| payer.publicKey, | ||
| 100_000_000_000 // amount: 100 tokens with 9 decimals | ||
| ); | ||
| console.log(`\nSPL tokens minted and ready for distribution!`); | ||
| console.log(`Transaction: ${mintToTxId}`); | ||
|
|
||
| console.log(`\nCopy mint address to your airdrop script: ${mint.toBase58()}`); | ||
| })(); | ||
| ``` | ||
| </Step> | ||
|
|
||
| <Step title="Execute the Airdrop"> | ||
|
|
||
| Next, distribute the SPL tokens to all recipients. | ||
|
|
||
| <Warning> | ||
| Ensure you have the latest `@lightprotocol/stateless.js` and `@lightprotocol/compressed-token` versions `≥ 0.21.0`! | ||
| </Warning> | ||
|
|
||
| ```typescript simple-airdrop.ts expandable highlight={29-30,45,74,100} | ||
| // Simple Airdrop - LocalNet | ||
| // 1. Load wallet and select compression infrastructure with getStateTreeInfos() and getTokenPoolInfos() | ||
| // 2. Build CompressedTokenProgram.compress() instruction for multiple recipients in one transaction | ||
| // 3. Execute transaction with compute budget and confirm compression operation with sendAndConfirmTx() | ||
| // 4. Verify distribution via getCompressedTokenAccountsByOwner | ||
|
|
||
| import { Keypair, PublicKey, ComputeBudgetProgram } from "@solana/web3.js"; | ||
| import { | ||
| CompressedTokenProgram, | ||
| getTokenPoolInfos, | ||
| selectTokenPoolInfo, | ||
| } from "@lightprotocol/compressed-token"; | ||
| import { | ||
| bn, | ||
| buildAndSignTx, | ||
| calculateComputeUnitPrice, | ||
| createRpc, | ||
| dedupeSigner, | ||
| Rpc, | ||
| selectStateTreeInfo, | ||
| sendAndConfirmTx, | ||
| } from "@lightprotocol/stateless.js"; | ||
| import { getOrCreateAssociatedTokenAccount } from "@solana/spl-token"; | ||
| import * as fs from 'fs'; | ||
| import * as os from 'os'; | ||
|
|
||
| // Step 1: Setup local connection and load wallet | ||
| const connection: Rpc = createRpc(); // defaults to localhost:8899 | ||
| const mint = new PublicKey("MINTADDRESS"); // Replace with mint address from mint-spl-tokens.ts | ||
| // Local uses file wallet. Use constants from .env file in production | ||
| const walletPath = `${os.homedir()}/.config/solana/id.json`; | ||
| const secretKey = JSON.parse(fs.readFileSync(walletPath, 'utf8')); | ||
| const payer = Keypair.fromSecretKey(Buffer.from(secretKey)); | ||
| const owner = payer; | ||
|
|
||
| (async () => { | ||
| // Step 2: Select state tree and token pool | ||
| const activeStateTrees = await connection.getStateTreeInfos(); | ||
| const treeInfo = selectStateTreeInfo(activeStateTrees); | ||
|
|
||
| const infos = await getTokenPoolInfos(connection, mint); | ||
| const info = selectTokenPoolInfo(infos); | ||
|
|
||
| // Step 3: Get or create source token account for distribution | ||
| // The sender will send tokens from this account to the recipients as compressed tokens. | ||
| const sourceTokenAccount = await getOrCreateAssociatedTokenAccount( | ||
| connection, | ||
| payer, | ||
| mint, // SPL mint with token pool for compression | ||
| payer.publicKey | ||
| ); | ||
|
|
||
| // Step 4: Define airdrop recipients and amounts | ||
| const airDropAddresses = [ | ||
| Keypair.generate().publicKey, | ||
| Keypair.generate().publicKey, | ||
| Keypair.generate().publicKey, | ||
| ]; | ||
|
|
||
| const amounts = [ | ||
| bn(20_000_000_000), // 20 tokens | ||
| bn(30_000_000_000), // 30 tokens | ||
| bn(40_000_000_000), // 40 tokens | ||
| ]; | ||
|
|
||
| const totalAmount = amounts.reduce((sum, amt) => sum + amt.toNumber(), 0); | ||
| console.log(`Distributing ${totalAmount / 1e9} compressed tokens to ${airDropAddresses.length} recipients`); | ||
|
|
||
| const initialSplBalance = await connection.getTokenAccountBalance(sourceTokenAccount.address); | ||
| console.log(`Sender initial balance: ${initialSplBalance.value.uiAmount} tokens`); | ||
|
|
||
| // Step 5: Build transaction with compute budget and compression instruction | ||
| const instructions = []; | ||
| // Set compute unit limits based on recipient count (estimated 120k CU per recipient) | ||
| instructions.push( | ||
| ComputeBudgetProgram.setComputeUnitLimit({ units: 120_000 * airDropAddresses.length }), | ||
| ComputeBudgetProgram.setComputeUnitPrice({ | ||
| microLamports: calculateComputeUnitPrice(20_000, 120_000 * airDropAddresses.length), // dynamic priority fee | ||
| }) | ||
| ); | ||
|
|
||
| // Create compression instruction for multiple recipients in one transaction | ||
| const compressInstruction = await CompressedTokenProgram.compress({ | ||
| payer: payer.publicKey, | ||
| owner: owner.publicKey, | ||
| source: sourceTokenAccount.address, // source ATA holding SPL tokens | ||
| toAddress: airDropAddresses, // recipient addresses for compressed tokens | ||
| amount: amounts, // different amounts for each recipient | ||
| mint, // SPL mint with token pool for compression | ||
| tokenPoolInfo: info, | ||
| outputStateTreeInfo: treeInfo, // destination state tree | ||
| }); | ||
| instructions.push(compressInstruction); | ||
|
|
||
| // Step 6: Sign and send transaction | ||
| const additionalSigners = dedupeSigner(payer, [owner]); | ||
| const { blockhash } = await connection.getLatestBlockhash(); | ||
| const tx = buildAndSignTx(instructions, payer, blockhash, additionalSigners); | ||
|
|
||
| // For production: Add address lookup table to reduce transaction size and fees | ||
| // const lookupTableAddress = new PublicKey("9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ"); // mainnet // or "qAJZMgnQJ8G6vA3WRcjD9Jan1wtKkaCFWLWskxJrR5V" for devnet | ||
| // const lookupTableAccount = (await connection.getAddressLookupTable(lookupTableAddress)).value!; | ||
| // const tx = buildAndSignTx(instructions, payer, blockhash, additionalSigners, [lookupTableAccount]); | ||
| const txId = await sendAndConfirmTx(connection, tx); | ||
|
|
||
| console.log(`\nAirdrop completed!`); | ||
| console.log(`Transaction: ${txId}`); | ||
|
|
||
| // Step 7: Verify distribution via getCompressedTokenAccountsByOwner | ||
| for (let i = 0; i < airDropAddresses.length; i++) { | ||
| const recipientAccounts = await connection.getCompressedTokenAccountsByOwner(airDropAddresses[i], { mint }); | ||
| const balance = recipientAccounts.items.reduce((sum, account) => sum + Number(account.parsed.amount), 0); | ||
| console.log(`Recipient ${i + 1} (${airDropAddresses[i].toString()}): ${balance / 1e9} compressed tokens`); | ||
| } | ||
|
|
||
| const finalSplBalance = await connection.getTokenAccountBalance(sourceTokenAccount.address); | ||
| console.log(`\nSender balance after airdrop: ${finalSplBalance.value.uiAmount} SPL tokens`); | ||
|
|
||
| return txId; | ||
| })(); | ||
| ``` | ||
| </Step> | ||
| </Steps> | ||
| </Tab> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Verify version constraints in prerequisites.
Line 227 warns: "Ensure you have the latest @lightprotocol/stateless.js and @lightprotocol/compressed-token versions ≥ 0.21.0!" However, the package installation commands (lines 74–101) do not pin specific versions. This creates a mismatch: users following the "Implementation Steps" tab will install the latest unpinned versions, but the code may not be compatible if breaking changes occur.
Consider either:
- Pinning exact versions in install commands (e.g.,
@lightprotocol/stateless.js@0.21.0) - Or removing the version constraint warning if latest is always compatible
For production guidance, pinned versions are safer for reproducibility.
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/compressed-tokens/advanced-guides/create-an-airdrop.mdx
(lines ~74-101 and the warning at ~227), the install commands do not pin package
versions while the warning demands versions ≥ 0.21.0; update the npm/yarn/pnpm
install lines to pin the lightprotocol packages (e.g.,
@lightprotocol/stateless.js@0.21.0 and @lightprotocol/compressed-token@0.21.0 or
use a caret ^0.21.0 for minor updates) so the documentation and the warning
match, and adjust the warning text to reflect pinned versions (or remove the
version constraint if you prefer unpinned installs for always-latest behavior).
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/Hash' | ||
| required: true | ||
| responses: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add maxItems constraint to array parameter.
The /getMultipleCompressedAccountProofs endpoint parameter (lines 1044-1048) defines an unbounded array. Add maxItems to prevent excessive requests:
params:
type: array
items:
$ref: '#/components/schemas/Hash'
+ maxItems: 100Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 Checkov (3.2.334)
[medium] 1044-1048: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwner.yaml
around lines 1044 to 1048, the array parameter for
/getMultipleCompressedAccountProofs is unbounded; add a maxItems constraint
(e.g. maxItems: 100) alongside the existing type/items to limit the number of
elements accepted and prevent excessive requests, and update any related
validation/error messages or documentation to reflect this limit.
| openapi: 3.0.3 | ||
| info: | ||
| title: photon-indexer | ||
| description: Solana indexer for general compression | ||
| license: | ||
| name: Apache-2.0 | ||
| version: 0.50.0 | ||
| servers: | ||
| - url: https://mainnet.helius-rpc.com?api-key=<api_key> | ||
| paths: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Add OpenAPI security scheme definitions to document API authentication.
The specification lacks global securitySchemes and security field definitions. Even for documentation-only specs, defining security mechanisms accurately reflects the actual API's security posture and helps client generators create proper auth headers. The Helius RPC endpoint requires API key authentication.
Add security definitions after the servers section:
components:
securitySchemes:
api_key:
type: apiKey
in: header
name: Authorization
description: Helius API key passed as Authorization header or in URL query parameter
security:
- api_key: []Alternatively, if Helius expects the API key as a query parameter (which is common for RPC endpoints), adjust the in field to query and name to api-key.
🏁 Script executed:
#!/bin/bash
# View the full getCompressedTokenBalancesByOwnerV2.yaml file to verify review claims
cat "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml"Length of output: 4122
🏁 Script executed:
#!/bin/bash
# Verify file exists and check line count
if [ -f "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" ]; then
wc -l "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml"
echo "---"
echo "Lines 135-145 (context around line 138-142):"
sed -n '135,145p' "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml"
echo "---"
echo "Searching for 'securitySchemes' in file:"
grep -n "securitySchemes" "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" || echo "NOT FOUND"
echo "---"
echo "Searching for 'security:' at top level:"
grep -n "^security:" "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" || echo "NOT FOUND"
echo "---"
echo "Searching for 'TokenBalanceListV2':"
grep -n "TokenBalanceListV2" "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" || echo "NOT FOUND"
else
echo "File not found at specified path"
fiLength of output: 638
🏁 Script executed:
#!/bin/bash
# Search for arrays with 'items:' keyword and check maxItems presence
echo "Checking for array definitions and maxItems constraints:"
rg -n "maxItems" "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" || echo "No maxItems found"
echo "---"
rg -nB2 -A2 "items:" "zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml" | head -60Length of output: 303
Add OpenAPI security scheme and response size constraints.
Two issues prevent this spec from accurately documenting the API:
-
Missing security scheme definitions: The spec lacks
components.securitySchemesand a top-levelsecurityfield. Even though the server URL hints at API key authentication (?api-key=<api_key>), the spec doesn't formally document this mechanism. Security definitions help client generators create proper auth headers and clarify expected auth patterns. -
Missing maxItems constraint on response array (lines 137–140): The
TokenBalanceListV2.itemsarray lacks amaxItemsconstraint, which should bound the maximum number of token balances returned. This helps prevent unbounded response sizes.
Suggested changes:
After the servers section, add:
components:
securitySchemes:
api_key:
type: apiKey
in: query
name: api-key
description: Helius API key (can also be passed in Authorization header)
security:
- api_key: []In the TokenBalanceListV2.items schema (around line 138), add a maxItems constraint:
items:
type: array
maxItems: 1000 # Adjust based on Helius service limits
items:
$ref: '#/components/schemas/TokenBalance'🧰 Tools
🪛 Checkov (3.2.334)
[high] 1-146: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-146: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressedTokenBalancesByOwnerV2.yaml
around the servers section (lines 1-10) and the TokenBalanceListV2 schema
(around lines 137-140), the OpenAPI spec is missing a security scheme definition
and a top-level security declaration for the api-key query parameter, and the
TokenBalanceListV2.items array lacks a maxItems constraint; add a
components.securitySchemes entry defining an api_key apiKey in: query name:
api-key (with a short description) and add a top-level security section
referencing api_key, and in the TokenBalanceListV2.items schema add a maxItems
(e.g., 1000 or the appropriate service limit) to bound the response array size.
| openapi: 3.0.3 | ||
| info: | ||
| title: photon-indexer | ||
| description: Solana indexer for general compression | ||
| license: | ||
| name: Apache-2.0 | ||
| version: 0.50.0 | ||
| servers: | ||
| - url: https://mainnet.helius-rpc.com?api-key=<api_key> | ||
| paths: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Consider adding OpenAPI security configuration.
The specification lacks global security definitions, as flagged by static analysis (CKV_OPENAPI_4, CKV_OPENAPI_5). If your API uses authentication, add a securitySchemes section under components and define security requirements at the root level:
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: query
name: api-key
security:
- ApiKeyAuth: []This is optional if your API is public, but recommended for production specifications.
🧰 Tools
🪛 Checkov (3.2.334)
[high] 1-1517: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1517: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml
around lines 1 to 10, the OpenAPI spec is missing global security definitions;
if this API requires authentication add a components.securitySchemes section
defining an ApiKeyAuth (type: apiKey, in: query, name: api-key) and add a
root-level security requirement referencing ApiKeyAuth so the whole spec
declares the expected auth scheme; if the API is truly public you can skip,
otherwise include those entries and ensure the server URL query parameter name
matches the security scheme name.
| type: array | ||
| items: | ||
| $ref: '#/components/schemas/Hash' | ||
| required: true | ||
| responses: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Add maxItems constraint to array parameter.
The /getMultipleCompressedAccountProofs endpoint defines an array parameter for hashes (lines 1149-1153) without a maximum item count. Add maxItems to prevent unbounded requests:
params:
type: array
items:
$ref: '#/components/schemas/Hash'
+ maxItems: 100📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| type: array | |
| items: | |
| $ref: '#/components/schemas/Hash' | |
| required: true | |
| responses: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/Hash' | |
| maxItems: 100 | |
| required: true | |
| responses: |
🧰 Tools
🪛 Checkov (3.2.334)
[medium] 1149-1153: Ensure that arrays have a maximum number of items
(CKV_OPENAPI_21)
🤖 Prompt for AI Agents
In
zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAccount.yaml
around lines 1149-1153, the array parameter for hashes is missing a maxItems
constraint; add a maxItems property (choose a sensible upper bound, e.g., 100 or
the API's agreed limit) directly under the array schema so the parameter reads
with type: array, items: $ref: '#/components/schemas/Hash', and maxItems:
<limit>, ensuring the OpenAPI spec rejects requests with too many hash entries.
| openapi: 3.0.3 | ||
| info: | ||
| title: photon-indexer | ||
| description: Solana indexer for general compression | ||
| license: | ||
| name: Apache-2.0 | ||
| version: 0.50.0 | ||
| servers: | ||
| - url: https://mainnet.helius-rpc.com?api-key=<api_key> | ||
| paths: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Add OpenAPI security scheme and global security field.
Missing global security scheme. Add under components:
components:
securitySchemes:
api_key:
type: apiKey
in: header
name: AuthorizationThen add at root level:
security:
- api_key: []I need to verify the actual state of this OpenAPI file to assess the review comment accurately.
🏁 Script executed:
#!/bin/bash
# Find and inspect the OpenAPI file
find . -name "getCompressionSignaturesForAddress.yaml" -type f 2>/dev/null | head -5Length of output: 83
🏁 Script executed:
#!/bin/bash
# Check the first 50 lines and then lines around 1263-1267
if [ -f "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml" ]; then
echo "=== FIRST 50 LINES ==="
head -50 "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml"
echo -e "\n=== CHECKING FOR SECURITY DEFINITIONS ==="
grep -n "securitySchemes\|^security:" "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml" | head -10
echo -e "\n=== LINES 1260-1270 ==="
sed -n '1260,1270p' "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml"
fiLength of output: 1913
🏁 Script executed:
#!/bin/bash
# Check total line count and structure
if [ -f "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml" ]; then
echo "Total lines: $(wc -l < "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml")"
echo -e "\n=== ROOT LEVEL KEYS (components, security, paths, etc.) ==="
grep -n "^[a-z]" "zk-compression-docs/mintlify-docs/openapi/getCompressionSignaturesForAddress.yaml" | head -20
fiLength of output: 141
🏁 Script executed:
#!/bin/bash
# Count how many OpenAPI files exist and check them for security schemes
echo "=== OpenAPI files in repository ==="
find . -name "*.yaml" -path "*/openapi/*" -type f 2>/dev/null | sort
echo -e "\n=== Checking for security in each file ==="
for file in $(find . -name "*.yaml" -path "*/openapi/*" -type f 2>/dev/null | sort); do
has_security=$(grep -c "^security:" "$file" 2>/dev/null || echo "0")
has_scheme=$(grep -c "securitySchemes:" "$file" 2>/dev/null || echo "0")
echo "$file | security: $has_security | securitySchemes: $has_scheme"
doneLength of output: 5306
</parameter>
</invoke>
---
🌐 Web query:
```web
OpenAPI 3.0.3 apiKey security scheme syntax
💡 Result:
Short answer — Use a Security Scheme object under components.securitySchemes with type: apiKey and the required name and in fields.
YAML example (OpenAPI 3.0.3):
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
description: API key needed to access endpoints
name: X-API-Key
in: header
Then apply it (globally or per operation):
security:
- ApiKeyAuth: []
JSON equivalent:
"components": {
"securitySchemes": {
"ApiKeyAuth": {
"type": "apiKey",
"description": "API key needed to access endpoints",
"name": "X-API-Key",
"in": "header"
}
}
},
"security": [ { "ApiKeyAuth": [] } ]
Notes: for type "apiKey" the name (string) is the header/query/cookie parameter name and in must be one of "header", "query", or "cookie". [1][2]
Sources:
[1] OpenAPI Specification v3.0.3 — Security Scheme Object.
[2] OpenAPI documentation — API Keys (examples).
🌐 Web query:
Checkov CKV_OPENAPI_4 CKV_OPENAPI_5 rules requirements
💡 Result:
-
CKV_OPENAPI_4 — "Ensure that the global security field has rules defined": the OpenAPI document must include a top-level "security" field and it must not be empty (i.e., global security requirements are present). [1][2]
-
CKV_OPENAPI_5 — "Ensure that security operations is not empty.": each operation-level security entry must be present/non-empty where security is declared for operations (operation security arrays must not be empty). [1][2]
Sources: Checkov OpenAPI policy index and OpenAPI scanning docs. [1] https://www.checkov.io/5.Policy%20Index/openapi.html [2] https://www.checkov.io/7.Scan%20Examples/OpenAPI.html
Add OpenAPI security scheme to comply with CKV_OPENAPI_4 and CKV_OPENAPI_5.
The file lacks a global security scheme definition. The servers URL shows api-key=<api_key> placeholder, indicating API key authentication is required, but this is not formally declared in the OpenAPI spec.
Add under components (around line 1579):
components:
securitySchemes:
api_key:
type: apiKey
in: header
name: X-API-Key
description: API key for Helius RPC accessThen add at the root level (after line 9, before paths):
security:
- api_key: []Note: This is a systemic issue across all 27 OpenAPI files in this directory—each lacks security definitions. Apply this fix consistently across the entire collection.
🧰 Tools
🪛 Checkov (3.2.334)
[high] 1-1639: Ensure that the global security field has rules defined
(CKV_OPENAPI_4)
[high] 1-1639: Ensure that security operations is not empty.
(CKV_OPENAPI_5)
Your Mintlify docs migration is now complete and available at staging site hosted by us here:https://lightprotocol-migration.mintlify.app/
Resources
What's Included:
Next Steps
To complete your documentation setup, please merge the PR containing the contents of the folder as you see fit and :
Support: support@mintlify.com
Summary by CodeRabbit