Files
OpenHarness BotandClaude Opus 4.7 e7e96ccfdd feat: add Slack support to .pi/ as a Pi extension
Adds .pi/extensions/slack/ with Socket Mode bridge, allowlist gating,
and 4 LLM-callable tools (slack_post/reply/react/upload). Inbound
messages bridge into pi.sendUserMessage() with ctx.isIdle() guard;
turn_end posts the assistant's reply back to Slack via SlackContext.
session_shutdown tears down the Socket Mode connection.

Customizations preserved from portfolio-advisor reference:
- threadTs field on event types (7 sites in events.ts)
- threadParent routing in createSlackContext (context.ts:45)
- exported parseEventContent + buildSyntheticEvent

Tests: 27 new (3 files); 78 pre-existing tests still green; 114 total.

Plan: .claude/plans/context-study-https-github-com-ryaneggz-binary-hartmanis.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 23:03:04 -06:00

956 B

Project context

You are running inside a project workspace. Check AGENTS.md and CLAUDE.md if present — they define the project's voice, operating principles, and development workflow. Treat them as authoritative guides for how work happens here.

Application code and core logic are developed and tested within the local environment. Refer to project conventions for architecture patterns, tooling, and coding standards.

Slack Bridge Awareness

When the current input was injected by the Slack extension (recognizable by the [Slack #channel] user: prefix in the message), respond with concise text suitable for posting back to Slack. The slack_post, slack_reply, slack_react, and slack_upload tools are available for explicit Slack actions (if you want to post to a different channel, react with emoji, or upload a file). The bridge automatically posts your final assistant text on turn_end if you do not call those tools yourself.