flower-trellis 0.5.0-beta.4 → 0.5.0-beta.6

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.
Files changed (21) hide show
  1. package/enhancements/0.6/overrides/bundles/intent-routing.json +4 -1
  2. package/enhancements/0.6/overrides/conflicts.json +75 -0
  3. package/enhancements/0.6/overrides/patches/scripts/task-start-brief-gate/guard-content.py +2 -0
  4. package/enhancements/0.6/overrides/patches/scripts/task-start-brief-gate/guard-selector.py +1 -0
  5. package/enhancements/0.6/overrides/patches/scripts/task-start-brief-gate/helper-content.py +59 -0
  6. package/enhancements/0.6/overrides/patches/scripts/task-start-brief-gate/helper-selector.py +3 -0
  7. package/enhancements/0.6/overrides/patches/scripts/task-start-brief-gate/patch.json +23 -0
  8. package/enhancements/0.6/overrides/patches/skills/trellis-brainstorm/planning-handoff/content.md +5 -0
  9. package/enhancements/0.6/overrides/patches/skills/trellis-brainstorm/planning-handoff/patch.json +57 -0
  10. package/enhancements/0.6/overrides/patches/skills/trellis-brainstorm/planning-handoff/quality-bar-baseline.md +13 -0
  11. package/enhancements/0.6/overrides/patches/skills/trellis-brainstorm/planning-handoff/readiness-content.md +3 -0
  12. package/enhancements/0.6/overrides/patches/skills/trellis-brainstorm/planning-handoff/readiness-selector.md +3 -0
  13. package/enhancements/0.6/overrides/patches/workflow/hub/content.md +26 -9
  14. package/enhancements/0.6/overrides/patches/workflow/intent-routing/request-triage/content.md +2 -1
  15. package/enhancements/0.6/overrides/patches/workflow/state-no-task/content.md +1 -0
  16. package/enhancements/0.6/overrides/patches/workflow/task-brief-review/patch.json +13 -0
  17. package/enhancements/0.6/overrides/patches/workflow/task-brief-review/phase-1-activate-baseline.md +13 -0
  18. package/enhancements/0.6/overrides/patches/workflow/task-brief-review/phase-1-activate-content.md +13 -0
  19. package/enhancements/MANIFEST.json +16 -3
  20. package/package.json +3 -3
  21. package/src/commands/self-update.js +1 -1
@@ -6,6 +6,7 @@
6
6
  "patches": [
7
7
  "workflow/hub",
8
8
  "workflow/phase-ownership",
9
+ "workflow/task-brief-review",
9
10
  "workflow/state-no-task",
10
11
  "workflow/state-missing-task",
11
12
  "workflow/runtime-contract-reference",
@@ -25,6 +26,8 @@
25
26
  "hooks/claude-session-start/missing-task-routing",
26
27
  "skills/trellis-start/no-task-routing",
27
28
  "skills/trellis-brainstorm/planning-authorization",
28
- "skills/trellis-brainstorm/auto-task-create"
29
+ "skills/trellis-brainstorm/auto-task-create",
30
+ "skills/trellis-brainstorm/planning-handoff",
31
+ "scripts/task-start-brief-gate"
29
32
  ]
30
33
  }
@@ -104,6 +104,81 @@
104
104
  "owner": "workflow-phase-ownership",
105
105
  "reason": "Phase 3.3/3.4 的受管 section 必须保留到权威 Skill 的一跳入口。"
106
106
  },
107
+ {
108
+ "id": "workflow-required-task-brief-review",
109
+ "severity": "error",
110
+ "target": ".trellis/workflow.md",
111
+ "whenOperations": [
112
+ "workflow-phase-1-activate"
113
+ ],
114
+ "assertion": {
115
+ "type": "required-literal",
116
+ "values": [
117
+ "<!-- BEGIN skill-garden patch workflow-phase-1-activate v0.6 -->\n#### 1.4 Activate task `[required · once]`\n\nBefore changing task status, load `trellis-task-brief`",
118
+ "display the full brief in chat, then stop the current turn and wait for planning review confirmation"
119
+ ]
120
+ },
121
+ "owner": "trellis-task-brief",
122
+ "reason": "Phase 1.4 必须自包含 brief 展示、停止和后续确认门禁。"
123
+ },
124
+ {
125
+ "id": "brainstorm-required-planning-handoff",
126
+ "severity": "error",
127
+ "target": ".agents/skills/trellis-brainstorm/SKILL.md",
128
+ "whenOperations": [
129
+ "brainstorm-planning-handoff",
130
+ "brainstorm-planning-readiness"
131
+ ],
132
+ "assertion": {
133
+ "type": "required-literal",
134
+ "values": [
135
+ "<!-- BEGIN skill-garden patch brainstorm-planning-handoff v0.6 -->\n## Planning Handoff",
136
+ "<!-- BEGIN skill-garden patch brainstorm-planning-readiness v0.6 -->\n- Planning artifacts are ready for the final brief handoff.",
137
+ "Implementation intent expressed before the final artifacts and full brief are shown authorizes planning only"
138
+ ]
139
+ },
140
+ "owner": "trellis-brainstorm",
141
+ "reason": "Brainstorm 收尾必须交给 task brief review,不能复用早期实现意向。"
142
+ },
143
+ {
144
+ "id": "brainstorm-required-planning-handoff-claude",
145
+ "severity": "error",
146
+ "target": ".claude/skills/trellis-brainstorm/SKILL.md",
147
+ "whenOperations": [
148
+ "brainstorm-planning-handoff",
149
+ "brainstorm-planning-readiness"
150
+ ],
151
+ "assertion": {
152
+ "type": "required-literal",
153
+ "values": [
154
+ "<!-- BEGIN skill-garden patch brainstorm-planning-handoff v0.6 -->\n## Planning Handoff",
155
+ "<!-- BEGIN skill-garden patch brainstorm-planning-readiness v0.6 -->\n- Planning artifacts are ready for the final brief handoff.",
156
+ "Implementation intent expressed before the final artifacts and full brief are shown authorizes planning only"
157
+ ]
158
+ },
159
+ "owner": "trellis-brainstorm",
160
+ "reason": "Claude 的 Brainstorm 最终入口必须保留相同 planning handoff。"
161
+ },
162
+ {
163
+ "id": "task-start-required-brief-gate",
164
+ "severity": "error",
165
+ "target": ".trellis/scripts/task.py",
166
+ "whenOperations": [
167
+ "task-start-brief-validator",
168
+ "task-start-brief-guard"
169
+ ],
170
+ "assertion": {
171
+ "type": "required-literal",
172
+ "values": [
173
+ "# BEGIN skill-garden patch task-start-brief-validator v0.6",
174
+ "# BEGIN skill-garden patch task-start-brief-guard v0.6",
175
+ "Error: Planning task brief.md is missing.",
176
+ "Error: Planning task brief.md is stale; newer artifacts:"
177
+ ]
178
+ },
179
+ "owner": "task-start-brief-gate",
180
+ "reason": "planning → in_progress 前必须确定性阻断缺失或过期 brief。"
181
+ },
107
182
  {
108
183
  "id": "workflow-no-covering-language",
109
184
  "severity": "error",
@@ -0,0 +1,2 @@
1
+ if not _validate_planning_brief(full_path, task_json_path):
2
+ return 1
@@ -0,0 +1 @@
1
+ task_json_path = full_path / FILE_TASK_JSON
@@ -0,0 +1,59 @@
1
+ def _validate_planning_brief(full_path, task_json_path) -> bool:
2
+ """Validate that a planning task has a fresh derived brief before start.
3
+
4
+ Args:
5
+ full_path: Absolute task directory path.
6
+ task_json_path: Absolute path to the task metadata file.
7
+
8
+ Returns:
9
+ True when start may continue, otherwise False.
10
+ """
11
+ try:
12
+ task_json_exists = task_json_path.is_file()
13
+ except OSError as error:
14
+ print(colored(f"Error: Unable to validate planning task status: {error}", Colors.RED))
15
+ print("Hint: Fix task metadata access before retrying task.py start.")
16
+ return False
17
+
18
+ if not task_json_exists:
19
+ return True
20
+
21
+ data = read_json(task_json_path)
22
+ if not data:
23
+ print(colored("Error: Unable to read task status for brief validation.", Colors.RED))
24
+ print("Hint: Fix task.json before retrying task.py start.")
25
+ return False
26
+ if data.get("status") != "planning":
27
+ return True
28
+
29
+ brief_path = full_path / "brief.md"
30
+ try:
31
+ if not brief_path.is_file():
32
+ print(colored("Error: Planning task brief.md is missing.", Colors.RED))
33
+ print("Hint: Run trellis-task-brief, display the full brief, and wait for user confirmation before retrying task.py start.")
34
+ return False
35
+ brief_mtime = brief_path.stat().st_mtime_ns
36
+ authoritative_paths = [
37
+ full_path / name
38
+ for name in ("prd.md", "design.md", "implement.md")
39
+ if (full_path / name).is_file()
40
+ ]
41
+ stale_sources = [
42
+ path.name
43
+ for path in authoritative_paths
44
+ if path.stat().st_mtime_ns > brief_mtime
45
+ ]
46
+ except OSError as error:
47
+ print(colored(f"Error: Unable to validate planning brief freshness: {error}", Colors.RED))
48
+ print("Hint: Fix task artifact access, then refresh and review brief.md before retrying task.py start.")
49
+ return False
50
+
51
+ if stale_sources:
52
+ print(colored(
53
+ f"Error: Planning task brief.md is stale; newer artifacts: {', '.join(stale_sources)}.",
54
+ Colors.RED,
55
+ ))
56
+ print("Hint: Run trellis-task-brief, display the refreshed brief, and wait for user confirmation before retrying task.py start.")
57
+ return False
58
+
59
+ return True
@@ -0,0 +1,3 @@
1
+ # =============================================================================
2
+ # Command: start / finish
3
+ # =============================================================================
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "id": "task-start-brief-gate",
4
+ "purpose": "planning_review",
5
+ "operations": [
6
+ {
7
+ "id": "task-start-brief-validator",
8
+ "operation": "insert",
9
+ "position": "after",
10
+ "targets": [{ "kind": "file", "path": ".trellis/scripts/task.py", "missing": "error", "markerStyle": "hash" }],
11
+ "selector": { "type": "literal", "source": "helper-selector.py" },
12
+ "content": { "source": "helper-content.py" }
13
+ },
14
+ {
15
+ "id": "task-start-brief-guard",
16
+ "operation": "insert",
17
+ "position": "after",
18
+ "targets": [{ "kind": "file", "path": ".trellis/scripts/task.py", "missing": "error", "markerStyle": "hash" }],
19
+ "selector": { "type": "literal", "source": "guard-selector.py" },
20
+ "content": { "source": "guard-content.py" }
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,5 @@
1
+ ## Planning Handoff
2
+
3
+ Once the Quality Bar is satisfied, load `trellis-task-brief`, refresh `brief.md` from the final planning artifacts, display the full brief in chat, and end the current turn. Wait for the user's planning review confirmation before running `task.py start` or beginning implementation.
4
+
5
+ Implementation intent expressed before the final artifacts and full brief are shown authorizes planning only; it cannot be reused as the final review confirmation.
@@ -0,0 +1,57 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "id": "brainstorm-planning-handoff",
4
+ "purpose": "planning_review",
5
+ "operations": [
6
+ {
7
+ "id": "brainstorm-planning-handoff",
8
+ "operation": "insert",
9
+ "position": "after",
10
+ "targets": [
11
+ { "kind": "skill", "path": ".agent/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
12
+ { "kind": "skill", "path": ".agents/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
13
+ { "kind": "skill", "path": ".claude/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
14
+ { "kind": "skill", "path": ".codebuddy/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
15
+ { "kind": "skill", "path": ".cursor/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
16
+ { "kind": "skill", "path": ".devin/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
17
+ { "kind": "skill", "path": ".factory/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
18
+ { "kind": "skill", "path": ".github/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
19
+ { "kind": "skill", "path": ".kilocode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
20
+ { "kind": "skill", "path": ".kiro/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
21
+ { "kind": "skill", "path": ".opencode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
22
+ { "kind": "skill", "path": ".pi/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
23
+ { "kind": "skill", "path": ".qoder/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
24
+ { "kind": "skill", "path": ".reasonix/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
25
+ { "kind": "skill", "path": ".trae/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
26
+ { "kind": "skill", "path": ".zcode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" }
27
+ ],
28
+ "selector": { "type": "markdown-section", "heading": "## Quality Bar" },
29
+ "baselines": ["quality-bar-baseline.md"],
30
+ "content": { "source": "content.md" }
31
+ },
32
+ {
33
+ "id": "brainstorm-planning-readiness",
34
+ "operation": "replace",
35
+ "targets": [
36
+ { "kind": "skill", "path": ".agent/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
37
+ { "kind": "skill", "path": ".agents/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
38
+ { "kind": "skill", "path": ".claude/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
39
+ { "kind": "skill", "path": ".codebuddy/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
40
+ { "kind": "skill", "path": ".cursor/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
41
+ { "kind": "skill", "path": ".devin/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
42
+ { "kind": "skill", "path": ".factory/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
43
+ { "kind": "skill", "path": ".github/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
44
+ { "kind": "skill", "path": ".kilocode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
45
+ { "kind": "skill", "path": ".kiro/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
46
+ { "kind": "skill", "path": ".opencode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
47
+ { "kind": "skill", "path": ".pi/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
48
+ { "kind": "skill", "path": ".qoder/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
49
+ { "kind": "skill", "path": ".reasonix/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
50
+ { "kind": "skill", "path": ".trae/skills/trellis-brainstorm/SKILL.md", "missing": "skip" },
51
+ { "kind": "skill", "path": ".zcode/skills/trellis-brainstorm/SKILL.md", "missing": "skip" }
52
+ ],
53
+ "selector": { "type": "literal", "source": "readiness-selector.md" },
54
+ "content": { "source": "readiness-content.md" }
55
+ }
56
+ ]
57
+ }
@@ -0,0 +1,13 @@
1
+ ## Quality Bar
2
+
3
+ Before declaring planning ready:
4
+
5
+ - `prd.md` contains testable acceptance criteria.
6
+ - `prd.md` has passed the PRD convergence pass: no unresolved temporary brainstorm sections, no duplicate facts across sections, and no lost anchors, decisions, or acceptance mappings.
7
+ - Repository-answerable questions have already been answered through inspection.
8
+ - Remaining open questions are genuinely about user intent or scope.
9
+ - Complex tasks have `design.md` and `implement.md`.
10
+ - Sub-agent-dispatch tasks have real curated entries in both `implement.jsonl` and `check.jsonl`; seed-only manifests are not ready.
11
+ - The user has reviewed the final planning artifacts or explicitly approved proceeding.
12
+
13
+ Do not start implementation until the user approves or asks for implementation.
@@ -0,0 +1,3 @@
1
+ - Planning artifacts are ready for the final brief handoff.
2
+
3
+ Planning readiness does not authorize `task.py start` or implementation.
@@ -0,0 +1,3 @@
1
+ - The user has reviewed the final planning artifacts or explicitly approved proceeding.
2
+
3
+ Do not start implementation until the user approves or asks for implementation.
@@ -13,6 +13,16 @@ For a new request, infer `discuss`, `inspect`, `direct_edit`, `task_plan`, or
13
13
  active-task state, and the latest explicit switch. High-confidence reversible
14
14
  steps proceed without a mechanical task-creation question.
15
15
 
16
+ Repair authorization and permission to skip task planning are separate. If the
17
+ repair scope is unknown, use `inspect` first and reclassify from evidence before
18
+ editing.
19
+
20
+ `direct_edit` requires known, bounded, local, low-risk, reversible scope and
21
+ simple validation. Permission/authentication/data-scope/security, shared
22
+ contracts, cross-package/layer or multi-entry behavior, database/migration/
23
+ configuration/release/external effects, historical regressions, systematic
24
+ validation, or unknown scope are `task_plan` signals.
25
+
16
26
  Clear complex implementation intent authorizes creating a planning task and
17
27
  entering `trellis-brainstorm`; it never authorizes `task.py start` or
18
28
  implementation. Ask one focused question only when ambiguity changes material
@@ -23,6 +33,10 @@ route silently; entering untracked `direct_edit`, creating/resuming a task, or
23
33
  switching intent gets one non-blocking status line. New unrelated requests
24
34
  return to automatic inference instead of inheriting a session-wide mode.
25
35
 
36
+ Selecting a repair (`fix item 1`, `change that`, `修一下`, `改一下`) is not a
37
+ no-task switch. Only an explicit current-request workflow instruction such as
38
+ `直接做` / `不要任务` may override automatic `task_plan`.
39
+
26
40
  If the latest switch leaves an auto-created planning task for untracked work,
27
41
  run `task_intent.py discard --task <current-task>` before changing route. Proceed
28
42
  only when it returns `status=discarded`; otherwise retain the task and report its
@@ -36,6 +50,14 @@ structured blocker. Never force-delete or silently leave a dormant planning task
36
50
 
37
51
  Before `task.py start`, unclear scope, unresolved decisions, or non-testable acceptance criteria must return to `trellis-brainstorm`.
38
52
 
53
+ #### Task Brief Handoff
54
+
55
+ Before Phase 1.4, use `trellis-task-brief` to refresh `<task>/brief.md`, display it in full, and wait for user confirmation before `task.py start`.
56
+
57
+ Implementation intent before that handoff authorizes planning only, not review confirmation.
58
+
59
+ `brief.md` is derived; `prd.md` / `design.md` / `implement.md` remain authoritative.
60
+
39
61
  #### Project Knowledge Discovery
40
62
 
41
63
  Before choosing an approach for non-trivial project work, run project knowledge
@@ -58,19 +80,14 @@ If nothing matches, continue normally. Skip pure Q&A, simple read-only inspectio
58
80
  opening local tools, or trivial edits unless project conventions or local SOPs may
59
81
  change the approach.
60
82
 
61
- #### Task Brief Handoff
62
-
63
- Before Phase 1.4 `task.py start`, use `trellis-task-brief` to refresh `<task>/brief.md` from latest task artifacts, display it in chat, and wait for user confirmation.
64
-
65
- `brief.md` is derived; `prd.md` / `design.md` / `implement.md` remain authoritative.
66
-
67
- Before the first implement route, restate existing `<task>/brief.md` in chat. If missing, read task artifacts and suggest backfilling brief; do not invent one from memory.
68
-
69
83
  #### Flower Update Confirmation
70
84
 
71
85
  If `<flower-update>` has `priority: blocking_confirmation_required`, handle it first: briefly show `release_notes` when present, show `recommended_command`, and ask before running it.
72
86
 
73
- If `<flower-update-result>` requests `run_trellis_push_confirmation`, enter `trellis-push` planning with update changes as default candidates; still require file-list and commit-message confirmation.
87
+ If `<flower-update-result>` requests `run_trellis_push_confirmation`, load and follow
88
+ `trellis-push` before any Git inspection or plan; never replace it with a hand-written
89
+ Git summary. Use update changes as default candidates and wait for file-list and
90
+ commit-message confirmation.
74
91
 
75
92
  #### Active Task Scope Guard
76
93
 
@@ -1,4 +1,5 @@
1
1
  - Infer `discuss`, `inspect`, `direct_edit`, `task_plan`, or `workflow_action` from the current request, its scope, risk, side effects, active-task state, and the latest explicit switch. Do not classify from one keyword alone.
2
+ - For repairs, inspect unknown scope before applying the hub's `direct_edit` / `task_plan` boundary.
2
3
  - High-confidence reversible steps proceed without a mechanical task-creation question. Explicit complex implementation intent authorizes creating a planning task and entering `trellis-brainstorm`; it does not authorize `task.py start` or implementation.
3
4
  - Ask one question only when ambiguity changes material side effects, or when destructive, production, database, credential, external-system, or permission boundaries require confirmation.
4
- - The latest explicit `走任务` / `不要任务` / `先讨论` / `直接做` / `先别做` style instruction wins for the current request. New unrelated requests return to automatic inference.
5
+ - The current explicit workflow switch wins; repair selection does not. Unrelated requests reset inference.
@@ -1,3 +1,4 @@
1
1
  No active task. Infer the current request intent before acting.
2
+ Repair intent alone is not a no-task switch; inspect unknown scope and reclassify before edits.
2
3
  Handle `discuss` and `inspect` silently. For `workflow_action`, load the named Trellis capability directly. For non-destructive `direct_edit`, state once that task/progress will not be recorded and proceed.
3
4
  For high-confidence complex implementation, create an auto-routed planning task through `task_intent.py create`, show one non-blocking switch hint, and enter `trellis-brainstorm`. Ask only for material ambiguity or independent safety gates.
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "id": "workflow-task-brief-review",
4
+ "purpose": "planning_review",
5
+ "operations": [{
6
+ "id": "workflow-phase-1-activate",
7
+ "operation": "replace",
8
+ "targets": [{ "kind": "workflow", "path": ".trellis/workflow.md", "missing": "error" }],
9
+ "selector": { "type": "markdown-section", "heading": "#### 1.4 Activate task `[required · once]`" },
10
+ "baselines": ["phase-1-activate-baseline.md"],
11
+ "content": { "source": "phase-1-activate-content.md" }
12
+ }]
13
+ }
@@ -0,0 +1,13 @@
1
+ #### 1.4 Activate task `[required · once]`
2
+
3
+ After artifact review, flip the task status to `in_progress`:
4
+
5
+ ```bash
6
+ python3 ./.trellis/scripts/task.py start <task-dir>
7
+ ```
8
+
9
+ For lightweight tasks, `prd.md` can be enough. For complex tasks, `prd.md`, `design.md`, and `implement.md` must exist and be reviewed before start. On sub-agent-dispatch platforms, `implement.jsonl` and `check.jsonl` must both have real curated entries before start. Runtime consumers tolerate missing or seed-only manifests for compatibility, but that tolerance is not a planning-ready state.
10
+
11
+ After this command succeeds, the breadcrumb auto-switches to `[workflow-state:in_progress]`, and the rest of Phase 2 / 3 follows.
12
+
13
+ If `task.py start` errors with a session-identity message (no context key from hook input, `TRELLIS_CONTEXT_ID`, or platform-native session env), follow the hint in the error to set up session identity, then retry.
@@ -0,0 +1,13 @@
1
+ #### 1.4 Activate task `[required · once]`
2
+
3
+ Before changing task status, load `trellis-task-brief`, refresh `<task>/brief.md`, display the full brief in chat, then stop the current turn and wait for planning review confirmation. Earlier implementation intent is not confirmation.
4
+
5
+ Lightweight tasks need `prd.md`; complex tasks also need `design.md` and `implement.md`. Sub-agent routes require real entries in both JSONL manifests.
6
+
7
+ Only after the user confirms the displayed brief in a later message, run:
8
+
9
+ ```bash
10
+ python3 ./.trellis/scripts/task.py start <task-dir>
11
+ ```
12
+
13
+ If start rejects a missing or stale brief, repeat the brief handoff. Follow any session-identity hint; after success, enter `trellis-route(target=implement)`.
@@ -1,7 +1,7 @@
1
1
  {
2
- "syncedAt": "2026-07-20T00:48:18.573Z",
2
+ "syncedAt": "2026-07-22T08:28:47.363Z",
3
3
  "syncedFrom": "vendor/skill-garden",
4
- "sourceCommit": "6ff1dcbcfa9164ab7239374af1071fffe648437e",
4
+ "sourceCommit": "6396573a9fb6776b326286390d41040ecdf4adcf",
5
5
  "common": {
6
6
  "codexSkills": [
7
7
  "craft-rpa",
@@ -147,12 +147,22 @@
147
147
  "hooks/inject-workflow-state/shared-runtime/content.py",
148
148
  "hooks/inject-workflow-state/shared-runtime/patch.json",
149
149
  "hooks/inject-workflow-state/shared-runtime/selector.py",
150
+ "scripts/task-start-brief-gate/guard-content.py",
151
+ "scripts/task-start-brief-gate/guard-selector.py",
152
+ "scripts/task-start-brief-gate/helper-content.py",
153
+ "scripts/task-start-brief-gate/helper-selector.py",
154
+ "scripts/task-start-brief-gate/patch.json",
150
155
  "skills/trellis-brainstorm/auto-task-create/content.md",
151
156
  "skills/trellis-brainstorm/auto-task-create/patch.json",
152
157
  "skills/trellis-brainstorm/auto-task-create/selector.md",
153
158
  "skills/trellis-brainstorm/planning-authorization/content.md",
154
159
  "skills/trellis-brainstorm/planning-authorization/patch.json",
155
160
  "skills/trellis-brainstorm/planning-authorization/selector.md",
161
+ "skills/trellis-brainstorm/planning-handoff/content.md",
162
+ "skills/trellis-brainstorm/planning-handoff/patch.json",
163
+ "skills/trellis-brainstorm/planning-handoff/quality-bar-baseline.md",
164
+ "skills/trellis-brainstorm/planning-handoff/readiness-content.md",
165
+ "skills/trellis-brainstorm/planning-handoff/readiness-selector.md",
156
166
  "skills/trellis-finish-work/exact-bookkeeping/baseline-agent.md",
157
167
  "skills/trellis-finish-work/exact-bookkeeping/baseline-command.md",
158
168
  "skills/trellis-finish-work/exact-bookkeeping/content.md",
@@ -221,7 +231,10 @@
221
231
  "workflow/states-planning/patch.json",
222
232
  "workflow/states-planning/planning-baseline.md",
223
233
  "workflow/states-planning/planning-inline-baseline.md",
224
- "workflow/states-planning/subagent-content.md"
234
+ "workflow/states-planning/subagent-content.md",
235
+ "workflow/task-brief-review/patch.json",
236
+ "workflow/task-brief-review/phase-1-activate-baseline.md",
237
+ "workflow/task-brief-review/phase-1-activate-content.md"
225
238
  ],
226
239
  "bundles": [
227
240
  "finish-work.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flower-trellis",
3
- "version": "0.5.0-beta.4",
3
+ "version": "0.5.0-beta.6",
4
4
  "description": "一键安装/升级 Trellis 并自动融合 skill-garden 强化包(默认 Claude + agents)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -61,9 +61,9 @@
61
61
  "commit-and-tag-version": "^12.7.3"
62
62
  },
63
63
  "flowerReleaseNotes": {
64
- "version": "0.5.0-beta.4",
64
+ "version": "0.5.0-beta.6",
65
65
  "source": "CHANGELOG.md",
66
- "body": "### 🐛 修复 Bug Fixes\n\n* **enhancements:** 补齐 session fallback 清理 ([b3884cb](https://github.com/SilentFlower/flower-trellis/commit/b3884cb9e3fac25ef504bbee722333f2d3d98c0e))",
66
+ "body": "### 🐛 修复 Bug Fixes\n\n* **update:** 防止升级后绕过 trellis-push ([8a34b91](https://github.com/SilentFlower/flower-trellis/commit/8a34b91aa381c73ee56b9ba5bed960778ba2bbd3))\n* **workflow:** 强制任务 brief 确认门禁 ([7750c62](https://github.com/SilentFlower/flower-trellis/commit/7750c62417cabdf519e249deae147e1ec0ec14ac))",
67
67
  "truncated": false
68
68
  }
69
69
  }
@@ -200,6 +200,6 @@ export async function selfUpdate(ctx) {
200
200
  post_action: "run_trellis_push_confirmation",
201
201
  release_notes: check.releaseNotes || null,
202
202
  ai_instruction:
203
- "汇总本次升级产生的文件变动,进入 trellis-push 执行计划,展示具体文件列表和 commit message 后等待用户确认。",
203
+ "必须先加载并遵循 `trellis-push`,不得用自行 Git 检查或手写计划替代;以本次升级变动为默认候选,展示文件列表和 commit message 后等待确认。",
204
204
  });
205
205
  }