feat(skills): task-format v2 — 5-digit numbers in task files/headers, done/ folder, #n references (tasks-global-numbering)
- task-format 0.1.1→0.2.0: header `[#n slug]`, mandatory `**Created:**`, numbering rules (server counter, 5-digit file name, no # in file) - setup-tasks 1.0.0→1.1.0: v2 folder canon (yyyy-mm-dd-#####-slug.md), done/ phase, numbering in migrate - using-tasks 1.6.0→1.7.0: create via tasks_create (server number), close → done/, Created: field - delegate-task 0.4.0→0.5.0: number in inputs, staged blockers by #n, review blocker by #n - inter-session-messaging 1.1.0→1.2.0: task refs by number (#452), lifecycle letters by number Also synced catalog with newer installed versions (using-tasks 1.4.1→1.6.0, delegate-task 0.2.6→0.4.0, inter-session-messaging 1.0.0→1.1.0) — edits had gone straight to ~/.agents/skills/. fnf-testing + workshop-promote-brainstorm updated directly in ~/.agents/skills/ (no catalog source).
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: setup-tasks
|
||||
author: ours
|
||||
version: 1.0.0
|
||||
version: 1.1.0
|
||||
description: Creates or migrates a project's `.tasks/` board to the canonical layout — `STATUS.md` (the board, with emoji status legend) plus per-task `<task-slug>.md` files for each active or paused task. Use when the user says "set up tasks", "init tasks", "настрой таски", "инициализируй таски", "create task tracking", "migrate tasks to canon", "tasks broken", or whenever `using-tasks` detects a missing or non-canonical `.tasks/`. Two modes — greenfield (no `.tasks/`) and migrate (existing flat STATUS.md without per-task files). Confirmation gate before writing. Cross-platform.
|
||||
---
|
||||
|
||||
@@ -93,12 +93,13 @@ _Updated: <today>_
|
||||
|
||||
<!--
|
||||
Add one block per task, sorted by priority. Use the emoji status legend below.
|
||||
Per-task deep context lives in .tasks/<task-slug>.md (created on demand by using-tasks).
|
||||
Per-task deep context lives in .tasks/yyyy-mm-dd-#####-<slug>.md (created on demand by using-tasks).
|
||||
|
||||
Block format:
|
||||
|
||||
## 🔴 [task-slug] — short description
|
||||
**Status:** active
|
||||
## ⚪ [#1234 task-slug] — short description
|
||||
**Status:** ready
|
||||
**Created:** yyyy-mm-dd
|
||||
**Where I stopped:** one sentence — the exact thought or action interrupted
|
||||
**Next action:** one concrete step to resume immediately
|
||||
**Blocker:** (only if blocked) what is preventing progress
|
||||
@@ -117,6 +118,8 @@ _Updated: <today>_
|
||||
|
||||
No per-task files at greenfield — they're created when actual tasks are added.
|
||||
|
||||
**Task numbering (format v2).** Every task block header carries a **global task number**: `## ⚪ [#1234 task-slug] — …`. Numbers are assigned by the server (`mcp__projects-meta__tasks_create`) from the counter in `OpeItcLoc03/agenda/task-counter` — **never invent or reuse a number by hand**. The per-task file is named `yyyy-mm-dd-#####-<slug>.md` (number 5 digits with leading zeros, no `#`): `2026-06-05-00019-fix-nl-vds-reality-pq-dest.md`. In the header the number is written without leading zeros (`[#19 slug]`). Closed tasks move to `.tasks/done/` (see Phase 4c).
|
||||
|
||||
### Phase 4b — Migrate
|
||||
|
||||
In migrate mode, do *not* try to auto-parse the old flat STATUS.md. The old layout is too varied — agent-driven heuristics will mangle real work. Instead, drive the migration interactively:
|
||||
@@ -125,7 +128,7 @@ In migrate mode, do *not* try to auto-parse the old flat STATUS.md. The old layo
|
||||
2. Ask: "Which of these are real, in-flight tasks you want to keep?" Get a list.
|
||||
3. For each task, ask the four canonical fields (slug, status, branch, where-stopped, next-action). The skill never invents these.
|
||||
4. Build a fresh canonical `.tasks/STATUS.md` from those answers.
|
||||
5. Create `.tasks/<task-slug>.md` for each active or paused task using the per-task template (Goal, Key files, Decisions log, Open questions, Completed steps, Notes).
|
||||
5. Create `.tasks/yyyy-mm-dd-#####-<slug>.md` for each active or paused task using the per-task template (Goal, Key files, Decisions log, Open questions, Completed steps, Notes). File name format v2: date + 5-digit number (from the task's header `[#n slug]`) + slug, no `#`: `2026-05-08-00057-fbs-picking-list-pdf.md`.
|
||||
6. Leave the `.bak-<ts>` file in place — historical record.
|
||||
|
||||
Per-task template:
|
||||
@@ -151,12 +154,21 @@ One paragraph. What this achieves and why it matters.
|
||||
## Notes
|
||||
```
|
||||
|
||||
### Phase 4c — done/ (format v2)
|
||||
|
||||
Closed 🟢 tasks move their **per-task file** to `.tasks/done/` — the board keeps only 🔴 / 🟡 / ⚪ / 🔵 blocks. (The 🟢 block itself is archived from STATUS.md to `.tasks/.archive/done-YYYY-MM.md` — see `using-tasks`.)
|
||||
|
||||
```bash
|
||||
mkdir -p .tasks/done && git mv .tasks/yyyy-mm-dd-#####-slug.md .tasks/done/
|
||||
```
|
||||
|
||||
### Phase 5 — Verify
|
||||
|
||||
After writes:
|
||||
|
||||
- `.tasks/STATUS.md` exists and has the emoji status legend (or template comment block in greenfield).
|
||||
- For migrate: each task referenced in STATUS.md has its `<task-slug>.md` file (active and paused only).
|
||||
- Every task block header is `## <emoji> [#n slug] — …` (number present) and carries `**Created:** yyyy-mm-dd`.
|
||||
- For migrate: each task referenced in STATUS.md has its `yyyy-mm-dd-#####-<slug>.md` file (active and paused only).
|
||||
- No required content was lost (the `.bak` file is the safety net).
|
||||
|
||||
If verification fails → restore from `.bak-<ts>` and report.
|
||||
@@ -190,6 +202,8 @@ If invoked from `project-bootstrap`, return control silently.
|
||||
|
||||
- **Auto-parsing existing flat STATUS.md.** Don't. The format varies, real work is at stake — drive migration through the user, one task at a time.
|
||||
- **Inventing task slugs / branches / "where you stopped" values.** Never. Ask the user. The whole point of `.tasks/` is *real* preserved context, not hallucinated context.
|
||||
- **Inventing or reusing a task number.** Never. Numbers come only from `tasks_create` (server counter). A hand-written number collides with the global counter.
|
||||
- **File without 5-digit number** (`2026-06-05-19-slug.md`). Always `yyyy-mm-dd-#####-slug.md` — leading zeros, no `#`.
|
||||
- **Skipping confirmation on greenfield.** Yes, even greenfield needs the gate — the user might be running this in the wrong directory.
|
||||
- **Creating per-task files at bootstrap.** Don't pre-generate empty `<slug>.md` files in greenfield mode — wait until the user adds actual tasks.
|
||||
- **Editing the `.bak` file.** It's the rollback artifact; leave it alone.
|
||||
|
||||
Reference in New Issue
Block a user