Agent skill

Smart Sessions And Policies

by Nethereum in Nethereum/Nethereum

Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator…

MITAuto-check passedBusiness, Finance & HR

Install Smart Sessions And Policies

skills CLI
$ npx skills add Nethereum/Nethereum --skill smart-sessions-and-policies -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Nethereum/Nethereum smart-sessions-and-policies --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nethereum-skills/skills/smart-sessions-and-policies .claude/skills/smart-sessions-and-policies && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
smart-sessions-and-policies
GitHub stars
2.3k
Token cost
~3.9k tokens
SKILL.md length
1,021 words
Files
1
Skills in repo
71
Repo updated
First seen
Licence
MIT

At a glance

Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator…

  • The user mentions session keys
  • SKILL.md covers When to Use This, Packages, The Simple Way and Mental Model: A Session Is a…, plus 5 more sections
  • Calls dotnet
  • Scoped permissions

What it does

Smart Sessions And Policies is an agent skill from Nethereum/Nethereum. Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator and policies (SudoPolicy, UniActionPolicy, ERC20SpendingLimitPolicy). Use whenever the user mentions session keys, scoped permissions, delegated signing for a bot/agent, spending limits on a smart account, revocable wallet access, automated trading bot authorization, or SmartSession/permissionId, in .NET/C.

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Business, Finance & HR, covering Trading and backtesting. It works with C# and .NET. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.

When your agent uses it

  • The user mentions session keys
  • Scoped permissions
  • Delegated signing for a bot/agent
  • Spending limits on a smart account

Example prompts

  • “/smart-sessions-and-policies”

What it can do on your machine

Read from SKILL.md and the folder at commit 229f278. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.nethereum.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Smart Sessions And Policies loads about 3.9k tokens when it runs. Until then it costs about 134 tokens; SKILL.md has 1,021 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~134
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Nethereum/Nethereum at commit 229f278, republished under its MIT licence (© Nethereum). 1,021 words, ~3,858 tokens.

Download SKILL.mdSave it as .claude/skills/smart-sessions-and-policies/SKILL.md (or your agent's skills folder).
name
smart-sessions-and-policies
description
Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator and policies (SudoPolicy, UniActionPolicy, ERC20SpendingLimitPolicy). Use whenever the user mentions session keys, scoped permissions, delegated signing for a bot/agent, spending limits on a smart account, revocable wallet access, automated trading bot authorization, or SmartSession/permissionId, in .NET/C#.
user-invocable
true

Smart Sessions and Policies: Scoped, Revocable Session Keys

An automated trading bot, a backend service that pays out rewards, an AI agent acting on a user's behalf — all of them need to sign UserOperations, but none of them should hold the account owner's key. Handing over the owner key gives unlimited, permanent authority: it can call anything, spend anything, forever, until someone rotates the key everywhere. A session key is the alternative: a fresh, disposable keypair that authenticates through the account's SmartSession ERC-7579 validator, constrained by one or more policies that say exactly what it may do — call this one function, transfer up to this many tokens — and nothing else. Revoke it and the authority is gone; the owner key never left cold storage.

When to Use This

  • User wants to let a bot/agent/backend act on an account without giving it full control
  • User wants a spending limit or one-function-only permission for a delegated key
  • User mentions session keys, scoped permissions, or revocable access for a smart account
  • User is building automation: recurring payments, DCA bots, reward payouts, agentic execution
  • User wants to know what happens when a call is out of policy

Packages

bash
dotnet add package Nethereum.Web3
dotnet add package Nethereum.AccountAbstraction

You need an IAAClient and an already-deployed, ERC-7579-compatible smart account with at least one validator (see the modular-accounts skill). On top of that, sessions deploy generated Nethereum contract services — none requiring hand-written ABI:

ContractGenerated serviceRole
SmartSessionSmartSessionServiceThe TYPE_VALIDATOR module every session authenticates through
ECDSASessionValidatorECDSASessionValidatorServiceThe ISessionValidator a session's signature is checked against — separate from the account's own ECDSAValidator
SudoPolicySudoPolicyServiceAn action/UserOp policy that always allows — "no further restriction"
UniActionPolicyUniActionPolicyServiceAn action policy with per-argument conditions and a value limit
ERC20SpendingLimitPolicyERC20SpendingLimitPolicyServiceAn action policy that tracks cumulative ERC-20 spend against a limit
csharp
using System.Numerics;
using Nethereum.Hex.HexConvertors.Extensions;
using Nethereum.AccountAbstraction.ERC7579.Modules.SmartSession;
using Nethereum.AccountAbstraction.Contracts.Modules.SmartSessions.SmartSession;
using Nethereum.AccountAbstraction.Contracts.Modules.SmartSessions.SmartSession.ContractDefinition;
using Nethereum.AccountAbstraction.Contracts.Modules.SmartSessions.Policies.SudoPolicy;
using Nethereum.AccountAbstraction.Contracts.Modules.SmartSessions.Policies.SudoPolicy.ContractDefinition;
using Nethereum.AccountAbstraction.Contracts.Modules.SmartSessions.Policies.UniActionPolicy;

The Simple Way

csharp
using Nethereum.AccountAbstraction; // AATransactionReceipt
using Nethereum.AccountAbstraction.Client;
using Nethereum.AccountAbstraction.Contracts.Core.NethereumAccount;
using Nethereum.AccountAbstraction.ERC7579.Modules;
using Nethereum.AccountAbstraction.ERC7579.Modules.SmartSession;
using Nethereum.Signer;

// 1. A fresh keypair - the agent/bot process holds ONLY this, never the account owner's key.
var sessionKey = EthECKey.GenerateKey();

// 2. Scope it to exactly one action: call count() on `counterAddress`, no other function, no other
//    target. SudoPolicy means "no further restriction on the args of THIS action" - see below for
//    when you'd use UniActionPolicy or a spending limit instead.
var salt = new byte[32];
Guid.NewGuid().ToByteArray().CopyTo(salt, 0);

var config = new SmartSessionConfig()
    .WithSessionValidator(sessionValidatorAddress)              // a deployed ECDSASessionValidator
    .WithSessionValidatorInitData(sessionKey.GetPublicAddress())
    .WithSalt(salt)
    // UnrestrictedAction's selector arg is the 4-byte function selector as a hex string, e.g. "0x06661abd".
    .WithAction(ActionDataBuilder.UnrestrictedAction(counterAddress, countSelector, sudoPolicyAddress));

// 3. Enable it: installs SmartSession (first time only) and this session, in one UserOp, signed by
//    the account's OWNER key - the session key never touches this step.
config.ModuleAddress = smartSessionAddress;
var accountService = new NethereumAccountService(web3, account.Address);
accountService.UseAccountAbstraction(account, aaClient);
await accountService.InstallModuleAndWaitForReceiptAsync(config);

// 4. Attach a SEPARATE NethereumSmartAccount for the SAME address, authenticated by the session key.
var permissionId = await smartSession.GetPermissionIdQueryAsync(config.ToSession());
var sessionAccount = aaClient.GetAccount(
    account.Address,
    new SmartSessionKeySigningService(sessionKey, permissionId),
    new SmartSessionValidatorModule(smartSessionAddress, permissionId));

// 5. From here, the session key signs - the owner key is never involved again.
counter.UseAccountAbstraction(sessionAccount, aaClient);
var receipt = (AATransactionReceipt)await counter.CountRequestAndWaitForReceiptAsync();

Mental Model: A Session Is a Scoped Permission Set

SmartSession is one ERC-7579 validator contract shared by every session on every account. A session's identity is its PermissionId — a bytes32 derived only from SessionValidator, SessionValidatorInitData, and Salt (SmartSessionConfig.ToSession()). Two sessions with the same validator, init data, and salt collide on the same PermissionId even if their actions differ — always use a fresh, random salt per session.

Policies attach at two scopes:

  • UserOpPolicies (WithUserOpPolicy/WithSudoPolicy) — evaluated once per UserOperation, regardless of which function it calls. Use for session-wide gates.
  • Actions (WithAction/ActionDataBuilder) — evaluated per (target, selector) pair. This is where most real scoping happens.
Policy contractWhat it allowsNethereum builder
SudoPolicyEverything, unconditionally, for the scope it's attached toWithSudoPolicy(address) / ActionDataBuilder.WithSudoPolicy
UniActionPolicyOne function, with per-argument conditions and/or a native-value limitUniActionPolicyBuilder
ERC20SpendingLimitPolicytransfer/approve/transferFrom up to a cumulative token limitERC20SpendingLimitBuilder

A single session can mix a SudoPolicy-scoped action with a UniActionPolicy-scoped one.

SudoPolicy: Unconstrained Within the Scope

SudoPolicy scoped to a specific action is safe: the session can still only call that one (target, selector) — it just means "don't restrict the arguments further." Reach for it when a function has nothing worth restricting, e.g. a zero-argument function like count():

csharp
var result = await sudoPolicyService.CheckActionQueryAsync(
    configId, account, target, value, calldata);
// result == 0 (SIG_VALIDATION_SUCCESS) - SudoPolicy never inspects arguments.

SudoPolicy scoped as a UserOpPolicy is a much bigger grant — it removes UserOp-level gating entirely, leaving only whatever action policies you've attached (or none) as the real boundary.

UniActionPolicy: One Action, With Rules

UniActionPolicy is the tool for "this session may call this one function, and here's what its arguments must look like":

csharp
using Nethereum.AccountAbstraction.ERC7579.Modules.SmartSession;

// A DCA bot may call swap() on ONE router, up to 100 (token-unit) worth of value per call.
var maxSwapValue = BigInteger.Parse("100000000");

var policyData = new UniActionPolicyBuilder()
    .WithValueLimit(maxSwapValue)
    .Build();

var session = new SmartSessionConfig()
    .WithSessionValidator(sessionKeyValidator)
    .WithSalt(salt)
    .WithAction(new ActionDataBuilder()
        .WithTarget(uniswapRouter)
        .WithSelector(swapSelector)
        .WithUniActionPolicy(uniActionPolicy, policyData)
        .Build())
    .ToSession();

WithValueLimit caps the native-token value sent with the call unconditionally. For calldata arguments, add up to 16 ParamRules, each comparing one 32-byte word at a fixed offset into the call's argument data (not raw calldata — argument 0 starts right after the 4-byte selector):

csharp
var policyInitData = new UniActionPolicyBuilder()
    .WithEqualityCheck(offset: 0, expectedValue: ownerAddress.HexToByteArray())  // arg 0 must equal owner
    .WithMaxValue(offset: 32, maxValue: capBytes)                                // arg 1 <= cap
    .WithLimitedUsage(offset: 32, refValue: capBytes, limit: totalBudget)        // AND track cumulative usage
    .Build();

A zero-argument function cannot be scoped by UniActionPolicy — its checkAction requires at least one ParamRule and unconditionally reads 32 bytes of argument data, so it reverts on a truly zero-argument call. Use SudoPolicy for that action instead.

Show full SKILL.md (395 more words)Show less

Session Lifecycle: Enable → Use → Out-of-Policy Rejection

Enable

Installs SmartSession (first time) and the session's policies together, signed by the account's existing validator — the session key isn't involved yet:

csharp
var sessionConfig = new SmartSessionConfig()
    .WithSessionValidator(config.SessionValidatorAddress)
    .WithSessionValidatorInitData(sessionKey.GetPublicAddress())
    .WithSalt(salt)
    .WithAction(new ActionDataBuilder()
        .WithTarget(counterAddress).WithSelector(countSelector).WithSudoPolicy(config.SudoPolicyAddress).Build())
    .WithAction(new ActionDataBuilder()
        .WithTarget(counterAddress).WithSelector(gasWasterSelector)
        .WithUniActionPolicy(config.UniActionPolicyAddress, gasWasterCapInitData).Build());

var session = sessionConfig.ToSession();
var permissionId = await smartSession.GetPermissionIdQueryAsync(session);

if (!smartSessionInstalled)
{
    // First session on this account: install SmartSession AND enable this session in the SAME UserOp.
    sessionConfig.ModuleAddress = config.SmartSessionAddress;
    receipt = (AATransactionReceipt)await accountService.InstallModuleAndWaitForReceiptAsync(sessionConfig);
}
else
{
    // SmartSession already installed (a prior session exists): a further session goes through
    // SmartSession's own enableSessions, itself a self-call.
    smartSession.UseAccountAbstraction(account, client);
    receipt = (AATransactionReceipt)await smartSession.EnableSessionsRequestAndWaitForReceiptAsync(
        new List<Session> { session });
}
Use

IAAClient.GetAccount attaches a second, independent NethereumSmartAccount to the same address, authenticated by the session key:

csharp
var sessionAccount = client.GetAccount(
    account.Address,
    new SmartSessionKeySigningService(sessionKey, permissionId),
    new SmartSessionValidatorModule(config.SmartSessionAddress, permissionId));

counter.UseAccountAbstraction(sessionAccount, client);
var receipt = (AATransactionReceipt)await counter.CountRequestAndWaitForReceiptAsync();

SmartSessionKeySigningService.SignTypedDataV4 signs the UserOperation's EIP-712 digest with the raw session key, then wraps it in SmartSession's USE-mode envelope (mode(1 byte) || permissionId(32 bytes) || signature(65 bytes)). PersonalSign throws NotSupportedException — only SignTypedDataV4 (UserOperation signing) is supported.

Out-of-Policy Rejection

A call the session key cannot make fails on-chain during validation, before it does anything:

csharp
// Within the UniActionPolicy cap of 3 - succeeds.
var allowedReceipt = (AATransactionReceipt)await counter.GasWasterRequestAndWaitForReceiptAsync(repeat: 1, "");
// allowedReceipt.UserOpSuccess == true

// Beyond the cap - the session key CANNOT do this, and the call is rejected.
try
{
    var overCapReceipt = (AATransactionReceipt)await counter.GasWasterRequestAndWaitForReceiptAsync(repeat: 100, "");
}
catch (Exception ex)
{
    // gasWaster(100) was rejected: UniActionPolicy's checkAction failed the argument rule.
}

SmartSession.validateUserOp treats a failed policy result as fatal — it reverts with PolicyViolation(permissionId, policy) during UserOperation validation, so the call never executes: no partial state change, no gas spent on the action itself. ERC20SpendingLimitPolicy fails the identical way the moment alreadySpent + amount > spendingLimit.

Revoke
csharp
smartSession.UseAccountAbstraction(account, aaClient);
await smartSession.RemoveSessionRequestAndWaitForReceiptAsync(permissionId);

SmartSession.removeSession(permissionId) is a self-call, like enableSessions, and clears every policy and the session validator entry for that permissionId. This on-chain call is the only thing that actually revokes authority — any local ValidAfter/ValidUntil bookkeeping is application-side only and does not touch the chain; a session key your app has "forgotten" but never revoked on-chain can still sign valid UserOperations for as long as its policies allow.

Common Mistakes

  • Reusing a salt across sessions with different actions — they collide on the same PermissionId, and a later install/enableSessions overwrites the earlier session's action set.
  • Scoping a zero-argument function with UniActionPolicy — reverts. Use SudoPolicy instead.
  • Calling PersonalSign on a session-key account — throws NotSupportedException.
  • Forgetting .WithPaymasterPermission(true) — if a paymaster sponsors this session's gas, the session itself must permit it, or the bundler rejects the UserOperation.
  • Assuming revocation is local — only the on-chain removeSession call stops a session key from signing.

Decision Guide

Session key (SmartSession)Second validator (e.g. passkey)Social recovery
Who holds the keyAn automated process, bot, or agentA person (you, a co-signer)A set of guardians
What it can doExactly what its policies allowAnything the account allows that validator to doNothing day-to-day; only triggers recovery
RevocationSmartSession.removeSession(permissionId) — instant, targetedUninstall that validator moduleN/A
Use it forAutomation: bots, backends, recurring/scheduled operationsA second full-control device or passkeyRecovering access after losing every owner key

Reach for a session key whenever the caller shouldn't have full account control even temporarily. For recovering a lost owner key entirely, see the social-recovery skill.

For full documentation, see: https://docs.nethereum.com/docs/account-abstraction/guide-smart-sessions-and-policies

© Nethereum, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/nethereum-skills/skills/smart-sessions-and-policies of Nethereum/Nethereum.

Open the folder on GitHubat commit 229f278

Compare with similar skills

Smart Sessions And Policies next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Smart Sessions And Policies compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Smart Sessions And Policies this skillNethereum/Nethereum2.3k—~3.9kAutomated safety check: PassMIT
Stock Indicators Dotnetfacioquo/stock-indicators-dotnet1.2k—~852Automated safety check: PassApache-2.0
Tiger Brokers OpenAPI C# SDKqusong0627/QuantMind1.7k—~1kAutomated safety check: PassApache-2.0
Dotnet Performance Reviewatherio-danp/cde-dotnetcc109—~1kAutomated safety check: NotesNone
Tushare Datazillionare/zillionare3222 repos~2.3kAutomated safety check: PassNone
Tradingview MCPatilaahmettaner/tradingview-mcp5k—~1.3kAutomated safety check: PassMIT

Similar skills

  • Stock Indicators Dotnet

    facioquo/stock-indicators-dotnet

    Calculate technical analysis indicators (EMA, RSI, MACD, ADX, Bollinger Bands, and dozens more) from OHLCV price bars, in batch or live from a market feed, in C with the FacioQuo.Stock.Indicators v3…

    1.2k GitHub stars~852 tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • Tiger Brokers OpenAPI C# SDK

    qusong0627/QuantMind

    Guides building C# and .NET apps on the Tiger Brokers OpenAPI SDK: setup, market data, orders, accounts, options and real-time push, defaulting to paper trading.

    1.7k GitHub stars~1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Dotnet Performance Review

    atherio-danp/cde-dotnetcc

    Scan .NET/C code for performance anti-patterns (async, memory/strings, collections/LINQ, regex, serialization, I/O) with tiered severity, reporting findings without editing.

    109 GitHub stars~1k tokensUpdated 2 mo ago
    Business, Finance & HRAuto-check: notes
  • Tushare Data

    zillionare/zillionare

    面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。

    322 GitHub starsUsed in 2 repos~2.3k tokens
    Business, Finance & HRAuto-check passed
  • Tradingview MCP

    atilaahmettaner/tradingview-mcp

    AI Trading Intelligence — live prices, 30+ technical indicators, backtesting (6 strategies), walk-forward overfitting detection, trade logs, equity curves, licensed news sentiment (Marketaux), and…

    5k GitHub stars~1.3k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • Digital Oracle

    komako-workshop/digital-oracle

    Answer prediction questions using market trading data, not opinions.

    878 GitHub stars~5.9k tokensUpdated 2 mo ago
    Business, Finance & HRAuto-check passed

More from Nethereum/Nethereum

All 71 skills in this repo
  • Aa Batching Paymasters

    Nethereum/Nethereum

    Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.

    2.3k GitHub stars~1.5k tokensUpdated 6 days ago
    Auto-check passed
  • Aa Bundler

    Nethereum/Nethereum

    Help users run an ERC-4337 bundler using Nethereum — set up in-process or standalone bundlers with mempool, validation, reputation, and JSON-RPC server.

    2.3k GitHub stars~1.2k tokensUpdated 6 days ago
    Auto-check passed
  • Abi Encoding

    Nethereum/Nethereum

    Encode and decode Ethereum ABI data with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.3k tokensUpdated 6 days ago
    Auto-check passed
  • Abi Retrieval

    Nethereum/Nethereum

    Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).

    2.3k GitHub stars~1.5k tokensUpdated 6 days ago
    Auto-check passed
  • Account Abstraction

    Nethereum/Nethereum

    Help users implement ERC-4337 Account Abstraction with Nethereum — send UserOperations, use smart accounts, route contract calls through a bundler, enable gasless transactions, or work with AA in…

    2.3k GitHub stars~1.7k tokensUpdated 6 days ago
    Auto-check passed
  • Address Utils

    Nethereum/Nethereum

    Validate and format Ethereum addresses with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.2k tokensUpdated 6 days ago
    Auto-check passed

Works with

Questions about Smart Sessions And Policies

What does Smart Sessions And Policies do?

Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator…. Smart Sessions And Policies is an agent skill from Nethereum/Nethereum. Help users grant a limited, revocable session key to a bot, backend service, or AI agent instead of handing over full control of an ERC-4337 smart account, using Nethereum's SmartSession validator and policies (SudoPolicy, UniActionPolicy, ERC20SpendingLimitPolicy).

When should I use Smart Sessions And Policies?

Smart Sessions And Policies fits situations like: the user mentions session keys; scoped permissions; delegated signing for a bot/agent; spending limits on a smart account.

How do I install Smart Sessions And Policies in Claude Code?

Run `npx skills add Nethereum/Nethereum --skill smart-sessions-and-policies -a claude-code`. Or copy the skill folder (plugins/nethereum-skills/skills/smart-sessions-and-policies in Nethereum/Nethereum) into .claude/skills/smart-sessions-and-policies in your project. Claude Code loads it when a task matches its description.

How do I install Smart Sessions And Policies in Codex?

Run `npx skills add Nethereum/Nethereum --skill smart-sessions-and-policies -a codex`. Or copy the skill folder (plugins/nethereum-skills/skills/smart-sessions-and-policies in Nethereum/Nethereum) into .agents/skills/smart-sessions-and-policies in your project. Codex loads it when a task matches its description.

Can I use Smart Sessions And Policies in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Nethereum/Nethereum --skill smart-sessions-and-policies -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/smart-sessions-and-policies, .gemini/skills/smart-sessions-and-policies, .github/skills/smart-sessions-and-policies and .opencode/skills/smart-sessions-and-policies in your project.

What does Smart Sessions And Policies need to run?

Going by SKILL.md and its folder, Smart Sessions And Policies needs the command-line tools its instructions call (dotnet).

Does Smart Sessions And Policies access the network?

SKILL.md names 1 domain. As links in the text: docs.nethereum.com. This is read from the text; nothing was executed.

Is Smart Sessions And Policies safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Smart Sessions And Policies use?

Smart Sessions And Policies is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Smart Sessions And Policies use?

About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Smart Sessions And Policies?

Skills that share tags, products or a category with Smart Sessions And Policies: Stock Indicators Dotnet (facioquo/stock-indicators-dotnet, 1.2k stars), Tiger Brokers OpenAPI C# SDK (qusong0627/QuantMind, 1.7k stars), Dotnet Performance Review (atherio-danp/cde-dotnetcc, 109 stars) and Tushare Data (zillionare/zillionare, 322 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Smart Sessions And Policies?

Nethereum (a GitHub organization) maintains it in Nethereum/Nethereum, which has 2,260 GitHub stars. The repository holds 71 skills in this directory. The repository was last updated on October 5, 2026.

Source: Nethereum/Nethereum on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.