Teresa Torres's Claude Code Task System

Table of content
Teresa Torres's Claude Code Task System

Teresa Torres is a product discovery coach who has trained over 15,000 product professionals through her Product Talk Academy. She wrote Continuous Discovery Habits, which has sold over 135,000 copies and introduced concepts like the opportunity solution tree and product trios to product teams worldwide. Before coaching, she led product and design teams at startups including AfterCollege and Affinity Circles.

Torres runs her entire business through two Claude Code terminals and Obsidian. Every morning she types /today and Claude generates her personalized to-do list, research summaries, and team updates.

Context Layers

Torres organizes Claude’s knowledge in three layers:

LayerLocationPurpose
Global~/.claude/CLAUDE.mdIdentity, tone, universal rules
Project.claude/CLAUDE.mdProject-specific context
Reference.claude/context/Documents Claude can search

Global context example:

# CLAUDE.md (Global)

You are Teresa's executive assistant and thought partner.

## Communication Style
- Direct, no fluff
- Challenge assumptions when you see weak reasoning
- Ask clarifying questions before starting complex tasks

## Key Projects
- [Product Talk](https://www.producttalk.org/) blog
- [Continuous Discovery](https://www.producttalk.org/getting-started-with-discovery/) courses
- Podcast production

## Tools I Use
- Obsidian for notes (vault at ~/Documents/Obsidian)
- Calendar via Google
- Task files in markdown format

The /today Command

Custom slash command that builds the daily agenda:

.claude/commands/today.md
# today

Run the Python script at ~/.claude/scripts/daily_summary.py

This script:
1. Scans task files in ~/Documents/Obsidian/Tasks/
2. Filters for due_date <= today OR overdue
3. Checks research feed for new papers
4. Generates daily-YYYY-MM-DD.md in Tasks folder

After running, summarize:
- Top 3 priorities for today
- Any overdue items that need attention
- New research worth reviewing

The Python script:

# ~/.claude/scripts/daily_summary.py
import os
from datetime import date
from pathlib import Path

TASKS_DIR = Path.home() / "Documents/Obsidian/Tasks"

def get_due_tasks():
    tasks = []
    for f in TASKS_DIR.glob("*.md"):
        content = f.read_text()
        # Parse YAML frontmatter for due_date
        # Filter for today or overdue
        # ... implementation details
    return tasks

def generate_daily_summary():
    tasks = get_due_tasks()
    today = date.today().isoformat()

    output = f"# Daily Summary: {today}\n\n"
    output += "## Due Today\n"
    for task in tasks:
        output += f"- [ ] {task['title']}\n"

    # Write to file
    (TASKS_DIR / f"daily-{today}.md").write_text(output)

if __name__ == "__main__":
    generate_daily_summary()

Usage:

# Every morning
claude
> /today

# Claude runs script, reads output, summarizes
# "You have 4 tasks due today. Top priority is
# finishing the podcast outline. 2 items are
# overdue from last week..."

Task Files as Markdown

Markdown replaces Trello for version control and searchability:

# ~/Documents/Obsidian/Tasks/podcast-episode-47.md

---
title: Record Podcast Episode 47
due_date: 2026-01-22
tags: [podcast, recording]
priority: high
status: in_progress
---

## Goal
Interview with [Guest Name] about [continuous discovery](https://www.producttalk.org/getting-started-with-discovery/) in enterprise

## Prep Tasks
- [ ] Review guest's recent articles
- [ ] Draft 10 questions
- [ ] Test recording setup

## Notes
- Guest prefers morning calls
- Focus on enterprise scaling challenges

Why markdown:

Natural Language Task Creation

> I need to review the Q1 metrics report by Friday,
> it's high priority and relates to the course launch

# Claude creates:
# ~/Documents/Obsidian/Tasks/review-q1-metrics.md
# With proper frontmatter, due date, tags

Claude parses natural language and creates the formatted file automatically.

Automated Research Pipeline

A custom plugin fetches academic papers daily:

.claude/plugins/research-feed/
  manifest.json
  scripts/
    fetch_arxiv.py
    fetch_scholar.py
  prompts/
    summarize_paper.md

Daily automation:

  1. Python scripts query arXiv and Google Scholar
  2. Filter by Torres’s research topics
  3. Download abstracts to ~/Documents/Obsidian/Research/Inbox/
  4. /today command includes new papers in summary
> /today

# Output includes:
# "3 new papers in your research inbox:
# 1. 'Continuous Discovery in Agile Teams' - directly relevant
# 2. 'User Interview Techniques' - worth skimming
# 3. 'Enterprise Product Management' - save for later"

Two-Terminal Workflow

Torres runs two Claude Code windows:

Terminal 1Terminal 2
Tasks and questionsWriting and deep work

One for reactive work, one for proactive. Simple mental model.

Writing Partner Mode

For blog posts, Claude challenges reasoning before drafting:

> /plan

> I want to write about why [product trios](https://www.producttalk.org/product-trios/) fail.
> My main argument is misaligned incentives.
> Help me structure this.

# Claude asks clarifying questions,
# proposes outline, then drafts sections

Access Risk Framework

TierAccess TypeRisk Level
1Read local filesLow
2Search the webLow
3Write/edit filesMedium
4Execute codeMedium
5Install packagesHigh
6Access external APIsHigh
7Third-party MCP serversHighest

Her rules:

# In .claude/settings.json
{
  "permissions": {
    "file_write": "ask",
    "bash_execute": "ask",
    "package_install": "deny",
    "mcp_servers": ["obsidian-local"]
  }
}

SEO and Content

For blog posts, Claude handles keyword research and meta optimization:

> I've drafted this post about [product trios](https://www.producttalk.org/product-trios/).
> Research keywords, suggest a title, and
> write the meta description.

# Claude searches keywords, analyzes competing
# content, suggests title variants, writes meta

Getting Started

# Install Obsidian, create vault
mkdir -p ~/Documents/Obsidian/Tasks

# Create first task file
cat > ~/Documents/Obsidian/Tasks/example-task.md << 'EOF'
---
title: Try Claude Code task system
due_date: 2026-01-22
priority: high
status: pending
---

## Goal
Set up basic task management with Claude Code
EOF

# Create today command
mkdir -p ~/.claude/commands
cat > ~/.claude/commands/today.md << 'EOF'
# today

List all markdown files in ~/Documents/Obsidian/Tasks/
that have due_date of today or earlier.
Summarize as a prioritized list.
EOF

# Try it
claude
> /today

Next steps:

  1. Add more task files as you work
  2. Create natural language task addition prompt
  3. Add research feeds when ready
  4. Expand to writing workflows

Next: Artur Piszek’s WordPress Personal OS

Topics: claude-code workflow knowledge-management obsidian