Skip to content
Back to skills

Tasks

ASecurity

Personal task tracking with history, source linking, and cross-project correlation. Tracks tasks from meetings, decisions, and manual input with automatic carry-forward.

  • 4 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added August 31, 2026
businessdatabasebackend

Works with

  • cli

Security analysis

A100/100

Scanned October 1, 2026

npx -y skills add tandregbg/core-claude-skills --skill tasks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tasks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tasks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tandregbg-tasks/badge)](https://www.skillsdirectory.com/skills/tandregbg-tasks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tasks
description: Personal task tracking with history, source linking, and cross-project correlation. Tracks tasks from meetings, decisions, and manual input with automatic carry-forward.
user-invocable: true
argument-hint: [show|add|done|import|weekly|archive] [options]
---

# /tasks -- Personal Task Tracker

Track personal tasks across projects with source linking, history, and automatic carry-forward.

**Design principles:**
- Distributed per-folder `_tasks.yaml` files (like `_insights.yaml`)
- Root file holds projects registry + cross-project tasks
- Per-folder discovery: closest `_tasks.yaml` for local operations
- `--all` flag aggregates all files across vault
- Private by default (user-only unless explicitly shared)
- Source linking back to meetings/decisions
- History preservation for audit trail

---

## Architecture

### Distributed File Layout (v2)

```
~/Documents/Vault/
  _tasks.yaml                              # Root: projects registry + cross-project tasks
  _tasks-history.md                        # Completed tasks log (append-only)
  _projects/acme/_tasks.yaml               # Org-level tasks
  _projects/acme/ops/management/_tasks.yaml     # Domain tasks
  _projects/acme/ops/marketing/_tasks.yaml      # Domain tasks
  _projects/acme/projects/mobile-v3/_tasks.yaml # Project tasks
  _projects/bravo/_tasks.yaml              # Org-level
  _projects/bravo/side-project/_tasks.yaml      # Project tasks
  _private/_tasks.yaml                     # Personal tasks
  _contacts/david-ekberg_consulting/_tasks.yaml # Contact tasks
```

### Placement Rule

`_tasks.yaml` can exist at any level where a `CLAUDE.md` or `CHANGELOG.md` exists.

### ID Namespacing

IDs are unique per file. Visualisation displays as `context#id` (e.g., `mobile-v3#3`). Skills always operate on one file, so local IDs suffice.

---

## Data Model

### Per-file schema (v2)

```yaml
version: 2
last_updated: 260304
context: "acme-mobile-v3"       # Folder identity (like _insights.yaml)
scope: project                   # root | org | project | personal

tasks:
  - id: 1
    task: "Fix database connection issue"
    tags: [backend]
    source:
      type: meeting
      file: "meetings/260303-daily-standup.md"
    priority: P0
    due: 260307
    created: 260303
    status: pending              # pending | in_progress | blocked | completed | cancelled
    blocked_reason: null
    private: false
    notes:
      - date: 260303
        note: "Identified"

next_id: 2
```

**Key fields:**
- No `project:` field per task (implicit from folder context)
- `context` + `scope` fields at file level (mirrors `_insights.yaml`)
- `version: 2` distinguishes from v1

### Root file keeps

- `projects:` registry (vault paths, shared_view settings)
- Cross-project tasks (rare)
- Reference to `_tasks-history.md`

### _tasks-history.md (Completed Tasks Log)

```markdown
# Task History

Completed tasks archive. Append-only log.

---

## 2026-02

### 260220

- [x] **acme#47** War room mobile app
  - Context: acme-mobile-v3
  - Source: [260219-war-room.md](path/to/file.md)
  - Created: 260219 | Completed: 260220
  - Duration: 1 day
```

---

## File Discovery

When a `/tasks` command runs, find the target `_tasks.yaml`:

1. Look for `_tasks.yaml` in current working directory
2. Walk up parent directories toward vault root
3. **Closest match wins** for local operations (`show`, `add`, `done`)
4. `--all` flag scans all `_tasks.yaml` files across the vault

### New file creation

If no `_tasks.yaml` exists in the current folder and a task is being added:
1. Create with v2 schema
2. Derive `context` from folder name
3. Derive `scope` from path depth (root/org/project/personal)
4. Start with `next_id: 1`

---

## Commands

**Renamed in v1.79.0 (CR-089); `/tasks show` was removed in v1.81.0.** An old name is not recognised: say that it is now `/tasks list`, and do not run it.

### `/tasks list` (the default; was `show`)

Show current active tasks from the local `_tasks.yaml`.

**Default:** Current folder's `_tasks.yaml` (or nearest ancestor).

```
/tasks list              # Local file
/tasks list --all        # Aggregate all _tasks.yaml files
/tasks list P1           # Filter by priority
/tasks list #board       # Filter by tag
/tasks list due:this-week  # Filter by due date
```

**Output format:**
```
# Active Tasks -- acme-mobile-v3 (12)

### P0 - Critical
1. [ ] Fix database connection issue (due: 260307)
   Source: [260303-daily-standup.md](meetings/260303-daily-standup.md)

### P1 - This Week
2. [ ] Release v1.1.62 (due: today)
3. [~] Handle Android DND -- IN PROGRESS

### P2 - Important
4. [ ] Include end-user changelog in build posts

---
Last updated: 260304
```

### `/tasks add "description"`

Add a new task to the local `_tasks.yaml`.

**Flow:**
```
> /tasks add "Review contract terms"

Adding task to: acme-mobile-v3/_tasks.yaml

Priority? [P2] P0 P1 P2 P3
> P1

Due date? [none] today tomorrow YYMMDD "before X"
> 260310

Tags? (comma-separated)
> contracts, legal

Source? (meeting file or "manual")
> manual

Private? [no] yes
> no

Task #15 created:
- Review contract terms
- Context: acme-mobile-v3 | Priority: P1 | Due: 260310
```

### `/tasks done <id>` or `/tasks done <id> <id> ...`

Mark task(s) as completed in the local `_tasks.yaml`.

1. Set `status: completed` and `completed: YYMMDD`
2. Append entry to root `_tasks-history.md`
3. Report remaining active task count

```
> /tasks done 3

Completing task #3: "Handle Android DND" (acme-mobile-v3)

Task #3 marked complete.
- Duration: 4 days (created 260301)
- Logged to _tasks-history.md

Remaining active tasks: 11
```

### `/tasks import <file.md>`

Import tasks from a meeting summary. **Target = folder where source file lives.**

```
> /tasks import meetings/260303-daily-standup.md

Scanning for action items in: 260303-daily-standup.md

Found 4 action items:
1. Fix database connection issue (Alex)
2. Complete store descriptions (Grace)
3. Create individual accounts (Sam)
4. Investigate CLI enforcement gap (Sam)

Import all? [yes] no select
> yes

Importing 4 tasks to acme-mobile-v3/_tasks.yaml...
Tasks #15-18 created.
```

### `/tasks weekly`

Generate weekly review. **Aggregates all `_tasks.yaml` files.**

```
> /tasks weekly

# Weekly Review: 260224-260302

## Completed This Week (8)
- acme#12 Kickoff brand meeting
- acme-mobile-v3#45 Release v1.1.60
- ...

## Carried Forward (5)
- acme#32 Offer team lead 1-on-1 - 12 days old
- ...

## Blocked (1)
- side-project#3 Integrate content - waiting on partner

## New This Week (7)
- acme-mobile-v3#15-18 from standup
- ...

## Stats
- Completed: 8
- Added: 7
- Net: -1 (backlog shrinking)
```

### `/tasks archive`

Archive completed tasks older than 30 days from history.

### `/tasks help`

Print the commands above, one line each, and where the ledger for the current folder resolves to (`workflows.task_ledger`).

---

## Integration with Other Skills

### /transcript (Step 4: task import)

When `/transcript` finds action items, import to the **local `_tasks.yaml`** in the contact/project folder where the transcript lives (not vault root).

### /ops (Step 7 + Step 9)

- Step 7: Write `_tasks.yaml` in the project/domain folder (replaces `task-priority-matrix.md`)
- Step 9: Task import targets local `_tasks.yaml`

---

## Privacy Model

- Tasks with `private: true`: only visible in personal views
- Tasks with `private: false`: can appear in shared dashboards
- Default for meeting imports: `private: false`
- Default for manual adds: `private: true`
- Sensitive tags (#costs, #personal, #confidential): `private: true`

---

## Convention Files

| File | Signals | Used by |
|------|---------|---------|
| `_tasks.yaml` | Folder with tracked tasks | `/tasks`, `/ops`, visualisation |
| `_tasks-history.md` | Completed tasks log | `/tasks done` |

---

## File Format Details

### YAML Schema (v2)

```yaml
type: object
required: [version, context, scope, tasks, next_id]
properties:
  version:
    type: integer
    const: 2
  last_updated:
    type: [integer, string]  # YYMMDD
  context:
    type: string
  scope:
    enum: [root, org, project, personal]
  projects:
    type: object  # Only in root file
  tasks:
    type: array
    items:
      type: object
      required: [id, task, priority, created, status]
      properties:
        id: { type: integer }
        task: { type: string }
        tags: { type: array, items: { type: string } }
        source:
          type: object
          properties:
            type: { enum: [meeting, decision, manual, imported] }
            file: { type: string }
            section: { type: string }
        priority: { enum: [P0, P1, P2, P3] }
        due: { type: [string, integer, "null"] }
        created: { type: [string, integer] }
        status: { enum: [pending, in_progress, blocked, completed, cancelled] }
        blocked_reason: { type: [string, "null"] }
        completed: { type: [string, integer, "null"] }
        private: { type: boolean }
        notes:
          type: array
          items:
            type: object
            properties:
              date: { type: [string, integer] }
              note: { type: string }
  next_id:
    type: integer
```

---

## Implementation Notes

### Skill Location

```
~/.claude/skills/tasks/          # Symlinked
~/repos/core-skills/skills/tasks/ # Actual location
```

### Dependencies

- None (standalone skill)
- Optional integration with: transcript, ops

### Language

- Skill prompts: English
- Task content: Preserves original language (Swedish or English)
- Swedish character enforcement when task content is Swedish

---

## Handoff snapshots are not tasks (CR-033)

A frozen snapshot in `.handoff/` is context, not intent. It never generates a task, and `/tasks` never scans `.handoff/`.

If a snapshot's subject should become work, the **user** decides that and the task is written normally — stating the subject in its own words, never linking the snapshot (snapshots are not referenced from living documents).

## Future Enhancements

1. **Recurring tasks** -- `recur: weekly` for repeating tasks
2. **Subtasks** -- Hierarchical task breakdown
3. **Time tracking** -- Optional time spent logging
4. **Delegation** -- Assign tasks to others
5. **Calendar sync** -- Export due dates to calendar

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.