SpecGen 0.2.0
dotnet tool install --global SpecGen --version 0.2.0
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
dotnet tool install --local SpecGen --version 0.2.0
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=SpecGen&version=0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
nuke :add-package SpecGen --version 0.2.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SpecGen
AI-powered functional specification generator for Microsoft Dataverse solutions
What is SpecGen?
SpecGen is a .NET CLI tool that reads an unpacked Microsoft Dataverse solution and the associated plugin/script source code, then generates a complete set of functional specification documents in Markdown. It combines deterministic XML parsing with AI-powered code analysis to produce human-readable specs that cover plugins, web resources, custom APIs, tables, forms, views, security roles, workflows, and more -- all cross-linked and ready to drop into a wiki or repo.
Install
dotnet tool install -g specgen
Quick Start
# Scan a solution (no AI, just discovery)
specgen scan \
--plugins ./path/to/Plugins \
--scripts ./path/to/WebResources \
--solution ./path/to/UnpackedSolution
# Generate all specs
specgen generate \
--plugins ./path/to/Plugins \
--scripts ./path/to/WebResources \
--solution ./path/to/UnpackedSolution \
--output ./docs
# Dry run (preview what would be generated, no AI calls)
specgen generate \
--plugins ./path/to/Plugins \
--solution ./path/to/UnpackedSolution \
--output ./docs \
--dry-run
Features
Parsing
| Capability | Source | Description |
|---|---|---|
| Plugin Analysis | Roslyn | Extracts registrations, dispatch maps, and handler source from C# projects |
| Script Analysis | Regex | TypeScript / JavaScript web resource analysis |
| Table Metadata | XML | Entity attributes, option sets, and relationships |
| Forms & Views | XML | Form layouts, events, fields, system views |
| Security Roles | XML | Privilege matrices per role |
| Workflows | XML + AI | Category, trigger entity, mode, scope; AI specs from definitions |
| Custom APIs | XML | Request/response parameters, plugin type |
| App Modules | XML | Sitemap, entities, security roles |
| Environment Variables | XML | Definitions and default values |
| Canvas Apps | XML | App inventory |
| Email Templates | XML | Template inventory |
| Convert Rules | XML | Case-creation / convert rules |
| Ribbons | XML | Buttons, commands, display/enable rules |
AI Generation
| Capability | Description |
|---|---|
| Plugin Specs | IF / THEN / ELSE / DO business rules from C# handler code |
| Script Specs | Functional specs from JS/TS web resources |
| Custom API Specs | Functional specs from Custom API handler code |
| Workflow Specs | Functional specs from Modern Flow, Classic Workflow, and Business Rule definitions |
| Multi-Provider | OpenAI, Azure OpenAI, and Anthropic (--provider) |
| Parallel Calls | Concurrent AI calls with --max-parallel and token-bucket rate limiting |
| Rate-Limit Handling | Shared cooldown on 429 with exponential backoff |
Output & Integration
| Capability | Description |
|---|---|
| Cross-Linking | Forms, ribbons, workflows, subgrids, app modules auto-link to related specs |
| Skip Existing | --skip-existing for incremental runs |
| Progress & Cost | Progress bar with percentage; estimated cost in summary |
| Pipeline Ready | --yes, --quiet, --summary-file, --fail-on-error for CI/CD |
| Customizable | --example, --instructions, --prompt-template for team-specific formatting |
| Deterministic Specs | Tables, roles, forms, views generated purely from XML (no AI required) |
Environment Variables
| Variable | Purpose |
|---|---|
OPENAI_API_KEY |
API key for OpenAI / Azure OpenAI |
OPENAI_ENDPOINT |
Azure OpenAI endpoint URL |
ANTHROPIC_API_KEY |
API key for Anthropic |
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.