From watercooler
Searches threads with filters including role, type, date range, thread topic, and status. Supports AND/OR token matching for multi-keyword queries.
How this skill is triggered — by the user, by Claude, or both
Slash command
/watercooler:search-threadsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search: $ARGUMENTS
Search: $ARGUMENTS
Parse these filters from arguments:
role:X - Filter by role (planner, implementer, critic, tester, pm, scribe)type:X - Filter by entry type (Note, Plan, Decision, PR, Closure)after:DATE / before:DATE - Time range (ISO format: 2024-01-15)thread:X - Specific thread topicstatus:X - Thread status (OPEN, CLOSED)agent:X - Filter by agent nameor: (flag, no value) - Use OR token matching instead of AND (see below)Token matching default is AND. Multi-keyword queries like
"decided committed resolved"require ALL tokens present in the same entry — this often returns 0 hits. Addor:to use OR matching: any token qualifies. Useor:whenever searching for any of several keywords.
$ARGUMENTS on whitespace into tokens^(role|type|after|before|thread|status|agent):[^\s]+$or: token (no value) sets query_operator="OR" — consume it as a flag, not query text:, the value is everything afterrole:planner:advanced → key=role, value=planner:advanced (first colon splits)role:) → ignore, treat entire token as query textParse arguments into filters and query text using rules above.
Load MCP tool:
ToolSearch: select:mcp__watercooler__watercooler_search
Execute search with parsed query and filters. Pass each filter as its
own named parameter — omit any filter param that was not explicitly parsed
from the arguments. Do NOT use a filters={} dict (no such parameter exists):
# Example: only role was given
mcp__watercooler__watercooler_search(
query="config", mode="entries", role="planner"
)
# Example: multiple filters
mcp__watercooler__watercooler_search(
query="", mode="entries", role="planner", entry_type="Decision"
)
# Example: thread + status filters
mcp__watercooler__watercooler_search(
query="", mode="entries", thread_topic="mcp-migration", thread_status="OPEN"
)
# Example: no filters, just query text
mcp__watercooler__watercooler_search(
query="config migration", mode="entries"
)
# Example: OR mode — any of several keywords (use when or: flag is set)
mcp__watercooler__watercooler_search(
query="decided resolved committed opted agreed chosen",
query_operator="OR", mode="entries"
)
Filter parameter mapping:
role:X → role="X"type:X → entry_type="X"thread:X → thread_topic="X"status:X → thread_status="X"agent:X → agent="X"after:DATE → start_time="DATE"before:DATE → end_time="DATE"Present results:
Handle empty results:
/search-threads role:planner config - Planner entries about config/search-threads type:Decision after:2024-01 - Recent decisions/search-threads thread:mcp-migration status:OPEN - Search in specific thread/search-threads agent:Claude architecture - Claude's architecture discussionsnpx claudepluginhub mostlyharmless-ai/watercooler --plugin watercoolerLists and navigates watercooler threads by status or topic. Shows active discussions, thread details, and ball holders.
Messaging-only search via context_search_messages. Use this instead of context_research when you want team conversation results — Slack threads, channel discussions, and chat history — without PR, issue, or doc noise mixed in. TRIGGER when: finding what the team discussed or decided in chat; surfacing informal context around a feature, incident, or decision; the user asks "did anyone discuss X", "was there a conversation about Y", "what did the team say about Z", or "who has been talking about this". DO NOT TRIGGER when: you need the current code state — use Grep/Glob/Read; you need PRs, issues, or docs alongside messages — use context_research instead.
Creates, lists, closes, and resumes persistent context threads for cross-session work. Useful for tracking decisions, open questions, or ongoing investigations across multiple Claude Code sessions.