@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.
- package/README.md +19 -14
- package/agents/pipeline.md +14 -5
- package/bin/ff-deploy.js +7 -7
- package/{commands → command}/pipeline/building/breakdown.md +0 -1
- package/{commands → command}/pipeline/building/implement-batch.md +0 -1
- package/command/pipeline/building/run.md +19 -0
- package/{commands → command}/pipeline/building/validate-batch.md +0 -1
- package/{commands → command}/pipeline/complete.md +0 -1
- package/{commands → command}/pipeline/documentation/document.md +1 -2
- package/{commands → command}/pipeline/documentation/gate.md +0 -1
- package/{commands → command}/pipeline/documentation/review.md +0 -1
- package/command/pipeline/documentation/run.md +25 -0
- package/{commands → command}/pipeline/planning/gate.md +0 -1
- package/command/pipeline/planning/run.md +24 -0
- package/{commands → command}/pipeline/planning/synthesize.md +3 -4
- package/{commands → command}/pipeline/reviewing/gate.md +0 -1
- package/command/pipeline/reviewing/run.md +23 -0
- package/{commands → command}/pipeline/reviewing/synthesize.md +1 -2
- package/{commands → command}/pipeline/reviewing/triage.md +0 -1
- package/command/pipeline/start.md +29 -0
- package/package.json +2 -2
- package/commands/pipeline/building/run.md +0 -19
- package/commands/pipeline/documentation/run.md +0 -26
- package/commands/pipeline/planning/run.md +0 -25
- package/commands/pipeline/reviewing/run.md +0 -24
- package/commands/pipeline/start.md +0 -22
- /package/{commands → command}/pipeline/planning/plan.md +0 -0
- /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
|
-
- `
|
|
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 `
|
|
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 `
|
|
41
|
-
- Coordinator and synthesis model
|
|
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
|
|
52
|
+
## Model Routing
|
|
53
53
|
|
|
54
|
-
-
|
|
55
|
-
-
|
|
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):
|
|
58
|
-
- Implementation:
|
|
59
|
-
- Review (with architecture validation):
|
|
60
|
-
- Rework path: `/pipeline/reviewing/run` re-enters implementation via `/pipeline/building/implement-batch` when gate status is `REWORK`
|
|
61
|
-
- Documentation stage:
|
|
62
|
-
- Documentation stage skill usage:
|
|
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:
|
|
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
|
package/agents/pipeline.md
CHANGED
|
@@ -26,12 +26,13 @@ You are the pipeline orchestrator.
|
|
|
26
26
|
## Responsibilities
|
|
27
27
|
|
|
28
28
|
1. Gather and confirm requirements.
|
|
29
|
-
2.
|
|
30
|
-
3.
|
|
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 `
|
|
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
|
-
|
|
46
|
+
Before execution, confirm this default model set (allow overrides):
|
|
46
47
|
|
|
47
|
-
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
336
|
+
// Deploy command files
|
|
337
337
|
if (isInteractive) {
|
|
338
338
|
console.log('\n⌨️ Deploying Commands...');
|
|
339
339
|
}
|
|
340
|
-
await copyDir(
|
|
341
|
-
const commandsCount = await getMarkdownFileCount(
|
|
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
|
}
|
|
@@ -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: 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
|
|
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).
|
|
@@ -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
|
|
@@ -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-
|
|
11
|
-
- `$RESULT[plan-
|
|
12
|
-
- `$RESULT[plan-
|
|
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
|
|
|
@@ -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` (
|
|
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
|
|
|
@@ -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.
|
|
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
|
-
"
|
|
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
|
|
File without changes
|