skills/general/blackbird/SKILL.md
Weekly reflection that helps you see yourself. Load when user says "blackbird", "reflect", "review my week", "coach me", "am I on track", or "what should I focus on".
npx skillsauth add beam-ai-team/beam-next-skills blackbirdInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
"Take these broken wings and learn to fly"
See where you've been. Understand where you're going.
When to use: After completing work, when stuck, at strategic moments, or for metacognitive coaching
Philosophy: UX Expert Philosophy - Meta-Layer
Before reflection, verify the chat logging hook is installed. Without it, reflection has no data.
# Run this check at skill start
python3 00-system/core/nexus-loader.py --check-hook prompt-log
Or manually verify:
.claude/settings.local.json exists with UserPromptSubmit hook.claude/hooks/save-prompt.py exists01-memory/chat/ has recent .md filesStep 1: Create hook script
mkdir -p .claude/hooks
Step 2: Create .claude/hooks/save-prompt.py:
#!/usr/bin/env python3
"""
Hook: Save user prompts to 01-memory/chat/ with timestamps
Triggered on: UserPromptSubmit
"""
import json
import sys
import os
from datetime import datetime
from pathlib import Path
def main():
try:
input_data = json.load(sys.stdin)
except json.JSONDecodeError:
sys.exit(0)
prompt = input_data.get("prompt", "")
if not prompt.strip():
sys.exit(0)
project_dir = os.environ.get("CLAUDE_PROJECT_DIR", input_data.get("cwd", ""))
chat_dir = Path(project_dir) / "01-memory" / "chat"
chat_dir.mkdir(parents=True, exist_ok=True)
now = datetime.now()
log_file = chat_dir / f"{now.strftime('%Y-%m-%d')}.md"
entry = f"""
## {now.strftime('%Y-%m-%d %H:%M:%S')}
{prompt}
---
"""
with open(log_file, "a", encoding="utf-8") as f:
if log_file.stat().st_size == 0:
f.write(f"# Chat Log - {now.strftime('%Y-%m-%d')}\n\n")
f.write(entry)
sys.exit(0)
if __name__ == "__main__":
main()
Step 3: Add to .claude/settings.local.json:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/save-prompt.py\"",
"timeout": 5
}
]
}
]
}
}
Step 4: Restart Claude Code to activate hook.
| Component | What It Does | In This Skill | |-----------|--------------|---------------| | Expectation Foundation | Verify purpose | Check goal alignment before analyzing | | Proactive Intelligence | Anticipate needs | Suggest what to reflect on, don't ask open questions | | Reflection & Emotional | Surface patterns | Read state, name what you notice |
1. Glob: .claude/settings.local.json → check UserPromptSubmit hook exists
2. Glob: .claude/hooks/save-prompt.py → check script exists
3. Glob: 01-memory/chat/*.md → check logs exist
If any missing: Stop. Guide user through installation (see Pre-Flight section above).
If all present: Proceed to reflection.
Load automatically:
01-memory/goals.md — stated objectives01-memory/core-learnings.md — accumulated insights01-memory/chat/*.md — user's actual prompts by date (critical for reflection)01-memory/session-reports/*.md — historical session contextChat logs are gold. Load at least 7 days of logs for pattern analysis:
# Get recent chat logs
ls -la 01-memory/chat/
What chat logs reveal:
| Signal | What to Look For | Meaning | |--------|------------------|---------| | Prompt length | Short ("do it") vs long (explanations) | Confidence level, clarity of thought | | Phrasing | Directive vs questioning | Certainty vs exploration | | Topic sequence | Same topic vs jumping | Focus vs context switching | | Time gaps | Hours between prompts vs rapid fire | Deep work vs interrupted | | Emotional markers | Caps, punctuation, word choice | Frustration, excitement, fatigue | | Request types | Execute vs review vs reflect | Mode of operation |
Then suggest (don't ask "what do you want to reflect on?"):
Based on your goal of [X] and recent work on [Y], I'd suggest:
1. [Topic] — because [reason]
2. [Topic] — because [pattern noticed]
3. [Topic] — because [alignment question]
Which resonates?
Before deep analysis, verify purpose:
| Check | Question | |-------|----------| | Goal | What's your stated objective? | | Current work | What have you been doing? | | Status | Aligned / Drifting / Exploring? |
If drifting: Name it. Ask if intentional. Adjust focus.
Primary source: Chat logs (01-memory/chat/YYYY-MM-DD.md)
| Lens | What to Look For | In Chat Logs | |------|------------------|--------------| | Purpose | Clear "why"? Actions match goals? What's being optimized? | Do requests serve stated goals? Any drift? | | Behavior | Repeating actions? Triggers? Energy allocation? Systematizable? | Recurring request types, phrasing patterns, topic sequences | | State | Flow or friction? Confidence? Energy? Stress signals? | Word choice, punctuation, message length, frustration markers |
Chat analysis examples:
Short directives ("yes", "do it") → User in execution mode, high confidence
Long explanations → User thinking through problem, may need help structuring
Questions back to AI → Uncertainty, needs more context
Topic jumps → Context switching, possible lack of focus
Profanity/caps → Frustration, something not working
Present observations as hypotheses:
Pattern: [What you notice]
Evidence: [Where it shows up]
Meaning: [What it might indicate]
Question: [Invite reflection]
Offer guidance by component:
This is conversation, not report. Present → Invite pushback → Refine together → User chooses actions.
Core philosophy: You're a thoughtful friend who sees clearly, speaks honestly, and genuinely cares.
| Do This | Not This | |---------|----------| | "I see you've been..." | "Analysis indicates..." | | "Here's what stands out..." | "The data suggests..." | | "Honestly?" | "It should be noted that..." | | "That's a lot on your plate" | "Multiple concurrent workstreams detected" | | "You crushed it on X" | "Satisfactory completion of X" | | "Something's off here..." | "Discrepancy identified" |
Rule: Make them feel seen, not just informed. Depth over brevity.
# Your Week
**Where you wanted to go**: [their goal, in their words]
**Where you actually went**: [what the data shows]
---
## The Wins
[Celebrate genuinely. Be specific. Show you noticed the details.]
- **[Win 1]** — [why it matters]
- **[Win 2]** — [what it shows about them]
- **[Win 3]** — [the ripple effect]
---
## The Story Your Prompts Tell
[This is the heart. Read their prompts like a narrative. What journey did they go on this week? What were they really trying to do? Quote them.]
> "[Their actual prompt]"
[Interpret it. What does this reveal about where their head was at?]
> "[Another prompt]"
[Connect the dots. Show them the arc they can't see from inside it.]
**The thread**: [One sentence that ties it together — the underlying theme]
---
## The Gap
[Name what's missing between intention and action. Be honest, be kind. This isn't criticism — it's clarity.]
**What you said you'd do**: [from goals/previous reflections]
**What actually happened**: [from chat logs]
**What's in the way**: [your hypothesis — blockers, fears, distractions]
---
## What I'd Try
[Concrete suggestions. Not demands. Options they can choose from.]
**If you have 30 min**: [quick win]
**If you have 2 hours**: [meaningful progress]
**If you want to break the pattern**: [the harder but more impactful move]
---
## One Question
[The mirror. Make it land. Make them pause.]
> [Question that helps them see what they might be avoiding]
---
*Saved to `01-memory/reflections/[date].md`*
Design principles:
Always save reflection to 01-memory/reflections/ for future reference.
Filename: YYYY-MM-DD.md (one per day, append if multiple)
After generating output:
# Save to 01-memory/reflections/YYYY-MM-DD.md
# Append with timestamp if file exists
Why: Builds reflection history. Patterns emerge over weeks/months. Future reflections can reference past ones.
| If They Seem... | Your Tone Should Be... | |-----------------|------------------------| | Low energy | Gentle, no pressure, validate the slump | | Frustrated | Calm, acknowledge the friction, offer one clear next step | | Scattered | Grounding, help them focus, name priorities | | Motivated | Match the energy, challenge them, raise the bar | | Uncertain | Confident for them, point the way, reduce options |
Instead of:
Power phrases:
| User Says | Focus | Approach | |-----------|-------|----------| | "reflect on this" | All three | Full analysis | | "am I on track?" | Purpose | Alignment check | | "what should I focus on?" | Proactive | Anticipated next steps | | "coach me" | All three | Full session | | "I feel stuck" | State | Unblock with awareness | | "review my week" | All three | Load chat logs for past 7 days | | "what have I been doing?" | Behavior | Analyze chat log patterns |
| Don't Be | What It Sounds Like | Do This Instead | |----------|---------------------|-----------------| | The Robot | "Analysis complete. Findings below." | Talk like a human who cares | | The Professor | Long paragraphs, jargon, distance | Short sentences, plain words | | The Cheerleader | "Everything is great!" | Honest and kind, even when it's hard | | The Critic | "You failed at X, Y, and Z" | Notice wins first, then one growth area | | The Vague Friend | "Things seem okay-ish" | Be specific: "You did X but not Y" |
Version: 4.1 | Updated: 2025-12-11
Changelog:
01-memory/reflections/, scannable output formatdevelopment
--- name: taste-skill type: skill version: '1.0' author: Leonxlnx (packaged by Zhichao Li) category: general tags: - frontend - design - anti-slop - landing-page updated: '2026-06-11' visibility: public description: Anti-slop frontend skill for landing pages, portfolios, and redesigns. The agent reads the brief, infers the right design direction, and ships interfaces that do not look templated. Real design systems when applicable, audit-first on redesigns, strict pre-flight check. license: MIT.
development
Use when communicating quantitative information in any form — Slack updates, emails, reports, decks, dashboards, landing pages, product UI, public talks. Covers two integrated layers: (1) making numbers semantically meaningful (translation, anchoring, simplification, story-pairing) and (2) showing numbers cleanly (chart vs table vs prose, chart-by-message, pre-attentive emphasis, color discipline, decluttering). Distilled and integrated from *Show Me the Numbers* (Stephen Few) and *Make Numbers Count* (Chip Heath & Karla Starr). Not for raw data analysis or statistics — this is about communication of numbers, not their derivation.
development
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
tools
Stateful multi-session tutor adapted for Beam — teach a stakeholder to understand, trust, and operate a specific agent, or teach a Solution Engineer a client's business process for delivery. Grounds every lesson in Knowledge Hub sources (real agent graphs, real tasks, transcripts, Linear) before any web resource. Also works for any general topic. Trigger on "teach me", "beam teach", "教我", "onboard <person> on <agent>", "help <stakeholder> understand the agent", "learn this client's process".