MetaFlowAI metadata overlays for Copilot instructions, prompts, skills, and agents. Features
Recommended mode (automatic)MetaFlow works best in automatic mode, which is the default.
Use command palette actions for diagnostics and explicit control, not as the primary day-to-day workflow. InstallationInstall from VSIX:
Install the newest locally packaged VSIX automatically:
Direct CLI fallback:
If VS Code shows "Please restart VS Code before reinstalling ...", close all VS Code windows and run:
Then retry the script command above. ConfigurationCreate
Legacy preview configs that still use If enabled capabilities surface the same effective relative path, MetaFlow reports a warning in the Capabilities view, Optional
|
| Command | Description | Keybinding |
|---|---|---|
MetaFlow: Refresh |
Reload config and re-resolve overlay | Ctrl+Shift+R |
MetaFlow: Preview |
Show pending changes in output channel | |
MetaFlow: Apply |
Synchronize files to .github/ |
|
MetaFlow: Clean |
Remove synchronized files | |
MetaFlow: Status |
Show current status in output channel | |
MetaFlow: Switch Profile |
Select active profile | |
MetaFlow: Toggle Capability |
Enable/disable a capability | |
Select All |
Enable all descendant capabilities for the selected folder branch from the Capabilities view context menu | |
Deselect All |
Disable all descendant capabilities for the selected folder branch from the Capabilities view context menu | |
MetaFlow: Rescan Repository |
Force runtime discovery rescan for the selected metadata repo row | |
MetaFlow: Check Repository Updates |
Fetch and compute upstream ahead/behind status for git-backed metadata repos | |
MetaFlow: Pull Repository Updates |
Run git pull --ff-only for a selected git-backed metadata repo |
|
MetaFlow: Initialize MetaFlow Capability |
Choose synchronization mode (synchronize in config) or built-in settings-only mode persisted in workspace state |
|
MetaFlow: Remove MetaFlow Capability |
Disable built-in capability mode or remove tracked synchronized .github capability files |
|
MetaFlow: Open Config File |
Open .metaflow/config.jsonc in editor |
|
MetaFlow: View Capability Details |
Open or reuse the capability details webview for the selected capability layer | |
MetaFlow: Initialize Configuration |
Scaffold new .metaflow/config.jsonc |
|
MetaFlow: Promote |
Detect drifted files for upstream promotion |
Settings
| Setting | Default | Description |
|---|---|---|
metaflow.enabled |
true |
Enable/disable the extension |
metaflow.autoApply |
true |
Auto-apply on config change (recommended) |
metaflow.aiMetadataAutoApplyMode |
off |
Force built-in AI metadata bootstrap mode on refresh: off, synchronize to synchronize capability files into .github, or builtinLayer |
metaflow.logLevel |
info |
Log verbosity (debug/info/warn/error) |
metaflow.hooksEnabled |
true |
Enable Copilot hooks injection |
metaflow.repoUpdateCheckInterval |
daily |
Background cadence for checking git-backed metadata repos for upstream updates (hourly, daily, weekly, monthly) |
Copilot settings injected by MetaFlow: Apply
chat.instructionsFilesLocations(and legacygithub.copilot.chat.codeGeneration.instructionFiles)chat.promptFilesLocations(and legacygithub.copilot.chat.promptFiles)chat.agentFilesLocationschat.agentSkillsLocationschat.hookFilesLocations(file-based hook entries fromhooks.preApply/hooks.postApply)
MetaFlow: Clean removes the above injected keys from workspace settings.
Architecture
The extension uses a pure TypeScript engine (no VS Code imports) for overlay resolution, enabling fast unit testing. The engine modules live in the workspace package at packages/engine/src/engine/ and handle:
- Capability resolution and file-map building
- Include/exclude filter evaluation
- Profile enable/disable pattern application
- Artifact classification (settings vs synchronized files)
- Provenance header generation and drift detection
- Synchronization with state tracking
VS Code integration (commands, views, diagnostics) wraps the engine in src/src/commands/ and src/src/views/.
Development
cd src
npm install
npm run compile
npm run test:unit # unit tests
npm run gate:integration # integration tests (Extension Host)
npm run lint
Lint monitoring (non-blocking warnings)
Warnings are intentionally non-failing, but still monitored:
npm run lint— runs ESLint; warnings are allowed.npm run lint:monitor— writes JSON report to.eslint-report.json.npm run lint:summary— prints totals and top warning rule IDs.npm run lint:monitor:summary— monitor + summary in one command.
Example summary output:
[lint-summary] files=28 errors=0 warnings=5
[lint-summary] top-warning-rules=@typescript-eslint/naming-convention:5
VS Code tasks
From Terminal → Run Task:
MetaFlow: Lint ExtensionMetaFlow: Compile Extension (TS)MetaFlow: Test Extension UnitMetaFlow: Build Extension
The lint monitor and summary helpers are available as npm scripts rather than workspace tasks. Run npm run lint:monitor, npm run lint:summary, or npm run lint:monitor:summary from src/ when you need those reports.
GitHub CI and Release
This repository uses GitHub Actions to validate and publish the extension:
.github/workflows/ci.ymlrunsnpm run gate:quick(build + lint + unit tests) plusnpm run gate:integrationunder headlessxvfb-runon PRs and pushes..github/workflows/release.ymlpackages and publishes onv*tags, and can also be triggered manually.
Publishing secrets
Set these repository secrets before publishing:
VSCE_PAT— VS Code Marketplace Personal Access TokenOVSX_PAT— Open VSX token
If one secret is missing, the workflow skips publishing to that marketplace and continues with any remaining configured target.
License
MIT