symptom-journal
Log and track personal health symptoms with severity ratings, pattern analysis, trigger correlation, and PDF report generation for doctor visits. Use when a user needs to record health symptoms, review symptom history, analyze patterns, or prepare a doctor visit summary.
Best use case
symptom-journal is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Log and track personal health symptoms with severity ratings, pattern analysis, trigger correlation, and PDF report generation for doctor visits. Use when a user needs to record health symptoms, review symptom history, analyze patterns, or prepare a doctor visit summary.
Teams using symptom-journal should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/symptom-journal/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How symptom-journal Compares
| Feature / Agent | symptom-journal | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Log and track personal health symptoms with severity ratings, pattern analysis, trigger correlation, and PDF report generation for doctor visits. Use when a user needs to record health symptoms, review symptom history, analyze patterns, or prepare a doctor visit summary.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# symptom-journal
A local-first symptom tracking tool. All data stays on the user's device.
## When to use
- User wants to log a new symptom occurrence
- User wants to review symptom history or frequency
- User needs to analyze patterns or triggers
- User is preparing for a doctor visit and needs a report
- User wants to track medication correlations with symptoms
## Privacy model
All symptom data is stored locally in SQLite at `./data/journal.db`. No network requests are made for data. PDF export is generated locally. No telemetry or analytics.
## Prerequisites
- symptom-journal server running: `pnpm dev` or `docker compose up -d`
- Server accessible at `http://localhost:3847` (default)
## Installation
```bash
git clone <repo>
cd symptom-journal
pnpm install
pnpm dev
# App runs at http://localhost:3847
```
Or with Docker:
```bash
docker compose up -d
# App runs at http://localhost:3847
```
## Key operations via API
### Log a symptom
```bash
curl -X POST http://localhost:3847/api/symptoms \
-H "Content-Type: application/json" \
-d '{
"symptom_type_id": 1,
"severity": 5,
"time_of_day": "morning",
"logged_at": "2026-03-20T09:14:00",
"notes": "Context notes here"
}'
```
### List recent symptoms
```bash
curl "http://localhost:3847/api/symptoms?per_page=20"
```
### Get pattern data
```bash
curl "http://localhost:3847/api/patterns/frequency?from=2026-02-01&to=2026-03-20"
```
### Generate PDF report
```bash
curl -X POST http://localhost:3847/api/reports/export/pdf \
-H "Content-Type: application/json" \
-d '{"from":"2026-02-01","to":"2026-03-20","include_notes":true}' \
--output report.pdf
```
## API Reference
| Endpoint | Method | Description |
|---|---|---|
| `/api/symptoms` | GET | List symptoms (supports `from`, `to`, `type_id` query params) |
| `/api/symptoms` | POST | Create symptom entry |
| `/api/symptoms/:id` | GET | Single entry detail |
| `/api/symptoms/:id` | PUT | Update entry |
| `/api/symptoms/:id` | DELETE | Delete entry |
| `/api/symptom-types` | GET | List symptom types |
| `/api/symptom-types` | POST | Create custom type |
| `/api/patterns/frequency` | GET | Frequency time series |
| `/api/patterns/severity` | GET | Severity trend data |
| `/api/patterns/triggers` | GET | Trigger correlation data |
| `/api/patterns/heatmap` | GET | Calendar heatmap data |
| `/api/medications` | GET | List medications |
| `/api/medications` | POST | Add medication |
| `/api/reports/export/pdf` | POST | Generate and download PDF |
| `/api/settings` | GET | Get settings |
| `/api/settings` | PATCH | Update settings |
## Severity scale
| Range | Label | Color |
|---|---|---|
| 1-3 | Low / manageable | Green |
| 4-6 | Moderate | Amber |
| 7-10 | High / severe | Red |
## Environment Variables
| Variable | Default | Description |
|---|---|---|
| `PORT` | `3847` | Server port |
| `DATA_DIR` | `./data` | SQLite database location |
| `EXPORT_DIR` | `./exports` | PDF export temp directory |
| `LOG_LEVEL` | `info` | debug / info / warn / error |
| `PIN_LOCK` | `0` | 1 = require PIN on startup |
| `NODE_ENV` | `development` | development / production |
## Symptom type IDs (built-in)
| ID | Name | Category |
|---|---|---|
| 1 | Headache | Pain / Neurological |
| 2 | Migraine | Pain / Neurological |
| 3 | Fatigue | Energy |
| 4 | Nausea | Digestive |
| 5 | Joint Pain | Pain / Musculoskeletal |
| 6 | Dizziness | Neurological |
| 7 | Anxiety | Mental / Emotional |
| 8 | Insomnia | Sleep |
## Troubleshooting
### Port already in use
Change `PORT` in environment or `.env` file.
### Database file permission error
Ensure `DATA_DIR` is writable by the server process. Default is `./data/`.
### PDF generation fails
Check that `EXPORT_DIR` is writable. Ensure `pdfkit` is installed (`pnpm install`).Related Skills
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.
Skill: personal-finance
## Overview
Skill: csv-import
## Overview
Skill: Syntax Highlighting
## Purpose
Skill: Pastebin Core
## Purpose