@flumecode/runner 0.15.0 → 0.17.0
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/dist/cli.js +730 -760
- package/package.json +1 -1
- package/skills-plugin/skills/create-release/SKILL.md +8 -4
- package/skills-plugin/skills/request-to-plan/SKILL.md +3 -0
- package/skills-plugin/skills/resolve-merge-conflict/SKILL.md +13 -5
- package/skills-plugin/skills/revise-implementation/SKILL.md +8 -8
- package/skills-plugin/skills/format-code-plugin-generator/SKILL.md +0 -64
- package/skills-plugin/skills/lint-plugin-generator/SKILL.md +0 -66
package/package.json
CHANGED
|
@@ -90,10 +90,14 @@ For **each package that has commits** (skip unchanged ones), call
|
|
|
90
90
|
if patch suggested: also offer minor and major), plus the current version as
|
|
91
91
|
"No change (keep X.Y.Z)".
|
|
92
92
|
|
|
93
|
-
Also
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
Also call `mcp__flume_widgets__single_select` for the notes confirmation, passing
|
|
94
|
+
the drafted release notes (the 3–10 bullet markdown) as its `body` so the user
|
|
95
|
+
can read them inside the question widget:
|
|
96
|
+
|
|
97
|
+
- `body`: the drafted release-notes markdown
|
|
98
|
+
- `question`: `Do the release notes look correct?`
|
|
99
|
+
- `options`: `Yes, use these notes`, `I'll edit them in the PR`
|
|
100
|
+
(You may still summarise in the reply text, but the notes MUST be in the widget `body`.)
|
|
97
101
|
|
|
98
102
|
**After calling widgets, end your turn.** Do NOT open a PR in Phase 1.
|
|
99
103
|
|
|
@@ -31,6 +31,7 @@ and determine which phase you are in:**
|
|
|
31
31
|
|
|
32
32
|
1. Investigate the repo enough to ask _informed_ questions — locate the relevant
|
|
33
33
|
files, existing patterns, and constraints. Never ask what the code answers.
|
|
34
|
+
If the request is a bug fix, investigate deeply enough to identify the **root cause** (the specific code or condition producing the incorrect behavior) before proceeding to Plan — you will need it for the `rootCause` field.
|
|
34
35
|
2. Identify genuine ambiguity only: scope, intended behavior, edge cases,
|
|
35
36
|
competing approaches, acceptance criteria. Skip anything you can reasonably
|
|
36
37
|
decide yourself.
|
|
@@ -64,8 +65,10 @@ Field-by-field guidance:
|
|
|
64
65
|
- **`goal`** — one or two sentences stating the outcome, phrased so it directly
|
|
65
66
|
answers the request's title and body. Must be achievable by the steps below
|
|
66
67
|
and nothing more.
|
|
68
|
+
- **`rootCause`** — required when `scope` is `fix`; omit for all other scopes. Identify the underlying cause of the bug — the specific code, logic, or condition that produces the incorrect behavior, **not** the symptom. To fill this accurately, you must investigate the codebase deeply enough to find the root cause before writing the plan.
|
|
67
69
|
- **`assumptions`** — anything you decided during investigation (including
|
|
68
70
|
unanswered defaults from Phase 1).
|
|
71
|
+
- **`requirements`** — **required; at least 1 item.** Plain-language statements of what this change must accomplish and why, written so a non-technical reader can follow them. Distinct from `acceptanceCriteria`: requirements explain intent and rationale; acceptance criteria are the machine-checkable proof. At least 1 item required.
|
|
69
72
|
- **`steps`** — an ordered list. For each step provide:
|
|
70
73
|
- **`title`** — a concise imperative phrase naming the step (e.g. "Add submit_plan schema to plan.ts").
|
|
71
74
|
- **`description`** — an array of bullet points that help the reviewer understand the upcoming `pseudoCode` and decide whether the plan and design are correct. Each item is a distinct, self-contained point about what is changing and why — not a single paragraph, and not a line-by-line restatement of the pseudo code. Use concrete file references (`path/to/file.ts`) and name the functions/symbols involved. Apply inline-code formatting to all identifiers.
|
|
@@ -93,8 +93,16 @@ before you finish. (You don't need to `git add`; the runner stages and commits f
|
|
|
93
93
|
|
|
94
94
|
## Your final reply
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
Call **`submit_report`** with the structured report. Fields:
|
|
97
|
+
|
|
98
|
+
- `summary`: one or two sentences on what the resolve run did.
|
|
99
|
+
- `filesChanged`: markdown list of files changed (from `git --no-pager diff --stat`).
|
|
100
|
+
- `codeQuality`: markdown: whether build/tests passed, any quality observations.
|
|
101
|
+
- `caveats`: markdown: anything deferred, risky, or worth the user's attention. Write `None.` if nothing.
|
|
102
|
+
- `acceptanceCriteria`: **leave this empty (`[]`)** — there is no plan to verify for a resolve run.
|
|
103
|
+
- `conflictResolution`: **required** — a markdown section, one paragraph or bullet per conflicted
|
|
104
|
+
file, explaining which side you kept and why (or how you merged both intents). Wrap file names
|
|
105
|
+
and code identifiers in inline backticks. This is what the user reads to understand how each
|
|
106
|
+
conflict was integrated.
|
|
107
|
+
|
|
108
|
+
The runner renders the report and appends the pull-request link — do not add one yourself.
|
|
@@ -41,7 +41,7 @@ actual code. Pick exactly one:
|
|
|
41
41
|
- **Re-plan** — the request meaningfully changes scope or direction, enough that a
|
|
42
42
|
fresh plan should be agreed before building. Call **`submit_plan`** with a `plans[]` array
|
|
43
43
|
containing the revised structured fields (same per-plan shape as the request-to-plan skill:
|
|
44
|
-
`scope`, `goal`, `assumptions`, `steps`, `acceptanceCriteria` — at least 2 —, `risks`,
|
|
44
|
+
`scope`, `goal`, `assumptions`, `requirements` — at least 1 —, `steps`, `acceptanceCriteria` — at least 2 —, `risks`,
|
|
45
45
|
`outOfScope`). Include only one entry for a revise turn. The runner posts it as a revision
|
|
46
46
|
the user can accept; make no code changes this turn.
|
|
47
47
|
- **Implement** — the request is clear and reasonable. Make the change (via
|
|
@@ -80,13 +80,13 @@ essentials:
|
|
|
80
80
|
Your last message **is** the comment posted to the plan thread — write it for the
|
|
81
81
|
user:
|
|
82
82
|
|
|
83
|
-
- **Implemented:**
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
pull-request link
|
|
83
|
+
- **Implemented:** call **`submit_report`** with the structured report, exactly as
|
|
84
|
+
`implement-plan` does. Include one `acceptanceCriteria` entry per plan AC (with a
|
|
85
|
+
met / not_met / unclear verdict and the diff hunk(s) that prove it), plus the four
|
|
86
|
+
required markdown sections (`summary`, `filesChanged`, `codeQuality`, `caveats`).
|
|
87
|
+
Base `filesChanged` and evidence on the actual `git --no-pager diff`, not on what
|
|
88
|
+
a subagent claimed; if the diff is empty, say nothing was changed. The runner
|
|
89
|
+
renders the report and appends the pull-request link — do not add one yourself.
|
|
90
90
|
- **Clarify / push back:** your question or reasoning, as prose (plus any widget).
|
|
91
91
|
- **Re-plan:** you called `submit_plan`; the rendered plan is posted automatically,
|
|
92
92
|
so keep any extra reply text minimal.
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: format-code-plugin-generator
|
|
3
|
-
description: >-
|
|
4
|
-
Generate a concrete plan to install the FlumeCode Format plugin for THIS repo —
|
|
5
|
-
a .flumecode/plugins/format-code/ manifest wired to the pre-commit socket that
|
|
6
|
-
auto-formats code (prettier --write) so changes ride into the commit.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# format-code-plugin-generator
|
|
10
|
-
|
|
11
|
-
You generate a concrete, repo-specific plan to install the FlumeCode Format
|
|
12
|
-
plugin. You work **read-only**: inspect the repo and produce a plan via
|
|
13
|
-
`submit_plan`; never edit files.
|
|
14
|
-
|
|
15
|
-
## Orient yourself first
|
|
16
|
-
|
|
17
|
-
Before producing the plan, inspect:
|
|
18
|
-
|
|
19
|
-
1. `.flumecode/wiki/README.md` and `components/plugins.md` (if present) for context.
|
|
20
|
-
2. `package.json` `scripts` — look for `format`, `format:write`, `prettier` references.
|
|
21
|
-
3. `.prettierrc*` — confirm Prettier is configured.
|
|
22
|
-
4. `.husky/pre-commit` — find the existing formatting step this plugin replaces.
|
|
23
|
-
|
|
24
|
-
From this, determine the **exact shell command** the `run` script should execute
|
|
25
|
-
(e.g. `pnpm format`). Do not hard-code — derive from the repo.
|
|
26
|
-
|
|
27
|
-
## Produce the plan
|
|
28
|
-
|
|
29
|
-
Call `submit_plan` **once**, passing a `plans` array with one entry whose steps
|
|
30
|
-
instruct the implementer to create:
|
|
31
|
-
|
|
32
|
-
### Artifact — `.flumecode/plugins/format-code/plugin.json`
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"key": "format-code",
|
|
37
|
-
"socket": "pre-commit",
|
|
38
|
-
"run": "<detected format write command>"
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Derive `run` from the repo's detected commands (e.g. `pnpm format`). Do not hard-code — include the actual commands discovered in the Orient step.
|
|
43
|
-
|
|
44
|
-
### Manifest shape
|
|
45
|
-
|
|
46
|
-
The manifest `plugin.json` must have exactly these fields:
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
{ key, socket, run }
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
This is the shape the FlumeCode plugin loader expects.
|
|
53
|
-
|
|
54
|
-
### Acceptance criteria the plan must include
|
|
55
|
-
|
|
56
|
-
- `.flumecode/plugins/format-code/plugin.json` exists with `key: "format-code"`, `socket: "pre-commit"`, and `run` set to the detected write-format command.
|
|
57
|
-
- The `run` command reformats files in place and exits 0; reformatted files are staged and included in the commit.
|
|
58
|
-
|
|
59
|
-
## Always
|
|
60
|
-
|
|
61
|
-
- Stay read-only. Produce the plan via `submit_plan`; never edit files.
|
|
62
|
-
- The plan must be specific enough for an `implement-plan` run to execute
|
|
63
|
-
without re-deriving the commands — include the actual detected commands in
|
|
64
|
-
the step descriptions and artifact content.
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lint-plugin-generator
|
|
3
|
-
description: >-
|
|
4
|
-
Generate a concrete plan to install the FlumeCode Lint plugin for THIS repo —
|
|
5
|
-
a .flumecode/plugins/lint/ manifest wired to the pre-commit socket that runs
|
|
6
|
-
the repo's lint/format checks.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# lint-plugin-generator
|
|
10
|
-
|
|
11
|
-
You generate a concrete, repo-specific plan to install the FlumeCode Lint
|
|
12
|
-
plugin. You work **read-only**: inspect the repo and produce a plan via
|
|
13
|
-
`submit_plan`; never edit files.
|
|
14
|
-
|
|
15
|
-
## Orient yourself first
|
|
16
|
-
|
|
17
|
-
Before producing the plan, inspect:
|
|
18
|
-
|
|
19
|
-
1. `.flumecode/wiki/README.md` and `components/skills-plugin.md` (if present) for context.
|
|
20
|
-
2. `package.json` `scripts` — look for `lint`, `format`, `format:check`, `typecheck`, `test`.
|
|
21
|
-
3. `.lintstagedrc.json` / `.lintstagedrc.js` — staged-file formatters.
|
|
22
|
-
4. `.husky/pre-commit` — the exact commands the pre-commit hook already runs.
|
|
23
|
-
5. ESLint config (`eslint.config.*`, `.eslintrc.*`) and Prettier config (`.prettierrc.*`) to confirm tools are present.
|
|
24
|
-
|
|
25
|
-
From this, determine the **exact shell commands** the run script should execute
|
|
26
|
-
(e.g. `pnpm exec lint-staged && pnpm lint && pnpm typecheck`). Do not
|
|
27
|
-
hard-code — derive from the repo.
|
|
28
|
-
|
|
29
|
-
## Produce the plan
|
|
30
|
-
|
|
31
|
-
Call `submit_plan` **once**, passing a `plans` array with one entry whose steps
|
|
32
|
-
instruct the implementer to create:
|
|
33
|
-
|
|
34
|
-
### Artifact 1 — `.flumecode/plugins/lint/plugin.json`
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"key": "lint",
|
|
39
|
-
"socket": "pre-commit",
|
|
40
|
-
"run": "<detected lint/format/typecheck command chain>"
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Derive `run` from the repo's detected commands (e.g. `pnpm exec lint-staged && pnpm lint && pnpm typecheck && pnpm test`). Do not hard-code — include the actual commands discovered in the Orient step.
|
|
45
|
-
|
|
46
|
-
### Manifest shape
|
|
47
|
-
|
|
48
|
-
The manifest `plugin.json` must have exactly these fields:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
{ key, socket, run }
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
This is the shape the FlumeCode plugin loader expects.
|
|
55
|
-
|
|
56
|
-
### Acceptance criteria the plan must include
|
|
57
|
-
|
|
58
|
-
- `.flumecode/plugins/lint/plugin.json` exists with `key: "lint"`, `socket: "pre-commit"`, and `run` set to the detected command chain.
|
|
59
|
-
- The `run` command exits non-zero on any lint/format/typecheck failure.
|
|
60
|
-
|
|
61
|
-
## Always
|
|
62
|
-
|
|
63
|
-
- Stay read-only. Produce the plan via `submit_plan`; never edit files.
|
|
64
|
-
- The plan must be specific enough for an `implement-plan` run to execute
|
|
65
|
-
without re-deriving the commands — include the actual detected commands in
|
|
66
|
-
the step descriptions and artifact content.
|