Author UI Primitives
remix-run/remix
Build idiomatic headless primitives in packages/ui for Remix.
Design Microsoft Orleans systems from each primitive's purpose and failure model.
$ npx skills add managedcode/dotnet-skills --skill orleans -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install managedcode/dotnet-skills orleans --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .claude/skills/orleans && rm -rf skills-srcUse ~/.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/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .claude/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleansType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add managedcode/dotnet-skills --skill orleans -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install managedcode/dotnet-skills orleans --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .agents/skills/orleans && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .agents/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add managedcode/dotnet-skills --skill orleans -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install managedcode/dotnet-skills orleans --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .cursor/skills/orleans && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .cursor/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/managedcode/dotnet-skills.git --path catalog/Frameworks/Orleans/skills/orleans--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add managedcode/dotnet-skills --skill orleans -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install managedcode/dotnet-skills orleans --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .gemini/skills/orleans && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .gemini/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install managedcode/dotnet-skills orleansInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add managedcode/dotnet-skills --skill orleans -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .github/skills/orleans && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .github/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add managedcode/dotnet-skills --skill orleans -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install managedcode/dotnet-skills orleans --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/managedcode/dotnet-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/catalog/Frameworks/Orleans/skills/orleans .opencode/skills/orleans && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "orleans" agent skill from https://github.com/managedcode/dotnet-skills/tree/main/catalog/Frameworks/Orleans/skills/orleans into .opencode/skills/orleans/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orleans", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
orleansDesign Microsoft Orleans systems from each primitive's purpose and failure model.
Orleans is an agent skill from managedcode/dotnet-skills. Design Microsoft Orleans systems from each primitive's purpose and failure model. USE FOR: grains, digital twins, state versus databases, transactions, messaging, streams, timers, reminders, Durable Jobs, stateless workers, grain services, startup, and hosting. DO NOT USE FOR: other actor stacks, batches, relational-only CRUD, or advice without an Orleans decision. INVOKES: inspect version and topology, choose the primitive, implement, and validate.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including reference files (for example `manifest.json`, `references/anti-patterns.md` and `references/configuration-api.md`).
The repository describes itself as: Installable .NET skill catalog and CLI for Codex, Claude Code, GitHub Copilot, and Gemini. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 535dd55. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Orleans loads about 4.6k tokens when it runs, and up to ~57k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 2,206 words of instructions outside code blocks.
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.
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.
The full file from managedcode/dotnet-skills at commit 535dd55, republished under its MIT licence (© managedcode). 2,206 words, ~4,587 tokens.
.claude/skills/orleans/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Keep native test progress and ANSI visible; use the detected runner's supported flags (--progress on --ansi on for MTP/TUnit), not MTP switches on VSTest. Keep console logs at Warning or higher and one concise final summary. Do not replay progress redraws, successful-test output, or Information/Debug/Trace logs into model context. On failure/crash, show only the failing test/resource, root error, and relevant stack frames; deduplicate and cap each diagnostic response at 80 lines / 8 KiB. Never dump entire console/host/browser logs, HTML, TRX, or crash artifacts. Keep necessary artifacts size-bounded outside context, link them, and inspect exact bounded excerpts. Preserve the runner exit code through capture/filtering; disclose truncation. Silence alone does not establish a hang.
Do not begin with an Orleans API. First state:
Then select the smallest Orleans primitive whose guarantees match those requirements. Reject Orleans when the problem is primarily shared-memory computation, a finite batch, relational querying, or global coordination with few independent entities.
Inspect package versions for version-sensitive work. Orleans 10.3.1 ships Microsoft.Orleans.DurableJobs* and Microsoft.Orleans.Journaling* as 10.3.1-alpha.1; treat them as experimental until that status changes.
Orleans 10.3 makes Newtonsoft storage enforce the type allow-list, changes RPC telemetry keys, and requires custom grain-context activators to apply configurators before construction. Prefer generated/allowed types over permissive JSON and update affected tests, dashboards, and activators together. 10.3.1 services analyzer contract identities and documents placement hints.
IGrainFactory call grains.| Primitive | Purpose | Choose it when | Do not use it as |
|---|---|---|---|
| Activation fields | Fast, temporary state for one activation | The value is derived, cached, disposable, or safe to rebuild after deactivation/failure | Durable truth |
IPersistentState<T> | Durable current state owned by one grain identity | The grain needs a bounded snapshot loaded on activation and explicitly written after commands | A general query database or cross-grain table |
| External database/repository | Queryable, indexed, relational, bulk, shared, or externally owned data | The system needs joins, search, reporting, set-based updates, independent access, or an existing system of record | A replacement for grain ownership when serialized per-entity decisions are still required |
| Grain plus database/read model | Separate command ownership from query/storage concerns | A grain owns invariants and a small control snapshot while a database owns large records, history, projections, or reporting | Two competing sources of truth without an explicit contract |
JournaledGrain<TState,TEvent> | Persist domain events and reconstruct state | Audit history, business-event replay, log consistency, or multi-cluster event-sourced replication is a requirement | A default persistence choice for ordinary CRUD state |
Orleans.Journaling durable states | Replay durable collection/value operations through a journal | The experimental 10.3 journaling model, durable collections, or durable completion state solves a measured need | Stable default persistence; it is distinct from JournaledGrain business event sourcing |
ITransactionalState<T> | ACID, serializable all-or-nothing changes across transactional grain state | A short operation must atomically update multiple grain-owned states and compensation is unacceptable | Long-running workflows or atomicity with arbitrary external systems |
| Saga/process manager | Durable progress with compensation across steps and external systems | Work is long-running, spans services, waits for events, or cannot share one transaction | Instant atomic commit |
Use grain state for bounded current state and per-identity invariants. Use a database/read model for joins, search, reporting, bulk work, history, shared access, or an external system of record. When using both, define one authority per field and recovery rules.
Never query or mutate another grain's persistence record behind the grain, or expose provider storage as the public query model merely because it uses SQL/Cosmos/Redis. Before using transactions, try one bounded grain owner; use a saga for external effects or long waits. Read references/persistence-api.md for the full boundary.
| Primitive | Purpose | Choose it when | Failure/ownership model |
|---|---|---|---|
| Direct grain call | Typed request/response to a known logical owner | The caller needs completion, a result, or an exception | At-most-once by default; a timeout does not prove whether the target committed a side effect |
IAsyncEnumerable<T> | Stream a response within one caller-initiated request | One caller consumes progressive results with cancellation and backpressure | Call-scoped, not pub/sub, not a durable subscription |
| Orleans stream | Decouple producers and consumers across dynamic, long-lived event flows | Pub/sub, multiple consumers, provider-backed queues, replay, or durable subscriptions are needed | Delivery, ordering, replay, and backpressure depend on the selected provider |
| Broadcast channel | Transient, low-overhead fan-out to implicit grain subscribers | All interested grains need the latest signal and occasional loss/history gaps are acceptable | Best-effort, no message storage, no replay; not a persistent stream |
| Observer | Push callbacks to a connected client or addressable subscriber | A UI/client needs live notifications and can resubscribe after reconnect | Ephemeral and inherently unreliable for clients; expire, unsubscribe, and delete references |
| One-way request | Remove the response path for a specialized lossy notification | The sender needs no result, completion, or error and measured response overhead matters | No acknowledgement and no guarantee the callee received the request |
RequestContext | Flow small request-scoped metadata | Trace, correlation, tenant, or request metadata must follow a call chain | Not durable state; metadata does not flow back in responses |
| Grain call filter | Apply cross-cutting behavior around calls | Authorization, telemetry, argument/result inspection, or exception conversion spans many grains | Keep domain decisions in grains, not global filters |
| Grain extension | Attach a runtime/protocol capability to an addressable grain | Infrastructure needs an additional interface without changing the domain interface | Advanced runtime mechanism; avoid as ordinary domain composition |
Prefer a direct call unless decoupling is a requirement. Do not use a stream merely to avoid calling a known target. Do not use broadcast channels for commands, money movement, audit events, or anything that must be replayed. Do not use observers as a durable event bus.
When adding retries, make side effects idempotent. Default Orleans calls are at-most-once only while neither the runtime nor application retries. Retried calls can arrive more than once, and Orleans does not durably deduplicate them for the application.
| Primitive | Purpose | Choose it when | Do not choose it when |
|---|---|---|---|
RegisterGrainTimer | Periodic or one-shot work tied to the current activation | Work is frequent, local to an active grain, and safe to stop on deactivation or silo failure | The schedule must survive reactivation/restart |
| Reminder | Durable recurring schedule definition associated with a grain identity | Low-frequency recurring work must wake the grain after deactivation or cluster restart | Every missed occurrence must be replayed, timing must be precise, or work is high-frequency |
| Durable Job | Persistent one-time future delivery to a target grain with cancellation/retry metadata | A delayed command, expiry, notification, or workflow step must execute at least once around a due time | Recurring work, exactly-once side effects, or production work that cannot accept the current alpha package status |
[StatelessWorker] | Auto-scaled pool of local stateless grain activations | CPU/transform/routing/pre-aggregation work is not tied to one durable entity | Scheduling or durability; a stateless worker is not a job system |
BackgroundService | Continuous loop owned by each host process | A silo/web host must poll or consume an external source and forward work into grains | One global loop across replicas unless duplicates are safe or externally coordinated |
IHostedService | Host startup/shutdown action or simpler background component | Initialization or bounded host-lifetime work belongs to standard .NET hosting | Per-entity durable work |
| Orleans startup task | Fail-fast hook at a specific silo startup stage | Legacy/framework integration truly requires Orleans lifecycle ordering | General background work; prefer BackgroundService or IHostedService |
| Silo lifecycle participant | Ordered initialization/shutdown of an Orleans component | A provider or runtime service must start at an exact lifecycle stage | Business scheduling |
| Grain service | Per-silo, cluster-partitioned runtime support service | Every silo hosts a long-lived service and responsibility for grains must be partitioned across silos | An ordinary domain entity, a singleton, or a durable job queue |
| External scheduler/workflow engine | Scheduling/orchestration outside Orleans | Cross-system workflows, cron calendars, human steps, broad operational control, or mature production guarantees dominate | Per-grain work already solved by a stable Orleans primitive |
Timer means “while this activation lives”; reminder means “wake this grain on a durable recurring schedule”; Durable Job means “invoke this target once around a future time, at least once.” Reminders persist definitions but miss ticks while the cluster is down. Durable Job handlers must be idempotent, and current alpha.1 packages are an explicit architecture risk.
BackgroundService means one loop per host replica, not one loop per cluster. Use a well-known grain or external lease/leader for one logical collector.
Read references/scheduling-and-services.md before implementing timers, reminders, Durable Jobs, hosted/startup tasks, silo lifecycle participants, or grain services.
| Primitive | Purpose | Decision rule |
|---|---|---|
| Standard grain | Serialize behavior for one identity | Default for stateful domain entities and digital twins |
[StatelessWorker] | Scale fungible work locally and across silos | Use when activations are interchangeable and their local state need not agree |
[ReadOnly] | Permit compatible reads to interleave | Use only when the method cannot mutate grain state or external invariants |
[Reentrant] | Allow turns from other calls while the grain awaits | Use for call cycles or measured concurrency needs after auditing every invariant |
[AlwaysInterleave] / [MayInterleave] | Selectively admit interleaving | Prefer narrow scheduling exceptions over making the whole grain reentrant |
| Placement strategy/filter | Constrain or optimize activation location | Keep the resource-optimized default unless locality, hardware, zone, compliance, or role requirements are proven |
| Placement hint | Suggest a target silo for activation or migration | Choose an active compatible silo and scope the request-context hint; it does not move an existing activation |
| Heterogeneous silo/versioning | Run different grain sets or versions during rollout | Use explicit compatibility/version selection for safe rolling deployments |
Turn-based execution is single-threaded, not magically race-free. Reentrancy allows another turn to run while the first awaits; any state observed before the await can be stale afterward. Avoid blocking calls, .Result, .Wait(), thread-affine work, and unbounded CPU loops on the grain scheduler.
Keep concerns separate: clustering discovers silos; the grain directory locates activations; grain/reminder/transaction/job storage persist different records; stream providers carry events while PubSubStore tracks subscriptions; serialization defines wire and persistence compatibility.
In-memory clustering, storage, reminders, streams, Durable Jobs, and journaling are development/test choices unless loss is explicitly acceptable. Configure production providers, credentials, TLS/networking, server GC, graceful shutdown, and health/readiness for the deployment target. In Aspire, declare backing resources in AppHost and register the keyed clients expected by Orleans providers.
Task, Task<T>, ValueTask<T>, or supported IAsyncEnumerable<T>.[GenerateSerializer] and stable [Id(N)] values on messages/state. Use [Alias] for durable type identity and [Immutable] only for genuinely immutable values.await; transactions use transactional storage, [Reentrant], and PerformRead/PerformUpdate.Open only the references needed for the selected primitive:
Prefer Learn for stable APIs. For Durable Jobs and Orleans.Journaling, use version-tagged package READMEs/public API because Learn does not yet cover them fully.
© managedcode, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files (references) in catalog/Frameworks/Orleans/skills/orleans of managedcode/dotnet-skills.
Open the folder on GitHubat commit 535dd55
Orleans 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Orleans this skillmanagedcode/dotnet-skills | 486 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Author UI Primitivesremix-run/remix | 33k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Assistant UI Primitivescompozy/compozy | 2.8k | — | ~999 | Automated safety check: Pass | MIT | |
| Threejs Primitive Reconstructorjasonkneen/tiny-world-builder | 1.6k | — | ~1.1k | Automated safety check: Pass | AGPL-3.0 | |
| Cesiumjs PrimitivesCesiumGS/cesiumjs-skills | 189 | — | ~7k | Automated safety check: Pass | Apache-2.0 | |
| Rust Concurrency Primitiveshashgraph-online/awesome-codex-plugins | 1.2k | — | ~807 | Automated safety check: Pass | MIT |
remix-run/remix
Build idiomatic headless primitives in packages/ui for Remix.
compozy/compozy
Guide for assistant-ui UI primitives - ThreadPrimitive, ComposerPrimitive, MessagePrimitive.
jasonkneen/tiny-world-builder
create robust, browser-runnable three.js primitive reconstructions from static low-poly, voxel, isometric, or stylized game-art reference images.
CesiumGS/cesiumjs-skills
CesiumJS primitives and geometry - Primitive, GeometryInstance, Appearance, BufferPrimitive collections, GeoJsonPrimitive, Billboard/Label/PointPrimitive collections, built-in geometry shapes…
hashgraph-online/awesome-codex-plugins
Design and review thread-based Rust concurrency with explicit ownership, sharing, and synchronization choices.
microsoft/Huabu
Review the quality of an agent's tool descriptions, system/agent prompts, or SKILL.md files against current agent-engineering best practices.
managedcode/dotnet-skills
Use a repo-root .editorconfig to configure free .NET analyzer and style rules.
managedcode/dotnet-skills
Use the open-source free ArchUnitNET library for architecture rules in .NET tests.
managedcode/dotnet-skills
Build, upgrade, and operate Aspire 13.5.x C or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing, MCP, and deployment patterns for…
managedcode/dotnet-skills
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET.
managedcode/dotnet-skills
Use the open-source free Asynkron.Profiler dotnet tool for CLI-first CPU, allocation, exception, contention, and heap profiling of .NET commands or existing trace artifacts.
managedcode/dotnet-skills
Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable Functions patterns.
Design Microsoft Orleans systems from each primitive's purpose and failure model. Orleans is an agent skill from managedcode/dotnet-skills. Design Microsoft Orleans systems from each primitive's purpose and failure model.
Orleans fits situations like: state versus databases; stateless workers; : other actor stacks; relational-only CRUD.
Run `npx skills add managedcode/dotnet-skills --skill orleans -a claude-code`. Or copy the skill folder (catalog/Frameworks/Orleans/skills/orleans in managedcode/dotnet-skills) into .claude/skills/orleans in your project. Claude Code loads it when a task matches its description.
Run `npx skills add managedcode/dotnet-skills --skill orleans -a codex`. Or copy the skill folder (catalog/Frameworks/Orleans/skills/orleans in managedcode/dotnet-skills) into .agents/skills/orleans in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add managedcode/dotnet-skills --skill orleans -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/orleans, .gemini/skills/orleans, .github/skills/orleans and .opencode/skills/orleans in your project.
SKILL.md names no scripts, command-line tools or credentials: Orleans is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
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.
Orleans is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 52k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Orleans: Author UI Primitives (remix-run/remix, 33k stars), Assistant UI Primitives (compozy/compozy, 2.8k stars), Threejs Primitive Reconstructor (jasonkneen/tiny-world-builder, 1.6k stars) and Cesiumjs Primitives (CesiumGS/cesiumjs-skills, 189 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
managedcode (a GitHub organization) maintains it in managedcode/dotnet-skills, which has 486 GitHub stars. The repository holds 81 skills in this directory. The repository was last updated on October 7, 2026.
Source: managedcode/dotnet-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.