3182/decision-journal/SKILL.md
Log non-trivial decisions with reasoning, expected outcome, and a review date — then later score what actually happened vs what you predicted. Use when the user makes a consequential call (buy/sell, strategy pivot, hire, commit-or-kill) and wants to capture it before hindsight bias rewrites memory. Surfaces prediction errors over time so the user actually learns from them. Distinct from `memory` (declarative facts) — this is structured decision tracking with review triggers and outcome scoring.
npx skillsauth add starchild-ai-agent/community-skills @3182/decision-journalInstall 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.
Hindsight bias rewrites memory. "I knew it was risky" feels true after the loss, but you didn't write it down. A decision journal forces you to commit your reasoning to paper before the outcome is known, then scores how well your predictions matched reality — so the user learns from prediction errors, not just outcomes.
Good outcomes from bad reasoning = luck. Bad outcomes from good reasoning = variance. You can only tell the difference if the reasoning was captured beforehand.
Do NOT use for: trivial preferences ("should I use tabs or spaces"), routine execution, or things the user has already decided and is just executing. Only log decisions where the reasoning itself has learning value.
Every entry captures these, no exceptions:
Optional but valuable: confidence (1-5), alternatives rejected (one-liner each, with why), what would invalidate this (the kill criterion).
from core.skill_tools import decision_journal_add
# or via bash:
# python3 skills/decision-journal/scripts/journal.py add ...
Fields: title, decision, reasoning, expected, review_on (ISO date or trigger phrase), confidence (1-5), tags (list), alternatives (dict of name→reason rejected), invalidation (string).
Returns the entry ID. Entries are stored in workspace/data/decision-journal.jsonl (append-only, one JSON object per line).
Two modes:
Date-triggered review — entries with review_on ≤ today and status=open are due. Run:
python3 skills/decision-journal/scripts/journal.py due
Returns due entries. For each, the agent prompts the user: "What actually happened?" then scores it.
Manual review — user asks "review my decision on X":
python3 skills/decision-journal/scripts/journal.py find --query "X"
python3 skills/decision-journal/scripts/journal.py score --id <entry_id> \
--actual "what happened" --outcome right|wrong|partial|unresolved \
--notes "what the gap teaches"
The score captures:
actual — what really happened (factual, not interpretive)outcome — right / wrong / partial / unresolved (did reality match expectation?)reasoning_quality — separate from outcome! Good reasoning + bad outcome = variance, not error. Bad reasoning + good outcome = luck, not skill. The agent should score reasoning_quality honestly, not let the outcome contaminate it.notes — the lesson. What did the prediction error reveal about the user's mental model?Critical scoring discipline: never let outcome contaminate reasoning_quality. A decision to hold a stock that then crashed isn't automatically bad reasoning — only mark reasoning_quality low if the reasoning itself was flawed (ignored a known risk, over-weighted a single data point, etc.). This separation is the whole point of the journal.
Optionally wire date-triggered reviews into scheduled_task so due entries surface automatically:
# Register a daily check that pushes due decisions to the user
scheduled_task(
action="register",
title="Decision journal review",
schedule="0 9 * * *", # 9 AM UTC daily
# run.py calls: python3 skills/decision-journal/scripts/journal.py due
# if any due: push summary to user via /push
)
The run.py should: call due, if empty exit silently (no push), if non-empty push a summary listing each due decision's title + expected outcome + a prompt to score it.
This is optional — the journal works fine with manual review. But the scheduled loop is what turns it from a diary into a learning system.
journal.py list --status open — all unresolved decisionsjournal.py list --tag investing — filter by tagjournal.py stats — aggregate: how many right/wrong/partial, average confidence, most common prediction errors (from notes field across scored entries)journal.py find --query "keyword" — full-text search across decisions + reasoning + actual outcomesThe stats command is where the meta-learning lives. After 20+ scored entries, patterns emerge: "I'm consistently overconfident on X type of decision" or "my reasoning is good but my timing is off." That's the gold.
workspace/data/decision-journal.jsonl — append-only JSONL. One object per line. Never edit historical entries in place; scoring adds a review block to the same entry (so the original reasoning is preserved exactly as written, even if it was wrong).
Schema (see references/schema.md for full):
{
"id": "dj-2026-0142",
"ts": "2026-06-23T14:30:00Z",
"title": "Hold ZG despite PE 168",
"decision": "Keep position, no add",
"reasoning": "PE high but growth story intact, sector momentum...",
"expected": "Flat to +10% over 3 months, no >15% drawdown",
"review_on": "2026-09-23",
"confidence": 3,
"tags": ["investing", "a-share"],
"alternatives": {"sell_all": "tax event + timing risk"},
"invalidation": "Q2 miss or sector break MA60",
"status": "open",
"review": null
}
After scoring, review fills in and status flips to closed.
investing, hiring, strategy, kill-decision) so stats can aggregate.references/schema.md — full JSONL schema, field semantics, scoring rubricscripts/journal.py — CLI: add, due, find, list, score, statstools
TQX (tqx.trade) HK/US stock quant workflow via tqx-cli: cross-sectional factor analysis, event-driven strategy backtests on the panda_backtest engine, and agent-driven automated paper trading. Use when the user wants to run factor IC/IR analysis, backtest a Python trading strategy on Hong Kong or US stocks, or set up agent-automated trading (e.g. "backtest a moving-average strategy on AAPL", "analyze a momentum factor on HK stocks", "let the agent trade my paper account").
tools
中学物理实验教学参赛方案套件。包含四个完整实验(单摆测g、声悬浮测声速、向心力定量演示仪、电磁阻尼定量研究),每套含固件源码、3D打印图纸、教学PPT、教学文稿、采购清单、调试手册、视频分镜脚本、模拟器。Use when a teacher/student needs a complete, classroom-ready physics experiment package for competition or teaching.
development
End-to-end blog management for AI agents. Write, import, build, preview, and publish articles using the blog template. Covers draft workflow, article import, SEO, OG images, and deployment.
development
ESP8266/ESP32 + 磁簧开关/霍尔传感器 单摆测重力加速度实验套件。 硬件搭建→固件烧录→数据采集→Web仪表盘→g值计算→教学文档,一站式完成。 Use when the user wants to build a pendulum g-measurement experiment, measure gravity with a micro-controller, or needs a complete physics experiment package with hardware + firmware + dashboard + teaching materials.