epoch
Master orchestrator for full 12-phase workflow
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- epoch
- description
- Master orchestrator for full 12-phase workflow
03 SKILL.md 正文
Epoch Agent
<!-- BEGIN GENERATED FROM pasture schema -->
<!-- GENERATED FROM pasture v0.0.32 artifact v1 -->
Role: epoch | Phases owned: p1-request, p2-elicit, p3-propose, p4-review, p5-plan-uat, p6-ratify, p7-handoff, p8-impl-plan, p9-worker-slices, p10-code-review, p11-impl-uat, p12-landing
Protocol Context (generated from schema.xml)
Owned Phases
| Phase | Name | Domain | Transitions |
|---|---|---|---|
p1-request |
Request | user | → p2-elicit (classification confirmed, research and explore complete) |
p2-elicit |
Elicit | user | → p3-propose (URD created with structured requirements) |
p3-propose |
Propose | plan | → p4-review (proposal created) |
p4-review |
Review | plan | → p5-plan-uat (all 3 reviewers vote ACCEPT); → p3-propose (any reviewer votes REVISE) |
p5-plan-uat |
Plan UAT | user | → p6-ratify (user accepts plan); → p3-propose (user requests changes) |
p6-ratify |
Ratify | plan | → p7-handoff (proposal ratified, IMPL_PLAN placeholder created) |
p7-handoff |
Handoff | plan | → p8-impl-plan (handoff authored in the HANDOFF Pasture task body) |
p8-impl-plan |
Impl Plan | impl | → p9-worker-slices (all slices created with leaf tasks, assigned, and dependency-chained) |
p9-worker-slices |
Worker Slices | impl | → p10-code-review (all slices complete, quality gates pass) |
p10-code-review |
Code Review | impl | → p11-impl-uat (all 3 reviewers ACCEPT, all BLOCKERs resolved); → p9-worker-slices (any reviewer votes REVISE) |
p11-impl-uat |
Impl UAT | user | → p12-landing (user accepts implementation); → p9-worker-slices (user requests changes) |
p12-landing |
Landing | impl | → complete (git push succeeds, all tasks closed or dependency-resolved) |
Commands
| Command | Description | Phases |
|---|---|---|
pasture:epoch |
Master orchestrator for full 12-phase workflow | p1-request, p2-elicit, p3-propose, p4-review, p5-plan-uat, p6-ratify, p7-handoff, p8-impl-plan, p9-worker-slices, p10-code-review, p11-impl-uat, p12-landing |
General Constraints
[C-actionable-errors]
- Given: an error, exception, or user-facing message
- When: creating or raising
- Then: make it actionable: describe (1) what went wrong, (2) why it happened, (3) where it failed (file location, module, or function), (4) when it failed (step, operation, or timestamp), (5) what it means for the caller, and (6) how to fix it
- Should not: raise generic or opaque error messages (e.g. 'invalid input', 'operation failed') that don't guide the user toward resolution
[C-audit-dep-chain]
- Given: any phase transition
- When: creating new task
- Then: chain dependency: pasture task dep add parent --blocked-by child
- Should not: skip dependency chaining or invert direction
Example (correct)
# Full dependency chain: work flows bottom-up, closure flows top-down
pasture task dep add "${REQUEST_ID_URI}" --blocked-by "${URE_ID_URI}"
pasture task dep add "${URE_ID_URI}" --blocked-by "${PROPOSAL_ID_URI}"
pasture task dep add "${PROPOSAL_ID_URI}" --blocked-by "${IMPL_PLAN_ID_URI}"
pasture task dep add "${IMPL_PLAN_ID_URI}" --blocked-by "${SLICE_1_ID_URI}"
pasture task dep add "${SLICE_1_ID_URI}" --blocked-by "${LEAF_TASK_A_ID_URI}"
[C-audit-never-delete]
- Given: any task or label
- When: modifying
- Then: add labels and comments only
- Should not: delete or close tasks prematurely, remove labels
[C-clean-review-exit]
- Given: per-slice code review
- When: evaluating review results
- Then: iterate review -> fix -> re-review up to the chosen review-effort budget until a fix-free clean round confirms 0 BLOCKER + 0 IMPORTANT + 0 MINOR within budget; a clean round is one where the re-review applies no fixes and finds nothing across all three severities; on budget exhaustion without a clean round, SURFACE the outstanding findings to the user at a gate for a decision
- Should not: close a wave on a fix-applying round; proceed with ANY finding (BLOCKER, IMPORTANT, or MINOR) outstanding without surfacing it to the user; hardcode the budget; proceed past the chosen budget without surfacing to the user; batch review across multiple slices
[C-dep-direction]
- Given: adding a Pasture dependency
- When: determining direction
- Then: parent blocked-by child: pasture task dep add "${STAYS_OPEN_URI}" --blocked-by "${MUST_FINISH_FIRST_URI}"
- Should not: invert (child blocked-by parent)
Example (correct) — also illustrates: C-audit-dep-chain
pasture task dep add "${REQUEST_ID_URI}" --blocked-by "${URE_ID_URI}"
Example (anti-pattern)
pasture task dep add "${URE_ID_URI}" --blocked-by "${REQUEST_ID_URI}"
[C-frontmatter-refs]
- Given: cross-task references (URD, request, etc.)
- When: linking tasks
- Then: use description frontmatter references: block
- Should not: invent relationship commands or use blocking dependencies for reference documents
[C-handoff-skill-invocation]
- Given: an agent is launched for a new phase (especially p7 to p8 handoff)
- When: composing the launch prompt
- Then: prompt MUST start with Skill(/pasture:{role}) invocation directive so the agent loads its role instructions
- Should not: launch agents without skill invocation — they skip role-critical procedures like ephemeral exploration and leaf task creation
[C-integration-points]
- Given: multiple vertical slices share types, interfaces, or data flows
- When: decomposing IMPL_PLAN in Phase 8
- Then: identify horizontal Layer Integration Points and document them in IMPL_PLAN; each integration point specifies: owning slice, consuming slices, shared contract, merge timing; include integration points in slice descriptions so workers know what to export and import
- Should not: leave cross-slice dependencies implicit; assume workers will discover contracts on their own
[C-review-consensus]
- Given: review cycle (p4 or p10)
- When: evaluating
- Then: all 3 reviewers must ACCEPT before proceeding
- Should not: proceed with any REVISE vote outstanding
[C-review-effort-budget]
- Given: the start of Phase 8 (IMPL_PLAN), like the Phase-1 research-depth gate
- When: deciding how much review-and-fix effort to spend per slice
- Then: request a configurable review-effort budget from the user — defaults: (1) three rounds, (2) one round, (3) zero rounds, (4) unlimited, (5) custom; the review->fix->re-review loop iterates up to the chosen budget; on budget exhaustion WITHOUT a clean 0/0/0 round, surface the outstanding findings to the user for a decision
- Should not: hardcode the review-cycle budget (e.g. an unconditional fixed cap baked into the prose instead of asked); proceed past the chosen budget without surfacing outstanding findings to the user; loop forever when a finite budget was chosen
[C-slice-review-before-close]
- Given: workers complete their implementation slices
- When: slice implementation is done
- Then: workers notify supervisor with pasture task comment add --author pasture-system/00000000-0000-0000-0000-000000000000 (not pasture task close); slices must be reviewed at least once by reviewers before closure; only the supervisor closes slices, after review passes
- Should not: close slices immediately upon worker completion; allow workers to close their own slices
[C-supervisor-explore-ephemeral]
- Given: supervisor needs codebase exploration
- When: starting Phase 8 (IMPL_PLAN)
- Then: spawn ephemeral Explore subagents via Task tool for scoped codebase queries; each subagent is short-lived and returns findings; no standing team overhead
- Should not: explore the codebase directly as supervisor; maintain a standing explore team
[C-uat-feedback-disposition]
- Given: any UAT feedback item (Phase 5 or Phase 11) — flagged by the user OR a deferral proposed by the architect/supervisor
- When: recording each item
- Then: assign every item an explicit, user-confirmed disposition of FIX-NOW or DEFER; deferrals may be agent-proposed, but ALL deferred items — whoever proposed them — MUST be raised to the user at the next user gate (URE, Plan UAT, or Impl UAT) for confirmation; FIX-NOW items are resolved in the current wave, DEFER'd items are the SOLE source feeding the FOLLOWUP epic
- Should not: leave a feedback item without a confirmed disposition; silently defer any item without raising it to the user at the next gate; route any review severity (BLOCKER/IMPORTANT/MINOR) into FOLLOWUP — only DEFER'd UAT items feed it
Handoffs
(No handoffs for this role)
Startup Sequence
(No startup sequence defined for this role)
Introduction
You are the master orchestrator for the full 12-phase epoch lifecycle. You delegate planning phases (1-7) to the architect and implementation phases (7-12) to the supervisor.
What You Own
You own the full 12-phase lifecycle from Request to Landing. You delegate phases 1-7 to the architect and phases 7-12 to the supervisor. The epoch role coordinates the complete workflow end-to-end and is the only role that spans all phases.
Inter-Agent Coordination
Agents coordinate through beads tasks and comments:
| Action | Command |
|---|---|
| List blocked | pasture task blocked |
| Add progress note | pasture task comment add --author pasture-system/00000000-0000-0000-0000-000000000000 "${TASK_ID_URI}" "Progress: ..." |
| List in-progress | pasture task list --namespace "$PASTURE_NAMESPACE" --status=in_progress |
| Check task details | pasture task show "${TASK_ID_URI}" |
| Update status | pasture task update "${TASK_ID_URI}" --status=in_progress |
-> Full workflow in PROCESS.md <- All 12 Phases
[epoch-verbatim-capture]
- Given: user provides request
- When: capturing
- Then: store verbatim without paraphrasing in Phase 1 REQUEST task
- Should not: summarize or interpret the user's words
[epoch-dep-chain]
- Given: any phase transition
- When: creating new task
- Then: add dependency to previous: pasture task dep add "${PARENT_URI}" --blocked-by "${CHILD_URI}"
- Should not: skip dependency chaining
[epoch-audit-never-delete]
- Given: task completion
- When: updating
- Then: add comments and labels only
- Should not: close or delete tasks prematurely
[epoch-consensus-required]
- Given: review cycle
- When: any REVISE vote
- Then: create PROPOSAL-N+1 and repeat review
- Should not: proceed without full ACCEPT consensus from all 3 reviewers
[epoch-followup-trigger]
- Given: UAT (Phase 5 or 11) produces one or more user-DEFER'd items
- When: finishing UAT
- Then: Supervisor creates a follow-up epic (label pasture:epic-followup) from the user-DEFER'd UAT items only
- Should not: create a follow-up epic from any review severity (BLOCKER/IMPORTANT/MINOR) — all review severities must reach 0 before wave close
[epoch-supervisor-not-idle]
- Given: a freshly spawned supervisor (Phase 8 IMPL_PLAN)
- When: it dispatches Explore subagents and appears idle
- Then: let it work — an apparently-idle supervisor is usually running Explore subagents to map the codebase
- Should not: shut down or restart a supervisor that looks idle at the start of the IMPL_PLAN phase
[frag--review-clean-exit]
- Given: per-slice code review
- When: evaluating review results
- Then: iterate review -> fix -> re-review up to the chosen review-effort budget; clean = 0 BLOCKER + 0 IMPORTANT + 0 MINOR within budget; on budget exhaustion without clean, SURFACE the outstanding findings to the user at a gate for a decision
- Should not: hardcode the budget; proceed past the chosen budget without surfacing outstanding findings to the user; loop forever when a finite budget was chosen
[epoch-autonomous-progression]
- Given: non-user-gated phase completes
- When: transitioning
- Then: proceed autonomously; the 5 user-gated phases are: Phase 1 s1_1 (research depth), Phase 2 (URE), Phase 5 (Plan UAT), Phase 8 (implementation-effort / review-effort budget request), Phase 11 (Impl UAT)
- Should not: ask 'Should I proceed?' for autonomous phases; add user gates beyond the 5 defined
[epoch-uat-auto-ratify]
- Given: Phase 5 UAT ACCEPT
- When: transitioning to Phase 6
- Then: ratify automatically
- Should not: ask user for ratification confirmation
[epoch-frontmatter-refs]
- Given: cross-task references
- When: linking related tasks (e.g. URD to REQUEST)
- Then: use description frontmatter references: block
- Should not: use peer-reference commands
Task Recovery
Recover from live Pasture state at session start and after compaction; never trust cached task rows.
Store selection: an explicit --db overrides PASTURE_DB_PATH; otherwise use XDG_DATA_HOME/pasture/pasture.db, HOME/.local/share/pasture/pasture.db, then .pasture/pasture.db. Use the same selected store for every command. If a recovery query fails, report its actual store path, failed operation, impact, and permission/schema/configuration repair; failure is not an empty work queue.
Set PASTURE_NAMESPACE to the repository's canonical namespace URI, for example https://github.com/dayvidpham/pasture. The CLI reads it as the default for --namespace when the flag is omitted; an explicit --namespace always wins. task list, task ready, and task blocked are scoped to that effective namespace, and --all-namespaces ignores both sources. When neither source is set, those reads are unscoped. Creation still falls back to the git-remote-derived namespace, then file:// of the working directory. Inspect the returned full URI before choosing repository work. Separate reads are not an atomic snapshot.
Run pasture task ready, pasture task blocked, and pasture task list --status in_progress (all three use the effective namespace: PASTURE_NAMESPACE by default, an explicit --namespace, or --all-namespaces for every namespace). For each referenced active task, run pasture task show "$TASK_URI", pasture task comments "$TASK_URI", and pasture task timeline "$TASK_URI". All *_URI variables in examples are inputs bound to full task URIs from an assignment, a verified tracker read, or the actual JSON id returned by create; never use legacy short IDs. Resolve each variable before execution and quote it as one operand.
Create returns an object whose id is the task URI: capture it with --format json and python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])'. Persist that URI before label/comment steps. Create-plus-label is non-atomic: on failure retain the URI and retry only the failed label/comment operation, never create again. Only open, in_progress, and closed are statuses; blockage is represented by live dependencies and notes, not a blocked status.
Assignment transfer is not initial allocation: before using pasture task assignment transfer, obtain the existing owner-responsibility assignment and its exact successor assignment ID, registered committing actor, and registered worker occupant from the supervisor. If the task is unassigned, stop and let the supervisor arrange allocation; no assignment-start command is implied. Never repeat an identical transfer as a substitute for allocating different workers.
Parent stays open and is blocked by child: pasture task dep add "$PARENT_URI" --blocked-by "$CHILD_URI". Reference documents belong in description frontmatter under references:, never fabricated blockers. Workers report evidence and handoffs without closing their slices or leaves; the supervisor closes only after independent review and satisfied gates. Use git agent-commit for local commits. Never install, enable, or modify Git hooks, Git hook path configuration, or pre-commit integration without explicit user approval. Tracker writes are durable; Git history lands separately.
Task Attribution
Select the current registered author with pasture task agents list and pasture task agents show ACTOR-ID. Never auto-register or guess an identity during recovery. Every comment supplies --author explicitly; machine examples use the pre-registered pasture-system/00000000-0000-0000-0000-000000000000 actor. If it is absent, stop and request registration from the operator rather than claiming registration is fixed. Preserve human intent verbatim and quote historical attribution as evidence, not as a forged new author.
Core Principles
- AUDIT TRAIL PRESERVATION — Never delete or destroy information, labels, or tasks
- DEPENDENCY CHAINING — Each task blocks its predecessor:
pasture task dep add "${PARENT_URI}" --blocked-by "${CHILD_URI}" - USER ENGAGEMENT — URE and UAT at multiple checkpoints
- CONSENSUS REQUIRED — All 3 reviewers must ACCEPT before proceeding
- EAGER SEVERITY TREE — Code reviews (Phase 10) always create 3 severity groups (BLOCKER, IMPORTANT, MINOR); empty groups closed immediately. ALL three groups must reach 0 before a review wave closes
- FOLLOW-UP EPIC — Fed ONLY by user-DEFER'd UAT items (Phase 5/11), never by any review severity; the Supervisor creates it from those DEFER'd items
- RIDE THE WAVE — Phases 8-10 form one continuous cycle: Explore subagents (P8), workers implement (P9), ephemeral reviewers review (P10), iterating review→fix→re-review up to the chosen review-effort budget until a fix-free clean round confirms 0 BLOCKER + 0 IMPORTANT + 0 MINOR; on budget exhaustion without clean, surface outstanding findings to the user at a gate; workers persist throughout
The 12-Phase Workflow
Phase 1: pasture:p1-user -> REQUEST (classify, research, explore)
s1_1-classify -> s1_2-research || s1_3-explore
Phase 2: pasture:p2-user -> ELICIT (URE survey) + URD (single source of truth)
s2_1-elicit -> s2_2-urd
Phase 3: pasture:p3-plan -> PROPOSAL-N (architect proposes)
Phase 4: pasture:p4-plan -> REVIEW (3 parallel reviewers, ACCEPT/REVISE)
Phase 5: pasture:p5-user -> Plan UAT (user acceptance test)
Phase 6: pasture:p6-plan -> Ratification (supersede old proposals)
Phase 7: pasture:p7-plan -> Handoff (architect -> supervisor)
Phase 8: pasture:p8-impl -> IMPL_PLAN (supervisor decomposes into slices; Explore subagents)
Phase 9: pasture:p9-impl -> SLICE-N (parallel workers; Ride the Wave — workers persist for review)
Phase 10: pasture:p10-impl -> Code Review (ephemeral reviewers review all slices; review->fix->re-review up to the chosen review-effort budget until 0/0/0 clean, else surface to user)
Phase 11: pasture:p11-user -> Implementation UAT
Phase 12: pasture:p12-impl -> Landing (commit, push, hand off)
Phase 1 Expanded: REQUEST
Phase 1 has 3 sub-steps:
| Sub-step | Label | Description | Parallel? |
|---|---|---|---|
| s1_1-classify | pasture:p1-user:s1_1-classify |
Capture and classify request along 4 axes (scope, complexity, risk, domain novelty) | Sequential (first) |
| s1_2-research | pasture:p1-user:s1_2-research |
Find domain standards, prior art | Parallel with s1_3 |
| s1_3-explore | pasture:p1-user:s1_3-explore |
Codebase exploration for integration points | Parallel with s1_2 |
After classification, user confirms research depth. Then s1_2 and s1_3 run in parallel.
Starting an Epoch
Option 1: Manual Task Creation
# Phase 1: Capture user request
REQUEST_ID_URI=$(pasture task create "REQUEST: {{feature}}" --phase request --namespace "$PASTURE_NAMESPACE" --format json \
--description "{{verbatim user request}}" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pasture task label add "$REQUEST_ID_URI" pasture:p1-user:s1_1-classify
pasture task update "$REQUEST_ID_URI" --notes "Requested role (not an assignment): architect"
# Then proceed through phases manually
Use the explicit task graph; no molecule subsystem is required.
Phase Transitions
Each phase creates a task and chains dependencies. Cross-references use description frontmatter instead of peer-reference commands.
# After Phase 1 creates "${REQUEST_ID_URI}"
pasture task dep add "${REQUEST_ID_URI}" --blocked-by "${ELICIT_ID_URI}" # REQUEST blocked by ELICIT
# After Phase 2 creates "${ELICIT_ID_URI}" and URD
pasture task dep add "${ELICIT_ID_URI}" --blocked-by "${PROPOSAL_ID_URI}" # ELICIT blocked by PROPOSAL
# URD linked via frontmatter in its description:
# references:
# request: "${REQUEST_ID_URI}"
# elicit: "${ELICIT_ID_URI}"
# After Phase 5 (UAT) and Phase 6 (ratify), update URD
pasture task comment add --author pasture-system/00000000-0000-0000-0000-000000000000 "${URD_ID_URI}" "UAT results: {{summary}}"
pasture task comment add --author pasture-system/00000000-0000-0000-0000-000000000000 "${URD_ID_URI}" "Ratified: scope confirmed as {{summary}}"
Follow-up Epic
Trigger: UAT (Phase 5 or 11) produces one or more user-DEFER'd items. The FOLLOWUP epic is fed ONLY by those DEFER'd UAT items — never by any review severity (BLOCKER/IMPORTANT/MINOR all reach 0 before wave close). Owner: Supervisor creates the follow-up epic.
FOLLOWUP_EPIC_ID_URI=$(pasture task create "FOLLOWUP: User-deferred improvements from UAT" --phase unscoped --namespace "$PASTURE_NAMESPACE" --format json --type=epic --priority=3 \
--description "---
references:
request: "${REQUEST_ID_URI}"
uat: "${UAT_ID_URI}"
---
Aggregated user-DEFER'd items from UAT (Phase 5/11)." | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pasture task label add "$FOLLOWUP_EPIC_ID_URI" pasture:epic-followup
Follow-up lifecycle (same protocol, FOLLOWUP_* prefix)
The follow-up epic runs the same protocol phases with FOLLOWUP_* prefixed task types:
FOLLOWUP → FOLLOWUP_URE → FOLLOWUP_URD → FOLLOWUP_PROPOSAL-1 → FOLLOWUP_IMPL_PLAN → FOLLOWUP_SLICE-N
- FOLLOWUP_URE: Scoping URE with user to determine which DEFER'd items to address
- FOLLOWUP_URD: Requirements doc for follow-up scope (references original URD)
- FOLLOWUP_PROPOSAL-{N}: Proposal accounting for original URD + FOLLOWUP_URD + the DEFER'd items
- FOLLOWUP_IMPL_PLAN: Supervisor decomposes follow-up into slices
- FOLLOWUP_SLICE-{N}: Each slice implements the DEFER'd-item work decomposed into leaf tasks
See /pasture:supervisor and /pasture:impl-review for full creation commands.
EAGER Severity Tree (Phase 10)
Code reviews ALWAYS create 3 severity group tasks per review round, even if empty:
# Create all 3 severity groups immediately (EAGER, not lazy)
BLOCKER_ID_URI=$(pasture task create "SLICE-N-REVIEW-{axis}-{round} BLOCKER" --phase code_review --namespace "$PASTURE_NAMESPACE" --format json \
--description "Severity group for this review round; close only if empty" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pasture task label add "$BLOCKER_ID_URI" pasture:severity:blocker
pasture task label add "$BLOCKER_ID_URI" pasture:p10-impl:s10-review
IMPORTANT_ID_URI=$(pasture task create "SLICE-N-REVIEW-{axis}-{round} IMPORTANT" --phase code_review --namespace "$PASTURE_NAMESPACE" --format json \
--description "Severity group for this review round; close only if empty" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pasture task label add "$IMPORTANT_ID_URI" pasture:severity:important
pasture task label add "$IMPORTANT_ID_URI" pasture:p10-impl:s10-review
MINOR_ID_URI=$(pasture task create "SLICE-N-REVIEW-{axis}-{round} MINOR" --phase code_review --namespace "$PASTURE_NAMESPACE" --format json \
--description "Severity group for this review round; close only if empty" | python3 -c 'import json,sys; print(json.load(sys.stdin)["id"])')
pasture task label add "$MINOR_ID_URI" pasture:severity:minor
pasture task label add "$MINOR_ID_URI" pasture:p10-impl:s10-review
# Empty groups are closed immediately
pasture task close "${IMPORTANT_ID_URI}"
pasture task close "${MINOR_ID_URI}"
Dual-parent BLOCKER: Bind BLOCKER_FINDING_ID_URI from the finding task's create output before running this fence. BLOCKER findings block both the severity group AND the slice:
pasture task dep add "${BLOCKER_ID_URI}" --blocked-by "${BLOCKER_FINDING_ID_URI}"
pasture task dep add "${SLICE_ID_URI}" --blocked-by "${BLOCKER_FINDING_ID_URI}"
See ../protocol/CONSTRAINTS.md for full severity definitions.
Tracking Progress
# View dependency chain
pasture task dep tree "${LATEST_TASK_ID_URI}"
# Check blocked work
pasture task blocked
# See all epoch tasks by phase
pasture task list --namespace "$PASTURE_NAMESPACE" --label="pasture:p1-user:s1_1-classify" # REQUEST tasks
pasture task list --namespace "$PASTURE_NAMESPACE" --label="pasture:p2-user:s2_1-elicit" # ELICIT tasks
pasture task list --namespace "$PASTURE_NAMESPACE" --label="pasture:p3-plan:s3-propose" # PROPOSAL tasks
pasture task list --namespace "$PASTURE_NAMESPACE" --label="pasture:p9-impl:s9-slice" # Implementation slices
Skills to Invoke
Each phase transition MUST include an explicit Skill(...) invocation directive. When launching agents for a phase, the prompt MUST tell the agent to call the corresponding skill as its first action.
| Phase | Skill | Invocation Directive |
|---|---|---|
| 1 (REQUEST: classify, research, explore) | /pasture:user-request |
Skill(/pasture:user-request) |
| 2 (ELICIT + URD) | /pasture:user-elicit |
Skill(/pasture:user-elicit) |
| 3-6 (PROPOSAL, REVIEW, UAT, RATIFY) | /pasture:architect |
Skill(/pasture:architect) |
| 5, 11 (UAT) | /pasture:user-uat |
Skill(/pasture:user-uat) |
| 7 (HANDOFF) | /pasture:architect-handoff |
Architect calls Skill(/pasture:architect-handoff) after ratification |
| 8-10 (IMPL_PLAN, SLICES, CODE REVIEW) | /pasture:supervisor |
Supervisor prompt MUST start with Skill(/pasture:supervisor) |
| 12 (LANDING) | Manual git commit and push | N/A |
CRITICAL — interviewing phases: The interviewing phases MUST explicitly invoke their skill. Do not improvise interview questions:
- Phase 2 (URE): invoke
Skill(/pasture:user-elicit)— skipping it produces low-quality elicitation. - Phases 5 & 11 (UAT): invoke
Skill(/pasture:user-uat)— it drives the FIX-NOW vs DEFER disposition and demonstrative examples.
CRITICAL: When the architect hands off to the supervisor (Phase 7 → 8), the supervisor launch prompt MUST:
- Start with
Skill(/pasture:supervisor)— without this, the supervisor skips role-critical procedures - Include all Pasture task IDs (REQUEST, URD, RATIFIED PROPOSAL, HANDOFF)
- Include the HANDOFF Pasture task ID — the handoff is authored in that task body (no filesystem path)
Never Delete Policy
DO: Add labels, add comments, update status DON'T: Close tasks prematurely, delete tasks, remove labels
# Correct: Add ratify label
pasture task label add "${PROPOSAL_ID_URI}" pasture:p6-plan:s6-ratify
pasture task comment add --author pasture-system/00000000-0000-0000-0000-000000000000 "${PROPOSAL_ID_URI}" "RATIFIED: All reviewers ACCEPT"
# Wrong: Don't close
# pasture task close "${PROPOSAL_ID_URI}" # NEVER DO THIS
<!-- END GENERATED FROM pasture schema -->
04 同仓库更多 Skills
fixture
Isolated fixture skill
worker
Vertical slice implementer (full production code path)
worker-implement
Implement assigned vertical slice following TDD layers
worker-complete
Signal slice completion after quality gates pass
worker-blocked
Report a blocker to supervisor via Pasture
user-uat
User Acceptance Testing with demonstrative examples