log — Claude Code command: task logs to Linear, Jira, Obsidian
Writes a finished task's report into your tracker or notes: time spent, status, commits. Useful when the coding happens in Claude but the record lives in Linear or Obsidian.
npx claude-code-templates@latest --command orchestration/logWhat log does
/orchestration/log gathers what happened on a task — hours, changed files, commit messages — and files it where your project lives. Linear, Obsidian, Jira and GitHub Issues are supported. Run it bare to log the task currently in progress, or pass an ID (/orchestration/log TASK-003) for a specific one.
Destination picking is built in. --choose opens a list of available tools, --multi lets you tick several at once. Obsidian gets its own flags: --obsidian-daily appends to today's note, --obsidian-project creates or extends a project note, --obsidian-path points at a custom location. For Linear there's --linear-issue ENG-1234. Batch modes --daily-summary and --weekly roll up a day or a week.
The command rides on MCP connections. With no tracker connected there is no automatic destination, so you either pick one by hand or skip the entry. Worth checking your MCP setup before the first run — otherwise the command has nowhere to write.
What it helps with
- log hours against a Linear issue
- append a work report to today's Obsidian note
- roll up a day's tasks into one summary
- record a task in both the tracker and your notes
- create a project note that does not exist yet
Example prompts for the agent
- /orchestration/log TASK-003
- /orchestration/log --obsidian-daily
- /orchestration/log TASK-003 --linear-issue ENG-1234
How to install log
1claude-code-templates
npx claude-code-templates@latest --command orchestration/log2Manually: put the files in place
.claude/commands/log.mdCall it with /log. For all projects use ~/.claude/commands/
Manually: put the files in place
~/.codex/prompts/log.mdCall it with /prompts:log. Codex marks this format deprecated in favour of skills
Manually: put the files in place
.github/prompts/log.prompt.mdManually: put the files in place
.gemini/commands/log.tomlGemini stores commands as TOML: the prompt text goes into the prompt field
Questions about log
How do I install log in Claude?
Use the templates CLI: npx claude-code-templates@latest --command orchestration/log. The command file lands at .claude/commands/log.md.
What does the log command do?
It creates a work log entry in an external tool, moving task completion data, time spent and progress notes out of the session so your tracker stays current.
Which tools can it log to?
Linear, Obsidian, Jira and GitHub Issues. You pick the destination with a flag, or through an interactive list when several tools are connected.
Source text
log.md · MIT
---
description: "Log work from orchestrated tasks to external project management tools like Linear, Obsidian, Jira, or GitHub Issues."
---
# Orchestration Log Command
Log work from orchestrated tasks to external project management tools like Linear, Obsidian, Jira, or GitHub Issues.
## Usage
```
/orchestration/log [TASK-ID] [options]
```
## Description
Automatically creates work logs in your connected project management tools or knowledge bases, transferring task completion data, time spent, and progress notes to keep external systems synchronized.
## Basic Commands
### Log Current Task
```
/orchestration/log
```
Logs the currently in-progress task to available tools.
### Log Specific Task
```
/orchestration/log TASK-003
```
Logs a specific task's work.
### Choose Destination
```
/orchestration/log TASK-003 --choose
```
Manually select where to log the work.
## Destination Selection
When multiple tools are available or no obvious connection exists:
```
Where would you like to log this work?
Available destinations:
1. Linear (ENG-1234 detected)
2. Obsidian (Daily Note)
3. Obsidian (Project: Authentication)
4. GitHub Issue (#123)
5. None - Skip logging
Choose destination [1-5]:
```
## Obsidian Integration
### Daily Note Logging
```
/orchestration/log --obsidian-daily
```
Appends to today's daily note:
```markdown
## Work Log - 15:30
### TASK-003: JWT Implementation ✅
**Time Spent**: 4.5 hours (10:00 - 14:30)
**Status**: Completed → QA
**What I did:**
- Implemented JWT token validation middleware
- Added refresh token logic
- Created comprehensive test suite
- Fixed edge case with token expiration
**Code Stats:**
- Files: 8 modified
- Lines: +245 -23
- Coverage: 95%
**Related Tasks:**
- Next: [[TASK-005]] - User Profile API
- Blocked: [[TASK-007]] - Waiting for this
**Commits:**
- `abc123`: feat(auth): implement JWT validation
- `def456`: test(auth): add validation tests
#tasks/completed #project/authentication
```
### Project Note Logging
```
/orchestration/log --obsidian-project "Authentication System"
```
Creates or appends to project-specific note.
### Custom Obsidian Location
```
/orchestration/log --obsidian-path "Projects/Sprint 24/Work Log"
```
## Linear Integration
```
/orchestration/log TASK-003 --linear-issue ENG-1234
```
Creates work log comment in Linear issue.
## Smart Detection
The system detects available destinations:
```
Analyzing task context...
Found connections:
✓ Linear: ENG-1234 (from branch name)
✓ Obsidian: Project note exists
✓ GitHub: No issue reference
✗ Jira: Not connected
Suggested: Linear ENG-1234
Use suggestion? [Y/n/choose different]
```
## Work Log Formats
### Obsidian Format
```markdown
## 📋 Task: TASK-003 - JWT Implementation
### Summary
- **Status**: 🟢 Completed
- **Duration**: 4h 30m
- **Date**: 2024-03-15
### Progress Details
- [x] Token structure design
- [x] Validation middleware
- [x] Refresh mechanism
- [x] Test coverage
### Technical Notes
- Used RS256 algorithm for signing
- Tokens expire after 15 minutes
- Refresh tokens last 7 days
### Links
- Linear: [ENG-1234](linear://issue/ENG-1234)
- PR: [#456](github.com/...)
- Docs: [[JWT Implementation Guide]]
### Next Actions
- [ ] Code review feedback
- [ ] Deploy to staging
- [ ] Update API documentation
---
*Logged via Task Orchestration at 15:30*
```
### Linear Format
```
Work log comment in Linear with task details, time tracking, and progress updates.
```
## Multiple Destination Logging
```
/orchestration/log TASK-003 --multi
Select all destinations for logging:
[x] Linear - ENG-1234
[x] Obsidian - Daily Note
[ ] Obsidian - Project Note
[ ] GitHub - Create new issue
Press Enter to confirm, Space to toggle
```
## Batch Operations
### Daily Summary to Obsidian
```
/orchestration/log --daily-summary --obsidian
Creates summary in daily note:
## Work Summary - 2024-03-15
### Completed Tasks
- [[TASK-003]]: JWT Implementation (4.5h) ✅
- [[TASK-008]]: Login UI Updates (2h) ✅
### In Progress
- [[TASK-005]]: User Profile API (1.5h) 🔄
### Total Time: 8 hours
### Key Achievements
- Authentication system core complete
- All tests passing
- Ready for code review
### Tomorrow's Focus
- Complete user profile endpoints
- Start OAuth integration
```
### Weekly Report
```
/orchestration/log --weekly --obsidian-path "Weekly Reviews/Week 11"
```
## Templates
### Configure Obsidian Template
```yaml
obsidian_template:
daily_note:
heading: "## Work Log - {time}"
include_stats: true
add_tags: true
link_tasks: true
project_note:
create_if_missing: true
append_to_section: "## Task Progress"
include_commits: true
```
### Configure Linear Template
```yaml
linear_template:
include_time: true
update_status: true
add_labels: ["from-orchestration"]
```
## Interactive Mode
```
/orchestration/log --interactive
Task: TASK-003 - JWT Implementation
Status: Completed
Time: 4.5 hours
Where to log? (Space to select, Enter to confirm)
> [x] Linear (ENG-1234)
> [x] Obsidian Daily Note
> [ ] Obsidian Project Note
> [ ] New GitHub Issue
Add custom notes? [y/N]: y
> Implemented using RS256, ready for review
Logging to 2 destinations...
✓ Linear: Comment added to ENG-1234
✓ Obsidian: Added to daily note
View logs? [y/N]:
```
## Examples
### Example 1: End of Day Logging
```
/orchestration/log --eod
End of Day Summary:
- 3 tasks worked on
- 7.5 hours logged
- 2 completed, 1 in progress
Log to:
1. Obsidian Daily Note (recommended)
2. Linear (update all 3 issues)
3. Both
4. Skip
Choice [1]: 1
✓ Daily work log created in Obsidian
```
### Example 2: Sprint Review
```
/orchestration/log --sprint-review --week 11
Gathering week 11 data...
- 15 tasks completed
- 3 in progress
- 52 hours logged
Create sprint review in:
1. Obsidian - "Sprint Reviews/Sprint 24"
2. Linear - Sprint 24 cycle
3. Both
Choice [3]: 3
✓ Sprint review created in both systems
```
### Example 3: No Connection Found
```
/orchestration/log TASK-009
No automatic destination found for TASK-009.
Where would you like to log this?
1. Obsidian - Daily Note
2. Obsidian - Create Project Note
3. Linear - Search for issue
4. GitHub - Create new issue
5. Skip logging
Choice: 2
Enter project name: Security Audit
✓ Created "Security Audit" note with work log
```
## Configuration
### Default Destinations
```yaml
log_defaults:
no_connection: "ask" # ask|obsidian-daily|skip
multi_connection: "ask" # ask|all|first
obsidian:
default_location: "daily" # daily|project|custom
project_folder: "Projects"
daily_folder: "Daily Notes"
linear:
auto_update_status: true
include_commits: true
```
## Best Practices
1. **Set Preferences**: Configure default destinations
2. **Link Early**: Connect tasks to PM tools when creating
3. **Use Daily Notes**: Great for personal tracking
4. **Project Notes**: Better for team collaboration
5. **Regular Syncs**: Don't let logs pile up
## Notes
- Respects MCP connections and permissions
- Obsidian logs create backlinks automatically
- Supports multiple simultaneous destinations
- Preserves formatting across systems
- Can be automated with task status changes
© davila7 · MIT · davila7/claude-code-templates