hermes-task-framework 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hermes_task_framework-1.0.0.dist-info/METADATA +7 -0
- hermes_task_framework-1.0.0.dist-info/RECORD +56 -0
- hermes_task_framework-1.0.0.dist-info/WHEEL +5 -0
- hermes_task_framework-1.0.0.dist-info/licenses/LICENSE +1 -0
- hermes_task_framework-1.0.0.dist-info/top_level.txt +1 -0
- task-framework/__init__.py +2 -0
- task-framework/skills/task-external-repos-pattern/SKILL.md +165 -0
- task-framework/skills/task-framework/CHANGELOG.md +45 -0
- task-framework/skills/task-framework/SKILL.md +1365 -0
- task-framework/skills/task-framework/docs/TASKS.md +3 -0
- task-framework/skills/task-framework/docs/architecture.dot +65 -0
- task-framework/skills/task-framework/docs/architecture.svg +188 -0
- task-framework/skills/task-framework/docs/product-requirements.md +65 -0
- task-framework/skills/task-framework/references/auto-runner.md +32 -0
- task-framework/skills/task-framework/references/composites/code-review-session.md +30 -0
- task-framework/skills/task-framework/references/composites/research.md +45 -0
- task-framework/skills/task-framework/references/composites/software-dev.md +41 -0
- task-framework/skills/task-framework/references/document-analysis-workflow.md +95 -0
- task-framework/skills/task-framework/references/file-safety-lesson.md +38 -0
- task-framework/skills/task-framework/references/generating-output-documents.md +166 -0
- task-framework/skills/task-framework/references/operations/code-write.md +30 -0
- task-framework/skills/task-framework/references/operations/document-write.md +185 -0
- task-framework/skills/task-framework/references/operations/info-search.md +27 -0
- task-framework/skills/task-framework/references/operations/web-research.md +57 -0
- task-framework/skills/task-framework/references/policy-time-metadata.md +137 -0
- task-framework/skills/task-framework/references/research-workflow.md +220 -0
- task-framework/skills/task-framework/references/task-format-validation.md +25 -0
- task-framework/skills/task-framework/references/task-hash-naming.md +40 -0
- task-framework/skills/task-framework/references/task-lifecycle-example.md +122 -0
- task-framework/skills/task-framework/references/task-overview-discovery.md +31 -0
- task-framework/skills/task-framework/references/task-types/analysis.md +60 -0
- task-framework/skills/task-framework/references/task-types/external-audit.md +56 -0
- task-framework/skills/task-framework/references/task-types/video-production-pipeline.md +77 -0
- task-framework/skills/task-framework/scripts/__init__.py +0 -0
- task-framework/skills/task-framework/scripts/__pycache__/manage_task.cpython-312.pyc +0 -0
- task-framework/skills/task-framework/scripts/__pycache__/task_ref.cpython-312.pyc +0 -0
- task-framework/skills/task-framework/scripts/__pycache__/update-index.cpython-311.pyc +0 -0
- task-framework/skills/task-framework/scripts/__pycache__/update-index.cpython-312.pyc +0 -0
- task-framework/skills/task-framework/scripts/convert_md_to_pdf.py +236 -0
- task-framework/skills/task-framework/scripts/manage_task.py +442 -0
- task-framework/skills/task-framework/scripts/task-runner.sh +42 -0
- task-framework/skills/task-framework/scripts/task_ref.py +119 -0
- task-framework/skills/task-framework/scripts/update-index.py +293 -0
- task-framework/skills/task-framework/templates/TASK.md +114 -0
- task-framework/skills/task-framework/templates/TASK_MEMORY.md +27 -0
- task-framework/skills/task-framework/templates/run.py +187 -0
- task-framework/skills/task-lifecycle-edge-cases/SKILL.md +84 -0
- task-framework/skills/task-lifecycle-edge-cases/references/task-5d5a1a-recovery-example.md +67 -0
- task-framework/skills/task-lifecycle-portability/SKILL.md +128 -0
- task-framework/skills/task-lifecycle-portability/references/design-session-20260611.md +32 -0
- task-framework/skills/task-lifecycle-portability/references/output-model-design.md +55 -0
- task-framework/skills/task-lifecycle-portability/references/pipeline-output-transition.md +41 -0
- task-framework/skills/task-lifecycle-portability/references/task-recovery-5d5a1a-example.md +27 -0
- task-framework/skills/task-lifecycle-portability/references/task-recovery-procedure.md +63 -0
- task-framework/skills/task-timestamp-convention/SKILL.md +72 -0
- task-framework/skills/task-tracker/SKILL.md +80 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# TASK.md Recovery Procedure
|
|
2
|
+
|
|
3
|
+
When a task directory exists but `TASK.md` is missing (deleted, never created, or corrupted), reconstruct it from surrounding artifacts.
|
|
4
|
+
|
|
5
|
+
## Step 0: Check symlink target first
|
|
6
|
+
|
|
7
|
+
If the task has hash-based naming (rightmost 6 chars = `<hash6>`), check `~/.hermes/personal/tasks/<hash>/task.md`:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ls -la ~/.hermes/personal/tasks/<hash>/task.md
|
|
11
|
+
# If exists → restore with:
|
|
12
|
+
python3 ~/.hermes/skills/software-development/task-framework/scripts/manage_task.py relink <hash>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If the personal backup exists, symlink recovery is instant.
|
|
16
|
+
|
|
17
|
+
## Step 1: Gather evidence
|
|
18
|
+
|
|
19
|
+
| Source | What it tells you |
|
|
20
|
+
|--------|------------------|
|
|
21
|
+
| `~/.hermes/personal/tasks/<hash>/task.md` | content backup — instant recovery via relink |
|
|
22
|
+
| `~/.hermes/personal/tasks/<hash>/memory.md` | TASK_MEMORY.md content backup |
|
|
23
|
+
| `.hermes-task.json` | hash, name, outputs, dependencies |
|
|
24
|
+
| `TASK_MEMORY.md` | last session's state, what was done, what broke |
|
|
25
|
+
| `input/REQUIREMENTS.md` | original task spec |
|
|
26
|
+
| `output/` | all generated files |
|
|
27
|
+
| Root index (`tasks/TASKS.md`) | aggregated status from last index run |
|
|
28
|
+
|
|
29
|
+
## Step 2: Identify task type and load its governing skill
|
|
30
|
+
|
|
31
|
+
Scan directory for type-signature files — `REQUIREMENTS.md` + `RECORDING.md` + `COMPOSITING.md` → video-production task. Load the relevant skill that defines this task type's phases.
|
|
32
|
+
|
|
33
|
+
> 🔴 Do NOT guess phase structure from memory or from other similar tasks. Load the domain skill and use its defined phases.
|
|
34
|
+
|
|
35
|
+
## Step 3: Map evidence to skill's phase structure
|
|
36
|
+
|
|
37
|
+
Cross-reference:
|
|
38
|
+
- Phase directories in `output/` → confirm each matches a skill-defined phase
|
|
39
|
+
- Outputs in `.hermes-task.json` → map each to the right phase's product
|
|
40
|
+
- TASK_MEMORY.md execution notes → confirm sequence matches skill's defined order
|
|
41
|
+
- Parallel deps → check annotations match skill's flow table
|
|
42
|
+
|
|
43
|
+
## Step 4: Write TASK.md
|
|
44
|
+
|
|
45
|
+
Follow the skill's template for format. Use the skill's standard phase names and dependency annotations. Mark all verified-completed items `[x]`.
|
|
46
|
+
|
|
47
|
+
## Step 5: Verify before marking done
|
|
48
|
+
|
|
49
|
+
Only mark phases `[x]` if the output artifact exists and can be verified. If a phase was in-progress but incomplete, mark `[ ]` and note in `## Notes`.
|
|
50
|
+
|
|
51
|
+
## Step 6: Update indexes
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
python3 ~/.hermes/skills/software-development/task-framework/scripts/update-index.py
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Pitfalls
|
|
58
|
+
|
|
59
|
+
- 🔴 **Do NOT infer phase structure from prior conversation** — load the domain skill
|
|
60
|
+
- 🔴 **Do NOT invent phases that don't match the skill's template**
|
|
61
|
+
- 🔴 **Do NOT reorder phases from the skill's defined sequence**
|
|
62
|
+
- 🔴 **Always verify material existence** — directory existing ≠ phase completed
|
|
63
|
+
- 🔴 **BREAK placement** — keep exactly where the skill template places them
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-timestamp-convention
|
|
3
|
+
description: "Task directory naming conventions — timestamp format (local timezone) AND name content guidelines. Name must be self-explanatory: <system/domain>-<deliverable-type> not generic terms."
|
|
4
|
+
version: 1.1.0
|
|
5
|
+
author: Personal Suite
|
|
6
|
+
license: MIT
|
|
7
|
+
category: software-development
|
|
8
|
+
platforms: [linux, macos]
|
|
9
|
+
metadata:
|
|
10
|
+
hermes:
|
|
11
|
+
tags:
|
|
12
|
+
- task
|
|
13
|
+
- naming
|
|
14
|
+
- convention
|
|
15
|
+
- timestamp
|
|
16
|
+
- directory
|
|
17
|
+
relations:
|
|
18
|
+
- type: used_in_workflow
|
|
19
|
+
target: task-framework
|
|
20
|
+
properties:
|
|
21
|
+
reason: "Called during every task_create"
|
|
22
|
+
strength: strong
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Task Naming Conventions
|
|
26
|
+
|
|
27
|
+
Two aspects: **timestamp format** and **name content**.
|
|
28
|
+
|
|
29
|
+
## 1. Timestamp: Local Timezone
|
|
30
|
+
|
|
31
|
+
When creating task directories, the timestamp must use **local time** (UTC+8), **not UTC**.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# ✅ CORRECT — local timezone
|
|
35
|
+
TS=$(date +"%Y%m%d-%H%M%S")
|
|
36
|
+
|
|
37
|
+
# ❌ WRONG — UTC (off by 8 hours)
|
|
38
|
+
TS=$(date -u +"%Y%m%d-%H%M%S")
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 2. Name: Self-Explanatory Content
|
|
42
|
+
|
|
43
|
+
The task name (after the timestamp) must describe **what system/domain** and **what deliverable type**. Generic terms like "architecture-diagram", "analysis", "research" alone are not acceptable.
|
|
44
|
+
|
|
45
|
+
### Pattern
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
<system-or-domain>-<deliverable-type>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Good vs Bad Examples
|
|
52
|
+
|
|
53
|
+
| ❌ Bad (too generic) | ✅ Good (self-explanatory) |
|
|
54
|
+
|---------------------|--------------------------|
|
|
55
|
+
| `system-architecture-diagram` | `personal-suite-troupe-architecture` |
|
|
56
|
+
| `api-design` | `eir-health-data-api-design` |
|
|
57
|
+
| `bug-fix` | `user-service-login-500-error-fix` |
|
|
58
|
+
| `code-review` | `heart-health-backend-PR-42-review` |
|
|
59
|
+
| `research` | `memory-retrieval-trigger-mechanisms-research` |
|
|
60
|
+
|
|
61
|
+
### Why
|
|
62
|
+
|
|
63
|
+
Task names appear in `tasks/` directory listing, `tasks/README.md` index, and kanban cards. A name like `system-architecture-diagram` could mean any system — the agent and user must click into TASK.md to understand what task it is.
|
|
64
|
+
|
|
65
|
+
### Exceptions
|
|
66
|
+
|
|
67
|
+
Simple one-off actions that live in the task root for <24h may use short names. Anything expected to persist longer must follow the pattern above.
|
|
68
|
+
|
|
69
|
+
## 3. Related
|
|
70
|
+
|
|
71
|
+
- task-framework — parent skill governing task creation lifecycle
|
|
72
|
+
- workflow-conditional-branching — decision-fork pattern for multi-phase tasks
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-tracker
|
|
3
|
+
description: "任务跟踪回写 — 更新 TASK.md checkbox、追加 TASK_MEMORY.md、刷新索引。接收通用参数,隐藏 task-framework 内部约定"
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: Hermes Agent
|
|
6
|
+
license: MIT
|
|
7
|
+
category: software-development
|
|
8
|
+
tags: [task, tracking, task-framework, checklist, memory]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Task Tracker
|
|
12
|
+
|
|
13
|
+
## 定位
|
|
14
|
+
|
|
15
|
+
`task-tracker` 是任务层的 bookkeeping skill。它知道 task-framework 的内部约定(TASK.md checkbox 格式、TASK_MEMORY.md 追加格式、索引更新),对外暴露简单的参数接口。
|
|
16
|
+
|
|
17
|
+
角色不需要知道 task-framework 的任何细节——它们只需要加载 `task-tracker` 并传入参数。
|
|
18
|
+
|
|
19
|
+
## 参数
|
|
20
|
+
|
|
21
|
+
| 参数 | 必须 | 类型 | 说明 |
|
|
22
|
+
|------|------|------|------|
|
|
23
|
+
| `task_dir` | ✅ | path | TASK.md 所在目录的绝对路径 |
|
|
24
|
+
| `phase` | ✅ | string | 当前完成的 phase 标识,如 `Phase 0: scrutiny-pipeline` |
|
|
25
|
+
| `executor` | ✅ | string | 执行者名称,如 `scrutaris` |
|
|
26
|
+
| `findings` | ❌ | list | 关键发现行 |
|
|
27
|
+
| `outputs` | ❌ | list | 产出文件路径(相对 task_dir) |
|
|
28
|
+
| `next` | ❌ | string | 后续 phase |
|
|
29
|
+
|
|
30
|
+
## 执行步骤
|
|
31
|
+
|
|
32
|
+
1. 读取 `TASK.md`
|
|
33
|
+
2. 找到包含 `<phase>` 文本的 `- [ ]` 行,改为 `- [x]`
|
|
34
|
+
3. 在 `TASK_MEMORY.md` 末尾追加记录:
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
## <phase> — <executor>
|
|
38
|
+
|
|
39
|
+
- **执行时间**: <当前时间>
|
|
40
|
+
- **状态**: completed
|
|
41
|
+
- **关键发现**:
|
|
42
|
+
- <finding line 1>
|
|
43
|
+
- <finding line 2>
|
|
44
|
+
- **输出**:
|
|
45
|
+
- `<output file 1>`
|
|
46
|
+
- **下一步**: <next>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
4. 运行 `python3 ~/.hermes/skills/software-development/task-framework/scripts/update-index.py`
|
|
50
|
+
|
|
51
|
+
## 使用示例
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
加载 task-tracker:
|
|
55
|
+
task_dir: /home/hauzer/studio/hermes/tasks/20260709-204723.token-factory-troupe-e957c3
|
|
56
|
+
phase: Phase 0: scrutiny-pipeline
|
|
57
|
+
executor: scrutaris
|
|
58
|
+
findings:
|
|
59
|
+
- 词元供应市场规模 ¥2,426万亿次(2025),+1,603% YoY
|
|
60
|
+
- 硅基流动毛利率 -24%,公有云越卖越亏
|
|
61
|
+
- 推广免费token占销售费用 64.7%
|
|
62
|
+
outputs:
|
|
63
|
+
- output/docs/00-scrutiny-report.md
|
|
64
|
+
next: Phase 1: domain-analysis
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 与 task-framework 的关系
|
|
68
|
+
|
|
69
|
+
`task-tracker` 封装了 task-framework 的以下操作:
|
|
70
|
+
- TASK.md checkbox 格式(`- [ ]` → `- [x]`)
|
|
71
|
+
- TASK_MEMORY.md 追加格式
|
|
72
|
+
- update-index.py 调用
|
|
73
|
+
|
|
74
|
+
task-framework 不需要知道 `task-tracker` 的存在——它只提供 task 容器。`task-tracker` 是独立工具,消费 task-framework 的产出格式。
|
|
75
|
+
|
|
76
|
+
## 与 orchestrator 的关系
|
|
77
|
+
|
|
78
|
+
Orchestrator(stratis/corvan/valros)读取 TASK.md 的 `## Tracking` 段,获取 tracker skill 名和参数定义,注入到每个 phase 的 card body 或 worker brief 中。
|
|
79
|
+
|
|
80
|
+
角色收到 card 后,在工作完成时按 brief 指令加载 `task-tracker` 并传入参数。角色不需要理解 task-framework——它只管传入参数。
|