Initial commit: WilloW-PMTools marketplace with willow-pmtools plugin

Marketplace with one plugin (willow-pmtools) that wires the projecttodos
MCP server (mcp.willowbrook.work) into Cowork and ships a /todos morning
briefing slash command.
This commit is contained in:
Chase Setters
2026-05-13 14:13:53 -05:00
commit d20825cdd9
6 changed files with 137 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-marketplace.json",
"name": "willow-pm-marketplace",
"displayName": "Willowbrook PM Tools",
"description": "Internal Willowbrook plugins for project management — todos, lists, and other PM workflows wired up to the company's 4D backend.",
"owner": {
"name": "Willowbrook",
"url": "https://willowbrook.build"
},
"plugins": [
{
"name": "willow-pmtools",
"source": "./plugins/willow-pmtools"
}
]
}
+35
View File
@@ -0,0 +1,35 @@
# Willowbrook PM Tools — Cowork Plugin Marketplace
Private plugin marketplace for Willowbrook team members. Sync this repo into Cowork to give everyone access to internal PM tools.
## Plugins in this marketplace
| Plugin | Purpose |
|---|---|
| [willow-pmtools](./plugins/willow-pmtools/) | Todo + list management wired to the company's 4D backend, plus a `/todos` morning briefing command. |
More plugins will be added here over time (Fieldwire, knowledge base, etc.).
## How Cowork admins install this
1. Claude Desktop → Organization settings → Plugins → Add plugin → GitHub → `<owner>/<repo>`
2. The Claude GitHub App must be installed on this repo (private repo, github.com only — not GHE).
3. Pick install preference per plugin: *Installed by default*, *Required*, *Available for install*, or *Not available*.
4. Updates auto-sync on every merged PR (up to ~30 min); team members pick up changes on the next session.
## Repo layout
```
.claude-plugin/
marketplace.json ← catalog (REQUIRED at this exact path)
plugins/
willow-pmtools/
.claude-plugin/
plugin.json ← plugin manifest
.mcp.json ← MCP server config
commands/
todos.md ← /todos slash command
README.md
```
The `marketplace.json` location is **not** optional — Cowork rejects manifests anywhere else.
@@ -0,0 +1,12 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin.json",
"name": "willow-pmtools",
"displayName": "WilloW-PMTools",
"version": "1.0.0",
"description": "Project management tools for Willowbrook — chat with the company's todo system, browse lists, and create or complete tasks from any Cowork conversation.",
"author": {
"name": "Willowbrook",
"url": "https://willowbrook.build"
},
"keywords": ["willowbrook", "todos", "project-management", "construction"]
}
+8
View File
@@ -0,0 +1,8 @@
{
"mcpServers": {
"projecttodos": {
"type": "http",
"url": "https://mcp.willowbrook.work/mcp"
}
}
}
+33
View File
@@ -0,0 +1,33 @@
# WilloW-PMTools
Project management tools for Willowbrook, available in any Cowork conversation.
## What you get
**MCP tools** (via `projecttodos` server at `mcp.willowbrook.work`):
- `get_lists` — your todo lists with open counts
- `get_list_todos` — open todos in a specific list
- `create_list` / `update_list` — manage lists
- `create_todo` / `update_todo` / `complete_todo` — manage individual todos
- `get_users` — staff directory (for picking assignees)
- `get_notes` / `save_notes` — your personal notepad
- `ai_suggest_todos` — generate todo suggestions from a prompt
Completed and deleted items are filtered out — Claude only sees open work.
**Slash commands:**
- `/todos` — Morning briefing. Pulls every open todo across your lists and presents them grouped by overdue / due today / due this week / high priority / by list.
## First-time setup
The first time you use any of these tools in a Cowork conversation, you'll see a one-time prompt asking for your **name and work email**. That identity is what shows up as the Assigner on todos you create and is how the backend decides which lists you can see.
## Authentication
OAuth happens automatically on first use — no credentials to manage.
## Support
Questions or issues: Chase
+33
View File
@@ -0,0 +1,33 @@
---
description: Morning todo briefing — open work across all your lists, overdue first
---
Pull the user's open todos and give them a focused morning briefing.
## What to do
1. Call `get_lists` to discover every list the user can see (owned, assigned, or project-visible).
2. For each list with `openCount > 0`, call `get_list_todos` with that `listId`.
3. Combine all returned todos into a single picture.
## How to present the briefing
Group todos into these sections **in this order** — skip any section that has no items:
- **🔴 Overdue** — `dueDate` is set and is before today.
- **📅 Due today** — `dueDate` matches today.
- **📆 Due this week** — `dueDate` is within the next 7 days.
- **🟠 High priority (no date)** — `priority === "High"` and no `dueDate` (or `dueDate` is further out).
- **Everything else** — group the remaining open todos by their list name.
For each todo, show:
- The description
- The list it belongs to (in parentheses, dimmed)
- Due date if set (formatted as `MMM D`, e.g. `May 13`)
- Other assignees if the todo is shared (skip if the user is the only assignee)
## Tone
Keep it tight and scannable — no preamble, no closing summary. The user wants to see their work, not read prose about it.
If there are zero open todos across all lists, just say so in one short sentence.