Fusion Help Integration

equinor/fusion-skills/skills/fusion-help-integration

作者 equinore8fd6cfaf8edMIT2 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫今天更新

Wires Fusion Help Center into app pages — creates article slug constants, adds useHelpCenter hook, and connects PageLayout props so users can open contextual help articles. USE FOR: add help button to page, wire useHelpCenter, create helpArticles constants, integrate Fusion Help in app, connect PageLayout to help center, add openHelpArticle to page. DO NOT USE FOR: authoring markdown help articles (use fusion-help-docs), direct Help REST API calls (use fusion-help-api), modifying @fra/ui shared components.

AI 產生的概覽

將 Fusion 說明中心接入應用程式頁面,建立說明文章 slug 常數並連接 PageLayout 說明屬性。

功能
此技能引導代理將 Fusion 說明中心整合到前端應用程式頁面。它會建立或更新說明文章 slug 常數檔,在頁面元件中加入 useHelpCenter 鉤子,並將 openHelpArticle 與 openReleaseNotes 屬性傳給 PageLayout。它也涵蓋以 TypeScript 與 lint 檢查驗證整合,以及將 slug 與已發佈文章相互比對。
適用情境
適用於為頁面加入說明按鈕或情境說明、接入 useHelpCenter、建立 helpArticles 常數,或將 PageLayout 連接到 Fusion 說明中心。不適用於撰寫 Markdown 說明文章、直接呼叫 Help REST API,或修改共用的 @fra/ui 元件。
執行需求
需要帶有 help-center 子路徑匯出的 @equinor/fusion-framework-react-app 套件與 @fra/ui 的 PageLayout 元件,以及用於驗證的 pnpm、TypeScript 和 ESLint。此技能不含指令碼,僅為說明文件,並附帶參考與資源 Markdown 檔案。

Fusion Help Integration

Wire the Fusion Help Center into app pages so users can open contextual help articles via the PageLayout help button.

When to use

  • Add help button to a page
  • Wire useHelpCenter into a page component
  • Create/update help articles constants file
  • Connect PageLayout to Fusion Help Center
  • Page uses PageLayout without openHelpArticle
  • Add help support to an app
  • Open a specific help article from a page

When not to use

  • Authoring markdown help articles → fusion-help-docs
  • Direct REST API calls to Help service → fusion-help-api
  • Modifying @fra/ui shared components (PageLayout, PageHeader, FusionHelpButton)
  • Non-Fusion-framework apps or apps outside this monorepo

Required inputs

Collect before making changes:

InputRequiredDefaultDescription
App nameYes—The app directory name under apps/ (e.g., fra-app-management)
Target pagesYes—Which page(s) to wire up, or "all" for every page using PageLayout
Article slugsYesAuto-deriveSlug strings for each page. If not provided, derive as {app-name}-{page-kebab}
Include release notesNotrueWhether to also pass openReleaseNotes to PageLayout
Constants file locationNosrc/constants/helpArticles.tsPath for the FUSION_HELP_ARTICLES object

If article slugs are auto-derived, confirm with user before applying — slugs must match articles published via fhelp.

Instructions

1. Check existing help integration

Search target app for existing help wiring:

apps/{app-name}/src/**/helpArticles.tsapps/{app-name}/src/**/fusionHelpArticles.ts

Also search for useHelpCenter imports. If app already has partial integration, extend rather than duplicate.

2. Determine slug convention

Check if app already has a constants file with slugs:

  • Has existing slugs → follow its naming pattern
  • No existing slugs → use {app-name}-{page-kebab} convention

Reference existing conventions:

AppConventionExample
fra-access-manager{app-name}-{page-kebab}fra-access-manager-access-groups
fra-app-managementUnprefixed page nameoverview, requests
personnel-allocation{app-name}-{page-kebab}personnel-allocation-overview

Prefer prefixed convention for new apps — avoids slug collisions across apps.

3. Create or update the constants file

Create src/constants/helpArticles.ts (or the app's chosen location):

typescript
export const FUSION_HELP_ARTICLES = {    PAGE_NAME: '{app-name}-{page-kebab}',};

Keys are SCREAMING_SNAKE_CASE matching the page concept. Values are kebab-case slug strings.

See references/wiring-pattern.md [blocked] for the full canonical pattern with real examples.

4. Wire each target page

For each page component that uses PageLayout:

a. Add imports (externals first, then @fra/*, then @/* aliases, then relative):

typescript
import { useHelpCenter } from '@equinor/fusion-framework-react-app/help-center';
import { PageLayout } from '@fra/ui';
import { FUSION_HELP_ARTICLES } from '@/constants/helpArticles';

b. Destructure the hook inside the component body:

typescript
const { openArticle, openReleaseNotes } = useHelpCenter();

If release notes not needed, destructure only { openArticle }.

c. Pass props to PageLayout:

tsx
<PageLayout    title="Page Title"    openHelpArticle={() => openArticle(FUSION_HELP_ARTICLES.PAGE_NAME)}    openReleaseNotes={openReleaseNotes}>

Important: openHelpArticle must be a callback wrapper () => openArticle(slug), not a direct reference — openArticle requires the slug argument.

5. Verify the integration

After wiring:

  1. Run TypeScript check: pnpm --filter {app-name} exec tsc --noEmit
  2. Check lint: pnpm --filter {app-name} exec eslint src/
  3. Visual check: page header shows info-circle (ⓘ) icon. Clicking opens Fusion Help sidesheet.

6. Cross-reference with published content

Each slug in FUSION_HELP_ARTICLES must correspond to a published article. If articles don't exist:

  • Point to fusion-help-docs for authoring
  • Slug in constants must exactly match slug field in help-articles.json
  • Articles are published per-environment via fhelp

Expected output

  • Constants file created/updated with article slug mappings
  • Target page(s) wired with useHelpCenter + PageLayout props
  • TypeScript compilation passes
  • List of slugs needing corresponding help articles (for handoff to fusion-help-docs)

Safety & constraints

  • Never invent slug names without confirmation — slugs must match published articles
  • Don't modify @fra/ui components — PageLayout, PageHeader, FusionHelpButton already support help props
  • Don't add new dependencies — @equinor/fusion-framework-react-app is already in every app
  • Follow app's import alias convention — most apps use @/* → src/*
  • Respect existing code style — use type for type-only imports, maintain import group ordering
  • Don't duplicate help wiring — if page already has useHelpCenter, extend rather than re-add
  • Confirm auto-derived slugs before applying — wrong slug silently fails (no article shown)

來源與署名

來源:equinor/fusion-skills位於skills/fusion-help-integration提交e8fd6cf

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架