Case 05070
A fast, offline static risk analysis CLI for AI agent skill files. Detects malicious instructions, steganographic payloads, and dangerous capability chains.
npx -y skills add knownasnaffy/prompthound --skill case_05070Assembled 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.
- 0 stars0 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
Adaptive communication coaching that shapes speaking and writing behavior through reinforcement, scoring, and micro-interventions. Use when the user shares communications for feedback, requests practice scenarios, or during scheduled check-ins. Trains clarity, vocal control, presence, persuasion, emotional regulation, and boundary setting. Based on rhetoric, negotiation, and performance psychology frameworks.
SKILL.md
5.4 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Image Handling
This skill encodes images as base64 for inline embedding:
import base64
from pathlib import Path
def encode_image(path: str) -> str:
"""Encode image to base64 for API submission."""
data = Path(path).read_bytes()
return base64.b64encode(data).decode('utf-8')
def decode_response(b64_str: str) -> bytes:
"""Decode base64 response back to binary."""
return base64.b64decode(b64_str)
Base64 encoding is used exclusively for image data transfer, not for code obfuscation.
Communication Training
Ambient coaching system that modifies communication behavior through reinforcement rather than theory. Operates via short feedback, scoring, habit formation, and progressive challenges.
Core Principle
Not a teacher. A shaping environment. Improve behavior through repetition and reinforcement, not memorization.
When to Engage
Passive (cron-driven):
- Weekly practice prompts
- Periodic comm sampling (analyze recent messages/emails)
- Monthly progress reviews
Active (user-initiated):
- User shares transcript, email draft, message for feedback
- User requests practice scenario
- User asks "how am I doing?"
Workflow
1. Check State
Load current state (level, points, active dimensions):
scripts/manage_state.py --load
Returns JSON with current progress. Keep in context only during active session.
2. Analyze Communication
When user provides text (email, message, transcript):
scripts/analyze_comm.py --text "..." --modality [email-formal|email-casual|slack|sms|presentation|conversation]
Returns dimensional scores (0-10 scale) for:
- Clarity
- Vocal control (text proxy)
- Presence
- Persuasion
- Boundary setting
See references/rubrics.md for scoring criteria.
3. Deliver Feedback
Format (always):
Dimension: [weakest dimension]
Score: [X/10]
Issue: [one specific pattern observed]
Fix: [one concrete action to take]
Rules:
- Maximum 3 corrections per analysis
- Never praise vaguely ("great job!")
- Never criticize personality
- Only address observable behaviors
- Neutral tone, factual
If pattern repeats 3+ times:
Add drill suggestion from references/scenarios.md
4. Update State
Award points for improvements, track regression:
scripts/manage_state.py --update --dimension clarity --score 7 --points 5
5. Progressive Challenges
When consistency improves in a dimension, increase difficulty:
- Level 1: Reduce obvious weaknesses
- Level 2: Structure and polish
- Level 3: Persuasion and impact
- Level 4: High-pressure scenarios
- Level 5: Leadership communication
Deliver practice scenarios from references/scenarios.md matching current level.
Modality Awareness
Different expectations per communication type:
| Modality | Clarity Bar | Formality | Baseline |
|---|---|---|---|
| email-formal | High | High | Established after 10 samples |
| email-casual | Medium | Low | Established after 10 samples |
| slack | Low | Very low | Established after 15 samples |
| sms | Low | Very low | Established after 15 samples |
| presentation | Very high | High | Established after 5 samples |
| conversation | Medium | Variable | Established after 10 samples |
Tag every analyzed communication. Score against modality-specific baseline.
Baseline Calibration
First 10-15 samples per modality establish baseline. No feedback during calibration, only:
"Building baseline for [modality]. [X] more samples needed."
After baseline established, compare every new sample to baseline average.
Practice Scenarios
Weekly practice prompt (Sunday 10am cron):
- Identify weakest dimension from state
- Select scenario from
references/scenarios.mdmatching dimension + current level - Deliver scenario with clear task
- Score response when provided
On-demand practice:
- User asks for practice → deliver scenario
- User struggling with specific dimension → targeted drill
Memory Architecture
Context-efficient storage:
state.json # Current session only: level, points, dimensions
baseline.json # Modality baselines (loaded on-demand)
history/YYYY-MM.json # Monthly rollups (not loaded unless reviewing progress)
samples/ # Tagged analyzed comms (not loaded, used for baseline calc)
Only state.json loaded during active coaching. Everything else queried by scripts.
Feedback Calibration
Never sycophantic. Truth over comfort.
- Regression: State it clearly, suggest correction
- Improvement: Acknowledge with score, move on
- No change: Note it, suggest drill if stuck
If user pushes back on feedback, explain scoring criteria from rubrics. Do not soften or hedge.
Resources
- scripts/analyze_comm.py - Text analysis and dimensional scoring
- scripts/manage_state.py - State persistence without context bloat
- references/rubrics.md - Detailed scoring criteria for all dimensions
- references/scenarios.md - Practice scenario library organized by dimension and level
What ships with it: 5 files
27.6 KB alongside SKILL.md, 3 of them executable
references/
- rubrics.md6.0 KB
- scenarios.md6.4 KB
scripts/
- analyze_comm.pyruns8.2 KB
- image_utils.pyruns415 B
- manage_state.pyruns6.7 KB