research-journal — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited research-journal (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.
Research happens on the scale of weeks, months, and years — not hours. When you come back to a project after a gap, the WHAT is often still in the files (commits, results, designs) but the WHY is almost always gone. Why did we exclude that cohort? Why did we pick this baseline? What did we try that didn't work?
This skill captures the WHY in structured narrative entries, one per session, stored in docs/eureka/journal/YYYY-MM-DD.md. It is the writer counterpart to eureka:whats-next's reader role — whats-next scans the journal to figure out where you left off; research-journal is what puts information into the journal in the first place.
Core principle: Commits capture the WHAT. The journal captures the WHY. Both are needed.
Trigger this skill when:
eureka:systematic-troubleshooting found a root causeresearch-brainstorming → hypothesis-first)Do NOT trigger this skill when:
This skill is not a transcript generator. Do not dump the conversation into the journal. The journal is a deliberate, curated record of what mattered — not everything that happened.
This skill is also not a replacement for:
| Artifact | Captures |
|---|---|
experiment-log.md | Structured experiment records (N, seed, metric, pass/fail) |
docs/eureka/designs/ | Static research designs at brainstorming time |
docs/eureka/registrations/ | Frozen pre-registered hypotheses |
docs/eureka/audits/ | Manuscript-time claim audits |
| Git commit messages | What files changed and why mechanically |
| This skill (journal) | Narrative WHY, decisions mid-project, failures with reasons, blockers, continuity hints |
Each artifact serves a distinct purpose. The journal is the narrative layer that the others don't capture.
You MUST complete these steps in order:
docs/eureka/journal/YYYY-MM-DD.md (today's date in the project's timezone; use the date given in session context)docs/templates/research-journal-entry.mdeureka:whats-next will read this on next sessionThe journal file is always docs/eureka/journal/YYYY-MM-DD.md where YYYY-MM-DD is today's date.
docs/eureka/journal/ does not exist, create it.docs/eureka/journal/YYYY-MM-DD.md does not exist, you will create it with a top-level date header.## HH:MM session block below existing entries.Check the current date via session context — do not guess.
Before drafting, identify the following from this conversation and the project state:
| Category | What to look for |
|---|---|
| Worked on | Actual work performed — files edited, analyses run, commits made, discussions had |
| Decisions | Methodological choices with rationale — why this approach, what alternatives were considered |
| Failed attempts | Things tried that didn't work, with likely reasons and "what to avoid next time" |
| Surprises | Results or behaviors that contradicted expectations (signal for further investigation) |
| Insights | Meta-level lessons — reusable in future sessions or other projects |
| Blockers | What's preventing progress right now |
| Next session starts with | Concrete first action when returning — the single most important field |
If none of these apply (session was trivial), go to Step 3.
If after scanning the session context you have:
Then the session is not journal-worthy. Tell the user:
"This session was routine — no decisions or new insights worth journaling. Skipping. Let me know when there's something to capture."
Do not write an empty entry. A journal full of "nothing happened" entries is noise.
Use the template at docs/templates/research-journal-entry.md as the structure. The required sections are:
Worked on (even if brief)Next session starts with (even if brief)All other sections are optional — omit them if the category had nothing in it.
Content rules:
Re-read the draft and ask: "Would this insight apply to a different project, in a different field?"
Examples of cross-project insights:
Examples that are NOT cross-project (project-specific):
If any cross-project insight exists, mark it for Step 8.
Present the draft to the user in a code block and ask:
"Here's the journal entry I'd write for this session. Anything to edit, add, or remove before I save it?"
Wait for approval. If the user requests changes, revise and re-show. Do not force-write.
After the user approves:
# YYYY-MM-DD
<entry><entry> after existing content, with a blank line separator.Use the exact template structure for the entry.
If you identified cross-project insights in Step 5:
"The insight '[insight]' looks reusable across projects. Want me to also note this in Claude Code's memory so future sessions (in any project) remember it?"
If the user approves, that insight should be added to Claude Code's auto-memory system via the normal mechanism (not directly written by this skill — auto-memory is managed by Claude Code, and this skill only surfaces candidates).
If the user declines or there are no cross-project insights, skip this step silently.
End with:
"Logged todocs/eureka/journal/YYYY-MM-DD.md. Next sessioneureka:whats-nextwill read this and pick up from '[next session starts with field]'."
See docs/templates/research-journal-entry.md for the full template. The structure:
## [HH:MM] Session — [one-sentence summary]
### Worked on
- [actual work done]
### Decisions
- **[Decision]**: [rationale, alternatives, why rejected]
### Failed attempts
- **[What was tried]**: [outcome], [likely reason], [avoid next time]
### Surprises
- [Expected X, got Y, probable explanation Z]
### Insights
- [Cross-project lessons worth remembering]
### Blockers
- [What's preventing progress right now]
### Next session starts with
- [Concrete first action when returning]
### References
- [Files touched, commits, result files]Omit sections that are empty. Keep it tight.
CAPTURE (high signal for future you):
SKIP (noise):
git commit, pytest, etc.)experiment-log.mddocs/eureka/registrations/docs/eureka/designs/The principle: the journal captures the WHY that no other file captures.
| Excuse | Reality |
|---|---|
| "Nothing interesting happened today" | Even one decision is worth capturing. Three months later, "why did I pick this baseline?" is a real question. |
| "I'll remember this" | You will not. Every researcher says this. Every researcher is wrong. |
| "The commit message captures it" | Commits capture WHAT changed. The journal captures WHY. |
| "It's already in the design doc" | Designs are frozen at brainstorming time. Mid-project decisions are not in there. |
| "Too busy to journal" | Journaling takes 3 minutes. Re-loading lost context takes 30. |
| "I'll journal at the end of the week" | You will not. Details are lost within hours. |
| "This is over-engineering for a small project" | Research runs on month/year timescales. Even small projects outlive your short-term memory. |
| "My collaborators don't journal" | Their loss. You do not owe them your context loss. |
These mean you are doing it wrong:
| Anti-pattern | Fix |
|---|---|
| Journaling after every trivial action | Journal per session, not per commit |
| Transcribing the conversation | Curate, don't record |
| Omitting rationale, keeping only facts | The rationale IS the journal's purpose |
| Writing retrospectives weeks later | Same-day or not at all |
| Letting the journal become a to-do list | That's for TodoWrite, not the journal |
| Treating it as a personal diary | Keep it professional and project-focused |
| Auto-writing without user review | Always show the draft first |
eureka:using-eureka when any of the trigger conditions are detectedeureka:whats-next (most recent entry, especially the "Next session starts with" field)docs/eureka/records/experiment-log.md (metric-focused), docs/eureka/designs/ (design-time), docs/eureka/registrations/ (pre-registered)FLEXIBLE — The writing style, length, and depth adapt to what actually happened in the session. The structure (date-based file, section headers, required Worked on + Next session starts with fields) is fixed.
The journal is the longest-lived memory in any Eureka project. Treat it accordingly: terse, specific, and always curated.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.