mcpField
D
datahub-mfe-create-app

datahub-mfe-create-app

github.com/datahub-projectDevelopment45157 installsUpdated 4w ago
Repository

About datahub-mfe-create-app

A skill that scaffolds a DataHub Micro Frontend app using Webpack Module Federation. It gathers app settings, generates seven configured files, and guides installation, startup, and verification.

Key features

  1. 01Collect app name, description, port, and API need
  2. 02Generate seven app and configuration files
  3. 03Configure optional GraphQL proxy
  4. 04Guide installation and dev server startup
  5. 05Verify remote entry and standalone page

Use cases

  1. 01Start a new DataHub MFE app
  2. 02Create a scaffold with GraphQL proxy
  3. 03Check that the development app serves correctly

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/datahub-project/datahub-skills --skill datahub-mfe-create-app

After installing, type/datahub-mfe-create-appin Claude Code to confirm it loaded.

Bundled filesassets/templates.md

Details

From the project README

Create a DataHub MFE App

Scaffolds a complete, working Micro Frontend app that integrates with DataHub via Webpack Module Federation. Generates all 7 required files and guides the user through building and verifying.

Step 1: Gather Information

Use the AskQuestion tool to collect the following in a single call.

QuestionIDOptions
App name (kebab-case, e.g. team-dashboard)app_nametest-app / N/A - I'll fill it in later
Brief description of what the app doesapp_desctest-description / N/A - I'll fill it in later
Dev server portport3002 / 3003 / 3004 / 3005 / 3006
Does the app need to call the DataHub GraphQL API?needs_graphqlYes / No

For app_name and app_desc, present only the N/A - I'll fill it in later option — do NOT suggest values from the workspace. The user will type their own.

Deriving names from app_name

Given an app_name like team-dashboard:

  • Directory: team-dashboard-mfe/ (append -mfe if not already present)
  • Module Federation name (MF_NAME): convert to camelCase and append MFE — teamDashboardMFE
  • Package name: same as directory name, e.g. team-dashboard-mfe
  • Display label: title-case the words, e.g. Team Dashboard

Step 2: Generate Files

Create the directory at the workspace root (sibling to datahub-web-react/). Generate all 7 files using the templates in templates.md.

Apply these substitutions to every template:

PlaceholderValue
__APP_DIR__Directory name
__PACKAGE_NAME__Package name
__APP_DESCRIPTION__User's description
__PORT__Dev server port
__MF_NAME__Module Federation name (camelCase + MFE)
__DISPLAY_LABEL__Title-cased label
__PUBLIC_PATH_DEV__http://localhost:<PORT>/

If needs_graphql is Yes, include the GraphQL proxy block in webpack.config.js (marked with {{GRAPHQL_PROXY}} in the template). If No, omit it entirely.

Files to generate
  1. package.json
  2. webpack.config.js
  3. src/mount.tsx
  4. src/index.tsx
  5. src/App.tsx
  6. tsconfig.json
  7. public/index.html

Step 3: Install and Start

First cd into the app directory — webpack must be started from within it, not from the workspace root.

cd __APP_DIR__
npm install
npm start

Wait for webpack to compile. The dev server should start on the configured port.

Step 4: Verify

  1. Open http://localhost:<PORT>/remoteEntry.js in a browser or curl it. It should return JavaScript (not a 404 or HTML error page).
  2. Open http://localhost:<PORT>/ — the standalone dev page should render.

If either check fails, review the webpack output for errors and fix before proceeding.

Step 5: Next Steps

Tell the user:

Your MFE app is running! To integrate it with DataHub, use the datahub-mfe-configure-app skill — it will walk you through adding this app to the DataHub frontend config so it appears at /mfe/<path> and optionally in the nav sidebar.

Provide a summary of what was created:

Created __APP_DIR__/ with 7 files:
  package.json          — dependencies and scripts
  webpack.config.js     — Module Federation + dev server
  src/mount.tsx         — mount() contract for DataHub
  src/index.tsx         — standalone dev entry point
  src/App.tsx           — starter React component
  tsconfig.json         — TypeScript config
  public/index.html     — dev HTML shell

Module Federation name: __MF_NAME__   ← use this as "MFE app name" in datahub-mfe-configure-app
Remote entry URL:       http://localhost:__PORT__/remoteEntry.js
Module path:            __MF_NAME__/mount

Comments

Markdown supported