Skills › Knowledge Work Plugins › create-cowork-plugin › example-plugins.md
example-plugins.md
352 lines · cowork-plugin-management/skills/create-cowork-plugin/references/example-plugins.md at 2574e29
Most marks come from matching words in the file, so treat them as pointers.
1# Example Plugins
3Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.
Example Plugins
Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.
Raw lines 1 to 49### Structure
11```
12meeting-notes/
13├── .claude-plugin/
14│ └── plugin.json
15├── skills/
16│ └── meeting-notes/
17│ └── SKILL.md
18└── README.md
19```
Structure
meeting-notes/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ └── meeting-notes/
│ └── SKILL.md
└── README.mdRaw lines 9 to 2021### plugin.json
23```json
24{
25 "name": "meeting-notes",
26 "version": "0.1.0",
27 "description": "Generate structured meeting notes from transcripts",
28 "author": {
29 "name": "User"
30 }
31}
32```
plugin.json
{
"name": "meeting-notes",
"version": "0.1.0",
"description": "Generate structured meeting notes from transcripts",
"author": {
"name": "User"
}
}Raw lines 21 to 3334### skills/meeting-notes/SKILL.md
36```markdown
37---
38name: meeting-notes
39description: >
40 Generate structured meeting notes from a transcript. Use when the user asks
41 to "summarize this meeting", "create meeting notes", "extract action items
42 from this transcript", or provides a meeting transcript file.
43---
45Read the transcript file the user provided and generate structured meeting notes.
47Include these sections:
491. **Attendees** — list all participants mentioned
502. **Summary** — 2-3 sentence overview of the meeting
513. **Key Decisions** — numbered list of decisions made
524. **Action Items** — table with columns: Owner, Task, Due Date
535. **Open Questions** — anything unresolved
55Write the notes to a new file named after the transcript with `-notes` appended.
56```
58---
skills/meeting-notes/SKILL.md
---
name: meeting-notes
description: >
Generate structured meeting notes from a transcript. Use when the user asks
to "summarize this meeting", "create meeting notes", "extract action items
from this transcript", or provides a meeting transcript file.
---
Read the transcript file the user provided and generate structured meeting notes.
Include these sections:
1. **Attendees** — list all participants mentioned
2. **Summary** — 2-3 sentence overview of the meeting
3. **Key Decisions** — numbered list of decisions made
4. **Action Items** — table with columns: Owner, Task, Due Date
5. **Open Questions** — anything unresolved
Write the notes to a new file named after the transcript with `-notes` appended.Raw lines 34 to 59
60## Standard Plugin: Skills + MCP
62A plugin that combines domain knowledge, user-initiated actions, and external service integration.
Standard Plugin: Skills + MCP
A plugin that combines domain knowledge, user-initiated actions, and external service integration.
Raw lines 60 to 63Uses an outside tool MCP :60
64### Structure
66```
67code-quality/
68├── .claude-plugin/
69│ └── plugin.json
70├── skills/
71│ ├── coding-standards/
72│ │ ├── SKILL.md
73│ │ └── references/
74│ │ └── style-rules.md
75│ ├── review-changes/
76│ │ └── SKILL.md
77│ └── fix-lint/
78│ └── SKILL.md
79├── .mcp.json
80└── README.md
81```
Structure
code-quality/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── coding-standards/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── style-rules.md
│ ├── review-changes/
│ │ └── SKILL.md
│ └── fix-lint/
│ └── SKILL.md
├── .mcp.json
└── README.mdRaw lines 64 to 8283### plugin.json
85```json
86{
87 "name": "code-quality",
88 "version": "0.1.0",
89 "description": "Enforce coding standards with reviews, linting, and style guidance",
90 "author": {
91 "name": "User"
92 }
93}
94```
plugin.json
{
"name": "code-quality",
"version": "0.1.0",
"description": "Enforce coding standards with reviews, linting, and style guidance",
"author": {
"name": "User"
}
}Raw lines 83 to 9596### skills/review-changes/SKILL.md
98```markdown
99---
100name: review-changes
101description: >
102 Review code changes for style and quality issues. Use when the user asks to
103 "review my changes", "check this diff", "review for style violations", or
104 wants a code quality pass on uncommitted work.
105---
107Run `git diff --name-only` to get the list of changed files.
109For each changed file:
1111. Read the file
1122. Check against the coding-standards skill for style violations
1133. Identify potential bugs or anti-patterns
1144. Flag any security concerns
116Present a summary with:
118- File path
119- Issue severity (Error, Warning, Info)
120- Description and suggested fix
121```
skills/review-changes/SKILL.md
---
name: review-changes
description: >
Review code changes for style and quality issues. Use when the user asks to
"review my changes", "check this diff", "review for style violations", or
wants a code quality pass on uncommitted work.
---
Run `git diff --name-only` to get the list of changed files.
For each changed file:
1. Read the file
2. Check against the coding-standards skill for style violations
3. Identify potential bugs or anti-patterns
4. Flag any security concerns
Present a summary with:
- File path
- Issue severity (Error, Warning, Info)
- Description and suggested fixRaw lines 96 to 122123### skills/fix-lint/SKILL.md
125```markdown
126---
127name: fix-lint
128description: >
129 Auto-fix linting issues in changed files. Use when the user asks to
130 "fix lint errors", "clean up linting", or "auto-fix my lint issues".
131---
133Run the linter: `npm run lint -- --format json 2>&1`
135Parse the linter output and fix each issue:
137- For auto-fixable issues, apply the fix directly
138- For manual-fix issues, make the correction following project conventions
139- Skip issues that require architectural changes
141After all fixes, run the linter again to confirm clean output.
142```
skills/fix-lint/SKILL.md
---
name: fix-lint
description: >
Auto-fix linting issues in changed files. Use when the user asks to
"fix lint errors", "clean up linting", or "auto-fix my lint issues".
---
Run the linter: `npm run lint -- --format json 2>&1`
Parse the linter output and fix each issue:
- For auto-fixable issues, apply the fix directly
- For manual-fix issues, make the correction following project conventions
- Skip issues that require architectural changes
After all fixes, run the linter again to confirm clean output.Raw lines 123 to 143144### skills/coding-standards/SKILL.md
146```yaml
147---
148name: coding-standards
149description: >
150 This skill should be used when the user asks about "coding standards",
151 "style guide", "naming conventions", "code formatting rules", or needs
152 guidance on project-specific code quality expectations.
153metadata:
154 version: "0.1.0"
155---
156```
158```markdown
159# Coding Standards
161Project coding standards and conventions for consistent, high-quality code.
163## Core Rules
165- Use camelCase for variables and functions
166- Use PascalCase for classes and types
167- Prefer const over let; avoid var
168- Maximum line length: 100 characters
169- Use explicit return types on all exported functions
171## Import Order
1731. External packages
1742. Internal packages (aliased with @/)
1753. Relative imports
1764. Type-only imports last
178## Additional Resources
180- **`references/style-rules.md`** — complete style rules by language
181```
skills/coding-standards/SKILL.md
---
name: coding-standards
description: >
This skill should be used when the user asks about "coding standards",
"style guide", "naming conventions", "code formatting rules", or needs
guidance on project-specific code quality expectations.
metadata:
version: "0.1.0"
---# Coding Standards
Project coding standards and conventions for consistent, high-quality code.
## Core Rules
- Use camelCase for variables and functions
- Use PascalCase for classes and types
- Prefer const over let; avoid var
- Maximum line length: 100 characters
- Use explicit return types on all exported functions
## Import Order
1. External packages
2. Internal packages (aliased with @/)
3. Relative imports
4. Type-only imports last
## Additional Resources
- **`references/style-rules.md`** — complete style rules by languageRaw lines 144 to 182183### .mcp.json
185```json
186{
187 "mcpServers": {
188 "github": {
189 "type": "http",
190 "url": "https://api.githubcopilot.com/mcp/"
191 }
192 }
193}
194```
196---
.mcp.json
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}Raw lines 183 to 197
198## Full-Featured Plugin: All Component Types
200A plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors.
Full-Featured Plugin: All Component Types
A plugin using skills, agents, hooks, and MCP integration with tool-agnostic connectors.
Raw lines 198 to 201Uses an outside tool MCP :200
202### Structure
204```
205engineering-workflow/
206├── .claude-plugin/
207│ └── plugin.json
208├── skills/
209│ ├── team-processes/
210│ │ ├── SKILL.md
211│ │ └── references/
212│ │ └── workflow-guide.md
213│ ├── standup-prep/
214│ │ └── SKILL.md
215│ └── create-ticket/
216│ └── SKILL.md
217├── agents/
218│ └── ticket-analyzer.md
219├── hooks/
220│ └── hooks.json
221├── .mcp.json
222├── CONNECTORS.md
223└── README.md
224```
Structure
engineering-workflow/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── team-processes/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── workflow-guide.md
│ ├── standup-prep/
│ │ └── SKILL.md
│ └── create-ticket/
│ └── SKILL.md
├── agents/
│ └── ticket-analyzer.md
├── hooks/
│ └── hooks.json
├── .mcp.json
├── CONNECTORS.md
└── README.mdRaw lines 202 to 225226### plugin.json
228```json
229{
230 "name": "engineering-workflow",
231 "version": "0.1.0",
232 "description": "Streamline engineering workflows: standup prep, ticket management, and code quality",
233 "author": {
234 "name": "User"
235 },
236 "keywords": ["engineering", "workflow", "tickets", "standup"]
237}
238```
plugin.json
{
"name": "engineering-workflow",
"version": "0.1.0",
"description": "Streamline engineering workflows: standup prep, ticket management, and code quality",
"author": {
"name": "User"
},
"keywords": ["engineering", "workflow", "tickets", "standup"]
}Raw lines 226 to 239240### agents/ticket-analyzer.md
242```markdown
243---
244name: ticket-analyzer
245description: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog.
247<example>
248Context: User is preparing for sprint planning
249user: "Help me triage these new tickets"
250assistant: "I'll use the ticket-analyzer agent to review and categorize the tickets."
251<commentary>
252Ticket triage requires systematic analysis across multiple dimensions, making the agent appropriate.
253</commentary>
254</example>
256<example>
257Context: User has a large backlog
258user: "Prioritize my backlog for next sprint"
259assistant: "Let me analyze the backlog using the ticket-analyzer agent to recommend priorities."
260<commentary>
261Backlog prioritization is a multi-step autonomous task well-suited for the agent.
262</commentary>
263</example>
265model: inherit
266color: cyan
267tools: ["Read", "Grep"]
268---
270You are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies.
272**Your Core Responsibilities:**
2741. Categorize tickets by type (bug, feature, tech debt, improvement)
2752. Estimate relative effort (S, M, L, XL)
2763. Identify dependencies between tickets
2774. Recommend priority ordering
279**Analysis Process:**
2811. Read all ticket descriptions
2822. Categorize each by type
2833. Estimate effort based on scope
2844. Map dependencies
2855. Rank by impact-to-effort ratio
287**Output Format:**
288| Ticket | Type | Effort | Dependencies | Priority |
289|--------|------|--------|-------------|----------|
290| ... | ... | ... | ... | ... |
292Followed by a brief rationale for the top 5 priorities.
293```
agents/ticket-analyzer.md
---
name: ticket-analyzer
description: Use this agent when the user needs to analyze tickets, triage incoming issues, or prioritize a backlog.
<example>
Context: User is preparing for sprint planning
user: "Help me triage these new tickets"
assistant: "I'll use the ticket-analyzer agent to review and categorize the tickets."
<commentary>
Ticket triage requires systematic analysis across multiple dimensions, making the agent appropriate.
</commentary>
</example>
<example>
Context: User has a large backlog
user: "Prioritize my backlog for next sprint"
assistant: "Let me analyze the backlog using the ticket-analyzer agent to recommend priorities."
<commentary>
Backlog prioritization is a multi-step autonomous task well-suited for the agent.
</commentary>
</example>
model: inherit
color: cyan
tools: ["Read", "Grep"]
---
You are a ticket analysis specialist. Analyze tickets for priority, effort, and dependencies.
**Your Core Responsibilities:**
1. Categorize tickets by type (bug, feature, tech debt, improvement)
2. Estimate relative effort (S, M, L, XL)
3. Identify dependencies between tickets
4. Recommend priority ordering
**Analysis Process:**
1. Read all ticket descriptions
2. Categorize each by type
3. Estimate effort based on scope
4. Map dependencies
5. Rank by impact-to-effort ratio
**Output Format:**
| Ticket | Type | Effort | Dependencies | Priority |
|--------|------|--------|-------------|----------|
| ... | ... | ... | ... | ... |
Followed by a brief rationale for the top 5 priorities.Raw lines 240 to 294295### hooks/hooks.json
297```json
298{
299 "SessionStart": [
300 {
301 "matcher": "",
302 "hooks": [
303 {
304 "type": "command",
305 "command": "echo '## Team Context\n\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'",
306 "timeout": 5
307 }
308 ]
309 }
310 ]
311}
312```
hooks/hooks.json
{
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo '## Team Context\n\nSprint cycle: 2 weeks. Standup: daily at 9:30 AM. Use ~~project tracker for ticket management.'",
"timeout": 5
}
]
}
]
}Raw lines 295 to 313Uses an outside tool ~~project :305
314### CONNECTORS.md
316```markdown
317# Connectors
319## How tool references work
321Plugin files use `~~category` as a placeholder for whatever tool the user
322connects in that category. Plugins are tool-agnostic.
324## Connectors for this plugin
326| Category | Placeholder | Included servers | Other options |
327| --------------- | ------------------- | ---------------- | ------------------- |
328| Project tracker | `~~project tracker` | Linear | Asana, Jira, Monday |
329| Chat | `~~chat` | Slack | Microsoft Teams |
330| Source control | `~~source control` | GitHub | GitLab, Bitbucket |
331```
CONNECTORS.md
# Connectors
## How tool references work
Plugin files use `~~category` as a placeholder for whatever tool the user
connects in that category. Plugins are tool-agnostic.
## Connectors for this plugin
| Category | Placeholder | Included servers | Other options |
| --------------- | ------------------- | ---------------- | ------------------- |
| Project tracker | `~~project tracker` | Linear | Asana, Jira, Monday |
| Chat | `~~chat` | Slack | Microsoft Teams |
| Source control | `~~source control` | GitHub | GitLab, Bitbucket |Raw lines 314 to 332Uses an outside tool ~~category :321
Uses an outside tool ~~project :328
Uses an outside tool ~~chat :329
Uses an outside tool ~~source :330
333### .mcp.json
335```json
336{
337 "mcpServers": {
338 "linear": {
339 "type": "sse",
340 "url": "https://mcp.linear.app/sse"
341 },
342 "github": {
343 "type": "http",
344 "url": "https://api.githubcopilot.com/mcp/"
345 },
346 "slack": {
347 "type": "http",
348 "url": "https://slack.mcp.claude.com/mcp"
349 }
350 }
351}
352```
.mcp.json
{
"mcpServers": {
"linear": {
"type": "sse",
"url": "https://mcp.linear.app/sse"
},
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"slack": {
"type": "http",
"url": "https://slack.mcp.claude.com/mcp"
}
}
}Raw lines 333 to 352