@syntesseraai/opencode-feature-factory 0.6.9 → 0.6.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.
Files changed (28) hide show
  1. package/README.md +19 -14
  2. package/agents/pipeline.md +14 -5
  3. package/bin/ff-deploy.js +7 -7
  4. package/{commands → command}/pipeline/building/breakdown.md +0 -1
  5. package/{commands → command}/pipeline/building/implement-batch.md +0 -1
  6. package/command/pipeline/building/run.md +19 -0
  7. package/{commands → command}/pipeline/building/validate-batch.md +0 -1
  8. package/{commands → command}/pipeline/complete.md +0 -1
  9. package/{commands → command}/pipeline/documentation/document.md +1 -2
  10. package/{commands → command}/pipeline/documentation/gate.md +0 -1
  11. package/{commands → command}/pipeline/documentation/review.md +0 -1
  12. package/command/pipeline/documentation/run.md +25 -0
  13. package/{commands → command}/pipeline/planning/gate.md +0 -1
  14. package/command/pipeline/planning/run.md +24 -0
  15. package/{commands → command}/pipeline/planning/synthesize.md +3 -4
  16. package/{commands → command}/pipeline/reviewing/gate.md +0 -1
  17. package/command/pipeline/reviewing/run.md +23 -0
  18. package/{commands → command}/pipeline/reviewing/synthesize.md +1 -2
  19. package/{commands → command}/pipeline/reviewing/triage.md +0 -1
  20. package/command/pipeline/start.md +29 -0
  21. package/package.json +2 -2
  22. package/commands/pipeline/building/run.md +0 -19
  23. package/commands/pipeline/documentation/run.md +0 -26
  24. package/commands/pipeline/planning/run.md +0 -25
  25. package/commands/pipeline/reviewing/run.md +0 -24
  26. package/commands/pipeline/start.md +0 -22
  27. /package/{commands → command}/pipeline/planning/plan.md +0 -0
  28. /package/{commands → command}/pipeline/reviewing/review.md +0 -0
package/README.md CHANGED
@@ -23,13 +23,13 @@ This installer deploys to `~/.config/opencode/`:
23
23
 
24
24
  - `agents/`
25
25
  - `skills/`
26
- - `commands/`
26
+ - `command/`
27
27
 
28
28
  It also updates `~/.config/opencode/opencode.json` non-destructively by merging missing Feature Factory MCP entries and plugins without deleting existing user configuration.
29
29
 
30
30
  ## Install Behavior
31
31
 
32
- - **Always overwrites packaged assets**: installer unconditionally overwrites Feature Factory `agents`, `skills`, and `commands` on every install.
32
+ - **Always overwrites packaged assets**: installer unconditionally overwrites Feature Factory `agents`, `skills`, and `command` files on every install.
33
33
  - **`opencode.json` is non-destructive**: existing keys/values are preserved; only missing required plugin/MCP entries are added.
34
34
  - **Global scope**: assets are installed to `~/.config/opencode/` and shared across projects.
35
35
 
@@ -37,8 +37,8 @@ It also updates `~/.config/opencode/opencode.json` non-destructively by merging
37
37
 
38
38
  - Use `@pipeline` as the start experience.
39
39
  - The `@pipeline` agent handles intake and launches `/pipeline/start`.
40
- - Orchestration is implemented by the command tree under `commands/pipeline/` using subtask2 primitives (`return`, `parallel`, `loop`).
41
- - Coordinator and synthesis model is ChatGPT 5.4.
40
+ - Orchestration is implemented by the command tree under `command/pipeline/` using subtask2 primitives (`return`, `parallel`, `loop`).
41
+ - Coordinator and synthesis model defaults to ChatGPT 5.4 and can be overridden at runtime via `/pipeline/start` input.
42
42
 
43
43
  ## Command Tree
44
44
 
@@ -49,23 +49,28 @@ It also updates `~/.config/opencode/opencode.json` non-destructively by merging
49
49
  - `/pipeline/documentation/run`, `/pipeline/documentation/document`, `/pipeline/documentation/review`, `/pipeline/documentation/gate`
50
50
  - `/pipeline/complete`
51
51
 
52
- ## Model Split
52
+ ## Model Routing
53
53
 
54
- - Coordinator and synthesis: ChatGPT 5.4
55
- - Planning/reviewing fan-out uses inline subtask2 model overrides from `/pipeline/planning/run` and `/pipeline/reviewing/run`
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`)
56
61
  - Pipeline stages pass intermediate artifacts with `{as:name}` and `$RESULT[name]` (minimal file persistence)
57
- - Planning (with architecture validation): Codex, Gemini, Opus
58
- - Implementation: Codex only
59
- - Review (with architecture validation): Codex, Gemini, and Opus
60
- - Rework path: `/pipeline/reviewing/run` re-enters implementation via `/pipeline/building/implement-batch` when gate status is `REWORK`
61
- - Documentation stage: Codex updates documentation, Gemini reviews docs, and ChatGPT 5.4 supervises a bounded loop until approved
62
- - Documentation stage skill usage: Codex loads `ff-todo-management`, `ff-mini-plan`; Gemini loads `ff-report-templates` and `ff-severity-classification`
62
+ - Planning (with architecture validation): reviewer, architect, and developer role models
63
+ - Implementation: developer role model
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`
66
+ - Documentation stage: developer role updates documentation, documentation reviewer role reviews docs, and coordinator role supervises a bounded loop until approved
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`
63
68
 
64
69
  ## Quality Gates
65
70
 
66
71
  - Planning approval: `>=75%` consensus.
67
72
  - Review approval: `>=95%` confidence and zero unresolved issues.
68
- - Documentation approval: Gemini verdict `APPROVED` with zero unresolved documentation issues.
73
+ - Documentation approval: documentation reviewer verdict `APPROVED` with zero unresolved documentation issues.
69
74
  - Planning loop confirmation: after 5 unsuccessful planning iterations, pipeline asks user whether to continue.
70
75
 
71
76
  ## Related Docs
@@ -26,12 +26,13 @@ You are the pipeline orchestrator.
26
26
  ## Responsibilities
27
27
 
28
28
  1. Gather and confirm requirements.
29
- 2. Start `/pipeline/start` with a concise requirements brief.
30
- 3. Report phase transitions and gate outcomes.
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.
31
32
 
32
33
  ## Guardrails
33
34
 
34
- - Keep orchestration in command files under `commands/pipeline/`.
35
+ - Keep orchestration in command files under `command/pipeline/`.
35
36
  - Use result-based chaining (`{as:name}` and `$RESULT[name]`) for intermediate handoff.
36
37
  - Enforce planning/review/documentation gates and loop limits.
37
38
 
@@ -42,6 +43,14 @@ You are the pipeline orchestrator.
42
43
  - Acceptance criteria
43
44
  - Scope constraints
44
45
 
45
- On confirmation, run:
46
+ Before execution, confirm this default model set (allow overrides):
46
47
 
47
- `/pipeline/start <requirements-brief>`
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>>`
package/bin/ff-deploy.js CHANGED
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Feature Factory Deployment Script
5
5
  *
6
- * Deploys skills, agents, and commands to the global OpenCode configuration directory.
6
+ * Deploys skills, agents, and command files to the global OpenCode configuration directory.
7
7
  * Run manually with: npx @syntesseraai/opencode-feature-factory
8
8
  */
9
9
 
@@ -18,13 +18,13 @@ const __dirname = dirname(__filename);
18
18
  const GLOBAL_CONFIG_DIR = join(homedir(), '.config', 'opencode');
19
19
  const SKILLS_DIR = join(GLOBAL_CONFIG_DIR, 'skills');
20
20
  const AGENTS_DIR = join(GLOBAL_CONFIG_DIR, 'agents');
21
- const COMMANDS_DIR = join(GLOBAL_CONFIG_DIR, 'commands');
21
+ const COMMAND_DIR = join(GLOBAL_CONFIG_DIR, 'command');
22
22
  const GLOBAL_CONFIG_FILE = join(GLOBAL_CONFIG_DIR, 'opencode.json');
23
23
 
24
24
  const PACKAGE_ROOT = join(__dirname, '..');
25
25
  const SOURCE_SKILLS_DIR = join(PACKAGE_ROOT, 'skills');
26
26
  const SOURCE_AGENTS_DIR = join(PACKAGE_ROOT, 'agents');
27
- const SOURCE_COMMANDS_DIR = join(PACKAGE_ROOT, 'commands');
27
+ const SOURCE_COMMAND_DIR = join(PACKAGE_ROOT, 'command');
28
28
 
29
29
  // Check if running in interactive mode (has TTY)
30
30
  const isInteractive = process.stdin.isTTY && process.stdout.isTTY;
@@ -292,7 +292,7 @@ async function deploy() {
292
292
  await ensureDir(GLOBAL_CONFIG_DIR);
293
293
  await ensureDir(SKILLS_DIR);
294
294
  await ensureDir(AGENTS_DIR);
295
- await ensureDir(COMMANDS_DIR);
295
+ await ensureDir(COMMAND_DIR);
296
296
 
297
297
  // Get existing skills/agents for reporting
298
298
  const existingSkills = await getDirectoryNames(SKILLS_DIR);
@@ -333,12 +333,12 @@ async function deploy() {
333
333
  }
334
334
  }
335
335
 
336
- // Deploy commands
336
+ // Deploy command files
337
337
  if (isInteractive) {
338
338
  console.log('\n⌨️ Deploying Commands...');
339
339
  }
340
- await copyDir(SOURCE_COMMANDS_DIR, COMMANDS_DIR);
341
- const commandsCount = await getMarkdownFileCount(SOURCE_COMMANDS_DIR);
340
+ await copyDir(SOURCE_COMMAND_DIR, COMMAND_DIR);
341
+ const commandsCount = await getMarkdownFileCount(SOURCE_COMMAND_DIR);
342
342
  if (isInteractive) {
343
343
  console.log(` ✅ pipeline commands (${commandsCount} files) (overwritten)`);
344
344
  }
@@ -2,7 +2,6 @@
2
2
  description: Break final plan into atomic tasks
3
3
  subtask: true
4
4
  agent: building
5
- model: anthropic/claude-opus-4-6
6
5
  ---
7
6
 
8
7
  Read the approved final plan from `$ARGUMENTS` and produce atomic tasks.
@@ -2,7 +2,6 @@
2
2
  description: Implement validated batches with Codex
3
3
  subtask: true
4
4
  agent: building
5
- model: openai/gpt-5.3-codex
6
5
  ---
7
6
 
8
7
  Read `BATCHES` input from `$ARGUMENTS` and implement tasks batch-by-batch.
@@ -0,0 +1,19 @@
1
+ ---
2
+ description: Run build phase from approved plan
3
+ subtask: true
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>'
9
+ ---
10
+
11
+ Run build phase from the approved final plan passed in `$ARGUMENTS`.
12
+
13
+ Rules:
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`.
@@ -2,7 +2,6 @@
2
2
  description: Validate task batches for architecture and dependencies
3
3
  subtask: true
4
4
  agent: building
5
- model: opencode/gemini-3.1-pro
6
5
  ---
7
6
 
8
7
  Read `TASKS` input from `$ARGUMENTS` and create dependency-safe batches.
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  description: Finalize pipeline run and summarize outcomes
3
3
  subtask: true
4
- model: openai/gpt-5.4
5
4
  ---
6
5
 
7
6
  Finalize the pipeline run.
@@ -2,7 +2,6 @@
2
2
  description: Documentation write/update pass
3
3
  subtask: true
4
4
  agent: documenting
5
- model: openai/gpt-5.3-codex
6
5
  ---
7
6
 
8
7
  Document the approved code changes and update repository documentation.
@@ -16,7 +15,7 @@ Requirements:
16
15
 
17
16
  1. Use the latest approved review outputs and implementation artifacts as source of truth.
18
17
  2. Update all affected docs so behavior and operational steps match shipped code.
19
- 3. If this is a rework iteration, incorporate Gemini feedback from the previous documentation review.
18
+ 3. If this is a rework iteration, incorporate documentation reviewer feedback from the previous documentation review.
20
19
  4. Summarize what docs were changed and why.
21
20
 
22
21
  Return a structured documentation update summary (no file persistence).
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  description: Apply documentation approval gate
3
3
  subtask: true
4
- model: openai/gpt-5.4
5
4
  ---
6
5
 
7
6
  Read the latest documentation review input from `$ARGUMENTS` and apply gate exactly:
@@ -2,7 +2,6 @@
2
2
  description: Documentation review pass
3
3
  subtask: true
4
4
  agent: reviewing
5
- model: opencode/gemini-3.1-pro
6
5
  ---
7
6
 
8
7
  Review the latest Codex documentation pass for completeness, correctness, and repository doc consistency.
@@ -0,0 +1,25 @@
1
+ ---
2
+ description: Run documentation loop after review approval
3
+ subtask: true
4
+ loop:
5
+ max: 5
6
+ until: documentation updates are approved by DOCUMENTATION_REVIEWER_MODEL with zero unresolved documentation issues
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]'
11
+ - If `DOCUMENTATION_GATE=REWORK`, continue loop with review feedback for the next document pass.
12
+ ---
13
+
14
+ Execute the documentation stage for the current approved implementation.
15
+
16
+ Skill requirements:
17
+
18
+ 1. ChatGPT supervisor must load `ff-todo-management` to track documentation actions and rework items per iteration.
19
+ 2. Documentation reviewer should use `ff-severity-classification` when reporting documentation issues.
20
+
21
+ Stop criteria:
22
+
23
+ - approve when documentation reviewer confirms documentation is complete, accurate, and repository docs are updated
24
+ - continue loop while unresolved documentation issues exist and iteration < 5
25
+ - escalate to user when iteration reaches 5 without approval
@@ -2,7 +2,6 @@
2
2
  description: Apply planning consensus gate
3
3
  subtask: true
4
4
  agent: planning
5
- model: openai/gpt-5.4
6
5
  ---
7
6
 
8
7
  Apply the planning gate to the synthesized consensus input passed in `$ARGUMENTS`:
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Execute one planning iteration
3
+ subtask: true
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'
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]'
11
+ ---
12
+
13
+ Run one complete planning iteration for the active pipeline.
14
+
15
+ Requirements brief:
16
+
17
+ $ARGUMENTS
18
+
19
+ Rules:
20
+
21
+ 1. Keep each planner output structured and concise for synthesis.
22
+ 2. Pass outputs using `{as:name}` and `$RESULT[name]` rather than intermediate files.
23
+ 3. Each planning model must include architecture validation in its proposal.
24
+ 4. Continue only through gate outcomes defined in `/pipeline/planning/gate`.
@@ -2,14 +2,13 @@
2
2
  description: Synthesize planning consensus
3
3
  subtask: true
4
4
  agent: planning
5
- model: openai/gpt-5.4
6
5
  ---
7
6
 
8
7
  Synthesize the three model outputs from planning fan-out:
9
8
 
10
- - `$RESULT[plan-opus]`
11
- - `$RESULT[plan-gemini]`
12
- - `$RESULT[plan-codex]`
9
+ - `$RESULT[plan-reviewer]`
10
+ - `$RESULT[plan-architect]`
11
+ - `$RESULT[plan-developer]`
13
12
 
14
13
  Produce a consensus report (no file persistence).
15
14
 
@@ -2,7 +2,6 @@
2
2
  description: Apply review approval gate
3
3
  subtask: true
4
4
  agent: reviewing
5
- model: openai/gpt-5.4
6
5
  ---
7
6
 
8
7
  Read the synthesized review input from `$ARGUMENTS` and apply gate exactly:
@@ -0,0 +1,23 @@
1
+ ---
2
+ description: Run review loop for completed tasks
3
+ subtask: true
4
+ loop:
5
+ max: 10
6
+ until: all tasks in the active batch are approved with confidence >=95 and zero unresolved issues
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]
15
+ ---
16
+
17
+ Execute the review loop for the current completed tasks/rework report.
18
+
19
+ Stop criteria:
20
+
21
+ - approve when `>=95` confidence and zero unresolved issues
22
+ - continue loop while unresolved issues exist and iteration < 10
23
+ - escalate to user when iteration reaches 10 without approval
@@ -2,10 +2,9 @@
2
2
  description: Synthesize independent reviews into one report
3
3
  subtask: true
4
4
  agent: reviewing
5
- model: openai/gpt-5.4
6
5
  ---
7
6
 
8
- Read the three review inputs passed in `$ARGUMENTS` (Opus, Gemini, Codex) and synthesize a single authoritative output.
7
+ Read the three review inputs passed in `$ARGUMENTS` (reviewer, architect, developer) and synthesize a single authoritative output.
9
8
 
10
9
  Required output:
11
10
 
@@ -2,7 +2,6 @@
2
2
  description: Build review brief from implementation outputs
3
3
  subtask: true
4
4
  agent: reviewing
5
- model: openai/gpt-5.4
6
5
  ---
7
6
 
8
7
  Prepare a review brief for the current completed task or rework output.
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Pipeline workflow entrypoint
3
+ subtask: true
4
+ 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>}'
10
+ ---
11
+
12
+ Start the deterministic Feature Factory pipeline with this requirements brief:
13
+
14
+ $ARGUMENTS
15
+
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
+ Execution requirements:
25
+
26
+ 1. Use `{as:name}` and `$RESULT[name]` for phase-to-phase handoff.
27
+ 2. Avoid file persistence for intermediate artifacts unless a command explicitly requires audit snapshots.
28
+ 3. Use command chaining, parallel fan-out, and loop gates from the `/pipeline/...` command tree.
29
+ 4. Do not skip planning, review, and documentation gates.
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.9",
4
+ "version": "0.6.10",
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",
@@ -15,7 +15,7 @@
15
15
  "assets",
16
16
  "skills",
17
17
  "agents",
18
- "commands",
18
+ "command",
19
19
  "bin"
20
20
  ],
21
21
  "keywords": [
@@ -1,19 +0,0 @@
1
- ---
2
- description: Run build phase from approved plan
3
- subtask: true
4
- return:
5
- - /pipeline/building/breakdown {as:build-tasks} $ARGUMENTS
6
- - /pipeline/building/validate-batch {as:build-batches} $RESULT[build-tasks]
7
- - /pipeline/building/implement-batch {as:build-implementation} $RESULT[build-batches]
8
- - /pipeline/reviewing/run {as:review-phase} $RESULT[build-implementation]
9
- ---
10
-
11
- Run build phase from the approved final plan passed in `$ARGUMENTS`.
12
-
13
- Rules:
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 is Codex-only via `building` with model `openai/gpt-5.3-codex`.
19
- 5. Send completed implementation output into reviewing via `/pipeline/reviewing/run`.
@@ -1,26 +0,0 @@
1
- ---
2
- description: Run documentation loop after review approval
3
- subtask: true
4
- model: openai/gpt-5.4
5
- loop:
6
- max: 5
7
- until: documentation updates are approved by Gemini with zero unresolved documentation issues
8
- return:
9
- - /pipeline/documentation/document {as:doc-pass} $ARGUMENTS
10
- - /pipeline/documentation/review {as:doc-review} $RESULT[doc-pass]
11
- - /pipeline/documentation/gate $RESULT[doc-review]
12
- - If `DOCUMENTATION_GATE=REWORK`, continue loop with review feedback for the next document pass.
13
- ---
14
-
15
- Execute the documentation stage for the current approved implementation.
16
-
17
- Skill requirements:
18
-
19
- 1. ChatGPT supervisor must load `ff-todo-management` to track documentation actions and rework items per iteration.
20
- 2. Gemini reviewer should use `ff-severity-classification` when reporting documentation issues.
21
-
22
- Stop criteria:
23
-
24
- - approve when Gemini confirms documentation is complete, accurate, and repository docs are updated
25
- - continue loop while unresolved documentation issues exist and iteration < 5
26
- - escalate to user when iteration reaches 5 without approval
@@ -1,25 +0,0 @@
1
- ---
2
- description: Execute one planning iteration
3
- subtask: true
4
- model: openai/gpt-5.4
5
- parallel:
6
- - /pipeline/planning/plan {model:anthropic/claude-opus-4-6 && as:plan-opus} [MODEL_TAG:opus] $ARGUMENTS
7
- - /pipeline/planning/plan {model:opencode/gemini-3.1-pro && as:plan-gemini} [MODEL_TAG:gemini] $ARGUMENTS
8
- - /pipeline/planning/plan {model:openai/gpt-5.3-codex && as:plan-codex} [MODEL_TAG:codex] $ARGUMENTS
9
- return:
10
- - /pipeline/planning/synthesize {as:plan-consensus} $RESULT[plan-opus] $RESULT[plan-gemini] $RESULT[plan-codex]
11
- - /pipeline/planning/gate $RESULT[plan-consensus]
12
- ---
13
-
14
- Run one complete planning iteration for the active pipeline.
15
-
16
- Requirements brief:
17
-
18
- $ARGUMENTS
19
-
20
- Rules:
21
-
22
- 1. Keep each planner output structured and concise for synthesis.
23
- 2. Pass outputs using `{as:name}` and `$RESULT[name]` rather than intermediate files.
24
- 3. Each planning model must include architecture validation in its proposal.
25
- 4. Continue only through gate outcomes defined in `/pipeline/planning/gate`.
@@ -1,24 +0,0 @@
1
- ---
2
- description: Run review loop for completed tasks
3
- subtask: true
4
- model: openai/gpt-5.4
5
- loop:
6
- max: 10
7
- until: all tasks in the active batch are approved with confidence >=95 and zero unresolved issues
8
- return:
9
- - /pipeline/reviewing/triage {as:review-brief} $ARGUMENTS
10
- - /pipeline/reviewing/review {model:anthropic/claude-opus-4-6 && as:review-opus} [MODEL_TAG:opus] $RESULT[review-brief]
11
- - /pipeline/reviewing/review {model:opencode/gemini-3.1-pro && as:review-gemini} [MODEL_TAG:gemini] $RESULT[review-brief]
12
- - /pipeline/reviewing/review {model:openai/gpt-5.3-codex && as:review-codex} [MODEL_TAG:codex] $RESULT[review-brief]
13
- - /pipeline/reviewing/synthesize {as:review-synthesis} $RESULT[review-opus] $RESULT[review-gemini] $RESULT[review-codex]
14
- - /pipeline/reviewing/gate $RESULT[review-synthesis]
15
- - If `REVIEW_GATE=REWORK`, invoke `/pipeline/building/implement-batch` to apply fixes before the next loop iteration.
16
- ---
17
-
18
- Execute the review loop for the current completed tasks/rework report.
19
-
20
- Stop criteria:
21
-
22
- - approve when `>=95` confidence and zero unresolved issues
23
- - continue loop while unresolved issues exist and iteration < 10
24
- - escalate to user when iteration reaches 10 without approval
@@ -1,22 +0,0 @@
1
- ---
2
- description: Pipeline workflow entrypoint
3
- subtask: true
4
- model: openai/gpt-5.4
5
- return:
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
- - If planning is BLOCKED or loop max was reached, stop and ask the user whether to continue planning iterations. Otherwise continue.
8
- - /pipeline/building/run {as:build-phase} $RESULT[planning-phase]
9
- - /pipeline/documentation/run $RESULT[build-phase]
10
- - /pipeline/complete
11
- ---
12
-
13
- Start the deterministic Feature Factory pipeline with this requirements brief:
14
-
15
- $ARGUMENTS
16
-
17
- Execution requirements:
18
-
19
- 1. Use `{as:name}` and `$RESULT[name]` for phase-to-phase handoff.
20
- 2. Avoid file persistence for intermediate artifacts unless a command explicitly requires audit snapshots.
21
- 3. Use command chaining, parallel fan-out, and loop gates from the `/pipeline/...` command tree.
22
- 4. Do not skip planning, review, and documentation gates.
File without changes