Skill Tracer
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

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Example Plugins
2
3Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.
4

Example Plugins

Three complete plugin structures at different complexity levels. Use these as templates when implementing in Phase 4.

Raw lines 1 to 4
5## Minimal Plugin: Single Skill
6
7A simple plugin with one skill and no other components.
8

Minimal Plugin: Single Skill

A simple plugin with one skill and no other components.

Raw lines 5 to 8
9### 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.md
Raw lines 9 to 20
21### plugin.json
23```json
25 "name": "meeting-notes",
26 "version": "0.1.0",
27 "description": "Generate structured meeting notes from transcripts",
28 "author": {
29 "name": "User"
30 }
32```

plugin.json

{
  "name": "meeting-notes",
  "version": "0.1.0",
  "description": "Generate structured meeting notes from transcripts",
  "author": {
    "name": "User"
  }
}
Raw lines 21 to 33
34### 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 63
Uses 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.md
Raw lines 64 to 82
83### plugin.json
85```json
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 }
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 95
96### 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 fix
Raw lines 96 to 122
123### 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 143
144### 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 language
Raw lines 144 to 182
183### .mcp.json
185```json
187 "mcpServers": {
188 "github": {
189 "type": "http",
190 "url": "https://api.githubcopilot.com/mcp/"
191 }
192 }
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 201
Uses 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.md
Raw lines 202 to 225
226### plugin.json
228```json
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"]
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 239
240### 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 294
295### hooks/hooks.json
297```json
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 ]
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 313
Uses 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 332
Uses 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
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 }
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