[BUG] .plugin file install dialog doesn't appear when invoked from a Cowork skill session
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Bug: .plugin file install dialog doesn't appear when invoked from a Cowork skill session
When the cowork-plugin-customizer skill packages a plugin and presents a .plugin file link, clicking it shows raw file contents instead of the expected rich install dialog with an "Accept" button.
Steps to reproduce:
Run /cowork-plugin-management:cowork-plugin-customizer from a Cowork session
Skill packages plugin and outputs a .plugin file link
Clicking the link shows raw zip data, not an install dialog
Root cause (suspected): The skill can't reliably determine the current session's outputs/ folder path. Tried placing the file in multiple candidate locations (ce3d3f45.../outputs/, skills-plugin/.../outputs/, inferred local_c913dee5.../outputs/, working directory, working directory outputs/) — none triggered the install UI.
What Should Happen?
Clicking the link shows raw zip data, not an install dialog
Error Messages/Logs
/cowork-plugin-management:cowork-plugin-customizer
The user has invoked the cowork-plugin-customizer skill. Let me start by finding the plugin directory and understanding what needs to be customized.
First, I need to find the plugin directory by running the find command as specified in the skill instructions.
Ran
Find plugin directories
The find command returned no results. This suggests the user might be running in a remote container. Let me check if there are any plugins elsewhere, or if I should look in the base directory that was provided in the skill.
Ran 2 commands
I can see there are multiple plugins. The skill was invoked from `plugin_018pLNd4CGF8vEEmyztWR7fi`. Let me look at this plugin specifically.
Ran
List all files in the target plugin
I see that `plugin_018pLNd4CGF8vEEmyztWR7fi` is the cowork-plugin-management plugin itself. This doesn't seem like the plugin the user wants to customize.
The user invoked the `cowork-plugin-customizer` skill - they want to customize a plugin. I need to figure out which plugin they want to customize. Since the user just ran `/cowork-plugin-management:cowork-plugin-customizer` without specifying a plugin, I need to ask which plugin they want to customize.
Let me look at all the plugins and their names to give the user options.
Ran
Read plugin.json for all plugins
Now I can see all the plugins. The user invoked the customizer, so I need to ask which plugin they want to customize. The available options are:
- pdf-viewer
- productivity
- operations
(Not cowork-plugin-management since that's the plugin this skill is part of)
Let me check if any of these plugins have `~~` placeholders.
Ran
Check for ~~ placeholders in productivity and operations plugins
I see that the `~~` references in the productivity and operations plugins are actually documentation about how connectors work (in CONNECTORS.md), and then specific tool placeholder references in the skill files. These are the standard connector references, not the same type of "template placeholders" that need to be replaced. They seem to be documenting conditional behavior based on connected MCPs.
Looking more carefully:
- `~~knowledge base` in skill files refers to "if the knowledge base MCP is connected"
- These are in if/then conditions
The ones in CONNECTORS.md are describing what `~~category` means as a placeholder concept.
So these `~~` references aren't traditional template placeholders that need replacing—they're connector category references that determine behavior based on what's actually connected. Since the user invoked the customizer without specifying which plugin to work with, I should ask them to clarify which one they want to customize.
Used ToolSearch
Now I need to ask the user which plugin they want to customize. I can see there are 3 plugins available (besides the cowork-plugin-management itself):
1. pdf-viewer
2. productivity
3. operations
Asked
Plugin
Which plugin would you like to customize?
plugin_01MKcJsEAmPJswuCytbMJYZJ
The user selected the productivity plugin (`plugin_01MKcJsEAmPJswuCytbMJYZJ`). Now let me read all the files in this plugin to understand its structure and look for customization points.
Ran a command, read 4 files
Now I have a good understanding of the productivity plugin. I can see it's already quite customized with specific information about:
- Will Vereen's work context (12 South Safety, FR clothing consulting)
- His clients (PG&E, Xcel Energy)
- His vendors (Tyndale)
- His colleagues and contacts
The plugin's memory-management skill has rich examples pre-populated with Will's actual context. The `~~` references in CONNECTORS.md are just documentation about the placeholder system, not actual placeholders.
Looking at the skill files:
- No `~~` placeholder patterns in the actual skills content
- The memory-management skill already contains real examples with Will's data
Let me review the CONNECTORS.md and README to get the complete picture of how this plugin is structured.
Read 2 files
Now I have a complete picture of the productivity plugin. Key findings:
1. **No `~~` template placeholders** in the skill files themselves — the `~~` in CONNECTORS.md is documentation about how the placeholder system works, not actual placeholders that need to be replaced.
2. **The memory-management SKILL.md is already highly customized** with Will Vereen's specific context — his company (12 South Safety), clients (PG&E, Xcel Energy), vendor (Tyndale), contacts, and industry terminology (FR clothing, ASTM F1506, etc.).
3. This is already a personalized plugin rather than a template waiting for customization, so I should shift into general customization mode and ask what specific changes they'd like to make to how it functions.
Asked
Changes
What would you like to change about how the Productivity plugin works?
Steps to Reproduce
Here's the first session where I created the file:
Customize the "memory-management" skill of the "productivity" plugin for me based on my company
The user wants to customize the "memory-management" skill of the "productivity" plugin based on their company. Let me use the Skill tool to invoke the cowork-plugin-management:cowork-plugin-customizer skill, which is designed for exactly this purpose.
Used Skill
The user wants to customize the "memory-management" skill of the "productivity" plugin. Let me start by finding the plugin directory.
Ran 6 commands
Found the productivity plugin at plugin_01MKcJsEAmPJswuCytbMJYZJ. Let me explore the memory-management skill and check for placeholders.
Ran 2 commands
The placeholders in the CONNECTORS.md and task-management SKILL.md look like they're using the ~~ prefix in a documentation/explanatory context, not as actual customization points to replace. The two instances in task-management/SKILL.md are using Markdown strikethrough syntax, not placeholder syntax.
So the CONNECTORS.md mentions ~~category as a concept explanation (not a placeholder to replace in that file itself), and the task-management uses ~~task~~ as Markdown strikethrough.
Let me read the memory-management SKILL.md to understand what's there and check for actual placeholders within the memory-management skill specifically.
Read 2 files
The memory-management SKILL.md has no ~~ placeholders that need to be replaced. The ~~category mentions in CONNECTORS.md are documentation explaining how the system works, not placeholders in the skill itself.
The SKILL.md has a bunch of example content like:
- "Todd Martinez, Finance lead"
- "Sarah Chen, Engineering (Platform)"
- "Greg Wilson, Sales"
- "PSR → Pipeline Status Report"
- "Oracle Systems deal ($2.3M)"
- "Slack, Asana, Salesforce, Notion" as tools
- Project names like "Phoenix", "Horizon"
These are all just examples showing how the memory system works. Since there are no actual placeholders to replace, this is a scoped customization request, so I need to ask the user what specific changes they'd like to make to the skill based on their company context.
Looking at the workflow, I should ask an open-ended question first to understand what they want to customize, then search the knowledge MCPs to gather company-specific context in the next phase.
The memory-management skill doesn't have template placeholders — it's a scoped customization. The skill contains generic example people, terms, tools, and projects that should reflect your actual company. Let me search your connected sources to learn about your org, and ask one quick question.
Used 2 tools
Now let me search for company context using the available MCPs, and ask the user a question simultaneously.
Asked
Focus area
Used 3 tools
What aspects of the memory-management skill would you most like to tailor to your company?
Tools & systems,People & roles,Terms & acronyms,Workflows & processes
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
1.2773.0
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗