stakeholder-manage — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited stakeholder-manage (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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>.mdThe 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.
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.
In-place changes to a stakeholder's frontmatter or background. No file move.
Editable fields:
role (frontmatter)cadence_overrides (frontmatter)## Background section contentFlow:
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).
The most consequential operation. Triggered by reorgs, role changes, or relationship shifts.
Flow:
"Moving John Adams from `managing-across` to `managing-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?"
category.stakeholders.json.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).
Triggered when the person's name changes (marriage, common-name update, formal name correction).
Flow:
name, frontmatter slug, registry entry.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.
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:
"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?"
<category>/<slug>.md → archive/<original-category>/<slug>.md. Create the archive/ directory tree if needed.stakeholders.json: remove from stakeholders[], add to archived[] array with original metadata + archived date + reason.If the user later asks to unarchive (rare), reverse the operation: move the file back, restore in registry. Add an audit log line.
Friction-y by design. Most "delete" requests should actually be archive.
Flow:
"Deleting Sam will permanently remove the file `managing-down/sam-jones.md` and 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.)"
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.
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.
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.
stakeholders.json lists Jill but managing-across/jill-smith.md doesn't exist (or vice versa), surface it and offer to repair. Hand-edits happen.archive/ folder when the user wants retrospective lessons (e.g. "what did I learn from working with Draymond?").decision-log.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.