Track customer silence on Slack threads. Use when the user wants to track a thread they're waiting on a customer reply for, or check which customers have gone silent. Trigger for /ghosted, 'who ghosted me', 'waiting on customer reply', 'customer hasn't responded', or 'check for ghosting'.
Tracks threads where you're waiting on a customer reply. Two modes:
ASANA_TOKEN in ~/.fe-skills/.env (run /asana-setup if not configured)SLACK_TOKEN and SLACK_COOKIE in ~/.fe-skills/.env (run /slack-setup if not configured)templates/customers.yaml with action_tracker_id set/ghosted track <URL>)Pipeline:
Extract channel_id and thread_ts from the pasted URL:
https://coreweave.slack.com/archives/C0ABC1234/p1709123456789012channel_id: segment after /archives/ (e.g., C0ABC1234)thread_ts: drop p prefix, insert . before last 6 digits (e.g., 1709123456.789012)If the URL doesn't match the expected pattern, ask the user to confirm it's a valid Slack thread URL.
uv run --project .claude/skills/slack python .claude/skills/slack/scripts/channels.py thread \
--channel-id <channel_id> --thread-ts <thread_ts> --pretty
Match channel_id against templates/customers.yaml slack_channels[].id to find the customer. If not found, ask the user which customer this is for.
Summarize the thread in 1-2 sentences: what was discussed, what response is expected from the customer.
Present the proposed task to the user for confirmation:
action_tracker_id from templates/customers.yaml (when action_tracker is "asana")uv run --project .claude/skills/asana python .claude/skills/asana/scripts/mutate.py create \
--project-gid <action_tracker_id> \
--name "<task name>" \
--section "Waiting on Customer" --assignee me --due <YYYY-MM-DD> --priority P2 \
--notes "Source: <Slack thread URL>\n\nContext: <thread summary>\nWaiting for: <what response is expected>" \
--pretty
Output the task URL and remind: "Will check for reply when you run /ghosted"
/ghosted or /ghosted GResearch)Pipeline:
/ghosted (no args): scan all customers in templates/customers.yaml where action_tracker_id is not PLACEHOLDER/ghosted GResearch: scan only that customer (fuzzy-match against customers.yaml names)For each customer in scope, fetch tasks:
uv run --project .claude/skills/asana python .claude/skills/asana/scripts/query.py tasks \
--project-gid <action_tracker_id> --limit 100 --pretty
Filter to tasks in the "Waiting on Customer" section (check memberships[].section.name).
For each "Waiting on Customer" task that has a Slack URL in its notes:
https://coreweave\.slack\.com/archives/[A-Z0-9]+/p\d+channel_id and thread_ts from the URLuv run --project .claude/skills/slack python .claude/skills/slack/scripts/channels.py thread \
--channel-id <channel_id> --thread-ts <thread_ts> --pretty
Check if there's a customer reply AFTER the task's created_at (or modified_at if it was moved to Waiting later).
A "customer reply" is any message from a non-W&B user. Heuristic: user not in the SE's org, or user ID not matching known internal users.
Sort ghosted threads by days waiting (oldest first = most urgent). Format:
Ghosted Threads -- [date]
GResearch (3 ghosted):
- [12 days] Customer to provide repro steps (WB-1234)
Thread: <URL> | Last W&B message: [date] | No customer reply since
- [8 days] Confirm migration timeline
Thread: <URL> | Last W&B message: [date] | No customer reply since
- [3 days] Review SDK upgrade path
Thread: <URL> | Last W&B message: [date] | No customer reply since
Suggested actions:
- Consider following up on threads older than 7 days
- Move tasks with customer replies to "In Progress" or "To Do"
If no ghosted threads found: "No ghosted threads. All Waiting on Customer items have received replies."
| Problem | Fix |
|---|---|
| No tasks found in Waiting on Customer | Check that tasks were created with /ghosted track or moved to the section manually |
| Slack thread returns empty | Thread may have been deleted or channel archived |
| Customer reply not detected | Reply detection is heuristic; check if the reply was from an internal user |
action_tracker_id is PLACEHOLDER | Run /asana setup-project for the customer first |
/asana -- base skill for task CRUD/nag -- complementary: /ghosted watches customer silence, /nag watches your own stale tasks/raid -- ghosted threads may indicate a Risk worth adding to the RAID log