Skip to content

Split soroban skill, rebrand prose, add concrete ZK toolchain walkthroughs#32

Open
kaankacar wants to merge 4 commits into
mainfrom
27-slim-soroban-skill-zk-examples
Open

Split soroban skill, rebrand prose, add concrete ZK toolchain walkthroughs#32
kaankacar wants to merge 4 commits into
mainfrom
27-slim-soroban-skill-zk-examples

Conversation

@kaankacar

Copy link
Copy Markdown
Collaborator

Part of #27 (items 2–5 of the feedback list).

  • Split skills/soroban/SKILL.md (2,578 lines) into a slim entry point plus development.md, testing.md, and security.md (886 lines total)
  • Condensed LLM-obvious material and replaced niche detail with links to developers.stellar.org
  • Rebranded prose "Soroban" → "Stellar smart contracts" repo-wide; crate names, URLs, and official SEP/CAP/tool names untouched
  • Expanded zk-proofs with a curve/proof-system support matrix and concrete walkthroughs: Circom (on-chain verifiable today via BLS12-381 + the official groth16_verifier example), Noir and RISC Zero (attestation pattern until CAP-0074 lands)
  • Site: copy-skills.mjs now mirrors whole skill directories so the companion files are served on skills.stellar.org, llms.txt indexes them as nested entries, and the "Soroban" filter tab is now "Smart Contracts"

pnpm lint, pnpm lint:ts, and pnpm build all pass.

…lchain walkthroughs

- Split skills/soroban/SKILL.md (2,578 lines) into a slim entry point
  plus development.md, testing.md, and security.md; condensed content
  that LLMs already know and replaced niche detail with doc links
- Rebranded prose mentions of Soroban to Stellar smart contracts across
  skills, README, site, and plugin manifests; crate names, URLs, and
  official SEP/CAP/tool names are unchanged
- Rewrote skills/zk-proofs/SKILL.md around concrete Circom, Noir, and
  RISC Zero walkthroughs grounded in the official groth16_verifier
  example, with a curve/proof-system support matrix
- Site: copy-skills.mjs now mirrors whole skill directories so
  companion files are served, and llms.txt indexes them as nested
  entries; Soroban filter tab renamed to Smart Contracts
Copilot AI review requested due to automatic review settings June 11, 2026 16:19
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://stellar.github.io/stellar-dev-skill/pr/pr-32/

Built to branch gh-pages at 2026-06-12 13:25 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR restructures and refreshes the developer-facing “Soroban” documentation into a “Stellar smart contracts” entry point with companion deep-dive guides, expands the ZK proof skill with concrete toolchain walkthroughs, and updates the site build/indexing scripts so the new multi-file skills are correctly served and discoverable.

Changes:

  • Split the Soroban skill into SKILL.md (entry point) plus development.md, testing.md, and security.md, while rebranding prose to “Stellar smart contracts”.
  • Expanded skills/zk-proofs/SKILL.md with a capability matrix and step-by-step Circom/Noir/RISC Zero integration guidance.
  • Updated site scripts to mirror whole skill directories to public/ and to index companion markdown files in llms.txt, plus UI filter rename “Soroban” → “Smart Contracts”.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
skills/zk-proofs/SKILL.md Adds availability matrix + concrete proving toolchain walkthroughs and patterns.
skills/standards/SKILL.md Updates headings/links and rebrands ecosystem/tool descriptions.
skills/soroban/SKILL.md Slim entry point + routing to new companion guides; rebranding.
skills/soroban/development.md New: storage/auth/events/errors/upgrades/factories/troubleshooting deep dive.
skills/soroban/testing.md New: layered testing guidance (unit → fork/mutation) and examples.
skills/soroban/security.md New: threat model + vulnerability classes + checklists/tooling.
skills/data/SKILL.md Rebrands Soroban references to smart contracts in the data/RPC skill.
skills/dapp/SKILL.md Rebrands client “Soroban invocation” wording to smart contract invocation.
skills/assets/SKILL.md Rebrands SAC/Soroban terminology to smart-contract/SEP-41 terminology.
skills/agentic-payments/SKILL.md Rebrands Soroban SAC terminology to SAC / smart contract language.
site/src/data/skills.ts Renames category/filter from “Soroban” to “Smart Contracts” for the UI.
site/scripts/copy-skills.mjs Copies full skill directories into public/ so companion files are served.
site/scripts/generate-llms-txt.mjs Adds nested llms.txt entries for companion markdown files.
site/CLAUDE.md Updates contribution guidance to use “Smart Contracts” category name.
README.md Updates repo overview and examples to “Stellar smart contracts”.
.claude-plugin/plugin.json Updates plugin description to “smart contracts (Rust, soroban-sdk)”.
.claude-plugin/marketplace.json Updates marketplace listing description wording.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread skills/soroban/SKILL.md
Comment on lines 169 to +178
#[test]
fn test_with_auth() {
fn test_increment() {
let env = Env::default();

// Mock all authorizations automatically
env.mock_all_auths();

let contract_id = env.register(TokenContract, ());
let client = TokenContractClient::new(&env, &contract_id);

let admin = Address::generate(&env);
let user1 = Address::generate(&env);
let user2 = Address::generate(&env);

// Initialize and mint
client.initialize(&admin);
client.mint(&user1, &1000);

// Transfer (requires auth from user1)
client.transfer(&user1, &user2, &100);

assert_eq!(client.balance(&user1), 900);
assert_eq!(client.balance(&user2), 100);

// Verify which auths were required
let auths = env.auths();
assert_eq!(auths.len(), 1);
// auths[0] contains (address, contract_id, function, args)
}
```

### Testing with Specific Auth Requirements

```rust
#[test]
fn test_specific_auth() {
let env = Env::default();
let contract_id = env.register(Contract, ());
let client = ContractClient::new(&env, &contract_id);

let user = Address::generate(&env);

// Mock auth only for specific address
env.mock_auths(&[MockAuth {
address: &user,
invoke: &MockAuthInvoke {
contract: &contract_id,
fn_name: "transfer",
args: (&user, &other, &100i128).into_val(&env),
sub_invokes: &[],
},
}]);
let contract_id = env.register(CounterContract, (admin.clone(),));
let client = CounterContractClient::new(&env, &contract_id);

client.transfer(&user, &other, &100);
assert_eq!(client.increment(), 1);
assert_eq!(client.get_count(), 1);
Comment thread skills/soroban/testing.md Outdated
Comment thread skills/soroban/testing.md Outdated
Comment on lines +92 to 98
// Copy the whole skill directory, not just the SKILL.md: skills may
// split deep-dive content into companion files (e.g.
// skills/soroban/development.md) referenced by relative links, and
// those must be served at the same paths.
mkdirSync(dirname(dest), { recursive: true });
cpSync(src, dest, { dereference: false });
cpSync(dirname(src), dirname(dest), { recursive: true, dereference: false });
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fixed in the latest commit. isFresh now uses a newestMtimeInDir helper that recursively scans the skill directory and compares the newest mtime across all files (src vs dest), so edits to companion files like testing.md will correctly invalidate the cached check and trigger a re-copy during pnpm dev.

kaankacar and others added 2 commits June 12, 2026 16:23
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

@ElliotFriend ElliotFriend left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

couple small nitpicks, and one note you can choose what to do with. looks great!

Comment thread skills/assets/SKILL.md
Comment on lines 324 to 328
- Complex transfer logic (royalties, fees, restrictions)
- Custom authorization schemes
- Non-standard token behaviors
- Integration with custom DeFi contracts
- NFTs or semi-fungible tokens

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

i might tend to "soften" this list a little bit. in general, the guidance has been to use custom contract tokens (open zeppelin, or other) as a bit of a "last resort." you can achieve a lot of these same features (royalties, for example) with an "SAC Admin" contract that can invoke the mint, burn, etc. functions of the SAC, without giving up the "ecosystem compatibility" that comes with a regular, issued Asset.

that might be more my opinion, though. you can take it or leave it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

maybe a dumb question: why leave the directory as skills/soroban? a lot of this PR looks like it's removing references to "Soroban" and replacing with something like "Stellar smart contracts." would it make sense to rename this directory to something like skills/smart-contracts?

Comment thread skills/soroban/testing.md

## Unit testing

#![cfg(test)]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
#![cfg(test)]
```rust
#![cfg(test)]

Comment thread skills/soroban/testing.md

```bash
stellar contract invoke --id CONTRACT_ID --source alice --network testnet \
--sim-only -- function_name --arg value

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

--sim-only has been deprecated. replace with --send=no

@oceans404

Copy link
Copy Markdown
Contributor

hey @kaankacar! I noticed that after the rename, the "Stellar Smart Contracts" skill no longer appears under the "Smart Contracts" tag filter, just the "All" filter. Can you fix that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants