skills/fusion-help-docs/SKILL.md
Guides app teams through authoring, structuring, and publishing help documentation (articles, release notes, FAQs) using the fusion-help-cli. USE FOR: write help articles, create release notes, set up help docs, publish documentation, sync articles, configure help config file, maintain app help content. DO NOT USE FOR: building the CLI itself, modifying Fusion.Services.Help internals, or non-documentation tasks.
npx skillsauth add equinor/fusion-skills fusion-help-docsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Author, structure, and publish help docs (articles, release notes, FAQs) via fhelp CLI.
fusion-help-cli source (tooling/fusion-help-cli/)Collect before creating:
| Input | Required | Description |
|-------|----------|-------------|
| App key | Yes | The Fusion app key (e.g. my-app, resource-allocation-landingpage). User must be admin for this app. |
| Content type | Yes | articles, release-notes, or faqs |
| Docs root path | Yes | Where the team stores their docs (e.g. docs/help/) |
| Target environment | For publish | ci, fqa, tr, or fprd |
Unknown app key → check app admin:
https://fusion.ci.fusion-dev.net/apps/app-adminhttps://fusion.equinor.com/apps/app-adminLook in "Admins" section — must be listed as admin to publish.
Create folder layout:
docs/
help/
articles/ # Markdown article files
images/ # Article images (PNG format)
release-notes/ # Markdown release note files
images/ # Release note images (PNG format)
faqs/ # Optional: markdown FAQ body overrides
help-articles.json # Article config
help-release-notes.json # Release notes config (if using release notes)
Folder and config names are flexible — must match what you pass to
fhelp.
Create help-articles.json (tells CLI which articles to sync):
{
"articles": [
{
"slug": "my-app-getting-started", // Must match the .md filename (without extension)
"title": "Getting Started", // Display title in Fusion Help
"appKey": "my-app", // Your Fusion app key
"sortOrder": 1.0, // Controls display order (lower = first)
"summary": "Learn how to get started.", // Short description shown in article list
"tags": ["getting-started", "onboarding"],// Searchable tags
"relevantApps": [] // Optional: other app keys where this shows
}
]
}
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| slug | Yes | string | Unique identifier. Must match a {slug}.md file in the articles root folder. Use kebab-case. |
| title | Yes | string | Human-readable title displayed in Fusion Help. |
| appKey | Yes | string | Fusion app key this article belongs to. You must be admin for this app. |
| sortOrder | No | number | Controls display order. Lower numbers appear first. Default varies. Use decimals (1.0, 1.1, 2.0) for flexible ordering. |
| summary | Yes | string | Short description shown in article listings. |
| tags | No | string[] | Searchable tags for categorization. |
| relevantApps | No | string[] | Additional app keys where this article should appear. |
Create markdown files in the articles root folder. The filename (without .md) must match the slug in the config.
Article writing guidelines:
##, ### for structure — avoid # (title comes from config)images/; reference with Example article (docs/help/articles/my-app-getting-started.md):
## Overview
This guide walks you through the basics of using My App.
## Prerequisites
Before you begin, make sure you have:
- Access to the Fusion portal
- The correct role assigned to your user
## Step 1: Navigate to the app
Open Fusion and search for "My App" in the app launcher.

## Step 2: Create your first item
Click the **New** button in the toolbar to create your first item.
## Need help?
Contact the team on Teams or check the FAQ section.
Create help-release-notes.json if team publishes release notes:
{
"releaseNotes": [
{
"slug": "my-app-v2-release", // Must match the .md filename
"title": "Version 2.0 Release", // Display title
"appKey": "my-app", // Your Fusion app key
"publishedDate": "2026-03-14T00:00:00Z", // Publication date (ISO 8601)
"tags": ["release", "v2"], // Searchable tags
"relevantApps": [] // Optional: other app keys
}
]
}
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| slug | Yes | string | Unique identifier. Must match a {slug}.md file in the release notes root folder. |
| title | Yes | string | Release note title. |
| appKey | Yes | string | Fusion app key. You must be admin. |
| publishedDate | Yes | ISO 8601 date | When the release was published. |
| tags | No | string[] | Searchable tags. |
| relevantApps | No | string[] | Additional app keys. |
Example release note (docs/help/release-notes/my-app-v2-release.md):
## What's new in Version 2.0
### New dashboard
We've completely redesigned the dashboard with new charts and filtering capabilities.

### Performance improvements
- Page load times reduced by 40%
- Search results now appear in under 1 second
### Bug fixes
- Fixed an issue where filters would reset on navigation
- Corrected date formatting in the export feature
Install from the Fusion Public feed:
dotnet tool install --global --add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" Fusion.Help.Cli
Update an existing installation:
dotnet tool uninstall --global Fusion.Help.Cli
dotnet tool install --global --add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" Fusion.Help.Cli
Authenticate via Azure CLI:
az login
CLI uses DefaultAzureCredentials — picks up az login session automatically.
Sync articles:
fhelp article sync -f docs/help/help-articles.json -r docs/help/articles -e ci -v
Sync release notes:
fhelp releasenotes sync -f docs/help/help-release-notes.json -r docs/help/release-notes -e ci -v
Command flags:
| Flag | Description |
|------|-------------|
| -f, --file | Path to the JSON config file |
| -r, --root | Path to the folder containing markdown files |
| -e, --env | Target environment: ci, fqa, tr, fprd |
| -t, --token | Override the access token (optional) |
| -v, --verbose | Show detailed logging output |
| --no-validation | Skip source system check — use with caution, can overwrite UI-created content |
Environment promotion order: ci → fqa → fprd (skip tr unless testing infrastructure).
Test in ci before promoting to fqa then fprd.
Automate publishing via Azure DevOps or GitHub Actions.
Azure DevOps pipeline example:
parameters:
- name: environment
type: string
default: ci
values: [ci, fqa, fprd]
- name: azureSubscription
type: string
steps:
- checkout: self
- script: |
dotnet tool install --global --add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" Fusion.Help.Cli
displayName: "Install fusion help CLI"
- task: AzureCLI@2
displayName: "Sync help articles"
inputs:
azureSubscription: ${{ parameters.azureSubscription }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
fhelp article sync `
-f ./docs/help/help-articles.json `
-r ./docs/help/articles `
-e "${{ parameters.environment }}" `
-v
- task: AzureCLI@2
displayName: "Sync release notes"
inputs:
azureSubscription: ${{ parameters.azureSubscription }}
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
fhelp releasenotes sync `
-f ./docs/help/help-release-notes.json `
-r ./docs/help/release-notes `
-e "${{ parameters.environment }}" `
-v
GitHub Actions example:
name: Sync Help Documentation
on:
push:
branches: [main]
paths: ['docs/help/**']
jobs:
sync-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'
- name: Install fusion help CLI
run: |
dotnet tool install --global \
--add-source "https://statoil-proview.pkgs.visualstudio.com/Fusion%20-%20Packages/_packaging/Fusion-Public/nuget/v3/index.json" \
Fusion.Help.Cli
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: '3aa4a235-b6e2-48d5-9195-7fcf05b459b0'
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Sync articles
run: |
fhelp article sync \
-f ./docs/help/help-articles.json \
-r ./docs/help/articles \
-e ci -v
FAQs use an Excel-based workflow and require app-level access. This is a temporary solution best suited for scenarios where FAQs span multiple apps.
fhelp faq sync -f docs/help/faqs.xlsx -e ci -v
For most teams, managing FAQs through the Fusion Help Admin UI at https://fusion.equinor.com/apps/fusion-help-admin is simpler.
docs/help/ folder with articles, images, and confighelp-articles.json (+ optional help-release-notes.json)fhelp| Problem | Cause | Solution |
|---------|-------|----------|
| DefaultAzureCredential failed to retrieve a token | Not authenticated | Run az login |
| 403 Forbidden | Not an admin for the app key | Check admin list at the app admin page, or verify the appKey in your config |
| Article not created (skipped) | No matching .md file in root folder | Ensure filename matches slug exactly: {slug}.md |
| Source system mismatch warning | Article was created via UI, CLI won't overwrite | Use --no-validation carefully, or use a different slug |
| Images not uploading | Wrong format | Images must be PNG format |
--no-validation without understanding — can overwrite UI-created contentci before publishing to fprdsourceSystem auto-set to Fusion.Help.Cli; CLI and UI articles have different source systems and won't conflict unless --no-validation is usedmy-app-getting-started)az login or pipeline service principalstools
Use Fusion DevTools CLI (fdev) for API testing, token acquisition, service discovery, and person lookup during development. USE FOR: calling Fusion REST APIs, getting access tokens as JSON, discovering services and environments, resolving persons, PIM role activation. DO NOT USE FOR: modifying backend service code, deploying services, infrastructure changes, CI/CD pipeline configuration, or Service Bus operations.
testing
Main Copilot skill gate for the Fusion ecosystem — cross-domain router. USE FOR: routing between different Fusion domains (skills, issues, PRs, reviews) when the right domain skill is unclear; getting install guidance for missing skills. DO NOT USE FOR: skill lifecycle operations (use fusion-skills directly), tasks where a specific Fusion skill is already active.
tools
Entrypoint for all Fusion skill lifecycle operations. USE FOR: finding, installing, updating, syncing, or greenkeeping skills; setting up skill automation; creating or authoring a new skill; reporting a bug with a skill. DO NOT USE FOR: resolving GitHub issues, reviewing PRs, planning task breakdowns, or authoring GitHub issues — those are handled by other Fusion skills.
tools
Creates or modernizes repository skills with clear activation cues, purposeful support files, and practical review loops. USE FOR: creating a new skill, tightening an existing skill, improving discovery wording, and structuring references/assets/optional helper agents when they genuinely add value. DO NOT USE FOR: product-code changes, routine copy edits outside skills/, or documentation that should not become an installable skill.