{"id":"a47fb007-a3e4-46c6-90cb-c05f6343b7f3","entityType":"agent","slug":"clawhub-sfkislev-flue","name":"Flue - Control Desktop Software","canonicalUrl":"https://www.xpersona.co/agent/clawhub-sfkislev-flue","canonicalPath":"/agent/clawhub-sfkislev-flue","generatedAt":"2026-10-09T16:49:16.727Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":null},"description":"Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 5.9K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17f1pzxf42hey94vjhyd81z1n85r39x:flue","sourceUrl":"https://clawhub.ai/sfkislev/flue","homepage":"https://clawhub.ai/sfkislev/skills/flue","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/sfkislev/flue","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/sfkislev/skills/flue","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":75,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Flue - Control Desktop Software technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":null},"stars":null,"forks":null,"downloads":5901,"packageName":null,"latestVersion":"1.0.18","tractionLabel":"5.9K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T03:40:24.310Z","lastCrawledAt":"2026-10-09T03:40:24.310Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T03:40:24.310Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.18","createdAt":"2026-05-09T23:09:09.461Z","changelog":"- Clarified that Flue is specifically for user-directed automation within a requested application, and should not be used for unattended or autonomous background changes. - Added reminders that Flue actions are limited to tasks the user has explicitly requested in a specific application. - No code or file changes; documentation improvements only.","fileCount":3,"zipByteSize":4399},{"version":"1.0.17","createdAt":"2026-05-09T22:48:31.227Z","changelog":"Description update","fileCount":2,"zipByteSize":3023},{"version":"1.0.16","createdAt":"2026-05-09T22:33:51.014Z","changelog":"- Expanded the description to clearly list supported applications, including Photoshop, Illustrator, After Effects, Premiere, 3ds Max, Blender, Unity, Houdini, and Microsoft Office. - Added a new \"Use Cases\" section outlining practical scenarios for Flue across creative and technical workflows. - Updated summary to clarify Flue's role in enabling CLI automation for major desktop software. - Minor clarifications and rewording throughout for improved readability and accuracy.","fileCount":2,"zipByteSize":3032},{"version":"1.0.15","createdAt":"2026-05-06T14:52:10.255Z","changelog":"No code or file changes detected; documentation update only. - Rewrote and expanded SKILL.md for clarity and onboarding. - Added usage examples and clarified project purpose and workflow. - Improved explanations on when and how to use Flue. - Added safety, provenance, and installation instructions for new users. - Updated descriptions of supported applications and adapter mechanisms.","fileCount":2,"zipByteSize":2769},{"version":"1.0.14","createdAt":"2026-05-03T09:06:40.341Z","changelog":"- Added a YAML frontmatter block with name and description to SKILL.md for improved metadata. - No code changes; documentation only.","fileCount":2,"zipByteSize":2188},{"version":"1.0.13","createdAt":"2026-05-03T09:03:03.353Z","changelog":"Significant documentation and reference file removals; security and workflow clarifications. - Removed 30 documentation and reference files, including usage, setup, known issues, and adapter API docs. - Quick Start and debugging instructions revised for clarity, emphasizing new command usage and safety practices. - Installer, upgrade, and troubleshooting instructions now require explicit human approval. - Added a new section on security, provenance, and safe installation practices. - Language throughout updated to discourage autonomous local fixes or persistent changes.","fileCount":2,"zipByteSize":2128},{"version":"1.0.12","createdAt":"2026-05-03T09:01:56.065Z","changelog":"- Major update: Added 30 new files including detailed adapter documentation for 13 supported apps, setup and known issues guides, and shared contract references. - SKILL.md significantly revised for clarity, completeness, and usage instructions, including improved adapter list, usage workflow, rules, and troubleshooting steps. - Introduced step-by-step quick start and precise command recommendations for Windows and macOS/Linux. - Added guidelines for local debugging and environment-specific troubleshooting. - Now includes reference to new documentation files: coexistence, bridge contract, setup, and known issues.","fileCount":32,"zipByteSize":718726},{"version":"1.0.11","createdAt":"2026-05-02T19:20:40.025Z","changelog":"Version 1.0.11 of flue - No file changes detected in this release. - Behavior and documentation remain unchanged from the previous version.","fileCount":2,"zipByteSize":2126}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17f1pzxf42hey94vjhyd81z1n85r39x:flue","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17f1pzxf42hey94vjhyd81z1n85r39x:flue` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/sfkislev/flue before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T16:49:16.724Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-sfkislev-flue/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":null},"readme":"Skill: Flue - Control Desktop Software\n\nOwner: sfkislev\n\nSummary: Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office.\n\nTags: 3ds-max:1.0.0, adapter:1.0.0, adobe:1.0.0, after-effects:1.0.0, agents:1.0.0, applescript:1.0.0, audition:1.0.0, autodesk:1.0.0, automation:1.0.0, blender:1.0.0, bridge:1.0.0, claude-code:1.0.0, cli:1.0.0, cline:1.0.0, codex:1.0.0, com:1.0.0, control:1.0.0, copilot:1.0.0, creative:1.0.0, creative-software:1.0.0, cursor:1.0.0, dcc:1.0.0, design:1.0.0, desktop:1.0.0, excel:1.0.0, framework:1.0.0, game-engine:1.0.0, gemini:1.0.0, harness:1.0.0, houdini:1.0.0, illustrator:1.0.0, indesign:1.0.0, latest:1.0.18, local:1.0.0, mcp-alternative:1.0.0, microsoft-office:1.0.0, opencode:1.0.0, photoshop:1.0.0, plugin:1.0.0, powerpoint:1.0.0, premiere:1.0.0, python:1.0.0, scripting:1.0.0, shell:1.0.0, studio:1.0.0, unity:1.0.0, vfx:1.0.0, word:1.0.0, workflow:1.0.0\n\nVersion history:\n\nv1.0.18 | 2026-05-09T23:09:09.461Z | user\n\n- Clarified that Flue is specifically for user-directed automation within a requested application, and should not be used for unattended or autonomous background changes.\n- Added reminders that Flue actions are limited to tasks the user has explicitly requested in a specific application.\n- No code or file changes; documentation improvements only.\n\nv1.0.17 | 2026-05-09T22:48:31.227Z | user\n\nDescription update\n\nv1.0.16 | 2026-05-09T22:33:51.014Z | user\n\n- Expanded the description to clearly list supported applications, including Photoshop, Illustrator, After Effects, Premiere, 3ds Max, Blender, Unity, Houdini, and Microsoft Office.\n- Added a new \"Use Cases\" section outlining practical scenarios for Flue across creative and technical workflows.\n- Updated summary to clarify Flue's role in enabling CLI automation for major desktop software.\n- Minor clarifications and rewording throughout for improved readability and accuracy.\n\nv1.0.15 | 2026-05-06T14:52:10.255Z | user\n\nNo code or file changes detected; documentation update only.\n\n- Rewrote and expanded SKILL.md for clarity and onboarding.\n- Added usage examples and clarified project purpose and workflow.\n- Improved explanations on when and how to use Flue.\n- Added safety, provenance, and installation instructions for new users.\n- Updated descriptions of supported applications and adapter mechanisms.\n\nv1.0.14 | 2026-05-03T09:06:40.341Z | user\n\n- Added a YAML frontmatter block with name and description to SKILL.md for improved metadata.\n- No code changes; documentation only.\n\nv1.0.13 | 2026-05-03T09:03:03.353Z | user\n\nSignificant documentation and reference file removals; security and workflow clarifications.\n\n- Removed 30 documentation and reference files, including usage, setup, known issues, and adapter API docs.\n- Quick Start and debugging instructions revised for clarity, emphasizing new command usage and safety practices.\n- Installer, upgrade, and troubleshooting instructions now require explicit human approval.\n- Added a new section on security, provenance, and safe installation practices. \n- Language throughout updated to discourage autonomous local fixes or persistent changes.\n\nv1.0.12 | 2026-05-03T09:01:56.065Z | auto\n\n- Major update: Added 30 new files including detailed adapter documentation for 13 supported apps, setup and known issues guides, and shared contract references.\n- SKILL.md significantly revised for clarity, completeness, and usage instructions, including improved adapter list, usage workflow, rules, and troubleshooting steps.\n- Introduced step-by-step quick start and precise command recommendations for Windows and macOS/Linux.\n- Added guidelines for local debugging and environment-specific troubleshooting.\n- Now includes reference to new documentation files: coexistence, bridge contract, setup, and known issues.\n\nv1.0.11 | 2026-05-02T19:20:40.025Z | user\n\nVersion 1.0.11 of flue\n\n- No file changes detected in this release.\n- Behavior and documentation remain unchanged from the previous version.\n\nv1.0.10 | 2026-05-02T19:17:51.600Z | user\n\n- SKILL.md reformatted to use metadata (YAML front matter) for name and description.\n- Section headings and bullet points replaced with plain text and lists for improved readability and brevity.\n- No functional or behavioral changes; documentation clarity improvements only.\n\nv1.0.9 | 2026-05-02T06:43:57.025Z | user\n\nVersion 1.0.9 of the \"flue\" skill\n\n- No file changes detected in this release.\n- Functionality and documentation remain unchanged from the previous version.\n- updated display name\n\nv1.0.8 | 2026-04-30T12:08:27.813Z | user\n\n- Updated Quick Start instructions: now recommend reviewing the GitHub repository if Flue is not found, instead of attempting installation.\n- Maintains all previous usage and security guidelines.\n- No other changes to functionality or rules.\n\nv1.0.7 | 2026-04-30T12:01:47.107Z | user\n\n- Updated Quick Start instructions to clarify that Flue should not be installed or set up without explicit human approval.\n- Strengthened guidance in General Rules of Use: do not make persistent changes, install components, dismiss modals, or create compatibility fixes unless explicitly asked by the human.\n- Revised Security & Provenance: emphasize reviewing the exact Flue release, preferring pinned versions in isolated environments, and requiring explicit approval before any install or setup actions.\n- Improved clarity and boundaries on agent actions for safer human-in-the-loop operation.\n\nv1.0.6 | 2026-04-30T11:53:08.487Z | user\n\n- Updated Quick Start instructions: recommend `pip install flue && flue setup` for installation, and emphasize obtaining human consent before installing.\n- Removed detailed pre-installation review steps for a simpler onboarding process.\n- No changes to adapters, rules of use, or debugging instructions.\n- No code or functionality changes detected.\n\nv1.0.5 | 2026-04-30T11:44:23.868Z | user\n\n- Updated install instructions to recommend reviewing the exact release and installing a pinned version of Flue in an isolated environment.\n- Installation guidance now directs users to use explicit version pinning, e.g., py -m pip install flue==<reviewed-version>.\n- Emphasized the importance of reviewing Flue on GitHub or PyPI before installation.\n- Minor clarifications and consistency improvements to introductory and quick start sections.\n\nv1.0.4 | 2026-04-30T11:39:10.641Z | user\n\n- Removed 25 files related to documentation, scripts, adapters, and project setup.\n- Updated setup instructions: now ask for permission to run `pip install flue && flue setup` if Flue is missing.\n- Clarified that Flue’s additional resources are available via the pip package, not as local files.\n- Changed guidance on local compatibility fixes: small, persistent fixes are now recommended when needed.\n- Added a new “Security & Provenance” section with links to review the package source and PyPI.\n- Improved instructions and rules to align with pip-based installation and usage.\n\nv1.0.3 | 2026-04-30T11:26:03.581Z | auto\n\nInitial public release with major documentation and codebase:\n\n- Added 25 new files, including adapters for 13 major desktop apps, documentation, and setup scripts.\n- Updated core skill documentation (SKILL.md) with clarified setup and collaboration rules.\n- Introduced new setup, debugging, and security instructions for safe usage.\n- Provided a modular structure for adapters and reference docs to support a wide range of app automations.\n\nv1.0.2 | 2026-04-29T12:43:29.877Z | user\n\nVersion 1.0.2\n\n- Added a new section, \"Security & Provenance,\" clarifying Flue's open-source MIT license and providing links to its GitHub and PyPI pages.\n- Emphasized that installation with `pip install flue` should only be performed with human permission.\n- No file changes detected beyond documentation update.\n\nv1.0.1 | 2026-04-29T12:38:02.013Z | user\n\nVersion 1.0.1\n\n- Minor documentation update: clarified that `pip install flue && flue setup` should be run with human permission, and reworded the intro for conciseness.\n- No functional or file changes; usage instructions and structure remain the same.\n\nv1.0.0 | 2026-04-29T12:34:16.941Z | user\n\nInitial release of Flue – a bridge for controlling professional desktop software via shell scripts.\n\n- Supports scripting automation for apps like Photoshop, Premiere, Blender, Unity, and more.\n- Provides setup instructions and adapter documentation for each supported application.\n- Details safe usage guidelines, workspace behavior, and script execution methods.\n- Includes troubleshooting commands for versioning, diagnostics, and modal dialog handling.\n- Designed for collaborative workflows where automated scripts assist rather than fully control.\n\nArchive index:\n\nArchive v1.0.18: 3 files, 4399 bytes\n\nFiles: skill-card.md (2267b), SKILL.md (6234b), _meta.json (124b)\n\nFile v1.0.18:SKILL.md\n\n---\r\nname: flue\r\ndescription: Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office. \r\n---\r\n\r\n## Purpose\r\nFlue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.\r\n\r\nFlue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.\r\n\r\n> agent shell -> Flue bridge -> app scripting runtime -> JSON result\r\n\r\nThis file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up. \r\n\r\n## When to use Flue\r\nReach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit  files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. \r\nFlue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.\r\n\r\n## How it works\r\nFlue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript, `bpy`, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out.\r\nThe project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.\r\n\r\n## Flue in technical terms\r\nFlue is a shell-to-application bridge. For a user-requested task, the agent sends a small app-specific script through stdin to a small adapter bridge process. That bridge forwards it into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.\r\n\r\nDepending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge, `bpy`, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface for bounded inspection and edits in the app the user explicitly asked to control, and normalizes the result back into a shell-friendly JSON contract.\r\n\r\n```text\r\nagent script\r\n  -> stdin\r\n  -> flue bridge command\r\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\r\n  -> app executes code\r\n  -> JSON result on stdout\r\n```\r\nFor instance:\r\n\r\n```text\r\n@'\r\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\r\n\r\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\r\n    var layer = doc.artLayers.add();\r\n    layer.name = name;\r\n    var color = new SolidColor();\r\n    color.rgb.red = r;\r\n    color.rgb.green = g;\r\n    color.rgb.blue = b;\r\n    app.foregroundColor = color;\r\n    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);\r\n    doc.selection.fill(app.foregroundColor);\r\n    doc.selection.deselect();\r\n}\r\n\r\nfillSelection(\"Red Triangle\", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);\r\nfillSelection(\"Blue Square\", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);\r\nfillSelection(\"Yellow Circle\", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);\r\n\r\nJSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });\r\n'@ |\r\n  python adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\nIn that case, the shell sends a small Photoshop script through stdin, the Photoshop bridge passes it into Photoshop's scripting environment, Photoshop creates a red triangle, a blue square, and a yellow circle, and Flue returns JSON describing the result or the error you can iterate on.\r\n\r\n## Use Cases\r\nSince Flue lets agents assist humans with software, it can be useful in many contexts. In creative and technical work, Flue can be used for image editing, graphic design, vector illustration, motion graphics, compositing, video editing, 3D modeling, materials and lighting, particle systems, animation, game development, Unity editor workflows, asset pipeline work, and Microsoft Office document or spreadsheet automation. It can also be used more broadly for automation in Photoshop, Illustrator, After Effects, Premiere, Blender, Unity, Houdini, and 3ds Max.\r\n \r\n## How to use Flue\r\n- Treat the human as the driver: you are a copilot. Do not perform destructive actions unless explicitly requested.\r\n- Prefer small, inspectable steps over large mutations.\r\n- Be skeptical of pretraining. Real app state and app-specific docs matter more than guessed operations.\r\n- Expect version quirks, blocked dialogs, host-runtime limits, and adapter-specific setup steps. You can handle these. \r\n- Flue is for user-directed automation in a specific application, not for unattended background execution or autonomous changes outside the requested task. \r\n\r\n## If Flue Is Not Installed\r\nIf Flue appears relevant but is not available on the machine, tell your human as much. Inspect the project at `https://github.com/SFKislev/flue` (PyPI: `https://pypi.org/project/flue`). Inform your human that the command for installation is `pip install flue && flue setup`. Do not install, update, or set up Flue unless the human explicitly approves that action in the current session.\r\n\r\n## After Installation\r\nOnce Flue is installed and set up, rely on the installed Flue skill and local docs as the operational source of truth.\r\n\r\nAfter installation, expect Flue to provide App-specific instructions for supported adapters, a consistent bridge workflow for inspection and bounded edits, and reference documentation. \r\n\r\n## Safety And Provenance\r\nFlue is an MIT-licensed Python package you should inspect before using. \r\nBecause Flue can act inside professional desktop software, apply a higher bar than with ordinary shell-only tools.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1778368149461\n}\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nLet agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[sfkislev](https://clawhub.ai/user/sfkislev)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use Flue to let an agent inspect live state and make bounded, user-directed edits inside supported desktop applications. It is intended for creative, technical, game-development, and office-document workflows where the user has explicitly requested work in a specific application.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Flue can execute user-provided scripts inside professional desktop applications, so unintended or destructive changes could affect open documents, scenes, or projects.\n\nMitigation: Use Flue only for explicit, user-requested tasks in a specific application, prefer small inspectable steps, and avoid destructive actions unless the user approves them.\n\nRisk: Installation and setup add desktop application integrations on the user's machine.\n\nMitigation: Inspect the linked Flue project first, pin a reviewed version or use isolation when appropriate, and run installation or setup only after explicit current-session approval.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/sfkislev/skills/flue)\n- [Flue GitHub Project](https://github.com/SFKislev/flue)\n- [Flue on PyPI](https://pypi.org/project/flue)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Code, Configuration]\n\n**Output Format:** [Markdown guidance with inline shell commands and code examples; bridge results are structured JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires explicit user approval before installation, setup, or destructive desktop-application actions.]\n\n## Skill Version(s):\n\n1.0.18 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.17: 2 files, 3023 bytes\n\nFiles: SKILL.md (5950b), _meta.json (124b)\n\nFile v1.0.17:SKILL.md\n\n---\r\nname: flue\r\ndescription: Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office. \r\n---\r\n\r\n## Purpose\r\nFlue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.\r\n\r\nFlue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.\r\n\r\n> agent shell -> Flue bridge -> app scripting runtime -> JSON result\r\n\r\nThis file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up. \r\n\r\n## When to use Flue\r\nReach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit  files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. \r\nFlue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.\r\n\r\n## How it works\r\nFlue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript, `bpy`, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out.\r\nThe project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.\r\n\r\n## Flue in technical terms\r\nFlue is a shell-to-application bridge. The agent sends code through stdin to a small adapter bridge process. That bridge forwards the code into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.\r\n\r\nDepending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge, `bpy`, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface and normalizes the result back into a shell-friendly JSON contract.\r\n\r\n```text\r\nagent script\r\n  -> stdin\r\n  -> flue bridge command\r\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\r\n  -> app executes code\r\n  -> JSON result on stdout\r\n```\r\nFor instance:\r\n\r\n```text\r\n@'\r\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\r\n\r\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\r\n    var layer = doc.artLayers.add();\r\n    layer.name = name;\r\n    var color = new SolidColor();\r\n    color.rgb.red = r;\r\n    color.rgb.green = g;\r\n    color.rgb.blue = b;\r\n    app.foregroundColor = color;\r\n    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);\r\n    doc.selection.fill(app.foregroundColor);\r\n    doc.selection.deselect();\r\n}\r\n\r\nfillSelection(\"Red Triangle\", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);\r\nfillSelection(\"Blue Square\", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);\r\nfillSelection(\"Yellow Circle\", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);\r\n\r\nJSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });\r\n'@ |\r\n  python adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\nIn that case, the shell sends a small Photoshop script through stdin, the Photoshop bridge passes it into Photoshop's scripting environment, Photoshop creates a red triangle, a blue square, and a yellow circle, and Flue returns JSON describing the result or the error you can iterate on.\r\n\r\n## Use Cases\r\nSince Flue lets agents assist humans with software, it can be useful in many contexts. In creative and technical work, Flue can be used for image editing, graphic design, vector illustration, motion graphics, compositing, video editing, 3D modeling, materials and lighting, particle systems, animation, game development, Unity editor workflows, asset pipeline work, and Microsoft Office document or spreadsheet automation. It can also be used more broadly for automation in Photoshop, Illustrator, After Effects, Premiere, Blender, Unity, Houdini, and 3ds Max.\r\n \r\n## How to use Flue\r\n- Treat the human as the driver: you are a copilot. Do not perform destructive actions unless explicitly requested.\r\n- Prefer small, inspectable steps over large mutations.\r\n- Be skeptical of pretraining. Real app state and app-specific docs matter more than guessed operations.\r\n- Expect version quirks, blocked dialogs, host-runtime limits, and adapter-specific setup steps. You can handle these. \r\n\r\n## If Flue Is Not Installed\r\nIf Flue appears relevant but is not available on the machine, tell your human as much. Inspect the project at `https://github.com/SFKislev/flue` (PyPI: `https://pypi.org/project/flue`). Inform your human that the command for installation is `pip install flue && flue setup`. Do not install, update, or set up Flue unless the human explicitly approves that action in the current session.\r\n\r\n## After Installation\r\nOnce Flue is installed and set up, rely on the installed Flue skill and local docs as the operational source of truth.\r\n\r\nAfter installation, expect Flue to provide App-specific instructions for supported adapters, a consistent bridge workflow for inspection and bounded edits, and reference documentation. \r\n\r\n## Safety And Provenance\r\nFlue is an MIT-licensed Python package you should inspect before using. \r\nBecause Flue can act inside professional desktop software, apply a higher bar than with ordinary shell-only tools.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1778366911227\n}\n\nArchive v1.0.16: 2 files, 3032 bytes\n\nFiles: SKILL.md (5963b), _meta.json (124b)\n\nFile v1.0.16:SKILL.md\n\n---\r\nname: flue\r\ndescription: Let agents control software from the CLI, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3ds Max, Blender, Unity, Houdini, and Microsoft Office. \r\n---\r\n\r\n## Purpose\r\nFlue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.\r\n\r\nFlue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.\r\n\r\n> agent shell -> Flue bridge -> app scripting runtime -> JSON result\r\n\r\nThis file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up. \r\n\r\n## When to use Flue\r\nReach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit  files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. \r\nFlue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.\r\n\r\n## How it works\r\nFlue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript, `bpy`, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out.\r\nThe project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.\r\n\r\n## Flue in technical terms\r\nFlue is a shell-to-application bridge. The agent sends code through stdin to a small adapter bridge process. That bridge forwards the code into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.\r\n\r\nDepending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge, `bpy`, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface and normalizes the result back into a shell-friendly JSON contract.\r\n\r\n```text\r\nagent script\r\n  -> stdin\r\n  -> flue bridge command\r\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\r\n  -> app executes code\r\n  -> JSON result on stdout\r\n```\r\nFor instance:\r\n\r\n```text\r\n@'\r\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\r\n\r\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\r\n    var layer = doc.artLayers.add();\r\n    layer.name = name;\r\n    var color = new SolidColor();\r\n    color.rgb.red = r;\r\n    color.rgb.green = g;\r\n    color.rgb.blue = b;\r\n    app.foregroundColor = color;\r\n    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);\r\n    doc.selection.fill(app.foregroundColor);\r\n    doc.selection.deselect();\r\n}\r\n\r\nfillSelection(\"Red Triangle\", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);\r\nfillSelection(\"Blue Square\", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);\r\nfillSelection(\"Yellow Circle\", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);\r\n\r\nJSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });\r\n'@ |\r\n  python adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\nIn that case, the shell sends a small Photoshop script through stdin, the Photoshop bridge passes it into Photoshop's scripting environment, Photoshop creates a red triangle, a blue square, and a yellow circle, and Flue returns JSON describing the result or the error you can iterate on.\r\n\r\n## Use Cases\r\nSince Flue lets agents assist humans with software, it can be useful in many contexts. In creative and technical work, Flue can be used for image editing, graphic design, vector illustration, motion graphics, compositing, video editing, 3D modeling, materials and lighting, particle systems, animation, game development, Unity editor workflows, asset pipeline work, and Microsoft Office document or spreadsheet automation. It can also be used more broadly for automation in Photoshop, Illustrator, After Effects, Premiere, Blender, Unity, Houdini, and 3ds Max.\r\n \r\n## How to use Flue\r\n- Treat the human as the driver: you are a copilot. Do not perform destructive actions unless explicitly requested.\r\n- Prefer small, inspectable steps over large mutations.\r\n- Be skeptical of pretraining. Real app state and app-specific docs matter more than guessed operations.\r\n- Expect version quirks, blocked dialogs, host-runtime limits, and adapter-specific setup steps. You can handle these. \r\n\r\n## If Flue Is Not Installed\r\nIf Flue appears relevant but is not available on the machine, tell your human as much. Inspect the project at `https://github.com/SFKislev/flue` (PyPI: `https://pypi.org/project/flue`). Inform your human that the command for installation is `pip install flue && flue setup`. Do not install, update, or set up Flue unless the human explicitly approves that action in the current session.\r\n\r\n## After Installation\r\nOnce Flue is installed and set up, rely on the installed Flue skill and local docs as the operational source of truth.\r\n\r\nAfter installation, expect Flue to provide App-specific instructions for supported adapters, a consistent bridge workflow for inspection and bounded edits, and reference documentation. \r\n\r\n## Safety And Provenance\r\nFlue is an MIT-licensed Python package you should inspect before using. \r\nBecause Flue can act inside professional desktop software, apply a higher bar than with ordinary shell-only tools.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1778366031014\n}\n\nArchive v1.0.15: 2 files, 2769 bytes\n\nFiles: SKILL.md (5235b), _meta.json (124b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: flue\ndescription: Let agents control many desktop software directly from the cli, with one pip install, and no MCP servers.\n---\n\n## Purpose\nFlue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.\n\nFlue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.\n\n> agent shell -> Flue bridge -> app scripting runtime -> JSON result\n\nThis file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up. \n\n## When to use Flue\nReach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit  files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. \nFlue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.\n\n## How it works\nFlue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript, `bpy`, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out.\nThe project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.\n\n## Flue in technical terms\nFlue is a shell-to-application bridge. The agent sends code through stdin to a small adapter bridge process. That bridge forwards the code into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.\n\nDepending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge, `bpy`, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface and normalizes the result back into a shell-friendly JSON contract.\n\n```text\nagent script\n  -> stdin\n  -> flue bridge command\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\n  -> app executes code\n  -> JSON result on stdout\n```\nFor instance:\n\n```text\n@'\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\n\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\n    var layer = doc.artLayers.add();\n    layer.name = name;\n    var color = new SolidColor();\n    color.rgb.red = r;\n    color.rgb.green = g;\n    color.rgb.blue = b;\n    app.foregroundColor = color;\n    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);\n    doc.selection.fill(app.foregroundColor);\n    doc.selection.deselect();\n}\n\nfillSelection(\"Red Triangle\", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);\nfillSelection(\"Blue Square\", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);\nfillSelection(\"Yellow Circle\", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);\n\nJSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });\n'@ |\n  python adapters/photoshop_adapter/photoshop_bridge.py --stdin\n```\n\nIn that case, the shell sends a small Photoshop script through stdin, the Photoshop bridge passes it into Photoshop's scripting environment, Photoshop creates a red triangle, a blue square, and a yellow circle, and Flue returns JSON describing the result or the error you can iterate on.\n\n## How to use Flue\n- Treat the human as the driver: you are a copilot. Do not perform destructive actions unless explicitly requested.\n- Prefer small, inspectable steps over large mutations.\n- Be skeptical of pretraining. Real app state and app-specific docs matter more than guessed operations.\n- Expect version quirks, blocked dialogs, host-runtime limits, and adapter-specific setup steps. You can handle these. \n\n## If Flue Is Not Installed\nIf Flue appears relevant but is not available on the machine, tell your human as much. Inspect the project at `https://github.com/SFKislev/flue` (PyPI: `https://pypi.org/project/flue`). Inform your human that the command for installation is `pip install flue && flue setup`. Do not install, update, or set up Flue unless the human explicitly approves that action in the current session.\n\n## After Installation\nOnce Flue is installed and set up, rely on the installed Flue skill and local docs as the operational source of truth.\n\nAfter installation, expect Flue to provide App-specific instructions for supported adapters, a consistent bridge workflow for inspection and bounded edits, and reference documentation. \n\n## Safety And Provenance\nFlue is an MIT-licensed Python package you should inspect before using. \nBecause Flue can act inside professional desktop software, apply a higher bar than with ordinary shell-only tools.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1778079130255\n}\n\nArchive v1.0.14: 2 files, 2188 bytes\n\nFiles: SKILL.md (4105b), _meta.json (124b)\n\nFile v1.0.14:SKILL.md\n\n---\r\nname: flue\r\ndescription: Let agents control many desktop software directly from the cli, with one pip install, and no MCP servers.\r\n---\r\n\r\n## About\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell.\r\nFlue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app, and the app returns JSON.\r\n\r\n> agent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\nThis is the entrypoint to the Flue framework. \r\n\r\n## Available Adapters\r\n- `adapters/3dsmax/APP.md`\r\n- `adapters/after_effects/APP.md`\r\n- `adapters/audition/APP.md`\r\n- `adapters/blender/APP.md`\r\n- `adapters/excel/APP.md`\r\n- `adapters/houdini/APP.md`\r\n- `adapters/illustrator/APP.md`\r\n- `adapters/indesign/APP.md`\r\n- `adapters/photoshop/APP.md`\r\n- `adapters/powerpoint/APP.md`\r\n- `adapters/premiere/APP.md`\r\n- `adapters/unity/APP.md`\r\n- `adapters/word/APP.md`\r\n\r\n## Quick Start\r\n1. At the start of a Flue session, confirm Flue is available with `flue version`. If it is not found, stop and tell your human that Flue is not installed. Review the GitHub repo at https://github.com/SFKislev/flue to inform your human about the code. \r\n2. Read `adapters/<app>/APP.md` for the app you are about to use.\r\n3. Search `adapters/<app>/docs/api-index.txt` with `rg` for relevant symbols.\r\n4. Prefer `py -m flue.cli context <app>` on Windows, or `python3 -m flue.cli context <app>` on macOS/Linux, to inspect the live app state.\r\n5. Prefer `py -m flue.cli run <app> --stdin` on Windows, or `python3 -m flue.cli run <app> --stdin` on macOS/Linux, for one-off scripts.\r\n\r\n## General Rules of Use\r\n- You are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\n- Advise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\n- Bound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\n- All bridge scripts run from workspace root; accepts code through argv, `--stdin`, or `--file`; return JSON on stdout for success or failure.\r\n- Be skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\n- Flue was developed and tested against specific app and OS versions. Expect local quirks, version mismatches, and blocked automation paths. Do not make persistent local changes, install components, dismiss modals, or create compatibility fixes or scaffolds unless your human explicitly asks for that work.\r\n- Read these reference files if you don't have them in the session memory:\r\n- `shared/coexistence.md`\r\n- `shared/bridge-contract.md`\r\n- `docs/setup.md`\r\n- `docs/known-issues.md`\r\n\r\n## Debugging\r\n- Depending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\n- On Windows, `py -m flue.cli ...` is the reliable launcher; on macOS/Linux, use `python3 -m flue.cli ...`.\r\n- If those are unavailable, use the Python executable that installed Flue: `<python> -m flue.cli ...`.\r\n- Use `py -m flue.cli where` on Windows, or `python3 -m flue.cli where` on macOS/Linux, for launcher and install diagnostics.\r\n- If a Windows app is blocked by a modal, use `py -m flue.cli modal <app>` to inspect likely dialog windows and `py -m flue.cli modal <app> --dismiss` to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\n- Use bare `flue` only as a convenience command when PATH propagation is known to be working.\r\n\r\n## Security & Provenance\r\nFlue is an open-source MIT-licensed Python package. Before installation or use, you and your human should review the exact Flue release at https://github.com/SFKislev/flue and https://pypi.org/project/flue. Prefer a pinned version in an isolated environment. \r\n- Do not install, update, or set up Flue unless your human explicitly approves that action in the current session.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1777799200341\n}\n\nArchive v1.0.13: 2 files, 2128 bytes\n\nFiles: SKILL.md (3961b), _meta.json (124b)\n\nFile v1.0.13:SKILL.md\n\n## About\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell.\r\nFlue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app, and the app returns JSON.\r\n\r\n> agent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\nThis is the entrypoint to the Flue framework. \r\n\r\n## Available Adapters\r\n- `adapters/3dsmax/APP.md`\r\n- `adapters/after_effects/APP.md`\r\n- `adapters/audition/APP.md`\r\n- `adapters/blender/APP.md`\r\n- `adapters/excel/APP.md`\r\n- `adapters/houdini/APP.md`\r\n- `adapters/illustrator/APP.md`\r\n- `adapters/indesign/APP.md`\r\n- `adapters/photoshop/APP.md`\r\n- `adapters/powerpoint/APP.md`\r\n- `adapters/premiere/APP.md`\r\n- `adapters/unity/APP.md`\r\n- `adapters/word/APP.md`\r\n\r\n## Quick Start\r\n1. At the start of a Flue session, confirm Flue is available with `flue version`. If it is not found, stop and tell your human that Flue is not installed. Review the GitHub repo at https://github.com/SFKislev/flue to inform your human about the code. \r\n2. Read `adapters/<app>/APP.md` for the app you are about to use.\r\n3. Search `adapters/<app>/docs/api-index.txt` with `rg` for relevant symbols.\r\n4. Prefer `py -m flue.cli context <app>` on Windows, or `python3 -m flue.cli context <app>` on macOS/Linux, to inspect the live app state.\r\n5. Prefer `py -m flue.cli run <app> --stdin` on Windows, or `python3 -m flue.cli run <app> --stdin` on macOS/Linux, for one-off scripts.\r\n\r\n## General Rules of Use\r\n- You are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\n- Advise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\n- Bound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\n- All bridge scripts run from workspace root; accepts code through argv, `--stdin`, or `--file`; return JSON on stdout for success or failure.\r\n- Be skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\n- Flue was developed and tested against specific app and OS versions. Expect local quirks, version mismatches, and blocked automation paths. Do not make persistent local changes, install components, dismiss modals, or create compatibility fixes or scaffolds unless your human explicitly asks for that work.\r\n- Read these reference files if you don't have them in the session memory:\r\n- `shared/coexistence.md`\r\n- `shared/bridge-contract.md`\r\n- `docs/setup.md`\r\n- `docs/known-issues.md`\r\n\r\n## Debugging\r\n- Depending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\n- On Windows, `py -m flue.cli ...` is the reliable launcher; on macOS/Linux, use `python3 -m flue.cli ...`.\r\n- If those are unavailable, use the Python executable that installed Flue: `<python> -m flue.cli ...`.\r\n- Use `py -m flue.cli where` on Windows, or `python3 -m flue.cli where` on macOS/Linux, for launcher and install diagnostics.\r\n- If a Windows app is blocked by a modal, use `py -m flue.cli modal <app>` to inspect likely dialog windows and `py -m flue.cli modal <app> --dismiss` to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\n- Use bare `flue` only as a convenience command when PATH propagation is known to be working.\r\n\r\n## Security & Provenance\r\nFlue is an open-source MIT-licensed Python package. Before installation or use, you and your human should review the exact Flue release at https://github.com/SFKislev/flue and https://pypi.org/project/flue. Prefer a pinned version in an isolated environment. \r\n- Do not install, update, or set up Flue unless your human explicitly approves that action in the current session.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1777798983353\n}\n\nArchive v1.0.12: 32 files, 718726 bytes\n\nFiles: adapters/3dsmax/APP.md (3366b), adapters/3dsmax/docs/api-index.txt (62579b), adapters/after_effects/APP.md (3402b), adapters/after_effects/docs/api-index.txt (54849b), adapters/audition/APP.md (3165b), adapters/audition/docs/api-index.txt (49714b), adapters/blender/APP.md (3489b), adapters/blender/docs/api-index.txt (230952b), adapters/excel/APP.md (2848b), adapters/excel/docs/api-index.txt (314619b), adapters/houdini/APP.md (2902b), adapters/houdini/docs/api-index.txt (413884b), adapters/illustrator/APP.md (2953b), adapters/illustrator/docs/api-index.txt (102412b), adapters/indesign/APP.md (2530b), adapters/indesign/docs/api-index.txt (1017921b), adapters/photoshop/APP.md (2671b), adapters/photoshop/docs/api-index.txt (99476b), adapters/powerpoint/APP.md (3012b), adapters/powerpoint/docs/api-index.txt (148587b), adapters/premiere/APP.md (4742b), adapters/premiere/docs/api-index.txt (28987b), adapters/unity/APP.md (4107b), adapters/unity/docs/api-index.txt (1298166b), adapters/word/APP.md (2820b), adapters/word/docs/api-index.txt (313168b), docs/known-issues.md (5327b), docs/setup.md (3627b), shared/bridge-contract.md (5439b), shared/coexistence.md (3031b), SKILL.md (4205b), _meta.json (124b)\n\nFile v1.0.12:SKILL.md\n\n---\r\nname: flue\r\ndescription: Use when OpenClaw needs to inspect, install, test, or run Flue adapters to control supported Windows and macOS desktop apps through local scripting bridges.\r\n---\r\n\r\n## About\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell.\r\nFlue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app's own automation runtime, and the app returns JSON.\r\n\r\n> agent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\n## Available Adapters\r\n- `adapters/3dsmax/APP.md`\r\n- `adapters/after_effects/APP.md`\r\n- `adapters/audition/APP.md`\r\n- `adapters/blender/APP.md`\r\n- `adapters/excel/APP.md`\r\n- `adapters/houdini/APP.md`\r\n- `adapters/illustrator/APP.md`\r\n- `adapters/indesign/APP.md`\r\n- `adapters/photoshop/APP.md`\r\n- `adapters/powerpoint/APP.md`\r\n- `adapters/premiere/APP.md`\r\n- `adapters/unity/APP.md`\r\n- `adapters/word/APP.md`\r\n\r\n## Quick Start\r\n1. At the start of a Flue session, confirm Flue is available with `flue version`. If it is not found, ask your human for permission to run `pip install flue && flue setup`.\r\n2. Read `adapters/<app>/APP.md` for the app you are about to use.\r\n3. Use `flue test <app>` to inspect the live app state and verify the bridge connection.\r\n4. Search `adapters/<app>/docs/api-index.txt` with `rg` for relevant symbols.\r\n5. To perform one-off scripts, use `flue where` to find the package root, then run `<root>/adapters/<app>_adapter/<app>_bridge.py --stdin`.\r\n\r\n## General Rules of Use\r\n- You are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\n- Advise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\n- Bound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\n- All bridge scripts run from workspace root; accepts code through argv, `--stdin`, or `--file`; return JSON on stdout for success or failure.\r\n- Be skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\n- Flue was developed and tested against specific app and OS versions. One could expect local quirks, version mismatches and blocked automation paths. You need to understand the bridge architecture and make small, local compatibility fixes or scaffolds when needed, so the adapter works in the user's actual environment (without rewriting the full project). Make these small and robust, so that they work between sessions.\r\n- If possible, adjust the level of thinking to the complexity of the task: a simple request should not take more than a few seconds to implement. If you can, monitor the time it takes you to perform the tasks.\r\n- Read these reference files if you don't have them in the session memory:\r\n- `shared/coexistence.md`\r\n- `shared/bridge-contract.md`\r\n- `docs/setup.md`\r\n- `docs/known-issues.md` — (later in the session, you can grep for your symptom rather than reading the whole file, if the file is large)\r\n\r\n## Debugging\r\n- If Flue is out of date or behaving unexpectedly, run `py -m flue.cli update` on Windows or `python3 -m flue.cli update` on macOS/Linux to upgrade the package.\r\n- Depending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\n- On Windows, `py -m flue.cli ...` is the reliable launcher; on macOS/Linux, use `python3 -m flue.cli ...`.\r\n- If those are unavailable, use the Python executable that installed Flue: `<python> -m flue.cli ...`.\r\n- Use `py -m flue.cli where` on Windows, or `python3 -m flue.cli where` on macOS/Linux, for launcher and install diagnostics.\r\n- If a Windows app is blocked by a modal, use `py -m flue.cli modal <app>` to inspect likely dialog windows and `py -m flue.cli modal <app> --dismiss` to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\n- Use bare `flue` only as a convenience command when PATH propagation is known to be working.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1777798916065\n}\n\nFile v1.0.12:adapters/3dsmax/APP.md\n\n# 3ds Max Notes\r\n\r\nBridge:\r\n\r\n```powershell\r\npython adapters/3dsmax_adapter/3dsmax_bridge.py --stdin\r\n```\r\n\r\nRuntime: 3ds Max startup MAXScript -> embedded Python bridge -> tokenized\r\nlocalhost eval endpoint -> `MaxPlus` / MAXScript.\r\n\r\nContext:\r\n\r\n```powershell\r\nGet-Content adapters/3dsmax_adapter/examples/context.py -Raw | python adapters/3dsmax_adapter/3dsmax_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\n\r\nConnection recovery:\r\n\r\nIf the bridge says the session file is missing or the local eval endpoint is\r\nunreachable, ask the user to:\r\n\r\n1. Open 3ds Max.\r\n2. Confirm the startup script is installed.\r\n3. Restart 3ds Max if the bridge was installed after Max was already open.\r\n4. Retry the context command above.\r\n\r\nIf the bridge is missing, install it:\r\n\r\n```powershell\r\npowershell -ExecutionPolicy Bypass -File adapters/3dsmax_adapter/install_bridge.ps1\r\n```\r\n\r\n3ds Max-specific notes:\r\n\r\n- Startup uses a MAXScript loader that calls `python.ExecuteFile(...)` to load the bridge during app startup.\r\n- If the human asks you for a model, it's often better to find an existing model online than you start modeling, which can be difficult. \r\n- The bridge generates a random token on startup and writes it with the eval URL to `%APPDATA%\\creative-adapters\\3dsmax.json`. The Python bridge reads this file automatically and sends `X-Bridge-Token`.\r\n- The bridge queues incoming scripts from the HTTP thread and uses a PySide2 `QTimer` to execute them on Max's UI thread when PySide2 is available.\r\n- Scripts run in a persistent namespace with `MaxPlus` imported. Set `_result` in the script to return structured data.\r\n- For MAXScript calls from Python, prefer `MaxPlus.Core.EvalMAXScript(...)` and convert results to simple strings/numbers/lists before assigning `_result`.\r\n- For bounded MAXScript edits, prefer `undo \"<label>\" on (...)`.\r\n- For visually judged scene or viewport changes, prefer the temporary preview-verification workflow in `shared/coexistence.md` instead of assuming the visible result.\r\n- Do not save, render, export, reset the scene, switch files, or alter the user's selection/viewport unless explicitly asked.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with `MAX_COMMAND`, `MXS_FUNCTION`, `RUNTIME_DISCOVERY`).\n\nFile v1.0.12:adapters/after_effects/APP.md\n\n# After Effects Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/after_effects_adapter/after_effects_bridge.py --stdin\r\n```\r\n\r\nRuntime: local CEP panel -> `window.__adobe_cep__.evalScript(...)` -> After\r\nEffects ExtendScript.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/after_effects_adapter/examples/context.jsx -Raw | python adapters/after_effects_adapter/after_effects_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/after_effects_adapter/examples/context.jsx | python adapters/after_effects_adapter/after_effects_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge says the session file is missing or the local eval endpoint is\r\nunreachable, ask the user to:\r\n\r\n1. Open After Effects.\r\n2. Open the target project.\r\n3. Open `Window > Extensions > Creative Adapter Bridge`.\r\n4. Leave the panel open or docked.\r\n\r\nThen retry the context command above.\r\n\r\nIf `Creative Adapter Bridge` is missing from the Extensions menu, reinstall the\r\npanel:\r\n\r\n```powershell\r\npowershell -ExecutionPolicy Bypass -File adapters/after_effects_adapter/install_cep_bridge.ps1\r\n```\r\n\r\nOn macOS, follow the manual CEP install steps in\r\n`adapters/after_effects_adapter/README.md`.\r\n\r\nRestart After Effects after reinstalling.\r\n\r\nAfter Effects-specific notes:\r\n\r\n- This adapter uses a CEP panel rather than a COM automation bridge.\r\n- The CEP panel generates a random token on startup and writes it with the eval\r\n  URL to a user-scoped session file:\r\n  `%APPDATA%\\creative-adapters\\after_effects.json` on Windows or\r\n  `~/creative-adapters/after_effects.json` on macOS. The Python bridge reads\r\n  this file automatically and sends `X-Bridge-Token`.\r\n- The manifest uses `AutoVisible`, and the panel attempts\r\n  `app.setExtensionPersistent(...)`. The panel may auto-open in later sessions.\r\n  If it does not, instruct the user to open\r\n  `Window > Extensions > Creative Adapter Bridge`.\r\n- For visually judged comp changes, prefer the temporary preview-verification\r\n  workflow in `shared/coexistence.md` instead of assuming the visible result.\r\n- Do not render, export, collect files, relink footage, save, or close projects\r\n  unless the user explicitly asks.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `PROPERTY`, `METHOD`).\n\nFile v1.0.12:adapters/audition/APP.md\n\n# Audition Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/audition_adapter/audition_bridge.py --stdin\r\n```\r\n\r\nRuntime: local CEP panel -> `window.__adobe_cep__.evalScript(...)` -> Audition\r\nExtendScript.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/audition_adapter/examples/context.jsx -Raw | python adapters/audition_adapter/audition_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/audition_adapter/examples/context.jsx | python adapters/audition_adapter/audition_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge says the session file is missing or the local eval endpoint is\r\nunreachable, ask the user to:\r\n\r\n1. Open Audition.\r\n2. Open the target file or multitrack session.\r\n3. Open `Window > Extensions > Creative Adapter Bridge`.\r\n4. Leave the panel open or docked.\r\n\r\nThen retry the context command above.\r\n\r\nIf `Creative Adapter Bridge` is missing from the Extensions menu, reinstall the\r\npanel:\r\n\r\n```powershell\r\npowershell -ExecutionPolicy Bypass -File adapters/audition_adapter/install_cep_bridge.ps1\r\n```\r\n\r\nOn macOS, follow the manual CEP install steps in\r\n`adapters/audition_adapter/README.md`.\r\n\r\nRestart Audition after reinstalling.\r\n\r\nAudition-specific notes:\r\n\r\n- This adapter uses a CEP panel rather than a COM automation bridge.\r\n- Adobe documents Audition CEP support: panels use HTML/JavaScript and\r\n  ExtendScript to communicate with Audition.\r\n- Adobe's CEP samples use Audition host ID `AUDT`.\r\n- The CEP panel generates a random token on startup and writes it with the eval\r\n  URL to a user-scoped session file: `%APPDATA%\\creative-adapters\\audition.json`\r\n  on Windows or `~/creative-adapters/audition.json` on macOS. The Python bridge\r\n  reads this file automatically and sends `X-Bridge-Token`.\r\n- Do not save, export, mix down, batch process, relink media, close sessions, or\r\n  overwrite audio files unless the user explicitly asks.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `INTERFACE`, `ENUMCLASS`, `ENUM`, `PROPERTY`, `METHOD`).\n\nFile v1.0.12:adapters/blender/APP.md\n\n# Blender Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/blender_adapter/blender_bridge.py --stdin\r\n```\r\n\r\nRuntime: Blender addon -> tokenized localhost eval endpoint -> `bpy` Python on\r\nBlender's main thread.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/blender_adapter/examples/context.py -Raw | python adapters/blender_adapter/blender_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/blender_adapter/examples/context.py | python adapters/blender_adapter/blender_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge says the session file is missing or the local eval endpoint is\r\nunreachable, ask the user to:\r\n\r\n1. Open Blender.\r\n2. Enable the `Creative Adapter Bridge` addon.\r\n3. Retry the context command above.\r\n\r\nIf the addon is missing, install it:\r\n\r\n```powershell\r\npowershell -ExecutionPolicy Bypass -File adapters/blender_adapter/install_addon.ps1\r\n```\r\n\r\nOn macOS, install `adapters/blender_adapter/addon/creative_adapter_bridge.py`\r\nthrough Blender's add-on installer, then enable `Creative Adapter Bridge`.\r\n\r\nBlender-specific notes:\r\n\r\n- Blender has no out-of-process `bpy`; Python runs inside Blender. This adapter therefore installs an in-process addon.\r\n- If the human asks you for a model, it's often better to find an existing model online than you start modeling, which can be difficult.\r\n- The addon generates a random token on startup and writes it with the eval URL to a user-scoped session file: `%APPDATA%\\creative-adapters\\blender.json` on Windows or `~/creative-adapters/blender.json` on macOS. The Python bridge reads this file automatically and sends `X-Bridge-Token`.\r\n- Scripts run in a persistent namespace with `bpy` already imported. Set `_result` in the script to return structured data.\r\n- For user-visible edits, include an undo label and call `bpy.ops.ed.undo_push(message=\"<label>\")` after the mutation when Blender's\r\n  undo system supports the operation.\r\n- For visually judged scene, material, lighting, or camera changes, prefer the temporary review-verification workflow in `shared/coexistence.md` instead of assuming the visible result.\r\n- Do not save, render, export, change files, switch scenes, or alter the user's selection/viewport unless explicitly asked.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with `MODULE`, `CLASS`, `OPERATOR`, `METHOD`, `PROPERTY`).\n\nFile v1.0.12:adapters/excel/APP.md\n\n# Excel Notes\r\n\r\nBridge:\r\n\r\n```powershell\r\npython adapters/excel_adapter/excel_bridge.py --stdin\r\n```\r\n\r\nRuntime: Windows COM `Excel.Application` controlled from Python.\r\n\r\nContext:\n\n```powershell\nGet-Content adapters/excel_adapter/examples/context.py -Raw | python adapters/excel_adapter/excel_bridge.py --stdin\n```\n\n## Local Memory\n\nIf `APP.local.md` exists in this directory, review it before performing an\noperation when local installation details, prior failures, or version-specific\nbehavior may matter.\n\nAfter completing an operation, if you encountered a repeatable issue or\nverified something worth remembering about this local installation, add a short\nnote to `APP.local.md`.\n\nKeep notes concise and factual. Record only local, reusable insights such as\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\ntask-specific notes.\n\nAPI lookup workflow:\n\n- Use `docs/api-index.txt` as the primary operation index.\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge cannot connect, ask the user to open Excel and retry the context\r\ncommand. This adapter connects to the running COM application by default; do\r\nnot launch Excel unless the user explicitly asks.\r\n\r\nExcel-specific notes:\r\n\r\n- Excel does not expose a general script-eval method through COM. The bridge\r\n  executes Python code with the live `Excel.Application` COM object available as\r\n  `app`.\r\n- Set `_result` in the submitted Python script to return structured JSON.\r\n- Prefer structural Excel object-model calls over UI automation: `Workbooks`,\r\n  `ActiveWorkbook`, `Worksheets`, `Range`, `Cells`, `ListObjects`, `PivotTables`,\r\n  `Charts`, `Names`, `UsedRange`, and `Selection`.\r\n- Do not save, close, print, export, refresh external data, run macros, or switch\r\n  workbooks unless the user explicitly asks.\r\n- Excel uses 1-based COM collections. Use `.Count` and `.Item(index)` instead\r\n  of Python indexing for most Excel collections.\r\n- Excel COM calls can be slow across large ranges. Read or write rectangular\r\n  ranges in batches through `.Value` / `.Value2` instead of looping cell by\r\n  cell whenever possible.\r\n- Many Excel constants are available through `constants`, for example\r\n  `constants.xlUp`, but verify constants at runtime if unsure.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `ENUM`, `PROPERTY`, `METHOD`, `EVENT`, `CONSTANT`).\n\nFile v1.0.12:adapters/houdini/APP.md\n\n# Houdini Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/houdini_adapter/houdini_bridge.py --stdin\r\n```\r\n\r\nRuntime: Houdini startup Python -> embedded Python bridge -> tokenized\r\nlocalhost eval endpoint -> Houdini Object Model (`hou`).\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/houdini_adapter/examples/context.py -Raw | python adapters/houdini_adapter/houdini_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/houdini_adapter/examples/context.py | python adapters/houdini_adapter/houdini_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\n\r\nConnection recovery:\r\n\r\nIf the bridge says the session file is missing or the local eval endpoint is\r\nunreachable, ask the user to:\r\n\r\n1. Open Houdini.\r\n2. Confirm the startup bridge is installed.\r\n3. Restart Houdini if the bridge was installed after Houdini was already open.\r\n4. Retry the context command above.\r\n\r\nHoudini-specific notes:\r\n\r\n- Scripts run in a persistent namespace with `hou` imported. Set `_result` to\r\n  return structured data.\r\n- The bridge queues HTTP requests and executes them from\r\n  `hou.ui.addEventLoopCallback(...)`, so scene edits happen on Houdini's UI\r\n  thread.\r\n- Prefer HOM node APIs (`hou.node`, `createNode`, `parm().set`,\r\n  `setInput`) over UI automation.\r\n- Houdini does not expose a universal Python undo wrapper for arbitrary HOM\r\n  edits. Keep edits bounded and report script errors directly.\r\n- For visually judged scene or viewport changes, prefer the temporary\r\n  preview-verification workflow in `shared/coexistence.md` instead of assuming\r\n  the visible result.\r\n- Do not save, render, export, change desktops, or switch files unless\r\n  explicitly asked.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `FUNCTION`, `MODULE`, `PACKAGE`, `ENUM`, `METHOD`).\n\nFile v1.0.12:adapters/illustrator/APP.md\n\n# Illustrator Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/illustrator_adapter/illustrator_bridge.py --stdin\r\n```\r\n\r\nRuntime:\r\n\r\n- Windows: COM `Illustrator.Application` -> `DoJavaScript`.\r\n- macOS: AppleScript `do javascript`.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/illustrator_adapter/examples/context.jsx -Raw | python adapters/illustrator_adapter/illustrator_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/illustrator_adapter/examples/context.jsx | python adapters/illustrator_adapter/illustrator_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge cannot connect, ask the user to open Illustrator and retry the\r\ncontext command. This adapter connects to the running app by default; do not\r\nlaunch Illustrator unless the user explicitly asks.\r\n\r\nIllustrator-specific notes:\r\n\r\n- Selection can contain `PathItem`, `GroupItem`, `CompoundPathItem`, text,\r\n  placed art, or plugin items. Check `typename` before applying properties.\r\n- Recursive handling is usually needed for grouped or compound path edits.\r\n- Many visual edits are direct object-model writes: fill, stroke, opacity,\r\n  artboard, layer, swatch, and path geometry.\r\n- Many appearance effects live in Illustrator Live Effects rather than direct\r\n  DOM properties. Discover available effect names at runtime with\r\n  `app.liveEffectsList`, then apply via `PageItem.applyEffect(liveEffectXML)`.\r\n- For visually judged edits, prefer the temporary preview-verification workflow\r\n  in `shared/coexistence.md` instead of assuming the result looks correct.\r\n- Do not save, close documents, export, package, relink assets, or change the\r\n  active document unless the user explicitly asks.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `ENUM`, `PROPERTY`, `METHOD`, and live-effect guidance).\n\nFile v1.0.12:adapters/indesign/APP.md\n\n# InDesign Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/indesign_adapter/indesign_bridge.py --stdin\r\n```\r\n\r\nRuntime:\r\n\r\n- Windows: COM `InDesign.Application` -> `DoScript(JavaScript)`.\r\n- macOS: AppleScript `do script ... language JavaScript`.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/indesign_adapter/examples/context.jsx -Raw | python adapters/indesign_adapter/indesign_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/indesign_adapter/examples/context.jsx | python adapters/indesign_adapter/indesign_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge cannot connect, ask the user to open InDesign and retry the\r\ncontext command. This adapter connects to the running app by default; do not\r\nlaunch InDesign unless the user explicitly asks.\r\n\r\nInDesign-specific notes:\r\n\r\n- JavaScript language id is `1246973031`.\r\n- Layout tasks often live under document, page, margin, grid, style, layer, and\r\n  selection objects.\r\n- For measurements, set and restore `app.scriptPreferences.measurementUnit`\r\n  inside the script.\r\n- Prefer one bounded `DoScript` call per requested edit.\r\n- For visually judged layout or page changes, prefer the temporary\r\n  preview-verification workflow in `shared/coexistence.md` instead of assuming\r\n  the visible result.\r\n- Grep-friendly operation index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `ENUM`, `PROPERTY`, `METHOD`).\n\nFile v1.0.12:adapters/photoshop/APP.md\n\n# Photoshop Notes\r\n\r\nBridge:\r\n\r\n```bash\r\npython adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\nRuntime:\r\n\r\n- Windows: COM `Photoshop.Application` -> `DoJavaScript`.\r\n- macOS: AppleScript `do javascript`.\r\n\r\nContext:\r\n\r\nWindows:\r\n\r\n```powershell\r\nGet-Content adapters/photoshop_adapter/examples/context.jsx -Raw | python adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\nmacOS:\r\n\r\n```bash\r\ncat adapters/photoshop_adapter/examples/context.jsx | python adapters/photoshop_adapter/photoshop_bridge.py --stdin\r\n```\r\n\r\n## Local Memory\r\n\r\nIf `APP.local.md` exists in this directory, review it before performing an\r\noperation when local installation details, prior failures, or version-specific\r\nbehavior may matter.\r\n\r\nAfter completing an operation, if you encountered a repeatable issue or\r\nverified something worth remembering about this local installation, add a short\r\nnote to `APP.local.md`.\r\n\r\nKeep notes concise and factual. Record only local, reusable insights such as\r\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\r\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\r\ntask-specific notes.\r\n\r\nAPI lookup workflow:\r\n\r\n- Use `docs/api-index.txt` as the primary operation index.\r\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge cannot connect, ask the user to open Photoshop and retry the\r\ncontext command. This adapter connects to the running app by default; do not\r\nlaunch Photoshop unless the user explicitly asks.\r\n\r\nPhotoshop-specific notes:\r\n\r\n- Use `app.activeDocument.suspendHistory(\"<label>\", \"main()\")` for multi-step\r\n  edits that should undo as one step.\r\n- Prefer native Photoshop blending options/layer styles (for example: Outer\r\n  Glow, Drop Shadow, Bevel/Emboss, Gradient Overlay) when they can achieve the\r\n  requested effect. \r\n- `app.runMenuItem(stringIDToTypeID(\"<id>\"))` is useful for menu commands.\r\n- `app.doAction(\"<action name>\", \"<action set name>\")` runs an installed\r\n  Photoshop action.\r\n- For visually judged edits, prefer the temporary preview-verification workflow\r\n  in `shared/coexistence.md` instead of assuming the edit looks correct.\r\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\r\n  `CLASS`, `ENUMCLASS`, `ENUM`, `PROPERTY`, `METHOD`).\n\nFile v1.0.12:adapters/powerpoint/APP.md\n\n# PowerPoint Notes\r\n\r\nBridge:\r\n\r\n```powershell\r\npython adapters/powerpoint_adapter/powerpoint_bridge.py --stdin\r\n```\r\n\r\nRuntime: Windows COM `PowerPoint.Application` controlled from Python.\r\n\r\nContext:\n\n```powershell\nGet-Content adapters/powerpoint_adapter/examples/context.py -Raw | python adapters/powerpoint_adapter/powerpoint_bridge.py --stdin\n```\n\n## Local Memory\n\nIf `APP.local.md` exists in this directory, review it before performing an\noperation when local installation details, prior failures, or version-specific\nbehavior may matter.\n\nAfter completing an operation, if you encountered a repeatable issue or\nverified something worth remembering about this local installation, add a short\nnote to `APP.local.md`.\n\nKeep notes concise and factual. Record only local, reusable insights such as\nverified quirks, recovery steps, version-specific gaps, or runtime-discovered\ndetails. Do not copy general guidance from `APP.md`, and do not add temporary\ntask-specific notes.\n\nAPI lookup workflow:\n\n- Use `docs/api-index.txt` as the primary operation index.\n- Workflow for every task:\r\n  1. Understand the user's intent.\r\n  2. Search (`rg`) `docs/api-index.txt` for matching operations.\r\n  3. If needed, introspect the live app/runtime to resolve ambiguity.\r\n  4. If still needed, search official documentation online.\r\n  5. Avoid over-relying on training, as it's fragile and can break. Do not directly read the index file, which can be heavy.\r\n\r\nConnection recovery:\r\n\r\nIf the bridge cannot connect, ask the user to open PowerPoint and retry the\r\ncontext command. This adapter connects to the running COM application by\r\ndefault; do not launch PowerPoint unless the user explicitly asks.\r\n\r\nPowerPoint-specific notes:\r\n\r\n- PowerPoint does not expose a general script-eval method through COM. The\r\n  bridge executes Python code with the live `PowerPoint.Application` COM object\r\n  available as `app`.\r\n- Set `_result` in the submitted Python script to return structured JSON.\r\n- Prefer structural PowerPoint object-model calls over UI automation:\r\n  `Presentations`, `ActivePresentation`, `Slides`, `Shapes`, `TextFrame`,\r\n  `TextFrame2`, `Tables`, `Chart`, `SlideMaster`, `CustomLayouts`, and\r\n  `Selection`.\r\n- Do not save, close, print, export, start a slideshow, or switch presentations\n  unless the user explicitly asks.\n- PowerPoint uses 1-based COM collections. Use `.Count` and `.Item(index)`\n  instead of Python indexing for most collections.\n- PowerPoint has both legacy `TextFrame` and newer `TextFrame2` APIs. Inspect\n  a shape's capabilities before mutating text.\n- Many PowerPoint/Office constants are available through `constants`, but\n  verify constants at runtime if unsure.\n- For visually judged slide layout or formatting changes, prefer the temporary\n  preview-verification workflow in `shared/coexistence.md` instead of assuming\n  the visible result.\n- Grep-friendly API index: `docs/api-index.txt` (records are prefixed with\n  `CLASS`, `ENUM`, `PROPERTY`, `METHOD`, `EVENT`, `CONSTANT`).\n\nArchive v1.0.11: 2 files, 2126 bytes\n\nFiles: SKILL.md (3896b), _meta.json (124b)\n\nFile v1.0.11:SKILL.md\n\n---\r\nname: flue\r\ndescription: Letting agents control many desktop software, with one pip install, and no MCPs.\r\n---\r\n\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell. Flue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app, and the app returns JSON.\r\n\r\nagent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\nThis is the entrypoint to the Flue framework.\r\n\r\nAvailable Adapters\r\nadapters/3dsmax/APP.md\r\nadapters/after_effects/APP.md\r\nadapters/audition/APP.md\r\nadapters/blender/APP.md\r\nadapters/excel/APP.md\r\nadapters/houdini/APP.md\r\nadapters/illustrator/APP.md\r\nadapters/indesign/APP.md\r\nadapters/photoshop/APP.md\r\nadapters/powerpoint/APP.md\r\nadapters/premiere/APP.md\r\nadapters/unity/APP.md\r\nadapters/word/APP.md\r\nQuick Start\r\nAt the start of a Flue session, confirm Flue is available with flue version. If it is not found, stop and tell your human that Flue is not installed. Review the GitHub repo at https://github.com/SFKislev/flue to inform your human about the code.\r\nRead adapters/<app>/APP.md for the app you are about to use.\r\nSearch adapters/<app>/docs/api-index.txt with rg for relevant symbols.\r\nPrefer py -m flue.cli context <app> on Windows, or python3 -m flue.cli context <app> on macOS/Linux, to inspect the live app state.\r\nPrefer py -m flue.cli run <app> --stdin on Windows, or python3 -m flue.cli run <app> --stdin on macOS/Linux, for one-off scripts.\r\nGeneral Rules of Use\r\nYou are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\nAdvise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\nBound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\nAll bridge scripts run from workspace root; accepts code through argv, --stdin, or --file; return JSON on stdout for success or failure.\r\nBe skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\nFlue was developed and tested against specific app and OS versions. Expect local quirks, version mismatches, and blocked automation paths. Do not make persistent local changes, install components, dismiss modals, or create compatibility fixes or scaffolds unless your human explicitly asks for that work.\r\nRead these reference files if you don't have them in the session memory:\r\nshared/coexistence.md\r\nshared/bridge-contract.md\r\ndocs/setup.md\r\ndocs/known-issues.md\r\nDebugging\r\nDepending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\nOn Windows, py -m flue.cli ... is the reliable launcher; on macOS/Linux, use python3 -m flue.cli ....\r\nIf those are unavailable, use the Python executable that installed Flue: <python> -m flue.cli ....\r\nUse py -m flue.cli where on Windows, or python3 -m flue.cli where on macOS/Linux, for launcher and install diagnostics.\r\nIf a Windows app is blocked by a modal, use py -m flue.cli modal <app> to inspect likely dialog windows and py -m flue.cli modal <app> --dismiss to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\nUse bare flue only as a convenience command when PATH propagation is known to be working.\r\nSecurity & Provenance\r\nFlue is an open-source MIT-licensed Python package. Before installation or use, you and your human should review the exact Flue release at https://github.com/SFKislev/flue and https://pypi.org/project/flue. Prefer a pinned version in an isolated environment.\r\n\r\nDo not install, update, or set up Flue unless your human explicitly approves that action in the current session.\n\nFile v1.0.11:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.11\",\n  \"publishedAt\": 1777749640025\n}\n\nArchive v1.0.10: 2 files, 2126 bytes\n\nFiles: SKILL.md (3896b), _meta.json (124b)\n\nFile v1.0.10:SKILL.md\n\n---\r\nname: flue\r\ndescription: Letting agents control many desktop software, with one pip install, and no MCPs.\r\n---\r\n\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell. Flue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app, and the app returns JSON.\r\n\r\nagent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\nThis is the entrypoint to the Flue framework.\r\n\r\nAvailable Adapters\r\nadapters/3dsmax/APP.md\r\nadapters/after_effects/APP.md\r\nadapters/audition/APP.md\r\nadapters/blender/APP.md\r\nadapters/excel/APP.md\r\nadapters/houdini/APP.md\r\nadapters/illustrator/APP.md\r\nadapters/indesign/APP.md\r\nadapters/photoshop/APP.md\r\nadapters/powerpoint/APP.md\r\nadapters/premiere/APP.md\r\nadapters/unity/APP.md\r\nadapters/word/APP.md\r\nQuick Start\r\nAt the start of a Flue session, confirm Flue is available with flue version. If it is not found, stop and tell your human that Flue is not installed. Review the GitHub repo at https://github.com/SFKislev/flue to inform your human about the code.\r\nRead adapters/<app>/APP.md for the app you are about to use.\r\nSearch adapters/<app>/docs/api-index.txt with rg for relevant symbols.\r\nPrefer py -m flue.cli context <app> on Windows, or python3 -m flue.cli context <app> on macOS/Linux, to inspect the live app state.\r\nPrefer py -m flue.cli run <app> --stdin on Windows, or python3 -m flue.cli run <app> --stdin on macOS/Linux, for one-off scripts.\r\nGeneral Rules of Use\r\nYou are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\nAdvise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\nBound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\nAll bridge scripts run from workspace root; accepts code through argv, --stdin, or --file; return JSON on stdout for success or failure.\r\nBe skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\nFlue was developed and tested against specific app and OS versions. Expect local quirks, version mismatches, and blocked automation paths. Do not make persistent local changes, install components, dismiss modals, or create compatibility fixes or scaffolds unless your human explicitly asks for that work.\r\nRead these reference files if you don't have them in the session memory:\r\nshared/coexistence.md\r\nshared/bridge-contract.md\r\ndocs/setup.md\r\ndocs/known-issues.md\r\nDebugging\r\nDepending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\nOn Windows, py -m flue.cli ... is the reliable launcher; on macOS/Linux, use python3 -m flue.cli ....\r\nIf those are unavailable, use the Python executable that installed Flue: <python> -m flue.cli ....\r\nUse py -m flue.cli where on Windows, or python3 -m flue.cli where on macOS/Linux, for launcher and install diagnostics.\r\nIf a Windows app is blocked by a modal, use py -m flue.cli modal <app> to inspect likely dialog windows and py -m flue.cli modal <app> --dismiss to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\nUse bare flue only as a convenience command when PATH propagation is known to be working.\r\nSecurity & Provenance\r\nFlue is an open-source MIT-licensed Python package. Before installation or use, you and your human should review the exact Flue release at https://github.com/SFKislev/flue and https://pypi.org/project/flue. Prefer a pinned version in an isolated environment.\r\n\r\nDo not install, update, or set up Flue unless your human explicitly approves that action in the current session.\n\nFile v1.0.10:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.10\",\n  \"publishedAt\": 1777749471600\n}\n\nArchive v1.0.9: 2 files, 2127 bytes\n\nFiles: SKILL.md (3961b), _meta.json (123b)\n\nFile v1.0.9:SKILL.md\n\n## About\r\nFlue is a tiny bridge that lets your coding harness drive professional desktop software - Photoshop, Premiere, Blender, Unity, and more - directly from the shell.\r\nFlue is not an MCP server. The agent sends a script through a small bridge command, the bridge runs it inside the app, and the app returns JSON.\r\n\r\n> agent shell -> bridge command -> app scripting runtime -> JSON result\r\n\r\nThis is the entrypoint to the Flue framework. \r\n\r\n## Available Adapters\r\n- `adapters/3dsmax/APP.md`\r\n- `adapters/after_effects/APP.md`\r\n- `adapters/audition/APP.md`\r\n- `adapters/blender/APP.md`\r\n- `adapters/excel/APP.md`\r\n- `adapters/houdini/APP.md`\r\n- `adapters/illustrator/APP.md`\r\n- `adapters/indesign/APP.md`\r\n- `adapters/photoshop/APP.md`\r\n- `adapters/powerpoint/APP.md`\r\n- `adapters/premiere/APP.md`\r\n- `adapters/unity/APP.md`\r\n- `adapters/word/APP.md`\r\n\r\n## Quick Start\r\n1. At the start of a Flue session, confirm Flue is available with `flue version`. If it is not found, stop and tell your human that Flue is not installed. Review the GitHub repo at https://github.com/SFKislev/flue to inform your human about the code. \r\n2. Read `adapters/<app>/APP.md` for the app you are about to use.\r\n3. Search `adapters/<app>/docs/api-index.txt` with `rg` for relevant symbols.\r\n4. Prefer `py -m flue.cli context <app>` on Windows, or `python3 -m flue.cli context <app>` on macOS/Linux, to inspect the live app state.\r\n5. Prefer `py -m flue.cli run <app> --stdin` on Windows, or `python3 -m flue.cli run <app> --stdin` on macOS/Linux, for one-off scripts.\r\n\r\n## General Rules of Use\r\n- You are working along with a human in the driving seat. Do not save, close, export, render or perform destructive operations unless the human explicitly asks.\r\n- Advise the human that small steps are better than large tasks, which you'll likely fail at. Keep collaboration scope manageable.\r\n- Bound scripts carefully to avoid crashing the host: keep scripts small and targeted.\r\n- All bridge scripts run from workspace root; accepts code through argv, `--stdin`, or `--file`; return JSON on stdout for success or failure.\r\n- Be skeptical of your pretraining: introspect the running app and consult vendor documentation rather than trying to invent operations.\r\n- Flue was developed and tested against specific app and OS versions. Expect local quirks, version mismatches, and blocked automation paths. Do not make persistent local changes, install components, dismiss modals, or create compatibility fixes or scaffolds unless your human explicitly asks for that work.\r\n- Read these reference files if you don't have them in the session memory:\r\n- `shared/coexistence.md`\r\n- `shared/bridge-contract.md`\r\n- `docs/setup.md`\r\n- `docs/known-issues.md`\r\n\r\n## Debugging\r\n- Depending on the app and OS, adapters may use Windows COM, macOS AppleScript, or a local in-app bridge, but the shell workflow stays the same.\r\n- On Windows, `py -m flue.cli ...` is the reliable launcher; on macOS/Linux, use `python3 -m flue.cli ...`.\r\n- If those are unavailable, use the Python executable that installed Flue: `<python> -m flue.cli ...`.\r\n- Use `py -m flue.cli where` on Windows, or `python3 -m flue.cli where` on macOS/Linux, for launcher and install diagnostics.\r\n- If a Windows app is blocked by a modal, use `py -m flue.cli modal <app>` to inspect likely dialog windows and `py -m flue.cli modal <app> --dismiss` to attempt a bounded cancel-style dismissal outside the app scripting runtime.\r\n- Use bare `flue` only as a convenience command when PATH propagation is known to be working.\r\n\r\n## Security & Provenance\r\nFlue is an open-source MIT-licensed Python package. Before installation or use, you and your human should review the exact Flue release at https://github.com/SFKislev/flue and https://pypi.org/project/flue. Prefer a pinned version in an isolated environment. \r\n- Do not install, update, or set up Flue unless your human explicitly approves that action in the current session.\n\nFile v1.0.9:_meta.json\n\n{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.9\",\n  \"publishedAt\": 1777704237025\n}","readmeExcerpt":"Skill: Flue - Control Desktop Software Owner: sfkislev Summary: Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office. Tags: 3ds-max:1.0.0, adapter:1.0.0, adobe:1.0.0, after-effects:1.0.0, agents:1.0.0, applescript:1.0.0, audition:1.0.0, autodesk:1.0.0, automation:1.0.0, blender:1.0.0, bridge:1.0.0, claude-code:1.0","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"agent script\n  -> stdin\n  -> flue bridge command\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\n  -> app executes code\n  -> JSON result on stdout"},{"language":"text","snippet":"@'\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\n\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\n    var layer = doc.artLayers.add();\n    layer.name = name;\n    var color = new SolidColor();\n    color.rgb.red = r;\n    color.rgb.green = g;\n    color.rgb.blue = b;\n    app.foregroundColor = color;\n    doc.selection.select(points, SelectionType.REPLACE, feather || 0, antiAlias || false);\n    doc.selection.fill(app.foregroundColor);\n    doc.selection.deselect();\n}\n\nfillSelection(\"Red Triangle\", [[160, 640], [360, 220], [560, 640]], 255, 0, 0, 0, false);\nfillSelection(\"Blue Square\", [[660, 220], [920, 220], [920, 480], [660, 480]], 0, 102, 255, 0, false);\nfillSelection(\"Yellow Circle\", [[720, 520], [1020, 520], [1020, 780], [720, 780]], 255, 221, 0, 0, true);\n\nJSON.stringify({ ok: true, document: doc.name, layers: doc.layers.length });\n'@ |\n  python adapters/photoshop_adapter/photoshop_bridge.py --stdin"},{"language":"powershell","snippet":"Get-Content adapters/excel_adapter/examples/context.py -Raw | python adapters/excel_adapter/excel_bridge.py --stdin"},{"language":"powershell","snippet":"Get-Content adapters/powerpoint_adapter/examples/context.py -Raw | python adapters/powerpoint_adapter/powerpoint_bridge.py --stdin"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: flue\r\ndescription: Let agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office. \r\n---\r\n\r\n## Purpose\r\nFlue is a local automation layer for coding agents that need to operate real desktop software such as Photoshop, Premiere, Blender, Unity, Houdini, Illustrator, InDesign, Excel, PowerPoint, Word, and 3ds Max.\r\n\r\nFlue is not an MCP server. It is simpler. It is a Python package that exposes small shell-facing bridge commands. Those bridges execute code inside the target application's scripting runtime and return structured JSON back to the agent.\r\n\r\n> agent shell -> Flue bridge -> app scripting runtime -> JSON result\r\n\r\nThis file is a bootstrap entrypoint. Its job is to make you aware of the flue framework, and how to set it up. \r\n\r\n## When to use Flue\r\nReach for Flue when the user wants work performed inside a desktop application. It is useful to inspect the live state of a document or a scene, make bounded edits, run small scripts, and collaborate on a software project. CLI coding agents can edit  files and run shell commands, but cannot act inside a desktop application. Flue gives you access to software. \r\nFlue currently has adapters for 3DS Max, Adobe After Effects, Adobe Audition, Blender 3D, Microsoft Excel, Microsoft Word, Houdini, Adobe Indesign, Adobe Photoshop, Microsoft Powerpoint, Adobe Premiere, and Unity. More software support is in the works.\r\n\r\n## How it works\r\nFlue avoids the complexities of current software automation solutions - specifically MCPs. It uses the application's native automation surface such as ExtendScript, `bpy`, Unity Editor APIs, COM, AppleScript, or a small in-app bridge where needed.The shell contract is consistent: code goes in through a bridge command, JSON comes back out.\r\nThe project is open-source and reviewable on GitHub and PyPI.It ships app-specific documentation.\r\n\r\n## Flue in technical terms\r\nFlue is a shell-to-application bridge. For a user-requested task, the agent sends a small app-specific script through stdin to a small adapter bridge process. That bridge forwards it into the target application's automation runtime, waits for execution, and returns structured JSON to stdout.\r\n\r\nDepending on the adapter, that runtime may be COM, ExtendScript, a CEP-hosted bridge, `bpy`, Unity Editor scripting APIs, or another app-local automation surface. Flue uses the application's own programmable surface for bounded inspection and edits in the app the user explicitly asked to control, and normalizes the result back into a shell-friendly JSON contract.\r\n\r\n```text\r\nagent script\r\n  -> stdin\r\n  -> flue bridge command\r\n  -> COM / ExtendScript / CEP / bpy / Unity runtime\r\n  -> app executes code\r\n  -> JSON result on stdout\r\n```\r\nFor instance:\r\n\r\n```text\r\n@'\r\nvar doc = app.documents.add(1200, 800, 72, \"Flue Shapes\");\r\n\r\nfunction fillSelection(name, points, r, g, b, feather, antiAlias) {\r\n    var layer = doc.artLay"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73b4t5rvraqjvysen5yx6f3585rzqd\",\n  \"slug\": \"flue\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1778368149461\n}"},{"path":"skill-card.md","content":"## Description:\n\nLet agents control software, including Adobe Photoshop, Illustrator, After Effects, Premiere, Autodesk 3DS Max, Blender, Unity, Houdini, and Microsoft Office.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[sfkislev](https://clawhub.ai/user/sfkislev)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use Flue to let an agent inspect live state and make bounded, user-directed edits inside supported desktop applications. It is intended for creative, technical, game-development, and office-document workflows where the user has explicitly requested work in a specific application.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Flue can execute user-provided scripts inside professional desktop applications, so unintended or destructive changes could affect open documents, scenes, or projects.\n\nMitigation: Use Flue only for explicit, user-requested tasks in a specific application, prefer small inspectable steps, and avoid destructive actions unless the user approves them.\n\nRisk: Installation and setup add desktop application integrations on the user's machine.\n\nMitigation: Inspect the linked Flue project first, pin a reviewed version or use isolation when appropriate, and run installation or setup only after explicit current-session approval.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/sfkislev/skills/flue)\n- [Flue GitHub Project](https://github.com/SFKislev/flue)\n- [Flue on PyPI](https://pypi.org/project/flue)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Code, Configuration]\n\n**Output Format:** [Markdown guidance with inline shell commands and code examples; bridge results are structured JSON.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires explicit user approval before installation, setup, or destructive desktop-application actions.]\n\n## Skill Version(s):\n\n1.0.18 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1457,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T03:40:24.310Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:49:16.727Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}