Stakeholder manage
50+ Claude skills and 20+ agents for AI PMs, engineering managers, and senior ICs. Think more clearly about your work. Claude plugin. Made for Claude Desktop and Claude Code.
npx -y skills add shwetank/bettersense --skill stakeholder-manageAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when the user wants to *change* something about an already-registered stakeholder — list them, edit role/background, re-categorize after a reorg, rename, archive (because they left), or delete. Trigger phrases include "list my stakeholders", "show all my reports", "Jill is my manager now", "move Jill to managing-up", "Draymond left the company", "archive [name]", "Jill changed her name to [...]", "update [name]'s role", "delete [name] — registered by mistake". Mirrors stakeholder data lifecycle without touching the reflection content. Composes with `stakeholder-register` (which handles add).
SKILL.md
12.5 KB, as published. Nobody here has run it
Stakeholder Manage
Lifecycle operations for the stakeholder bundle. The stakeholder-register skill handles initial add; this skill handles everything after — listing, editing, moving, renaming, archiving, deleting.
The data layout lives at ~/bettersense-work-reflections/ (configurable via $BETTERSENSE_WORK_REFLECTIONS_HOME):
~/bettersense-work-reflections/
├── stakeholders.json # registry: active + archived
├── managing-up/<slug>.md
├── managing-across/<slug>.md
├── managing-down/<slug>.md
├── teams/<slug>.md
└── archive/ # created on first archive
├── managing-up/<slug>.md
├── managing-across/<slug>.md
├── managing-down/<slug>.md
└── teams/<slug>.md
Sub-modes (route by intent)
The skill detects intent from the user's phrasing. The six modes:
| Trigger phrasing | Mode |
|---|---|
| "list my stakeholders", "show all my reports", "who's in managing-across" | list |
| "update X's role to Y", "add background notes for X", "change X's cadence" | edit |
| "X is my manager now", "move X to managing-up", "X became a peer" | re-categorize |
| "X changed her name to Y", "X goes by Y now" | rename |
| "X left the company", "archive X", "X moved to a different org" | archive |
| "delete X — registered by mistake", "remove X permanently" | delete |
If the user's phrasing is ambiguous (e.g. "remove Jill" — archive or delete?), ask. Default toward archive — it's reversible; delete isn't.
Mode: list
Read stakeholders.json and present a clean view. Default: active stakeholders only, grouped by category, with last-reflection date pulled from each file.
Active stakeholders (8)
Managing up (1):
• John Adams — VP Product, my skip-level last reflected: 2026-04-22 (10 days ago)
Managing across (2):
• Jill Smith — iOS team lead last reflected: 2026-04-15 (17 days ago)
• Trae Green — Design lead last reflected: 2026-04-29 (3 days ago)
Managing down (3):
• Draymond Young — Sr Eng last reflected: 2026-04-30 (2 days ago)
• Michelle Chang — Eng II last reflected: 2026-04-12 (20 days ago) ⚠
• Priya Shah — Sr Eng II last reflected: 2026-04-26 (6 days ago)
Teams (2):
• Client Delivery ABC last reflected: 2026-04-10 (22 days ago) ⚠
• Client Delivery XYZ last reflected: 2026-04-25 (7 days ago)
Archived (3 — say "show archived" to list)
Flag stakeholders with no reflection in 14+ days using ⚠ — neglect signal. Don't moralize, just surface.
If the user asks "show archived", produce the archive list with archived date and reason.
Mode: edit
In-place changes to a stakeholder's frontmatter or background. No file move.
Editable fields:
role(frontmatter)cadence_overrides(frontmatter)- the
## Backgroundsection content - (name and category live in their own modes — rename and re-categorize)
Flow:
- Confirm which stakeholder (if ambiguous from phrasing).
- Show the current value of the field being changed.
- Show the proposed new value.
- Wait for confirmation before writing.
Update the file. Append a one-line note to the audit log section (see Audit log below). Update the registry if the field is mirrored there (currently role).
Mode: re-categorize
The most consequential operation. Triggered by reorgs, role changes, or relationship shifts.
Flow:
- Confirm which stakeholder + new category.
- Tell the user what will happen:
"Moving John Adams from
managing-acrosstomanaging-up. The file moves to~/bettersense-work-reflections/managing-up/john-adams.md. All reflection history is preserved. The question pool will shift to managing-up questions on the next reflection. I'll add an audit note explaining the move — what's the context?" - Capture a one-sentence reason from the user (e.g., "reorg, John became my skip-level").
- Move the file across category folders.
- Update frontmatter
category. - Update
stakeholders.json. - Append audit log entry.
Critical: preserve all reflection history intact. Do not start over. The accumulated entries are more useful in the new relationship, not less.
The ## Audit log section gets a line:
## Audit log
- 2026-05-02 — Re-categorized from managing-across to managing-up. Reason: reorg, John became my skip-level.
Slug stays the same (the file is still about the same person; the filename doesn't need to change).
Mode: rename
Triggered when the person's name changes (marriage, common-name update, formal name correction).
Flow:
- Confirm new name.
- Decide on new slug. Default: re-slugify from the new name. Ask the user if they prefer to keep the old slug for stability (e.g. cross-references in their own notes).
- Show what will change: filename, frontmatter
name, frontmatterslug, registry entry. - Wait for confirmation.
- Rename file, update frontmatter, update registry.
- Append audit log entry: "2026-05-02 — Renamed from Jill Smith to Jill Brown. Reason: marriage."
If the user explicitly doesn't want to rename the slug (to keep filename stable), allow that — the slug becomes a cosmetic divergence from the name, which is fine.
Mode: archive
Triggered when the person leaves the company, moves to a different org outside the user's orbit, or otherwise stops being an active stakeholder.
Flow:
- Confirm the user wants to archive (not delete). Surface the difference:
"Archive preserves the file and all reflection history; the active reflection skills won't surface them anymore, but you can synthesize over the archive folder when retrospecting (e.g., 'what did I learn from working with Draymond?'). Delete removes the file and history permanently. Which do you want?"
- If archive: capture a one-sentence reason ("Left for [new company]", "Moved to the platform org", "Project ended").
- Move the file from
<category>/<slug>.md→archive/<original-category>/<slug>.md. Create thearchive/directory tree if needed. - Update
stakeholders.json: remove fromstakeholders[], add toarchived[]array with original metadata +archiveddate +reason. - Append audit log entry to the file: "2026-05-02 — Archived. Reason: left for Stripe."
If the user later asks to unarchive (rare), reverse the operation: move the file back, restore in registry. Add an audit log line.
Mode: delete
Friction-y by design. Most "delete" requests should actually be archive.
Flow:
- Strongly recommend archive first. Surface what will be lost:
"Deleting Sam will permanently remove the file
managing-down/sam-jones.mdand all 12 reflection entries spanning 8 months. This can't be undone. Are you sure you don't want to archive instead? (Archive keeps the history for retrospection.)" - If user explicitly confirms delete: ask for the reason (audit/sanity check) — registered by mistake / privacy reasons / etc.
- Two-step confirmation. Type the stakeholder's name to confirm.
- Remove file. Remove registry entry (don't move to archived — full removal).
There's no audit trail post-delete; the data is gone. Note in the registry's top-level audit field: last_delete: {date, slug, reason} — minimal trace for the user's own future-you.
The audit log section
Each stakeholder file carries a ## Audit log section between ## Background and # Reflections. Created on the first audit event (re-categorize, rename, archive, etc.). Edits in place don't always create a log line — only changes that affect the relationship or the file's identity.
---
name: John Adams
slug: john-adams
category: managing-up
role: VP Product, my skip-level
since: 2024-09-01
---
## Background
[user's prose]
## Audit log
- 2026-05-02 — Re-categorized from managing-across to managing-up. Reason: reorg, John became my skip-level.
- 2025-11-14 — Role updated from "Sr Director, Product" to "VP Product, my skip-level". Reason: promo.
---
# Reflections
[per-question entries — untouched by management operations]
Audit log entries are append-only in normal operation. The user can hand-edit if they want; the skill doesn't enforce.
Registry shape (stakeholders.json)
{
"version": 1,
"stakeholders": [
{
"slug": "john-adams",
"name": "John Adams",
"category": "managing-up",
"role": "VP Product, my skip-level",
"registered": "2024-09-01"
}
],
"archived": [
{
"slug": "draymond-young",
"name": "Draymond Young",
"category": "managing-down",
"role": "Sr Eng",
"registered": "2024-03-15",
"archived": "2026-05-02",
"reason": "Left for Stripe"
}
]
}
archived[] is optional — only created when the first archive happens. Old registries without it are valid.
Operating principles
- Confirm before writing. Every operation shows the proposed change and waits for a yes. The data is private and the cost of an unintended write is real.
- Default toward reversibility. When the user's intent is ambiguous, route to the safer option (archive over delete; keep slug over change slug; keep history over reset).
- Preserve history aggressively. A re-categorize never starts over. An archive never deletes the file. The accumulated reflection record is the whole point of the system.
- One operation per invocation. If the user wants to re-categorize and update the role at once, do them sequentially with separate confirmations rather than batching. Bulk operations are how subtle errors creep in.
- Surface neglect, don't moralize. The list mode flags stakeholders with no reflection in 14+ days. Inform; don't shame.
- Detect drift between file system and registry. If
stakeholders.jsonlists Jill butmanaging-across/jill-smith.mddoesn't exist (or vice versa), surface it and offer to repair. Hand-edits happen.
Anti-patterns to flag
- Re-categorize as "delete and re-add." Don't. The reflection history is the asset.
- Bulk re-categorization on a reorg. Tempting, but each move benefits from its own one-sentence reason in the audit log. Do them one at a time.
- Archive when the relationship just got rocky. Sometimes the user wants to archive someone they're frustrated with. Surface it gently — "You've reflected on Sam 5 times in the last 60 days, with notes about a hard conversation pending. Are you sure you want to archive, or is this a moment to push the harder reflection?"
- Delete to "clean up." A clean registry is not a feature. Keep the historical record.
- Letting the slug drift from the name without intent. Most renames should re-slug. Keep slug stable only when the user has a deliberate reason.
Composition with other skills
stakeholder-register— owns add. End-of-flow message can suggest the management skill: "To list, edit, or re-categorize stakeholders later, just describe what you want — thestakeholder-manageskill handles the lifecycle."stakeholder-due/stakeholder-reflect/stakeholder-synthesize— read the active state. After a re-categorize, they pick up the new category automatically. After an archive, they no longer surface the person (unless the user explicitly synthesizes over the archive folder).stakeholder-synthesize— can read across thearchive/folder when the user wants retrospective lessons (e.g. "what did I learn from working with Draymond?").feedback-frameworks— when an archive is happening because of a falling-out or hard departure, surface the option to draft a final piece of feedback or a goodbye message, if the user has unfinished business.decision-log— significant lifecycle decisions (e.g., "decided to archive the entire 2024 cohort of mentees because the program ended") can be logged as ADR-style entries indecision-log.