.copilot/skills/authoring-docs/SKILL.md
The docs are a Hugo site under www/. Content lives in
www/content/; custom shortcodes in www/layouts/shortcodes/.
task docs:serve (runs docs:generate then hugo server).task docs:build / task docs:test.Pages are Markdown with YAML frontmatter:
---
title: "Discourse"
weight: 30
---
weight orders pages within a section (lower = higher in the nav).
These mark when a feature appeared or that it is Pro-only. Two forms exist: block (its own line, renders a callout box) and inline (renders a small badge).
| Shortcode | Use |
|---|---|
{{< g_version "v2.13" >}} | Block. Top of a new page (right after frontmatter) or under a section heading for a feature added later. |
{{< g_inline_version "v2.6" >}} | Inline. Inside YAML comments and Markdown table cells. |
{{< g_featpro >}} | Block. Pro-only feature note. |
{{< g_inline_pro >}} | Inline. Marks a single field/option as Pro-only. |
The version is the GoReleaser tag the feature shipped in (e.g. v2.6,
v2.15.4). g_inline_version links to the corresponding /blog/goreleaser-vX.Y
release post.
-unreleased suffix)When documenting something already merged but not yet released, append
-unreleased to the upcoming version number. Use the next unreleased minor
(currently v2.17 — check the latest tag / ## A note about MSIX in
customization/package/nfpm.md for the live example).
# {{< g_inline_version "v2.17-unreleased" >}}
{{< g_version "v2.17-unreleased" >}}
Both shortcodes detect the -unreleased suffix and render a "beaker"
(experimental) badge — "Since v2.17 (unreleased)" / "This will be available in
the next release". When v2.17 ships, drop the -unreleased suffix.
Customization pages document fields as a commented .goreleaser.yaml block,
fenced with a filename attribute:
```yaml {filename=".goreleaser.yaml"}
announce:
discourse:
# Whether this announcer is enabled or not.
#
# Templates: allowed.
enabled: true
# Title to use for the Discourse topic.
#
# Default: '{{ .ProjectName }} {{ .Tag }} is out!'.
# Templates: allowed.
title_template: "..."
```
Conventions inside the block:
# separator line, then standardized
annotations — each on its own line:
# Default: <value>.# Templates: allowed.# Required.# Valid options: a, b, c.# Templates: allowed. {{< g_inline_version "v2.6" >}}) or on their own
comment line right before the field (e.g. # {{< g_inline_pro >}}).Block-level notes, placed in prose with a blank line above and below:
{{< g_experimental "https://github.com/.../issues/123" >}} — experimental
feature; the URL is the feedback link.{{< g_featpro >}} — Pro-only feature.{{< g_templates >}} — "learn more about templates"; place after a config
block whose fields support templates.{{< shortcode >}} (angle brackets) — default; raw HTML output. Used by all
badges, callouts, and {{< tabs >}} / {{< tab >}}.{{% shortcode %}} (percent) — only when output is Markdown to be rendered:
g_include and g_button.www/content/includes/*.md and are embedded with
{{% g_include file="includes/repository.md" %}} (reused: repository.md,
prs.md, commit_author.md).{{< tabs >}}{{< tab "OSS" >}}…{{< /tab >}}{{< tab "Pro" >}}…{{< /tab >}}{{< /tabs >}}.www/content/resources/{contributing,users,eula,security}.md — copied from
repo-root files by task docs:generate.www/static/schema.json — generated from pkg/config/config.go via task schema.