From Dev10x
Posts Slack review request notifications for PRs using per-project YAML config for channels and mentions. Handles skips, interactive setup for unconfigured projects, and resolves mentions from Slack config.
npx claudepluginhub dev10x-guru/dev10x-claude --plugin Dev10xThis skill is limited to using the following tools:
This skill follows `references/task-orchestration.md` patterns.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
This skill follows references/task-orchestration.md patterns.
Create a task at invocation, mark completed when done:
REQUIRED: Create a task at invocation. Execute at startup:
TaskCreate(subject="Post Slack review request", activeForm="Posting review request")Mark completed when done: TaskUpdate(taskId, status="completed")
Post a review notification to the project's configured Slack channel with appropriate team and user mentions.
Configuration lives in ~/.claude/memory/Dev10x/slack-config-code-review-requests.yaml:
default_action: ask # "skip" or "ask" for unconfigured projects
projects:
my-app:
channel: C0EXAMPLE01 # Slack channel ID
mentions: # resolved via slack-config.yaml
- "@backend-team" # user group → <!subteam^ID>
- "@alice" # user → <@SLACK_ID>
internal-tools:
skip: true # no Slack notification
Mentions are resolved against ~/.claude/memory/Dev10x/slack-config.yaml
user_groups and users mappings.
channel and mentions from config; fetch PR
details; format message with JTBD if present; ask user for confirmation.skip: true: Report "Slack notification skipped" and done.default_action: ask): Ask user for
channel and mentions interactively. If user provides them, proceed;
otherwise done.default_action: skip): Skip silently.Resolve project config and format the Slack message:
${CLAUDE_PLUGIN_ROOT}/skills/slack-review-request/scripts/slack-review-request.py \
prepare --pr {pr_number} --repo {repo}
Output is JSON with keys:
skip: boolean — project is configured to skipask: boolean — no config found; user input requiredchannel: Slack channel ID (or null)message: formatted Slack message (or null)reason: short explanation if skip or askCheck the prepare output:
If skip=true: Report "Slack notification skipped for
{repo}" and done. Do not ask user.
If ask=true: Use AskUserQuestion to ask for:
If user provides a channel, resolve mentions and update config (optional — may save to YAML for future use). Then proceed to Step 3 with resolved config.
If user declines, done.
Otherwise: Continue to Step 3 with resolved config.
Use AskUserQuestion to show:
If user chooses "Skip", done. If "Post to Slack", proceed to Step 4.
Delegate to Skill(Dev10x:slack) for posting. Write the message to
a temporary file and pass it:
Skill(skill="Dev10x:slack", args="--channel {channel} --message-file {temp_file}")
NEVER call slack-review-request.py send directly — delegate to
the slack skill to honor global Slack posting rules. The script is
an internal fallback only.
Report success: channel ID, thread timestamp (if available).
This skill is invoked by:
Dev10x:request-review — combined review request orchestratorDev10x:gh-pr-monitor Phase 2.7 (re-review notification)It handles only Slack posting — no GitHub API calls.
For re-review notifications (Phase 2.7 in Dev10x:gh-pr-monitor), the
calling skill composes a custom message (e.g., "@reviewer please take
another look") and invokes this skill with --message directly,
skipping the prepare step.
Messages include:
<url|my-app#42>**When**
paragraph and formatted as a blockquoteExample output:
<!subteam^S0EXAMPLE> <@U0ALICE> Please review <https://github.com/org/my-app/pull/42|my-app#42>
Fix payment routing
> *When* a customer uses a new card, *wants to* bypass 3D Secure, *so*
> *can* complete checkout faster.
/Dev10x:slack-review-request # uses current branch PR
/Dev10x:slack-review-request --manual # force config review
Skill("Dev10x:slack-review-request",
args={
"pr_number": 42,
"repo": "org/my-app",
"ask_if_unconfigured": true,
}
)
Dev10x:gh-pr-monitor — calls this skill in Phase 3 (review request workflow)slack-config.yaml — mention resolution mappings