chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 12:20:06 +08:00
commit f4548892ad
1138 changed files with 185224 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
{
"name": "productivity",
"version": "1.3.0",
"description": "Manage tasks, plan your day, and build up memory of important context about your work. Syncs with your calendar, email, and chat to keep everything organized and on track.",
"author": {
"name": "Anthropic"
}
}
+44
View File
@@ -0,0 +1,44 @@
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "1601185624273.8899143856786",
"callbackPort": 3118
}
},
"notion": {
"type": "http",
"url": "https://mcp.notion.com/mcp"
},
"asana": {
"type": "http",
"url": "https://mcp.asana.com/v2/mcp"
},
"linear": {
"type": "http",
"url": "https://mcp.linear.app/mcp"
},
"atlassian": {
"type": "http",
"url": "https://mcp.atlassian.com/v1/mcp"
},
"monday": {
"type": "http",
"url": "https://mcp.monday.com/mcp"
},
"clickup": {
"type": "http",
"url": "https://mcp.clickup.com/mcp"
},
"google calendar": {
"type": "http",
"url": ""
},
"gmail": {
"type": "http",
"url": ""
}
}
}
+18
View File
@@ -0,0 +1,18 @@
# Connectors
## How tool references work
Plugin files use `~~category` as a placeholder for whatever tool the user connects in that category. For example, `~~project tracker` might mean Asana, Linear, Jira, or any other project tracker with an MCP server.
Plugins are **tool-agnostic** — they describe workflows in terms of categories (chat, project tracker, knowledge base, etc.) rather than specific products. The `.mcp.json` pre-configures specific MCP servers, but any MCP server in that category works.
## Connectors for this plugin
| Category | Placeholder | Included servers | Other options |
|----------|-------------|-----------------|---------------|
| Chat | `~~chat` | Slack | Microsoft Teams, Discord |
| Email | `~~email` | Microsoft 365 | — |
| Calendar | `~~calendar` | Microsoft 365 | — |
| Knowledge base | `~~knowledge base` | Notion | Confluence, Guru, Coda |
| Project tracker | `~~project tracker` | Asana, Linear, Atlassian (Jira/Confluence), monday.com, ClickUp | Shortcut, Basecamp, Wrike |
| Office suite | `~~office suite` | Microsoft 365 | — |
+202
View File
@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+96
View File
@@ -0,0 +1,96 @@
# Productivity Plugin
A productivity plugin primarily designed for [Cowork](https://claude.com/product/cowork), Anthropic's agentic desktop application — though it also works in Claude Code. Task management, workplace memory, and a visual dashboard — Claude learns your people, projects, and terminology so it can act like a colleague, not a chatbot.
## Installation
```
claude plugins add knowledge-work-plugins/productivity
```
## What It Does
This plugin gives Claude a persistent understanding of your work:
- **Task management** — A markdown task list (`TASKS.md`) that Claude reads, writes, and executes against. Add tasks naturally, and Claude tracks status, triages stale items, and syncs with external tools.
- **Workplace memory** — A two-tier memory system that teaches Claude your shorthand, people, projects, and terminology. Say "ask todd to do the PSR for oracle" and Claude knows exactly who, what, and which deal.
- **Visual dashboard** — A local HTML file that gives you a board view of your tasks and a live view of what Claude knows about your workplace. Edit from the board or the file — they stay in sync.
## Commands
| Command | What it does |
|---------|--------------|
| `/start` | Initialize tasks + memory, open the dashboard |
| `/update` | Triage stale items, check memory for gaps, sync from external tools if applicable |
| `/update --comprehensive` | Deep scan email, calendar, chat — flag missed todos and suggest new memories |
## Skills
| Skill | Description |
|-------|-------------|
| `memory-management` | Two-tier memory system — CLAUDE.md for working memory, memory/ directory for deep storage |
| `task-management` | Markdown-based task tracking using a shared TASKS.md file |
## Example Workflows
### Getting Started
```
You: /start
Claude: [Creates TASKS.md, CLAUDE.md, memory/ directory, and dashboard.html]
[Opens the dashboard in your browser]
[Asks about your role, team, and current priorities to seed memory]
```
### Adding Tasks Naturally
```
You: I need to review the budget proposal for Sarah by Friday,
draft the Q2 roadmap after syncing with Greg, and follow up
on the API spec from the Platform team
Claude: [Adds all three tasks to TASKS.md with context]
[Dashboard updates automatically]
```
### Morning Sync
```
You: /update --comprehensive
Claude: [Scans email, calendar, and chat for new action items]
[Flags: "Budget proposal review is due tomorrow — still open"]
[Suggests: "New person mentioned in 3 threads: Jamie Park,
Design Lead — add to memory?"]
[Updates stale tasks and fills memory gaps]
```
### Workplace Shorthand
Once memory is populated, Claude decodes your shorthand instantly:
```
You: ask todd to do the PSR for oracle
Claude: "Ask Todd Martinez (Finance lead) to prepare the Pipeline
Status Report for the Oracle Systems deal ($2.3M, closing Q2)"
```
No clarifying questions. No round trips.
## Data Sources
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](CONNECTORS.md).
Connect your communication and project management tools for the best experience. Without them, manage tasks and memory manually.
**Included MCP connections:**
- Chat (Slack) for team context and message scanning
- Email and calendar (Microsoft 365) for action item discovery
- Knowledge base (Notion) for reference documents
- Project tracker (Asana, Linear, Atlassian, monday.com, ClickUp) for task syncing
- Office suite (Microsoft 365) for documents
**Additional options:**
- See [CONNECTORS.md](CONNECTORS.md) for alternative tools in each category
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,323 @@
---
name: memory-management
description: Two-tier memory system that makes Claude a true workplace collaborator. Decodes shorthand, acronyms, nicknames, and internal language so Claude understands requests like a colleague would. CLAUDE.md for working memory, memory/ directory for the full knowledge base.
user-invocable: false
---
# Memory Management
Memory makes Claude your workplace collaborator - someone who speaks your internal language.
## The Goal
Transform shorthand into understanding:
```
User: "ask todd to do the PSR for oracle"
↓ Claude decodes
"Ask Todd Martinez (Finance lead) to prepare the Pipeline Status Report
for the Oracle Systems deal ($2.3M, closing Q2)"
```
Without memory, that request is meaningless. With memory, Claude knows:
- **todd** → Todd Martinez, Finance lead, prefers Slack
- **PSR** → Pipeline Status Report (weekly sales doc)
- **oracle** → Oracle Systems deal, not the company
## Architecture
```
CLAUDE.md ← Hot cache (~30 people, common terms)
memory/
glossary.md ← Full decoder ring (everything)
people/ ← Complete profiles
projects/ ← Project details
context/ ← Company, teams, tools
```
**CLAUDE.md (Hot Cache):**
- Top ~30 people you interact with most
- ~30 most common acronyms/terms
- Active projects (5-15)
- Your preferences
- **Goal: Cover 90% of daily decoding needs**
**memory/glossary.md (Full Glossary):**
- Complete decoder ring - everyone, every term
- Searched when something isn't in CLAUDE.md
- Can grow indefinitely
**memory/people/, projects/, context/:**
- Rich detail when needed for execution
- Full profiles, history, context
## Lookup Flow
```
User: "ask todd about the PSR for phoenix"
1. Check CLAUDE.md (hot cache)
→ Todd? ✓ Todd Martinez, Finance
→ PSR? ✓ Pipeline Status Report
→ Phoenix? ✓ DB migration project
2. If not found → search memory/glossary.md
→ Full glossary has everyone/everything
3. If still not found → ask user
→ "What does X mean? I'll remember it."
```
This tiered approach keeps CLAUDE.md lean (~100 lines) while supporting unlimited scale in memory/.
## File Locations
- **Working memory:** `CLAUDE.md` in current working directory
- **Deep memory:** `memory/` subdirectory
## Working Memory Format (CLAUDE.md)
Use tables for compactness. Target ~50-80 lines total.
```markdown
# Memory
## Me
[Name], [Role] on [Team]. [One sentence about what I do.]
## People
| Who | Role |
|-----|------|
| **Todd** | Todd Martinez, Finance lead |
| **Sarah** | Sarah Chen, Engineering (Platform) |
| **Greg** | Greg Wilson, Sales |
→ Full list: memory/glossary.md, profiles: memory/people/
## Terms
| Term | Meaning |
|------|---------|
| PSR | Pipeline Status Report |
| P0 | Drop everything priority |
| standup | Daily 9am sync |
→ Full glossary: memory/glossary.md
## Projects
| Name | What |
|------|------|
| **Phoenix** | DB migration, Q2 launch |
| **Horizon** | Mobile app redesign |
→ Details: memory/projects/
## Preferences
- 25-min meetings with buffers
- Async-first, Slack over email
- No meetings Friday afternoons
```
## Deep Memory Format (memory/)
**memory/glossary.md** - The decoder ring:
```markdown
# Glossary
Workplace shorthand, acronyms, and internal language.
## Acronyms
| Term | Meaning | Context |
|------|---------|---------|
| PSR | Pipeline Status Report | Weekly sales doc |
| OKR | Objectives & Key Results | Quarterly planning |
| P0/P1/P2 | Priority levels | P0 = drop everything |
## Internal Terms
| Term | Meaning |
|------|---------|
| standup | Daily 9am sync in #engineering |
| the migration | Project Phoenix database work |
| ship it | Deploy to production |
| escalate | Loop in leadership |
## Nicknames → Full Names
| Nickname | Person |
|----------|--------|
| Todd | Todd Martinez (Finance) |
| T | Also Todd Martinez |
## Project Codenames
| Codename | Project |
|----------|---------|
| Phoenix | Database migration |
| Horizon | New mobile app |
```
**memory/people/{name}.md:**
```markdown
# Todd Martinez
**Also known as:** Todd, T
**Role:** Finance Lead
**Team:** Finance
**Reports to:** CFO (Michael Chen)
## Communication
- Prefers Slack DM
- Quick responses, very direct
- Best time: mornings
## Context
- Handles all PSRs and financial reporting
- Key contact for deal approvals over $500k
- Works closely with Sales on forecasting
## Notes
- Cubs fan, likes talking baseball
```
**memory/projects/{name}.md:**
```markdown
# Project Phoenix
**Codename:** Phoenix
**Also called:** "the migration"
**Status:** Active, launching Q2
## What It Is
Database migration from legacy Oracle to PostgreSQL.
## Key People
- Sarah - tech lead
- Todd - budget owner
- Greg - stakeholder (sales impact)
## Context
$1.2M budget, 6-month timeline. Critical path for Horizon project.
```
**memory/context/company.md:**
```markdown
# Company Context
## Tools & Systems
| Tool | Used for | Internal name |
|------|----------|---------------|
| Slack | Communication | - |
| Asana | Engineering tasks | - |
| Salesforce | CRM | "SF" or "the CRM" |
| Notion | Docs/wiki | - |
## Teams
| Team | What they do | Key people |
|------|--------------|------------|
| Platform | Infrastructure | Sarah (lead) |
| Finance | Money stuff | Todd (lead) |
| Sales | Revenue | Greg |
## Processes
| Process | What it means |
|---------|---------------|
| Weekly sync | Monday 10am all-hands |
| Ship review | Thursday deploy approval |
```
## How to Interact
### Decoding User Input (Tiered Lookup)
**Always** decode shorthand before acting on requests:
```
1. CLAUDE.md (hot cache) → Check first, covers 90% of cases
2. memory/glossary.md → Full glossary if not in hot cache
3. memory/people/, projects/ → Rich detail when needed
4. Ask user → Unknown term? Learn it.
```
Example:
```
User: "ask todd to do the PSR for oracle"
CLAUDE.md lookup:
"todd" → Todd Martinez, Finance ✓
"PSR" → Pipeline Status Report ✓
"oracle" → (not in hot cache)
memory/glossary.md lookup:
"oracle" → Oracle Systems deal ($2.3M) ✓
Now Claude can act with full context.
```
### Adding Memory
When user says "remember this" or "X means Y":
1. **Glossary items** (acronyms, terms, shorthand):
- Add to memory/glossary.md
- If frequently used, add to CLAUDE.md Quick Glossary
2. **People:**
- Create/update memory/people/{name}.md
- Add to CLAUDE.md Key People if important
- **Capture nicknames** - critical for decoding
3. **Projects:**
- Create/update memory/projects/{name}.md
- Add to CLAUDE.md Active Projects if current
- **Capture codenames** - "Phoenix", "the migration", etc.
4. **Preferences:** Add to CLAUDE.md Preferences section
### Recalling Memory
When user asks "who is X" or "what does X mean":
1. Check CLAUDE.md first
2. Check memory/ for full detail
3. If not found: "I don't know what X means yet. Can you tell me?"
### Progressive Disclosure
1. Load CLAUDE.md for quick parsing of any request
2. Dive into memory/ when you need full context for execution
3. Example: drafting an email to todd about the PSR
- CLAUDE.md tells you Todd = Todd Martinez, PSR = Pipeline Status Report
- memory/people/todd-martinez.md tells you he prefers Slack, is direct
## Bootstrapping
Use `/productivity:start` to initialize by scanning your chat, calendar, email, and documents. Extracts people, projects, and starts building the glossary.
## Conventions
- **Bold** terms in CLAUDE.md for scannability
- Keep CLAUDE.md under ~100 lines (the "hot 30" rule)
- Filenames: lowercase, hyphens (`todd-martinez.md`, `project-phoenix.md`)
- Always capture nicknames and alternate names
- Glossary tables for easy lookup
- When something's used frequently, promote it to CLAUDE.md
- When something goes stale, demote it to memory/ only
## What Goes Where
| Type | CLAUDE.md (Hot Cache) | memory/ (Full Storage) |
|------|----------------------|------------------------|
| Person | Top ~30 frequent contacts | glossary.md + people/{name}.md |
| Acronym/term | ~30 most common | glossary.md (complete list) |
| Project | Active projects only | glossary.md + projects/{name}.md |
| Nickname | In Key People if top 30 | glossary.md (all nicknames) |
| Company context | Quick reference only | context/company.md |
| Preferences | All preferences | - |
| Historical/stale | ✗ Remove | ✓ Keep in memory/ |
## Promotion / Demotion
**Promote to CLAUDE.md when:**
- You use a term/person frequently
- It's part of active work
**Demote to memory/ only when:**
- Project completed
- Person no longer frequent contact
- Term rarely used
This keeps CLAUDE.md fresh and relevant.
+158
View File
@@ -0,0 +1,158 @@
---
name: start
description: Initialize the productivity system and open the dashboard. Use when setting up the plugin for the first time, bootstrapping working memory from your existing task list, or decoding the shorthand (nicknames, acronyms, project codenames) you use in your todos.
---
# Start Command
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Initialize the task and memory systems, then open the unified dashboard.
## Instructions
### 1. Check What Exists
Check the working directory for:
- `TASKS.md` — task list
- `CLAUDE.md` — working memory
- `memory/` — deep memory directory
- `dashboard.html` — the visual UI
### 2. Create What's Missing
**If `TASKS.md` doesn't exist:** Create it with the standard template (see task-management skill). Place it in the current working directory.
**If `dashboard.html` doesn't exist:** Copy it from `${CLAUDE_PLUGIN_ROOT}/skills/dashboard.html` to the current working directory.
**If `CLAUDE.md` and `memory/` don't exist:** This is a fresh setup — after opening the dashboard, begin the memory bootstrap workflow (see below). Place these in the current working directory.
### 3. Open the Dashboard
Do NOT use `open` or `xdg-open` — in Cowork, the agent runs in a VM and shell open commands won't reach the user's browser. Instead, tell the user: "Dashboard is ready at `dashboard.html`. Open it from your file browser to get started."
### 4. Orient the User
If everything was already initialized:
```
Dashboard open. Your tasks and memory are both loaded.
- /productivity:update to sync tasks and check memory
- /productivity:update --comprehensive for a deep scan of all activity
```
If memory hasn't been bootstrapped yet, continue to step 5.
### 5. Bootstrap Memory (First Run Only)
Only do this if `CLAUDE.md` and `memory/` don't exist yet.
The best source of workplace language is the user's actual task list. Real tasks = real shorthand.
**Ask the user:**
```
Where do you keep your todos or task list? This could be:
- A local file (e.g., TASKS.md, todo.txt)
- An app (e.g. Asana, Linear, Jira, Notion, Todoist)
- A notes file
I'll use your tasks to learn your workplace shorthand.
```
**Once you have access to the task list:**
For each task item, analyze it for potential shorthand:
- Names that might be nicknames
- Acronyms or abbreviations
- Project references or codenames
- Internal terms or jargon
**For each item, decode it interactively:**
```
Task: "Send PSR to Todd re: Phoenix blockers"
I see some terms I want to make sure I understand:
1. **PSR** - What does this stand for?
2. **Todd** - Who is Todd? (full name, role)
3. **Phoenix** - Is this a project codename? What's it about?
```
Continue through each task, asking only about terms you haven't already decoded.
### 6. Optional Comprehensive Scan
After task list decoding, offer:
```
Do you want me to do a comprehensive scan of your messages, emails, and documents?
This takes longer but builds much richer context about the people, projects, and terms in your work.
Or we can stick with what we have and add context later.
```
**If they choose comprehensive scan:**
Gather data from available MCP sources:
- **Chat:** Recent messages, channels, DMs
- **Email:** Sent messages, recipients
- **Documents:** Recent docs, collaborators
- **Calendar:** Meetings, attendees
Build a braindump of people, projects, and terms found. Present findings grouped by confidence:
- **Ready to add** (high confidence) — offer to add directly
- **Needs clarification** — ask the user
- **Low frequency / unclear** — note for later
### 7. Write Memory Files
From everything gathered, create:
**CLAUDE.md** (working memory, ~50-80 lines):
```markdown
# Memory
## Me
[Name], [Role] on [Team].
## People
| Who | Role |
|-----|------|
| **[Nickname]** | [Full Name], [role] |
## Terms
| Term | Meaning |
|------|---------|
| [acronym] | [expansion] |
## Projects
| Name | What |
|------|------|
| **[Codename]** | [description] |
## Preferences
- [preferences discovered]
```
**memory/** directory:
- `memory/glossary.md` — full decoder ring (acronyms, terms, nicknames, codenames)
- `memory/people/{name}.md` — individual profiles
- `memory/projects/{name}.md` — project details
- `memory/context/company.md` — teams, tools, processes
### 8. Report Results
```
Productivity system ready:
- Tasks: TASKS.md (X items)
- Memory: X people, X terms, X projects
- Dashboard: open in browser
Use /productivity:update to keep things current (add --comprehensive for a deep scan).
```
## Notes
- If memory is already initialized, this just opens the dashboard
- Nicknames are critical — always capture how people are actually referred to
- If a source isn't available, skip it and note the gap
- Memory grows organically through natural conversation after bootstrap
@@ -0,0 +1,91 @@
---
name: task-management
description: Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments.
user-invocable: false
---
# Task Management
Tasks are tracked in a simple `TASKS.md` file that both you and the user can edit.
## File Location
**Always use `TASKS.md` in the current working directory.**
- If it exists, read/write to it
- If it doesn't exist, create it with the template below
## Dashboard Setup (First Run)
A visual dashboard is available for managing tasks and memory. **On first interaction with tasks:**
1. Check if `dashboard.html` exists in the current working directory
2. If not, copy it from `${CLAUDE_PLUGIN_ROOT}/skills/dashboard.html` to the current working directory
3. Inform the user: "I've added the dashboard. Run `/productivity:start` to set up the full system."
The task board:
- Reads and writes to the same `TASKS.md` file
- Auto-saves changes
- Watches for external changes (syncs when you edit via CLI)
- Supports drag-and-drop reordering of tasks and sections
## Format & Template
When creating a new TASKS.md, use this exact template (without example tasks):
```markdown
# Tasks
## Active
## Waiting On
## Someday
## Done
```
Task format:
- `- [ ] **Task title** - context, for whom, due date`
- Sub-bullets for additional details
- Completed: `- [x] ~~Task~~ (date)`
## How to Interact
**When user asks "what's on my plate" / "my tasks":**
- Read TASKS.md
- Summarize Active and Waiting On sections
- Highlight anything overdue or urgent
**When user says "add a task" / "remind me to":**
- Add to Active section with `- [ ] **Task**` format
- Include context if provided (who it's for, due date)
**When user says "done with X" / "finished X":**
- Find the task
- Change `[ ]` to `[x]`
- Add strikethrough: `~~task~~`
- Add completion date
- Move to Done section
**When user asks "what am I waiting on":**
- Read the Waiting On section
- Note how long each item has been waiting
## Conventions
- **Bold** the task title for scannability
- Include "for [person]" when it's a commitment to someone
- Include "due [date]" for deadlines
- Include "since [date]" for waiting items
- Sub-bullets for additional context
- Keep Done section for ~1 week, then clear old items
## Extracting Tasks
When summarizing meetings or conversations, offer to add extracted tasks:
- Commitments the user made ("I'll send that over")
- Action items assigned to them
- Follow-ups mentioned
Ask before adding - don't auto-add without confirmation.
+168
View File
@@ -0,0 +1,168 @@
---
name: update
description: Sync tasks and refresh memory from your current activity. Use when pulling new assignments from your project tracker into TASKS.md, triaging stale or overdue tasks, filling memory gaps for unknown people or projects, or running a comprehensive scan to catch todos buried in chat and email.
argument-hint: "[--comprehensive]"
---
# Update Command
> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](../../CONNECTORS.md).
Keep your task list and memory current. Two modes:
- **Default:** Sync tasks from external tools, triage stale items, check memory for gaps
- **`--comprehensive`:** Deep scan chat, email, calendar, docs — flag missed todos and suggest new memories
## Usage
```bash
/productivity:update
/productivity:update --comprehensive
```
## Default Mode
### 1. Load Current State
Read `TASKS.md` and `memory/` directory. If they don't exist, suggest `/productivity:start` first.
### 2. Sync Tasks from External Sources
Check for available task sources:
- **Project tracker** (e.g. Asana, Linear, Jira) (if MCP available)
- **GitHub Issues** (if in a repo): `gh issue list --assignee=@me`
If no sources are available, skip to Step 3.
**Fetch tasks assigned to the user** (open/in-progress). Compare against TASKS.md:
| External task | TASKS.md match? | Action |
|---------------|-----------------|--------|
| Found, not in TASKS.md | No match | Offer to add |
| Found, already in TASKS.md | Match by title (fuzzy) | Skip |
| In TASKS.md, not in external | No match | Flag as potentially stale |
| Completed externally | In Active section | Offer to mark done |
Present diff and let user decide what to add/complete.
### 3. Triage Stale Items
Review Active tasks in TASKS.md and flag:
- Tasks with due dates in the past
- Tasks in Active for 30+ days
- Tasks with no context (no person, no project)
Present each for triage: Mark done? Reschedule? Move to Someday?
### 4. Decode Tasks for Memory Gaps
For each task, attempt to decode all entities (people, projects, acronyms, tools, links):
```
Task: "Send PSR to Todd re: Phoenix blockers"
Decode:
- PSR → ✓ Pipeline Status Report (in glossary)
- Todd → ✓ Todd Martinez (in people/)
- Phoenix → ? Not in memory
```
Track what's fully decoded vs. what has gaps.
### 5. Fill Gaps
Present unknown terms grouped:
```
I found terms in your tasks I don't have context for:
1. "Phoenix" (from: "Send PSR to Todd re: Phoenix blockers")
→ What's Phoenix?
2. "Maya" (from: "sync with Maya on API design")
→ Who is Maya?
```
Add answers to the appropriate memory files (people/, projects/, glossary.md).
### 6. Capture Enrichment
Tasks often contain richer context than memory. Extract and update:
- **Links** from tasks → add to project/people files
- **Status changes** ("launch done") → update project status, demote from CLAUDE.md
- **Relationships** ("Todd's sign-off on Maya's proposal") → cross-reference people
- **Deadlines** → add to project files
### 7. Report
```
Update complete:
- Tasks: +3 from project tracker (e.g. Asana), 1 completed, 2 triaged
- Memory: 2 gaps filled, 1 project enriched
- All tasks decoded ✓
```
## Comprehensive Mode (`--comprehensive`)
Everything in Default Mode, plus a deep scan of recent activity.
### Extra Step: Scan Activity Sources
Gather data from available MCP sources:
- **Chat:** Search recent messages, read active channels
- **Email:** Search sent messages
- **Documents:** List recently touched docs
- **Calendar:** List recent + upcoming events
### Extra Step: Flag Missed Todos
Compare activity against TASKS.md. Surface action items that aren't tracked:
```
## Possible Missing Tasks
From your activity, these look like todos you haven't captured:
1. From chat (Jan 18):
"I'll send the updated mockups by Friday"
→ Add to TASKS.md?
2. From meeting "Phoenix Standup" (Jan 17):
You have a recurring meeting but no Phoenix tasks active
→ Anything needed here?
3. From email (Jan 16):
"I'll review the API spec this week"
→ Add to TASKS.md?
```
Let user pick which to add.
### Extra Step: Suggest New Memories
Surface new entities not in memory:
```
## New People (not in memory)
| Name | Frequency | Context |
|------|-----------|---------|
| Maya Rodriguez | 12 mentions | design, UI reviews |
| Alex K | 8 mentions | DMs about API |
## New Projects/Topics
| Name | Frequency | Context |
|------|-----------|---------|
| Starlight | 15 mentions | planning docs, product |
## Suggested Cleanup
- **Horizon project** — No mentions in 30 days. Mark completed?
```
Present grouped by confidence. High-confidence items offered to add directly; low-confidence items asked about.
## Notes
- Never auto-add tasks or memories without user confirmation
- External source links are preserved when available
- Fuzzy matching on task titles handles minor wording differences
- Safe to run frequently — only updates when there's new info
- `--comprehensive` always runs interactively