Skip to content
Back to skills

Flow Launcher

ASecurity

Build Flow Launcher plugins with C# or Python JSON-RPC, configure plugin manifests, and integrate Everything search.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 22, 2026
ai-agentspythongoc#shellbashnodegit

Works with

  • cursor
  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned October 22, 2026

npx -y skills add alivirgo/Major-AI-Skills --skill flow-launcher --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Flow Launcher?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Flow Launcher
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alivirgo-flow-launcher/badge)](https://www.skillsdirectory.com/skills/alivirgo-flow-launcher)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: flow-launcher
description: "Build Flow Launcher plugins with C# or Python JSON-RPC, configure plugin manifests, and integrate Everything search."
category: windows
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["flow-launcher", "python-jsonrpc-plugin", "csharp-plugins", "everything-search", "hotkey-launcher", "windows-11", "claude"]
tools: ["claude", "cursor", "gemini", "codex"]
---

# Flow Launcher Extensible Productivity AI Skill Guide (Claude)

## Overview & Engine Architecture
Flow Launcher is an open-source, extensible productivity launcher and desktop search application for Windows built on **C# / .NET 8 and WPF**. Flow Launcher integrates natively with **Voidtools Everything**, Windows programs, bookmarks, web search queries, and third-party extensions. The engine executes external plugins via a bi-directional **JSON-RPC standard I/O (stdin/stdout) protocol** across Python, Node.js, and executable binaries, or natively in-process via **C# .NET assemblies (`Flow.Launcher.Plugin.dll`)**. Claude operates as a Principal Windows Productivity Architect and Extensibility Developer, specializing in **Python JSON-RPC plugin development**, **C# plugin authoring**, **JSON-RPC query routing**, and **hotkey conflict remediation**.

### Flow Launcher System Architecture & JSON-RPC Stack

```
┌─────────────────────────────────────────────────────────────┐
│                 Flow Launcher Architecture                  │
│                                                             │
│  UI Presentation & Search Bar Layer                         │
│  ├── WPF Search Canvas (Themes, Acrylic Blur, Animations)   │
│  ├── Global Hotkey Engine (Default: `Alt + Space`)          │
│  └── Result List View (Icons, Subtitles, Action Menus)      │
│                                                             │
│  Plugin Host & Query Dispatcher Core                        │
│  ├── Action Keyword Router (e.g. `g` Google, `w` Wikipedia) │
│  ├── Native C# In-Process Host (`IPlugin`, `IContextMenu`)  │
│  └── Out-of-Process JSON-RPC Engine (Python / Node / Exec)  │
│                                                             │
│  Data & Indexing Integration Subsystem                      │
│  ├── Everything Search IPC Bridge (`Everything64.dll`)      │
│  ├── Windows Shell Programs & Control Panel Indexer         │
│  └── Settings Store (`%APPDATA%\FlowLauncher\Settings\`)   │
└─────────────────────────────────────────────────────────────┘
```

---

## Operational Capabilities & Agent Directives

1. **Python JSON-RPC Plugin Development**: Author production-grade Flow Launcher Python plugins communicating over standard I/O, parsing the incoming JSON payload (`query` method), and emitting formatted result arrays.
2. **C# .NET Plugin Development**: Build compiled `.dll` plugins implementing `IPlugin`, `IContextMenu`, and `ISettingProvider` for maximum execution speed.
3. **Plugin Manifest (`plugin.json`) Engineering**: Configure action keywords, execution file paths, dependencies, and metadata descriptors.
4. **Hotkey Conflict & Everything Integration Triage**: Resolve hotkey collisions (*PowerToys Run vs Flow Launcher on `Alt + Space`*) and repair IPC connectivity to the Everything search daemon.

---

## Production Python Code: Complete Flow Launcher Python Plugin (`main.py` + `plugin.json`)

### 1. `plugin.json` (Plugin Metadata Manifest)
Save in `%APPDATA%\FlowLauncher\Plugins\SystemDiagnostics\plugin.json`:

```json
{
  "ID": "6A9E4D2B-8C1F-4B5A-9E3D-7F2A1C4E8B90",
  "ActionKeyword": "sys",
  "Name": "System Diagnostics",
  "Description": "Displays live CPU, RAM, and Disk telemetry directly in Flow Launcher.",
  "Author": "AI Systems Engineering Team",
  "Version": "1.0.0",
  "Language": "python",
  "Website": "https://github.com/Flow-Launcher/Flow.Launcher",
  "ExecuteFileName": "main.py",
  "IcoPath": "icon.png"
}
```

### 2. `main.py` (JSON-RPC Protocol Implementation)
Save in `%APPDATA%\FlowLauncher\Plugins\SystemDiagnostics\main.py` (requires `pip install psutil`):

```python
"""
Flow Launcher Python Plugin: System Diagnostics
Implements standard Flow Launcher JSON-RPC stdin/stdout protocol to stream system metrics.
"""

import sys
import json
import psutil

class SystemDiagnosticsPlugin:
    def __init__(self):
        # Read incoming JSON-RPC request from Flow Launcher via stdin
        raw_input = sys.stdin.read()
        if not raw_input.strip():
            return

        try:
            request = json.loads(raw_input)
            method = request.get("method")
            parameters = request.get("parameters", [])

            if method == "query":
                query_text = parameters[0] if parameters else ""
                self.query(query_text)
            elif method == "open_task_manager":
                self.open_task_manager()

        except Exception as e:
            self.send_error(str(e))

    def query(self, query_text: str):
        # Query Live System Metrics via psutil
        cpu_percent = psutil.cpu_percent(interval=None)
        mem = psutil.virtual_memory()
        disk = psutil.disk_usage("C:\\")

        results = [
            {
                "Title": f"CPU Utilization: {cpu_percent}%",
                "SubTitle": f"{psutil.cpu_count(logical=True)} Logical Cores | Click to open Task Manager",
                "IcoPath": "icon.png",
                "JsonRPCAction": {
                    "method": "open_task_manager",
                    "parameters": [],
                    "dontHideAfterAction": False
                }
            },
            {
                "Title": f"RAM Load: {mem.percent}% ({mem.used / (1024**3):.1f} GB / {mem.total / (1024**3):.1f} GB)",
                "SubTitle": f"Available Memory: {mem.available / (1024**3):.1f} GB",
                "IcoPath": "icon.png"
            },
            {
                "Title": f"C: Drive Space: {disk.percent}% Used ({disk.free / (1024**3):.1f} GB Free)",
                "SubTitle": f"Total Capacity: {disk.total / (1024**3):.1f} GB",
                "IcoPath": "icon.png"
            }
        ]

        # Send JSON-RPC response back to Flow Launcher via stdout
        output = {"result": results}
        print(json.dumps(output))

    def open_task_manager(self):
        import subprocess
        subprocess.Popen("taskmgr.exe")

    def send_error(self, err_msg: str):
        output = {
            "result": [
                {
                    "Title": "Plugin Error Occurred",
                    "SubTitle": err_msg,
                    "IcoPath": "icon.png"
                }
            ]
        }
        print(json.dumps(output))

if __name__ == "__main__":
    SystemDiagnosticsPlugin()
```

---

## Technical Troubleshooting Matrix

| Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
| :--- | :--- | :--- |
| **Python Plugins Fail to Execute Silently** | Flow Launcher cannot resolve Python path or `python.exe` is not in system environment. | In Flow Launcher Settings $\rightarrow$ **Plugin Store** $\rightarrow$ **Python Settings**, specify absolute path to `python.exe`. |
| **Hotkey `Alt + Space` Does Not Trigger Launcher** | Conflict with Windows PowerToys Run, Discord overlay, or GeForce Experience. | In Flow Launcher Settings $\rightarrow$ **General**, assign a new hotkey combination (e.g. `Ctrl + Space` or `Alt + D`). |
| **Everything Search Returns "Everything is not running"** | `Everything.exe` background process or service is stopped. | Start Everything service: `Everything.exe -svc-start` and verify Everything plugin is enabled in Flow Settings. |
| **Flow Launcher Crashes on Startup** | Corrupted `Settings.json` file following an ungraceful shutdown. | Restore backup settings or delete corrupted `%APPDATA%\FlowLauncher\Settings\Settings.json`. |

---

## Command Line Syntax & Flow Launcher Ingress

```bash
# 1. Launch Flow Launcher GUI
"%LOCALAPPDATA%\FlowLauncher\Flow.Launcher.exe"

# 2. Trigger Search Query via Command Line
"%LOCALAPPDATA%\FlowLauncher\Flow.Launcher.exe" --query "sys"

# 3. Query Flow Launcher Process via PowerShell
Get-Process -Name "Flow.Launcher"
```

### Essential File Locations
- **Installed Plugins**: `%APPDATA%\FlowLauncher\Plugins\`
- **Application Settings**: `%APPDATA%\FlowLauncher\Settings\Settings.json`
- **Plugin Data Store**: `%APPDATA%\FlowLauncher\Settings\Plugins\`

---

## Agent Operational Directive
> **MANDATORY**: When developing Flow Launcher Python plugins, always emit responses as valid JSON strings to stdout (`json.dumps({"result": [...]})`) without any extraneous debug print statements that would corrupt the JSON-RPC pipe.

Files in this skill

  • SKILL.md8.9 KB
  • gemini.md7.3 KB
  • gpt.md7.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.