crucible.cli
1.5.0
dotnet tool install --global crucible.cli --version 1.5.0
dotnet new tool-manifest
dotnet tool install --local crucible.cli --version 1.5.0
#tool dotnet:?package=crucible.cli&version=1.5.0
nuke :add-package crucible.cli --version 1.5.0
Crucible
Static documentation generator that transforms Markdown into HTML through an XML intermediate representation and XSLT 4.0 transformation.
Packages
| Package | Description | Install |
|---|---|---|
| Crucible.Cli | Command-line tool | dotnet tool install -g Crucible.Cli |
| Crucible.Extensions | Extension library (Mermaid diagrams, plugin API) | Library — reference in your project |
Quick start
# Install the CLI
dotnet tool install -g Crucible.Cli
# Create a new docs project
crucible init
# Build the site
crucible build
Features
- Markdown in, HTML out — write docs in Markdown with YAML frontmatter
- XSLT-powered — transforms via the PhoenixmlDb XSLT 4.0 engine
- Client-side search — Lunr.js with pre-built index
- Dark mode — automatic with manual toggle
- SEO — Open Graph, canonical links, sitemap.xml
- Extensible — plugin model for custom Markdown processing
- LLMs.txt — auto-generated site overview for AI consumption
Documentation
Full documentation at phoenixml.dev
License
Apache 2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
This package has no dependencies.
**Social link previews, a site icon, an analytics advisory, and `PhoenixmlDb.Xslt` 2.6.0.**
### New
- **Link-preview cards.** Optional `crucible.yaml` settings:
```yaml
social:
image: img/icon-256.png # relative to base-url, or an absolute URL
card: summary # summary (square icon, default) or summary_large_image (1200x630)
image-alt: Product name
twitter-site: "@handle"
favicon: favicon.png
```
Both themes now emit `og:site_name`, `twitter:card`, `twitter:title` and `twitter:description`
on every page, and `og:image` / `twitter:image` (+ alt), `twitter:site` and a `rel="icon"` link
when configured. Without `social:` a page gets a text-only `summary` card, where it previously
had no card at all. `og:title` now carries the site title as `<title>` does, so a shared home
page no longer previews as just "Home".
- **No analytics is now a visible advisory.** A build that produces pages with no `analytics.ga4`
prints `warning: No analytics configured …`. It is a new kind of result
(`BuildResult.Advisories`) that `--strict` never escalates, because leaving analytics out is a
legitimate choice. phoenixml.dev lost its GA tag silently when analytics went opt-in in 1.2.0.
### Engine
Takes `PhoenixmlDb.Xslt` from 2.4.0 to 2.6.0 (XQuery 2.6.0, Core 2.1.0).
### Verified
phoenixml.dev (286 pages) built three ways from the same source:
| comparison | result |
|---|---|
| this release on Xslt 2.4.0 vs on 2.6.0, `ParseOnly` intermediate XML | 0 of 288 files differ |
| the same, HTML with inter-tag whitespace normalised | 0 of 286 differ |
| the same, text inside every code block | 0 pages differ |
| 1.4.0 vs this release, HTML | only the new `<head>` tags, plus indentation |
The raw HTML differs on every page in indentation only: 2.6.0's serializer indents consistently,
where 2.4.0 drifted further right on each line. That includes the whitespace a `<pre>` carries
after its `</code>`, which renders the same. No content, link or code sample changed.