@charzhu/openjaw-agent 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: desktop-cleanup
3
+ description: "Organize files on the desktop or any directory by categorizing into folders."
4
+ whenToUse: "User asks to organize/clean their desktop"
5
+ ---
6
+
7
+ # Skill: Desktop Cleanup & Organization
8
+
9
+ ## Description
10
+ Organize files on the user's desktop or any directory by categorizing files into folders based on type, topic, or date. Handles deduplication and creates a clean folder structure.
11
+
12
+ ## When to Use
13
+ - User asks to organize/clean their desktop
14
+ - User asks to sort files in a directory
15
+ - User says "整理一下桌面" or "帮我分类文件"
16
+
17
+ ## Steps
18
+
19
+ ### 1. Survey Current State
20
+ ```python
21
+ import os
22
+
23
+ path = os.path.expanduser('~/Desktop')
24
+ entries = os.listdir(path)
25
+ # Categorize: files vs directories, by extension
26
+ ```
27
+
28
+ ### 2. Classification Rules
29
+
30
+ | Category | Extensions / Patterns | Folder Name |
31
+ |----------|----------------------|-------------|
32
+ | Documents | .pdf, .docx, .doc, .txt, .md | 工作文档 |
33
+ | Spreadsheets | .xlsx, .xls, .csv | 数据表格 |
34
+ | Presentations | .pptx, .ppt | 演示文稿 |
35
+ | Images | .png, .jpg, .jpeg, .gif, .bmp, .svg | 图片 |
36
+ | Code | .py, .js, .ts, .html, .css, .json | 代码文件 |
37
+ | Apps | .lnk, .exe | [Categorize by app type] |
38
+ | Archives | .zip, .rar, .7z, .tar.gz | 压缩包 |
39
+ | Videos | .mp4, .avi, .mkv, .mov | 视频 |
40
+ | Investment/Finance | *Gold*, *Fund*, *Stock*, 黄金*, 基金* | 投资分析 |
41
+
42
+ ### 3. Smart Categorization
43
+ Don't just sort by extension — also check content/filename patterns:
44
+ - Financial reports → 投资分析
45
+ - PM/work reports → 工作文档
46
+ - Screenshots → 图片 or Misc Files
47
+ - App shortcuts → Group by function (Browsers, Development, etc.)
48
+
49
+ ### 4. Move Files Safely
50
+ ```python
51
+ import shutil
52
+
53
+ def safe_move(src, dst_dir, filename):
54
+ os.makedirs(dst_dir, exist_ok=True)
55
+ dst = os.path.join(dst_dir, filename)
56
+ if os.path.exists(dst):
57
+ # Add number suffix to avoid overwrite
58
+ base, ext = os.path.splitext(filename)
59
+ i = 1
60
+ while os.path.exists(dst):
61
+ dst = os.path.join(dst_dir, f"{base}_{i}{ext}")
62
+ i += 1
63
+ shutil.move(src, dst)
64
+ ```
65
+
66
+ ### 5. Respect Existing Structure
67
+ - Don't move files that are already in organized folders
68
+ - Don't touch system files (desktop.ini, etc.)
69
+ - Preserve existing folder categorization
70
+ - Ask before deleting duplicates
71
+
72
+ ### 6. Report Results
73
+ After organizing, list:
74
+ - How many files were moved
75
+ - What folders were created
76
+ - What the desktop looks like now
77
+
78
+ ## Important Notes
79
+ - **Never delete files without asking** — only move
80
+ - Skip `desktop.ini` and hidden files
81
+ - Check for duplicate shortcuts before removing
82
+ - Preserve existing folder structure — enhance, don't replace
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: doc-coauthoring
3
+ description: "Guide the user through a 3-stage workflow for co-authoring documents."
4
+ whenToUse: "User mentions writing documentation: write a doc, draft a proposal, create a spec"
5
+ ---
6
+
7
+ # Skill: Doc Co-Authoring
8
+
9
+ ## Description
10
+ Guide the user through a structured 3-stage workflow for co-authoring documents: PRDs, specs, proposals, decision docs, design docs, or any substantial writing. Adapted from Anthropic's doc-coauthoring skill for OpenJaw/PM context.
11
+
12
+ ## When to Use
13
+ - User mentions writing documentation: "write a doc", "draft a proposal", "create a spec", "write up"
14
+ - User mentions specific doc types: "PRD", "design doc", "decision doc", "RFC", "spec"
15
+ - User says "帮我写个文档" or "写个proposal"
16
+ - User seems to be starting a substantial writing task (not just a quick email)
17
+
18
+ ## Workflow Overview
19
+ Offer the 3-stage workflow. If user declines, work freeform. If they accept:
20
+
21
+ ```
22
+ Stage 1: Context Gathering → Stage 2: Refinement & Structure → Stage 3: Reader Testing
23
+ ```
24
+
25
+ ---
26
+
27
+ ## Stage 1: Context Gathering
28
+
29
+ **Goal:** Close the knowledge gap between what the user knows and what Jon knows.
30
+
31
+ ### Initial Questions (ask these first)
32
+ 1. What type of document? (spec, decision doc, proposal, PRD...)
33
+ 2. Who's the primary audience? (leadership, peer PMs, engineering, cross-team...)
34
+ 3. What impact do you want when someone reads this?
35
+ 4. Is there a template or format to follow?
36
+ 5. Language preference? (English, Chinese, mixed)
37
+ 6. Any other constraints?
38
+
39
+ ### Info Dumping
40
+ Encourage user to dump all context — don't worry about organizing:
41
+ - Background on the project/problem
42
+ - Related discussions (can point to Teams chats/channels — Jon can read them)
43
+ - Why alternative solutions aren't being used
44
+ - Timeline pressures or constraints
45
+ - Technical architecture or dependencies
46
+ - Stakeholder concerns
47
+
48
+ **Jon's special capabilities for context gathering:**
49
+ - Read Teams chat history: `teams_read_messages`
50
+ - Read emails: `outlook_read_content` / `outlook_search`
51
+ - Search memory: `memory_search`
52
+ - Browse web for background: `web_search` / `web_fetch`
53
+
54
+ ### Clarifying Questions
55
+ After initial dump, generate 5-10 numbered questions about gaps.
56
+ User can answer in shorthand: "1: yes, 2: see the Teams chat, 3: no because backwards compat"
57
+
58
+ **Exit condition:** When I can ask about edge cases and trade-offs without needing basics explained.
59
+
60
+ ---
61
+
62
+ ## Stage 2: Refinement & Structure
63
+
64
+ **Goal:** Build the document section by section through brainstorming and iteration.
65
+
66
+ ### For Each Section:
67
+ 1. **Clarifying questions** — What should this section include?
68
+ 2. **Brainstorm 5-20 options** — Points, angles, data that might belong here
69
+ 3. **User curates** — "Keep 1,4,7. Remove 3. Combine 11 and 12."
70
+ 4. **Draft the section** — Write it out
71
+ 5. **Iterate** — User gives feedback, Jon makes surgical edits
72
+ 6. **Quality check** — After 3 iterations with no major changes, ask if anything can be cut
73
+
74
+ ### Section Ordering
75
+ - Start with the section that has the most unknowns
76
+ - Leave summary/intro sections for last
77
+ - For decision docs: start with the core proposal
78
+ - For specs: start with the technical approach
79
+
80
+ ### Near Completion (80%+ done)
81
+ Re-read entire document and check for:
82
+ - Flow and consistency across sections
83
+ - Redundancy or contradictions
84
+ - "Slop" — generic filler that doesn't carry weight
85
+ - Whether every sentence earns its place
86
+
87
+ ---
88
+
89
+ ## Stage 3: Reader Testing
90
+
91
+ **Goal:** Test the document with "fresh eyes" to catch blind spots.
92
+
93
+ ### Steps:
94
+ 1. **Predict reader questions** — Generate 5-10 questions a reader would ask
95
+ 2. **Test each question** — Re-read the doc as if seeing it for the first time
96
+ 3. **Check for:**
97
+ - Ambiguity or unclear phrasing
98
+ - Assumed knowledge that isn't stated
99
+ - Internal contradictions
100
+ - Missing context for new readers
101
+ 4. **Report & fix** — List issues found, fix them
102
+
103
+ ### Exit Condition
104
+ When the doc consistently makes sense to a "fresh reader" without needing verbal explanation.
105
+
106
+ ---
107
+
108
+ ## Final Steps
109
+ 1. User does a final read-through (they own the document)
110
+ 2. Double-check facts, links, technical details
111
+ 3. Verify it achieves the intended impact
112
+
113
+ ## Output Options
114
+ - Save as markdown file
115
+ - Generate as PDF (use create-pdf-report skill)
116
+ - Generate as Word document (use create-docx skill)
117
+ - Send via email (use email-with-attachment skill)
118
+
119
+ ## Style Notes
120
+ - Be direct and procedural — don't oversell the process
121
+ - If user wants to skip a stage, let them
122
+ - Don't reprint the whole doc after every edit — show what changed
123
+ - Always give user agency to adjust the process
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: email-drafting
3
+ description: "Draft professional, audience-aware emails for any purpose."
4
+ whenToUse: "User asks to write/draft an email"
5
+ ---
6
+
7
+ # Skill: Email Drafting
8
+
9
+ ## Description
10
+ Draft professional, audience-aware emails for any purpose — status updates, leadership communications, cross-team requests, follow-ups, escalations. Adapted for Microsoft PM context with Chinese/English bilingual support.
11
+
12
+ ## When to Use
13
+ - User asks to write/draft an email
14
+ - User says "帮我写封邮件" or "draft an email"
15
+ - User wants to reply to an email and needs help with wording
16
+ - User needs to escalate, follow up, or request something via email
17
+
18
+ ## Workflow
19
+
20
+ ### 1. Understand the Context
21
+ Before drafting, clarify:
22
+ - **Audience**: Who is receiving? (skip-level leader, peer PM, engineer, external partner)
23
+ - **Purpose**: What action do you want? (inform, request, escalate, follow up)
24
+ - **Tone**: Formal? Casual? Urgent?
25
+ - **Language**: English? Chinese? Mixed?
26
+
27
+ ### 2. Structure by Purpose
28
+
29
+ #### Status Update / FYI
30
+ ```
31
+ Subject: [Topic] — [Key takeaway in 5 words]
32
+
33
+ Hi [Name],
34
+
35
+ [1 sentence context — why you're writing]
36
+
37
+ Key updates:
38
+ • [Update 1 with metric/impact]
39
+ • [Update 2 with metric/impact]
40
+ • [Update 3 with metric/impact]
41
+
42
+ Next steps: [What happens next, who owns it]
43
+
44
+ [Closing]
45
+ ```
46
+
47
+ #### Request / Ask
48
+ ```
49
+ Subject: [Action Needed] — [Specific request]
50
+
51
+ Hi [Name],
52
+
53
+ [1 sentence context]
54
+ [1 sentence why this matters]
55
+
56
+ Ask: [Clear, specific request]
57
+ Timeline: [When you need it by]
58
+
59
+ [Why this is important to them / what's in it for them]
60
+
61
+ Thanks,
62
+ ```
63
+
64
+ #### Escalation
65
+ ```
66
+ Subject: [Urgent/Priority] — [Issue] impacting [scope]
67
+
68
+ Hi [Name],
69
+
70
+ Issue: [What's happening, since when]
71
+ Impact: [Quantified impact — users affected, SLA at risk, revenue impact]
72
+ Root cause: [Known/investigating]
73
+ What we need: [Specific ask with timeline]
74
+ Mitigation: [What we're doing in the meantime]
75
+ ```
76
+
77
+ #### Follow-up (Gentle Nudge)
78
+ ```
79
+ Subject: Re: [Original subject]
80
+
81
+ Hi [Name],
82
+
83
+ Just circling back on [topic] from [date/meeting].
84
+ [Brief reminder of what was discussed/agreed]
85
+
86
+ Could you [specific action] by [date]?
87
+
88
+ Happy to discuss if there are any blockers.
89
+ ```
90
+
91
+ ### 3. Style Rules
92
+ - **Subject lines**: Front-load the key info. No vague subjects like "Quick question"
93
+ - **Length**: Shorter is better. If > 5 paragraphs, it should be a doc
94
+ - **Action items**: Bold or bullet them. Don't bury asks in paragraphs
95
+ - **CC etiquette**: Only CC people who need to know, not everyone
96
+ - **Chinese/English mix**: Use English for technical terms, Chinese for narrative when writing to Chinese colleagues
97
+ - **Avoid**: "As per my last email", "Please advise", "Hope this email finds you well"
98
+
99
+ ### 4. Sending
100
+ - Use `outlook_compose_email` for plain text
101
+ - Use Outlook REST API for emails with attachments (see email-with-attachment skill)
102
+ - **Always show draft to user before sending** (send confirmation gate)
103
+
104
+ ## Templates for Common Scenarios
105
+
106
+ ### Weekly Team Update (Chinese)
107
+ ```
108
+ Subject: [Team Name] 周报 — W[XX]
109
+
110
+ Hi all,
111
+
112
+ 本周进展:
113
+ • [重要里程碑/发布]
114
+ • [关键指标变化]
115
+
116
+ 下周计划:
117
+ • [计划1]
118
+ • [计划2]
119
+
120
+ 风险/阻塞:
121
+ • [如有]
122
+
123
+ Thanks,
124
+ ```
125
+
126
+ ### Cross-team Request (English)
127
+ ```
128
+ Subject: [Request] — Need [X] support for [project] by [date]
129
+
130
+ Hi [Name],
131
+
132
+ We're working on [project/feature] which [brief context].
133
+ To unblock [specific next step], we need your team's help with:
134
+
135
+ 1. [Specific ask]
136
+ 2. [Specific ask]
137
+
138
+ Timeline: Ideally by [date] to meet our [milestone].
139
+
140
+ Happy to set up a quick sync if helpful. Let me know!
141
+ ```
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: email-with-attachment
3
+ description: "Send emails with file attachments via Outlook REST API v2.0."
4
+ whenToUse: "User asks to email a file/document/PDF/PPTX"
5
+ ---
6
+
7
+ # Skill: Email with Attachment (Outlook REST API)
8
+
9
+ ## Description
10
+ Send emails with file attachments via Outlook REST API v2.0. Use this when the Graph channel's `outlook_compose_email` tool doesn't support attachments.
11
+
12
+ ## When to Use
13
+ - User asks to email a file/document/PDF/PPTX
14
+ - Need to send email with attachment
15
+ - Graph channel email was sent but attachment is missing
16
+
17
+ ## IMPORTANT: Use Outlook REST API, NOT Graph API, NOT COM
18
+ - Our token audience is `https://outlook.office.com` (not `https://graph.microsoft.com`)
19
+ - COM `$mail.Send()` is unreliable — emails get stuck in Outbox with lost attachments
20
+ - **Outlook REST API v2.0 is the ONLY working method** ✅
21
+
22
+ ## Steps
23
+
24
+ ### 1. Create the File First
25
+ Generate the file (PDF, PPTX, DOCX, etc.) and save to a known path:
26
+ - Temp: system temp directory (use `tempfile.gettempdir()` in Python or `$env:TEMP` in PS)
27
+ - Desktop: `~/Desktop/{filename}` (use `os.path.expanduser('~/Desktop')` in Python)
28
+
29
+ ### 2. Send via Outlook REST API v2.0
30
+ ```python
31
+ import json, os, base64, urllib.request, urllib.error
32
+
33
+ # Read token
34
+ token_path = os.path.expanduser("~/.graph-token/tokens/outlook-mail.json")
35
+ with open(token_path, 'r') as f:
36
+ token_data = json.load(f)
37
+ access_token = token_data['access_token']
38
+
39
+ # Read and encode file
40
+ with open(file_path, 'rb') as f:
41
+ file_b64 = base64.b64encode(f.read()).decode('utf-8')
42
+
43
+ # Build email payload
44
+ email_payload = {
45
+ "Message": {
46
+ "Subject": subject,
47
+ "Body": {"ContentType": "Text", "Content": body_text},
48
+ "ToRecipients": [
49
+ {"EmailAddress": {"Address": recipient}}
50
+ ],
51
+ "Attachments": [
52
+ {
53
+ "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
54
+ "Name": filename,
55
+ "ContentType": content_type, # e.g., "application/pdf"
56
+ "ContentBytes": file_b64
57
+ }
58
+ ]
59
+ },
60
+ "SaveToSentItems": "true"
61
+ }
62
+
63
+ # Send
64
+ url = "https://outlook.office.com/api/v2.0/me/sendmail"
65
+ data = json.dumps(email_payload).encode('utf-8')
66
+ req = urllib.request.Request(url, data=data, method='POST')
67
+ req.add_header('Authorization', f'Bearer {access_token}')
68
+ req.add_header('Content-Type', 'application/json')
69
+
70
+ response = urllib.request.urlopen(req)
71
+ # Status 202 = success
72
+ ```
73
+
74
+ ### 3. Content Types
75
+ | File Type | Content-Type |
76
+ |-----------|-------------|
77
+ | PDF | `application/pdf` |
78
+ | DOCX | `application/vnd.openxmlformats-officedocument.wordprocessingml.document` |
79
+ | PPTX | `application/vnd.openxmlformats-officedocument.presentationml.presentation` |
80
+ | XLSX | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` |
81
+ | PNG | `image/png` |
82
+ | ZIP | `application/zip` |
83
+
84
+ ### 4. For HTML Body
85
+ Change `"ContentType": "Text"` to `"ContentType": "HTML"` and use HTML in Content.
86
+
87
+ ### 5. For CC/BCC
88
+ Add to the Message object:
89
+ ```json
90
+ "CcRecipients": [{"EmailAddress": {"Address": "cc@microsoft.com"}}],
91
+ "BccRecipients": [{"EmailAddress": {"Address": "bcc@microsoft.com"}}]
92
+ ```
93
+
94
+ ### 6. Multiple Attachments
95
+ Add more items to the Attachments array.
96
+
97
+ ## Important Notes
98
+ - Token is at `~/.graph-token/tokens/outlook-mail.json`
99
+ - API endpoint: `https://outlook.office.com/api/v2.0/me/sendmail`
100
+ - Status 202 = Accepted (success)
101
+ - Max attachment size: ~35MB (base64 encoded)
102
+ - **Always confirm with user before sending** (send confirmation gate)
103
+ - For self-send: use the user's own email address
104
+
105
+ ## Troubleshooting
106
+ | Problem | Fix |
107
+ |---------|-----|
108
+ | 401 Invalid audience | Make sure using `outlook.office.com` NOT `graph.microsoft.com` |
109
+ | 401 Token expired | Run refresh-token skill first |
110
+ | COM Send() stuck in Outbox | Don't use COM — use this REST API method |
111
+ | Large file fails | Split into chunks or compress first |
112
+
113
+ ## Verification
114
+ Check response status code: 202 = success.
@@ -0,0 +1,88 @@
1
+ ---
2
+ name: internal-comms
3
+ description: "Write professional internal communications: status reports, 3P updates, and summaries."
4
+ whenToUse: "User asks to write a status report or weekly update"
5
+ ---
6
+
7
+ # Skill: Internal Communications
8
+
9
+ ## Description
10
+ Write professional internal communications for Microsoft PM context: status reports, 3P updates, weekly summaries, team newsletters, meeting recaps, and email drafts. Adapted from Anthropic's internal-comms skill for CharZ's team.
11
+
12
+ ## When to Use
13
+ - User asks to write a status report or weekly update
14
+ - User asks to draft an email to leadership or team
15
+ - User asks for 3P updates (Progress, Plans, Problems)
16
+ - User asks for meeting recap or summary
17
+ - User asks to write any internal communication
18
+ - User says "帮我写个周报" or "写个update"
19
+
20
+ ## Communication Types
21
+
22
+ ### 1. 3P Update (Progress / Plans / Problems)
23
+ ```
24
+ ## 📊 [Team/Area] Weekly Update — [Date]
25
+
26
+ ### ✅ Progress (What we shipped/achieved)
27
+ - [Metric improvement]: Describe quantified impact
28
+ - [Feature shipped]: What it does, who benefits
29
+ - [Milestone reached]: Context and significance
30
+
31
+ ### 📋 Plans (What's coming next)
32
+ - [Next deliverable]: ETA, owner, dependencies
33
+ - [Investigation]: What we're exploring and why
34
+ - [Upcoming milestone]: Target date and criteria
35
+
36
+ ### ⚠️ Problems (Blockers & risks)
37
+ - [Blocker]: Impact, mitigation, help needed
38
+ - [Risk]: Probability, impact, contingency plan
39
+ - [Dependency]: Who/what we're waiting on
40
+ ```
41
+
42
+ ### 2. Leadership Update
43
+ - **Keep it to 5-7 bullet points max**
44
+ - Lead with **impact and metrics**, not activities
45
+ - Use "So what?" test — every bullet should answer why leadership cares
46
+ - Include 1 clear ask if needed
47
+ - Tone: Confident, concise, data-backed
48
+
49
+ ### 3. Team Newsletter / Announcement
50
+ - Lead with the most exciting news
51
+ - Include people shoutouts (builds culture)
52
+ - Keep sections scannable (headers, bullets, bold key info)
53
+ - End with clear action items or dates
54
+
55
+ ### 4. Meeting Recap
56
+ ```
57
+ ## 📝 Meeting Recap: [Meeting Name] — [Date]
58
+
59
+ ### Attendees
60
+ [List key attendees]
61
+
62
+ ### Key Decisions
63
+ 1. [Decision]: Rationale and owner
64
+ 2. [Decision]: Impact and timeline
65
+
66
+ ### Action Items
67
+ | Owner | Action | Due Date |
68
+ |-------|--------|----------|
69
+ | Name | Task | Date |
70
+
71
+ ### Open Questions
72
+ - [Question]: Who needs to answer, by when
73
+ ```
74
+
75
+ ### 5. Incident Report
76
+ - Timeline of events (UTC timestamps)
77
+ - Root cause analysis
78
+ - Customer impact (quantified)
79
+ - Mitigation steps taken
80
+ - Follow-up actions with owners and dates
81
+
82
+ ## Style Guidelines for CharZ's Team
83
+ - **Language**: Mix Chinese and English naturally (Chinese for narrative, English for technical terms)
84
+ - **Tone**: Professional but not stiff — CharZ's team has a casual, friendly culture
85
+ - **Data first**: Always quantify impact when possible
86
+ - **Attribution**: Credit specific people by name
87
+ - **Brevity**: If it can be said in 3 bullets, don't use 5
88
+ - **Emoji**: Use sparingly for section headers, not in every sentence
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: meeting-summarizer
3
+ description: "Summarize meeting content into structured notes with decisions and action items."
4
+ whenToUse: "User provides meeting transcript or notes to summarize"
5
+ ---
6
+
7
+ # Skill: Meeting Summarizer
8
+
9
+ ## Description
10
+ Summarize meeting content into structured notes with decisions, action items, and follow-ups. Works with meeting transcripts, chat logs, email threads, or verbal descriptions.
11
+
12
+ ## When to Use
13
+ - User provides meeting transcript or notes to summarize
14
+ - User says "帮我整理会议纪要" or "summarize this meeting"
15
+ - User pastes a long chat/email thread and wants key points
16
+ - After reading Teams/Outlook content that contains meeting discussions
17
+
18
+ ## Workflow
19
+
20
+ ### 1. Input Sources
21
+ - Meeting transcript (text pasted by user)
22
+ - Teams chat history (read via `teams_read_messages`)
23
+ - Email thread (read via `outlook_read_content`)
24
+ - User's verbal description of what happened
25
+
26
+ ### 2. Output Structure
27
+ ```markdown
28
+ # Meeting Summary: [Meeting Name]
29
+ **Date:** [Date] | **Duration:** [if known]
30
+ **Attendees:** [List]
31
+
32
+ ## Key Decisions
33
+ 1. **[Decision]** — [Brief rationale]
34
+ 2. **[Decision]** — [Brief rationale]
35
+
36
+ ## Discussion Highlights
37
+ - [Topic 1]: [Key points, different viewpoints, conclusion]
38
+ - [Topic 2]: [Key points, different viewpoints, conclusion]
39
+
40
+ ## Action Items
41
+ | # | Owner | Action | Due Date | Status |
42
+ |---|-------|--------|----------|--------|
43
+ | 1 | [Name] | [Task] | [Date] | Pending |
44
+ | 2 | [Name] | [Task] | [Date] | Pending |
45
+
46
+ ## Open Questions
47
+ - [Question needing resolution] — Owner: [Name]
48
+
49
+ ## Next Meeting
50
+ - [Date/time if scheduled]
51
+ - [Topics to cover]
52
+ ```
53
+
54
+ ### 3. Processing Rules
55
+ - **Decisions**: Extract only clearly agreed-upon outcomes, not suggestions
56
+ - **Action items**: Must have an owner and ideally a due date
57
+ - **Be concise**: Meeting was 1 hour? Summary should be < 1 page
58
+ - **Separate facts from opinions**: Note where there was disagreement
59
+ - **Prioritize**: Lead with decisions and actions, not discussion play-by-play
60
+ - **Language**: Match the language of the original content. If mixed, use the dominant language
61
+
62
+ ### 4. For Long Transcripts
63
+ - First pass: Identify speakers and topic changes
64
+ - Second pass: Extract decisions and action items
65
+ - Third pass: Summarize discussion points
66
+ - Final: Organize into template
67
+
68
+ ### 5. Distribution
69
+ After user approves:
70
+ - Send via email (`outlook_compose_email` or REST API with attachment)
71
+ - Post to Teams chat/channel (`teams_send_message`)
72
+ - Save as PDF (use create-pdf-report skill)
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: proofreading
3
+ description: "Review and improve text for grammar, spelling, clarity, tone, and style."
4
+ whenToUse: "User asks to review/proofread/polish text before sending"
5
+ ---
6
+
7
+ # Skill: Proofreading & Polish
8
+
9
+ ## Description
10
+ Review and improve text for grammar, spelling, clarity, tone, and style. Works for emails, documents, chat messages, and presentations in both English and Chinese.
11
+
12
+ ## When to Use
13
+ - User asks to review/proofread/polish text before sending
14
+ - User says "帮我看看这个" or "check this before I send"
15
+ - User wants to improve the quality of a draft
16
+ - Before sending important emails or documents
17
+
18
+ ## Workflow
19
+
20
+ ### 1. Quick Scan (Automated Checks)
21
+ - Spelling errors
22
+ - Grammar mistakes (subject-verb agreement, tense, articles)
23
+ - Punctuation (missing periods, comma splices, semicolon misuse)
24
+ - Repeated words
25
+ - Inconsistent formatting (bullet styles, heading levels)
26
+
27
+ ### 2. Clarity Pass
28
+ - Sentences > 30 words → suggest breaking up
29
+ - Passive voice → suggest active where appropriate
30
+ - Vague language ("some", "various", "things") → suggest specifics
31
+ - Jargon check → is the audience familiar with these terms?
32
+ - Remove filler: "basically", "actually", "in order to", "at this point in time"
33
+
34
+ ### 3. Tone Check
35
+ | Audience | Tone Adjustments |
36
+ |----------|-----------------|
37
+ | Leadership/skip-level | More confident, less hedging, lead with impact |
38
+ | Peer PM | Conversational but professional |
39
+ | Engineering team | Technical, precise, action-oriented |
40
+ | External partner | Formal, diplomatic, clear |
41
+ | Team chat | Casual OK, but still clear |
42
+
43
+ ### 4. Chinese-Specific Checks
44
+ - 的地得 usage (的=noun modifier, 地=adverb modifier, 得=complement)
45
+ - 了/着/过 tense markers
46
+ - Avoid 翻译腔 (translationese)
47
+ - Consistent use of 你/您 (formality)
48
+ - Punctuation: Chinese punctuation marks (,。!?) vs English
49
+
50
+ ### 5. English-Specific Checks
51
+ - Article usage (a/an/the) — especially tricky for Chinese speakers
52
+ - Preposition choice (in/on/at, to/for/with)
53
+ - Countable vs uncountable nouns
54
+ - Verb tense consistency
55
+ - Oxford comma consistency
56
+
57
+ ### 6. Output Format
58
+ ```
59
+ ## Proofread Result
60
+
61
+ ### Changes Made
62
+ 1. [Original] → [Corrected] — [Reason]
63
+ 2. [Original] → [Corrected] — [Reason]
64
+
65
+ ### Suggestions (Optional)
66
+ - Consider rephrasing: "[sentence]" → "[suggestion]" for [clarity/tone/conciseness]
67
+
68
+ ### Polished Version
69
+ [Full corrected text]
70
+ ```
71
+
72
+ ### 7. Rules
73
+ - **Don't change the author's voice** — improve, don't rewrite
74
+ - **Preserve technical terms** exactly as written
75
+ - **Mark changes clearly** so user can accept/reject each one
76
+ - **Be opinionated on errors, gentle on style suggestions**
77
+ - **For sensitive content**: Follow confidentiality rules (no salary/review info leaking through corrections)