skills: remove mcporter skills
change xzzlssrszlwoksstmlrnwuyyqznpvkny
commit 38f6434341468201e164b99e3e0bbbf2a9bcfb30
author Alpha Chen <alpha@kejadlen.dev>
date
parent vrpsnwxw
diff --git a/.config/nvim/nvim-pack-lock.json b/.config/nvim/nvim-pack-lock.json
index 058b5c4e..5e960c67 100644
--- a/.config/nvim/nvim-pack-lock.json
+++ b/.config/nvim/nvim-pack-lock.json
@@ -63,6 +63,10 @@
       "rev": "edcf56c",
       "src": "https://github.com/suy/vim-context-commentstring.git"
     },
+    "vim-dirvish": {
+      "rev": "5d1d1ef45c6161af14c7d3d3097057e8fb5ac257",
+      "src": "git@github.com:justinmk/vim-dirvish.git"
+    },
     "vim-dispatch": {
       "rev": "a2ff28a",
       "src": "https://github.com/tpope/vim-dispatch.git"
diff --git a/ai/skills/datadog-mcporter/SKILL.md b/ai/skills/datadog-mcporter/SKILL.md
index 3445b58b..61033414 100644
--- a/ai/skills/datadog-mcporter/SKILL.md
+++ b/ai/skills/datadog-mcporter/SKILL.md
@@ -8,6 +8,10 @@ description: Use when searching Datadog logs, metrics, traces, spans, dashboards
 Observability and monitoring via mcporter. Prefix all calls with
 `datadog.`. Run `mcporter list datadog --schema` for full tool details.
 
+These tools are **read-only** for most resources — dashboards and monitors can
+only be searched and read, not changed. To create, update, or delete a Datadog
+resource (e.g. add a widget to a dashboard), use the `pup` skill instead.
+
 *This is a self-improving skill — see the `self-improving-skills` skill.*
 
 ## Tools
diff --git a/ai/skills/glean-mcporter/SKILL.md b/ai/skills/glean-mcporter/SKILL.md
deleted file mode 100644
index 9f412c5b..00000000
--- a/ai/skills/glean-mcporter/SKILL.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-name: glean-mcporter
-description: Use when searching company knowledge, looking up documents, finding employees, searching code, checking Gmail, looking up meetings, reading URLs, checking user activity, or querying Glean memory via mcporter CLI.
----
-
-# Glean
-
-Company knowledge search via mcporter. Prefix all calls with `glean.`.
-Run `mcporter list glean --schema` for full tool details.
-
-*This is a self-improving skill — see the `self-improving-skills` skill.*
-
-## Tools
-
-| Tool | Purpose |
-|------|---------|
-| `search` | Primary tool for finding documents across all company apps |
-| `chat` | AI-powered synthesis for complex questions needing analysis across sources |
-| `code_search` | Search internal company code repos and private commits |
-| `employee_search` | Find people by name, team, role, or reporting chain |
-| `gmail_search` | Search Gmail inbox for emails, threads, and attachments |
-| `meeting_lookup` | Search calendar meetings and extract transcripts |
-| `read_document` | Fetch full content of one or more URLs (internal or external) |
-| `read_memory` | Access the user's long-term work memories and personalization |
-| `user_activity` | Retrieve document activity within a date range (`start_date` inclusive, `end_date` exclusive) |
-
-## Search
-
-Use `search` for keyword document retrieval, `chat` for interpretation
-and synthesis. When in doubt, start with `search`.
-
-Queries must be short, targeted keywords — not full sentences. No
-boolean logic (OR/AND), no synonyms, no query stuffing. Do not use
-date filters when the user says "latest" without a specific timeframe.
-
-## Gotchas
-
-`employee_search`: the `reportsto:` filter finds direct reports *of* a
-person — do not use it to find who someone reports *to*.
-
-`meeting_lookup`: time ranges are non-inclusive. To include all
-meetings on a date, add buffer days (`after:2026-04-06
-before:2026-04-08` for April 7). Date math uses no spaces:
-`today-1d`, `now-2w`. Spaced expressions do not work.
-
-`read_document`: results are all-or-nothing per URL. Do not retry the
-same URL — results will be identical.
diff --git a/ai/skills/granola-mcporter/SKILL.md b/ai/skills/granola-mcporter/SKILL.md
deleted file mode 100644
index c51bb1a7..00000000
--- a/ai/skills/granola-mcporter/SKILL.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-name: granola-mcporter
-description: Use when querying meeting notes, listing meetings, getting meeting details or transcripts, or browsing meeting folders via Granola and mcporter CLI.
----
-
-# Granola
-
-Meeting notes and transcripts via mcporter. Prefix all calls with
-`granola.`. Run `mcporter list granola --schema` for full tool details.
-
-*This is a self-improving skill — see the `self-improving-skills` skill.*
-
-## Tools
-
-| Tool | Purpose |
-|------|---------|
-| `query_granola_meetings` | Natural language queries about meeting content — the primary tool |
-| `list_meetings` | List meetings within a time range, optionally filtered by folder |
-| `get_meetings` | Fetch detailed info for specific meetings by ID (max 10) |
-| `get_meeting_transcript` | Fetch the verbatim transcript for a single meeting |
-| `list_meeting_folders` | List all folders with their IDs and note counts |
-
-## Choosing the right tool
-
-Start with `query_granola_meetings` for open-ended questions about
-what was discussed, decided, or assigned. Use `list_meetings` +
-`get_meetings` when you need structured metadata or browsing by date.
-Use `get_meeting_transcript` only for exact quotes.
-
-## Citations
-
-`query_granola_meetings` returns inline citation links
-(`[[0]](url)`) that reference source meeting notes. Always preserve
-these in your output so the user can verify.
diff --git a/ai/skills/slack-mcporter/SKILL.md b/ai/skills/slack-mcporter/SKILL.md
index f4b2d97e..01df8891 100644
--- a/ai/skills/slack-mcporter/SKILL.md
+++ b/ai/skills/slack-mcporter/SKILL.md
@@ -59,6 +59,14 @@ The `message` param takes standard markdown. Thread replies need
 `thread_ts`; set `reply_broadcast=true` to also post to the channel.
 Cannot post to Slack Connect channels.
 
+**Links in drafts:** the draft composer renders everything as
+plaintext — markdown `[text](url)`, Slack mrkdwn `<url|text>`, and even
+bare URLs all show as plain text in the draft preview. Links resolve
+only when the message is actually sent. Don't try to fix this by
+changing link syntax; it's a draft-preview limitation. Use markdown
+`[text](url)` (the documented format) for the best *sent* output, and
+tell the user the preview won't show links but the sent message will.
+
 ### Drafting in Alpha's voice
 
 When drafting on Alpha's behalf, match the "Writing voice" section in
@@ -69,6 +77,28 @@ fine in DMs; full sentences in channels. No sign-offs. Backticks for
 inline code. Link to threads, PRs, or messages rather than describing
 them.
 
+### Posting Claude's own findings to a thread
+
+When Alpha asks to "update a thread" with *your* findings (research,
+debugging, an investigation result) — as opposed to ghost-writing in his
+voice — always:
+
+1. Create it as a **draft** (`slack_send_message_draft`), never send directly.
+2. **Attribute it to Claude** — lead with a `From Claude:` line.
+3. Put the substance in a **quote or code block**, set off from the
+   attribution line.
+
+Shape:
+
+```
+From Claude:
+> ...findings...
+```
+
+This is the opposite default from "Drafting in Alpha's voice": don't
+ventriloquize his voice for these — mark them clearly as AI-authored so the
+thread can tell the two apart, and so he can review/edit before sending.
+
 ## Timestamps
 
 Slack message timestamps (`1234567890.123456`) appear as `ts`,