[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FXKCG1849MF06G62GMZPZ2":3,"skill-same:01M6FXKCG1849MF06G62GMZPZ2":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6FXKCG1849MF06G62GMZPZ2","jb-v5-v51-contracts",null,"Juicebox V5 vs V5.1 contract version separation rules. Use when: (1) determining which\ncontracts to use for a project, (2) versioned contracts show unexpected behavior,\n(3) transactions fail with \"invalid terminal\" or similar errors, (4) deploying new\nprojects vs interacting with existing projects. CRITICAL: Versioned contracts must never mix.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fmejango\u002Fjuicy\u002Fjb-v5-v51-contracts\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"jb v5 v51 contracts","contracts","show","juicebox v5","errors","with","separation","critical","invalid","contract","project","terminal","never","version","use","behavior","Rules","projects","transactions","2026-11-10 10:12:30",false,"---\nname: jb-v5-v51-contracts\ndescription: |\n  Juicebox V5 vs V5.1 contract version separation rules. Use when: (1) determining which\n  contracts to use for a project, (2) versioned contracts show unexpected behavior,\n  (3) transactions fail with \"invalid terminal\" or similar errors, (4) deploying new\n  projects vs interacting with existing projects. CRITICAL: Versioned contracts must never mix.\n---\n\n# Juicebox V5 vs V5.1 Contract Separation\n\n## Problem\n\nJuicebox has two contract versions: V5 (original) and V5.1 (upgraded). When contracts\nhave both versions, mixing them causes transactions to fail. A project using\nJBController5_1 MUST use JBMultiTerminal5_1, not the V5 terminal.\n\n## Context \u002F Trigger Conditions\n\n- Deploying new projects or terminals\n- Transactions failing with \"invalid terminal\" or permission errors\n- Querying rulesets returns unexpected data\n- Paying a project fails despite correct addresses\n- Determining which contracts to use for a given project\n\n## Solution\n\n### The Rule\n\n**When a contract has both V5 and V5.1 versions, you MUST use matching versions.**\n\nContracts that only have ONE version (no 5_1 variant) work with both V5 and V5.1 projects.\n\n### Detecting Project Version (CRITICAL)\n\n**IMPORTANT: Some non-revnet projects also use V5.0 contracts.** You cannot assume that\na project is on V5.1 just because it's not a revnet. The ONLY authoritative way to\ndetermine which contracts a project uses is to query `JBDirectory.controllerOf()`.\n\n**Always check JBDirectory.controllerOf() to get the actual controller address, then\ncompare against known V5 and V5.1 controller addresses.**\n\n```typescript\nconst JB_DIRECTORY = '0x0061e516886a0540f63157f112c0588ee0651dcf'\nconst JB_CONTROLLER_V5 = '0x27da30646502e2f642be5281322ae8c394f7668a'\nconst JB_CONTROLLER_V5_1 = '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1'\n\n\u002F\u002F Query JBDirectory for the project's controller\nconst controller = await publicClient.readContract({\n  address: JB_DIRECTORY,\n  abi: JB_DIRECTORY_ABI,\n  functionName: 'controllerOf',\n  args: [BigInt(projectId)],\n})\n\n\u002F\u002F Determine version by comparing controller address\nconst isV5 = controller.toLowerCase() === JB_CONTROLLER_V5.toLowerCase()\nconst isV5_1 = controller.toLowerCase() === JB_CONTROLLER_V5_1.toLowerCase()\n\nif (isV5) {\n  \u002F\u002F Use V5.0 contracts (JBMultiTerminal, JBRulesets, etc.)\n} else if (isV5_1) {\n  \u002F\u002F Use V5.1 contracts (JBMultiTerminal5_1, JBRulesets5_1, etc.)\n} else {\n  \u002F\u002F Unknown controller - handle edge case\n}\n```\n\n**Why not check owner?** While revnets are owned by REVDeployer and always use V5.0,\nsome regular projects deployed before V5.1 also use V5.0. Checking the owner only\ntells you if it's a revnet, not which contract version the project actually uses.\n\n### Contract Address Reference\n\n**Shared Contracts (work with BOTH V5 and V5.1)**\n\n| Contract | Address |\n|----------|---------|\n| JBProjects | 0x885f707efa18d2cb12f05a3a8eba6b4b26c8c1d4 |\n| JBTokens | 0x4d0edd347fb1fa21589c1e109b3474924be87636 |\n| JBDirectory | 0x0061e516886a0540f63157f112c0588ee0651dcf |\n| JBSplits | 0x7160a322fea44945a6ef9adfd65c322258df3c5e |\n| JBFundAccessLimits | 0x3a46b21720c8b70184b0434a2293b2fdcc497ce7 |\n| JBPermissions | 0xba948dab74e875b19cf0e2ca7a4546c0c2defc40 |\n| JBPrices | 0x6e92e3b5ce1e7a4344c6d27c0c54efd00df92fb6 |\n| JBFeelessAddresses | 0xf76f7124f73abc7c30b2f76121afd4c52be19442 |\n\n**V5.1 Contracts (for NEW projects)**\n\n| Contract | Address |\n|----------|---------|\n| JBController5_1 | 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 |\n| JBMultiTerminal5_1 | 0x52869db3d61dde1e391967f2ce5039ad0ecd371c |\n| JBRulesets5_1 | 0xd4257005ca8d27bbe11f356453b0e4692414b056 |\n| JBTerminalStore5_1 | 0x82239c5a21f0e09573942caa41c580fa36e27071 |\n| JBOmnichainDeployer5_1 | 0x587bf86677ec0d1b766d9ba0d7ac2a51c6c2fc71 |\n\n**V5 Contracts (for REVNETS)**\n\n| Contract | Address |\n|----------|---------|\n| JBController | 0x27da30646502e2f642be5281322ae8c394f7668a |\n| JBMultiTerminal | 0x2db6d704058e552defe415753465df8df0361846 |\n| JBRulesets | 0x6292281d69c3593fcf6ea074e5797341476ab428 |\n| REVDeployer | 0x2ca27bde7e7d33e353b44c27acfcf6c78dde251d |\n\n### Code Pattern\n\n```typescript\n\u002F\u002F Known controller addresses (same on all chains via CREATE2)\nconst CONTROLLERS = {\n  V5: '0x27da30646502e2f642be5281322ae8c394f7668a',\n  V5_1: '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1',\n}\n\n\u002F\u002F Versioned contracts by version\nconst VERSIONED_CONTRACTS = {\n  V5: {\n    controller: '0x27da30646502e2f642be5281322ae8c394f7668a',  \u002F\u002F JBController\n    terminal: '0x2db6d704058e552defe415753465df8df0361846',    \u002F\u002F JBMultiTerminal\n    rulesets: '0x6292281d69c3593fcf6ea074e5797341476ab428',    \u002F\u002F JBRulesets\n  },\n  V5_1: {\n    controller: '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1',  \u002F\u002F JBController5_1\n    terminal: '0x52869db3d61dde1e391967f2ce5039ad0ecd371c',    \u002F\u002F JBMultiTerminal5_1\n    rulesets: '0xd4257005ca8d27bbe11f356453b0e4692414b056',    \u002F\u002F JBRulesets5_1\n  },\n}\n\n\u002F\u002F Shared contracts work with any project\nconst SHARED = {\n  directory: '0x0061e516886a0540f63157f112c0588ee0651dcf',\n  splits: '0x7160a322fea44945a6ef9adfd65c322258df3c5e',\n  fundAccessLimits: '0x3a46b21720c8b70184b0434a2293b2fdcc497ce7',\n  projects: '0x885f707efa18d2cb12f05a3a8eba6b4b26c8c1d4',\n  tokens: '0x4d0edd347fb1fa21589c1e109b3474924be87636',\n}\n\n\u002F\u002F Helper to get correct contracts for a project\n\u002F\u002F ALWAYS queries JBDirectory.controllerOf() - the ONLY authoritative source\nasync function getContractsForProject(projectId: number): Promise\u003C{\n  controller: `0x${string}`,\n  terminal: `0x${string}`,\n  rulesets: `0x${string}`,\n  version: 'V5' | 'V5_1',\n}> {\n  \u002F\u002F Step 1: Query JBDirectory for the project's actual controller\n  const controller = await publicClient.readContract({\n    address: SHARED.directory,\n    abi: JB_DIRECTORY_ABI,\n    functionName: 'controllerOf',\n    args: [BigInt(projectId)],\n  })\n\n  \u002F\u002F Step 2: Determine version by comparing controller address\n  const controllerLower = controller.toLowerCase()\n\n  if (controllerLower === CONTROLLERS.V5.toLowerCase()) {\n    return { ...VERSIONED_CONTRACTS.V5, version: 'V5' }\n  }\n\n  if (controllerLower === CONTROLLERS.V5_1.toLowerCase()) {\n    return { ...VERSIONED_CONTRACTS.V5_1, version: 'V5_1' }\n  }\n\n  \u002F\u002F Unknown controller - this shouldn't happen for valid Juicebox projects\n  throw new Error(`Unknown controller ${controller} for project ${projectId}`)\n}\n```\n\n### Cast Command to Check Version\n\n```bash\n# Get controller for a project - this is the authoritative source\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \\\n  \"controllerOf(uint256)(address)\" $PROJECT_ID --rpc-url $RPC_URL\n\n# Compare result:\n# 0x27da30646502e2f642be5281322ae8c394f7668a = V5.0\n# 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 = V5.1\n```\n\n## Verification\n\n- Payment transactions succeed without \"invalid terminal\" errors\n- Ruleset queries return expected data\n- Project creation uses correct contract set\n\n## Example\n\nPaying NANA (Project #1, a Revnet):\n```bash\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \"controllerOf(uint256)(address)\" 1\n# Returns: 0x27da30646502e2f642be5281322ae8c394f7668a (V5 controller)\n# → Use V5 contracts: JBMultiTerminal 0x2db6d704058e552defe415753465df8df0361846\n```\n\nPaying a project deployed with V5.1:\n```bash\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \"controllerOf(uint256)(address)\" 123\n# Returns: 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 (V5.1 controller)\n# → Use V5.1 contracts: JBMultiTerminal5_1 0x52869db3d61dde1e391967f2ce5039ad0ecd371c\n```\n\n## Notes\n\n- **CRITICAL**: Always check `JBDirectory.controllerOf()` to determine version - never assume based on ownership\n- Some non-revnet projects use V5.0 contracts (deployed before V5.1 existed)\n- All addresses are deterministic across all chains (Ethereum, Optimism, Base, Arbitrum)\n- JBOmnichainDeployer5_1 deploys to all chains at once using V5.1 contracts\n- Source of truth: [nana-core-v5\u002Fdeployments](https:\u002F\u002Fgithub.com\u002FBananapus\u002Fnana-core-v5\u002Ftree\u002Fmain\u002Fdeployments) and [docs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses](https:\u002F\u002Fdocs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses)\n\n## References\n\n- JBDirectory (for controllerOf lookup): 0x0061e516886a0540f63157f112c0588ee0651dcf\n- JBController V5: 0x27da30646502e2f642be5281322ae8c394f7668a\n- JBController V5.1: 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1\n- Official docs: https:\u002F\u002Fdocs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses\n","# Juicebox V5 vs V5.1 Contract Separation\n\n## Problem\n\nJuicebox has two contract versions: V5 (original) and V5.1 (upgraded). When contracts\nhave both versions, mixing them causes transactions to fail. A project using\nJBController5_1 MUST use JBMultiTerminal5_1, not the V5 terminal.\n\n## Context \u002F Trigger Conditions\n\n- Deploying new projects or terminals\n- Transactions failing with \"invalid terminal\" or permission errors\n- Querying rulesets returns unexpected data\n- Paying a project fails despite correct addresses\n- Determining which contracts to use for a given project\n\n## Solution\n\n### The Rule\n\n**When a contract has both V5 and V5.1 versions, you MUST use matching versions.**\n\nContracts that only have ONE version (no 5_1 variant) work with both V5 and V5.1 projects.\n\n### Detecting Project Version (CRITICAL)\n\n**IMPORTANT: Some non-revnet projects also use V5.0 contracts.** You cannot assume that\na project is on V5.1 just because it's not a revnet. The ONLY authoritative way to\ndetermine which contracts a project uses is to query `JBDirectory.controllerOf()`.\n\n**Always check JBDirectory.controllerOf() to get the actual controller address, then\ncompare against known V5 and V5.1 controller addresses.**\n\n```typescript\nconst JB_DIRECTORY = '0x0061e516886a0540f63157f112c0588ee0651dcf'\nconst JB_CONTROLLER_V5 = '0x27da30646502e2f642be5281322ae8c394f7668a'\nconst JB_CONTROLLER_V5_1 = '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1'\n\n\u002F\u002F Query JBDirectory for the project's controller\nconst controller = await publicClient.readContract({\n  address: JB_DIRECTORY,\n  abi: JB_DIRECTORY_ABI,\n  functionName: 'controllerOf',\n  args: [BigInt(projectId)],\n})\n\n\u002F\u002F Determine version by comparing controller address\nconst isV5 = controller.toLowerCase() === JB_CONTROLLER_V5.toLowerCase()\nconst isV5_1 = controller.toLowerCase() === JB_CONTROLLER_V5_1.toLowerCase()\n\nif (isV5) {\n  \u002F\u002F Use V5.0 contracts (JBMultiTerminal, JBRulesets, etc.)\n} else if (isV5_1) {\n  \u002F\u002F Use V5.1 contracts (JBMultiTerminal5_1, JBRulesets5_1, etc.)\n} else {\n  \u002F\u002F Unknown controller - handle edge case\n}\n```\n\n**Why not check owner?** While revnets are owned by REVDeployer and always use V5.0,\nsome regular projects deployed before V5.1 also use V5.0. Checking the owner only\ntells you if it's a revnet, not which contract version the project actually uses.\n\n### Contract Address Reference\n\n**Shared Contracts (work with BOTH V5 and V5.1)**\n\n| Contract | Address |\n|----------|---------|\n| JBProjects | 0x885f707efa18d2cb12f05a3a8eba6b4b26c8c1d4 |\n| JBTokens | 0x4d0edd347fb1fa21589c1e109b3474924be87636 |\n| JBDirectory | 0x0061e516886a0540f63157f112c0588ee0651dcf |\n| JBSplits | 0x7160a322fea44945a6ef9adfd65c322258df3c5e |\n| JBFundAccessLimits | 0x3a46b21720c8b70184b0434a2293b2fdcc497ce7 |\n| JBPermissions | 0xba948dab74e875b19cf0e2ca7a4546c0c2defc40 |\n| JBPrices | 0x6e92e3b5ce1e7a4344c6d27c0c54efd00df92fb6 |\n| JBFeelessAddresses | 0xf76f7124f73abc7c30b2f76121afd4c52be19442 |\n\n**V5.1 Contracts (for NEW projects)**\n\n| Contract | Address |\n|----------|---------|\n| JBController5_1 | 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 |\n| JBMultiTerminal5_1 | 0x52869db3d61dde1e391967f2ce5039ad0ecd371c |\n| JBRulesets5_1 | 0xd4257005ca8d27bbe11f356453b0e4692414b056 |\n| JBTerminalStore5_1 | 0x82239c5a21f0e09573942caa41c580fa36e27071 |\n| JBOmnichainDeployer5_1 | 0x587bf86677ec0d1b766d9ba0d7ac2a51c6c2fc71 |\n\n**V5 Contracts (for REVNETS)**\n\n| Contract | Address |\n|----------|---------|\n| JBController | 0x27da30646502e2f642be5281322ae8c394f7668a |\n| JBMultiTerminal | 0x2db6d704058e552defe415753465df8df0361846 |\n| JBRulesets | 0x6292281d69c3593fcf6ea074e5797341476ab428 |\n| REVDeployer | 0x2ca27bde7e7d33e353b44c27acfcf6c78dde251d |\n\n### Code Pattern\n\n```typescript\n\u002F\u002F Known controller addresses (same on all chains via CREATE2)\nconst CONTROLLERS = {\n  V5: '0x27da30646502e2f642be5281322ae8c394f7668a',\n  V5_1: '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1',\n}\n\n\u002F\u002F Versioned contracts by version\nconst VERSIONED_CONTRACTS = {\n  V5: {\n    controller: '0x27da30646502e2f642be5281322ae8c394f7668a',  \u002F\u002F JBController\n    terminal: '0x2db6d704058e552defe415753465df8df0361846',    \u002F\u002F JBMultiTerminal\n    rulesets: '0x6292281d69c3593fcf6ea074e5797341476ab428',    \u002F\u002F JBRulesets\n  },\n  V5_1: {\n    controller: '0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1',  \u002F\u002F JBController5_1\n    terminal: '0x52869db3d61dde1e391967f2ce5039ad0ecd371c',    \u002F\u002F JBMultiTerminal5_1\n    rulesets: '0xd4257005ca8d27bbe11f356453b0e4692414b056',    \u002F\u002F JBRulesets5_1\n  },\n}\n\n\u002F\u002F Shared contracts work with any project\nconst SHARED = {\n  directory: '0x0061e516886a0540f63157f112c0588ee0651dcf',\n  splits: '0x7160a322fea44945a6ef9adfd65c322258df3c5e',\n  fundAccessLimits: '0x3a46b21720c8b70184b0434a2293b2fdcc497ce7',\n  projects: '0x885f707efa18d2cb12f05a3a8eba6b4b26c8c1d4',\n  tokens: '0x4d0edd347fb1fa21589c1e109b3474924be87636',\n}\n\n\u002F\u002F Helper to get correct contracts for a project\n\u002F\u002F ALWAYS queries JBDirectory.controllerOf() - the ONLY authoritative source\nasync function getContractsForProject(projectId: number): Promise\u003C{\n  controller: `0x${string}`,\n  terminal: `0x${string}`,\n  rulesets: `0x${string}`,\n  version: 'V5' | 'V5_1',\n}> {\n  \u002F\u002F Step 1: Query JBDirectory for the project's actual controller\n  const controller = await publicClient.readContract({\n    address: SHARED.directory,\n    abi: JB_DIRECTORY_ABI,\n    functionName: 'controllerOf',\n    args: [BigInt(projectId)],\n  })\n\n  \u002F\u002F Step 2: Determine version by comparing controller address\n  const controllerLower = controller.toLowerCase()\n\n  if (controllerLower === CONTROLLERS.V5.toLowerCase()) {\n    return { ...VERSIONED_CONTRACTS.V5, version: 'V5' }\n  }\n\n  if (controllerLower === CONTROLLERS.V5_1.toLowerCase()) {\n    return { ...VERSIONED_CONTRACTS.V5_1, version: 'V5_1' }\n  }\n\n  \u002F\u002F Unknown controller - this shouldn't happen for valid Juicebox projects\n  throw new Error(`Unknown controller ${controller} for project ${projectId}`)\n}\n```\n\n### Cast Command to Check Version\n\n```bash\n# Get controller for a project - this is the authoritative source\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \\\n  \"controllerOf(uint256)(address)\" $PROJECT_ID --rpc-url $RPC_URL\n\n# Compare result:\n# 0x27da30646502e2f642be5281322ae8c394f7668a = V5.0\n# 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 = V5.1\n```\n\n## Verification\n\n- Payment transactions succeed without \"invalid terminal\" errors\n- Ruleset queries return expected data\n- Project creation uses correct contract set\n\n## Example\n\nPaying NANA (Project #1, a Revnet):\n```bash\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \"controllerOf(uint256)(address)\" 1\n# Returns: 0x27da30646502e2f642be5281322ae8c394f7668a (V5 controller)\n# → Use V5 contracts: JBMultiTerminal 0x2db6d704058e552defe415753465df8df0361846\n```\n\nPaying a project deployed with V5.1:\n```bash\ncast call 0x0061e516886a0540f63157f112c0588ee0651dcf \"controllerOf(uint256)(address)\" 123\n# Returns: 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1 (V5.1 controller)\n# → Use V5.1 contracts: JBMultiTerminal5_1 0x52869db3d61dde1e391967f2ce5039ad0ecd371c\n```\n\n## Notes\n\n- **CRITICAL**: Always check `JBDirectory.controllerOf()` to determine version - never assume based on ownership\n- Some non-revnet projects use V5.0 contracts (deployed before V5.1 existed)\n- All addresses are deterministic across all chains (Ethereum, Optimism, Base, Arbitrum)\n- JBOmnichainDeployer5_1 deploys to all chains at once using V5.1 contracts\n- Source of truth: [nana-core-v5\u002Fdeployments](https:\u002F\u002Fgithub.com\u002FBananapus\u002Fnana-core-v5\u002Ftree\u002Fmain\u002Fdeployments) and [docs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses](https:\u002F\u002Fdocs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses)\n\n## References\n\n- JBDirectory (for controllerOf lookup): 0x0061e516886a0540f63157f112c0588ee0651dcf\n- JBController V5: 0x27da30646502e2f642be5281322ae8c394f7668a\n- JBController V5.1: 0xf3cc99b11bd73a2e3b8815fb85fe0381b29987e1\n- Official docs: https:\u002F\u002Fdocs.juicebox.money\u002Fdev\u002Fv5\u002Faddresses\n",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fmejango\u002Fjuicy\u002Fjb-v5-v51-contracts",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add kbarbel640-del\u002Fskills --skill jb-v5-v51-contracts",{"tool":60,"command":61},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill jb-v5-v51-contracts",{"tool":63,"command":64},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill jb-v5-v51-contracts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fmejango\u002Fjuicy\u002Fjb-v5-v51-contracts\u002FSKILL.md",true,[],[69,97,125,146,152,172],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":78,"publishedAt":42},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000036","内容创作者",[79,80,81,28,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96],"crowd prompting","prompting","api","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":108,"publishedAt":42},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[109,81,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,85,37],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":134,"publishedAt":42},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[131],{"categoryNo":132,"categoryName":133,"taxonomyType":106,"taxonomyTypeDesc":107},"01JBSEEDCAT000000000000021","资料检索与研究",[135,136,137,138,139,140,141,28,142,123,37,143,81,144,145],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":147,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":151,"publishedAt":42},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[150],{"categoryNo":132,"categoryName":133,"taxonomyType":106,"taxonomyTypeDesc":107},[138,137,136,135,145,140,141,28,139,123,37,142,143,81,144],{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":42},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[159,160,161,162,163,164,165,166,167,168,169,170,171],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":180,"publishedAt":42},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[178,179],{"categoryNo":104,"categoryName":105,"taxonomyType":106,"taxonomyTypeDesc":107},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[181,182,24,183,28,184,185,47,186,143,187,39,40,188,189,94,190,191,192],"agent constitution","constitution","tree","query","base","log","check","compliance","actions","state","governance","github"]