Skip to content

feat(slack-researcher): add /ce-slack-research skill and improve agent#538

Merged
tmchow merged 2 commits intomainfrom
tmchow/ce-slack-skill
Apr 8, 2026
Merged

feat(slack-researcher): add /ce-slack-research skill and improve agent#538
tmchow merged 2 commits intomainfrom
tmchow/ce-slack-skill

Conversation

@tmchow
Copy link
Copy Markdown
Collaborator

@tmchow tmchow commented Apr 8, 2026

Summary

Adds /ce-slack-research — a directly invocable entry point for the slack-researcher agent, which was previously only discoverable as a sub-agent of /ce:brainstorm, /ce:plan, and /ce:ideate. The skill accepts freeform input ("What did we say about free trial recently?") or structured queries ("free trial in #proj-reverse-trial after:2026-03-01"), dispatches to the agent, and returns an interpreted digest with workspace identity, research-value assessment, and cross-cutting analysis.

Also improves the agent itself:

  • Model set to Sonnet — benchmarked both prompts against Opus on the same queries (cross-project Stripe synthesis, 91-reply kiln architecture thread). Sonnet matched or exceeded Opus quality with 30-40% fewer tokens and faster execution. The agent's detailed methodology scaffolds synthesis quality well enough that the heavier model doesn't add measurable value.
  • Expanded search modifiers — added on:YYYY-MM-DD, has::emoji: (for finding approved/decided items), has:file, and content_types="files" for document search. Sourced from the official Slack plugin's search skill.
  • README reorganized — moved ce-sessions and ce-slack-research into a new "Research & Context" section, keeping Core Workflow focused on the brainstorm-plan-review-work-compound chain.

Test plan

Tested with 7 queries across multiple dimensions:

Query type Example Result
Structured input "Find discussions about free trial" Extracted topic, searched, returned digest
Freeform/conversational "What did we say about free trial recently?" Correctly scoped to recent discussions
Cross-project synthesis "Stripe integration challenges across projects" 5 findings across 3 channels, strong cross-cutting
Sparse results + channel hint "dormant accounts in #proj-dormant-accounts" Used channel hint, proportional output
Technical decision extraction "Kiln pages alongside storefront" Extracted decision arc from 91-reply thread
Ambiguous broad topic "What's happening with growth?" Scoped intelligently across initiatives
No results "kubernetes cluster autoscaling policies" Clean research value: none with workspace ID

Precondition checks validated: agent stops cleanly on auth failure without falling back to non-Slack tools (confirmed across 5 parallel runs).


Compound Engineering
Claude Code

tmchow and others added 2 commits April 8, 2026 10:04
Restructure Step 1 to check Slack MCP availability via platform tool
discovery before doing any work, with a read-only probe as fallback.
Add freeform prompt handling so conversational inputs get normalized
into search topics. Strengthen tool guidance to stop on mid-workflow
failures rather than substituting non-Slack tools.
…t search

Add a thin wrapper skill that makes the slack-researcher agent directly
invocable via /ce-slack-research, instead of only being discoverable as a
sub-agent of ce:brainstorm, ce:plan, and ce:ideate.

Agent improvements:
- Set model to sonnet (benchmarked against opus with equivalent quality
  at 30-40% fewer tokens and faster execution)
- Add search modifiers from official Slack plugin: on:, has::emoji:,
  has:file, and file content search via content_types="files"

README: Move ce-sessions and ce-slack-research into a new "Research &
Context" section, keeping Core Workflow focused on the brainstorm-plan-
review-work-compound chain.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@tmchow tmchow merged commit 042ee73 into main Apr 8, 2026
2 checks passed
@github-actions github-actions Bot mentioned this pull request Apr 8, 2026
tmchow added a commit that referenced this pull request Apr 22, 2026
Add an invariant test that fails when a name in STALE_SKILL_DIRS or in
EXTRA_LEGACY_ARTIFACTS_BY_PLUGIN["compound-engineering"].skills matches a
current directory under plugins/compound-engineering/skills/. If a retired
skill is ever re-added to the plugin, the stale registry entry would make
cleanupStaleSkillDirs() fingerprint-match the freshly-installed skill and
delete it on every install.

The test caught a pre-existing collision: ce-update was erroneously seeded
into the legacy artifacts list in #609 even though it has been a live skill
since #538. Remove it from the registry and flip the assertions in
plugin-legacy-artifacts.test.ts and cli.test.ts that were locking in the
buggy behavior (the CLI test was effectively asserting that cleanup would
move a user's live ce-update install into legacy-backup).

Export STALE_SKILL_DIRS so the invariant test can import it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant