Conversation
📝 WalkthroughWalkthroughA comprehensive set of getting started documentation was added to Galaxy DevKit, including complete beginner walkthrough and 5-minute quickstart guides, alongside testing validation procedures, updated README navigation, and documentation completion tracking files. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 12
🧹 Nitpick comments (1)
docs/getting-started.md (1)
45-49: Add languages to fenced blocks to satisfy markdown linting.Several fenced “Expected Output” blocks omit a language tag; markdownlint MD040 is triggered. Use
text/jsonwhere appropriate.Also applies to: 172-178, 261-267, 324-330, 403-407, 452-461, 509-513
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/getting-started.md` around lines 45 - 49, The fenced "Expected Output" code blocks (e.g., the block starting with "Public Key: GXXXXXXXXX... (starts with G)" and other similar expected-output blocks) lack a language tag which triggers markdownlint MD040; add appropriate language identifiers such as `text` for plain output or `json` for JSON snippets to each fenced block (including the other occurrences referenced in the comment) so all fenced code blocks include a language qualifier.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/getting-started.md`:
- Around line 241-245: The current trustline section only prints success via the
console.log calls ('✅ USDC Trustline Added Successfully!' and 'You can now hold
and trade USDC') without performing the real operation; replace the placeholder
logs with an actual trustline creation flow (e.g., call or implement a
createTrustline/createUsdcTrustline function that submits the trustline
transaction, waits for confirmation, and verifies the account holds the USDC
asset) and only emit the success messages after confirmation; also add proper
error handling and descriptive error logs if the trustline creation or
verification fails so the walkthrough reflects an end-to-end implementation.
- Line 425: The second example submits the unsigned transaction object instead
of the signed envelope: after signing you obtain signedXDR but call
server.submitTransaction(transaction); replace that call to use signedXDR so the
server receives the signed transaction envelope (look for symbols signedXDR,
transaction, and server.submitTransaction in the example and update the submit
call accordingly).
- Around line 377-382: The docs show calling
InvisibleWalletService.signTransaction with a password string, but the
implementation of signTransaction expects a Stellar Keypair object as the fourth
argument; update the examples (the call to signTransaction) to pass the unlocked
Keypair from the client device (e.g., the variable representing the Keypair)
instead of `'MySecurePassword123!'`, and ensure the example references the
Keypair variable you create earlier in the snippet so it matches the `@param`
keypair contract.
- Around line 141-148: The docs use outdated API signatures: replace the second
parameter of walletService.createWallet (currently passing a password) with the
required publicKey, and update examples that call createSession on
InvisibleWalletService to instead call the KeyManagementService session method
with the correct parameters (walletId, userId, optional deviceInfo). Locate
usages of createWallet, InvisibleWalletService, createSession,
KeyManagementService and walletService in the affected examples and update the
example calls and parameter names to match the current service contract.
- Around line 365-372: Replace the plain object passed to addOperation with the
SDK factory Operation.payment(...) so the operation is an xdr.Operation (use
Operation.payment({ destination: destinationKey, asset: { code: 'XLM' }, amount:
'10' }) instead of a raw object), and change the incorrect .setOptions({
timeout: 30 }) call to the correct .setTimeout(30) API; update both occurrences
referenced (the addOperation(...) call sites and the .setOptions/.setTimeout
usage) so they use Operation.payment and .setTimeout respectively.
In `@docs/quickstart.md`:
- Around line 97-98: The code calls server.submitTransaction(tx) after
performing a signing step, which submits the unsigned tx instead of the signed
envelope; replace the submitted argument with the signed object returned by your
signing call (e.g., the signed envelope/signedTx property on the signing result)
so server.submitTransaction receives the signed payload, and keep logging
result.id from the submission response; update the usage of tx in the
server.submitTransaction(...) call to the signed result variable produced by
your signing function.
- Around line 32-35: Update the quickstart examples to match the current
InvisibleWalletService non-custodial API: replace any createSession() calls with
unlockWallet(), change createWallet() usages so the second parameter is a
client-generated public key string (not a password) returned from generating a
Keypair on-device, and update signTransaction() calls to pass the server
walletId plus a client-side Keypair (decrypted on-device) instead of
wallet.publicKey and a password; search for the symbols createWallet,
createSession, unlockWallet, signTransaction, InvisibleWalletService,
wallet.publicKey, walletId, and Keypair to locate and fix each example.
In `@QUICK_TEST.md`:
- Around line 7-8: Replace hardcoded absolute path and non-executable markdown
invocation with repo-root-relative, runnable commands: change occurrences of "cd
/home/student/Desktop/Galaxy-DevKit" to use a relative project root (e.g., "cd
<repo-root>" or no cd at all), replace "ls -lh docs/getting-started.md
docs/quickstart.md" with a relative file check (e.g., "ls -lh
docs/getting-started.md docs/quickstart.md" executed from repo root) and remove
any "bash TESTING_GUIDE.md" usage—instead call an actual shell script (e.g.,
"scripts/run-tests.sh" or "scripts/test.sh") that is present in the repo; update
QUICK_TEST.md entries at the shown locations (and the noted lines 47-48, 59-61)
to use these repo-root-relative commands and a real .sh test runner so the
instructions are portable and executable.
- Around line 112-125: Add the Markdown fence language "text" to the metrics
code block that contains the lines starting with "Content Coverage: 100%
✅" through "OVERALL SCORE: 10/10 ✅" so the block becomes ```text ... ``` to
satisfy the MD040 lint rule and avoid warnings; update the fenced block in
QUICK_TEST.md around that metrics section accordingly.
In `@TESTING_GUIDE.md`:
- Around line 361-367: The Friendbot check uses a fixed TEST_PUBKEY which makes
the test flaky; change the script to generate a fresh keypair for each run
(replace the TEST_PUBKEY assignment) and use that generated public key when
calling the Friendbot curl URL (the line with curl "...?addr=$TEST_PUBKEY"),
ensuring you create the keypair prior to the curl call and substitute its public
key variable so Friendbot funds a new account every test.
- Around line 29-33: Several fenced code blocks lack a language tag causing
MD040 lint failures; update the relevant markdown files (TESTING_GUIDE.md and
the referenced blocks in docs/getting-started.md, docs/quickstart.md, README.md
and the ranges noted around lines 296-298 and 379-404) to add the language
specifier `text` for plain output/checklist/code-fence blocks. Locate the
untagged triple-backtick fences (``` ...) in those files and replace them with
```text so all plain output/checklist blocks are explicitly labeled, run the
markdown linter to confirm MD040 is resolved, and ensure only non-code blocks
use `text` while real code blocks keep their proper language.
- Line 17: Replace the hard-coded absolute path
"/home/student/Desktop/Galaxy-DevKit" in TESTING_GUIDE.md with a
repository-relative instruction: either tell users to run the steps from the
repo root or show how to programmatically get the repo root (e.g., using git
rev-parse --show-toplevel) and update the line and the other occurrence reported
to use that approach so the guide is portable across machines.
---
Nitpick comments:
In `@docs/getting-started.md`:
- Around line 45-49: The fenced "Expected Output" code blocks (e.g., the block
starting with "Public Key: GXXXXXXXXX... (starts with G)" and other similar
expected-output blocks) lack a language tag which triggers markdownlint MD040;
add appropriate language identifiers such as `text` for plain output or `json`
for JSON snippets to each fenced block (including the other occurrences
referenced in the comment) so all fenced code blocks include a language
qualifier.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 93b2c8bb-8040-46ca-9e93-5a4b274e98e8
📒 Files selected for processing (6)
ASSIGNMENT_COMPLETION.mdQUICK_TEST.mdREADME.mdTESTING_GUIDE.mddocs/getting-started.mddocs/quickstart.md
| const { wallet, session } = await walletService.createWallet( | ||
| { | ||
| userId: 'user_' + Date.now(), // Unique user ID | ||
| email: '[email protected]', | ||
| network: networkConfig, | ||
| }, | ||
| 'MySecurePassword123!' | ||
| ); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify actual InvisibleWalletService method signatures used by docs.
rg -n "class InvisibleWalletService|async createWallet\\(|async createSession\\(|async signTransaction\\(" packages/core/invisible-wallet/src/services/invisible-wallet.service.ts -n -A4 -B2Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 854
🏁 Script executed:
# Search for createSession method in InvisibleWalletService
rg -n "async createSession\(" packages/core/invisible-wallet/src/services/invisible-wallet.service.ts -A4Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 49
🏁 Script executed:
# Check the docs file to see all examples at the mentioned line ranges
cat -n docs/getting-started.md | sed -n '141,148p; 286,299p; 636,643p; 653,657p'Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1300
🏁 Script executed:
# Get full createWallet signature and surrounding context
rg -n "async createWallet\(" packages/core/invisible-wallet/src/services/invisible-wallet.service.ts -A10Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 414
🏁 Script executed:
# Search for createSession method anywhere in the codebase
rg -n "createSession" packages/core/invisible-wallet/src/ -B2 -A4Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 11380
🏁 Script executed:
# Also check if there's any other method that might provide session creation
rg -n "Session|session" packages/core/invisible-wallet/src/services/invisible-wallet.service.ts | head -20Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1220
The wallet/session examples use API signatures that don't match the current service contract.
createWallet(...) expects a publicKey as the second parameter, not a password. Additionally, createSession(...) is not exposed on InvisibleWalletService directly—it's an internal call to KeyManagementService, which takes walletId, userId, and optional deviceInfo, not a password. These examples cannot run as-is against the current implementation.
Affects lines 141-148, 286-299, 636-643, 653-657.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/getting-started.md` around lines 141 - 148, The docs use outdated API
signatures: replace the second parameter of walletService.createWallet
(currently passing a password) with the required publicKey, and update examples
that call createSession on InvisibleWalletService to instead call the
KeyManagementService session method with the correct parameters (walletId,
userId, optional deviceInfo). Locate usages of createWallet,
InvisibleWalletService, createSession, KeyManagementService and walletService in
the affected examples and update the example calls and parameter names to match
the current service contract.
| // Note: Trustline is added automatically with many operations | ||
| // This is a placeholder for the full implementation | ||
|
|
||
| console.log('✅ USDC Trustline Added Successfully!'); | ||
| console.log(' You can now hold and trade USDC'); |
There was a problem hiding this comment.
Trustline step is currently placeholder logic, not an end-to-end implementation.
This section prints success without actually creating a trustline, which conflicts with the documented walkthrough objective and acceptance criteria.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/getting-started.md` around lines 241 - 245, The current trustline
section only prints success via the console.log calls ('✅ USDC Trustline Added
Successfully!' and 'You can now hold and trade USDC') without performing the
real operation; replace the placeholder logs with an actual trustline creation
flow (e.g., call or implement a createTrustline/createUsdcTrustline function
that submits the trustline transaction, waits for confirmation, and verifies the
account holds the USDC asset) and only emit the success messages after
confirmation; also add proper error handling and descriptive error logs if the
trustline creation or verification fails so the walkthrough reflects an
end-to-end implementation.
| .addOperation({ | ||
| type: 'payment', | ||
| destination: destinationKey, | ||
| amount: '10', | ||
| asset: { code: 'XLM' }, | ||
| }) | ||
| .setOptions({ timeout: 30 }) | ||
| .build(); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, examine the file and the specific lines mentioned
cat -n docs/getting-started.md | sed -n '360,380p'Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 810
🏁 Script executed:
# Also check the second location mentioned
cat -n docs/getting-started.md | sed -n '664,682p'Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 711
🌐 Web query:
Stellar SDK JavaScript transaction builder addOperation setOptions API correct usage
💡 Result:
The correct usage of the Stellar SDK JavaScript TransactionBuilder to add a setOptions operation is as follows: 1. Import the necessary modules: const { TransactionBuilder, Operation, Networks, Account } = require('@stellar/stellar-sdk'); 2. Load the source account and create a TransactionBuilder: const account = await server.loadAccount(sourcePublicKey); const transaction = new TransactionBuilder(account, { fee: await server.fetchBaseFee, networkPassphrase: Networks.TESTNET // or Networks.PUBLIC }); 3. Create the setOptions operation using Operation.setOptions(opts): const setOptionsOp = Operation.setOptions({ signer: { ed25519PublicKey: 'GSECONDACCOUNT...', // example: adding a signer weight: 1 } // Other options: inflationDest, setFlags, clearFlags, masterWeight, lowThreshold, medThreshold, highThreshold, homeDomain }); 4. Add the operation to the transaction builder: .addOperation(setOptionsOp) 5. Optionally add timeout and build: .setTimeout(30) .build; 6. Sign and submit the transaction. Full example: const transaction = new TransactionBuilder(account, { fee }) .addOperation(Operation.payment({ /* ... */ })) .addOperation(Operation.setOptions({ signer: { ed25519PublicKey: secondAccountAddress, weight: 1 } })) .setTimeout(30) .build; The setOptions operation supports options like: inflationDest (string), setFlags/clearFlags (number|string, using AuthRequiredFlag etc.), masterWeight/lowThreshold/medThreshold/highThreshold (number 0-255), signer (object with ed25519PublicKey and weight), homeDomain (string). Weights must be 0-255; 0 removes signer.
Citations:
- 1: https://stellar.github.io/js-stellar-sdk/TransactionBuilder.html
- 2: https://github.com/stellar/js-stellar-base/blob/master/docs/reference/building-transactions.md
- 3: https://github.com/stellar/js-stellar-sdk/blob/master/docs/reference/examples.md
- 4: https://docs.stellarcn.org/js-stellar-base/reference/base-examples.html
- 5: https://stellar.github.io/js-stellar-sdk/js-stellar-base_src_operations_set_options.js.html
- 6: https://stellar.github.io/js-stellar-sdk/Operation.html
🏁 Script executed:
# Check if there's a package.json or similar to identify SDK version
find . -name "package.json" -o -name "package-lock.json" | head -5Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 208
🏁 Script executed:
# Search for Operation imports in the codebase to understand the pattern
rg "Operation\." docs/getting-started.md | head -20Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 49
🏁 Script executed:
# Check if addOperation accepts plain objects anywhere else in the codebase
rg "addOperation\(\{" --type js --type ts | head -20Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 445
🏁 Script executed:
# Check the Stellar SDK version
cat package.json | grep -i stellarRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 967
🏁 Script executed:
# Get more context on the soroban examples to understand if plain objects are valid
sed -n '1,50p' packages/core/stellar-sdk/src/soroban/soroban-contract-manager.tsRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1220
🌐 Web query:
@stellar/stellar-sdk version 2024 Operation payment addOperation plain object vs Operation.payment()
💡 Result:
In @stellar/stellar-sdk (latest v14.6.1 as of 2026), both approaches create equivalent xdr.Operation objects for use with TransactionBuilder.addOperation. Operation.payment(opts) takes a plain JavaScript options object (e.g. {destination: string, asset: Asset, amount: string, source?: string}) and returns an xdr.Operation object. This is the standard, high-level factory method. Examples from official docs and source code consistently use it like: const paymentOp = Operation.payment({ destination: receiverPublicKey, asset: Asset.native, amount: '350.1234567' }); transactionBuilder.addOperation(paymentOp); Passing a plain object directly to addOperation is not supported. TransactionBuilder.addOperation expects an xdr.Operation object (or possibly a compatible structure that gets converted internally to xdr.Operation), not raw plain options objects. The SDK source shows Operation.payment constructs the full xdr.Operation with validation (e.g. checks asset presence, valid amount with 7 decimal precision, decodes destination to muxed account). There is no distinction or difference in the resulting operation between using Operation.payment vs. manually constructing equivalent plain data—the factory ensures the same XDR serialization. Use Operation.payment for type safety, validation, and readability. No 2024-specific changes affect this basic usage; recent updates (Protocol 22/23) add Soroban support but payment ops remain unchanged. Example full usage (from docs): const transaction = new TransactionBuilder(account, { fee }) .addOperation(Operation.payment({ destination: receiverPublicKey, asset: Asset.native, amount: '350.1234567', })) .setTimeout(30) .build;
Citations:
- 1: https://stellar.github.io/js-stellar-sdk/js-stellar-base_src_operations_payment.js.html
- 2: https://docs.stellarcn.org/js-stellar-sdk/reference/examples.html
- 3: https://stellar.github.io/js-stellar-sdk/Operation.html
- 4: https://stellar.github.io/js-stellar-sdk/TransactionBuilder.html
- 5: https://github.com/stellar/js-stellar-sdk/blob/master/docs/reference/examples.md
- 6: https://registry.npmjs.org/%40stellar%2Fstellar-sdk
- 7: https://github.com/stellar/js-stellar-sdk
- 8: https://stellar.github.io/js-stellar-sdk/js-stellar-base_src_operation.js.html
- 9: https://github.com/stellar/js-stellar-base/blob/master/docs/reference/building-transactions.md
- 10: https://docs.stellarcn.org/js-stellar-base/reference/building-transactions.html
Import and use Operation.payment() factory method instead of plain objects, and fix timeout API.
Lines 365-372 and 669-676 pass plain objects to addOperation(), which requires an xdr.Operation. Use Operation.payment({destination, asset, amount}) instead. Additionally, line 365-372 incorrectly calls .setOptions({timeout: 30})—change to .setTimeout(30) (which is correct in lines 669-676).
For @stellar/stellar-sdk v14.4.3:
Operation.payment()constructs the proper operation type with validation.setTimeout()sets the transaction timeout
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/getting-started.md` around lines 365 - 372, Replace the plain object
passed to addOperation with the SDK factory Operation.payment(...) so the
operation is an xdr.Operation (use Operation.payment({ destination:
destinationKey, asset: { code: 'XLM' }, amount: '10' }) instead of a raw
object), and change the incorrect .setOptions({ timeout: 30 }) call to the
correct .setTimeout(30) API; update both occurrences referenced (the
addOperation(...) call sites and the .setOptions/.setTimeout usage) so they use
Operation.payment and .setTimeout respectively.
| const signedXDR = await walletService.signTransaction( | ||
| publicKey, | ||
| sessionToken, | ||
| transactionXDR, | ||
| 'MySecurePassword123!' | ||
| ); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's look at the documentation at lines 377-382
sed -n '375,385p' docs/getting-started.mdRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 376
🏁 Script executed:
# Also check the second location at lines 682-687
sed -n '680,690p' docs/getting-started.mdRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 397
🏁 Script executed:
# Find the signTransaction implementation
rg -n "signTransaction" --type ts --type js -A 5 | head -100Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 8888
🏁 Script executed:
# Search for InvisibleWalletService or main wallet service implementation
fd -e ts -e js | xargs grep -l "signTransaction" | grep -v test | grep -v node_modules | head -20Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 382
🏁 Script executed:
# Find the wallet service implementation more specifically
rg "class.*Wallet.*Service" --type ts -A 10 | head -100Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 2196
🏁 Script executed:
# Search for signTransaction method definition (not just calls)
rg "^\s*(?:async\s+)?signTransaction\s*\(" --type ts -B 2 -A 8Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 4376
🏁 Script executed:
# Get the full signTransaction method in InvisibleWalletService with its JSDoc
sed -n '200,260p' packages/core/invisible-wallet/src/services/invisible-wallet.service.tsRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1839
🏁 Script executed:
# Also check if there's any usage documentation or comments
rg "signTransaction" packages/core/invisible-wallet/src/services/invisible-wallet.service.ts -B 10 -A 15 | head -80Repository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1067
Update documentation examples to pass Keypair instead of password string to signTransaction.
The implementation of InvisibleWalletService.signTransaction() expects a Keypair object as the fourth parameter, not a password string. The parameter is documented as:
`@param` keypair - Stellar Keypair unlocked on the client device
The examples in lines 377-382 and 682-687 pass 'MySecurePassword123!' (a string), which will cause type errors or unexpected behavior. Pass the unlocked keypair from the client device instead.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/getting-started.md` around lines 377 - 382, The docs show calling
InvisibleWalletService.signTransaction with a password string, but the
implementation of signTransaction expects a Stellar Keypair object as the fourth
argument; update the examples (the call to signTransaction) to pass the unlocked
Keypair from the client device (e.g., the variable representing the Keypair)
instead of `'MySecurePassword123!'`, and ensure the example references the
Keypair variable you create earlier in the snippet so it matches the `@param`
keypair contract.
| try { | ||
| console.log('🚀 Submitting Transaction to Network...'); | ||
|
|
||
| const result = await server.submitTransaction(signedXDR); |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, check the file structure and size
wc -l docs/getting-started.mdRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 94
🏁 Script executed:
# Read context around line 425
sed -n '415,435p' docs/getting-started.md | cat -n
echo "---"
# Read context around lines 692-693
sed -n '680,705p' docs/getting-started.md | cat -nRepository: Galaxy-KJ/Galaxy-DevKit
Length of output: 1933
Fix transaction submission in the second example to use the signed XDR.
After signing the transaction at line 692, the code obtains signedXDR but then submits the original unsigned transaction object at line 693. This contradicts the first example (line 425) which correctly submits signedXDR. The server expects a signed transaction envelope, so line 693 should be:
const result = await server.submitTransaction(signedXDR);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/getting-started.md` at line 425, The second example submits the unsigned
transaction object instead of the signed envelope: after signing you obtain
signedXDR but call server.submitTransaction(transaction); replace that call to
use signedXDR so the server receives the signed transaction envelope (look for
symbols signedXDR, transaction, and server.submitTransaction in the example and
update the submit call accordingly).
| cd /home/student/Desktop/Galaxy-DevKit | ||
| ls -lh docs/getting-started.md docs/quickstart.md |
There was a problem hiding this comment.
Testing commands are environment-specific and include a non-executable markdown invocation.
Hardcoded absolute paths reduce portability, and bash TESTING_GUIDE.md is not a valid runnable test command. Use repo-root-relative commands and call an actual .sh script.
Suggested doc fix
-cd /home/student/Desktop/Galaxy-DevKit
+cd "$(git rev-parse --show-toplevel)"
-bash TESTING_GUIDE.md # See detailed test steps
+bash validate-docs.sh # Script extracted from TESTING_GUIDE.md section 8Also applies to: 47-48, 59-61
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@QUICK_TEST.md` around lines 7 - 8, Replace hardcoded absolute path and
non-executable markdown invocation with repo-root-relative, runnable commands:
change occurrences of "cd /home/student/Desktop/Galaxy-DevKit" to use a relative
project root (e.g., "cd <repo-root>" or no cd at all), replace "ls -lh
docs/getting-started.md docs/quickstart.md" with a relative file check (e.g.,
"ls -lh docs/getting-started.md docs/quickstart.md" executed from repo root) and
remove any "bash TESTING_GUIDE.md" usage—instead call an actual shell script
(e.g., "scripts/run-tests.sh" or "scripts/test.sh") that is present in the repo;
update QUICK_TEST.md entries at the shown locations (and the noted lines 47-48,
59-61) to use these repo-root-relative commands and a real .sh test runner so
the instructions are portable and executable.
| ``` | ||
| Content Coverage: 100% ✅ | ||
| Code Examples: 20+ ✅ | ||
| Troubleshooting: 5/5 ✅ | ||
| External Links: 15+ ✅ | ||
| Steps Documented: 8+ ✅ | ||
| Expected Outputs: All ✅ | ||
| Installation Tested: YES ✅ | ||
| Syntax Validated: YES ✅ | ||
| Cross-References: YES ✅ | ||
| Target Audience: 4/4 ✅ | ||
|
|
||
| OVERALL SCORE: 10/10 ✅ | ||
| ``` |
There was a problem hiding this comment.
Add a fence language for the metrics block.
Use ```text for this block to avoid MD040 lint warnings.
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 112-112: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@QUICK_TEST.md` around lines 112 - 125, Add the Markdown fence language "text"
to the metrics code block that contains the lines starting with "Content
Coverage: 100% ✅" through "OVERALL SCORE: 10/10 ✅" so the block becomes
```text ... ``` to satisfy the MD040 lint rule and avoid warnings; update the
fenced block in QUICK_TEST.md around that metrics section accordingly.
|
|
||
| ```bash | ||
| # Navigate to project root | ||
| cd /home/student/Desktop/Galaxy-DevKit |
There was a problem hiding this comment.
Use repository-relative paths instead of local absolute paths.
/home/student/Desktop/Galaxy-DevKit makes the guide non-portable; prefer git rev-parse --show-toplevel or “run from repo root” wording.
Also applies to: 445-445
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@TESTING_GUIDE.md` at line 17, Replace the hard-coded absolute path
"/home/student/Desktop/Galaxy-DevKit" in TESTING_GUIDE.md with a
repository-relative instruction: either tell users to run the steps from the
repo root or show how to programmatically get the repo root (e.g., using git
rev-parse --show-toplevel) and update the line and the other occurrence reported
to use that approach so the guide is portable across machines.
| ``` | ||
| docs/getting-started.md has approximately 600+ lines | ||
| docs/quickstart.md has approximately 200+ lines | ||
| README.md has been updated with documentation section | ||
| ``` |
There was a problem hiding this comment.
Add missing fence languages for markdown lint compliance.
Use text for plain output/checklist blocks to satisfy MD040 consistently.
Also applies to: 296-298, 379-404
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 29-29: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@TESTING_GUIDE.md` around lines 29 - 33, Several fenced code blocks lack a
language tag causing MD040 lint failures; update the relevant markdown files
(TESTING_GUIDE.md and the referenced blocks in docs/getting-started.md,
docs/quickstart.md, README.md and the ranges noted around lines 296-298 and
379-404) to add the language specifier `text` for plain
output/checklist/code-fence blocks. Locate the untagged triple-backtick fences
(``` ...) in those files and replace them with ```text so all plain
output/checklist blocks are explicitly labeled, run the markdown linter to
confirm MD040 is resolved, and ensure only non-code blocks use `text` while real
code blocks keep their proper language.
| ```bash | ||
| # Create a test account | ||
| TEST_PUBKEY="GBUQWP3BOUZX34ULNQG23HK43T4SJRJUSXOBXWQBQ3P4OS7QR7F5FXP3" | ||
|
|
||
| # Try Friendbot endpoint | ||
| curl -s "https://friendbot-testnet.stellar.org?addr=$TEST_PUBKEY" | grep -q "successful" && echo "✅ Friendbot available" || echo "❌ Friendbot issue" | ||
| ``` |
There was a problem hiding this comment.
Friendbot availability check is brittle with a fixed public key.
Using a reused account can return non-success payloads even when Friendbot is healthy. This makes the check flaky. Prefer a fresh key/account per test.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@TESTING_GUIDE.md` around lines 361 - 367, The Friendbot check uses a fixed
TEST_PUBKEY which makes the test flaky; change the script to generate a fresh
keypair for each run (replace the TEST_PUBKEY assignment) and use that generated
public key when calling the Friendbot curl URL (the line with curl
"...?addr=$TEST_PUBKEY"), ensuring you create the keypair prior to the curl call
and substitute its public key variable so Friendbot funds a new account every
test.
|
@BigMick03 resolve the conflicts |
Close: #185
📋 Description
🔗 Related Issues
Closes #issue-number
🧪 Testing
📚 Documentation Updates (Required)
docs/AI.mdwith new patterns/examplesDocumentation Checklist by Component:
If you modified
packages/core/stellar-sdk/:packages/core/stellar-sdk/README.mddocs/examples/stellar-sdk/If you modified
packages/core/invisible-wallet/:packages/core/invisible-wallet/README.mddocs/SECURITY.mddocs/ARCHITECTURE.mdIf you modified
packages/core/automation/:packages/core/automation/README.mddocs/examples/automation/If you modified
packages/core/defi-protocols/:packages/core/defi-protocols/README.mddocs/ARCHITECTURE.mdIf you modified
packages/core/oracles/:packages/core/oracles/README.mdIf you modified
packages/contracts/:If you modified
tools/cli/:🤖 AI-Friendly Documentation
New Files Created
Key Functions/Classes Added
// Copy main signatures here for AI referencePatterns Used
📸 Screenshots (if applicable)
🔄 Deployment Notes
✅ Final Checklist
By submitting this PR, I confirm that:
Summary by CodeRabbit