devlog
Create and maintain a DEVLOG.md file capturing the development story of a project. Use this periodically over the course of a project to capture important information about the development story. Invoke when the user asks to update the devlog, create a devlog, document project progress, or capture development history. Also appropriate after completing significant milestones or before context switches.
What this skill does
# DevLog Create and maintain `DEVLOG.md` in the project root. The devlog tells the story of the project - why it exists, how it evolved, what decisions were made and why, challenges encountered, and pivots taken. A reader should be able to read it end-to-end and understand the project's journey. It should be detailed enough to reconstruct the development narrative, but not an exhaustive transcript. ## Workflow ### 1. Determine Project Context First, establish the current working directory and derive the chat history path: ```bash pwd ``` Convert the project path to the chat history directory name by replacing `/` with `-`: - Example: `/Users/johndamask/src/tries/2026-01-08-myproject` - Becomes: `~/.claude/projects/-Users-johndamask-src-tries-2026-01-08-myproject` ### 2. Verify Source Access Before gathering information, verify you can access the key sources. If any are unavailable, ask the user for guidance. **Check for:** - Git repository (`.git` directory or `git status`) - Claude chat history (`~/.claude/projects/<converted-path>/`) - Planning documents (`.claude/`, project root, or docs folders) - Issue tracker (check for common indicators below) If git is not found, ask the user: "I don't see a git repository here. How is source code tracked for this project?" The project may use a different VCS, or this may be a subdirectory of a larger repo. ### 3. Gather Information from Sources Collect information from all available sources: #### A. Planning Documents Search for planning documents in the project: ```bash find . -name "*.md" -type f | xargs grep -l -i "plan\|implementation\|architecture" 2>/dev/null | head -20 ``` Also check for Claude plan mode artifacts (often in `.claude/` or project root). If planning documents exist, summarize key decisions and link to them in the devlog. #### B. Claude Chat History Read conversation history from the project's chat directory. Focus on sessions since the last devlog entry: ```bash ls -lt ~/.claude/projects/<converted-path>/*.json 2>/dev/null | head -10 ``` **Handling Large History Files:** Chat history files can grow large and may not fit entirely in context. When this happens: 1. **Check file size first:** ```bash wc -l ~/.claude/projects/<converted-path>/*.json ``` 2. **Process in chronological chunks** if files are large: - Start with the oldest entries and work forward - Use `head` and `tail` with line offsets to read manageable sections (e.g., 500-1000 lines at a time) - Track the date range of each chunk you've processed 3. **Use dates to detect gaps:** - Each devlog entry has a `YYYY-MM-DD` header - Compare dates in the chat history against existing devlog entries - If you see dates in chat history that aren't in the devlog, those periods need to be captured - This is why date/time in devlog sections is critical - it lets you identify missing coverage 4. **Iterative parsing strategy:** ```bash # Read first chunk (oldest) head -n 1000 <history-file> # Read subsequent chunks tail -n +1001 <history-file> | head -n 1000 # Continue until you've covered the full date range ``` 5. **Fill gaps systematically:** If the devlog has missing date ranges, work through them chronologically. If context limits force you to stop before completing all gaps, document where you stopped so the next update can continue from there. Parse the JSON files to extract: - Significant decisions made - Problems encountered and solutions - Features implemented - Research conducted - Direction changes #### C. Git Commit History First, verify git is available: ```bash git status 2>/dev/null || echo "NOT_A_GIT_REPO" ``` **If git is not found:** Ask the user how source code is tracked. They may use a different VCS (Mercurial, SVN, etc.), or this directory may be part of a larger repository. Don't assume - ask. **If git is available:** Review commits since the last devlog entry (check the "Last Updated" date in DEVLOG.md, or use a reasonable default): ```bash git log --oneline --since="<last-devlog-date>" 2>/dev/null || git log --oneline -30 ``` For more detail on specific commits: ```bash git log --pretty=format:"%h - %s (%ai)" --since="<last-devlog-date>" ``` If the devlog hasn't been updated in a long time, you may need to cover a larger range. Focus on commits that represent meaningful changes rather than trying to document everything. #### D. Issue Tracker Issues provide valuable context for the devlog - they capture the "why" behind work, discussions, and decisions. **Discover the issue tracker:** 1. Check for common indicators in the project: - `.github/` directory → likely GitHub Issues - `linear.json` or `.linear/` → Linear - `beads.json` or `.beads/` → Beads (`bd list` command) - `.jira/` or Jira references in commits → Jira - `notion.json` → Notion 2. Check git remote for GitHub/GitLab: ```bash git remote -v 2>/dev/null ``` 3. If no tracker is obvious, ask the user: "Where are issues tracked for this project? (GitHub, Jira, Linear, Notion, Beads, or something else?)" **Connecting to issue trackers:** - **GitHub Issues:** Use `gh` CLI if available (`gh issue list`, `gh issue view <number>`) - **Beads:** Use `bd list` and `bd show <id>` - **Other trackers (Jira, Linear, Notion, etc.):** These typically require authentication or API access If the issue tracker requires a connection that isn't available: 1. Tell the user: "I can't access [tracker] directly. This would require [authentication/API access]." 2. Search for whether a Claude MCP or native connector exists for that service 3. If one exists, suggest it: "There's an MCP server for [tracker] that could enable access: [name/link]. Would you like to set that up?" 4. **Do not attempt to install connectors yourself** - just inform the user of options **Handling large issue histories:** Apply the same chunked reading strategy as with chat history: - Use date ranges to process issues in chronological batches - Compare issue dates against existing devlog entries to find gaps - Focus on issues that were created, resolved, or had significant discussion since the last devlog update Extract from issues: - Feature requests and their rationale - Bug reports and how they were resolved - Design discussions and decisions - Scope changes or deprioritizations ### 4. Write or Update DEVLOG.md Create or append to `DEVLOG.md` in the project root. #### Entry Format Each entry should include a date header and narrative content. Use subsections only when they add clarity - simple entries don't need heavy structure. **Minimal entry:** ```markdown ## YYYY-MM-DD - [Brief Title] [2-4 sentences describing what was accomplished, decided, or learned. Include the *why* behind decisions.] --- ``` **Detailed entry (for significant milestones, pivots, or complex decisions):** ```markdown ## YYYY-MM-DD - [Brief Title] ### Summary [2-4 sentences describing what was accomplished or decided] ### Details - [Specific changes, decisions, or discoveries] - [Problems encountered and how they were resolved] - [Key code or architectural decisions with brief rationale] ### References (optional - include only if genuinely useful) - Planning doc: [link if applicable] - Related commits: [commit hashes if relevant] - Related issues: [issue numbers/links if relevant] --- ``` **Entry granularity:** Create entries at natural breakpoints - completing a feature, making a significant decision, encountering and resolving a major problem, or pivoting direction. Not every work session needs an entry, but significant events should be captured close to when they happen. #### Content Guidelines **Include:** - Significant architectural or design decisions with rationale - Problems encountered and their resolutions - New features or functionality added - Research findings that influenced direction - Direction changes and why they occurred (pivots are important to document) - Dependencies added o
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.