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