chat-search
Search messenger history for messages mentioning a keyword, optionally scoped to one chat or a date window.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Search messenger history for messages mentioning a keyword, optionally scoped to one chat or a date window.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Walk a project from "no values provisioned" to "doctor --secrets is green" — eight idempotent steps with resume support via setup-state.toml. Wraps the secret framework (ADR-023 §3.8) for AI agents and headless onboarding.
Bootstrap devboy from scratch — install the CLI if missing, register the MCP server, run `devboy onboard` for the active agent, optionally bootstrap the secret framework, verify with `doctor`. First-run skill for both manual installs and the Claude Code / Codex plugin.
First-run wizard for the devboy secret framework — walk a fresh project from "no secret manifest, no router, no daemon" to "every required secret provisioned and verified". Idempotent eight-step flow per ADR-023 §3.8 with state at ~/.devboy/secrets/setup-state.toml so the user can resume or skip.
Analyse the user's Claude Code (or other agent) logs and auto-configure the layered-pipeline compression profiles for their tools, models, and workflow.
Diagnose and fix a broken devboy-tools setup — corrupt config, missing tokens, keychain trouble, wrong paths, plugin install failures.
Enumerate and introspect the active tool bundle — names, categories, schemas, how to invoke each tool from the CLI.
| name | chat-search |
| description | Search messenger history for messages mentioning a keyword, optionally scoped to one chat or a date window. |
| category | messenger |
| version | 1 |
| compatibility | devboy-tools >= 0.18 |
| activation | ["find slack message about","search messenger for","who mentioned X in slack","find the message where","search chat for"] |
| tools | ["get_messenger_chats","search_chat_messages"] |
Locate one or more messages across the configured messenger (Slack today, additional providers as they come online) by keyword, optional chat scope, and optional time window. The skill returns a ranked list of hits — it does not condense a long conversation into a narrative; for that, use chat-summary.
solve-issue) needs to cite the originating chat discussion before acting on a ticket.If the user said something like "in #eng" or "in the deploys channel", resolve the humanised name to a chat_id first. Searching without a scope is also fine — it's just slower and noisier.
# Narrow by name — pick the best match from the returned list
devboy tools call get_messenger_chats '{"search": "eng", "limit": 10}'
Useful filters: chat_type (direct / group / channel), include_inactive (archived chats are hidden by default). Note: cursor-based pagination is accepted by the tool's argument schema today but the response is formatted as text and does not surface a next_cursor back to the caller — narrow the hit list with search / limit instead, or refine the query.
search_chat_messages takes a free-text query and optional chat_id, plus a provider-timestamp since / until window when the user cares about recency:
# Global search
devboy tools call search_chat_messages '{"query": "rollback", "limit": 30}'
# Scoped to one chat
devboy tools call search_chat_messages '{
"query": "feature flag cutover",
"chat_id": "C0123456789",
"limit": 50
}'
# Last week, any chat
devboy tools call search_chat_messages '{
"query": "incident",
"since": "1712448000.000000",
"until": "1713052800.000000"
}'
since / until are provider-native timestamps (Slack passes them straight through — floating-point epoch seconds, as strings). If the user phrases a window in natural language ("yesterday", "last week"), convert to epoch seconds before calling.
search_chat_messages returns at most limit hits per call (capped at 1000). The response is rendered as formatted text and does not surface a next_cursor back to the caller today, so cursor-based pagination is not actionable from the tool output. Instead of trying to page, narrow the query:
since / until to a smaller window.query.chat_id to the channel the user actually meant.limit as a last resort, but the hit list gets harder to skim fast.If cursor pagination becomes genuinely necessary for a user's workflow, that requires a tool-side change to expose the pagination metadata, not a skill-side workaround.
Before handing the hits back to the user:
MessengerMessage type does not include a permalink field, so do not promise jump-to-message URLs. Surface the chat_id + message id / timestamp instead — that's enough for the user to open the message directly in Slack (slack://channel?team=…&id=<chat_id>&message=<ts>) or paste into a helper script.Example render:
#eng alice 2026-04-15 14:02 "…rolling back v2.4.1, see incident-204…" (C0123/ts=1712584920.010)
DM bob bob 2026-04-14 09:31 "feature flag cutover is done on staging"
channels:history, groups:history, im:history, mpim:history), search results will be incomplete or empty. When hits look suspiciously thin, run devboy test slack and check the "Missing scopes" line.chat-summary for that.notify when the user wants to post.