skills/documentation/journal-entry-creator/SKILL.md
Create structured journal entries with YAML frontmatter, template-based sections, and compliance validation. Use when user asks to 'create journal entry', 'new journal', 'document [topic]', 'journal about [topic]', or needs to create timestamped .md files in YYYY/MM/ directories. Supports five entry types: general journal entries, troubleshooting sessions, learning notes, article summaries, and ticket-refinement sessions. Keywords: journal, documentation, troubleshooting, learning, article-summary, ticket-refinement, refine ticket, YAML frontmatter, template schemas, validation.
npx skillsauth add pantheon-org/tekhne journal-entry-creatorInstall 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.
Automate creation of structured journal entries with template schemas, frontmatter validation, and compliance checking.
Every entry is a durable, queryable record, not a scratch note: get the frontmatter, triple-synced dates, and structure right the first time so future search and tooling can rely on them. Know when not to use this skill: a throwaway note with no frontmatter needs no ceremony.
Use journal-entry-creator when:
Do NOT use for:
Decision criteria:
| User Intent Signals | Type | Template | Required Tag |
| -------------------- | ---- | -------- | ------------ |
| "error", "fix", "resolved", "incident" | Troubleshooting | troubleshooting.yaml | troubleshooting |
| "learned", "tutorial", "discovered" | Learning | learning.yaml | learning |
| URL/source, "read", "watched", "summarize" | Article Summary | article-summary.yaml | article/video/podcast/talk |
| "refine", "flesh out", "groom", "amend ticket" | Ticket Refinement | ticket-refinement.yaml | ticket-refinement |
| General documentation, investigation | Journal Entry | journal-entry.yaml | (flexible) |
Trade-off: When intent is ambiguous, prefer the more specific type (Troubleshooting > Ticket Refinement > Learning > General).
MANDATORY - READ BEFORE PROCEEDING:
Before generating any entry, you MUST read the complete template schema file:
# Based on entry type selected, read ENTIRE file:
skills/journal-entry-creator/assets/templates/troubleshooting.yaml
skills/journal-entry-creator/assets/templates/learning.yaml
skills/journal-entry-creator/assets/templates/article-summary.yaml
skills/journal-entry-creator/assets/templates/ticket-refinement.yaml
skills/journal-entry-creator/assets/templates/journal-entry.yaml
Do NOT generate entries without loading the schema first. The schema defines required sections, frontmatter fields, heading hierarchy, and validation rules.
When to load references:
compliance.md: Only if validation fails and you need detailed rulesedge-cases.md: Only for complex or unusual edge casesexample-*.md: Only if user asks for examples or you need clarification on structurejournal-command.md (superseded by this skill)Beyond standard markdown, this journal system enforces:
All three must match exactly:
2025-02-24-topic.md (slug lowercase-only)date: 2025-02-24# Topic - February 24, 2025 (Month D, YYYY format)File must be in YYYY/MM/ directory matching its date:
2025-02-24-*.md → Must be in 2025/02/2025-11-05-*.md → Must be in 2025/11/Exactly ONE H1 in the entire document with precise format:
# [Title] - [Month D, YYYY]
Not allowed:
Tags must:
## Tags sectionExample:
tags:
- troubleshooting
- api-gateway
- aws-lambda
Must match:
## Tags
`troubleshooting` | `api-gateway` | `aws-lambda`
ALL code blocks MUST have language identifiers. No bare triple backticks allowed.
Valid:
```bash
git status
```
Invalid:
```
git status
```
Each entry that includes screenshots or attachments MUST use an entry-specific sibling directory:
YYYY/MM/YYYY-MM-DD-slug.md ← entry file
YYYY/MM/YYYY-MM-DD-slug/assets/ ← entry assets (gitignored, local-only)
Reference assets in markdown with a relative path from the entry file:

Why: A shared screenshots/ or assets/ directory at the month level causes filename collisions
when multiple entries use the same numbering scheme (e.g. 01-cloudwatch-alarm.png). Scoping assets
under the entry slug directory makes every path unique.
Note: The assets/ directories are gitignored — screenshots are local-only. The markdown image
references are tracked in git as documentation of what evidence was captured.
Applies to ticket-refinement sessions: fleshing out or amending an issue-tracker ticket (refinement prep, backlog grooming, turning a one-line ticket into a refinement-ready one). Use the ticket-refinement.yaml type.
HARD RULE: this skill NEVER edits the ticket directly. The amended ticket content lives inside the journal entry as a ready-to-paste markdown block. Applying it to the tracker is a separate step the user explicitly confirms, performed outside this skill.
When an entry refines a ticket, you MUST:
refinement_ticket: <KEY> in the frontmatter (e.g. refinement_ticket: TICKET-123). Use this field, not jira_ticket — the deliverable is a ticket description, not a comment.## Proposed Ticket Description section holding the full amended description inside a fenced markdown block:## Proposed Ticket Description
Draft for TICKET-123 - review before applying; not yet applied to the ticket.
```markdown
**Summary:** <one-line summary>
**Background**
<full, self-contained amended ticket description>
```
Rules for the proposed description:
Draft for [TICKET] - review before applying; not yet applied. line, and never write it to the tracker from this skill.The validator (validate-journal-entry.sh) enforces this: when refinement_ticket is present in frontmatter, a ## Proposed Ticket Description section is required. It is a no-op when the field is absent, so other entries are unaffected.
Entry is complete when ALL criteria are met:
Critical violations (NEVER):
Triple sync validation:
YYYY/MM/YYYY-MM-DD-slug.md (or YYYY/MM/YYYY-MM-DD-JIRA-TICKET-slug.md for troubleshooting with ticket)Principles (high freedom):
Key questions to ask:
Slug generation: Extract 3-6 meaningful keywords (see Phase 3 for detailed rules)
Low freedom - exact steps:
Fallback: If schema file missing or unreadable, STOP and report error. Do not guess structure.
Medium freedom - guided by schema:
mkdir -p YYYY/MMYYYY-MM-DD-JIRA-TICKET-slug.md (e.g. 2026-04-07-plgsd-9507-verify-details-alarm.md)YYYY-MM-DD-slug.mdSlug generation principles:
YYYY-MM-DD-plgsd-9507-slug.md2026-04-07-plgsd-9507-verify-details-alarm, opencode-killed-process-fix, aws-bedrock-inventoryExact commands in sequence:
# 1. Validate structure
bash skills/journal-entry-creator/scripts/validate-journal-entry.sh YYYY/MM/YYYY-MM-DD-slug.md
# 2. Format (only if validation passes)
npx prettier --write YYYY/MM/YYYY-MM-DD-slug.md
# 3. Lint and auto-fix
npx markdownlint-cli2 YYYY/MM/YYYY-MM-DD-slug.md --fix
# 4. Re-validate to confirm
bash skills/journal-entry-creator/scripts/validate-journal-entry.sh YYYY/MM/YYYY-MM-DD-slug.md
If validation fails:
Common scenarios: File exists, date mismatch, schema missing, validation failures, custom structure requests.
Quick reference:
For detailed resolution strategies: Load skills/journal-entry-creator/references/edge-cases.md only when encountering an unusual or complex edge case.
After successful validation, offer to commit:
git add YYYY/MM/YYYY-MM-DD-slug.md
git commit -m "Add journal entry: [Brief Description] (YYYY-MM-DD)"
Commit message format:
Add journal entry:Add journal entry: OpenCode process fix (2025-02-24)cat skills/journal-entry-creator/assets/templates/troubleshooting.yaml first, review required fields, then generate.```\ngit status\n``` (no language).```bash\ngit status\n``` (explicit language).2025-02-24-*.md, frontmatter date: 2025-02-25, H1 March 1, 2025.2025-02-24 in filename, date: 2025-02-24 in frontmatter, February 24, 2025 in H1.refinement_ticket and put the amended content in a ## Proposed Ticket Description fenced block; the user applies it separately.journal-entry.yaml - General purpose entriestroubleshooting.yaml - Problem resolution sessionslearning.yaml - Knowledge acquisition documentationarticle-summary.yaml - External content summariesticket-refinement.yaml - Issue-tracker ticket refinement (amended ticket captured in-entry, never written to the tracker)Load with relative paths: skills/journal-entry-creator/assets/templates/[file]
validate-journal-entry.sh - Compliance validation (run before commit)compliance.md - Detailed validation rules (load only if validation fails)edge-cases.md - Detailed edge case resolution strategies (load only for complex scenarios)example-journal-entry.md - Real entry example (load only if user asks)example-with-frontmatter.md - Frontmatter example (load only if needed)journal-command.md - Legacy workflow (superseded, do not use)tools
A skill that produces warnings but no errors.
testing
A well-formed example skill for testing the validator.
development
A skill with code blocks and imperative instructions for testing content and contamination analysis.
tools