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:
@@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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"]
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"projecttodos": {
|
||||||
|
"type": "http",
|
||||||
|
"url": "https://mcp.willowbrook.work/mcp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user