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,56 @@
|
|
|
1
|
+
hermes_task_framework-1.0.0.dist-info/licenses/LICENSE,sha256=Jn96Lhnfqd-Zr3dFIJhaDlIZJSk-pbfnZ6sGlp0Gv5E,12
|
|
2
|
+
task-framework/__init__.py,sha256=iIU7AEsDdPDA3Z00IUtTdQpvAIs-dfUVeuy39i0apcc,106
|
|
3
|
+
task-framework/skills/task-external-repos-pattern/SKILL.md,sha256=zkqca4rRKNJvutWdmjRNKkkU818zSZA4T-bu9rye62E,6801
|
|
4
|
+
task-framework/skills/task-framework/CHANGELOG.md,sha256=9HV918pwSPfSxeH-sNze_zURIEgiPkWd3XwNKsUiVXQ,2813
|
|
5
|
+
task-framework/skills/task-framework/SKILL.md,sha256=VQsMHQB5dHhFTJxEI0MFN_AI_csKxouUxCFRDxckGQs,59358
|
|
6
|
+
task-framework/skills/task-framework/docs/TASKS.md,sha256=yl7pLAuCu05ZI6pT2GgPTYtnhD9H-KHys-vwjLYf3EQ,247
|
|
7
|
+
task-framework/skills/task-framework/docs/architecture.dot,sha256=yr5tGKPSgDpeL_viVycrH7TMs1jaxzYgfzcXIDCE2LI,2501
|
|
8
|
+
task-framework/skills/task-framework/docs/architecture.svg,sha256=aRQXRp6lx4X3hRim3pMwRPyThtr3KvDaB53QDJI07xM,13338
|
|
9
|
+
task-framework/skills/task-framework/docs/product-requirements.md,sha256=tPE3b-U_N3y5Adt0MA-kiyBmGjAuNNbN7ZkC07NodFg,2503
|
|
10
|
+
task-framework/skills/task-framework/references/auto-runner.md,sha256=A_74uGInSLf1YCJQT0fjSo9uTGIaMJlYdznidJXejJc,1033
|
|
11
|
+
task-framework/skills/task-framework/references/document-analysis-workflow.md,sha256=1ty_SchUfesBfaJxxz5U0ypJy63NItlwlIdsPCnm5Oo,3626
|
|
12
|
+
task-framework/skills/task-framework/references/file-safety-lesson.md,sha256=uggKmSrMKQVeIZDsllTjCbUsF0AahpV6O-Se3GxNzxU,1601
|
|
13
|
+
task-framework/skills/task-framework/references/generating-output-documents.md,sha256=Z8Jez4HidnpTloMefu7i5mXaJQFbyRM_rMfYXa3QKqM,7659
|
|
14
|
+
task-framework/skills/task-framework/references/policy-time-metadata.md,sha256=WRiZU7tRVJZJDrW6vGkcGAPgShQxOkNoxnax16y6zhg,5419
|
|
15
|
+
task-framework/skills/task-framework/references/research-workflow.md,sha256=prIYtexEZC-U7gRL94ZS-dRZtEDZBstgBGnEjU8gaR4,8687
|
|
16
|
+
task-framework/skills/task-framework/references/task-format-validation.md,sha256=TsvjU5digDJvDa40mnhkFFSawLjaKpz-7PlwhfVn0HI,2051
|
|
17
|
+
task-framework/skills/task-framework/references/task-hash-naming.md,sha256=HZZTyubpW-ZYeTkbyVEBi3LVX47usItTvDrWbSbuGq8,1627
|
|
18
|
+
task-framework/skills/task-framework/references/task-lifecycle-example.md,sha256=7PcV2c1YsL7D8WbQr513f7o95lbktIXWjkDvY1GVFr0,2912
|
|
19
|
+
task-framework/skills/task-framework/references/task-overview-discovery.md,sha256=Gbj8G8CKd85yWRoNJqGXt-8IsIC-9GRciTJwClPx6Nw,1048
|
|
20
|
+
task-framework/skills/task-framework/references/composites/code-review-session.md,sha256=9Too_8V_Ik55LAEDRFz00ac_JE07Md05gtKPTLSWi6c,1170
|
|
21
|
+
task-framework/skills/task-framework/references/composites/research.md,sha256=wkXmBjzBhEzV9_y3MR5JYpY8RfxKj1ypuTXdVnlbg3Y,1657
|
|
22
|
+
task-framework/skills/task-framework/references/composites/software-dev.md,sha256=E4CJBG-Bq5g5oqSKOg11FBG4bMTrYe5xhFYv14nlhXU,1937
|
|
23
|
+
task-framework/skills/task-framework/references/operations/code-write.md,sha256=OH1QJmgws9B-XC83MAZvLBdufm4Bv27tLGYtNIzcKDY,999
|
|
24
|
+
task-framework/skills/task-framework/references/operations/document-write.md,sha256=82WPoVCGhNQLZo5guXYseC9wF9UmxmHx_q97paTlcN0,9052
|
|
25
|
+
task-framework/skills/task-framework/references/operations/info-search.md,sha256=MECf9YvhPzyA91BlAfDLxUzJsXMwh-H4ODIF-KeMzMY,899
|
|
26
|
+
task-framework/skills/task-framework/references/operations/web-research.md,sha256=1OgdBDB8e5Db0727hgez-AIAH96tivUG-uUpyS3nlSs,2083
|
|
27
|
+
task-framework/skills/task-framework/references/task-types/analysis.md,sha256=QZ_ZSvvNED8UOJzIpkk1PZdxxzD9S5mxmt7cMNTp0R0,1754
|
|
28
|
+
task-framework/skills/task-framework/references/task-types/external-audit.md,sha256=rfFfKr4Iy8fwqT76ko8fiVmCC8PWj1EYthkp0zA9GYI,1837
|
|
29
|
+
task-framework/skills/task-framework/references/task-types/video-production-pipeline.md,sha256=yX9qH2-D9yknWJzs4CFk_V6ZONUJSNNb_7as68XVo5I,2602
|
|
30
|
+
task-framework/skills/task-framework/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
task-framework/skills/task-framework/scripts/convert_md_to_pdf.py,sha256=I1IvcbsrZZUC2ZkFS0nkUg3OZobBreVHd8awDEq9Pmo,7484
|
|
32
|
+
task-framework/skills/task-framework/scripts/manage_task.py,sha256=84dKT4gTRd9GTyBxWjDLtdj9w49RVPwP0qdQjeZCpOw,15188
|
|
33
|
+
task-framework/skills/task-framework/scripts/task-runner.sh,sha256=0wufNOxYENaG0Sur_PVX48IrwaDmYlgikt_8hvMeCis,1150
|
|
34
|
+
task-framework/skills/task-framework/scripts/task_ref.py,sha256=2YSJDhn6Cs9xljCEDZ4rRz5oiGxUo13HgFkJQTv1vIw,4543
|
|
35
|
+
task-framework/skills/task-framework/scripts/update-index.py,sha256=2Tig0daMeF8yH-AKKc2GtFkW1qjKvtB_-4gXHykyJMs,11511
|
|
36
|
+
task-framework/skills/task-framework/scripts/__pycache__/manage_task.cpython-312.pyc,sha256=5uvqjCLpzanci-Oev1Kb8rBPGkfvpmlW5fwkuh3g1UI,30792
|
|
37
|
+
task-framework/skills/task-framework/scripts/__pycache__/task_ref.cpython-312.pyc,sha256=AecKc7WlbrKwIWdgH_RK2xuT6BS4gnTXwxgi_s8sH28,7296
|
|
38
|
+
task-framework/skills/task-framework/scripts/__pycache__/update-index.cpython-311.pyc,sha256=DRmFkw4-cKoiYhTMUM_bokDbYi6aP745RxQo95qKsvg,16747
|
|
39
|
+
task-framework/skills/task-framework/scripts/__pycache__/update-index.cpython-312.pyc,sha256=9CU7YcNQbfKNA-kqq5mqyrSqZTGoKZBib4Iw64pMME4,14093
|
|
40
|
+
task-framework/skills/task-framework/templates/TASK.md,sha256=exoGdz4Hu1152N8h7mxzf01ZhKATx31sLyPep8Bel1Y,4405
|
|
41
|
+
task-framework/skills/task-framework/templates/TASK_MEMORY.md,sha256=rhgGXhSaaGupb2nCIAPMUJW4htFaxylaApA-N8oXGUY,931
|
|
42
|
+
task-framework/skills/task-framework/templates/run.py,sha256=9aInTqRJ_AEhu9mt7rCjekVZx9aYyQn5mVTa_VFgG2E,5098
|
|
43
|
+
task-framework/skills/task-lifecycle-edge-cases/SKILL.md,sha256=nZ8Q_HVF0yDgzxDLKIc0LjxSnRnUB5KZlzgyFtAwCyE,4127
|
|
44
|
+
task-framework/skills/task-lifecycle-edge-cases/references/task-5d5a1a-recovery-example.md,sha256=aHoSMp3H2qkePcNtHTzdBhLImByDTkVvBoOVErxB4kE,3003
|
|
45
|
+
task-framework/skills/task-lifecycle-portability/SKILL.md,sha256=DzKHG1ajU3zAaMHeTFjz_5WZ9fHlkpMLZfHY0ImlmY4,6415
|
|
46
|
+
task-framework/skills/task-lifecycle-portability/references/design-session-20260611.md,sha256=kvB_smqqhvsHCxawmZXJbOCNlvfSww5d48_Y6qXrkzI,1670
|
|
47
|
+
task-framework/skills/task-lifecycle-portability/references/output-model-design.md,sha256=nbdU-yhBFak2xAvjRuJN9TaF6mMkzUwDqJ5XcIsQ2vI,1784
|
|
48
|
+
task-framework/skills/task-lifecycle-portability/references/pipeline-output-transition.md,sha256=3y_x0Z9BxFmrVkmVjQUr7hE4oj599PRdSfwAAmYmZFM,1775
|
|
49
|
+
task-framework/skills/task-lifecycle-portability/references/task-recovery-5d5a1a-example.md,sha256=NpYe_KA3vOtmW46573TXV4V5XWdMy8BeIezGR-zRA8Q,1665
|
|
50
|
+
task-framework/skills/task-lifecycle-portability/references/task-recovery-procedure.md,sha256=NmA9l4nn0NJC3pxV-Tzwd_50WxbsSaizn0FzFuiQYDQ,2774
|
|
51
|
+
task-framework/skills/task-timestamp-convention/SKILL.md,sha256=iMDDxjSN0_XA3ntu58CtztxXEdq3tKMLcL0nn6JO1mw,2285
|
|
52
|
+
task-framework/skills/task-tracker/SKILL.md,sha256=OPR3MEW9va34Qhqr3dvPwGT8G0sQJgWEYWg0TOjH678,2807
|
|
53
|
+
hermes_task_framework-1.0.0.dist-info/METADATA,sha256=YIVHxt5_oKFlkc17Vltc_mSTm1ghfQRGX-h3XdbqVjM,193
|
|
54
|
+
hermes_task_framework-1.0.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
55
|
+
hermes_task_framework-1.0.0.dist-info/top_level.txt,sha256=0-tkqYC6jGwG_YA5m3ax21fYIo6c7DVw4mQmR1ISl9c,15
|
|
56
|
+
hermes_task_framework-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
MIT License
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
task-framework
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-external-repos-pattern
|
|
3
|
+
description: "Documentation for the repos/ directory pattern — cloning external git repos into a task for analysis, audit, or code extraction. Defines cleanup semantics, directory structure, and pitfall avoidance."
|
|
4
|
+
author: Hermes Agent
|
|
5
|
+
license: MIT
|
|
6
|
+
category: software-development
|
|
7
|
+
tags: [task, repos, git, clone, analysis, external]
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# External Repositories in Tasks (repos/ Pattern)
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
When a task needs to clone one or more external git repositories for analysis, auditing, or code extraction. Common scenarios:
|
|
16
|
+
|
|
17
|
+
- **Research task** — clone a list of repos from an awesome-list to study their structure
|
|
18
|
+
- **Audit task** — clone a repo to analyze its codebase, commit history, or architecture
|
|
19
|
+
- **Integration task** — clone dependencies to understand their API surface
|
|
20
|
+
- **Migration tasks** — clone source repos as input material for migration scripts
|
|
21
|
+
|
|
22
|
+
## Directory Convention
|
|
23
|
+
|
|
24
|
+
Place cloned repos in a top-level `repos/` directory inside the task:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
tasks/<ts>.<name>-<hash6>/
|
|
28
|
+
├── input/ ← inbox source files (PDFs, REQUIREMENTS.md)
|
|
29
|
+
├── output/ ← generated files (reports, docs, logs)
|
|
30
|
+
│ ├── docs/
|
|
31
|
+
│ └── logs/
|
|
32
|
+
├── repos/ ← *** cloned external git repos ***
|
|
33
|
+
│ ├── repo-name-1/
|
|
34
|
+
│ ├── repo-name-2/
|
|
35
|
+
│ └── ...
|
|
36
|
+
├── scripts/
|
|
37
|
+
├── TASK.md
|
|
38
|
+
├── README.md
|
|
39
|
+
└── .hermes-task.json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Semantics: repos/ vs input/ vs output/
|
|
43
|
+
|
|
44
|
+
| Directory | Nature | `task_reset --hard` | Example content |
|
|
45
|
+
|-----------|--------|---------------------|-----------------|
|
|
46
|
+
| `input/` | Source materials (copied from inbox) | ❌ Never deleted | PDFs, REQUIREMENTS.md, images |
|
|
47
|
+
| `output/` | Generated artifacts | ✅ **Deleted** | Reports, logs, compiled files |
|
|
48
|
+
| `repos/` | External git clones (not inbox, not generated) | ❌ Never deleted | Cloned `.git/` trees |
|
|
49
|
+
|
|
50
|
+
**Key rule:** `repos/` is treated like `input/` — never deleted by cleanup operations. When `scripts/clean.sh` exists in the task, it explicitly declares `repos/` as PRESERVED. When no clean.sh exists, `task_reset --hard` still only touches `output/`, so repos/ survives regardless — but adding an explicit clean.sh makes the intent auditable.
|
|
51
|
+
|
|
52
|
+
## How to Add repos/ to a Task
|
|
53
|
+
|
|
54
|
+
During task creation:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
mkdir -p tasks/<ts>.<name>-<hash6>/{input,output/docs,output/logs,repos,scripts}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Clone each target repo into `repos/`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
cd tasks/<ts>.<name>-<hash6>/repos
|
|
64
|
+
git clone https://github.com/owner/repo-name.git
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
For large repos where full history isn't needed:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
git clone --depth 1 https://github.com/owner/repo-name.git
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## How to Reference repos in TASK.md
|
|
74
|
+
|
|
75
|
+
In the Data Flow table:
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
## Data Flow
|
|
79
|
+
|
|
80
|
+
| 文件 | 来源 | 用途 | 格式说明 |
|
|
81
|
+
|------|------|------|---------|
|
|
82
|
+
| `repos/owner-repo/README.md` | 外部克隆 | 分析项目结构 | 标准 markdown |
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
In the checklist:
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
- [ ] Phase 2 — Clone repos to repos/
|
|
89
|
+
- [ ] Phase 3 — Analyze repos/ structure
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Cleanup Considerations
|
|
93
|
+
|
|
94
|
+
- `repos/` is NOT cleaned by `task_reset --hard`. To reclone (stale repos), do so manually or via a dedicated Phase.
|
|
95
|
+
- Cloned repos retain their `.git/` directories — `git pull` is sufficient to update without a full reclone.
|
|
96
|
+
- Add a `## 环境要求` note to TASK.md for large repos that consume significant disk space.
|
|
97
|
+
|
|
98
|
+
## Pitfalls
|
|
99
|
+
|
|
100
|
+
- **Don't put cloned repos in `output/`** — they'd be wiped by `task_reset --hard`, losing `.git/` history and requiring a full reclone.
|
|
101
|
+
- **Don't put them in `input/`** — `input/` is for inbox-sourced files (PDFs, REQUIREMENTS.md). Cloned repos are a different category.
|
|
102
|
+
- **Beware submodules** — use `git clone --recursive` if the repo uses submodules; expect larger clones.
|
|
103
|
+
- **Disk space** — for massive repos (OSSU CS at GBs, dotnet docs), consider `--depth 1` shallow clone unless full history is needed.
|
|
104
|
+
- **Path length on Windows/WSL** — very deep paths in cloned repos may cause issues under WSL. Keep task names short enough.
|
|
105
|
+
|
|
106
|
+
## Relation to Task-Framework
|
|
107
|
+
|
|
108
|
+
This pattern extends the `task-framework` skill's directory structure. The `task-framework` SKILL.md now lists `repos/` in its canonical directory tree and documents the `scripts/clean.sh` custom cleanup mechanism.
|
|
109
|
+
|
|
110
|
+
For `task_reset --hard` semantics: `repos/` is never deleted by cleanup operations (same as `input/`). Custom `clean.sh` scripts can further refine which directories to protect.
|
|
111
|
+
|
|
112
|
+
## Kanban Escalation: Multi-Repo Tasks → Kanban
|
|
113
|
+
|
|
114
|
+
When a task involves **multiple independent external repos** (e.g. cloning 5+ repos from an awesome-list for study), the work typically decomposes into parallel workstreams. The user's convention is **one kanban card per task-framework task** (not one card per sub-operation):
|
|
115
|
+
|
|
116
|
+
User signal: *"一个 clone 任务创建一个 card"* / *"这是多个任务了,放到 default 看板里"*
|
|
117
|
+
|
|
118
|
+
**Right approach:**
|
|
119
|
+
1. Create a single task-framework task with its own `repos/` directory
|
|
120
|
+
2. Create one kanban card for that task, `--workspace dir:<task-path>`
|
|
121
|
+
3. Update the bridge db.yaml to map task hash ↔ card id
|
|
122
|
+
|
|
123
|
+
**Wrong approach:**
|
|
124
|
+
- Creating one kanban card per individual sub-repo
|
|
125
|
+
- Mixing unrelated work into one card
|
|
126
|
+
|
|
127
|
+
See also: `kanban-orchestrator` skill for decomposition playbook, `kanban-bridge` for task ↔ card mapping.
|
|
128
|
+
|
|
129
|
+
## Custom Clean Methods (Implemented)
|
|
130
|
+
|
|
131
|
+
Each task can protect sensitive directories from cleanup via a `scripts/clean.sh` script:
|
|
132
|
+
|
|
133
|
+
**查找顺序(由 `task_reset --hard` 执行):**
|
|
134
|
+
1. 检查 `tasks/<ts>.<name>-<hash6>/scripts/clean.sh` — 存在则执行它(替代默认行为)
|
|
135
|
+
2. 不存在 → 回退到默认 `rm -rf output/`
|
|
136
|
+
|
|
137
|
+
**clean.sh 模板:**
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
#!/usr/bin/env bash
|
|
141
|
+
set -euo pipefail
|
|
142
|
+
TASK_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
143
|
+
|
|
144
|
+
# 明确声明要保留的路径
|
|
145
|
+
echo "[clean] repos/ — PRESERVED (cloned repos)"
|
|
146
|
+
echo "[clean] input/ — PRESERVED (source materials)"
|
|
147
|
+
|
|
148
|
+
# 只清理 output/
|
|
149
|
+
rm -rf "$TASK_DIR/output"
|
|
150
|
+
mkdir -p "$TASK_DIR/output"/{docs,logs}
|
|
151
|
+
echo "[clean] output/ cleaned"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**设计原则:**
|
|
155
|
+
- clean.sh 只控制"删什么不删什么",不修改 TASK.md 或状态
|
|
156
|
+
- 输出中列出保留路径方便审计
|
|
157
|
+
- 没有 clean.sh 时回退到默认行为,不破坏现有任务
|
|
158
|
+
|
|
159
|
+
**本 task 的 clean.sh 示例路径:**
|
|
160
|
+
`tasks/20260615-213922.awesome-obsidian-vaults-cc6b3b/scripts/clean.sh`
|
|
161
|
+
该脚本保护 `repos/`、`input/`,只清理 `output/`。
|
|
162
|
+
|
|
163
|
+
**Framework 集成状态:**
|
|
164
|
+
- `task-framework` SKILL.md 已更新,记录了 clean.sh 查找顺序和模板(`~/hermes/skills/software-development/task-framework/SKILL.md` 的 Task Directory Structure 章节)
|
|
165
|
+
- `analysis` task-type 生命周期文档也加了自定义清理的提示
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Changelog — task-framework
|
|
2
|
+
|
|
3
|
+
## 2026-06-06
|
|
4
|
+
|
|
5
|
+
- feat: hash-based task_view — search by hash, name glob fallback (92b838d)
|
|
6
|
+
- feat: scripts layout — task-runner.sh, task_ref.py with ref: resolution + cycle detection (92b838d)
|
|
7
|
+
- feat: TASK_MEMORY.md template — per-task memory with append-only log format (92b838d, 435f85d)
|
|
8
|
+
- fix: browser-screen-record-task scripts/ path alignment (927124f)
|
|
9
|
+
- feat: venv management — auto uv venv + pip install per task (927124f)
|
|
10
|
+
|
|
11
|
+
## 2026-06-05
|
|
12
|
+
|
|
13
|
+
- feat: timeline chart preview — Phase 3 generate_timeline_chart() shows text bar chart before compositing (c1c0b24)
|
|
14
|
+
- refactor: phase dir naming — name-hash6/ instead of phase_NN_name-hash6/ (f3adf22)
|
|
15
|
+
- refactor: hash naming — random 6-char hash instead of sequential naming (f4adfb5)
|
|
16
|
+
- feat: inbox REQUIREMENTS.md — human-only input file, task-framework never modifies (723c68b)
|
|
17
|
+
- refactor: skill architecture — generic utils/ in scripts/, skill-local .venv, script generation pattern (26e1383)
|
|
18
|
+
- feat: TASK.md validation — pre-execution format check, no auto-fix, ask first (2d24006)
|
|
19
|
+
- feat: personal/standards symlink support (3ed3c85)
|
|
20
|
+
- feat: phase isolation directories for cross-skill composite tasks (05ab115)
|
|
21
|
+
- docs: timestamp conversion — separate .mmm and .mmmmmm sections (14b7a68)
|
|
22
|
+
- feat: Data Flow table — links files to format docs in composite task templates (7de9fcb)
|
|
23
|
+
- feat: composite task model — parallel execution (和 Phase X 同步进行), dependency waits (等待 Phase X 完成) (17a7d26)
|
|
24
|
+
- feat: cross-skill composite task support — Skills section, dependency resolution (658c4bc)
|
|
25
|
+
- fix: no-placeholder-guessing rule — never fill task placeholders from conversation (78b0388)
|
|
26
|
+
- fix: English-only commit messages in quality-gate (78b0388)
|
|
27
|
+
- feat: failed status — task_setstatus supports failed/completed/cancelled/paused
|
|
28
|
+
- feat: task_reset — reset checkboxes, clear logs/docs, re-enable re-execution
|
|
29
|
+
- refactor: four-doc split — PRD + product design + TRD + tech design document-write ref
|
|
30
|
+
|
|
31
|
+
## 2026-06-04
|
|
32
|
+
|
|
33
|
+
- fix: document-write references — update to four-doc split
|
|
34
|
+
- fix: PROJECT_STRUCTURE.md — tasks path ~/tasks/ → ~/studio/hermes/tasks/
|
|
35
|
+
|
|
36
|
+
## 2026-06-03
|
|
37
|
+
|
|
38
|
+
- feat: initial task-framework skill
|
|
39
|
+
- Three-layer model: Methodology / Container / Tooling
|
|
40
|
+
- Operation catalog: info-search, code-write, paper-reproduce, document-write, code-review, data-analysis
|
|
41
|
+
- Composite patterns: software-dev, research, code-review-session
|
|
42
|
+
- Task directory structure: tasks/<ts>.<name>-<hash6>/ with TASK.md, README.md, logs/, docs/, scripts/
|
|
43
|
+
- Task lifecycle: task_create, task_view, task_list, task_setstatus, task_inbox, task_inbox_accept, task_inbox_decline, task_run, task_submit, task_reset
|
|
44
|
+
- Execution strategies: Inline / Script / Subagent / Cron
|
|
45
|
+
- Merge from project-tasks skill
|