From 198c7cfeb639f2df7862f866dc6fb7f2ab741b9a Mon Sep 17 00:00:00 2001 From: Ricardo Gemignani Date: Fri, 5 Dec 2025 11:23:11 -0600 Subject: [PATCH 1/3] chore: add dev tooling, CI/CD, and update examples - Add pre-commit hooks (markdownlint, cspell, trailing whitespace) - Add GitHub Actions CI (lint, spell check, link check, AISD validation) - Add semantic release workflow for automated versioning - Add commitlint for conventional commit enforcement - Add editorconfig for consistent formatting - Replace Star Trek examples with generic software project scenarios - Update README with badges and development setup instructions - Convert TODO.md to TaskMark format with semver milestones --- .claude/settings.local.json | 9 ++ .commitlintrc.json | 24 ++++ .editorconfig | 19 +++ .github/workflows/ci.yml | 86 +++++++++++++ .github/workflows/release.yml | 33 +++++ .markdownlint.json | 11 ++ .pre-commit-config.yaml | 48 ++++++++ .releaserc.json | 21 ++++ AGENTS.md | 123 +++++++++++-------- README.md | 164 ++++++++++++++----------- TODO.md | 33 +++++ cspell.json | 43 +++++++ docs/format-comparison.md | 51 ++++---- docs/specification.md | 38 +++--- examples/complex-starbase-ops.md | 200 ------------------------------- examples/comprehensive.md | 42 +++++++ examples/medium-mission.md | 82 ------------- examples/simple-daily-ops.md | 52 -------- examples/sprint-planning.md | 21 ++++ examples/team-standup.md | 21 ++++ 20 files changed, 627 insertions(+), 494 deletions(-) create mode 100644 .claude/settings.local.json create mode 100644 .commitlintrc.json create mode 100644 .editorconfig create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100644 .markdownlint.json create mode 100644 .pre-commit-config.yaml create mode 100644 .releaserc.json create mode 100644 TODO.md create mode 100644 cspell.json delete mode 100644 examples/complex-starbase-ops.md create mode 100644 examples/comprehensive.md delete mode 100644 examples/medium-mission.md delete mode 100644 examples/simple-daily-ops.md create mode 100644 examples/sprint-planning.md create mode 100644 examples/team-standup.md diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..23c7ffb --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(pre-commit run:*)" + ], + "deny": [], + "ask": [] + } +} diff --git a/.commitlintrc.json b/.commitlintrc.json new file mode 100644 index 0000000..1ad791c --- /dev/null +++ b/.commitlintrc.json @@ -0,0 +1,24 @@ +{ + "extends": ["@commitlint/config-conventional"], + "rules": { + "type-enum": [ + 2, + "always", + [ + "feat", + "fix", + "docs", + "style", + "refactor", + "perf", + "test", + "build", + "ci", + "chore", + "revert" + ] + ], + "subject-case": [0], + "body-max-line-length": [0] + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fca7f4c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig helps maintain consistent coding styles +# https://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +# Trailing whitespace in Markdown can be significant (line breaks) +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f2c43d4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,86 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + lint: + name: Lint & Validate + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Lint Markdown files + uses: DavidAnson/markdownlint-cli2-action@v14 + with: + globs: "**/*.md" + + - name: Check spelling + uses: streetsidesoftware/cspell-action@v5 + with: + files: "**/*.md" + config: "./cspell.json" + + - name: Check links + uses: lycheeverse/lychee-action@v1 + with: + args: --verbose --no-progress --exclude-mail './**/*.md' + fail: true + + - name: AISD forbidden words check + run: | + echo "Checking for forbidden words (should/might/could/typically/usually/often)..." + # Exclude README.md, CHANGELOG.md, and AGENTS.md from this check + if find . -name "*.md" ! -name "README.md" ! -name "CHANGELOG.md" ! -name "AGENTS.md" -exec grep -l -E "\b(should|might|could|typically|usually|often)\b" {} \; | grep -q .; then + echo "❌ Found forbidden words in the following files:" + find . -name "*.md" ! -name "README.md" ! -name "CHANGELOG.md" ! -name "AGENTS.md" -exec grep -Hn -E "\b(should|might|could|typically|usually|often)\b" {} \; + echo "" + echo "Use MUST/REQUIRED/FORBIDDEN instead per AISD style guide." + exit 1 + fi + echo "✅ No forbidden words found" + + - name: AISD line count check + run: | + echo "Checking docs/ files for line count (max 600)..." + failed=0 + for file in docs/*.md docs/**/*.md; do + [ -f "$file" ] || continue + lines=$(wc -l < "$file") + if [ "$lines" -gt 600 ]; then + echo "❌ $file has $lines lines (max 600)" + failed=1 + fi + done + if [ "$failed" -eq 1 ]; then + echo "Consider splitting large files." + exit 1 + fi + echo "✅ All docs files within line limit" + + commitlint: + name: Commit Messages + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install commitlint + run: npm install -g @commitlint/cli @commitlint/config-conventional + + - name: Validate PR commits + run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..101a2cb --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,33 @@ +name: Release + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: write + +jobs: + release: + name: Semantic Release + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install semantic-release + run: npm install -g semantic-release @semantic-release/changelog @semantic-release/git + + - name: Run semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npx semantic-release diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..2ae5801 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,11 @@ +{ + "default": true, + "MD013": false, + "MD033": false, + "MD036": false, + "MD040": false, + "MD041": false, + "MD024": { + "siblings_only": true + } +} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..d4ddd6e --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,48 @@ +# See https://pre-commit.com for more information +# Install: pip install pre-commit && pre-commit install + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.5.0 + hooks: + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + - id: end-of-file-fixer + - id: check-yaml + - id: check-merge-conflict + - id: check-added-large-files + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.38.0 + hooks: + - id: markdownlint + args: ["--fix"] + + - repo: https://github.com/streetsidesoftware/cspell-cli + rev: v8.6.0 + hooks: + - id: cspell + args: ["--no-progress", "--no-summary"] + + # Conventional commits for semver + - repo: https://github.com/compilerla/conventional-pre-commit + rev: v3.4.0 + hooks: + - id: conventional-pre-commit + stages: [commit-msg] + + # Local AISD format validation + - repo: local + hooks: + - id: aisd-forbidden-words + name: AISD forbidden words check + entry: bash -c 'if grep -rn -E "\b(should|might|could|typically|usually|often)\b" "$@" 2>/dev/null; then echo "❌ Found forbidden words. Use MUST/REQUIRED/FORBIDDEN instead."; exit 1; fi' -- + language: system + files: \.(md)$ + exclude: ^(README\.md|CHANGELOG\.md|AGENTS\.md)$ + + - id: aisd-line-count + name: AISD line count check (max 600) + entry: bash -c 'for file in "$@"; do lines=$(wc -l < "$file"); if [ $lines -gt 600 ]; then echo "❌ $file has $lines lines (max 600). Consider splitting."; exit 1; fi; done' -- + language: system + files: ^docs/.*\.md$ diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..8ee5c68 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,21 @@ +{ + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + [ + "@semantic-release/git", + { + "assets": ["CHANGELOG.md"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ], + "@semantic-release/github" + ] +} diff --git a/AGENTS.md b/AGENTS.md index 8c637a7..6f97e7c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ AI-authored documentation for AI agents working on the TaskMark project. **Format:** AISD-inspired **Audience:** Claude Code, Cursor, and other AI coding assistants -**Last Updated:** 2025-11-19 +**Last Updated:** 2025-12-05 --- @@ -22,6 +22,7 @@ Follow conventional commits pattern with type prefixes: | `chore:` | Maintenance tasks | `chore: update dependencies` | **Commit Message Structure:** + ``` : @@ -34,11 +35,13 @@ Co-Authored-By: Claude ``` **Examples from AISD reference:** + - `docs: map checkout architecture and rate limiting baseline` - `docs: plan checkout rate limiting (20 req/min)` - `feat: add checkout rate limiting (20 req/min)` **Key Rules:** + - Use lowercase for type prefix - Imperative mood: "add" not "added" - Concise description (50 chars preferred, 72 max) @@ -53,6 +56,7 @@ Co-Authored-By: Claude **Core Purpose:** Plain-text task management format that works everywhere **Key Characteristics:** + - Markdown-based (`.md` files) - Git-friendly version control - Metadata inheritance through sections @@ -78,15 +82,15 @@ Co-Authored-By: Claude ``` taskmark-spec/ ├── README.md # User-facing introduction -├── agents.md # THIS FILE - AI agent guide +├── AGENTS.md # THIS FILE - AI agent guide ├── LICENSE # MIT license ├── docs/ │ ├── specification.md # Complete technical spec │ └── format-comparison.md # Comparison with todo.txt, xit, etc. └── examples/ - ├── simple-daily-ops.md # Basic task tracking - ├── medium-mission.md # Priorities + estimates - └── complex-starbase-ops.md # Full lifecycle + timezones + ├── sprint-planning.md # Sprint with subtasks + ├── team-standup.md # Team coordination + └── comprehensive.md # Full feature showcase ``` --- @@ -126,10 +130,10 @@ taskmark-spec/ | Type | Pattern | Example | Notes | |------|---------|---------|-------| -| Assignee | `@username` | `@geordi @data` | Case-insensitive, `a-zA-Z0-9_-` | -| Project | `+name[/sub]` | `+Enterprise/WarpCore` | Hierarchical with `/` | -| Tag | `#tag` | `#critical #engineering` | Case-insensitive | -| Due date | `due:DATETIME` | `due:2366-03-15T18:00` | ISO 8601 format | +| Assignee | `@username` | `@alice @bob` | Case-insensitive, `a-zA-Z0-9_-` | +| Project | `+name[/sub]` | `+Acme/Backend` | Hierarchical with `/` | +| Tag | `#tag` | `#critical #backend` | Case-insensitive | +| Due date | `due:DATETIME` | `due:2024-03-15T18:00` | ISO 8601 format | | Estimate | `~NUM[hmd]` | `~2h`, `~30m`, `~3d` | Hours, minutes, days | | Recurrence | `repeat:PATTERN` | `repeat:weekdays`, `repeat:"every monday"` | Uses recurrent library | | Custom metadata | `key:value` or `key:"value"` | `type:bug ticket:ENG-4701` | Keys case-insensitive | @@ -137,10 +141,11 @@ taskmark-spec/ ### Date Formats **Accepted:** -- Date only: `2366-03-10` (uses YAML front matter timezone or local) -- Date + time: `2366-03-10T09:00` -- Date + time + seconds: `2366-03-10T09:00:00` -- Date + time + timezone: `2366-03-10T09:00-05:00` (explicit timezone) + +- Date only: `2024-03-10` (uses YAML front matter timezone or local) +- Date + time: `2024-03-10T09:00` +- Date + time + seconds: `2024-03-10T09:00:00` +- Date + time + timezone: `2024-03-10T09:00-05:00` (explicit timezone) **Invalid Date Handling:** Warn at `file:line`, ignore field, continue parsing @@ -163,19 +168,21 @@ taskmark-spec/ | Key-value | Child overrides parent | Child `type:bug` overrides parent `type:feature` | **Example:** + ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering +Engineering #critical +## Backend +API #critical -- [ ] Task +WarpCore +- [ ] Task +Database ``` -**Task inherits:** `+Enterprise/Engineering/WarpCore`, `#starfleet`, `#critical` +**Task inherits:** `+Acme/API/Database`, `#work`, `#critical` ### Subtasks **Rules:** + - One level only (no sub-subtasks) - Any indentation > 0 (spaces or tabs) - Inherits ALL parent metadata + section metadata @@ -184,10 +191,10 @@ taskmark-spec/ - Tags additive ```markdown -- [ ] (A) Parent task @geordi +WarpCore #critical ~8h - - [ ] (B) Replace constrictors @geordi ~2h - - [ ] (B) Calibrate injectors @barclay ~3h - - [x] (C) Test at warp 5 @geordi ~3h +- [ ] (A) Parent task @alice +Database #critical ~8h + - [ ] (B) Update connection pooling @alice ~2h + - [ ] (B) Add retry logic @bob ~3h + - [x] (C) Write migration @alice ~3h ``` ### File Links @@ -197,15 +204,15 @@ taskmark-spec/ **Inheritance:** All tasks in linked file inherit section metadata where link appears ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering +Engineering #critical +## Backend +Backend #critical -[Warp Core Team](engineering/warp-core.md) -[Transporter Team](engineering/transporters.md) +[API Team](backend/api.md) +[Database Team](backend/database.md) ``` -**Result:** All tasks in both files inherit `+Enterprise/Engineering`, `#starfleet`, `#critical` +**Result:** All tasks in both files inherit `+Acme/Backend`, `#work`, `#critical` --- @@ -214,11 +221,13 @@ taskmark-spec/ ### When Task Marked `[x]` with `repeat:` **Old Task Changes:** + 1. State → `[x]` 2. Add done date (2nd position after planned date) 3. Remove `repeat:` field **New Task Created:** + 1. State → `[ ]` 2. Dates updated to next occurrence 3. Keep `repeat:` field @@ -235,6 +244,7 @@ taskmark-spec/ | 5 | Apply offset to new dates | pendulum | **Offset Preservation:** + ```markdown # Original - [ ] Task planned:2024-03-10 due:2024-03-14 repeat:weekly @@ -267,12 +277,13 @@ taskmark-spec/ | `ticket` | Issue tracker ID | `ticket:ENG-4739` | | `sprint` | Sprint number/name | `sprint:24` | | `milestone` | Release version | `milestone:v2.0` | -| `url` | Full URL | `url:https://starfleet.fed/tickets/4701` | +| `url` | Full URL | `url:https://jira.example.com/ENG-4701` | | `status` | Status name | `status:in-progress` | ### File Organization Strategies **Single File (Small Projects):** + ```markdown # TODO +Project @@ -282,6 +293,7 @@ taskmark-spec/ ``` **Multi-File (Large Projects):** + ```markdown # Main: project-todo.md # TODO +Project #tag @@ -327,19 +339,22 @@ taskmark-spec/ ### When Writing Documentation **Tone:** + - Clear, concise, scannable - Tables over prose when possible - Explicit constraints (not vague) - Use MUST/REQUIRED/SHOULD/MAY from RFC 2119 **Examples:** -- Always use Star Trek TNG scenarios for consistency + +- Use realistic software project scenarios - Show minimal → full-featured progression - Include "after inheritance" results ### When Writing Examples **Required Elements:** + 1. YAML front matter with locale/timezone (if using times) 2. Top-level `# TODO` header 3. Section headers for organization @@ -354,24 +369,27 @@ taskmark-spec/ ### Pitfall: Forgetting Inheritance **Problem:** + ```markdown -# TODO +Enterprise +# TODO +Acme -## Engineering -- [ ] Task +Enterprise # WRONG: Redundant project +## Backend +- [ ] Task +Acme # WRONG: Redundant project ``` **Solution:** + ```markdown -# TODO +Enterprise +# TODO +Acme -## Engineering +Engineering -- [ ] Task # Inherits +Enterprise/Engineering +## Backend +Backend +- [ ] Task # Inherits +Acme/Backend ``` ### Pitfall: Deep Subtask Nesting **Problem:** + ```markdown - [ ] Task - [ ] Subtask @@ -379,6 +397,7 @@ taskmark-spec/ ``` **Solution:** + ```markdown - [ ] Task - [ ] Subtask 1 @@ -390,11 +409,13 @@ taskmark-spec/ ### Pitfall: Inline File Links **Problem:** + ```markdown - [ ] Check [tasks](team.md) for details # Link ignored ``` **Solution:** + ```markdown ## Section @@ -406,24 +427,28 @@ taskmark-spec/ ### Pitfall: Ambiguous Dates **Problem:** + ```markdown - [ ] Task due:03-10 # Ambiguous format ``` **Solution:** + ```markdown -- [ ] Task due:2366-03-10 # ISO 8601 required +- [ ] Task due:2024-03-10 # ISO 8601 required ``` ### Pitfall: Missing Quotes in Values **Problem:** + ```markdown - [ ] Task notes:This is a long note # Stops at first space # Parsed as: notes:This ``` **Solution:** + ```markdown - [ ] Task notes:"This is a long note" ``` @@ -450,7 +475,7 @@ taskmark-spec/ ### When Asked About Format 1. **Cite Spec:** Reference [specification.md](docs/specification.md) -2. **Show Examples:** Use Star Trek TNG scenarios +2. **Show Examples:** Use realistic project scenarios 3. **Explain Trade-offs:** Compare with todo.txt, xit, etc. 4. **Link Comparison:** Reference [format-comparison.md](docs/format-comparison.md) @@ -472,7 +497,7 @@ taskmark-spec/ - [ ] Task # Full featured -- [ ] (A) 2366-03-10T09:00-05:00 Task @user +proj/sub #tag1 #tag2 due:2366-03-15 repeat:weekdays ~2h type:bug +- [ ] (A) 2024-03-10T09:00-05:00 Task @user +proj/sub #tag1 #tag2 due:2024-03-15 repeat:weekdays ~2h type:bug # Subtasks with inheritance ## Section +Proj #tag @@ -510,17 +535,20 @@ taskmark-spec/ ## Quick Reference ### Minimal Task + ```markdown - [ ] Task description ``` ### Everything + ```markdown -- [ ] (A) 2366-03-10T09:00-05:00 Task @user +project/sub #tag created:2366-03-01T10:00 started:2366-03-10T09:00 due:2366-03-15T18:00 repeat:weekdays ~2h type:bug ticket:ENG-4739 +- [ ] (A) 2024-03-10T09:00-05:00 Task @user +project/sub #tag created:2024-03-01T10:00 started:2024-03-10T09:00 due:2024-03-15T18:00 repeat:weekdays ~2h type:bug ticket:ENG-4739 - [ ] Subtask ``` ### Section with Inheritance + ```markdown # TODO +global-project #global-tag @@ -530,12 +558,13 @@ taskmark-spec/ ``` ### File Link with Inheritance + ```markdown -## Engineering +Enterprise #critical +## Backend +Acme #critical -[Warp Core](team/warp-core.md) +[API Team](team/api.md) -# All tasks in warp-core.md inherit: +Enterprise, #critical +# All tasks in api.md inherit: +Acme, #critical ``` --- @@ -547,9 +576,9 @@ taskmark-spec/ | [README.md](README.md) | User introduction | Explaining format to humans | | [specification.md](docs/specification.md) | Complete technical spec | Implementation questions | | [format-comparison.md](docs/format-comparison.md) | Format comparison | Understanding design decisions | -| [simple-daily-ops.md](examples/simple-daily-ops.md) | Basic example | Learning basics | -| [medium-mission.md](examples/medium-mission.md) | Intermediate example | Priorities + estimates | -| [complex-starbase-ops.md](examples/complex-starbase-ops.md) | Advanced example | Full lifecycle + timezones | +| [sprint-planning.md](examples/sprint-planning.md) | Sprint example | Learning basics | +| [team-standup.md](examples/team-standup.md) | Team coordination | Intermediate example | +| [comprehensive.md](examples/comprehensive.md) | Full feature showcase | Advanced usage | --- @@ -579,18 +608,16 @@ This document follows AISD (AI Small Docs) principles: ### Working with This Project **When in doubt:** + 1. Read the spec: [specification.md](docs/specification.md) 2. Check examples: [examples/](examples/) 3. Compare formats: [format-comparison.md](docs/format-comparison.md) 4. Ask questions: Clarify before implementing **Core values:** + - Plain text simplicity - Git-native workflow - Human readability - Machine parseability - Future-proof format - ---- - -**Make it so.** 🖖 diff --git a/README.md b/README.md index af6d3e8..126ecc9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # TaskMark +[![CI](https://github.com/taskmark/taskmark-spec/actions/workflows/ci.yml/badge.svg)](https://github.com/taskmark/taskmark-spec/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) + **Plain-text todos that work everywhere.** Write tasks in Markdown, track them in git, and never lose your todos again. **Status:** Draft v1.0.0 @@ -25,9 +28,9 @@ Your todos should be as simple as your code: ```markdown # TODO -- [ ] Inspect warp nacelles @geordi -- [x] 2366-03-10 2366-03-10 Calibrate sensor array @data -- [ ] Crew physicals @crusher due:2366-03-15 +- [ ] Review pull request @alice +- [x] 2024-03-10 2024-03-10 Update dependencies @bob +- [ ] Write tests @charlie due:2024-03-15 ``` That's it. You're done. Everything else is optional. @@ -35,32 +38,33 @@ That's it. You're done. Everything else is optional. ### Add Some Structure ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering Operations +Engineering #critical +## Backend +Backend #critical -- [ ] (A) 2366-03-10 Repair warp drive @geordi due:2366-03-15 ~8h - - [ ] Replace magnetic constrictors ~2h - - [ ] Recalibrate plasma injectors ~3h - - [x] 2366-03-09 2366-03-10 Test at warp 5 ~3h +- [ ] (A) 2024-03-10 Fix database connection @alice due:2024-03-15 ~8h + - [ ] Update connection pooling ~2h + - [ ] Add retry logic ~3h + - [x] 2024-03-09 2024-03-10 Write migration ~3h -- [ ] 2366-03-15T09:00 Daily standup @geordi repeat:weekdays ~15m +- [ ] 2024-03-15T09:00 Daily standup @team repeat:weekdays ~15m -## Medical Operations +Medical #routine +## Frontend +Frontend #routine -- [ ] Complete crew physicals @crusher due:2366-03-20 ~10h -- [ ] Weekly medical staff meeting @crusher repeat:weekly ~1h +- [ ] Complete UI redesign @bob due:2024-03-20 ~10h +- [ ] Weekly design review @team repeat:weekly ~1h ``` **What's happening here?** -- `# TODO +Enterprise #starfleet` = Top-level metadata (all tasks inherit this!) + +- `# TODO +Acme #work` = Top-level metadata (all tasks inherit this!) - `(A)` = Priority -- `2366-03-10` = Planned start date -- `2366-03-10 2366-03-10` = Planned and done dates -- `@geordi` = Assigned to Geordi -- `+Engineering` = Section project (combines with `+Enterprise`) -- `#critical` = Section tag (adds to `#starfleet`) -- `due:2366-03-15` = Deadline +- `2024-03-10` = Planned start date +- `2024-03-10 2024-03-10` = Planned and done dates +- `@alice` = Assigned to Alice +- `+Backend` = Section project (combines with `+Acme`) +- `#critical` = Section tag (adds to `#work`) +- `due:2024-03-15` = Deadline - `~8h` = Time estimate - `repeat:weekdays` = Recurring task - Indented = Subtasks @@ -70,15 +74,15 @@ That's it. You're done. Everything else is optional. Put metadata on ANY section (even the top one!), and all tasks inherit it: ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Warp Core Maintenance +WarpCore #critical +## Database Maintenance +Database #critical -- [ ] Inspect dilithium chamber @barclay -- [ ] Run diagnostics @geordi +- [ ] Optimize indexes @alice +- [ ] Run vacuum @bob ``` -Both tasks automatically get: `+Enterprise/WarpCore`, `#starfleet`, and `#critical` +Both tasks automatically get: `+Acme/Database`, `#work`, and `#critical` **Every task in the file inherits from `# TODO`!** @@ -90,17 +94,17 @@ Both tasks automatically get: `+Enterprise/WarpCore`, `#starfleet`, and `#critic | Symbol | Meaning | Example | |--------|---------|---------| -| `[ ]` | Open task | `- [ ] Fix warp drive` | -| `[x]` | Done | `- [x] Calibrate sensors` | -| `[-]` | Cancelled | `- [-] Abandon old protocol` | -| `[!]` | Blocked | `- [!] Awaiting Starfleet approval` | +| `[ ]` | Open task | `- [ ] Fix login bug` | +| `[x]` | Done | `- [x] Update docs` | +| `[-]` | Cancelled | `- [-] Deprecated feature` | +| `[!]` | Blocked | `- [!] Awaiting API access` | ### Priorities ```markdown -- [ ] (A) Emergency warp core repair +- [ ] (A) Critical security fix - [ ] (B) Routine maintenance -- [ ] (C) Optional upgrades +- [ ] (C) Nice to have ``` Use any value: `(A)`, `(1)`, `(urgent)`, `(P1)` - whatever makes sense to you. @@ -109,15 +113,15 @@ Use any value: `(A)`, `(1)`, `(urgent)`, `(P1)` - whatever makes sense to you. ```markdown # Simple dates -- [ ] 2366-03-10 Start mission -- [x] 2366-03-08 2366-03-10 Complete report +- [ ] 2024-03-10 Start project +- [x] 2024-03-08 2024-03-10 Complete report # With times -- [ ] 2366-03-15T09:00 Morning briefing due:2366-03-15T09:30 +- [ ] 2024-03-15T09:00 Morning standup due:2024-03-15T09:30 # With timezones -- [ ] 2366-03-15T09:00-05:00 Team call (EST) -- [ ] 2366-03-15T15:00+01:00 European meeting +- [ ] 2024-03-15T09:00-05:00 Team call (EST) +- [ ] 2024-03-15T15:00+01:00 European meeting ``` ### Recurring Tasks @@ -133,63 +137,53 @@ When you mark a recurring task done, it automatically creates the next one. ### Subtasks ```markdown -- [ ] Launch away mission @riker - - [ ] Brief away team - - [ ] Check transporter - - [x] Pack emergency supplies +- [ ] Launch new feature @alice + - [ ] Write documentation + - [ ] Create tests + - [x] Design mockups ``` One level only. Keep it simple. ### Multiple Files -**Main: enterprise-todo.md** +**Main: project-todo.md** + ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering +Engineering #critical +## Backend +Backend #critical -[Warp Core Team](engineering/warp-core.md) -[Transporter Team](engineering/transporters.md) +[API Team](backend/api.md) +[Database Team](backend/database.md) -## Medical +Medical #routine +## Frontend +Frontend #routine -[Medical Staff](medical/staff-tasks.md) +[UI Team](frontend/ui-tasks.md) ``` -**Linked: engineering/warp-core.md** +**Linked: backend/api.md** + ```markdown -# Warp Core Maintenance +# API Tasks -- [ ] Inspect dilithium chamber @barclay -- [ ] Calibrate antimatter flow @geordi +- [ ] Add rate limiting @alice +- [ ] Update authentication @bob ``` -All warp core tasks automatically get: `+Enterprise/Engineering`, `#starfleet`, `#critical` +All API tasks automatically get: `+Acme/Backend`, `#work`, `#critical` ### Custom Metadata Add whatever you need: ```markdown -- [ ] Fix bug type:urgent ticket:ENG-4701 url:https://starfleet.fed/tickets/4701 +- [ ] Fix bug type:urgent ticket:ENG-4701 url:https://jira.example.com/ENG-4701 - [ ] Research task notes:"Check latest specs" priority:high ``` --- -## Real Examples - -Check out the [examples directory](examples/) for complete todo files: - -- **[Simple Daily Operations](examples/simple-daily-ops.md)** - Basic task tracking -- **[Medium Mission Planning](examples/medium-mission.md)** - With priorities and estimates -- **[Complex Starbase Operations](examples/complex-starbase-ops.md)** - Full lifecycle tracking with timezones - -All examples use Star Trek TNG scenarios because everything's better with Star Trek. - ---- - ## Documentation | Document | What's Inside | @@ -216,17 +210,20 @@ Start with basic checkboxes. Add structure as your project grows. Use metadata i ## Quick Reference ### Basic Task + ```markdown - [ ] Task description ``` ### Everything + ```markdown -- [ ] (A) 2366-03-10 Task @user +project #tag due:2366-03-15 ~2h type:bug +- [ ] (A) 2024-03-10 Task @user +project #tag due:2024-03-15 ~2h type:bug - [ ] Subtask ``` ### Section with Inheritance + ```markdown # TODO +project #tag type:value @@ -236,11 +233,13 @@ Start with basic checkboxes. Add structure as your project grows. Use metadata i ``` ### Recurring + ```markdown -- [ ] Task repeat:weekdays due:2366-03-15 +- [ ] Task repeat:weekdays due:2024-03-15 ``` ### States + - `[ ]` = Open - `[x]` = Done - `[-]` = Cancelled @@ -269,16 +268,43 @@ This is a format specification. We welcome: - Example files - Bug reports and suggestions +### Development Setup + +```bash +# Install pre-commit hooks (requires Python) +pip install pre-commit +pre-commit install --hook-type pre-commit --hook-type commit-msg + +# Run checks manually +pre-commit run --all-files +``` + +### Commit Convention + +This project uses [Conventional Commits](https://www.conventionalcommits.org/) for semantic versioning: + +```bash +feat: add new feature # → minor version bump (0.1.0 → 0.2.0) +fix: fix a bug # → patch version bump (0.1.0 → 0.1.1) +docs: update documentation # → patch version bump +chore: maintenance task # → no release + +# Breaking changes +feat!: breaking change # → major version bump (0.1.0 → 1.0.0) +``` + --- ## Credits Inspired by the best parts of: + - [todo.txt](https://github.com/todotxt/todo.txt) - The OG plain-text format - [todo.md](https://github.com/todomd/todo.md) - Markdown task lists - [xit](https://github.com/jotaen/xit) - Minimalist text format Specification format influenced by: + - [AISD](https://github.com/rickgemignani/AISD) - AI Small Docs - [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119) - Requirement levels @@ -289,7 +315,3 @@ Specification format influenced by: MIT License - see [LICENSE](LICENSE) file for details. **TL;DR:** Use it however you want. Build tools, sell products, fork it, whatever. No strings attached. - ---- - -**Make it so.** 🖖 diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..9ff6085 --- /dev/null +++ b/TODO.md @@ -0,0 +1,33 @@ +# TODO +taskmark-spec + +Project roadmap and tasks for the TaskMark specification. + +## v1.1.0 - Frontmatter Enhancements +taskmark-spec/v1.1.0 #documentation + +### Locale and Date Handling + +- [ ] Document `locale` frontmatter field ~2h + - Used for parsing natural language dates and recurrence patterns + - When set (without `date_format`), output uses locale's default date format instead of ISO +- [ ] Document `date_format` frontmatter field ~1h + - Accepts strftime patterns (e.g., `%d/%m/%Y`) + - Overrides locale default format when both are set +- [ ] Document that default output format is ISO 8601 (`YYYY-MM-DD`) when no locale/date_format set ~30m + +### File-Scoped Frontmatter + +- [ ] Document that `timezone` only applies to the current file ~30m +- [ ] Document that `locale` only applies to the current file ~30m +- [ ] Document that `date_format` only applies to the current file ~30m +- [ ] Document that imported files retain their own frontmatter settings ~1h + +## v1.2.0 - Documentation Updates +taskmark-spec/v1.2.0 #documentation + +- [ ] Document `@user` assignees in headers for inheritance ~1h +- [ ] Document `.` support in project names (e.g., `+app/v1.2.3`) ~30m + +## Backlog +taskmark-spec/backlog + +- [ ] Reference parser implementation #implementation +- [ ] VSCode extension #tooling +- [ ] CLI tool for filtering/querying tasks #tooling diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..c1c67f8 --- /dev/null +++ b/cspell.json @@ -0,0 +1,43 @@ +{ + "version": "0.2", + "language": "en", + "words": [ + "taskmark", + "frontmatter", + "subtasks", + "assignee", + "assignees", + "subheadings", + "YYYY", + "backlog", + "todos", + "unchecked", + "datetimes", + "parseable", + "parseability", + "AISD", + "RRULE", + "DTSTART", + "BYDAY", + "dateutil", + "rrule", + "dateparser", + "todotxt", + "todomd", + "jotaen", + "matthewpalmer", + "Janik", + "Rotz", + "standups" + ], + "ignorePaths": [ + ".git/**", + "node_modules/**", + ".github/**" + ], + "ignoreRegExpList": [ + "\\(#\\d+\\)", + "@\\w+", + "\\+\\w+" + ] +} diff --git a/docs/format-comparison.md b/docs/format-comparison.md index 4571021..b22d208 100644 --- a/docs/format-comparison.md +++ b/docs/format-comparison.md @@ -103,47 +103,52 @@ This document compares existing plain-text todo formats that inspired the TaskMa ## Example: Same Task Set Across Formats -**Scenario:** Warp drive repair with 3 subtasks, assigned to Geordi, high priority, due 2366-03-15 +**Scenario:** Database fix with 3 subtasks, assigned to Alice, high priority, due 2024-03-15 ### todo.txt + ``` -(A) 2366-03-01 Repair warp drive containment field +Enterprise @engineering due:2366-03-15 est:8h -(B) 2366-03-01 Replace magnetic constrictors +Enterprise @engineering due:2366-03-12 est:2h parent:warp-drive-repair -(B) 2366-03-01 Recalibrate plasma injectors +Enterprise @engineering due:2366-03-13 est:3h parent:warp-drive-repair -(B) 2366-03-01 Test at warp 5 +Enterprise @engineering due:2366-03-14 est:3h parent:warp-drive-repair +(A) 2024-03-01 Fix database connection pooling +Acme @backend due:2024-03-15 est:8h +(B) 2024-03-01 Update connection settings +Acme @backend due:2024-03-12 est:2h parent:db-fix +(B) 2024-03-01 Add retry logic +Acme @backend due:2024-03-13 est:3h parent:db-fix +(B) 2024-03-01 Write migration tests +Acme @backend due:2024-03-14 est:3h parent:db-fix ``` ### todo.md (original) + ```markdown -## Engineering +## Backend -- [ ] Repair warp drive containment field @geordi #critical due:2366-03-15 ~8h - - [ ] Replace magnetic constrictors ~2h - - [ ] Recalibrate plasma injectors ~3h - - [ ] Test at warp 5 ~3h +- [ ] Fix database connection pooling @alice #critical due:2024-03-15 ~8h + - [ ] Update connection settings ~2h + - [ ] Add retry logic ~3h + - [ ] Write migration tests ~3h ``` ### xit + ``` -2366-03-01 - [ ] Repair warp drive containment field assignee:geordi project:Enterprise context:engineering due:2366-03-15 est:8h - [ ] Replace magnetic constrictors est:2h - [ ] Recalibrate plasma injectors est:3h - [ ] Test at warp 5 est:3h +2024-03-01 + [ ] Fix database connection pooling assignee:alice project:Acme context:backend due:2024-03-15 est:8h + [ ] Update connection settings est:2h + [ ] Add retry logic est:3h + [ ] Write migration tests est:3h ``` ### TaskMark + ```markdown -## Engineering Operations +Enterprise #engineering +## Backend Operations +Acme #backend -- [ ] (A) Repair warp drive containment field @geordi +WarpCore #critical due:2366-03-15 ~8h type:urgent - - [ ] (B) Replace magnetic constrictors @geordi ~2h - - [ ] (B) Recalibrate plasma injectors @barclay ~3h - - [x] (C) 2366-03-09 2366-03-10 Test at warp 5 @geordi ~3h +- [ ] (A) Fix database connection pooling @alice +Database #critical due:2024-03-15 ~8h type:urgent + - [ ] (B) Update connection settings @alice ~2h + - [ ] (B) Add retry logic @bob ~3h + - [x] (C) 2024-03-09 2024-03-10 Write migration tests @alice ~3h ``` **After inheritance:** -- Parent: `+Enterprise/WarpCore`, `#engineering`, `#critical`, `type:urgent` + +- Parent: `+Acme/Database`, `#backend`, `#critical`, `type:urgent` - Subtasks inherit all parent metadata + section metadata --- @@ -156,7 +161,7 @@ This document compares existing plain-text todo formats that inspired the TaskMa |--------|---------| | Social media familiarity | `@mention` universally understood as person reference | | Clear semantics | Unambiguous: `@` = who, `#` = what/where | -| Distinct from contexts | Allows both: `@geordi` (who) + `#engineering` (where) | +| Distinct from contexts | Allows both: `@alice` (who) + `#backend` (where) | ### Why `+project` (from todo.txt)? @@ -164,7 +169,7 @@ This document compares existing plain-text todo formats that inspired the TaskMa |--------|---------| | Established convention | Widely recognized from todo.txt ecosystem | | Natural grouping | Plus sign implies addition/aggregation | -| Hierarchy support | `/` separator for sub-projects: `+Enterprise/WarpCore` | +| Hierarchy support | `/` separator for sub-projects: `+Acme/Backend` | ### Why `#tag` for contexts (not `@context`)? diff --git a/docs/specification.md b/docs/specification.md index b06e4e4..90d5443 100644 --- a/docs/specification.md +++ b/docs/specification.md @@ -35,6 +35,7 @@ | `timezone` | String | OPTIONAL | Default timezone for datetime fields | `America/New_York`, `Europe/Paris`, `UTC` | **Processing Order:** + 1. Parse YAML front matter (if present) 2. Extract `locale` and `timezone` values 3. Apply to all subsequent date/time parsing @@ -231,9 +232,9 @@ | Header Level | Pattern | Example | |--------------|---------|---------| -| Top level | `# TODO` (required) | `# TODO +Enterprise #starfleet` | -| Section | `## Section Name` | `## Engineering +WarpCore #critical` | -| Subsection | `### Subsection Name` | `### Dilithium Systems +Maintenance` | +| Top level | `# TODO` (required) | `# TODO +Acme #work` | +| Section | `## Section Name` | `## Backend +API #critical` | +| Subsection | `### Subsection Name` | `### Database +Maintenance` | **All headers MAY include metadata (projects, tags, key-value pairs).** @@ -248,14 +249,14 @@ **Example:** ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering +Engineering #critical +## Backend +API #critical -- [ ] Task +WarpCore +- [ ] Task +Database ``` -**Task inherits:** `+Enterprise/Engineering/WarpCore`, `#starfleet`, `#critical` +**Task inherits:** `+Acme/API/Database`, `#work`, `#critical` --- @@ -355,7 +356,7 @@ | Multiple priorities | Use first, ignore rest | INFO | `(A) (B)` → `(A)` | | Invalid task state | Ignore line | INFO | `- [?] Task` | | Empty task | Parse as valid | INFO | `- [ ]` | -| Leading/trailing spaces | Trim from description | NONE | ` Task ` → `Task` | +| Leading/trailing spaces | Trim from description | NONE | `Task` → `Task` | | Unclosed quote | Warn at `file:line`, treat as unquoted | WARNING | `desc:"unclosed` | | Escaped quote | Remove backslash | NONE | `\"` → `"` | | Invalid timezone | Warn at `file:line`, use default | WARNING | `T09:00+99:00` | @@ -365,7 +366,7 @@ | Context | Rule | Example | |---------|------|---------| -| Task description | Trim leading/trailing | ` Task ` → `Task` | +| Task description | Trim leading/trailing | `Task` → `Task` | | Between tokens | Collapse to single space | `Task @user` → `Task @user` | | Indentation | Any amount = subtask | Spaces or tabs | | Empty lines | Ignored | Not parsed | @@ -416,22 +417,23 @@ ### 10.2 Full Featured ```markdown -# TODO +Enterprise #starfleet +# TODO +Acme #work -## Engineering Operations +Engineering #critical +## Backend Operations +Backend #critical -- [ ] (A) 2366-03-10 Repair warp drive @geordi +WarpCore due:2366-03-15T18:00 ~8h type:urgent ticket:ENG-4739 created:2366-03-01T10:00 started:2366-03-10T09:00 - - [ ] (B) 2366-03-10 Replace magnetic constrictors @geordi ~2h - - [ ] (B) 2366-03-11 Recalibrate plasma injectors @barclay ~3h - - [x] (C) 2366-03-09 2366-03-10 Test at warp 5 @geordi ~3h +- [ ] (A) 2024-03-10 Fix database connection @alice +Database due:2024-03-15T18:00 ~8h type:urgent ticket:ENG-4739 created:2024-03-01T10:00 started:2024-03-10T09:00 + - [ ] (B) 2024-03-10 Update connection pooling @alice ~2h + - [ ] (B) 2024-03-11 Add retry logic @bob ~3h + - [x] (C) 2024-03-09 2024-03-10 Write migration @alice ~3h -- [ ] 2366-03-15T09:00 Daily status report @geordi repeat:"weekdays at 9am" due:2366-03-15T09:30 ~30m type:report +- [ ] 2024-03-15T09:00 Daily status report @alice repeat:"weekdays at 9am" due:2024-03-15T09:30 ~30m type:report ``` **After Inheritance:** -- First task: `+Enterprise/Engineering/WarpCore`, `#starfleet`, `#critical` + +- First task: `+Acme/Backend/Database`, `#work`, `#critical` - Subtasks: Inherit parent + section + top-level metadata -- Daily report: `+Enterprise/Engineering`, `#starfleet`, `#critical` +- Daily report: `+Acme/Backend`, `#work`, `#critical` ### 10.3 Date and Time Examples diff --git a/examples/complex-starbase-ops.md b/examples/complex-starbase-ops.md deleted file mode 100644 index 6da958c..0000000 --- a/examples/complex-starbase-ops.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -locale: en_US -timezone: America/New_York ---- - -# TODO - -USS Enterprise-D Starbase Operations - Stardate 43130.5 - -Advanced task management with full lifecycle tracking, timezones, comprehensive metadata, and cross-department coordination during starbase refit operations. - -## Critical Systems Maintenance +Enterprise/Refit #critical-systems - -### Warp Core Operations +WarpCore #engineering - -Mission-critical warp propulsion systems requiring immediate attention during starbase refit. - -- [ ] (A) 2366-03-15T08:00-05:00 Complete dilithium matrix replacement @geordi +Maintenance #safety due:2366-03-17T18:00-05:00 ~12h type:urgent ticket:ENG-5001 created:2366-03-10T09:00-05:00 started:2366-03-15T08:00-05:00 priority:critical location:"Engineering Section 12" compliance:starfleet-reg-2366.2 - Emergency replacement and calibration of dilithium crystal matrix in primary reaction chamber. - - [ ] (A) 2366-03-15T08:00 Coordinate with starbase engineering @geordi ~1h contact:"Chief Engineer Morrison" - - [ ] (B) 2366-03-15T09:30 Shut down warp core safely @geordi ~2h safety:critical procedure:WC-SHUTDOWN-01 - - [ ] (B) 2366-03-15T12:00 Remove depleted crystal matrix @geordi @barclay ~3h equipment:"magnetic crane" - - [ ] (B) 2366-03-16T08:00 Install new dilithium matrix @geordi ~4h vendor:"Starfleet Materials Division" - - [ ] (C) 2366-03-17T09:00 Run full diagnostic suite @barclay ~2h tests:27 - -- [x] (A) 2366-03-12T09:00-05:00 2366-03-14T17:30-05:00 Antimatter containment field upgrade @geordi +Maintenance #critical type:enhancement ticket:ENG-4998 created:2366-03-05T10:00-05:00 started:2366-03-12T09:00-05:00 paused:2366-03-13T15:00-05:00 url:https://starfleet.fed/tickets/ENG-4998 desc:"Upgraded to specification 2366.3 - all tests passed" certification:"SF-CERT-2366-0142" - Successfully upgraded antimatter containment to meet new Starfleet safety standards with extended field stability. - - [x] 2366-03-12T09:00 2366-03-12T13:00 Install Mark VII field generators @geordi ~4h vendor:"Yoyodyne Propulsion" - - [x] 2366-03-13T08:00 2366-03-13T16:00 Calibrate field harmonics @barclay ~8h precision:0.00001% - - [x] 2366-03-14T09:00 2366-03-14T17:30 Final testing and Starfleet certification @geordi ~8.5h inspector:"Cmdr. Williams" - -- [ ] (B) 2366-03-18T14:00-05:00 Install advanced warp diagnostic system @barclay +SystemsUpgrade #enhancement due:2366-03-25T17:00-05:00 ~16h type:enhancement ticket:ENG-5003 created:2366-03-14T11:00-05:00 epic:systems-modernization budget:125000-credits - Integration of new real-time warp field monitoring and predictive maintenance system. - - [ ] 2366-03-18T14:00 Mount sensor array in nacelle pylons @barclay ~4h - - [ ] 2366-03-19T09:00 Connect to main computer @barclay ~3h - - [ ] 2366-03-20T09:00 Calibrate sensors @geordi ~4h - - [ ] 2366-03-21T09:00 Install analysis software @data ~3h - - [ ] 2366-03-22T09:00 Run integration tests @geordi ~2h - -- [ ] 2366-03-16T09:00-05:00 Daily engineering status briefing @geordi repeat:weekdays due:2366-03-16T09:30-05:00 ~30m type:meeting location:"Main Engineering" attendees:"Senior engineering staff" report-to:"Commander Riker" - -- [x] (A) 2366-03-08T08:00-05:00 2366-03-11T17:30-05:00 Repair impulse drive plasma manifold @geordi +PropulsionSystems #urgent type:maintenance ticket:ENG-4987 created:2366-03-07T14:00-05:00 started:2366-03-08T08:00-05:00 desc:"Replaced cracked manifold section and restored full impulse capability" downtime:26h - Emergency repair of critical impulse propulsion system component. - -- [x] (B) 2366-03-10T09:00-05:00 2366-03-12T16:00-05:00 Install enhanced shield emitter array @geordi +Tactical type:enhancement ticket:ENG-4991 created:2366-03-05T11:00-05:00 started:2366-03-10T09:00-05:00 emitters:42 improvement:15% - -- [x] (A) 2366-03-13T10:00-05:00 2366-03-13T15:30-05:00 Repair transporter pad 6 pattern buffer @barclay +Transporters type:maintenance ticket:ENG-4995 created:2366-03-12T16:00-05:00 started:2366-03-13T10:00-05:00 desc:"Replaced faulty isolinear chip array" - -- [ ] Overhaul holodeck 3 safety systems and safeties @geordi +Holodecks #holodeck type:safety epic:holodeck-upgrade ~40h estimate:180000-credits priority:medium - -- [ ] Upgrade computer core memory banks to isolinear rod technology @data +ComputerCore #computer-core type:enhancement epic:systems-upgrade ~60h estimate:500000-credits priority:low - -### Transporter Systems +Transporters #operations - -- [ ] (A) 2366-03-16T10:00-05:00 Upgrade transporter biofilter systems @barclay +SystemsUpgrade #medical due:2366-03-22T18:00-05:00 ~20h type:enhancement ticket:ENG-5005 created:2366-03-12T14:00-05:00 epic:transporter-modernization compliance:medical-reg-2366.5 - Installation of enhanced biofilter arrays to detect and neutralize biological contaminants. - - [ ] (B) 2366-03-16T10:00 Remove existing biofilter banks @barclay ~3h rooms:1-6 - - [ ] (B) 2366-03-17T09:00 Install new Mark IX biofilters @barclay ~6h - - [ ] (B) 2366-03-18T09:00 Integrate with medical database @barclay @crusher ~4h - - [ ] (C) 2366-03-19T09:00 Calibrate detection thresholds @barclay ~3h - - [ ] (C) 2366-03-20T09:00 Run pathogen simulation tests @crusher ~4h test-cases:150 - -- [ ] (B) 2366-03-19T14:00 Routine transporter pad maintenance @barclay due:2366-03-26T17:00 ~8h type:routine created:2366-03-15T10:00 pads:all - - [ ] Clean and recalibrate pattern buffers ~3h - - [ ] Test materialization circuits ~2h - - [ ] Calibrate targeting scanners ~2h - - [ ] Update maintenance logs ~1h - -## Command Operations +Enterprise/Command #bridge - -### Strategic Planning +Strategy #command - -- [ ] (A) 2366-03-16T10:00-05:00 Sector patrol coordination meeting @picard repeat:"every monday at 10am" due:2366-03-16T12:00-05:00 ~2h type:meeting location:"Observation Lounge" attendees:"Senior staff, Admiral Nechayev (subspace)" created:2366-03-10T09:00-05:00 classification:confidential - Weekly strategic planning session with senior staff and Starfleet Command liaison. - -- [ ] (A) 2366-03-17T09:00-05:00 Prepare fleet readiness assessment @picard due:2366-03-21T17:00-05:00 ~12h type:report ticket:CMD-892 created:2366-03-12T11:00-05:00 priority:high classification:restricted distribution:"Starfleet Command" - - [ ] (B) 2366-03-17T09:00 Compile tactical systems report @worf ~3h - - [ ] (B) 2366-03-18T09:00 Review engineering capabilities @geordi ~3h - - [ ] (B) 2366-03-19T09:00 Analyze crew readiness metrics @riker ~3h - - [ ] (C) 2366-03-20T09:00 Draft executive summary @picard ~3h - -- [ ] (A) 2366-03-20T14:00+01:00 Federation Council diplomatic briefing @picard @troi due:2366-03-20T17:00+01:00 ~3h type:diplomatic priority:critical location:"Federation Council Chamber, Earth" attendees:"Council members, Ambassador Sarek" created:2366-03-10T10:00-05:00 travel-time:6h - Critical briefing on recent first contact mission with newly discovered civilization. - -- [x] (A) 2366-03-11T09:00-05:00 2366-03-11T16:00-05:00 Quarterly crew performance evaluations - Senior officers @picard @riker #ready-room type:admin epic:crew-evaluations-2366-Q1 created:2366-03-01T09:00-05:00 started:2366-03-11T09:00-05:00 officers:8 - -- [x] (B) 2366-03-12T14:00-05:00 2366-03-12T17:30-05:00 Strategic planning session with Starfleet Command @picard type:meeting attendees:"Admiral Nechayev, Admiral Hanson" classification:confidential created:2366-03-10T10:00-05:00 - -- [ ] Plan next quarter shore leave rotation @riker #ready-room type:admin ~8h priority:medium - -- [ ] Investigate unusual sensor readings from Romulan Neutral Zone @picard type:investigation priority:high classification:restricted ~30h - -- [ ] Develop new first contact protocols @picard @troi type:diplomatic ~20h priority:medium - -- [ ] Review and update emergency evacuation procedures @riker #ready-room type:safety ~12h priority:medium compliance:safety-reg-2366.12 - -### Tactical Operations +Tactical #security - -- [ ] (B) 2366-03-18T09:00-05:00 Install advanced tactical software @worf +SystemsUpgrade due:2366-03-28T17:00-05:00 ~18h type:enhancement ticket:SEC-1015 created:2366-03-14T11:00-05:00 version:TacSoft-8.2.1 - - [ ] (B) 2366-03-18T09:00 Backup current tactical database @worf ~2h backup-location:"Secure Storage 7" - - [ ] (C) 2366-03-19T09:00 Install core software modules @worf ~4h - - [ ] (C) 2366-03-20T09:00 Configure threat analysis algorithms @data ~4h - - [ ] (C) 2366-03-21T09:00 Integrate with sensor grid @worf ~3h - - [ ] (C) 2366-03-22T09:00 Run combat scenario simulations @worf ~5h scenarios:25 - -- [ ] (A) 2366-03-19T10:00-05:00 Security certification audit @worf due:2366-03-23T17:00-05:00 ~12h type:compliance ticket:SEC-1018 created:2366-03-15T14:00-05:00 auditor:"Lt. Cmdr. Singh, Starfleet Security" compliance:security-reg-2366.8 - Comprehensive security audit required for starbase operations clearance. - - [ ] Review all security protocols ~3h - - [ ] Conduct physical security inspection ~3h - - [ ] Test emergency response procedures ~4h - - [ ] Compile audit documentation ~2h - -- [ ] Install advanced deflector shield generators @geordi +Tactical type:enhancement epic:tactical-upgrade ~80h estimate:750000-credits priority:medium - -### Navigation Systems +Navigation #ops - -- [ ] (A) 2366-03-20T09:00-05:00 Calibrate long-range sensor array @data due:2366-03-26T18:00-05:00 ~14h type:routine ticket:NAV-558 created:2366-03-16T10:00-05:00 range:22-light-years - - [ ] (B) 2366-03-20T09:00 Align primary sensor dish @data ~4h - - [ ] (B) 2366-03-21T09:00 Calibrate subspace antenna array @data ~4h elements:256 - - [ ] (C) 2366-03-22T09:00 Run detection sensitivity tests @data ~3h - - [ ] (C) 2366-03-23T09:00 Update stellar cartography database @data ~3h stars:1.2million - -- [ ] 2366-03-21T15:00-05:00 Weekly stellar cartography update @data repeat:"every friday at 3pm" ~4h type:routine location:"Stellar Cartography Lab" created:2366-03-01T09:00-05:00 - Regular update of navigational charts and stellar phenomenon database. - -## Medical Operations +Enterprise/Medical #sickbay - -### Patient Care +PatientCare #medical - -- [ ] (A) 2366-03-17T08:00-05:00 Complete annual crew physicals - Alpha shift @crusher due:2366-03-24T17:00-05:00 ~24h type:routine epic:crew-health-2366 created:2366-03-05T09:00-05:00 started:2366-03-17T08:00-05:00 crew-count:95 - Annual physical examinations for all Alpha shift personnel per Starfleet Medical regulations. - - [ ] (B) 2366-03-17T08:00 Examine senior officers @crusher ~6h exams:8 - - [ ] (B) 2366-03-18T08:00 Examine bridge crew @crusher ~8h exams:12 - - [ ] (C) 2366-03-19T08:00 Examine engineering staff @ogawa ~8h exams:25 - - [ ] (C) 2366-03-20T14:00 Review all results and file reports @crusher ~2h compliance:medical-reg-2366.1 - -- [ ] 2366-03-18T09:00-05:00 Weekly medical staff coordination @crusher repeat:"every tuesday at 9am" ~90m type:meeting location:"CMO Office" attendees:"All medical staff" created:2366-03-01T09:00-05:00 - Regular coordination meeting for medical staff to review cases and procedures. - -- [ ] (B) 2366-03-19T14:00-05:00 Restock critical medical supplies @ogawa due:2366-03-25T17:00-05:00 ~6h type:admin ticket:MED-445 created:2366-03-17T10:00-05:00 requisition:MED-2366-Q1-118 - - [ ] Inventory current stock levels ~2h - - [ ] Submit requisition to starbase ~1h - - [ ] Receive and catalog supplies ~2h - - [ ] Update supply database ~1h - -- [x] (A) 2366-03-10T08:00-05:00 2366-03-12T17:00-05:00 Emergency medical response training @crusher type:training crew:all-shifts created:2366-03-03T09:00-05:00 started:2366-03-10T08:00-05:00 desc:"All medical staff certified in advanced trauma protocols" certification:SF-MED-CERT-2366-047 - -- [ ] Develop enhanced medical tricorder capabilities @crusher type:development ~100h priority:medium - -### Medical Research +Research #xenobiology - -- [x] (A) 2366-03-14T09:00-05:00 2366-03-16T17:30-05:00 Analyze Borg nanoprobe samples @crusher due:2366-03-20T17:00-05:00 type:research epic:borg-study ticket:MED-901 created:2366-03-08T11:00-05:00 started:2366-03-14T09:00-05:00 desc:"Successful isolation and comprehensive analysis of Borg nanoprobe technology for development of defensive countermeasures" classification:top-secret samples:12 - Completed comprehensive analysis of Borg technology recovered from previous encounter. Results forwarded to Starfleet Medical and Starfleet Security. - - [x] 2366-03-14T09:00 2366-03-14T17:00 Isolate nanoprobe samples @crusher ~8h isolation-level:4 - - [x] 2366-03-15T09:00 2366-03-15T17:00 Conduct molecular analysis @crusher ~8h - - [x] 2366-03-16T09:00 2366-03-16T17:30 Test defensive countermeasures @crusher ~8.5h success-rate:87% - -- [ ] Long-term Borg defensive adaptation study @data @crusher #science-lab type:research epic:borg-study ~200h classification:top-secret priority:high - -## Science Operations +Enterprise/Science #science-lab - -### Astrophysics Research +Astrophysics #research - -- [ ] (A) 2366-03-18T10:00-05:00 Analyze subspace anomaly in Sector 221-G @data due:2366-03-27T18:00-05:00 ~20h type:research epic:anomaly-investigation ticket:SCI-2001 created:2366-03-15T14:00-05:00 started:2366-03-18T10:00-05:00 coordinates:"221-G-4" priority:high - Investigation of unusual subspace fluctuations detected by long-range sensors. Possible connection to subspace rifts. - - [ ] (B) 2366-03-18T10:00 Collect detailed sensor readings @data ~4h scans:full-spectrum - - [ ] (B) 2366-03-19T10:00 Run spectral analysis algorithms @data ~6h - - [ ] (B) 2366-03-20T10:00 Compare with historical anomaly data @data ~4h database:Starfleet-Science-Archive - - [ ] (C) 2366-03-21T10:00 Model subspace dynamics @data ~4h simulations:50 - - [ ] (C) 2366-03-22T10:00 Prepare research report for Starfleet Science @data ~2h - -- [ ] (B) 2366-03-22T09:00-05:00 Catalog newly discovered lifeforms from Away Mission 47 @data due:2366-04-05T17:00-05:00 ~30h type:documentation epic:first-contact mission:M-113-Zeta created:2366-03-20T11:00-05:00 planet:"Theta Cygni VII" species:7 - - [ ] Document biological characteristics ~10h - - [ ] Conduct genetic analysis ~8h - - [ ] Prepare classification reports ~8h - - [ ] Submit to Federation Science Council ~4h - -- [ ] 2366-04-01T09:00-05:00 Quarterly particle physics experiment @data repeat:"every 3 months" ~12h type:research lab:"Astrophysics Lab 1" created:2366-01-15T10:00-05:00 experiment:QP-2366-Q2 equipment:"subspace field generator" - Regular experimental research on subspace particle behavior and quantum field interactions. - -- [x] (A) 2366-03-09T09:00-05:00 2366-03-15T16:00-05:00 Analyze subspace interference patterns from nebula @data type:research mission:deep-space-survey-12 created:2366-03-02T10:00-05:00 started:2366-03-09T09:00-05:00 desc:"Identified three new subspace anomalies and updated navigational database" paper:published - -- [ ] Comprehensive subspace phenomena catalog @data type:research epic:stellar-cartography ~150h priority:medium - -## Starbase Coordination +Starbase74 #logistics - -- [ ] (A) 2366-03-17T10:00-05:00 Coordinate resupply operations @riker due:2366-03-19T18:00-05:00 ~8h type:logistics ticket:LOG-334 created:2366-03-16T09:00-05:00 contact:"Cmdr. Quinteros, Starbase 74" - - [ ] Review requisition manifests ~2h items:347 - - [ ] Coordinate cargo transfer schedule ~2h - - [ ] Supervise loading operations ~3h - - [ ] Sign off on inventory ~1h - -- [ ] (B) 2366-03-18T14:00-05:00 Personnel transfer briefing @riker due:2366-03-20T17:00-05:00 ~4h type:admin personnel:12 transfers-in:7 transfers-out:5 - - [ ] Review incoming personnel records ~1.5h - - [ ] Conduct exit interviews ~1.5h - - [ ] Process transfer orders ~1h - ---- - -**End of Operations Log** diff --git a/examples/comprehensive.md b/examples/comprehensive.md new file mode 100644 index 0000000..04c0d10 --- /dev/null +++ b/examples/comprehensive.md @@ -0,0 +1,42 @@ +# Project Alpha +alpha #team @lead status:active + +## Sprint 1 +sprint1 @dev + +### Backend +api + +- [ ] (A) Design REST API ~4h @alice #architecture due:2025-02-01 +- [x] 2025-01-10 2025-01-12 Implement auth endpoint @bob #security +- [ ] (B) Add rate limiting ~2h #performance + - [ ] Research libraries ~30m + - [x] 2025-01-15 Choose implementation @alice +- [!] Database migration blocked #urgent + +### Frontend +ui + +- [ ] Build dashboard ~8h @charlie #feature priority:high +- [-] Old feature cancelled + +## Sprint 2 +sprint2 + +### Mobile +mobile + +- [ ] iOS app setup ~16h @dev repeat:weekly +- [ ] Android app ~20h env:"production" version:"2.0" + +## Standalone Section + +- [ ] Task without project inheritance #misc +- [ ] Task with escaped \@mention and \#hashtag + +# Inheritance Override Test +override #base @base-user + +- [ ] (C) Task overrides all #explicit @explicit-user +explicit-project +- [ ] Task inherits everything + +# Edge Cases + +- [ ] Very long title that goes on and on and on and on and on and on and on and on and on +- [ ] ~15m Quick task +- [ ] ~2d Multi-day task +- [ ] Multiple @user1 @user2 @user3 assignees +- [ ] Multiple #tag1 #tag2 #tag3 tags diff --git a/examples/medium-mission.md b/examples/medium-mission.md deleted file mode 100644 index d47e75e..0000000 --- a/examples/medium-mission.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -locale: en_US -timezone: America/New_York ---- - -# TODO - -USS Enterprise-D Mission Operations - Stardate 43127.2 - -Task management for current diplomatic mission with priorities, estimates, and metadata. - -## Mission Planning +DiplomaticMission #command - -- [ ] (A) 2366-03-15 Prepare for Klingon diplomatic meeting @picard due:2366-03-18T10:00 ~6h type:diplomatic - - [ ] Review diplomatic protocols ~2h - - [ ] Study Klingon customs ~2h - - [ ] Prepare position papers ~2h - -- [ ] (B) 2366-03-16 Coordinate with Starfleet Command @picard due:2366-03-17T17:00 ~3h type:communication - - [ ] Send mission status report ~1h - - [ ] Request additional resources ~1h - - [ ] Confirm mission parameters ~1h - -- [ ] (C) 2366-03-17 Senior staff briefing @picard due:2366-03-17T09:00 ~2h type:meeting - -## Engineering Operations +Enterprise #engineering - -- [ ] (A) 2366-03-12 Upgrade warp drive efficiency @geordi due:2366-03-20T18:00 ~12h type:enhancement - - [ ] 2366-03-12 Recalibrate plasma flow @geordi ~4h - - [ ] 2366-03-13 Test new injector settings @barclay ~3h - - [x] 2366-03-11 2366-03-11 Install new control systems @geordi ~5h - -- [ ] (B) 2366-03-15 Routine maintenance schedule @geordi due:2366-03-22 ~8h type:routine - - [ ] Transporter maintenance ~3h - - [ ] Holodeck safety checks ~2h - - [ ] Replicator calibration ~3h - -- [ ] 2366-03-16T09:00 Daily engineering report @geordi repeat:weekdays due:2366-03-16T09:30 ~30m type:report - -- [x] (A) 2366-03-08 2366-03-11 Repair impulse engines @geordi type:urgent ~8h -- [x] (B) 2366-03-09 2366-03-10 Install new communications relay @barclay type:enhancement ~4h - -- [ ] Overhaul holodeck 3 safety systems @geordi #holodeck type:safety ~16h -- [ ] Upgrade computer core processing @data #computer-core type:enhancement ~20h - -## Tactical Systems +Enterprise #security - -- [ ] (A) 2366-03-14 Update shield harmonics @worf due:2366-03-19T17:00 ~6h type:enhancement - - [ ] Run shield simulations ~2h - - [ ] Adjust frequency algorithms ~3h - - [ ] Test against known threats ~1h - -- [ ] (B) 2366-03-15 Security protocols review @worf due:2366-03-21 ~4h type:admin -- [ ] 2366-03-17 Weekly tactical drill @worf repeat:weekly ~2h type:training -- [x] (B) 2366-03-11 2366-03-11 Security sweep of Cargo Bay 2 @worf type:routine ~2h -- [ ] Develop new combat protocols @worf type:training ~8h - -## Medical Operations +Enterprise #sickbay - -- [ ] (A) 2366-03-13 Complete crew physicals - Beta shift @crusher due:2366-03-20T17:00 ~10h type:routine - - [ ] Scan 20 crew members ~8h - - [ ] Review and file reports ~2h - -- [ ] (B) 2366-03-16 Medical supply inventory @ogawa due:2366-03-23 ~3h type:admin -- [ ] 2366-03-18T14:00 Medical staff meeting @crusher repeat:weekly ~1h type:meeting -- [x] (A) 2366-03-10 2366-03-12 Analyze away team medical data @crusher type:analysis ~6h - -## Science Operations +Enterprise #science-lab - -- [ ] (A) 2366-03-14 Analyze nebula readings @data due:2366-03-21T18:00 ~8h type:research - - [ ] Collect spectral data ~3h - - [ ] Run comparative analysis ~3h - - [ ] Prepare research paper ~2h - -- [ ] (B) 2366-03-17 Catalog new lifeforms @data due:2366-03-30 ~12h type:documentation -- [ ] Study Borg defensive adaptations @data type:research ~40h -- [ ] Analyze subspace anomalies @data type:research ~30h - -## Command +Enterprise #command - -- [ ] Plan next quarter shore leave @riker type:admin ~4h -- [ ] Review crew performance evaluations @picard type:admin ~10h diff --git a/examples/simple-daily-ops.md b/examples/simple-daily-ops.md deleted file mode 100644 index fca56c2..0000000 --- a/examples/simple-daily-ops.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -locale: en_US -timezone: UTC ---- - -# TODO - -USS Enterprise-D Daily Operations - Stardate 43125.8 - -Simple task management for routine daily operations aboard the Enterprise. - -## Bridge Operations - -- [ ] Alpha shift bridge duty @riker -- [ ] Beta shift bridge duty @data -- [x] 2366-03-10 2366-03-10 Gamma shift bridge duty @worf -- [ ] Review duty rosters @picard -- [x] 2366-03-09 2366-03-09 Morning briefing @picard -- [x] 2366-03-08 2366-03-08 Crew evaluations @riker - -## Engineering - -- [ ] 2366-03-15 Inspect warp nacelles @geordi -- [ ] Routine diagnostics on transporters @barclay -- [x] 2366-03-10 2366-03-10 Calibrate sensor array @geordi -- [ ] Check antimatter containment @geordi -- [x] 2366-03-09 2366-03-09 Holodeck maintenance @geordi -- [ ] Plan shore leave rotation @riker -- [ ] Update crew training schedules @riker - -## Medical - -- [ ] Crew physicals - Gamma shift @crusher -- [ ] Restock medical supplies @ogawa -- [x] 2366-03-09 2366-03-09 Emergency medical drill @crusher -- [ ] Update patient records @ogawa - -## Science Lab - -- [ ] Analyze stellar phenomena @data -- [ ] Catalog biological samples @crusher -- [ ] Run particle analysis @data - -## Security - -- [ ] Tactical systems check @worf -- [ ] Security briefing @worf -- [x] 2366-03-10 2366-03-10 Phaser drill @worf - -## Command - -- [ ] Review Starfleet directives @picard diff --git a/examples/sprint-planning.md b/examples/sprint-planning.md new file mode 100644 index 0000000..d32339c --- /dev/null +++ b/examples/sprint-planning.md @@ -0,0 +1,21 @@ +# Sprint 23 +engineering #q4 + +## Backend +backend + +- [ ] (A) Implement user authentication ~4h @alice due:2024-12-15 +- [ ] Add rate limiting to API endpoints ~2h @bob #security + - [ ] Research rate limiting libraries ~30m + - [ ] Implement middleware ~1h + - [ ] Write tests ~30m +- [x] 2024-12-01 2024-12-03 Fix database connection pooling #bugfix + +## Frontend +frontend + +- [ ] (B) Redesign dashboard ~8h @carol #ux +- [!] Blocked by API changes @dave +- [-] Dark mode toggle cancelled + +## Documentation +docs + +- [ ] Update API docs desc:"Include rate limiting section" ~1h +- [ ] Write deployment guide repeat:weekly diff --git a/examples/team-standup.md b/examples/team-standup.md new file mode 100644 index 0000000..d81aff9 --- /dev/null +++ b/examples/team-standup.md @@ -0,0 +1,21 @@ +# Team Standup +work #standup + +## Backend @backend-team + +- [x] 2024-11-01 2024-11-02 API rate limiting ~4h #security +- [!] Database migration blocked by ops ~8h @alice due:2024-11-15 + - [ ] Write migration script ~2h + - [ ] Test on staging ~3h + +## Frontend @frontend-team + +- [ ] (B) User dashboard redesign ~16h #ux + - [x] Mockups approved ~4h @designer + - [ ] Component implementation ~8h @bob + - [ ] Integration testing ~4h +- [-] Legacy widget removal + +## DevOps @ops + +- [ ] (A) CI/CD pipeline optimization ~6h #infra +- [x] 2024-10-28 2024-10-30 SSL certificate renewal ~1h From 349ecdde69b37b2da06f06f7402c7e540a914bdd Mon Sep 17 00:00:00 2001 From: Ricardo Gemignani Date: Fri, 5 Dec 2025 11:28:47 -0600 Subject: [PATCH 2/3] fix: disable MD025 for multi-header TaskMark files --- .markdownlint.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.markdownlint.json b/.markdownlint.json index 2ae5801..443e22d 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,6 +1,7 @@ { "default": true, "MD013": false, + "MD025": false, "MD033": false, "MD036": false, "MD040": false, From f76eceaed990f9521dc36053a75fe6dfb0dba48e Mon Sep 17 00:00:00 2001 From: Ricardo Gemignani Date: Fri, 5 Dec 2025 11:31:30 -0600 Subject: [PATCH 3/3] fix: add DDTHH to spell check dictionary --- cspell.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cspell.json b/cspell.json index c1c67f8..2afbc05 100644 --- a/cspell.json +++ b/cspell.json @@ -9,6 +9,7 @@ "assignees", "subheadings", "YYYY", + "DDTHH", "backlog", "todos", "unchecked",