@syntesseraai/opencode-feature-factory 0.6.10 → 0.6.11

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 CHANGED
@@ -43,7 +43,7 @@ It also updates `~/.config/opencode/opencode.json` non-destructively by merging
43
43
  ## Command Tree
44
44
 
45
45
  - `/pipeline/start`
46
- - `/pipeline/planning/run`, `/pipeline/planning/plan`, `/pipeline/planning/synthesize`, `/pipeline/planning/gate`
46
+ - `/pipeline/planning/run`, `/pipeline/planning/plan`, `/pipeline/planning/synthesize`, `/pipeline/planning/gate`, `/pipeline/planning/confirm`
47
47
  - `/pipeline/building/run`, `/pipeline/building/breakdown`, `/pipeline/building/validate-batch`, `/pipeline/building/implement-batch`
48
48
  - `/pipeline/reviewing/run`, `/pipeline/reviewing/triage`, `/pipeline/reviewing/review`, `/pipeline/reviewing/synthesize`, `/pipeline/reviewing/gate`
49
49
  - `/pipeline/documentation/run`, `/pipeline/documentation/document`, `/pipeline/documentation/review`, `/pipeline/documentation/gate`
@@ -51,18 +51,18 @@ It also updates `~/.config/opencode/opencode.json` non-destructively by merging
51
51
 
52
52
  ## Model Routing
53
53
 
54
- - Runtime role keys are resolved at pipeline intake (`/pipeline/start`) and reused via `$RESULT[...]` across stages.
55
- - Cross-model steps use Task-C style dynamic subtask dispatch (`run /subtask {model:$RESULT[...]} ...`) where model switching is required.
56
- - `COORDINATOR_MODEL` (default: `openai/gpt-5.4`)
57
- - `DEVELOPER_MODEL` (default: `openai/gpt-5.3-codex`)
58
- - `ARCHITECT_MODEL` (default: `opencode/gemini-3.1-pro`)
59
- - `REVIEWER_MODEL` (default: `anthropic/claude-opus-4-6`)
60
- - `DOCUMENTATION_REVIEWER_MODEL` (default: `opencode/gemini-3.1-pro`)
54
+ - Coordinator and synthesis model is ChatGPT 5.4.
55
+ - Planning/reviewing fan-out uses explicit inline model overrides.
56
+ - `DEVELOPER_MODEL`: `openai/gpt-5.3-codex`
57
+ - `ARCHITECT_MODEL`: `opencode/gemini-3.1-pro`
58
+ - `REVIEWER_MODEL`: `anthropic/claude-opus-4-6`
59
+ - `COORDINATOR_MODEL`: `openai/gpt-5.4`
60
+ - `DOCUMENTATION_REVIEWER_MODEL`: `opencode/gemini-3.1-pro`
61
61
  - Pipeline stages pass intermediate artifacts with `{as:name}` and `$RESULT[name]` (minimal file persistence)
62
62
  - Planning (with architecture validation): reviewer, architect, and developer role models
63
63
  - Implementation: developer role model
64
64
  - Review (with architecture validation): reviewer, architect, and developer role models
65
- - Rework path: `/pipeline/reviewing/run` re-enters implementation via dynamic subtask dispatch targeting `/pipeline/building/implement-batch` when gate status is `REWORK`
65
+ - Rework path: `/pipeline/reviewing/run` re-enters implementation via `/pipeline/building/implement-batch` when gate status is `REWORK`
66
66
  - Documentation stage: developer role updates documentation, documentation reviewer role reviews docs, and coordinator role supervises a bounded loop until approved
67
67
  - Documentation stage skill usage: developer role loads `ff-todo-management`, `ff-mini-plan`; documentation reviewer role loads `ff-report-templates` and `ff-severity-classification`
68
68
 
@@ -26,9 +26,8 @@ You are the pipeline orchestrator.
26
26
  ## Responsibilities
27
27
 
28
28
  1. Gather and confirm requirements.
29
- 2. Propose the standard role model defaults and ask the user to confirm or override them before execution.
30
- 3. Start `/pipeline/start` using the confirmed `COORDINATOR_MODEL` for the command model override, plus the confirmed role model keys.
31
- 4. Report phase transitions and gate outcomes.
29
+ 2. Start `/pipeline/start {model:openai/gpt-5.4}` with a concise requirements brief.
30
+ 3. Report phase transitions and gate outcomes.
32
31
 
33
32
  ## Guardrails
34
33
 
@@ -43,14 +42,6 @@ You are the pipeline orchestrator.
43
42
  - Acceptance criteria
44
43
  - Scope constraints
45
44
 
46
- Before execution, confirm this default model set (allow overrides):
45
+ On confirmation, run:
47
46
 
48
- - `COORDINATOR_MODEL=openai/gpt-5.4`
49
- - `DEVELOPER_MODEL=openai/gpt-5.3-codex`
50
- - `ARCHITECT_MODEL=opencode/gemini-3.1-pro`
51
- - `REVIEWER_MODEL=anthropic/claude-opus-4-6`
52
- - `DOCUMENTATION_REVIEWER_MODEL=opencode/gemini-3.1-pro`
53
-
54
- After model confirmation, run:
55
-
56
- `/pipeline/start {model:<CONFIRMED_COORDINATOR_MODEL>} <requirements-brief with COORDINATOR_MODEL=<CONFIRMED_COORDINATOR_MODEL> DEVELOPER_MODEL=<CONFIRMED_DEVELOPER_MODEL> ARCHITECT_MODEL=<CONFIRMED_ARCHITECT_MODEL> REVIEWER_MODEL=<CONFIRMED_REVIEWER_MODEL> DOCUMENTATION_REVIEWER_MODEL=<CONFIRMED_DOCUMENTATION_REVIEWER_MODEL>>`
47
+ `/pipeline/start {model:openai/gpt-5.4} <requirements-brief>`
@@ -2,18 +2,19 @@
2
2
  description: Run build phase from approved plan
3
3
  subtask: true
4
4
  return:
5
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<REVIEWER_MODEL> && as:build-tasks} /pipeline/building/breakdown $ARGUMENTS'
6
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<ARCHITECT_MODEL> && as:build-batches} /pipeline/building/validate-batch $RESULT[build-tasks]'
7
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DEVELOPER_MODEL> && as:build-implementation} /pipeline/building/implement-batch $RESULT[build-batches]'
8
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/reviewing/run {model:<COORDINATOR_MODEL> && as:review-phase} $RESULT[build-implementation] COORDINATOR_MODEL=<COORDINATOR_MODEL> DEVELOPER_MODEL=<DEVELOPER_MODEL> ARCHITECT_MODEL=<ARCHITECT_MODEL> REVIEWER_MODEL=<REVIEWER_MODEL> DOCUMENTATION_REVIEWER_MODEL=<DOCUMENTATION_REVIEWER_MODEL>'
5
+ - /pipeline/building/breakdown {model:anthropic/claude-opus-4-6 && as:build-tasks} $ARGUMENTS
6
+ - /pipeline/building/validate-batch {model:opencode/gemini-3.1-pro && as:build-batches} $RESULT[build-tasks]
7
+ - /pipeline/building/implement-batch {model:openai/gpt-5.3-codex && as:build-implementation} $RESULT[build-batches]
8
+ - /pipeline/reviewing/run {model:openai/gpt-5.4 && as:review-phase} $RESULT[build-implementation]
9
9
  ---
10
10
 
11
11
  Run build phase from the approved final plan passed in `$ARGUMENTS`.
12
12
 
13
13
  Rules:
14
14
 
15
- 1. Maintain dependency-safe batching.
16
- 2. Only parallelize tasks with no dependency edges.
17
- 3. Pass intermediate outputs via `{as:name}` and `$RESULT[name]`.
18
- 4. Implementation uses the runtime-selected `DEVELOPER_MODEL` via inline model override.
19
- 5. Send completed implementation output into reviewing via `/pipeline/reviewing/run`.
15
+ 1. If `PLANNING_PROCEED=NO` appears in input, stop and return user-confirmation-required context instead of executing build tasks.
16
+ 2. Maintain dependency-safe batching.
17
+ 3. Only parallelize tasks with no dependency edges.
18
+ 4. Pass intermediate outputs via `{as:name}` and `$RESULT[name]`.
19
+ 5. Implementation is codex-focused via explicit model override.
20
+ 6. Send completed implementation output into reviewing via `/pipeline/reviewing/run`.
@@ -3,11 +3,11 @@ description: Run documentation loop after review approval
3
3
  subtask: true
4
4
  loop:
5
5
  max: 5
6
- until: documentation updates are approved by DOCUMENTATION_REVIEWER_MODEL with zero unresolved documentation issues
6
+ until: documentation updates are approved by documentation reviewer with zero unresolved documentation issues
7
7
  return:
8
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DEVELOPER_MODEL> && as:doc-pass} /pipeline/documentation/document $ARGUMENTS'
9
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DOCUMENTATION_REVIEWER_MODEL> && as:doc-review} /pipeline/documentation/review $RESULT[doc-pass]'
10
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/documentation/gate {model:<COORDINATOR_MODEL>} $RESULT[doc-review]'
8
+ - /pipeline/documentation/document {model:openai/gpt-5.3-codex && as:doc-pass} $ARGUMENTS
9
+ - /pipeline/documentation/review {model:opencode/gemini-3.1-pro && as:doc-review} $RESULT[doc-pass]
10
+ - /pipeline/documentation/gate {model:openai/gpt-5.4} $RESULT[doc-review]
11
11
  - If `DOCUMENTATION_GATE=REWORK`, continue loop with review feedback for the next document pass.
12
12
  ---
13
13
 
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Confirm whether pipeline can proceed after planning
3
+ subtask: true
4
+ agent: planning
5
+ model: openai/gpt-5.4
6
+ ---
7
+
8
+ Read the planning output in `$ARGUMENTS` and decide whether the pipeline may proceed.
9
+
10
+ Rules:
11
+
12
+ 1. If `PLANNING_GATE=APPROVED`, return:
13
+ - `PLANNING_PROCEED=YES`
14
+ - The approved `FINAL_PLAN` content for build input.
15
+ 2. If `PLANNING_GATE=REWORK` or `PLANNING_GATE=BLOCKED`, return:
16
+ - `PLANNING_PROCEED=NO`
17
+ - A short `USER_CONFIRMATION_REQUIRED` section explaining why continuation needs explicit user confirmation.
18
+ 3. Do not invent missing gate values.
@@ -2,12 +2,12 @@
2
2
  description: Execute one planning iteration
3
3
  subtask: true
4
4
  parallel:
5
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<REVIEWER_MODEL> && as:plan-reviewer} /pipeline/planning/plan [MODEL_TAG:reviewer] $ARGUMENTS'
6
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<ARCHITECT_MODEL> && as:plan-architect} /pipeline/planning/plan [MODEL_TAG:architect] $ARGUMENTS'
7
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DEVELOPER_MODEL> && as:plan-developer} /pipeline/planning/plan [MODEL_TAG:developer] $ARGUMENTS'
5
+ - /pipeline/planning/plan {model:anthropic/claude-opus-4-6 && as:plan-opus} [MODEL_TAG:opus] $ARGUMENTS
6
+ - /pipeline/planning/plan {model:opencode/gemini-3.1-pro && as:plan-gemini} [MODEL_TAG:gemini] $ARGUMENTS
7
+ - /pipeline/planning/plan {model:openai/gpt-5.3-codex && as:plan-codex} [MODEL_TAG:codex] $ARGUMENTS
8
8
  return:
9
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/planning/synthesize {model:<COORDINATOR_MODEL> && as:plan-consensus} $RESULT[plan-reviewer] $RESULT[plan-architect] $RESULT[plan-developer]'
10
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/planning/gate {model:<COORDINATOR_MODEL>} $RESULT[plan-consensus]'
9
+ - /pipeline/planning/synthesize {model:openai/gpt-5.4 && as:plan-consensus} $RESULT[plan-opus] $RESULT[plan-gemini] $RESULT[plan-codex]
10
+ - /pipeline/planning/gate {model:openai/gpt-5.4} $RESULT[plan-consensus]
11
11
  ---
12
12
 
13
13
  Run one complete planning iteration for the active pipeline.
@@ -5,13 +5,13 @@ loop:
5
5
  max: 10
6
6
  until: all tasks in the active batch are approved with confidence >=95 and zero unresolved issues
7
7
  return:
8
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/reviewing/triage {model:<COORDINATOR_MODEL> && as:review-brief} $ARGUMENTS'
9
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<REVIEWER_MODEL> && as:review-reviewer} /pipeline/reviewing/review [MODEL_TAG:reviewer] $RESULT[review-brief]'
10
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<ARCHITECT_MODEL> && as:review-architect} /pipeline/reviewing/review [MODEL_TAG:architect] $RESULT[review-brief]'
11
- - 'run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DEVELOPER_MODEL> && as:review-developer} /pipeline/reviewing/review [MODEL_TAG:developer] $RESULT[review-brief]'
12
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/reviewing/synthesize {model:<COORDINATOR_MODEL> && as:review-synthesis} $RESULT[review-reviewer] $RESULT[review-architect] $RESULT[review-developer]'
13
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/reviewing/gate {model:<COORDINATOR_MODEL>} $RESULT[review-synthesis]'
14
- - If REVIEW_GATE=REWORK, run, replacing arguments with values from $ARGUMENTS: /subtask {agent:general && model:<DEVELOPER_MODEL>} /pipeline/building/implement-batch $RESULT[review-synthesis]
8
+ - /pipeline/reviewing/triage {model:openai/gpt-5.4 && as:review-brief} $ARGUMENTS
9
+ - /pipeline/reviewing/review {model:anthropic/claude-opus-4-6 && as:review-opus} [MODEL_TAG:opus] $RESULT[review-brief]
10
+ - /pipeline/reviewing/review {model:opencode/gemini-3.1-pro && as:review-gemini} [MODEL_TAG:gemini] $RESULT[review-brief]
11
+ - /pipeline/reviewing/review {model:openai/gpt-5.3-codex && as:review-codex} [MODEL_TAG:codex] $RESULT[review-brief]
12
+ - /pipeline/reviewing/synthesize {model:openai/gpt-5.4 && as:review-synthesis} $RESULT[review-opus] $RESULT[review-gemini] $RESULT[review-codex]
13
+ - /pipeline/reviewing/gate {model:openai/gpt-5.4} $RESULT[review-synthesis]
14
+ - If `REVIEW_GATE=REWORK`, invoke `/pipeline/building/implement-batch {model:openai/gpt-5.3-codex}` to apply fixes before the next loop iteration.
15
15
  ---
16
16
 
17
17
  Execute the review loop for the current completed tasks/rework report.
@@ -1,26 +1,19 @@
1
1
  ---
2
2
  description: Pipeline workflow entrypoint
3
3
  subtask: true
4
+ model: openai/gpt-5.4
4
5
  return:
5
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/planning/run {model:<COORDINATOR_MODEL> && as:planning-phase && loop:5 && until:planning gate is APPROVED or planning gate is BLOCKED and waiting for user confirmation} $ARGUMENTS'
6
- - If planning is BLOCKED or loop max was reached, stop and ask the user whether to continue planning iterations. Otherwise continue.
7
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/building/run {model:<COORDINATOR_MODEL> && as:build-phase} $RESULT[planning-phase] COORDINATOR_MODEL=<COORDINATOR_MODEL> DEVELOPER_MODEL=<DEVELOPER_MODEL> ARCHITECT_MODEL=<ARCHITECT_MODEL> REVIEWER_MODEL=<REVIEWER_MODEL> DOCUMENTATION_REVIEWER_MODEL=<DOCUMENTATION_REVIEWER_MODEL>'
8
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/documentation/run {model:<COORDINATOR_MODEL>} $RESULT[build-phase] COORDINATOR_MODEL=<COORDINATOR_MODEL> DEVELOPER_MODEL=<DEVELOPER_MODEL> ARCHITECT_MODEL=<ARCHITECT_MODEL> REVIEWER_MODEL=<REVIEWER_MODEL> DOCUMENTATION_REVIEWER_MODEL=<DOCUMENTATION_REVIEWER_MODEL>'
9
- - 'run, replacing arguments with values from $ARGUMENTS: /pipeline/complete {model:<COORDINATOR_MODEL>}'
6
+ - /pipeline/planning/run {as:planning-phase && loop:5 && until:planning gate is APPROVED or planning gate is BLOCKED and waiting for user confirmation}
7
+ - /pipeline/planning/confirm {as:planning-decision} $RESULT[planning-phase]
8
+ - /pipeline/building/run {as:build-phase} $RESULT[planning-decision]
9
+ - /pipeline/documentation/run $RESULT[build-phase]
10
+ - /pipeline/complete
10
11
  ---
11
12
 
12
13
  Start the deterministic Feature Factory pipeline with this requirements brief:
13
14
 
14
15
  $ARGUMENTS
15
16
 
16
- Optional runtime model inputs (recommended):
17
-
18
- - `COORDINATOR_MODEL=<provider/model>`
19
- - `DEVELOPER_MODEL=<provider/model>`
20
- - `ARCHITECT_MODEL=<provider/model>`
21
- - `REVIEWER_MODEL=<provider/model>`
22
- - `DOCUMENTATION_REVIEWER_MODEL=<provider/model>`
23
-
24
17
  Execution requirements:
25
18
 
26
19
  1. Use `{as:name}` and `$RESULT[name]` for phase-to-phase handoff.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@syntesseraai/opencode-feature-factory",
4
- "version": "0.6.10",
4
+ "version": "0.6.11",
5
5
  "type": "module",
6
6
  "description": "OpenCode plugin for Feature Factory agents - provides sub-agents and skills for validation, review, security, and architecture assessment",
7
7
  "license": "MIT",