create-yss-spec 2.1.9 → 2.1.10
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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/cli.js +82 -15
- package/template/.agents/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.agents/skills/domain-modeling/SKILL.md +1 -1
- package/template/.agents/skills/grilling/SKILL.md +7 -1
- package/template/.agents/skills/triage/SKILL.md +2 -2
- package/template/.agents/skills/wait-what/SKILL.md +2 -2
- package/template/.agents/skills/wayfinder/SKILL.md +1 -1
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.claude/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.claude/skills/domain-modeling/SKILL.md +1 -1
- package/template/.claude/skills/grilling/SKILL.md +7 -1
- package/template/.claude/skills/triage/SKILL.md +2 -2
- package/template/.claude/skills/wait-what/SKILL.md +2 -2
- package/template/.claude/skills/wayfinder/SKILL.md +1 -1
- package/template/.claude/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.codex/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.codex/skills/domain-modeling/SKILL.md +1 -1
- package/template/.codex/skills/grilling/SKILL.md +7 -1
- package/template/.codex/skills/triage/SKILL.md +2 -2
- package/template/.codex/skills/wait-what/SKILL.md +2 -2
- package/template/.codex/skills/wayfinder/SKILL.md +1 -1
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.hermes/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.hermes/skills/domain-modeling/SKILL.md +1 -1
- package/template/.hermes/skills/grilling/SKILL.md +7 -1
- package/template/.hermes/skills/triage/SKILL.md +2 -2
- package/template/.hermes/skills/wait-what/SKILL.md +2 -2
- package/template/.hermes/skills/wayfinder/SKILL.md +1 -1
- package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.pi/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.pi/skills/domain-modeling/SKILL.md +1 -1
- package/template/.pi/skills/grilling/SKILL.md +7 -1
- package/template/.pi/skills/triage/SKILL.md +2 -2
- package/template/.pi/skills/wait-what/SKILL.md +2 -2
- package/template/.pi/skills/wayfinder/SKILL.md +1 -1
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.qoder/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.qoder/skills/domain-modeling/SKILL.md +1 -1
- package/template/.qoder/skills/grilling/SKILL.md +7 -1
- package/template/.qoder/skills/triage/SKILL.md +2 -2
- package/template/.qoder/skills/wait-what/SKILL.md +2 -2
- package/template/.qoder/skills/wayfinder/SKILL.md +1 -1
- package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/.trae/skills/diagnosing-bugs/SKILL.md +2 -4
- package/template/.trae/skills/domain-modeling/SKILL.md +1 -1
- package/template/.trae/skills/grilling/SKILL.md +7 -1
- package/template/.trae/skills/triage/SKILL.md +2 -2
- package/template/.trae/skills/wait-what/SKILL.md +2 -2
- package/template/.trae/skills/wayfinder/SKILL.md +1 -1
- package/template/.trae/skills/yss-product-lifecycle/SKILL.md +43 -91
- package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +7 -5
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +88 -22
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +5 -4
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +4 -1
- package/template/AGENTS.md +2 -2
- package/template/CONTEXT.md +7 -1
- package/template/docs/adr/0007-lifecycle-native-work-units.md +5 -0
- package/template/docs/agents/skills-maintenance.md +11 -3
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -1
- package/template/docs/process/lifecycle-artifact-map.md +19 -15
- package/template/docs/process/lifecycle-registry-baseline.json +15 -1
- package/template/docs/process/lifecycle-registry.yaml +77 -0
- package/template/docs/process/schemas/frontend-implementation-evidence.schema.json +39 -0
- package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +56 -0
- package/template/docs/process/schemas/lifecycle-registry.schema.json +2 -2
- package/template/docs/process/templates/frontend-implementation-plan-template.yaml +16 -0
- package/template/docs/process/templates/frontend-implementation-verification-template.yaml +21 -0
- package/template/docs/process/templates/lifecycle-checkpoint-template.yaml +30 -0
- package/template/docs/process/templates/stage-checkpoint-template.md +9 -5
- package/template/scripts/lib/lifecycle-registry.mjs +9 -4
- package/template/scripts/lib/scenario-checks.mjs +37 -15
- package/template/scripts/lib/skill-supply-chain.mjs +33 -8
- package/template/scripts/verify-frontend-implementation-evidence +51 -0
- package/template/scripts/verify-lifecycle-checkpoint +37 -0
- package/template/scripts/verify-template +5 -2
- package/template/scripts/verify-upstream-skill-source +32 -0
- package/template/skills-lock.json +105 -55
- package/template.manifest.json +12 -0
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.agents/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.claude/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.claude/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.codex/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.codex/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.hermes/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.hermes/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.pi/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.pi/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.qoder/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.qoder/skills/batch-grill-me/agents/openai.yaml +0 -5
- package/template/.trae/skills/batch-grill-me/SKILL.md +0 -15
- package/template/.trae/skills/batch-grill-me/agents/openai.yaml +0 -5
package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml
CHANGED
|
@@ -92,41 +92,79 @@ workflow_execution_result:
|
|
|
92
92
|
completed_requires_no_blocking_signals: true
|
|
93
93
|
workflow_reference:
|
|
94
94
|
required: [source, skill, invocation_mode]
|
|
95
|
-
|
|
95
|
+
allowed_sources: [yss-product-lifecycle, mattpocock/skills]
|
|
96
96
|
|
|
97
97
|
# Matt user-invoked skills remain explicit user entry points. Lifecycle work units
|
|
98
98
|
# may prepare, validate and accept their results, but cannot invoke them or create
|
|
99
99
|
# their formal artifacts on their behalf.
|
|
100
100
|
matt_invocation_boundary:
|
|
101
|
-
user_invoked_skills: [ask-matt,
|
|
101
|
+
user_invoked_skills: [ask-matt, grill-me, grill-with-docs, handoff, implement, improve-codebase-architecture, loop-me, setup-matt-pocock-skills, setup-ts-deep-modules, teach, to-questionnaire, to-spec, to-tickets, triage, wait-what, wayfinder, writing-beats, writing-fragments, writing-shape]
|
|
102
102
|
lifecycle_managed_user_entries: [setup-matt-pocock-skills, grill-with-docs, to-spec, to-tickets, implement]
|
|
103
|
-
model_invoked_skills: [
|
|
103
|
+
model_invoked_skills: [code-review, codebase-design, diagnosing-bugs, domain-modeling, grilling, migrate-to-shoehorn, prototype, research, resolving-merge-conflicts, scaffold-exercises, setup-pre-commit, tdd, writing-for-agents]
|
|
104
|
+
lifecycle_allowed_model_invoked_skills: [code-review, codebase-design, diagnosing-bugs, domain-modeling, grilling, prototype, research, tdd]
|
|
104
105
|
lifecycle_may_invoke_user_invoked: false
|
|
105
106
|
formal_artifact_owner: explicit-user-entry
|
|
106
|
-
continuous_orchestration: prepare-and-validate-only
|
|
107
|
+
continuous_orchestration: compatibility-prepare-and-validate-only
|
|
107
108
|
direct_user_entry: lifecycle-validate-and-accept
|
|
108
109
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
skill_source_contract:
|
|
111
|
+
lock_version: 3
|
|
112
|
+
source_revisions_required: [mattpocock/skills]
|
|
113
|
+
adaptation_ref_required_when_effective_diff: true
|
|
114
|
+
retired_shared_skills: [batch-grill-me]
|
|
115
|
+
|
|
116
|
+
# 生命周期默认走原生工作单元;Matt user-invoked skill 仅保留为兼容入口。
|
|
117
|
+
lifecycle_native_entries:
|
|
118
|
+
default_entry: yss-product-lifecycle
|
|
119
|
+
formal_artifact_owner: yss-product-lifecycle
|
|
120
|
+
user_confirmation_required_at: [spec-baseline, prototype-confirmation, openapi-freeze, merge-or-release]
|
|
121
|
+
compatibility_entries:
|
|
122
|
+
to-spec: lifecycle-validate-and-accept
|
|
123
|
+
to-tickets: lifecycle-validate-and-accept
|
|
124
|
+
implement: lifecycle-validate-and-accept
|
|
125
|
+
|
|
126
|
+
work_unit_routes:
|
|
127
|
+
work-unit.discovery-opportunity:
|
|
128
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
129
|
+
skills: [competitive-intelligence, research]
|
|
130
|
+
route_by: {market_or_competitor_fact: competitive-intelligence, technical_or_standard_fact: research, no_external_fact: yss-product-lifecycle}
|
|
131
|
+
work-unit.discovery-requirements:
|
|
132
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
112
133
|
skills: [grilling, domain-modeling]
|
|
113
134
|
work-unit.spec-synthesis:
|
|
114
|
-
|
|
115
|
-
invocation_mode: reference
|
|
116
|
-
|
|
135
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
136
|
+
compatibility: {source: mattpocock/skills, skill: to-spec, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
|
|
137
|
+
skills: [domain-modeling]
|
|
138
|
+
human_gate: spec-baseline
|
|
139
|
+
work-unit.prototype-design:
|
|
140
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
141
|
+
skills: [yss-design-system, yss-prototype-stage, product-design:index]
|
|
142
|
+
human_gate: prototype-confirmation
|
|
143
|
+
work-unit.technical-analysis:
|
|
144
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
145
|
+
skills: [yss-openapi-governance, yss-openapi-draft-review, codebase-design, implementation-repo-onboarding, yss-router]
|
|
146
|
+
human_gate: openapi-freeze_if_api_impact
|
|
117
147
|
work-unit.ticket-decomposition:
|
|
118
|
-
|
|
119
|
-
invocation_mode: reference
|
|
120
|
-
|
|
148
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
149
|
+
compatibility: {source: mattpocock/skills, skill: to-tickets, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
|
|
150
|
+
skills: [yss-router]
|
|
121
151
|
work-unit.slice-implementation:
|
|
122
|
-
|
|
123
|
-
invocation_mode: reference
|
|
124
|
-
|
|
152
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
153
|
+
compatibility: {source: mattpocock/skills, skill: implement, invocation_mode: reference, formal_artifact_owner: explicit-user-entry}
|
|
154
|
+
skills: [tdd, yss-router, yss-ui, yss-page-module-development]
|
|
155
|
+
work-unit.frontend-implementation-verification:
|
|
156
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
157
|
+
skills: [yss-ui, yss-design-system, code-review]
|
|
158
|
+
applies_when: ui_impact
|
|
125
159
|
work-unit.code-review:
|
|
126
|
-
invocation_mode: model-invoked
|
|
127
|
-
|
|
160
|
+
native: {source: yss-product-lifecycle, skill: code-review, invocation_mode: model-invoked}
|
|
161
|
+
skills: [code-review]
|
|
162
|
+
work-unit.release-and-retrospective:
|
|
163
|
+
native: {source: yss-product-lifecycle, skill: yss-product-lifecycle, invocation_mode: model-invoked}
|
|
164
|
+
skills: [yss-product-lifecycle]
|
|
165
|
+
human_gate: merge_or_release
|
|
128
166
|
|
|
129
|
-
|
|
167
|
+
compatibility_flow_preconditions:
|
|
130
168
|
to-spec:
|
|
131
169
|
required: [grill_exit, no_unresolved_runnable_blocker]
|
|
132
170
|
evidence: [user_problem, mvp_and_non_goals, success_criteria, test_seam, terminology_review]
|
|
@@ -136,7 +174,7 @@ flow_preconditions:
|
|
|
136
174
|
output: vertical-slice-tickets
|
|
137
175
|
output_role: ready-for-human
|
|
138
176
|
implement:
|
|
139
|
-
required: [ready_for_agent, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied]
|
|
177
|
+
required: [ready_for_agent, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
|
|
140
178
|
applies_to_single_session: true
|
|
141
179
|
|
|
142
180
|
grill_exit:
|
|
@@ -159,6 +197,9 @@ review_input:
|
|
|
159
197
|
schema_version: 1
|
|
160
198
|
required: [review_mode, review_base_ref, implementation_candidate_ref, candidate_snapshot_ref, candidate_digest, spec_ref, ticket_ref, slice_contract_ref, build_architecture_checklist_ref, yss_execution_result_refs]
|
|
161
199
|
nullable: [spec_ref]
|
|
200
|
+
axes: [standards, spec, ui_fidelity_if_ui_impact]
|
|
201
|
+
repair_invalidates_candidate: true
|
|
202
|
+
repair_action: recapture_candidate_and_rerun_all_axes
|
|
162
203
|
modes: [committed, worktree]
|
|
163
204
|
committed:
|
|
164
205
|
candidate_ref: HEAD
|
|
@@ -328,14 +369,39 @@ setup_readiness:
|
|
|
328
369
|
|
|
329
370
|
lifecycle_owned_work_units: [release, retrospective]
|
|
330
371
|
lifecycle_work_unit_requirements:
|
|
331
|
-
release: [fresh_verification, release_or_rollback_evidence, independent_review]
|
|
372
|
+
release: [fresh_verification, release_or_rollback_evidence, independent_review, all_triggered_gates_approved_or_not_applicable]
|
|
332
373
|
retrospective: [fresh_verification, retrospective_record, governance_reflow_decision]
|
|
333
374
|
|
|
375
|
+
release_readiness:
|
|
376
|
+
required: [fresh_verification, release_or_rollback_evidence, independent_review, all_triggered_gates_approved_or_not_applicable]
|
|
377
|
+
conditional:
|
|
378
|
+
ui_impact: [gate.frontend-implementation-verified, evidence.frontend-implementation-verification]
|
|
379
|
+
blocked_when: [triggered_gate_blocked, triggered_gate_stale, triggered_gate_not_evaluated, missing_evidence]
|
|
380
|
+
|
|
334
381
|
wayfinder_completion:
|
|
335
382
|
required: [no_open_children, no_open_blocked_or_claimed_children, no_fog, destination_clear]
|
|
336
383
|
|
|
337
384
|
ready_for_agent:
|
|
338
|
-
required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied]
|
|
385
|
+
required: [gates_satisfied, no_stale_artifacts, blockers_closed, implementation_context_ready, implementation_repo, implementation_branch, ci, verification_commands, rollback_point, slice_contract_approved, slice_contract_persisted, slice_contract_current_version, build_architecture_checklist, backend_slice_contract_if_applicable, backend_scaffold_policy_satisfied, frontend_implementation_plan_if_ui_impact]
|
|
386
|
+
|
|
387
|
+
frontend_implementation_plan:
|
|
388
|
+
applies_when: [ui_impact]
|
|
389
|
+
required_before: [ready_for_agent]
|
|
390
|
+
required: [prototype_ref, spec_ref, route_and_page_inventory, visual_acceptance_cases, desktop_viewport, narrow_viewport, state_cases, pnpm_commands]
|
|
391
|
+
schema: docs/process/schemas/frontend-implementation-evidence.schema.json
|
|
392
|
+
validator: scripts/verify-frontend-implementation-evidence
|
|
393
|
+
acceptance: [kind_plan, template_false, status_approved, no_template_placeholders, readable_baseline_refs, non_empty_acceptance_cases]
|
|
394
|
+
|
|
395
|
+
frontend_implementation_verification:
|
|
396
|
+
applies_when: [ui_impact]
|
|
397
|
+
required_before: [release]
|
|
398
|
+
required: [prototype_ref, spec_ref, route_and_page_inventory, desktop_visual_evidence, narrow_view_visual_evidence, loading_empty_error_permission_interaction_results, console_warning_check, pnpm_commands, uncovered_differences, difference_owner]
|
|
399
|
+
verification: [actual_command, exit_code, executed_at, evidence_ref]
|
|
400
|
+
schema: docs/process/schemas/frontend-implementation-evidence.schema.json
|
|
401
|
+
validator: scripts/verify-frontend-implementation-evidence
|
|
402
|
+
acceptance: [kind_verification, template_false, status_approved, no_template_placeholders, console_warning_pass, independent_review_approved]
|
|
403
|
+
blocked_when: [unexplained_visual_difference, missing_visual_evidence, typecheck_only, claimed_alignment_without_evidence]
|
|
404
|
+
on_new_impact: [new_impacts, drift, reroute]
|
|
339
405
|
|
|
340
406
|
unknown_impact:
|
|
341
407
|
action: pause
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
2. `setup readiness`:每个任务只执行一次,核对 tracker、五态标签和领域文档布局,并在本轮缓存结果;仅在 tracker、主远端、真实标签或配置变化时重查。
|
|
7
7
|
3. 加载父 Ticket/checkpoint 与真实资产,计算最近可信阶段。
|
|
8
8
|
4. 评估资产、门禁和 `stale`,选择第一个未阻塞工作单元。
|
|
9
|
-
5. 执行最小生命周期工作单元:只实际调用允许的 model-invoked skill
|
|
9
|
+
5. 执行最小生命周期工作单元:只实际调用允许的 model-invoked skill;原生工作单元可直接持有正式资产,Matt 兼容 user-invoked skill 仅作为 workflow reference,仍由用户显式启动。将结果归一化为 `Workflow Execution Result`,验收输出并回写状态与证据。
|
|
10
10
|
6. 若仍在授权和自动推进边界内,回到第 3 步;否则暂停。
|
|
11
11
|
|
|
12
12
|
不要仅输出下一个提示词后结束 `orchestrate`/`resume`。不要因进入业务代码阶段而退出主控;应把实现交给专项 skill,并在返回后继续核验。
|
|
@@ -51,9 +51,9 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
|
|
|
51
51
|
|
|
52
52
|
## Matt flow 进入条件
|
|
53
53
|
|
|
54
|
-
- `work-unit.discovery-
|
|
55
|
-
- `
|
|
56
|
-
-
|
|
54
|
+
- `work-unit.discovery-requirements` 实际调用 `grilling` 和 `domain-modeling`;`work-unit.discovery-opportunity` 按事实类型路由 `competitive-intelligence` 或 `research`。生命周期原生工作单元默认负责 Spec、Ticket 和实现资产;`to-spec`、`to-tickets`、`implement` 仅保留为显式兼容入口,结果必须回交生命周期验收。
|
|
55
|
+
- 原生 `work-unit.ticket-decomposition` 只能在 OpenAPI Freeze 或无 API 影响记录后创建垂直切片,初始角色统一为 `ready-for-human`;生命周期复算完整公式后才能提升 `ready-for-agent`。
|
|
56
|
+
- 原生 `work-unit.slice-implementation` 必须在生命周期批准并持久化 Slice Implementation Contract 和 Build Architecture Checklist 后执行;用户显式 `implement` 仍走兼容入口,不得绕过生命周期。
|
|
57
57
|
- `implement` 遇到 backend `scaffold_status=required` 时,还必须满足原型确认后的脚手架策略:脚手架 Execution Result、`yss-backend-scaffold-parent` 基线、Wrapper 验证和 Router 合同重编译均已回写;否则停在工程基线,不得写业务代码。
|
|
58
58
|
- `Workflow Execution Result` 出现 `drift`、`new_impacts`、`stale_candidates`、`violation`、`missing_evidence`、空 `evidence_refs` 或缺少必需字段时暂停当前工作单元;旧结果只能先经只读兼容 adapter 归一化。
|
|
59
59
|
|
|
@@ -63,6 +63,7 @@ tracker 选择和冲突按 `docs/agents/issue-tracker.md` 裁决:已持久化
|
|
|
63
63
|
- 小改动和中等变更可由同一独立执行者完成 `code-review` 与 fresh verification,并在同一报告中分别记录 findings、命令、结果和残余风险。
|
|
64
64
|
- 该执行者必须独立于实现者;新模块、高风险变更、职责冲突或需双人控制时,Reviewer 与 Verifier 分开。
|
|
65
65
|
- `code-review` 是唯一默认代码审查 skill。GitLab、CI、Sonar、Alibaba Java 等治理事实作为仓库规则或专项检查输入,不再叠加第二个通用审查 skill。
|
|
66
|
+
- UI 影响切片将 `UI fidelity` 作为 `code-review` 的条件第三轴;任何修复都会使候选摘要失效,必须重新捕获候选并重跑 Standards、Spec、UI fidelity 和 fresh verification。
|
|
66
67
|
|
|
67
68
|
## Git 授权
|
|
68
69
|
|
|
@@ -46,10 +46,13 @@ AND 当前工作单元消费的 contract_id/version 与最新批准版本一致
|
|
|
46
46
|
AND Backend Slice Implementation Contract(后端适用)和 Build Architecture Checklist 已完成
|
|
47
47
|
AND backend 影响且 scaffold_status=required 时,原型确认后的脚手架策略、`yss-backend-scaffold-parent` 基线、Wrapper 验证和 Router 重编译均已完成
|
|
48
48
|
AND 所有后续生成代码均绑定主 YSS skill、依赖闭包、允许写路径、预期证据和 YSS Skill Execution Result
|
|
49
|
+
AND UI 影响切片的前端实现还原计划已通过 schema 校验、`template=false`、`status=approved`,且基线引用可读取
|
|
49
50
|
```
|
|
50
51
|
|
|
51
52
|
父 Ticket、Spec、设计、原型、OpenAPI Draft、wayfinder map 和 decision ticket 不得使用 `ready-for-agent`。
|
|
52
53
|
|
|
54
|
+
发布前还必须满足所有已触发门禁均为 `approved` 或 `not-applicable`;UI 影响切片必须额外通过 `gate.frontend-implementation-verified`,不能只凭 fresh verification 和回滚点放行。
|
|
55
|
+
|
|
53
56
|
用户显式运行 `to-tickets` 后,垂直切片初始角色固定为 `ready-for-human`。只有 `yss-product-lifecycle` 复算上述公式全部为真后,才能把它提升为 `ready-for-agent`;生命周期不会自动调用 `to-tickets`,其默认标签也不参与该裁决。
|
|
54
57
|
|
|
55
58
|
## Review 与 Git 授权状态
|
|
@@ -60,7 +63,7 @@ Git 动作分别保存 `commit_authorized`、`commit_scope`、`commit_authorizat
|
|
|
60
63
|
|
|
61
64
|
## 状态块
|
|
62
65
|
|
|
63
|
-
状态块位于主 tracker 的功能父 Ticket
|
|
66
|
+
状态块位于主 tracker 的功能父 Ticket,并使用 `docs/process/templates/lifecycle-checkpoint-template.yaml` 的结构化形状和 `lifecycle-checkpoint.schema.json` 校验;Local Markdown 使用 `docs/.scratch/<feature>/parent-ticket.md`,可将完整 checkpoint 保存在 `docs/.scratch/<feature>/gates/lifecycle-checkpoint.yaml` 后由父 Ticket 引用,远程 tracker 使用 Issue 并在本地功能包保留引用。平台不可用时才位于 stage checkpoint。只保存索引、状态、引用和因果关系:
|
|
64
67
|
|
|
65
68
|
```yaml
|
|
66
69
|
lifecycle:
|
|
@@ -127,7 +127,7 @@ If a correct seam exists:
|
|
|
127
127
|
4. Watch it pass.
|
|
128
128
|
5. Re-run the Phase 1 feedback loop against the original (un-minimised) scenario.
|
|
129
129
|
|
|
130
|
-
## Phase 6 — Cleanup
|
|
130
|
+
## Phase 6 — Cleanup
|
|
131
131
|
|
|
132
132
|
Required before declaring done:
|
|
133
133
|
|
|
@@ -135,6 +135,4 @@ Required before declaring done:
|
|
|
135
135
|
- [ ] Regression test passes (or absence of seam is documented)
|
|
136
136
|
- [ ] All `[DEBUG-...]` instrumentation removed (`grep` the prefix)
|
|
137
137
|
- [ ] Throwaway prototypes deleted (or moved to a clearly-marked debug location)
|
|
138
|
-
- [ ] The hypothesis that turned out correct is stated in the commit / PR message
|
|
139
|
-
|
|
140
|
-
**Then ask: what would have prevented this bug?** If the answer involves architectural change (no good test seam, tangled callers, hidden coupling) hand off to the `/improve-codebase-architecture` skill with the specifics. Make the recommendation **after** the fix is in, not before — you have more information now than when you started.
|
|
138
|
+
- [ ] The hypothesis that turned out correct is stated in the commit / PR message, so the next debugger learns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: domain-modeling
|
|
3
|
-
description: Build and sharpen a project's domain model. Use when
|
|
3
|
+
description: Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a CONTEXT.md, or recording or editing an ADR.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Domain Modeling
|
|
@@ -7,11 +7,17 @@ Interview the user relentlessly until you reach a shared understanding. Map this
|
|
|
7
7
|
|
|
8
8
|
Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled — the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Format a round like so:
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
14
14
|
|
|
15
|
+
➡️ <your recommended answer>
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
|
|
20
|
+
|
|
15
21
|
➡️ <your recommended answer>
|
|
16
22
|
```
|
|
17
23
|
|
|
@@ -40,7 +40,7 @@ For a PR, the same states read against the attached code: `ready-for-agent` mean
|
|
|
40
40
|
|
|
41
41
|
Every triaged issue should carry exactly one category role and one state role. If state roles conflict, flag it and ask the maintainer before doing anything else.
|
|
42
42
|
|
|
43
|
-
These are canonical role names
|
|
43
|
+
These are canonical role names. The actual label strings used in the issue tracker may differ. The mapping should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
|
|
44
44
|
|
|
45
45
|
State transitions: an unlabeled issue normally goes to `needs-triage` first; from there it moves to `needs-info`, `ready-for-agent`, `ready-for-human`, or `wontfix`. `needs-info` returns to `needs-triage` once the reporter replies. The maintainer can override at any time — flag transitions that look unusual and ask before proceeding.
|
|
46
46
|
|
|
@@ -73,7 +73,7 @@ Show counts and a one-line summary per item. Let the maintainer pick.
|
|
|
73
73
|
|
|
74
74
|
3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims — check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.
|
|
75
75
|
|
|
76
|
-
4. **Grill (if needed).** If the request needs fleshing out,
|
|
76
|
+
4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
|
|
77
77
|
|
|
78
78
|
5. **Apply the outcome:**
|
|
79
79
|
- `ready-for-agent` — post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wait-what
|
|
3
|
-
description: Stop. That last message did not land
|
|
3
|
+
description: "Stop. That last message did not land: re-pitch it."
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Wait
|
|
7
|
+
Wait, I don't understand where you've got to here. Re-pitch that: give me a little bit of context, talk in ASD-STE100 Simplified Technical English, and use the ubiquitous language from `CONTEXT.md` (follow `CONTEXT-MAP.md` to the right one if the repo has more than one).
|
|
@@ -22,7 +22,7 @@ The map is a single issue on this repo's issue tracker, labelled `wayfinder:map`
|
|
|
22
22
|
|
|
23
23
|
The map is an **index**, not a store. It lists the decisions made and points at the tickets that hold their detail; a decision lives in exactly one place — its ticket — so the map never restates it, only gists it and links.
|
|
24
24
|
|
|
25
|
-
**Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific.** The issue tracker should have been provided to you
|
|
25
|
+
**Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific.** The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`. Consult the tracker doc's "Wayfinding operations" section for how _this_ repo expresses them. If no tracker has been provided, default to the local-markdown tracker.
|
|
26
26
|
|
|
27
27
|
### The map body
|
|
28
28
|
|
|
@@ -1,97 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yss-product-lifecycle
|
|
3
|
-
description:
|
|
3
|
+
description: 编排 YSS 产品或模块从机会调研到 Spec、原型、技术契约、垂直切片实现、审查、发布和复盘;当阶段、产物、门禁或 YSS skill 不清晰时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# YSS Product Lifecycle
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
1.
|
|
13
|
-
2.
|
|
14
|
-
3. `
|
|
15
|
-
4. `
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- `
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
- Ticket tracker 支持 `local-markdown`、GitHub 和 GitLab;模板默认 `local-markdown`,以 `docs/.scratch/<feature>/` 完整功能包为主载体。Git remote 只代表代码托管,不能覆盖已持久化的 tracker 选择;Local 主 tracker 不要求远程 Ticket。根 `.scratch/` 与 `docs/requirements/tickets/` 只作为旧路径迁移来源。
|
|
51
|
-
- 小改动和中等变更允许同一独立执行者完成 Review 与 fresh verification;该执行者不得是实现者。新模块、高风险或职责冲突时拆分 Reviewer 与 Verifier。
|
|
52
|
-
- 进入 `code-review` 前必须持久化或明确传入 `review_mode`、`review_base_ref`、`candidate_snapshot_ref`、`candidate_digest` 和完整候选引用;`worktree` 模式必须一次捕获 committed、staged、unstaged、untracked,并让两个 Reviewer 消费同一快照,不能用只看 `HEAD` 或实时变化的 diff 宣称已审查。候选 manifest 和 `yss-worktree-candidate-v1` 不可变摘要流以 `orchestration-contract.yaml.review_input` 为唯一机器契约。
|
|
53
|
-
- 实现授权不包含 Git 授权。只有用户分别明确给出值为 `true` 的 `commit_authorized` / `push_authorized`、非空 scope 和对应 `*_authorization_ref` 时才执行动作;缺失时只记录 checkpoint 判断,不得把 `implement`、`orchestrate`、当前分支或负责人要求解释成隐含授权。
|
|
54
|
-
- “然后 commit”“做完提交”等自然语言意向不构成上述结构化 Git 授权,不能据此预授权或事后补齐 scope / authorization ref。
|
|
55
|
-
- 连续自动推进期间累积 Ticket/Git 证据,在人工暂停、handoff、进入实现、合并或发布边界集中 checkpoint;不为每个连续经过的概念阶段重复写同类记录。
|
|
56
|
-
- 跨线程、仓库、原型分支或上下文边界时使用 `handoff` 或等价记录。
|
|
57
|
-
- 在 Matt 阶段边界(phase boundary)先按 `Continue → /clear → /handoff → subagent → /compact` 判断上下文动作;只在 checkpoint 记录可选 `phase_boundary` 证据,不新增生命周期状态。
|
|
58
|
-
- `to-questionnaire` 进入结构化 `external-input-required` 暂停;回答回流后必须重新分类影响面并更新权威资产,不能直接恢复下游实现。
|
|
59
|
-
- `wait-what` 只重新解释当前结论,不改变阶段、门禁、Ticket 或 `ready-for-agent` 状态;Agent 无法替代的人工步骤使用显式人工 checkpoint,秘密值不得进入持久化输出。
|
|
60
|
-
- Matt `prototype` 是保留在 `prototype/<name>` 分支的单文件可分享 HTML 主来源;YSS 高保真 HTML 原型仍必须经过 Prototype Review、AntD CLI、浏览器验证和用户确认,两者不得互相替代。
|
|
61
|
-
- 新工作单元返回 `Workflow Execution Result`;旧 `Matt Skill Result` 仅可兼容读取后归一化。`drift`、`new_impacts`、`violation`、`stale_candidates`、缺失证据或不完整结果不得推进为 `completed`。
|
|
62
|
-
|
|
63
|
-
### 原型完成后的后端脚手架与代码生成边界
|
|
64
|
-
|
|
65
|
-
`prototype_confirmation` 是产品设计门禁,不是业务实现授权。后端新工程的顺序固定为:工程基线 → `yss-router` 编译脚手架合同 draft → 生命周期批准/持久化 → `yss-ddd-scaffold-generator` → `yss-backend-scaffold-parent` → `yss-router` 合同重编译 → 垂直切片实现。
|
|
66
|
-
|
|
67
|
-
- `scaffold_status=required` 时,脚手架工作单元使用 `controlled-generation`,记录项目名、基础包名、输出目录、数据库类型、预期文件和实际 `./mvnw validate`、`./mvnw test`、`./mvnw package` 结果,并返回 YSS Skill Execution Result。
|
|
68
|
-
- 脚手架合同必须结构化记录 `contract_id`、`contract_version`、`slice_id`、Router draft 引用、生命周期批准引用、持久化引用、当前版本、实现仓库、允许写路径、预期证据文件和验证命令;生命周期批准记录至少包含 `approval_ref`、`approver`、`persisted_ref`、`current_version`。
|
|
69
|
-
- `yss-ddd-scaffold-generator` 必须读取已持久化的结构化脚手架合同 JSON,并校验 `status=approved`、当前版本、主 skill、`controlled-generation` 和固定验证命令;只传任意字符串引用不得放行。
|
|
70
|
-
- 生成项目必须包含 `.yss/scaffold-generation.json`,回勾实际使用的合同 ID、版本、Router draft 引用、生命周期批准引用、持久化引用、生成输入、受控模式和固定验证命令;元数据清单缺失或过期时阻断后续 Router。
|
|
71
|
-
- 三条 `./mvnw` 命令必须由受控工作单元真实执行,并记录每条命令的 `exit_code`、`duration_ms`、stdout/stderr 引用和执行时间;生成器打印的命令、输出目录存在或“生成成功”都不构成验证证据。
|
|
72
|
-
- 脚手架只生成多模块工程结构、POM、配置、Wrapper 和经验证的机械模板;不得生成或承载领域规则、状态机、权限、事务、复杂查询、错误映射或用户可见业务行为。
|
|
73
|
-
- 该生命周期脚手架工作单元必须关闭 `--with-example`,不得把 User CRUD 或业务字段伪装成样板;目标目录非空时 `--force` 默认阻断,只有覆盖范围、备份、回滚点和明确批准全部进入合同后才能另行审查。
|
|
74
|
-
- `scaffold_status=existing` 或 `initialized` 时不重复全量生成,但仍须完成 `yss-backend-scaffold-parent` 基线证据、Wrapper 校验和 `yss-router` 合同重编译。
|
|
75
|
-
- 脚手架完成不等于实现仓库接入、架构放行、契约批准或 `ready-for-agent`。后续每一个 Agent / generator 写入的后端代码都必须绑定批准合同和对应 YSS skill;业务行为只能使用 `behavior-tdd`,机械生成才可使用 `controlled-generation`。
|
|
76
|
-
|
|
77
|
-
| 压力诱因 | 统一裁决 |
|
|
78
|
-
|---|---|
|
|
79
|
-
| “普通 action、SQL / DDL 或下载也要补安全姿态吗” | 不补。没有明确的安全 / 权限行为需求时只按实际 API、Data 或工程影响推进;明确改变相关行为时也只复用普通产物和门禁。 |
|
|
80
|
-
| “延期项先不写责任人和目标版本,之后再补” | 阻断 `seam-deferred`;必须写风险、责任人、后续 Ticket、验证计划和目标版本 / 发布日期。 |
|
|
81
|
-
| “脚手架本来就是 YSS,先生成代码再补合同” | 先阻断;Router draft 不能批准合同或替代生命周期放行。 |
|
|
82
|
-
| “`./mvnw validate` 已通过,直接继续最省时间” | 只证明工程基线可验证,不证明业务、事务或契约已获批;三条实际命令的结果还必须进入 Execution Result。 |
|
|
83
|
-
| “后续代码也是生成物,不需要重新路由” | 只要写入业务代码,就必须重新消费当前 Slice Implementation Contract 和 YSS skill 闭包。 |
|
|
84
|
-
| “发布窗口快结束了,可以把业务字段放进脚手架” | 时间、上级要求、已有产出和演示压力都不能放宽禁止模式;必须拆为 `behavior-tdd` 工作单元。 |
|
|
85
|
-
|
|
86
|
-
**红旗:** 输出目录存在、脚手架成功、只打印了 `./mvnw` 命令、`validate` 通过、Router 只有 draft、或生成器参数中出现业务字段 / 权限 / 事务 / 状态机,均不足以继续业务实现;命中任一项即暂停并重路由。
|
|
87
|
-
|
|
88
|
-
**项目路径策略:** 在 Harness 内生成项目时,先确认目标属于 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;把 `apps/backend/`、`apps/frontend/` 当作项目根,或把单数 `app/backend/`、`app/frontend/` 当作等价路径,均属于路径违规并阻断。
|
|
89
|
-
|
|
90
|
-
状态和依赖规则见 [state-model.md](references/state-model.md) 与 [artifact-dependencies.md](references/artifact-dependencies.md);Matt/YSS 对应见 [matt-yss-adapter.md](references/matt-yss-adapter.md)。
|
|
91
|
-
机器可执行的模式、readiness、Wayfinder、影响传播和回流字段见 [orchestration-contract.yaml](references/orchestration-contract.yaml)。说明文档与该契约冲突时必须暂停并修订权威资产,不得猜测。
|
|
92
|
-
|
|
93
|
-
## 输出
|
|
94
|
-
|
|
95
|
-
始终输出:模式、当前阶段、影响面、证据、资产/门禁状态、阻塞项、本轮动作、下一工作单元、暂停或继续理由、Ticket 同步和 Git checkpoint 判断;追加 `Workflow Execution Result`,并注明 workflow reference 或实际 model-invoked skill。
|
|
96
|
-
|
|
97
|
-
暂停时只提出一个具体人工决策,并给出推荐答案与确认后的恢复动作。`audit`/`route` 不得写文件、Ticket、标签或 Git。
|
|
8
|
+
这是生命周期主控 skill:负责识别阶段、判定影响面、检查产物与门禁、选择下一工作单元并验收结果。业务实现必须交给对应的 Matt/YSS 专项 skill;本 skill 不替代它们。
|
|
9
|
+
|
|
10
|
+
## 入口与边界
|
|
11
|
+
|
|
12
|
+
1. 先读取 `yss-project.yaml`、`CONTEXT.md`、相关 ADR、父 Ticket/checkpoint 和当前资产。
|
|
13
|
+
2. `repository_mode=template-source` 只走模板维护流程;命中产品流程时返回 `blocked: template-source-product-artifact-forbidden`,不得生成产品 Spec、原型、OpenAPI 或切片 Ticket。
|
|
14
|
+
3. `repository_mode=project-instance` 以 `docs/process/lifecycle-registry.yaml`、`harness-process-tailoring.md` 和本目录 references 为唯一阶段、门禁和裁剪事实源。
|
|
15
|
+
4. 模式:`route` 只读规划;`orchestrate` 有界推进;`resume` 重建后推进;`audit` 严格只读。未明确时使用 `route`。
|
|
16
|
+
|
|
17
|
+
Matt 的 `grill-with-docs`、`to-spec`、`to-tickets`、`implement` 等保留为显式兼容入口;默认路径是本 skill 持有的原生工作单元,由本编排器创建正式资产、维护状态并在四类人工门禁暂停。兼容入口不得自动调用它们或代替其创建正式资产;Matt 只导航,不得写生命周期资产或改变门禁/Ticket 状态;任何写入前回交本编排器。
|
|
18
|
+
|
|
19
|
+
## 不可裁剪的主链
|
|
20
|
+
|
|
21
|
+
机会调研/需求分析 → Spec/功能架构 → 产品设计与原型 → 技术分析(系统、数据、API、工程基线)→ Ticket 正式化 → 垂直切片实现(前后端 TDD)→ 独立 code review 与 fresh verification → 发布/复盘。
|
|
22
|
+
|
|
23
|
+
裁剪只允许将未命中的条件门禁标记为 `not-applicable` 并写原因;不得删除主阶段、已命中的门禁或必需产物。阶段是否完成取决于“内容 + 审查结论 + 上游新鲜度 + 可读证据”,文件存在不算通过。
|
|
24
|
+
|
|
25
|
+
## 阶段路由与技能
|
|
26
|
+
|
|
27
|
+
| 阶段 | 必需产物/门禁 | 工作单元与技能 | 通过条件 |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| 入口分诊 | 身份、影响面、最近可信阶段 | `yss-product-lifecycle` | `yss-project.yaml` 合法且影响面可解释 |
|
|
30
|
+
| 机会调研/需求分析 | Discovery、用户/MVP/非目标/成功标准、测试 seam | `work-unit.discovery-opportunity` + `work-unit.discovery-requirements`;市场/竞品事实用 `competitive-intelligence`,技术/标准事实用 `research`;`grill-with-docs` 为兼容入口 | 未决事实已 research 或 handoff,用户确认,无 runnable blocker |
|
|
31
|
+
| Spec/功能架构 | Spec、产品总体设计、功能架构;必要时 Spec Delta | 原生 `work-unit.spec-synthesis`;`to-spec` 为兼容入口 | 初稿先为 `ready-for-human`;只有 Spec baseline 人工批准后资产才为 `approved` 并进入下游 |
|
|
32
|
+
| 原型设计 | 交互说明、低保真、状态矩阵、高保真 HTML、评审记录 | `yss-design-system` → `yss-prototype-stage` → Codex `product-design:index`(非 Codex 交付等价合同) | `gate.prototype-reviewed`、`gate.prototype-verified`、`gate.user-confirmation` 均有证据 |
|
|
33
|
+
| 技术分析 | OpenAPI Draft/Freeze、数据架构、工程基线、架构审查 | `yss-openapi-governance` / `yss-openapi-draft-review`、`codebase-design`、`implementation-repo-onboarding`、`yss-router` | API/架构契约冻结;无 API 影响有明确记录;脚手架策略满足 |
|
|
34
|
+
| Ticket 正式化 | 功能父 Ticket、垂直切片、Slice Implementation Contract | 原生 `work-unit.ticket-decomposition`;`to-tickets` 为兼容入口;生命周期复算 | 依赖、验收、测试 seam 可执行;合同已批准、持久化且为当前版本 |
|
|
35
|
+
| 技术实现 | 前端/后端代码、TDD 证据、YSS Skill Execution Result | 原生 `work-unit.slice-implementation`;`implement` 为兼容入口;前端按 `yss-ui` + `yss-page-module-development`,后端按 `yss-router` 最小闭包,业务行为统一 `tdd` | 只写允许路径;业务行为用 `behavior-tdd`;UI 影响必须有还原计划 |
|
|
36
|
+
| Review/验证 | 不可变候选快照、review 结论、fresh verification | `code-review`(独立于实现者);UI 影响追加 `yss-ui` + `yss-design-system` 的 UI fidelity 轴 | findings 已处理;同一候选快照通过全部审查轴与验证 |
|
|
37
|
+
| 发布/复盘 | 发布/回滚证据、复盘记录 | 生命周期自有工作单元 | fresh verification、独立审查和人工发布裁决齐全 |
|
|
38
|
+
|
|
39
|
+
## 前端实现还原硬检查
|
|
40
|
+
|
|
41
|
+
原型通过不等于前端实现通过。`ready-for-agent` 前先产生 `frontend_implementation_plan`(原型/Spec、路由与页面清单、桌面/窄屏验收用例、加载/空态/错误/权限/关键交互状态、拟执行的 `pnpm` 命令);实现完成、发布前再产生 `frontend_implementation_verification`,补齐截图或视觉回归、console warning、命令退出码、未覆盖差异与责任人。差异未解释、截图缺失、只做 type-check 或只声称“已对齐”均为 `blocked`;发现新 API、状态或视觉行为时返回 `new_impacts`/`drift` 并重新路由。优先使用 `yss-ui/references/verification.md` 的分层验证和既有 `pnpm` scripts。
|
|
42
|
+
|
|
43
|
+
## 结果与暂停
|
|
44
|
+
|
|
45
|
+
每个工作单元必须返回 `Workflow Execution Result`(workflow reference、skill、changed files、evidence refs、actual verification、deferred seams、drift/new impacts)。缺少可读证据、`stale`、`violation`、`drift`、`new_impacts` 或阻塞信号时不得标记 completed。实现授权不包含 Git commit/push 授权;“做完提交”等自然语言意向不构成上述结构化 Git 授权。
|
|
46
|
+
|
|
47
|
+
输出固定包含:模式、当前阶段、影响面、资产/门禁状态、证据、阻塞项、本轮动作、下一工作单元、暂停/继续理由、Ticket 同步和 Git checkpoint 判断。暂停时只提出一个具体人工决策,并给出推荐答案与恢复动作。
|
|
48
|
+
|
|
49
|
+
详细执行循环、readiness、脚手架(包括 `controlled-generation`)、审查快照、状态传播和 Matt 边界见 [orchestration.md](references/orchestration.md)、[orchestration-contract.yaml](references/orchestration-contract.yaml)、[artifact-dependencies.md](references/artifact-dependencies.md) 和 [state-model.md](references/state-model.md)。
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Matt skills 决定如何工作;YSS 生命周期决定是否允许推进;YSS 专项 skills 决定如何符合工程规范。
|
|
4
4
|
|
|
5
|
+
生命周期默认使用 `work_unit_routes.*.native`;下表中的 Matt flow 是 `work_unit_routes.*.compatibility` 显式兼容输入。兼容入口的正式资产由用户创建并回交生命周期验收,原生工作单元的正式资产由生命周期编排器创建。
|
|
6
|
+
|
|
5
7
|
## 入口与仓库身份裁决
|
|
6
8
|
|
|
7
9
|
- 所有入口先读取 `yss-project.yaml`。缺失、解析失败、schema 不支持或 `repository_mode` 非法时,停止路由并进入 migration-check。
|
|
8
10
|
- **直接调用 `ask-matt`** 时,它只能提供通用 Matt flow 导航,不得写生命周期资产、改变门禁或 Ticket 状态;有效 YSS 仓库必须在任何写入前把最终阶段、影响面、门禁和状态裁决交回 `yss-product-lifecycle`。
|
|
9
11
|
- **直接调用生命周期管理的 Matt user-invoked skill**(`setup-matt-pocock-skills`、`grill-with-docs`、`to-spec`、`to-tickets`、`implement`)时,用户仍是正式资产的创建者;生命周期先校验前置条件,再接受结果并重新计算阶段、门禁和状态。它们不适用 `ask-matt` 的 `navigate-only` 限制。其他 user-invoked skill 同样不得由生命周期自动调用;只有在其专属适配合同存在时才进入 YSS 流程。
|
|
10
|
-
- **直接调用 `yss-product-lifecycle`** 时,不机械嵌套调用任何 Matt user-invoked skill
|
|
12
|
+
- **直接调用 `yss-product-lifecycle`** 时,不机械嵌套调用任何 Matt user-invoked skill;编排器直接使用原生工作单元和允许的 model-invoked 原语。Matt user-invoked skill 保持显式兼容入口,生命周期负责准备、校验并验收其结果。
|
|
11
13
|
- `template-source` 只允许进入模板维护流程。命中 `to-spec`、`to-tickets`、`implement`、Release 或 Retrospective 时返回 `blocked`,原因是 `template-source-product-artifact-forbidden`;`ask-matt` 和 `setup-matt-pocock-skills` 都不得为具体产品生成 Spec、prototype、OpenAPI 或垂直切片 Ticket。
|
|
12
14
|
- `project-instance` 才允许进入产品 Discovery → Spec → 设计 → 契约 → Ticket → 实现 → Release / Retrospective 链路。
|
|
13
15
|
|
|
@@ -20,9 +22,9 @@ Matt skills 决定如何工作;YSS 生命周期决定是否允许推进;YSS
|
|
|
20
22
|
| 大型模糊工作 | `wayfinder` | map 真正完成后 `handoff → to-spec` |
|
|
21
23
|
| 技术事实 | `research` | 一手资料回填 Spec/OpenAPI/架构/ADR |
|
|
22
24
|
| runnable 问题 | `prototype` | 生成单文件可分享 HTML,保留 `prototype/<name>` 分支作为主来源;必须 source/return handoff 和结论回填,不得替代阶段 4 的低保真评审、Ant Design v6 高保真 HTML、AntD CLI 证据和用户确认 |
|
|
23
|
-
| Spec 综合 | `to-spec
|
|
24
|
-
| 切片 | `to-tickets
|
|
25
|
-
| 实现 | `implement
|
|
25
|
+
| Spec 综合 | 原生 `work-unit.spec-synthesis`;`to-spec`(用户显式兼容) | 初稿进入 `ready-for-human`,不得直接实现 |
|
|
26
|
+
| 切片 | 原生 `work-unit.ticket-decomposition`;`to-tickets`(用户显式兼容) | 仅在冻结/无影响记录后拆垂直切片,初始角色为 `ready-for-human` |
|
|
27
|
+
| 实现 | 原生 `work-unit.slice-implementation`;`implement`(用户显式兼容) | 当前合同批准并持久化后执行;内部使用 `tdd`,结果回交后再次核验 |
|
|
26
28
|
| Bug | `diagnosing-bugs`、`tdd` | 先建立红色反馈;高风险影响升级上游门禁 |
|
|
27
29
|
| 审查 | `code-review` | 唯一默认代码审查入口;审查者独立,结合 Spec、仓库治理规则和 YSS 标准 |
|
|
28
30
|
| 跨上下文 | `handoff` | 保存来源、阶段、未决项、命令和下一责任人 |
|
|
@@ -60,7 +62,7 @@ blocking_signals: []
|
|
|
60
62
|
|
|
61
63
|
Router 状态映射为:`draft → completed`、`blocked → blocked`、`ready-for-lifecycle-review → needs-human`。这里的 `completed` 只表示 Matt 工作单元已产出可验收结果,不表示生命周期完成或可发布。
|
|
62
64
|
|
|
63
|
-
`completed` 的 `evidence_refs`
|
|
65
|
+
`completed` 的 `evidence_refs` 至少包含一条可读取或可解析的证据引用;只有字段存在但为空,不能证明工作单元完成。兼容入口下的正式 Spec、Ticket 或实现资产仍只能由对应显式用户入口创建;原生工作单元由生命周期编排器创建并持有状态。
|
|
64
66
|
|
|
65
67
|
## Matt flow 前置条件
|
|
66
68
|
|