Cryptolens dotnet
Skills for coding agents to add license verification to your application, implement licensing models and integrate Devolens with other services, supporting Claude Code, Codex and other agents.
npx -y skills add Cryptolens/skills --skill cryptolens-dotnetAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Work on the Cryptolens .NET SDK and .NET-specific software licensing integrations. Use when Codex needs to inspect, modify, review, test, or explain the `Cryptolens/cryptolens-dotnet` repository, especially license key verification, offline license verification, cached license files, Web API 3 activation, floating licenses, trial licenses, machine binding, node-locking, user-account authentication, NuGet packaging, .NET Framework versus .NET Standard behavior, or troubleshooting proxy, TLS, Unity, Mono, or Windows-only SDK issues.
SKILL.md
9.6 KB, as published. Nobody here has run it
Cryptolens .NET
Overview
Use this skill for work in the Cryptolens .NET SDK repository: github.com/Cryptolens/cryptolens-dotnet.
Treat GitHub as the primary source of truth. Do not assume the user has the repo cloned locally. If a local checkout is unavailable, search and inspect files directly in github.com/Cryptolens/cryptolens-dotnet by repo-relative path. If a local checkout is also available, use it as a convenience for editing and validation. Start with repo-map.md, then open only the repo files needed for the task. Keep the SDK's public API stable unless the task explicitly asks for a breaking change.
Before adding or explaining machine-binding checks, read the shared Cryptolens rule in licensing-invariants.md.
Before adding or explaining floating licensing, read the shared floating-license rule in floating-licenses.md.
If an SDK call returns a non-empty message, read the shared error table in api-error-messages.md before diagnosing the issue.
When the user asks for implementation patterns or snippets based on the official docs, read official-examples.md. It distills the linked Cryptolens tutorials into current C# and VB.NET guidance and calls out where the docs still show older helper choices.
Quick Start
- Classify the request before editing.
- Read the repo
README.mdfirst for installation, compatibility, and support caveats. - Read repo-map.md and route to the relevant
SKMv3,LicenseRelated, orUserAccountAuthfiles. - If there is no local checkout, search and open the corresponding files in github.com/Cryptolens/cryptolens-dotnet instead of asking the user to clone the repo first.
- Treat
SKM.cs, theSKGLnamespace, and the READMEOld examplessection as legacy compatibility material, not templates for new code. - Keep code, docs, examples, and package guidance aligned in the same pass.
Task Guide
Activation, verification, and offline licensing
Open Cryptolens.Licensing/SKMv3/Key.cs, Cryptolens.Licensing/SKMv3/Helpers.cs, Cryptolens.Licensing/LicenseRelated/LicenseKey.cs, and Cryptolens.Licensing/ExtensionMethods.cs.
Preserve these invariants unless the task explicitly changes them:
- Prefer
SKM.V3.Methods.Key,SKM.V3.Methods.Helpers,SKM.V3.Models.*, andSKM.V3.LicenseKeyin new code, docs, and examples. - Do not introduce new usages of
SKGL.SKM,SKGL.ExtensionMethods, or other Web API 2 helpers unless the task is specifically about legacy compatibility. - Treat
Cryptolens.Licensing/SKM.csas an obsolete compatibility layer. It is marked[Obsolete]and should not be the default path for fixes, examples, or new integrations. - For signed activation flows, prefer the
Key.Activate(...)overload that returnsRawResponsetogether withLicenseKey.FromResponse(...)when the user needs a signed, offline-storable license blob. - If signature verification fails on a target runtime or host even though the activation flow is otherwise correct, treat the Unity-style
RawResponse+LicenseKey.FromResponse(...)approach as an approved fallback and mention it explicitly. - For offline persistence, prefer
license.SaveAsString(),license.LoadFromString(...), andlicense.LoadFromFile(...)instead of inventing a custom serialization format. - Prefer
Helpers.GetMachineCodePI()for new cross-platform snippets. Usev=2only when the task explicitly needs parity with Python or another SDK that expects that format. - Avoid
Helpers.GetMachineCode()in new generic samples because theSYSTEM_MANAGEMENTbuild marks it obsolete and it can push callers toward older Windows-only behavior. - Avoid the parameterless
license.IsOnRightMachine()extension helper in new code. It falls back to older SHA1 andSKGL.SKMpaths. PreferSKM.V3.Methods.Helpers.IsOnRightMachine(...),Helpers.IsOnRightMachinePI(...), orlicense.IsOnRightMachine(machineCode, ...)with an explicit machine code. - Treat
Helpers.IsOnRightMachine...checks as meaningful only when Maximum Number of Machines > 0. If that value is0, explain that node-locking is disabled rather than calling the SDK broken. - Do not hardcode
productId=3349or any other tenant-specific value from the upstream docs. Make product ids, access tokens, RSA public keys, and license keys user-supplied or clearly labeled placeholders. - For floating-license examples, default
MaxOverdraftto0and only use a positive value when the user explicitly wants overdraft behavior.
If the user asks for rollback detection or examples that pass checkWithInternetTime: true into HasNotExpired(...), call out that this routes through the legacy SKGL.SKM.TimeCheck() path and be explicit about the compatibility tradeoff.
Cross-platform and machine-code work
Use the repo README and SKMv3/Helpers.cs for supported machine-code behavior.
- Prefer
Cryptolens.Licensing.CrossPlatformfor Mono, Unity, Linux, or Mac guidance. - Keep
Helpers.WindowsOnly = truelimited to the narrow Windows/.NET Framework workaround described in the README. Do not add it to new general-purpose snippets ifGetMachineCodePI()or an explicit machine code is sufficient. - If the task changes machine-code generation, verify whether the behavior must stay compatible with Python's
v=2path or only with current .NET consumers.
User-account authentication and user verification
Open Cryptolens.Licensing/SKMv3/User.cs, Cryptolens.Licensing/UserAccountAuth/UserLoginAuth.cs, Cryptolens.Licensing/Models/WebAPIModels.cs, and Cryptolens.Licensing/Models/UserLoginAuthModels.cs.
- Distinguish the two supported flows instead of mixing them together.
- For username/password verification as described in the official
user-verificationtutorial, preferSKM.V3.Methods.UserAuth.Login(...)withLoginUserModel. - For browser-based delegated authorization that returns all licenses for a linked customer account, use
SKM.V3.Accounts.UserAccount.GetLicenseKeys(...). - Treat
Tutorials/v.101-beta.mdas historical background only. Do not copy its beta-era namespace names or setup steps into new guidance unless the task explicitly asks for old-package compatibility. - Keep signed-response verification intact when changing
UserAccount.GetLicenseKeys(...)flows.
Docs, examples, and support fixes
Use the repo README.md for supported install and troubleshooting flows, but read it critically:
- The install, compatibility, TLS, proxy, and package notes are useful starting points.
- The
Old examplessection and any references toSKGL.SKMare legacy material. Modernize those examples if the task asks for docs cleanup. - Prefer the official guides in official-examples.md when the user asks for Unity, Rhino/Grasshopper, key verification, offline verification, verified trials, user verification, or data-collection examples.
- If you update user-facing examples, align them with the current
SKM.V3APIs and the current package names in the same pass.
Packaging and build-adjacent work
Use Cryptolens.Licensing/Cryptolens.Licensing.csproj for package metadata, target frameworks, conditional dependencies, and the SYSTEM_MANAGEMENT build flag.
- Keep NuGet metadata, target-framework support, and README install guidance aligned.
- Avoid changing target frameworks or package dependencies unless the task explicitly requires it.
- Be careful when changing code that differs between
SYSTEM_MANAGEMENTand cross-platform builds.
Validation
If a local checkout is available, run validation from the repo root. If the repo is only available through GitHub, inspect and search the GitHub repository directly and restrict the task to review, explanation, or documentation updates unless you also have a writable repository integration.
Prefer the smallest check that proves the change:
- targeted
dotnet buildofCryptolens.Licensing/Cryptolens.Licensing.csproj, usually starting with-f netstandard2.0 - focused build or review of a Windows target if the change touches
SYSTEM_MANAGEMENT,Helpers.WindowsOnly, or .NET Framework-specific code paths - small serialization or signature checks when changing
LicenseKey,RawResponse, or offline-file behavior - focused docs review when only examples or README guidance changed
Avoid relying on the full solution or historical tutorial files as the main safety net. They cover mixed eras of the SDK.
Avoid live activation calls in automated validation unless the task explicitly provides safe test credentials and requires end-to-end verification.
Resources
Read repo-map.md for the file map, task routing, and repo-specific gotchas.
Read official-examples.md for current C# and VB.NET example patterns derived from the official Cryptolens docs.