UNPKG

major-ai-skills

Version:

Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.

148 lines (117 loc) 7.86 kB
--- title: "Flow Launcher Extensible Productivity AI Skill Guide (GPT & Codex)" description: "Comprehensive operational skill specification for OpenAI GPT and Codex to automate, script, troubleshoot, and optimize Flow Launcher, C# Plugin API (IPlugin), Python JSON-RPC frameworks, and automated plugin deployments." category: "Productivity Application & File Launcher" tags: ["flow-launcher", "csharp-iplugin", "flow-plugin-dev", "jsonrpc-protocol", "gpt-codex", "windows-productivity-dev"] --- # Flow Launcher Extensible Productivity AI Skill Guide (GPT & Codex) ## Overview & Engine Architecture Flow Launcher provides a powerful extensibility framework for developers through the **Native C# Plugin API (`Flow.Launcher.Plugin.IPlugin`)** and the **Out-of-Process JSON-RPC Engine (Python, Node.js, C++)**. GPT/Codex acts as a Principal Windows Software Engineer and Flow Launcher Plugin Developer, delivering **high-performance compiled C# plugins**, **modular Python JSON-RPC adapters**, **context menu action extensions (`IContextMenu`)**, and **automated plugin packaging pipelines**. ### Developer Architecture & Plugin API Stack ``` ┌─────────────────────────────────────────────────────────────┐ Flow Launcher Developer Platform Native C# .NET In-Process API (`Flow.Launcher.Plugin`) ├── `IPlugin` Interface (`Init(PluginInitContext)`, `Query`)│ ├── `IContextMenu` Interface (`LoadContextMenus(Result)`) └── `Result` Model (`Title`, `SubTitle`, `Action`, `Icon`) JSON-RPC Standard I/O Subsystem ├── Python / Node.js Process Spawner (stdin/stdout Pipes) ├── JSON Request/Response Serialization Engine └── `JsonRPCAction` Dynamic Callback Dispatcher └─────────────────────────────────────────────────────────────┘ ``` --- ## Operational Capabilities & Agent Directives 1. **Native C# Plugin Development**: Author compiled C# plugins implementing `IPlugin` and `IAsyncPlugin` targeting .NET 8, executing non-blocking asynchronous queries with zero memory allocations. 2. **Python JSON-RPC Adapter Engineering**: Construct clean Python plugin wrappers handling the JSON-RPC lifecycle, parsing `query` parameters, and emitting `Result` JSON objects. 3. **Context Menu Actions & Settings Integration**: Implement `IContextMenu` to provide secondary actions (*e.g. Copy to Clipboard, Open Containing Folder, Execute as Administrator*). 4. **Automated Plugin Packaging**: Script automated build routines producing compliant `.zip` release packages containing `plugin.json`, compiled binaries/scripts, and assets. --- ## Production C# Code: High-Performance Flow Launcher Native C# Plugin (`IPlugin`) Save this file as `Main.cs` in a C# Class Library project referencing `Flow.Launcher.Plugin.dll`: ```csharp // ============================================================================== // Flow Launcher Native C# Plugin: GitHub Repository Quick-Search // Implements IPlugin and IContextMenu for instant search result rendering. // ============================================================================== using System; using System.Collections.Generic; using System.Diagnostics; using System.Windows; using Flow.Launcher.Plugin; namespace Flow.Launcher.Plugin.GitHubQuickSearch { public class Main : IPlugin, IContextMenu { private PluginInitContext _context; public void Init(PluginInitContext context) { _context = context; } public List<Result> Query(Query query) { var results = new List<Result>(); string searchTerm = query.Search.Trim(); if (string.IsNullOrEmpty(searchTerm)) { results.Add(new Result { Title = "Search GitHub Repositories", SubTitle = "Type your query (e.g. 'gh flow launcher')", IcoPath = "Images\\github.png", Action = _ => { Process.Start(new ProcessStartInfo("https://github.com") { UseShellExecute = true }); return true; } }); return results; } // Generate GitHub Search Action string targetUrl = $"https://github.com/search?q={Uri.EscapeDataString(searchTerm)}"; results.Add(new Result { Title = $"Search GitHub for '{searchTerm}'", SubTitle = $"Open in default browser: {targetUrl}", IcoPath = "Images\\github.png", Action = _ => { Process.Start(new ProcessStartInfo(targetUrl) { UseShellExecute = true }); return true; } }); return results; } public List<Result> LoadContextMenus(Result selectedResult) { var contextMenus = new List<Result>(); contextMenus.Add(new Result { Title = "Copy Search URL to Clipboard", SubTitle = "Copies the full GitHub query URL to Windows clipboard", IcoPath = "Images\\copy.png", Action = _ => { Clipboard.SetText(selectedResult.SubTitle.Replace("Open in default browser: ", "")); _context.API.ShowMsg("Copied!", "GitHub Search URL copied to clipboard."); return true; } }); return contextMenus; } } } ``` --- ## Technical Troubleshooting Matrix | Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway | | :--- | :--- | :--- | | **`JsonReaderException` on Plugin Execution** | Python plugin emitted debug `print()` statements to stdout, corrupting the JSON-RPC stream. | Redirect debug logs to `sys.stderr` or a log file: `print("debug", file=sys.stderr)`. | | **C# Plugin Fails with `BadImageFormatException`** | Plugin compiled for wrong architecture (e.g. x86 instead of x64 / AnyCPU). | Configure build target to `x64` or `AnyCPU` targeting .NET 8.0 Windows Desktop. | | **`plugin.json` Validation Error: `Missing ID`** | Manifest missing a valid unique GUID in the `"ID"` field. | Generate a new GUID (`[guid]::NewGuid()`) and populate the `"ID"` property. | | **Action Keyword Not Triggering Plugin** | `"ActionKeyword"` in `plugin.json` conflicts with another plugin or was overridden in user settings. | In Flow Settings $\rightarrow$ Plugins, verify the Action Keyword matches the expected trigger. | --- ## Command Line Syntax & Batch Processing ```bash # Test Flow Launcher Plugin via Command Line Query "%LOCALAPPDATA%\FlowLauncher\Flow.Launcher.exe" --query "gh react" # Package Plugin Directory into .zip Release powershell -Command "Compress-Archive -Path '.\SystemDiagnostics\*' -DestinationPath '.\SystemDiagnostics.zip' -Force" ``` ### Essential File Locations - **Plugin SDK NuGet**: `Flow.Launcher.Plugin` - **Installed Plugins**: `%APPDATA%\FlowLauncher\Plugins\` --- ## Agent Operational Directive > **MANDATORY**: In Flow Launcher Python plugins, never output raw debug text to `stdout`. All logging must be redirected to `sys.stderr` to prevent JSON-RPC serialization corruption.