[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71DSB11KY88J1ND0GGSJACW":3,"skill-same:01M71DSB11KY88J1ND0GGSJACW":511},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":16,"sourceHtmlUrl":17,"categories":18,"keywords":24,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":54,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M71DSB11KY88J1ND0GGSJACW","qedgen",null,"Formally verify programs by writing Lean 4 proofs. Trigger this skill whenever the user wants to formally verify code, generate Lean 4 proofs, prove properties about algorithms or smart contracts, verify invariants, convert program logic into formal specifications, or anything involving Lean 4 and formal verification. Also trigger when the user mentions \"qedgen\", \"lean proof\", \"formal proof\", \"verify my code\", \"prove correctness\", \"formal verification\", or wants mathematical guarantees about their implementation.","x402agent\u002Fopenclawd-main","x402agent","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F243432990?v=4","01M71D6NTS5STS5KG360KMCGNJ","ClawdBot 🦞","01M71D6NVEWQSFGXWT7QDCXEM7",0,"MIT","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",[19],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"contracts","specifications","properties","logic","verify","convert","correctness","prove","trigger","algorithms","my","invariants","generate","verification","program","code","when","writing","lean","2026-11-10 10:12:30",false,"---\nname: qedgen\ndescription: Formally verify programs by writing Lean 4 proofs. Trigger this skill whenever the user wants to formally verify code, generate Lean 4 proofs, prove properties about algorithms or smart contracts, verify invariants, convert program logic into formal specifications, or anything involving Lean 4 and formal verification. Also trigger when the user mentions \"qedgen\", \"lean proof\", \"formal proof\", \"verify my code\", \"prove correctness\", \"formal verification\", or wants mathematical guarantees about their implementation.\n---\n\n# QEDGen — Agent-Driven Formal Verification\n\nYou (Claude) are the proof engineer. You read the codebase, write Lean 4 models and proofs, iterate on compiler errors, and call Leanstral (Mistral's theorem prover) only for hard sub-goals you cannot fill yourself.\n\n## Architecture\n\n```\nYou (Claude)                          Leanstral (remote model)\n  ├── Read spec \u002F source code           ├── Fill sorry markers\n  ├── Write Lean 4 models               └── Suggest tactics for hard goals\n  ├── Write theorem statements\n  ├── Write proof attempts\n  ├── Run `lake build`, read errors\n  └── Fix and iterate\n```\n\n## Step 1: Understand the program\n\nCheck for existing artifacts in this priority order:\n\n1. **spec.md exists** → Read it. An existing spec captures the author's intent, state model, invariants, and operations. Extract security goals, state model, and formal properties. Skip the scoping quiz and go directly to Step 2.\n2. **IDL exists** (`target\u002Fidl\u002F\u003Cprogram>.json`) → Run `qedgen spec --idl \u003Cpath>` to generate a draft SPEC.md with TODO markers, then refine interactively.\n3. **Neither exists** → Read the source code directly. Ask broader scoping questions.\n\n## Step 2: Scope the verification\n\nIf no spec.md was found, run a short interactive quiz — one question at a time, with checkbox options derived from the program's structure. Ask about **functionality and risks**, not implementation details.\n\n**Question 1: \"What does this program need to guarantee above all else?\"**\nOptions derived from the program's structure:\n- Authorization \u002F access control\n- Tokens are never lost \u002F correct routing\n- One-shot safety \u002F no replay\n- Arithmetic safety \u002F no overflow\n- Conservation (e.g., vault >= total claims)\n- All of the above\n\n**Question 2: \"Which scenario worries you most?\"**\nGenerate concrete risk scenarios from the program.\n\n**Question 3: \"Does the program make any assumptions that aren't enforced on-chain?\"**\n\nAsk questions **one at a time**. Wait for the user's answer before presenting the next question.\n\n## Step 3: Write SPEC.md\n\nWrite `formal_verification\u002FSPEC.md` using normative language (MUST, MUST NOT, MAY). Structure:\n\n```markdown\n# \u003CProgram Name> Verification Spec v1.0\n\n\u003C1-2 sentences describing what the program does>\n\n## 0. Security Goals\n1. **\u003CGoal name>**: \u003Cnormative statement>\n\n## 1. State Model\n\u003CState struct with field names, types, and comments>\n\u003CLifecycle diagram if applicable>\n\n## 2. Operations\n### 2.1 \u003COperation name>\n**Signers**: \u003Cwho MUST sign>\n**Preconditions**: \u003Cwhat MUST be true before>\n**Effects**: \u003Cnumbered steps>\n**Postconditions**: \u003Cwhat MUST be true after>\n\n## 3. Formal Properties\n### 3.1 \u003CCategory>\n**\u003Cproperty_id>**: For all \u003Cquantified variables>,\nif \u003Ctransition predicate> then \u003Cconclusion>.\n\n## 4. Trust Boundary\n\u003CWhat is axiomatic and why>\n\n## 5. Verification Results\n| Property | Status | Proof |\n|---|---|---|\n| ... | **Open** | |\n```\n\nPresent SPEC.md to the user and get confirmation before proceeding.\n\n## Step 4: Set up the Lean project\n\n```bash\nqedgen setup            # Ensure global Mathlib cache exists (first time: 15-45 min)\n```\n\nCreate the project structure:\n\n```\nformal_verification\u002F\n  lakefile.lean          # import lean_support and Mathlib\n  lean-toolchain         # leanprover\u002Flean4:v4.15.0\n  lean_support\u002F          # Solana axiom library (copy from qedgen)\n  Proofs.lean            # root import: import Proofs.AccessControl etc.\n  Proofs\u002F\n    AccessControl.lean\n    CpiCorrectness.lean\n    Conservation.lean\n    StateMachine.lean\n    ArithmeticSafety.lean\n```\n\n## Step 5: Write Lean proofs\n\nThis is the core step. You write Lean 4 directly — models, transitions, theorems, and proofs.\n\n### Modeling workflow\n\nFor each property in SPEC.md:\n\n1. **Define the state** as a Lean structure (map fields from source\u002Fspec)\n2. **Define the transition** as `Option StateType` (return `none` on precondition failure)\n3. **State the theorem** matching the SPEC.md property\n4. **Write the proof** using the patterns below\n5. **Run `lake build`** and iterate on errors\n\n### Support library API\n\nAfter `import QEDGen.Solana` and `open QEDGen.Solana`:\n\n**Types:**\n- `Pubkey` (= Nat), `U64` (= Nat), `U8` (= Nat)\n- `Account` — `{ key : Pubkey, authority : Pubkey, balance : Nat, writable : Bool }`\n- `Lifecycle` — `open | closed` (with DecidableEq)\n- `TransferCpi` — `{ program, «from», «to», authority, amount }`\n- `MintToCpi`, `BurnCpi`, `CloseCpi`\n\n**Constants:**\n- `TOKEN_PROGRAM_ID`, `SYSTEM_PROGRAM_ID`\n- `U8_MAX`, `U16_MAX`, `U32_MAX`, `U64_MAX`, `U128_MAX`\n\n**Functions:**\n- `findByKey : List Account → Pubkey → Option Account`\n- `findByAuthority : List Account → Pubkey → Option Account`\n- `canWrite : Pubkey → Account → Prop`\n- `transferCpiValid : TransferCpi → Prop`\n- `closes : Lifecycle → Lifecycle → Prop`\n- `valid_u64 : Nat → Prop` (and u8, u16, u32, u128)\n\n**Key lemmas:**\n- `closes_is_closed`, `closes_was_open`, `closed_irreversible`\n- `valid_u64_preserved_by_zero`, `valid_u64_preserved_by_same`\n- `find_map_update_other`, `find_map_update_same` (axioms for account list updates)\n\n### Proof patterns\n\n**Access control** — signer must match authority:\n```lean\nstructure ProgramState where\n  authority : Pubkey\n\ndef cancelTransition (s : ProgramState) (signer : Pubkey) : Option Unit :=\n  if signer = s.authority then some () else none\n\ntheorem cancel_access_control (s : ProgramState) (signer : Pubkey)\n    (h : cancelTransition s signer ≠ none) :\n    signer = s.authority := by\n  unfold cancelTransition at h\n  split_ifs at h with h_eq\n  · exact h_eq\n  · contradiction\n```\n\n**CPI correctness** — parameters match (pure `rfl`):\n```lean\ndef cancel_build_cpi (ctx : CancelContext) : TransferCpi :=\n  { program := TOKEN_PROGRAM_ID, «from» := ctx.escrow_token, «to» := ctx.dest,\n    authority := ctx.authority, amount := ctx.amount }\n\ntheorem cancel_cpi_correct (ctx : CancelContext) :\n    let cpi := cancel_build_cpi ctx\n    cpi.program = TOKEN_PROGRAM_ID ∧ cpi.«from» = ctx.escrow_token ∧\n    cpi.«to» = ctx.dest ∧ cpi.authority = ctx.authority ∧\n    cpi.amount = ctx.amount := by\n  unfold cancel_build_cpi\n  exact ⟨rfl, rfl, rfl, rfl, rfl⟩\n```\n\n**State machine** — lifecycle transitions:\n```lean\ndef cancelTransition (s : ProgramState) : Option ProgramState :=\n  if s.escrow.lifecycle = Lifecycle.open then\n    some { escrow := { s.escrow with lifecycle := Lifecycle.closed } }\n  else none\n\ntheorem cancel_closes_escrow (pre post : ProgramState)\n    (h : cancelTransition pre = some post) :\n    post.escrow.lifecycle = Lifecycle.closed := by\n  unfold cancelTransition at h\n  split_ifs at h with h_open\n  cases h\n  rfl\n```\n\n**Conservation** — invariant preserved across operations:\n```lean\ndef conservation (s : EngineState) : Prop := s.V >= s.C_tot + s.I\n\ndef depositTransition (s : EngineState) (amount : Nat) : Option EngineState :=\n  if s.V + amount \u003C= MAX_VAULT_TVL then\n    some { V := s.V + amount, C_tot := s.C_tot + amount, I := s.I }\n  else none\n\ntheorem deposit_conservation (s s' : EngineState) (amount : Nat)\n    (h_inv : conservation s)\n    (h : depositTransition s amount = some s') :\n    conservation s' := by\n  unfold depositTransition at h\n  split_ifs at h with h_le\n  · cases h\n    unfold conservation at h_inv ⊢  -- MUST unfold in BOTH hypothesis and goal\n    omega\n  · contradiction\n```\n\n**Arithmetic safety** — bounds preserved:\n```lean\ndef initializeTransition (amount taker : Nat) : Option ProgramState :=\n  if amount > 0 ∧ amount ≤ U64_MAX ∧ taker > 0 ∧ taker ≤ U64_MAX then\n    some { initializer_amount := amount, taker_amount := taker }\n  else none\n\ntheorem initialize_arithmetic_safety (amount taker : Nat) (post : ProgramState)\n    (h : initializeTransition amount taker = some post) :\n    post.initializer_amount ≤ U64_MAX ∧ post.taker_amount ≤ U64_MAX := by\n  unfold initializeTransition at h\n  split_ifs at h with h_bounds\n  cases h\n  exact ⟨h_bounds.2.1, h_bounds.2.2.2⟩\n```\n\n### Critical tactic rules\n\n| Do | Don't |\n|---|---|\n| `unfold f at h` before `split_ifs` | `simp [f] at h` before `split_ifs` (kills if-structure) |\n| `unfold pred at h_inv ⊢` for named predicates | `unfold pred` only in goal (omega can't see hypotheses) |\n| `cases h` after `split_ifs` on `some = some` | `injection h` (unnecessary, cases handles it) |\n| `omega` for linear arithmetic | `norm_num` for linear goals (omega is more reliable) |\n| `exact ⟨rfl, rfl, rfl⟩` for conjunctions of rfl | `constructor` + `rfl` + `constructor` + `rfl` (verbose) |\n| `if cond then ... else ...` without proof binding | `if h : cond then ...` when `h` is unused |\n\n### Common errors and fixes\n\n| Error | Fix |\n|---|---|\n| `omega could not prove the goal` | Unfold named predicates in hypotheses: `unfold pred at h ⊢` |\n| `no goals to be solved` | Remove redundant tactic (e.g., `· contradiction` after auto-closed branch) |\n| `unknown constant 'X'` | Check imports; add `import QEDGen.Solana.X` or `open QEDGen.Solana` |\n| `tactic 'split_ifs' failed, no if-then-else` | Use `unfold` first, not `simp` |\n| `unused variable 'h'` | Remove proof binding: `if h : cond` → `if cond` |\n\n## Step 6: Call Leanstral for hard sub-goals\n\nWhen you have a proof with `sorry` markers you cannot fill after 2-3 attempts:\n\n```bash\nqedgen fill-sorry --file formal_verification\u002FProofs\u002FHard.lean --validate\n```\n\nThis sends each `sorry` location to Leanstral with focused context. Review the result — Leanstral may introduce tactics you can learn from for future proofs.\n\nIf `fill-sorry` also fails, simplify the theorem statement or split the property into smaller lemmas.\n\n## Step 7: Verify and report\n\n```bash\ncd formal_verification && lake build\n```\n\nUpdate SPEC.md verification results table:\n- **Verified**: Theorem compiles, no `sorry`\n- **Partial**: Proof has `sorry` markers\n- **Open**: No compiling proof\n\n## Environment\n\n- **`MISTRAL_API_KEY`** — required for `fill-sorry`. Free from [console.mistral.ai](https:\u002F\u002Fconsole.mistral.ai)\n- **`QEDGEN_VALIDATION_WORKSPACE`** — optional override for global Mathlib cache location\n\n## Error handling\n\n- **First `lake build` is slow**: Mathlib compilation takes 15-45 min on first run. Subsequent builds reuse the cache.\n- **`could not resolve 'HEAD' to a commit`**: Remove `.lake\u002Fpackages\u002Fmathlib` and run `lake update`.\n- **Rate limiting (429)**: Built-in exponential backoff in `fill-sorry`.\n","# QEDGen — Agent-Driven Formal Verification\n\nYou (Claude) are the proof engineer. You read the codebase, write Lean 4 models and proofs, iterate on compiler errors, and call Leanstral (Mistral's theorem prover) only for hard sub-goals you cannot fill yourself.\n\n## Architecture\n\n```\nYou (Claude)                          Leanstral (remote model)\n  ├── Read spec \u002F source code           ├── Fill sorry markers\n  ├── Write Lean 4 models               └── Suggest tactics for hard goals\n  ├── Write theorem statements\n  ├── Write proof attempts\n  ├── Run `lake build`, read errors\n  └── Fix and iterate\n```\n\n## Step 1: Understand the program\n\nCheck for existing artifacts in this priority order:\n\n1. **spec.md exists** → Read it. An existing spec captures the author's intent, state model, invariants, and operations. Extract security goals, state model, and formal properties. Skip the scoping quiz and go directly to Step 2.\n2. **IDL exists** (`target\u002Fidl\u002F\u003Cprogram>.json`) → Run `qedgen spec --idl \u003Cpath>` to generate a draft SPEC.md with TODO markers, then refine interactively.\n3. **Neither exists** → Read the source code directly. Ask broader scoping questions.\n\n## Step 2: Scope the verification\n\nIf no spec.md was found, run a short interactive quiz — one question at a time, with checkbox options derived from the program's structure. Ask about **functionality and risks**, not implementation details.\n\n**Question 1: \"What does this program need to guarantee above all else?\"**\nOptions derived from the program's structure:\n- Authorization \u002F access control\n- Tokens are never lost \u002F correct routing\n- One-shot safety \u002F no replay\n- Arithmetic safety \u002F no overflow\n- Conservation (e.g., vault >= total claims)\n- All of the above\n\n**Question 2: \"Which scenario worries you most?\"**\nGenerate concrete risk scenarios from the program.\n\n**Question 3: \"Does the program make any assumptions that aren't enforced on-chain?\"**\n\nAsk questions **one at a time**. Wait for the user's answer before presenting the next question.\n\n## Step 3: Write SPEC.md\n\nWrite `formal_verification\u002FSPEC.md` using normative language (MUST, MUST NOT, MAY). Structure:\n\n```markdown\n# \u003CProgram Name> Verification Spec v1.0\n\n\u003C1-2 sentences describing what the program does>\n\n## 0. Security Goals\n1. **\u003CGoal name>**: \u003Cnormative statement>\n\n## 1. State Model\n\u003CState struct with field names, types, and comments>\n\u003CLifecycle diagram if applicable>\n\n## 2. Operations\n### 2.1 \u003COperation name>\n**Signers**: \u003Cwho MUST sign>\n**Preconditions**: \u003Cwhat MUST be true before>\n**Effects**: \u003Cnumbered steps>\n**Postconditions**: \u003Cwhat MUST be true after>\n\n## 3. Formal Properties\n### 3.1 \u003CCategory>\n**\u003Cproperty_id>**: For all \u003Cquantified variables>,\nif \u003Ctransition predicate> then \u003Cconclusion>.\n\n## 4. Trust Boundary\n\u003CWhat is axiomatic and why>\n\n## 5. Verification Results\n| Property | Status | Proof |\n|---|---|---|\n| ... | **Open** | |\n```\n\nPresent SPEC.md to the user and get confirmation before proceeding.\n\n## Step 4: Set up the Lean project\n\n```bash\nqedgen setup            # Ensure global Mathlib cache exists (first time: 15-45 min)\n```\n\nCreate the project structure:\n\n```\nformal_verification\u002F\n  lakefile.lean          # import lean_support and Mathlib\n  lean-toolchain         # leanprover\u002Flean4:v4.15.0\n  lean_support\u002F          # Solana axiom library (copy from qedgen)\n  Proofs.lean            # root import: import Proofs.AccessControl etc.\n  Proofs\u002F\n    AccessControl.lean\n    CpiCorrectness.lean\n    Conservation.lean\n    StateMachine.lean\n    ArithmeticSafety.lean\n```\n\n## Step 5: Write Lean proofs\n\nThis is the core step. You write Lean 4 directly — models, transitions, theorems, and proofs.\n\n### Modeling workflow\n\nFor each property in SPEC.md:\n\n1. **Define the state** as a Lean structure (map fields from source\u002Fspec)\n2. **Define the transition** as `Option StateType` (return `none` on precondition failure)\n3. **State the theorem** matching the SPEC.md property\n4. **Write the proof** using the patterns below\n5. **Run `lake build`** and iterate on errors\n\n### Support library API\n\nAfter `import QEDGen.Solana` and `open QEDGen.Solana`:\n\n**Types:**\n- `Pubkey` (= Nat), `U64` (= Nat), `U8` (= Nat)\n- `Account` — `{ key : Pubkey, authority : Pubkey, balance : Nat, writable : Bool }`\n- `Lifecycle` — `open | closed` (with DecidableEq)\n- `TransferCpi` — `{ program, «from», «to», authority, amount }`\n- `MintToCpi`, `BurnCpi`, `CloseCpi`\n\n**Constants:**\n- `TOKEN_PROGRAM_ID`, `SYSTEM_PROGRAM_ID`\n- `U8_MAX`, `U16_MAX`, `U32_MAX`, `U64_MAX`, `U128_MAX`\n\n**Functions:**\n- `findByKey : List Account → Pubkey → Option Account`\n- `findByAuthority : List Account → Pubkey → Option Account`\n- `canWrite : Pubkey → Account → Prop`\n- `transferCpiValid : TransferCpi → Prop`\n- `closes : Lifecycle → Lifecycle → Prop`\n- `valid_u64 : Nat → Prop` (and u8, u16, u32, u128)\n\n**Key lemmas:**\n- `closes_is_closed`, `closes_was_open`, `closed_irreversible`\n- `valid_u64_preserved_by_zero`, `valid_u64_preserved_by_same`\n- `find_map_update_other`, `find_map_update_same` (axioms for account list updates)\n\n### Proof patterns\n\n**Access control** — signer must match authority:\n```lean\nstructure ProgramState where\n  authority : Pubkey\n\ndef cancelTransition (s : ProgramState) (signer : Pubkey) : Option Unit :=\n  if signer = s.authority then some () else none\n\ntheorem cancel_access_control (s : ProgramState) (signer : Pubkey)\n    (h : cancelTransition s signer ≠ none) :\n    signer = s.authority := by\n  unfold cancelTransition at h\n  split_ifs at h with h_eq\n  · exact h_eq\n  · contradiction\n```\n\n**CPI correctness** — parameters match (pure `rfl`):\n```lean\ndef cancel_build_cpi (ctx : CancelContext) : TransferCpi :=\n  { program := TOKEN_PROGRAM_ID, «from» := ctx.escrow_token, «to» := ctx.dest,\n    authority := ctx.authority, amount := ctx.amount }\n\ntheorem cancel_cpi_correct (ctx : CancelContext) :\n    let cpi := cancel_build_cpi ctx\n    cpi.program = TOKEN_PROGRAM_ID ∧ cpi.«from» = ctx.escrow_token ∧\n    cpi.«to» = ctx.dest ∧ cpi.authority = ctx.authority ∧\n    cpi.amount = ctx.amount := by\n  unfold cancel_build_cpi\n  exact ⟨rfl, rfl, rfl, rfl, rfl⟩\n```\n\n**State machine** — lifecycle transitions:\n```lean\ndef cancelTransition (s : ProgramState) : Option ProgramState :=\n  if s.escrow.lifecycle = Lifecycle.open then\n    some { escrow := { s.escrow with lifecycle := Lifecycle.closed } }\n  else none\n\ntheorem cancel_closes_escrow (pre post : ProgramState)\n    (h : cancelTransition pre = some post) :\n    post.escrow.lifecycle = Lifecycle.closed := by\n  unfold cancelTransition at h\n  split_ifs at h with h_open\n  cases h\n  rfl\n```\n\n**Conservation** — invariant preserved across operations:\n```lean\ndef conservation (s : EngineState) : Prop := s.V >= s.C_tot + s.I\n\ndef depositTransition (s : EngineState) (amount : Nat) : Option EngineState :=\n  if s.V + amount \u003C= MAX_VAULT_TVL then\n    some { V := s.V + amount, C_tot := s.C_tot + amount, I := s.I }\n  else none\n\ntheorem deposit_conservation (s s' : EngineState) (amount : Nat)\n    (h_inv : conservation s)\n    (h : depositTransition s amount = some s') :\n    conservation s' := by\n  unfold depositTransition at h\n  split_ifs at h with h_le\n  · cases h\n    unfold conservation at h_inv ⊢  -- MUST unfold in BOTH hypothesis and goal\n    omega\n  · contradiction\n```\n\n**Arithmetic safety** — bounds preserved:\n```lean\ndef initializeTransition (amount taker : Nat) : Option ProgramState :=\n  if amount > 0 ∧ amount ≤ U64_MAX ∧ taker > 0 ∧ taker ≤ U64_MAX then\n    some { initializer_amount := amount, taker_amount := taker }\n  else none\n\ntheorem initialize_arithmetic_safety (amount taker : Nat) (post : ProgramState)\n    (h : initializeTransition amount taker = some post) :\n    post.initializer_amount ≤ U64_MAX ∧ post.taker_amount ≤ U64_MAX := by\n  unfold initializeTransition at h\n  split_ifs at h with h_bounds\n  cases h\n  exact ⟨h_bounds.2.1, h_bounds.2.2.2⟩\n```\n\n### Critical tactic rules\n\n| Do | Don't |\n|---|---|\n| `unfold f at h` before `split_ifs` | `simp [f] at h` before `split_ifs` (kills if-structure) |\n| `unfold pred at h_inv ⊢` for named predicates | `unfold pred` only in goal (omega can't see hypotheses) |\n| `cases h` after `split_ifs` on `some = some` | `injection h` (unnecessary, cases handles it) |\n| `omega` for linear arithmetic | `norm_num` for linear goals (omega is more reliable) |\n| `exact ⟨rfl, rfl, rfl⟩` for conjunctions of rfl | `constructor` + `rfl` + `constructor` + `rfl` (verbose) |\n| `if cond then ... else ...` without proof binding | `if h : cond then ...` when `h` is unused |\n\n### Common errors and fixes\n\n| Error | Fix |\n|---|---|\n| `omega could not prove the goal` | Unfold named predicates in hypotheses: `unfold pred at h ⊢` |\n| `no goals to be solved` | Remove redundant tactic (e.g., `· contradiction` after auto-closed branch) |\n| `unknown constant 'X'` | Check imports; add `import QEDGen.Solana.X` or `open QEDGen.Solana` |\n| `tactic 'split_ifs' failed, no if-then-else` | Use `unfold` first, not `simp` |\n| `unused variable 'h'` | Remove proof binding: `if h : cond` → `if cond` |\n\n## Step 6: Call Leanstral for hard sub-goals\n\nWhen you have a proof with `sorry` markers you cannot fill after 2-3 attempts:\n\n```bash\nqedgen fill-sorry --file formal_verification\u002FProofs\u002FHard.lean --validate\n```\n\nThis sends each `sorry` location to Leanstral with focused context. Review the result — Leanstral may introduce tactics you can learn from for future proofs.\n\nIf `fill-sorry` also fails, simplify the theorem statement or split the property into smaller lemmas.\n\n## Step 7: Verify and report\n\n```bash\ncd formal_verification && lake build\n```\n\nUpdate SPEC.md verification results table:\n- **Verified**: Theorem compiles, no `sorry`\n- **Partial**: Proof has `sorry` markers\n- **Open**: No compiling proof\n\n## Environment\n\n- **`MISTRAL_API_KEY`** — required for `fill-sorry`. Free from [console.mistral.ai](https:\u002F\u002Fconsole.mistral.ai)\n- **`QEDGEN_VALIDATION_WORKSPACE`** — optional override for global Mathlib cache location\n\n## Error handling\n\n- **First `lake build` is slow**: Mathlib compilation takes 15-45 min on first run. Subsequent builds reuse the cache.\n- **`could not resolve 'HEAD' to a commit`**: Remove `.lake\u002Fpackages\u002Fmathlib` and run `lake update`.\n- **Rate limiting (429)**: Built-in exponential backoff in `fill-sorry`.\n",{"name":5,"description":7},"main","58c363db4179b9a612289d4a328d877ac3e7e04d","solana-clawd\u002Fskills\u002Fsolana-formal-verification",1,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main","https:\u002F\u002Fsolanaclawd.com","https:\u002F\u002Fgithub.com\u002Fx402agent","The official Github of ClawdBot.","2026-05-16 13:16:08",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add x402agent\u002Fopenclawd-main --skill qedgen",{"tool":64,"command":65},"bunx","bunx skills add x402agent\u002Fopenclawd-main --skill qedgen",{"tool":67,"command":68},"pnpm","pnpm dlx skills add x402agent\u002Fopenclawd-main --skill qedgen","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",true,[72,78,82,86,90,94,100,104,108,112,116,120,123,127,131,135,139,143,147,151,155,161,165,169,173,177,181,185,189,192,196,200,204,208,212,216,220,226,229,233,237,241,245,249,253,257,261,265,268,271,274,277,280,283,286,289,292,295,298,302,306,310,314,318,322,326,330,334,338,342,346,350,354,358,362,366,369,372,375,378,381,384,387,390,393,396,399,403,407,413,417,421,425,429,433,437,441,445,449,453,457,461,465,469,473,477,481,485,489,493,497,501,503,507],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},".gitignore","OTHER","其他",753,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002F.gitignore",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},".npmignore",352,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002F.npmignore",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"bin\u002Fleanstral",6500816,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fbin\u002Fleanstral",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"Cargo.lock",47430,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FCargo.lock",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"Cargo.toml",307,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FCargo.toml",{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"CLAWD.md","REFERENCE","参考文档",6931,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FCLAWD.md",{"path":101,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":102,"sourceHtmlUrl":103},"crates\u002Fqedgen\u002FCargo.toml",544,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002FCargo.toml",{"path":105,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":106,"sourceHtmlUrl":107},"crates\u002Fqedgen\u002Flean_support\u002Flake-manifest.json",119,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002Flake-manifest.json",{"path":109,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":110,"sourceHtmlUrl":111},"crates\u002Fqedgen\u002Flean_support\u002Flakefile.lean",112,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002Flakefile.lean",{"path":113,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":115},"crates\u002Fqedgen\u002Flean_support\u002Flean-toolchain",25,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002Flean-toolchain",{"path":117,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":119},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen.lean",166,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen.lean",{"path":121,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":122},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana.lean",{"path":124,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":125,"sourceHtmlUrl":126},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean",4050,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean",{"path":128,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":129,"sourceHtmlUrl":130},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean",285,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean",{"path":132,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":133,"sourceHtmlUrl":134},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean",3361,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean",{"path":136,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":137,"sourceHtmlUrl":138},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean",1960,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean",{"path":140,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":141,"sourceHtmlUrl":142},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean",1430,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean",{"path":144,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":145,"sourceHtmlUrl":146},"crates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean",2032,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean",{"path":148,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":149,"sourceHtmlUrl":150},"crates\u002Fqedgen\u002Flean_support\u002FREADME.md",2913,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002FREADME.md",{"path":152,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":153,"sourceHtmlUrl":154},"crates\u002Fqedgen\u002Flean_support\u002Ftest_lemmas.lean",1235,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Flean_support\u002Ftest_lemmas.lean",{"path":156,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":159,"sourceHtmlUrl":160},"crates\u002Fqedgen\u002Fsrc\u002Fapi.rs","SCRIPT","脚本",33096,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fapi.rs",{"path":162,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":163,"sourceHtmlUrl":164},"crates\u002Fqedgen\u002Fsrc\u002Fconsolidate.rs",7104,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fconsolidate.rs",{"path":166,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":167,"sourceHtmlUrl":168},"crates\u002Fqedgen\u002Fsrc\u002Fmain.rs",4163,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fmain.rs",{"path":170,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":171,"sourceHtmlUrl":172},"crates\u002Fqedgen\u002Fsrc\u002Fproject.rs",3192,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fproject.rs",{"path":174,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":175,"sourceHtmlUrl":176},"crates\u002Fqedgen\u002Fsrc\u002Fspec.rs",19798,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fspec.rs",{"path":178,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":179,"sourceHtmlUrl":180},"crates\u002Fqedgen\u002Fsrc\u002Fvalidate.rs",5730,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Fsrc\u002Fvalidate.rs",{"path":182,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":183,"sourceHtmlUrl":184},"crates\u002Fqedgen\u002Ftemplates\u002F.gitignore",29,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002F.gitignore",{"path":186,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":187,"sourceHtmlUrl":188},"crates\u002Fqedgen\u002Ftemplates\u002Flakefile.lean",293,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002Flakefile.lean",{"path":190,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":191},"crates\u002Fqedgen\u002Ftemplates\u002Flean-toolchain","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002Flean-toolchain",{"path":193,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":194,"sourceHtmlUrl":195},"crates\u002Fqedgen\u002Ftemplates\u002FMain.lean",154,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002FMain.lean",{"path":197,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":198,"sourceHtmlUrl":199},"crates\u002Fqedgen\u002Ftemplates\u002FPROMPT_TEMPLATE.md",3301,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002FPROMPT_TEMPLATE.md",{"path":201,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":202,"sourceHtmlUrl":203},"crates\u002Fqedgen\u002Ftemplates\u002FREADME.lean.md",1595,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fcrates\u002Fqedgen\u002Ftemplates\u002FREADME.lean.md",{"path":205,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":206,"sourceHtmlUrl":207},"docs\u002FCNAME",10,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002FCNAME",{"path":209,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":210,"sourceHtmlUrl":211},"docs\u002Findex.html",11153,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Findex.html",{"path":213,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":214,"sourceHtmlUrl":215},"docs\u002Fllms-full.txt",8919,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Fllms-full.txt",{"path":217,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":218,"sourceHtmlUrl":219},"docs\u002Fllms.txt",2177,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Fllms.txt",{"path":221,"resourceType":222,"resourceTypeDesc":223,"sizeBytes":224,"sourceHtmlUrl":225},"docs\u002Flogo-dark.svg","ASSET","资产文件",648,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Flogo-dark.svg",{"path":227,"resourceType":222,"resourceTypeDesc":223,"sizeBytes":224,"sourceHtmlUrl":228},"docs\u002Flogo-light.svg","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Flogo-light.svg",{"path":230,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":231,"sourceHtmlUrl":232},"docs\u002Fstyle.css",7814,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fdocs\u002Fstyle.css",{"path":234,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":235,"sourceHtmlUrl":236},"example\u002Fescrow\u002F.gitignore",67,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002F.gitignore",{"path":238,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":239,"sourceHtmlUrl":240},"example\u002Fescrow\u002F.prettierignore",61,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002F.prettierignore",{"path":242,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":243,"sourceHtmlUrl":244},"example\u002Fescrow\u002FAnchor.toml",353,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002FAnchor.toml",{"path":246,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":247,"sourceHtmlUrl":248},"example\u002Fescrow\u002FCargo.lock",74497,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002FCargo.lock",{"path":250,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":251,"sourceHtmlUrl":252},"example\u002Fescrow\u002FCargo.toml",215,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002FCargo.toml",{"path":254,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":255,"sourceHtmlUrl":256},"example\u002Fescrow\u002Fformal_verification\u002F.gitignore",87,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002F.gitignore",{"path":258,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":259,"sourceHtmlUrl":260},"example\u002Fescrow\u002Fformal_verification\u002FEscrowProofs.lean",8842,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002FEscrowProofs.lean",{"path":262,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":263,"sourceHtmlUrl":264},"example\u002Fescrow\u002Fformal_verification\u002Flakefile.lean",264,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flakefile.lean",{"path":266,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":110,"sourceHtmlUrl":267},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002Flakefile.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002Flakefile.lean",{"path":269,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":270},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002Flean-toolchain","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002Flean-toolchain",{"path":272,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":273},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen.lean",{"path":275,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":276},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana.lean",{"path":278,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":125,"sourceHtmlUrl":279},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean",{"path":281,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":129,"sourceHtmlUrl":282},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean",{"path":284,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":133,"sourceHtmlUrl":285},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean",{"path":287,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":137,"sourceHtmlUrl":288},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean",{"path":290,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":141,"sourceHtmlUrl":291},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean",{"path":293,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":145,"sourceHtmlUrl":294},"example\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean",{"path":296,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":297},"example\u002Fescrow\u002Fformal_verification\u002Flean-toolchain","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002Flean-toolchain",{"path":299,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":300,"sourceHtmlUrl":301},"example\u002Fescrow\u002Fformal_verification\u002FREADME.md",675,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002FREADME.md",{"path":303,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":304,"sourceHtmlUrl":305},"example\u002Fescrow\u002Fformal_verification\u002FSPEC.md",6686,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002FSPEC.md",{"path":307,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":308,"sourceHtmlUrl":309},"example\u002Fescrow\u002Fformal_verification\u002FVERIFICATION_SCOPE.md",5062,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fformal_verification\u002FVERIFICATION_SCOPE.md",{"path":311,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":312,"sourceHtmlUrl":313},"example\u002Fescrow\u002Fmigrations\u002Fdeploy.ts",428,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fmigrations\u002Fdeploy.ts",{"path":315,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":316,"sourceHtmlUrl":317},"example\u002Fescrow\u002Fpackage.json",528,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fpackage.json",{"path":319,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":320,"sourceHtmlUrl":321},"example\u002Fescrow\u002Fprograms\u002Fescrow\u002FCargo.toml",376,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fprograms\u002Fescrow\u002FCargo.toml",{"path":323,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":324,"sourceHtmlUrl":325},"example\u002Fescrow\u002Fprograms\u002Fescrow\u002Fsrc\u002Flib.rs",6878,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fprograms\u002Fescrow\u002Fsrc\u002Flib.rs",{"path":327,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":328,"sourceHtmlUrl":329},"example\u002Fescrow\u002Fprograms\u002Fescrow\u002FXargo.toml",62,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Fprograms\u002Fescrow\u002FXargo.toml",{"path":331,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":332,"sourceHtmlUrl":333},"example\u002Fescrow\u002Ftests\u002Fescrow.ts",8826,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Ftests\u002Fescrow.ts",{"path":335,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":336,"sourceHtmlUrl":337},"example\u002Fescrow\u002Ftsconfig.json",205,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fescrow\u002Ftsconfig.json",{"path":339,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":340,"sourceHtmlUrl":341},"example\u002Fpercolator\u002F.cargo\u002Fconfig.toml",33,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002F.cargo\u002Fconfig.toml",{"path":343,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":344,"sourceHtmlUrl":345},"example\u002Fpercolator\u002F.gitignore",320,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002F.gitignore",{"path":347,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":348,"sourceHtmlUrl":349},"example\u002Fpercolator\u002FCargo.lock",8654,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002FCargo.lock",{"path":351,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":352,"sourceHtmlUrl":353},"example\u002Fpercolator\u002FCargo.toml",639,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002FCargo.toml",{"path":355,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":356,"sourceHtmlUrl":357},"example\u002Fpercolator\u002Fexamples\u002Foffsets.rs",1380,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fexamples\u002Foffsets.rs",{"path":359,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":360,"sourceHtmlUrl":361},"example\u002Fpercolator\u002Fformal_verification\u002Flake-manifest.json",3311,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flake-manifest.json",{"path":363,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":364,"sourceHtmlUrl":365},"example\u002Fpercolator\u002Fformal_verification\u002Flakefile.lean",282,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flakefile.lean",{"path":367,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":110,"sourceHtmlUrl":368},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002Flakefile.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002Flakefile.lean",{"path":370,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":371},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002Flean-toolchain","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002Flean-toolchain",{"path":373,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":374},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen.lean",{"path":376,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":118,"sourceHtmlUrl":377},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana.lean",{"path":379,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":125,"sourceHtmlUrl":380},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAccount.lean",{"path":382,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":129,"sourceHtmlUrl":383},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FAuthority.lean",{"path":385,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":133,"sourceHtmlUrl":386},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FCpi.lean",{"path":388,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":137,"sourceHtmlUrl":389},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FState.lean",{"path":391,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":141,"sourceHtmlUrl":392},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FToken.lean",{"path":394,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":145,"sourceHtmlUrl":395},"example\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean_support\u002FQEDGen\u002FSolana\u002FValid.lean",{"path":397,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":114,"sourceHtmlUrl":398},"example\u002Fpercolator\u002Fformal_verification\u002Flean-toolchain","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002Flean-toolchain",{"path":400,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":401,"sourceHtmlUrl":402},"example\u002Fpercolator\u002Fformal_verification\u002FPercolatorProofs.lean",7733,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002FPercolatorProofs.lean",{"path":404,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":405,"sourceHtmlUrl":406},"example\u002Fpercolator\u002Fformal_verification\u002FSPEC.md",4745,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fformal_verification\u002FSPEC.md",{"path":408,"resourceType":409,"resourceTypeDesc":410,"sizeBytes":411,"sourceHtmlUrl":412},"example\u002Fpercolator\u002FLICENSE","LICENSE","许可证",11357,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002FLICENSE",{"path":414,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":415,"sourceHtmlUrl":416},"example\u002Fpercolator\u002FREADME.md",5022,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002FREADME.md",{"path":418,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":419,"sourceHtmlUrl":420},"example\u002Fpercolator\u002Fscripts\u002Faudit-proof-strength.md",6540,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fscripts\u002Faudit-proof-strength.md",{"path":422,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":423,"sourceHtmlUrl":424},"example\u002Fpercolator\u002Fscripts\u002Fproof-strength-audit-results.md",91364,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fscripts\u002Fproof-strength-audit-results.md",{"path":426,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":427,"sourceHtmlUrl":428},"example\u002Fpercolator\u002Fscripts\u002Frun_kani_full_audit.sh",1203,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fscripts\u002Frun_kani_full_audit.sh",{"path":430,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":431,"sourceHtmlUrl":432},"example\u002Fpercolator\u002Fspec.md",110983,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fspec.md",{"path":434,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":435,"sourceHtmlUrl":436},"example\u002Fpercolator\u002Fsrc\u002Fi128.rs",20915,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fsrc\u002Fi128.rs",{"path":438,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":439,"sourceHtmlUrl":440},"example\u002Fpercolator\u002Fsrc\u002Fpercolator.rs",142541,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fsrc\u002Fpercolator.rs",{"path":442,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":443,"sourceHtmlUrl":444},"example\u002Fpercolator\u002Fsrc\u002Fwide_math.rs",61237,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Fsrc\u002Fwide_math.rs",{"path":446,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":447,"sourceHtmlUrl":448},"example\u002Fpercolator\u002Ftests\u002Famm_tests.rs",7576,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Famm_tests.rs",{"path":450,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":451,"sourceHtmlUrl":452},"example\u002Fpercolator\u002Ftests\u002Fcommon\u002Fmod.rs",4835,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fcommon\u002Fmod.rs",{"path":454,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":455,"sourceHtmlUrl":456},"example\u002Fpercolator\u002Ftests\u002Ffuzzing.proptest-regressions",4815,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Ffuzzing.proptest-regressions",{"path":458,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":459,"sourceHtmlUrl":460},"example\u002Fpercolator\u002Ftests\u002Ffuzzing.rs",44167,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Ffuzzing.rs",{"path":462,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":463,"sourceHtmlUrl":464},"example\u002Fpercolator\u002Ftests\u002Fproofs_arithmetic.rs",17497,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_arithmetic.rs",{"path":466,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":467,"sourceHtmlUrl":468},"example\u002Fpercolator\u002Ftests\u002Fproofs_audit.rs",35809,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_audit.rs",{"path":470,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":471,"sourceHtmlUrl":472},"example\u002Fpercolator\u002Ftests\u002Fproofs_instructions.rs",66315,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_instructions.rs",{"path":474,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":475,"sourceHtmlUrl":476},"example\u002Fpercolator\u002Ftests\u002Fproofs_invariants.rs",21549,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_invariants.rs",{"path":478,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":479,"sourceHtmlUrl":480},"example\u002Fpercolator\u002Ftests\u002Fproofs_lazy_ak.rs",22940,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_lazy_ak.rs",{"path":482,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":483,"sourceHtmlUrl":484},"example\u002Fpercolator\u002Ftests\u002Fproofs_liveness.rs",17558,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_liveness.rs",{"path":486,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":487,"sourceHtmlUrl":488},"example\u002Fpercolator\u002Ftests\u002Fproofs_safety.rs",106654,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_safety.rs",{"path":490,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":491,"sourceHtmlUrl":492},"example\u002Fpercolator\u002Ftests\u002Fproofs_v1131.rs",26015,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Fproofs_v1131.rs",{"path":494,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":495,"sourceHtmlUrl":496},"example\u002Fpercolator\u002Ftests\u002Funit_tests.rs",96036,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fexample\u002Fpercolator\u002Ftests\u002Funit_tests.rs",{"path":498,"resourceType":157,"resourceTypeDesc":158,"sizeBytes":499,"sourceHtmlUrl":500},"install.sh",4996,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Finstall.sh",{"path":409,"resourceType":409,"resourceTypeDesc":410,"sizeBytes":502,"sourceHtmlUrl":16},1063,{"path":504,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":505,"sourceHtmlUrl":506},"package.json",1085,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002Fpackage.json",{"path":508,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":509,"sourceHtmlUrl":510},"README.md",3750,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FREADME.md",[512,541,573,605,612,623],{"skillNo":513,"name":514,"nameZh":6,"description":515,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":516,"licenseFileUrl":517,"sourceHtmlUrl":518,"categories":519,"keywords":521,"publishedAt":44},"01M71DS25B2H00XQNAB45VRD82","skill-creator","Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references\u002F or scripts\u002F, removing stale content, validating against the AgentSkills spec). Triggers on phrases like \"create a skill\", \"author a skill\", \"tidy up a skill\", \"improve this skill\", \"review the skill\", \"clean up the skill\", \"audit the skill\".","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fskill-creator\u002Flicense.txt","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fskill-creator\u002FSKILL.md",[520],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[522,523,524,525,526,527,528,529,41,530,531,532,533,534,535,536,537,538,539,540],"skill creator","creator","up","clean","improve","tidy","new","files","review","create","references","audit","directory","scripts","edit","a skill","new skill","existing skill","editing",{"skillNo":542,"name":543,"nameZh":6,"description":544,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":545,"sourceHtmlUrl":546,"categories":547,"keywords":554,"publishedAt":44},"01M71DMZWVVYEN2RXNW32VTFBT","clawd-code-skill","Control Clawd via MCP protocol. Trigger with \"plan\" to write a precise execution plan then feed it to Clawd. Also supports direct commands, persistent sessions, agent teams, and advanced tool control.","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fclawd-code-skill-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fclawd-code-skill-main\u002FSKILL.md",[548,549],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":550,"categoryName":551,"taxonomyType":552,"taxonomyTypeDesc":553},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[40,555,556,557,558,559,560,561,562,563,564,565,566,567,33,568,569,570,571,572],"clawd","code skill","clawd code skill","agent teams","advanced","local","MCP","plan","write","node","commands","direct","execution plan","tool","sessions","teams","execution","use",{"skillNo":574,"name":575,"nameZh":6,"description":576,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":577,"sourceHtmlUrl":578,"categories":579,"keywords":588,"publishedAt":44},"01M71DM1RK8B85JEQNDY6D8G62","solana-clawd","solana-clawd — an open-source Solana AI agent framework built from Clawd Code's leaked agentic engine and the SolanaOS operator runtime. TypeScript MCP server for Clawd Desktop, Cursor, VS Code, or headless node. 31+ tools for Solana trading, on-chain intelligence, wallet management, Pump.fun scanning, MawdBot trading agents, Honcho v3 memory, Privy agentic wallets, and multi-venue perp execution (Hyperliquid + Aster). Use when asked about Solana trading, memecoin analysis, Pump.fun launches, MawdBot operations, OODA loops, wallet management, token research, agentic wallets, or any SolanaOS\u002Fsolana-clawd surface.","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002FSKILL.md",[580,583,586,587],{"categoryNo":581,"categoryName":582,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":584,"categoryName":585,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":550,"categoryName":551,"taxonomyType":552,"taxonomyTypeDesc":553},[555,589,590,591,592,593,594,595,596,597,598,561,599,600,601,41,602,603,604,40],"solana clawd","solana","solanaos","Wallet","headless","chain","memory","fun","privy","open","token research","agent framework","ai agent","agentic","mcp server","analysis",{"skillNo":606,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":607,"sourceHtmlUrl":608,"categories":609,"keywords":611,"publishedAt":44},"01M71DJZVSXC21XA2CM4FG6VYW","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-formal-verification\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",[610],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[5,43,42,41,40,39,38,37,36,35,25,34,33,32,31,30,29,28,27,26],{"skillNo":613,"name":614,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":615,"sourceHtmlUrl":616,"categories":617,"keywords":618,"publishedAt":44},"01M71DJV1FZRP9ZMK9GQ5F9WBQ","solana-dev-skill-main","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-dev-skill-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-dev-skill-main\u002FSKILL.md",[],[619,620,49,590,621,622],"dev","solana dev skill main","solana dev","solana dev skill",{"skillNo":624,"name":514,"nameZh":6,"description":515,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":516,"licenseFileUrl":625,"sourceHtmlUrl":626,"categories":627,"keywords":629,"publishedAt":44},"01M71DJJ1S5PHFP0B7YYH6ZJ1R","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002Flicense.txt","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fskill-creator\u002FSKILL.md",[628],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},[522,523,524,525,526,527,528,529,41,530,531,532,533,534,535,536,537,538,539,540]]