Minimax DOCX
poco-ai/poco-claw
Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET).
Build CLI applications with TimeWarp.Nuru - a .NET route-based CLI framework with web-style routing, source generators, and AOT support.
$ npx skills add TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TimeWarpEngineering/timewarp-nuru tw-nuru --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/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tw-nuru .claude/skills/tw-nuru && 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 "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .claude/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuruType 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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TimeWarpEngineering/timewarp-nuru tw-nuru --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tw-nuru .agents/skills/tw-nuru && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .agents/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TimeWarpEngineering/timewarp-nuru tw-nuru --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tw-nuru .cursor/skills/tw-nuru && 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 "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .cursor/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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/TimeWarpEngineering/timewarp-nuru.git --path skills/tw-nuru--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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TimeWarpEngineering/timewarp-nuru tw-nuru --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tw-nuru .gemini/skills/tw-nuru && 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 "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .gemini/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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 TimeWarpEngineering/timewarp-nuru tw-nuruInstalls 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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tw-nuru .github/skills/tw-nuru && 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 "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .github/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TimeWarpEngineering/timewarp-nuru tw-nuru --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TimeWarpEngineering/timewarp-nuru.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tw-nuru .opencode/skills/tw-nuru && 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 "tw-nuru" agent skill from https://github.com/TimeWarpEngineering/timewarp-nuru/tree/master/skills/tw-nuru into .opencode/skills/tw-nuru/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tw-nuru", 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.
tw-nuruBuild CLI applications with TimeWarp.Nuru - a .NET route-based CLI framework with web-style routing, source generators, and AOT support.
Tw Nuru is an agent skill from TimeWarpEngineering/timewarp-nuru. Build CLI applications with TimeWarp.Nuru - a .NET route-based CLI framework with web-style routing, source generators, and AOT support. Use when creating CLI tools, defining commands/queries, adding parameters or options, testing CLI output, or working with TimeWarp.Nuru.
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with .NET. The repository describes itself as: Route-based CLI framework for .NET - Nuru means 'light' in Swahili. The licence is Unlicense.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit a55d08a. 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.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comraw.githubusercontent.comFrom 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.
Tw Nuru loads about 4.8k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 1,119 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 TimeWarpEngineering/timewarp-nuru at commit a55d08a, republished under its Unlicense licence (© TimeWarpEngineering). 1,119 words, ~4,769 tokens.
.claude/skills/tw-nuru/SKILL.md (or your agent's skills folder).Route-based CLI framework for .NET. Define commands like web routes. Source-generated for AOT compatibility.
Package: TimeWarp.Nuru
Repository: https://github.com/TimeWarpEngineering/timewarp-nuru
Depends on: TimeWarp.Terminal - console abstractions (IConsole, ITerminal), widgets (panels, tables, rules), ANSI colors, and TestTerminal for testable output. Included transitively via the Nuru package. For full Terminal API docs (colors, widgets, builders), fetch the README at https://raw.githubusercontent.com/TimeWarpEngineering/timewarp-terminal/refs/heads/master/README.md
For a complete working example of a multi-command Nuru CLI, see the calculator sample. Replicate this folder structure for new CLIs:
my-cli/
├── my-cli.cs # Entry point runfile
├── Directory.Build.props # Includes endpoints/**/*.cs into compilation
├── behaviors/
│ └── *.cs # Pipeline behaviors
├── endpoints/
│ └── *.cs # One endpoint class per file
└── services/
└── *.cs # Injected servicesKey patterns:
#:project directive referencing the Nuru projectDirectory.Build.props that glob-includes endpoints/**/*.cs and excludes the entry pointendpoints/DiscoverEndpoints() with .AddRepl(options => { options.AutoStartWhenEmpty = true; })Nuru offers two DSLs. Pick one based on your needs:
[NuruRoute] attribute. Best for testable, structured apps with dependency injection. Scales to large CLIs.Map().WithHandler().AsCommand().Done(). Best for quick scripts and simple CLIs.NuruApp app = NuruApp.CreateBuilder()
.DiscoverEndpoints()
.AddRepl(options =>
{
options.AutoStartWhenEmpty = true;
})
.Build();
return await app.RunAsync(args);DiscoverEndpoints() auto-discovers all classes with [NuruRoute].
.AddRepl() enables interactive REPL mode. AutoStartWhenEmpty = true starts REPL when no args provided.
These contracts live in TimeWarp.Mediator, not TimeWarp.Nuru. Add using TimeWarp.Mediator;. Handlers return Task<T>, not ValueTask<T>.
<T> / ICommandHandler<TCommand, T>: Actions with side effects, NOT safe to retry (deploy, build, delete)<T> / IQueryHandler<TQuery, T>: Read-only operations, safe to retry (status, greet, version)<T> / IIdempotentCommandHandler<TCommand, T>: Mutating but safe to retry (set config, PUT/DELETE-style operations)Unit as return type when there's no meaningful return value[NuruRoute] takes a single literal (e.g. "greet", "status") or empty string ("" for default route). The analyzer enforces this - multiple words or parameters in [NuruRoute] will produce a compile error.
[NuruRoute("greet", Description = "Greet someone")]
public sealed class GreetQuery : IQuery<Unit>
{
[Parameter(Description = "Name of the person to greet")]
public string Name { get; set; } = string.Empty;
public sealed class Handler : IQueryHandler<GreetQuery, Unit>
{
public Task<Unit> Handle(GreetQuery query, CancellationToken ct)
{
Console.WriteLine($"Hello {query.Name}");
return Unit.Task;
}
}
}[NuruRouteExample("command", Description = "...")] (repeatable, Description optional) declares a usage example. It renders in an "Examples:" section after Options in <command> --help, and as an examples array in --capabilities JSON. The command text is verbatim - write it exactly as a user would type it after the executable name.
[NuruRoute("deploy", Description = "Deploy to an environment")]
[NuruRouteExample("deploy prod", Description = "Deploy to production")]
[NuruRouteExample("deploy staging --dry-run")]
public sealed class DeployCommand : ICommand<Unit> { /* ... */ }When a command has multiple [Parameter] attributes, each must specify an explicit Order value (enforced by analyzer NURU_A002). A single parameter does not need Order.
[NuruRoute("deploy", Description = "Deploy to an environment")]
public sealed class DeployCommand : ICommand<Unit>
{
[Parameter(Order = 0, Description = "Target environment")]
public string Env { get; set; } = string.Empty;
// Optional parameter: use nullable type (string?), NOT IsOptional=true
[Parameter(Order = 1, Description = "Optional tag to deploy")]
public string? Tag { get; set; }
public sealed class Handler : ICommandHandler<DeployCommand, Unit>
{
public Task<Unit> Handle(DeployCommand command, CancellationToken ct)
{
Console.WriteLine($"Deploying to {command.Env}");
return Unit.Task;
}
}
}[NuruRoute("build", Description = "Build a project")]
public sealed class BuildCommand : ICommand<Unit>
{
[Parameter(Description = "Project to build")]
public string Project { get; set; } = string.Empty;
[Option("mode", "m", Description = "Build mode (Debug or Release)")]
public string Mode { get; set; } = "Debug";
[Option("verbose", "v", Description = "Verbose output")]
public bool Verbose { get; set; }
public sealed class Handler : ICommandHandler<BuildCommand, Unit>
{
public Task<Unit> Handle(BuildCommand command, CancellationToken ct)
{
Console.WriteLine($"Building {command.Project} ({command.Mode}, verbose: {command.Verbose})");
return Unit.Task;
}
}
}Usage: myapp build MyApp --mode Release --verbose or myapp build MyApp -m Release -v
[NuruRoute("exec", Description = "Run with arbitrary arguments")]
public sealed class ExecCommand : ICommand<Unit>
{
[Parameter(IsCatchAll = true, Description = "Arguments")]
public string[] Args { get; set; } = [];
public sealed class Handler : ICommandHandler<ExecCommand, Unit>
{
public Task<Unit> Handle(ExecCommand command, CancellationToken ct)
{
Console.WriteLine($"Args: {string.Join(" ", command.Args)}");
return Unit.Task;
}
}
}The shell splits myapp docker build . so the app only receives ["docker", "build", "."] as args. Since [NuruRoute] accepts only a single literal, sub-command hierarchies use [NuruRouteGroup] on an abstract base class. The group prefix is prepended to the child's [NuruRoute] literal. Groups can nest to any depth.
// Base class defines the "docker" prefix
[NuruRouteGroup("docker")]
public abstract class DockerGroupBase;
// Matched by: myapp docker build . --tag foo
// App receives args: ["docker", "build", ".", "--tag", "foo"]
[NuruRoute("build", Description = "Build an image from a Dockerfile")]
public sealed class DockerBuildCommand : DockerGroupBase, ICommand<Unit>
{
[Parameter(Description = "Path to Dockerfile or build context")]
public string Path { get; set; } = string.Empty;
[Option("tag", "t", Description = "Name and optionally a tag")]
public string? Tag { get; set; }
[Option("no-cache", null, Description = "Do not use cache")]
public bool NoCache { get; set; }
public sealed class Handler : ICommandHandler<DockerBuildCommand, Unit>
{
public Task<Unit> Handle(DockerBuildCommand command, CancellationToken ct)
{
Console.WriteLine($"Building image from: {command.Path}");
return Unit.Task;
}
}
}Nested groups concatenate prefixes through inheritance:
[NuruRouteGroup("cloud")]
public abstract class CloudGroupBase;
[NuruRouteGroup("azure")]
public abstract class AzureGroupBase : CloudGroupBase;
[NuruRouteGroup("storage")]
public abstract class AzureStorageGroupBase : AzureGroupBase;
// Matched by: myapp cloud azure storage upload myfile.txt
[NuruRoute("upload", Description = "Upload a file to Azure storage")]
public sealed class AzureStorageUploadCommand : AzureStorageGroupBase, ICommand<Unit>
{
[Parameter(Description = "File to upload")]
public string File { get; set; } = string.Empty;
public sealed class Handler : ICommandHandler<AzureStorageUploadCommand, Unit>
{
public Task<Unit> Handle(AzureStorageUploadCommand command, CancellationToken ct)
{
Console.WriteLine($"Uploading: {command.File}");
return Unit.Task;
}
}
}Shared options across a group use [GroupOption] on the base class properties. All routes inheriting from the group automatically get these options. Do not include dashes in the attribute - the generator adds them.
[NuruRouteGroup("docker")]
public abstract class DockerGroupBase
{
[GroupOption("verbose", "v", Description = "Verbose output")]
public bool Verbose { get; set; }
}
// Both DockerBuildCommand and DockerRunCommand inherit --verbose/-v from DockerGroupBaseCreate multiple specialized CLI editions from one codebase by filtering endpoints by group type. Parent prefixes above the matched group are stripped.
// Full edition - all commands
NuruApp.CreateBuilder()
.DiscoverEndpoints()
.Build();
// Kanban-only edition - "ganda" prefix stripped, only kanban commands
NuruApp.CreateBuilder()
.DiscoverEndpoints(typeof(KanbanGroup))
.Build();
// Multiple groups - OR logic
NuruApp.CreateBuilder()
.DiscoverEndpoints(typeof(KanbanGroup), typeof(GitGroup))
.Build();Behavior:
typeof()) for refactoring safetyProject structure for multi-edition CLIs using runfiles:
my-cli/
├── Directory.Build.props # Includes ganda/endpoints/** for all editions
├── ganda/
│ ├── ganda.cs # Full edition entry point
│ └── endpoints/ # Shared command files (one per file)
│ ├── ganda-group.cs
│ ├── kanban-group.cs
│ ├── kanban-add-command.cs
│ └── git-commit-command.cs
├── kanban/
│ └── kanban.cs # .DiscoverEndpoints(typeof(KanbanGroup))
└── git/
└── git.cs # .DiscoverEndpoints(typeof(GitGroup))See samples/editions/01-group-filtering/ for a complete working example.
sealed (can be public sealed or internal sealed)sealed class Handler (accessibility matches the endpoint class)[NuruRoute] takes only a single literal or "" - the analyzer rejects anything elsestring?) for optional parameters, NOT IsOptional=trueUnit when no meaningful return valueTask<T> (return Unit.Task from a non-async Task<Unit> handler). Do not use ValueTask<T>Handler return values and exit codes are independent concerns:
Environment.ExitCode → controls the process exit code returned by RunAsync(). Controls what scripts/CI see.| Return Type | Terminal Output | Exit Code |
|---|---|---|
Unit | Nothing | 0 (default) |
string | Raw string | 0 (default) |
int | Raw number (printed, not used as exit code) | 0 (default) |
| Complex object | JSON serialized | 0 (default) |
DateTime | ISO 8601 formatted | 0 (default) |
To signal failure, set Environment.ExitCode explicitly:
public sealed class Handler : ICommandHandler<DeployCommand, Unit>
{
public async Task<Unit> Handle(DeployCommand command, CancellationToken ct)
{
if (failed)
{
Terminal.WriteErrorLine("Deployment failed");
Environment.ExitCode = 1;
}
return Unit.Value;
}
}Common mistake: returning int thinking it sets the exit code. .WithHandler(() => 42) outputs "42" to the terminal but the exit code is still 0.
Add interactive REPL to any Nuru app with .AddRepl():
NuruApp app = NuruApp.CreateBuilder()
.DiscoverEndpoints()
.AddRepl(options =>
{
options.AutoStartWhenEmpty = true; // Start REPL when no args
options.Prompt = "calc> ";
options.WelcomeMessage = "Calculator REPL. Type commands or 'exit' to quit.";
options.PersistHistory = true;
options.HistoryFilePath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
".my_app_history"
);
})
.Build();
return await app.RunAsync(args);Mode detection:
myapp add 2 3)AutoStartWhenEmpty: starts REPL--interactive / -i: starts REPL explicitlyNuruApp app = NuruApp.CreateBuilder()
.Map("greet {name}")
.WithHandler((string name) => $"Hello, {name}!")
.AsQuery()
.Done()
.Build();
await app.RunAsync(args);In the Fluent DSL, the full route pattern including parameters, options, and sub-commands is expressed in the Map() string.
| Pattern | Map() Example | Description |
|---|---|---|
| Literal | "status", "docker build" | Exact match (multi-word = sub-commands) |
| Parameter | "greet {name}" | Required parameter |
| Typed | "delay {ms:int}" | Type-constrained parameter |
| Optional | "deploy {env} {tag?}" | Nullable parameter (handler param must be nullable) |
| Catch-all | "exec {*args}" | Captures all remaining args (must be last) |
| Option | "build --config {mode}" | Named option with value |
| Flag | "build --verbose" | Boolean flag |
| Short option | "build -m {mode}" | Short alias |
| Option alias | "build --config,-c {mode}" | Long and short form |
| Repeated option | "run --env {var}*" | Collects multiple values into array |
| Description | "{env|Target environment}" | Inline help text via | |
.WithExample(command, description = null) (chainable, call multiple times) declares a usage example for a Map() route - same rendering as [NuruRouteExample] in the Endpoint DSL.
.Map("deploy {env}")
.WithHandler((string env) => Deploy(env))
.WithExample("deploy prod", "Deploy to production")
.WithExample("deploy staging --dry-run")
.Done()Nuru has two DI modes:
Source-Generated DI (Default): Fast, AOT-compatible. Supports:
AddTransient/AddScoped/AddSingleton<T>() - basic registrationsAddLogging() - logging with Microsoft.Extensions.LoggingAddHttpClient<TService, TImplementation>() - typed HTTP clientsnew T(dep1, dep2))Runtime DI (opt-in with .UseMicrosoftDependencyInjection()):
sp => new Service()Example of AddHttpClient with source-gen DI:
.ConfigureServices(services =>
{
services.AddHttpClient<IWeatherService, WeatherService>(client =>
{
client.BaseAddress = new Uri("https://api.example.com/");
client.Timeout = TimeSpan.FromSeconds(30);
});
})
.DiscoverEndpoints()
.Build();Then in the handler:
public sealed class Handler(IWeatherService weatherService) : IQueryHandler<WeatherQuery, string>
{
public async Task<string> Handle(WeatherQuery query, CancellationToken ct)
{
return await weatherService.GetWeatherAsync(query.City, ct);
}
}Use TestTerminal from TimeWarp.Terminal to capture and verify CLI output:
using TimeWarp.Terminal;
// Create test terminal for output capture
using TestTerminal terminal = new();
NuruApp app = NuruApp.CreateBuilder()
.UseTerminal(terminal)
.Map("demo")
.WithHandler((ITerminal t) =>
{
t.WriteLine("Hello from stdout!");
t.WriteErrorLine("Warning: something happened");
})
.AsCommand()
.Done()
.Build();
await app.RunAsync(["demo"]);
// Verify output
terminal.OutputContains("Hello from stdout!").ShouldBeTrue();
terminal.ErrorContains("Warning").ShouldBeTrue();
string[] lines = terminal.GetOutputLines();# Add to a .csproj project (--prerelease gets the latest version)
dotnet add package TimeWarp.Nuru --prerelease// In a runfile
#:package TimeWarp.NuruFor CLIs with multiple endpoint files, use a Directory.Build.props to include them. See samples/endpoints/02-calculator/Directory.Build.props for the reference pattern:
<Project>
<Import Project="$(MSBuildThisFileDirectory)../../Directory.Build.props" />
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
<RunfileGlobbingEnabled>true</RunfileGlobbingEnabled>
</PropertyGroup>
<ItemGroup>
<Compile Include="**/*.cs" Exclude="obj/**/*;bin/**/*;calculator.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="../../../source/timewarp-nuru/timewarp-nuru.csproj" />
</ItemGroup>
</Project>--capabilities prints the agent catalog. parameters[] and options[] name values are the argument schema. The optional top-level invocation object names the --json-args transport (- for stdin, @ for a file, argvOverridesJson).
The agent loop, the exact-name rule, argv-overrides-JSON, and the app-level fat-field pattern are in Agent invocation.
DiscoverEndpoints() auto-discovers all [NuruRoute] classesendpoints/ directorysamples/endpoints/02-calculator/ - Complete calculator CLI reference patternsamples/endpoints/15-httpclient/ - Typed HTTP client with source-gen DI example© TimeWarpEngineering, Unlicense. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/tw-nuru of TimeWarpEngineering/timewarp-nuru.
Open the folder on GitHubat commit a55d08a
Tw Nuru 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 |
|---|---|---|---|---|---|---|
| Tw Nuru this skillTimeWarpEngineering/timewarp-nuru | 117 | — | ~4.8k | Automated safety check: Pass | Unlicense | |
| Minimax DOCXpoco-ai/poco-claw | 1.4k | 7 repos | ~3.9k | Automated safety check: Pass | MIT | |
| Microsoft Skill CreatorMicrosoftDocs/mcp | 1.9k | 3 repos | ~2.1k | Automated safety check: Pass | CC-BY-4.0 | |
| Speckit ConstitutionWeihanLi/WeihanLi.Common | 242 | 11 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| Copilot Session Failure Analysisdotnet/maui | 23k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Update .NET OS Packagesdotnet/core | 22k | — | ~2.3k | Automated safety check: Pass | MIT |
poco-ai/poco-claw
Professional DOCX document creation, editing, and formatting using OpenXML SDK (.NET).
MicrosoftDocs/mcp
Create agent skills for Microsoft technologies using official documentation.
WeihanLi/WeihanLi.Common
Create or update the project constitution from interactive or provided principle inputs, ensuring all dependent templates stay in sync.
dotnet/maui
Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.
dotnet/core
Audits and updates os-packages.json files listing the Linux packages each .NET release needs per distro, then regenerates the Markdown from the JSON.
MicrosoftDocs/mcp
Find working code samples, verify API signatures, and fix Microsoft SDK errors using official docs.
TimeWarpEngineering/timewarp-nuru
Search for CLI commands and tools installed on your system. An agent skill from TimeWarpEngineering/timewarp-nuru.
Works with
Build CLI applications with TimeWarp.Nuru - a .NET route-based CLI framework with web-style routing, source generators, and AOT support. Tw Nuru is an agent skill from TimeWarpEngineering/timewarp-nuru.NET route-based CLI framework with web-style routing, source generators, and AOT support.
Tw Nuru fits situations like: creating CLI tools; defining commands/queries; adding parameters; testing CLI output.
Run `npx skills add TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a claude-code`. Or copy the skill folder (skills/tw-nuru in TimeWarpEngineering/timewarp-nuru) into .claude/skills/tw-nuru in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a codex`. Or copy the skill folder (skills/tw-nuru in TimeWarpEngineering/timewarp-nuru) into .agents/skills/tw-nuru 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 TimeWarpEngineering/timewarp-nuru --skill tw-nuru -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tw-nuru, .gemini/skills/tw-nuru, .github/skills/tw-nuru and .opencode/skills/tw-nuru in your project.
Going by SKILL.md and its folder, Tw Nuru needs the command-line tools its instructions call (dotnet). Our summary lists: Docker.
SKILL.md names 2 domains. As links in the text: github.com and raw.githubusercontent.com. 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.
Tw Nuru is published under the Unlicense licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tw Nuru: Minimax DOCX (poco-ai/poco-claw, 1.4k stars), Microsoft Skill Creator (MicrosoftDocs/mcp, 1.9k stars), Speckit Constitution (WeihanLi/WeihanLi.Common, 242 stars) and Copilot Session Failure Analysis (dotnet/maui, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TimeWarpEngineering (a GitHub organization) maintains it in TimeWarpEngineering/timewarp-nuru, which has 117 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: TimeWarpEngineering/timewarp-nuru on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.