devlooped / devlooped/SponsorLink
InSpectra compatibility: dotnet-sponsor 2.0.16 - CLI introspection not available
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 42
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
Hi there!
I'm Jonas, the developer of InSpectra - an OpenCLI visualizer for .NET CLI tools, much like SwaggerUI or ReDoc but for command-line interfaces instead of REST APIs. You can see it in action at inspectra.kamsker.at, which includes a NuGet tool browser powered by an index I built.
To populate that index, I run InSpectra-Discovery - an automated pipeline that indexes every Spectre.Console.Cli tool published on NuGet. The pipeline installs each tool and invokes two introspection subcommands to extract the command tree:
sponsor cli opencli
sponsor cli xmldoc
These commands are part of the OpenCLI spec - a lightweight introspection contract that Spectre.Console.Cli tools can opt into so their command surface becomes machine-readable.
What happened
While indexing dotnet-sponsor 2.0.16, the pipeline was unable to extract your tool's command metadata. The introspection commands are not recognized by your tool.
The tool requires first-run TOS acceptance and GitHub authentication (via gh CLI) before any commands can run, so the introspection subcommands cannot be invoked in an unattended environment.
SponsorLink syncs your sponsorship(s) to your local machine, enabling
package authors to provide selective functionality to sponsors.
-- How it works --
GitHub users and organizations using GitHub Sponsors (a.k.a. sponsorables)
can opt-in to SponsorLink by providing a standard JWT manifest at
https://github.com/[user/org]/.github/sponsorlink.jwt. This is the same
location used for other community health files.
When you synchronize your sponsorship with a given account, the following
steps take place:
> read sponsorable JWT manifest from https://github.com/[user/org]
/.github/sponsorlink.jwt
> read from the manifest the issuer URI, public key and the sponsorable's
GitHub OAuth client (app) ID
> request GitHub OAuth app authorization via the default browser to get a
limited access token
> issue a GET request with that limited token to [issuer URI]/me and get a
sponsor JWT manifest
> verify and save sponsor JWT manifest locally for later offline access and
validation by libraries and tools
[...]
? Do you accept the above usage terms? [y/n] (y): Error: Failed to read input in non-interactive mode.
If possible, keeping help/metadata paths free of authentication or config requirements would allow automated tools like InSpectra to extract the command tree.
What would help
Adding support for cli xmldoc (that alone is enough - we can synthesize the rest from it) would let InSpectra include your tool in the index and make it discoverable to other developers.
Your project already references Spectre.Console.Cli 0.53.1, which includes both cli xmldoc and cli opencli as built-in hidden commands. They should work out of the box unless something in your startup is intercepting or rewriting the command arguments before Spectre parses them.
I noticed that your build target in Cli.csproj already uses --tos --unattended flags to bypass the interactive TOS prompt. If those flags (or a similar mechanism) could also allow the cli xmldoc / cli opencli subcommands to pass through without the TOS gate, that would be sufficient for automated indexing.
This is entirely optional - your CLI works fine on its own. This is about compatibility with InSpectra's indexing, not a bug in your tool.
PS: I'm working on a GitHub Action to auto-generate purpose-built InSpectra pages for your repo, like this: Example If you're interested, you can find the exact commands buried in my CI, or come back in a few days when I have the easy documentation ready.
Links
- Your package: https://www.nuget.org/packages/dotnet-sponsor/2.0.16
- InSpectra (OpenCLI visualizer): https://github.com/JKamsker/InSpectra
- Live demo: https://inspectra.kamsker.at/try/#/browse
- InSpectra-Discovery (indexing pipeline): https://github.com/JKamsker/InSpectra-Discovery
- OpenCLI spec: https://opencli.org/
Thanks for your time!
- Jonas
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Cli.csproj and the existing --tos --unattended build-target flags, then trace how startup arguments reach Spectre.Console.Cli. Run dotnet-sponsor cli xmldoc and cli opencli in an unattended environment to reproduce the missing commands. Done means cli xmldoc is available without interactive TOS acceptance or authentication.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100
