devflow-kit 3.7.0 → 3.9.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/CHANGELOG.md +479 -1
- package/README.md +15 -15
- package/dist/agents/code.md +6 -8
- package/dist/agents/design.md +1 -1
- package/dist/agents/fix.md +7 -8
- package/dist/agents/git.md +3 -3
- package/dist/agents/harden.md +1 -1
- package/dist/agents/refactor.md +2 -4
- package/dist/agents/review.md +4 -4
- package/dist/agents/skim.md +2 -2
- package/dist/agents/triage.md +9 -2
- package/dist/cli/commands/capture.js +1 -1
- package/dist/cli/commands/curation-move-io.js +102 -0
- package/dist/cli/commands/curation-move-step.js +374 -0
- package/dist/cli/commands/curation.js +808 -0
- package/dist/cli/commands/gate-level-prompts.js +428 -0
- package/dist/cli/commands/gates.js +35 -11
- package/dist/cli/commands/init-seed.js +11 -8
- package/dist/cli/commands/init.js +244 -57
- package/dist/cli/commands/memory.js +60 -13
- package/dist/cli/commands/prompt-io.js +37 -0
- package/dist/cli/commands/uninstall.js +157 -17
- package/dist/cli.js +2 -2
- package/dist/commands/bug-analysis.md +25 -36
- package/dist/commands/code-review.md +40 -44
- package/dist/commands/debug.md +5 -5
- package/dist/commands/dynamic-build.md +26 -25
- package/dist/commands/dynamic-plan.md +5 -5
- package/dist/commands/dynamic-profile.md +5 -5
- package/dist/commands/dynamic-tickets.md +5 -5
- package/dist/commands/explore.md +6 -6
- package/dist/commands/implement.md +53 -82
- package/dist/commands/plan.md +6 -6
- package/dist/commands/release.md +5 -5
- package/dist/commands/research.md +6 -6
- package/dist/commands/resolve.md +39 -41
- package/dist/commands/self-review.md +5 -13
- package/dist/core/area-pause-notice.js +44 -0
- package/dist/core/assets.js +20 -20
- package/dist/core/curate-tuning-config.js +5 -6
- package/dist/core/curation-move-notice.js +84 -0
- package/dist/core/curation-move-skip.js +35 -0
- package/dist/core/curation-move.js +35 -0
- package/dist/core/curation-queue-cleanup.js +135 -0
- package/dist/core/curation-store.js +99 -0
- package/dist/core/{learning-variants.js → curation-variants.js} +65 -41
- package/dist/core/echo-value.js +11 -5
- package/dist/core/evidence-policy.js +11 -9
- package/dist/core/feature-switch.js +95 -19
- package/dist/core/fs-atomic.js +1 -1
- package/dist/core/gate-level.js +10 -2
- package/dist/core/git.js +16 -14
- package/dist/core/ledger-root.js +82 -22
- package/dist/core/linked-path.js +4 -4
- package/dist/core/manifest-lock.js +238 -0
- package/dist/core/manifest.js +58 -14
- package/dist/core/migrations.js +1 -13
- package/dist/core/observations.js +2 -2
- package/dist/core/plugins.js +19 -19
- package/dist/core/pool.js +26 -0
- package/dist/core/project-paths.js +103 -34
- package/dist/core/queue-drain.js +2 -2
- package/dist/core/tracked-areas.js +159 -0
- package/dist/core/tracker.js +1 -1
- package/dist/{learning-off → curation-off}/agents/code.md +6 -8
- package/dist/{learning-off → curation-off}/agents/fix.md +7 -8
- package/dist/{learning-off → curation-off}/agents/refactor.md +2 -4
- package/dist/{learning-off → curation-off}/agents/review.md +3 -3
- package/dist/{learning-off → curation-off}/agents/triage.md +8 -1
- package/dist/{learning-off → curation-off}/commands/bug-analysis.md +20 -31
- package/dist/{learning-off → curation-off}/commands/code-review.md +37 -41
- package/dist/{learning-off → curation-off}/commands/debug.md +2 -2
- package/dist/{learning-off → curation-off}/commands/dynamic-build.md +23 -22
- package/dist/{learning-off → curation-off}/commands/explore.md +2 -2
- package/dist/{learning-off → curation-off}/commands/implement.md +50 -79
- package/dist/{learning-off → curation-off}/commands/plan.md +2 -2
- package/dist/{learning-off → curation-off}/commands/resolve.md +36 -38
- package/dist/{learning-off → curation-off}/commands/self-review.md +2 -10
- package/dist/hud/components/{learning-counts.js → curation-counts.js} +63 -17
- package/dist/hud/config.js +1 -1
- package/dist/hud/index.js +6 -6
- package/dist/hud/render.js +3 -3
- package/dist/skills/git/references/pr/post-resolution-summary.md +12 -11
- package/dist/skills/git/references/pr/post-review-summary.md +12 -11
- package/dist/skills/git/references/pr/update-pr-evidence.md +2 -2
- package/dist/skills/git/references/pr/validate-branch.md +8 -5
- package/dist/skills/git/references/publication-gate.md +6 -7
- package/dist/skills/git/references/tracker/github/ensure-pr-ready.md +13 -5
- package/dist/skills/git/references/tracker/github/manage-debt.md +6 -2
- package/dist/skills/git/references/tracker/jira/ensure-pr-ready.md +13 -5
- package/dist/skills/git/references/tracker/jira/manage-debt.md +6 -2
- package/dist/skills/git/references/tracker/linear/ensure-pr-ready.md +13 -5
- package/dist/skills/git/references/tracker/linear/manage-debt.md +6 -2
- package/dist/targets/claude-code/{learning-install.js → curation-install.js} +85 -65
- package/dist/targets/claude-code/installer.js +15 -15
- package/dist/targets/claude-code/language-stamp.js +5 -5
- package/dist/targets/claude-code/post-install.js +2 -2
- package/dist/targets/claude-code/tracker-servers.js +1 -1
- package/package.json +3 -2
- package/src/assets/agents/_partials/_code.mds +11 -11
- package/src/assets/agents/code.mds +6 -6
- package/src/assets/agents/curate.md +8 -8
- package/src/assets/agents/debug.mds +6 -6
- package/src/assets/agents/design.mds +18 -18
- package/src/assets/agents/evaluate.md +6 -12
- package/src/assets/agents/fix.mds +7 -6
- package/src/assets/agents/git.mds +3 -3
- package/src/assets/agents/harden.mds +7 -7
- package/src/assets/agents/knowledge.mds +23 -23
- package/src/assets/agents/refactor.mds +2 -2
- package/src/assets/agents/research.mds +15 -15
- package/src/assets/agents/review.mds +43 -43
- package/src/assets/agents/skim.mds +11 -11
- package/src/assets/agents/triage.mds +29 -22
- package/src/assets/agents/validate.md +30 -50
- package/src/assets/commands/_partials/_decisions.mds +22 -20
- package/src/assets/commands/_partials/_engine.mds +8 -8
- package/src/assets/commands/_partials/_knowledge.mds +29 -15
- package/src/assets/commands/_partials/_preamble.mds +4 -4
- package/src/assets/commands/_partials/_settings.mds +3 -3
- package/src/assets/commands/_partials/_wave.mds +7 -7
- package/src/assets/commands/bug-analysis.mds +37 -48
- package/src/assets/commands/code-review.mds +53 -57
- package/src/assets/commands/debug.mds +14 -14
- package/src/assets/commands/dynamic-build.mds +38 -37
- package/src/assets/commands/dynamic-plan.mds +22 -22
- package/src/assets/commands/dynamic-profile.mds +2 -2
- package/src/assets/commands/dynamic-tickets.mds +8 -8
- package/src/assets/commands/explore.mds +20 -20
- package/src/assets/commands/implement.mds +77 -98
- package/src/assets/commands/plan.mds +27 -27
- package/src/assets/commands/release.mds +12 -12
- package/src/assets/commands/research.mds +19 -19
- package/src/assets/commands/resolve.mds +66 -60
- package/src/assets/commands/self-review.mds +20 -20
- package/src/assets/mds/git/_ops.mds +9 -2
- package/src/assets/mds/git/_ops_pr.mds +21 -11
- package/src/assets/mds/git/_ops_steps.mds +20 -4
- package/src/assets/mds/git/_pr.mds +21 -18
- package/src/assets/mds/git/_references.mds +6 -7
- package/src/assets/mds/tracker/_github.mds +1 -4
- package/src/assets/mds/tracker/_jira.mds +1 -4
- package/src/assets/mds/tracker/_linear.mds +1 -4
- package/src/assets/rules/quality.md +1 -0
- package/src/assets/scripts/ci-wait.cjs +389 -92
- package/src/assets/scripts/hooks/background-memory-update +81 -3
- package/src/assets/scripts/hooks/capture-prompt +12 -12
- package/src/assets/scripts/hooks/capture-question +11 -11
- package/src/assets/scripts/hooks/capture-turn +12 -12
- package/src/assets/scripts/hooks/{learning-lock → curation-lock} +2 -2
- package/src/assets/scripts/hooks/curation-move +293 -0
- package/src/assets/scripts/hooks/ensure-devflow-init +45 -13
- package/src/assets/scripts/hooks/ensure-proxy +4 -4
- package/src/assets/scripts/hooks/ensure-root-gitignore +4 -4
- package/src/assets/scripts/hooks/git-marker +81 -0
- package/src/assets/scripts/hooks/json-helper.cjs +176 -51
- package/src/assets/scripts/hooks/json-parse +1 -1
- package/src/assets/scripts/hooks/lib/curation-move.cjs +1582 -0
- package/src/assets/scripts/hooks/lib/{learning-store.cjs → curation-store.cjs} +308 -122
- package/src/assets/scripts/hooks/lib/decisions-format.cjs +3 -3
- package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +24 -7
- package/src/assets/scripts/hooks/lib/project-paths.cjs +132 -39
- package/src/assets/scripts/hooks/lib/render-decisions.cjs +42 -22
- package/src/assets/scripts/hooks/lib/tracked-areas.cjs +452 -0
- package/src/assets/scripts/hooks/memory-permission +10 -2
- package/src/assets/scripts/hooks/memory-worker +12 -1
- package/src/assets/scripts/hooks/pre-compact-memory +17 -16
- package/src/assets/scripts/hooks/queue-append +444 -102
- package/src/assets/scripts/hooks/resolve-project-root +2 -2
- package/src/assets/scripts/hooks/session-start-context +198 -72
- package/src/assets/scripts/hooks/session-start-memory +42 -43
- package/src/assets/scripts/lib/project-config.cjs +12 -5
- package/src/assets/scripts/pr-evidence.cjs +5 -2
- package/src/assets/scripts/resolve-base.cjs +1043 -0
- package/src/assets/scripts/resolve-settings.cjs +283 -45
- package/src/assets/scripts/verify-evidence.cjs +307 -75
- package/src/assets/skills/agent-references/SKILL.md +11 -2
- package/src/assets/skills/agent-references/references/commands/implement-levels.md +29 -0
- package/src/assets/skills/agent-references/references/commands/implement-revalidate.md +6 -4
- package/src/assets/skills/agent-references/references/commands/resolve-levels.md +25 -0
- package/src/assets/skills/agent-references/references/synthesize/review.md +4 -4
- package/src/assets/skills/agent-references/references/triage/severity-tiers.md +43 -0
- package/src/assets/skills/agent-references/references/validate/passed-alone.md +14 -0
- package/src/assets/skills/apply-decisions/SKILL.md +1 -1
- package/src/assets/skills/docs-framework/SKILL.md +7 -7
- package/src/assets/skills/docs-framework/references/patterns.md +3 -4
- package/src/assets/skills/quality-gates/SKILL.md +1 -1
- package/src/assets/skills/worktree-support/references/roots.md +2 -2
- package/templates/lint-pack/.lint-pack.conf +86 -0
- package/templates/lint-pack/README.md +190 -0
- package/templates/lint-pack/lint-pack.sh +905 -0
- package/dist/cli/commands/learning.js +0 -554
- package/dist/core/learning-queue-cleanup.js +0 -27
- package/dist/core/learning-store.js +0 -61
- /package/dist/{learning-off → curation-off}/agents/debug.md +0 -0
- /package/dist/{learning-off → curation-off}/agents/design.md +0 -0
- /package/dist/{learning-off → curation-off}/agents/harden.md +0 -0
- /package/dist/{learning-off → curation-off}/agents/knowledge.md +0 -0
- /package/dist/{learning-off → curation-off}/agents/research.md +0 -0
- /package/dist/{learning-off → curation-off}/agents/skim.md +0 -0
- /package/dist/{learning-off → curation-off}/commands/dynamic-plan.md +0 -0
- /package/dist/{learning-off → curation-off}/commands/dynamic-profile.md +0 -0
- /package/dist/{learning-off → curation-off}/commands/dynamic-tickets.md +0 -0
- /package/dist/{learning-off → curation-off}/commands/release.md +0 -0
- /package/dist/{learning-off → curation-off}/commands/research.md +0 -0
|
@@ -11,12 +11,12 @@ output-dir: dist/commands
|
|
|
11
11
|
@import "./_partials/_settings.mds" as settings
|
|
12
12
|
{{authoring_preamble()}}
|
|
13
13
|
|
|
14
|
-
<!--
|
|
14
|
+
<!-- curation:on -->
|
|
15
15
|
### Settings line
|
|
16
16
|
|
|
17
17
|
{{settings.settings_resolve()}}
|
|
18
18
|
|
|
19
|
-
<!--
|
|
19
|
+
<!-- curation:end -->
|
|
20
20
|
{{authoring_decisions()}}
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -52,12 +52,12 @@ Before authoring, verify:
|
|
|
52
52
|
|
|
53
53
|
Pass `{worktree}` to the workflow as its `root` argument, and its `slug` argument: the `{slug}` of the ticket directory (`tickets/{slug}/{ts}/`) when that is the ticket source, otherwise `wave`.
|
|
54
54
|
|
|
55
|
-
<!--
|
|
55
|
+
<!-- curation:on -->
|
|
56
56
|
**1. Apply decisions context**
|
|
57
57
|
|
|
58
58
|
Apply the `devflow:apply-decisions` algorithm to the DECISIONS_CONTEXT loaded by the decisions step above: scan the index, Read relevant entries, note verbatim ADR/PF IDs to inject into Design agent prompts.
|
|
59
59
|
|
|
60
|
-
<!--
|
|
60
|
+
<!-- curation:end -->
|
|
61
61
|
**2. Read the preference profile**
|
|
62
62
|
|
|
63
63
|
Check whether `~/.devflow/preference-profile.md` exists:
|
|
@@ -122,9 +122,9 @@ export const meta = {
|
|
|
122
122
|
// AskUserQuestion happens at the command boundary after this workflow returns — NOT here.
|
|
123
123
|
|
|
124
124
|
const ticketSource = args.ticketSource || args[0] || "see task description";
|
|
125
|
-
<!--
|
|
125
|
+
<!-- curation:on -->
|
|
126
126
|
const DECISIONS_CONTEXT = args.decisionsContext || ""; // injected before authoring
|
|
127
|
-
<!--
|
|
127
|
+
<!-- curation:end -->
|
|
128
128
|
const PREFERENCE_PROFILE = args.preferenceProfile || ""; // injected before authoring
|
|
129
129
|
const TP_CONTRACT = args.tpContract || ""; // the "Test-plan line (TP)" contract below — its paragraph and four bullets — passed verbatim as tpContract when invoking the workflow, never pasted into this script (it holds backticks)
|
|
130
130
|
const slug = args.slug || "wave";
|
|
@@ -146,9 +146,9 @@ const plans = await phase("plan-parallel", () =>
|
|
|
146
146
|
parallel((tickets || []).map(ticket => () =>
|
|
147
147
|
agent(`Write an implementation plan for this ticket.
|
|
148
148
|
Ticket: ${JSON.stringify(ticket)}
|
|
149
|
-
<!--
|
|
149
|
+
<!-- curation:on -->
|
|
150
150
|
Decisions context (apply devflow:apply-decisions; a plan file can be posted to the tracker, so state each decision in words, never by ID): ${DECISIONS_CONTEXT}
|
|
151
|
-
<!--
|
|
151
|
+
<!-- curation:end -->
|
|
152
152
|
The plan must cover: approach overview, affected files and modules, key design decisions, implementation sequence (what to build first), risks and mitigations, and any open questions you cannot resolve from the ticket alone.
|
|
153
153
|
Write a thorough but tight plan — every section must earn its place for a Code agent who has no other context.
|
|
154
154
|
Return: { ticketTitle, planMarkdown, openDecisions (array of genuine unknowns requiring user input) }.`, { agentType: "Design" })
|
|
@@ -192,9 +192,9 @@ Return: { ticketTitle, improvements (array), acceptanceCriteria (array of number
|
|
|
192
192
|
const crossCritic = await phase("cross-plan-critic", () =>
|
|
193
193
|
agent(`Cross-plan conflict audit.
|
|
194
194
|
All ticket plans + challenged criteria: ${JSON.stringify(challenged)}
|
|
195
|
-
<!--
|
|
195
|
+
<!-- curation:on -->
|
|
196
196
|
Decisions context: ${DECISIONS_CONTEXT}
|
|
197
|
-
<!--
|
|
197
|
+
<!-- curation:end -->
|
|
198
198
|
|
|
199
199
|
Audit:
|
|
200
200
|
1. API conflicts: two tickets defining the same API differently (different signatures, return types, error codes).
|
|
@@ -202,11 +202,11 @@ Audit:
|
|
|
202
202
|
3. Undeclared dependencies: ticket A's plan implicitly requires something ticket B provides, but no dependency is declared.
|
|
203
203
|
4. Scope overlap: two tickets both claim ownership of the same module or behavior.
|
|
204
204
|
|
|
205
|
-
<!--
|
|
205
|
+
<!-- curation:on -->
|
|
206
206
|
For each conflict found: state which two tickets are involved, describe the conflict precisely, and propose a resolution aligned with the decisions ledger.
|
|
207
|
-
<!--
|
|
207
|
+
<!-- curation:off -->
|
|
208
208
|
For each conflict found: state which two tickets are involved, describe the conflict precisely, and propose a resolution.
|
|
209
|
-
<!--
|
|
209
|
+
<!-- curation:end -->
|
|
210
210
|
|
|
211
211
|
Return: { conflicts (array of {tickets, conflictDescription, proposedResolution}), planAmendments (array of {ticketTitle, amendment}) }.`, { agentType: "Design" })
|
|
212
212
|
);
|
|
@@ -243,26 +243,26 @@ For each ticket, write ${OUTDIR}/{ticket-slug}-plan.md, {ticket-slug} being the
|
|
|
243
243
|
- ## Acceptance Criteria (numbered, positive + negative)
|
|
244
244
|
- ## Test Plan — the challenger's testPlan lines, verbatim, one per line, and nothing else: no prose, no blank line between them, no setup or outcome
|
|
245
245
|
- ## Test Scenarios — one line per TP, in TP order: TP-n: its setup, then its expected outcome, from testScenarios
|
|
246
|
-
<!--
|
|
246
|
+
<!-- curation:on -->
|
|
247
247
|
- ## Auto-Resolved Decisions (if any — list each as: decision → resolution → source, naming a recorded decision in words, never by ID)
|
|
248
|
-
<!--
|
|
248
|
+
<!-- curation:off -->
|
|
249
249
|
- ## Auto-Resolved Decisions (if any — list each as: decision → resolution → source)
|
|
250
|
-
<!--
|
|
250
|
+
<!-- curation:end -->
|
|
251
251
|
|
|
252
252
|
Then write ${OUTDIR}/DECISIONS-NEEDED.md:
|
|
253
|
-
<!--
|
|
253
|
+
<!-- curation:on -->
|
|
254
254
|
- ## Auto-Resolved Decisions — list each silently-resolved decision as: decision → resolution → source (preference profile / ADR-NNN), so auto-resolution is auditable and reversible. If none, write "None."
|
|
255
|
-
<!--
|
|
255
|
+
<!-- curation:off -->
|
|
256
256
|
- ## Auto-Resolved Decisions — list each silently-resolved decision as: decision → resolution → source (preference profile), so auto-resolution is auditable and reversible. If none, write "None."
|
|
257
|
-
<!--
|
|
257
|
+
<!-- curation:end -->
|
|
258
258
|
- ## Decisions Needed
|
|
259
259
|
- One section per open decision: what the decision is, why it matters, what options exist.
|
|
260
260
|
- Include cross-plan conflicts that were not auto-resolved.
|
|
261
|
-
<!--
|
|
261
|
+
<!-- curation:on -->
|
|
262
262
|
- If no decisions needed, write: "No open decisions — all settled by preference profile or existing ADRs."
|
|
263
|
-
<!--
|
|
263
|
+
<!-- curation:off -->
|
|
264
264
|
- If no decisions needed, write: "No open decisions — all settled by the preference profile."
|
|
265
|
-
<!--
|
|
265
|
+
<!-- curation:end -->
|
|
266
266
|
|
|
267
267
|
Return: { planPaths (array), decisionsNeededPath (string), decisionsNeededCount (number) }.`, { agentType: "Synthesize" })
|
|
268
268
|
);
|
|
@@ -7,12 +7,12 @@ output-dir: dist/commands
|
|
|
7
7
|
@import "./_partials/_settings.mds" as settings
|
|
8
8
|
{{authoring_preamble()}}
|
|
9
9
|
|
|
10
|
-
<!--
|
|
10
|
+
<!-- curation:on -->
|
|
11
11
|
### Settings line
|
|
12
12
|
|
|
13
13
|
{{settings.settings_resolve()}}
|
|
14
14
|
|
|
15
|
-
<!--
|
|
15
|
+
<!-- curation:end -->
|
|
16
16
|
{{authoring_decisions()}}
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -12,12 +12,12 @@ output-dir: dist/commands
|
|
|
12
12
|
@import "./_partials/_settings.mds" as settings
|
|
13
13
|
{{authoring_preamble()}}
|
|
14
14
|
|
|
15
|
-
<!--
|
|
15
|
+
<!-- curation:on -->
|
|
16
16
|
### Settings line
|
|
17
17
|
|
|
18
18
|
{{settings.settings_resolve()}}
|
|
19
19
|
|
|
20
|
-
<!--
|
|
20
|
+
<!-- curation:end -->
|
|
21
21
|
{{authoring_decisions()}}
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -61,12 +61,12 @@ Before you write the workflow script:
|
|
|
61
61
|
|
|
62
62
|
Pass `{worktree}` to the workflow as its `root` argument.
|
|
63
63
|
|
|
64
|
-
<!--
|
|
64
|
+
<!-- curation:on -->
|
|
65
65
|
**1. Apply decisions context**
|
|
66
66
|
|
|
67
67
|
Apply the `devflow:apply-decisions` algorithm to the DECISIONS_CONTEXT loaded by the decisions step above: scan the index, Read relevant entries, note the verbatim ADR/PF IDs you will inject into Design agent prompts.
|
|
68
68
|
|
|
69
|
-
<!--
|
|
69
|
+
<!-- curation:end -->
|
|
70
70
|
**2. Read and distill the initiative**
|
|
71
71
|
|
|
72
72
|
Read or note the user's input:
|
|
@@ -103,9 +103,9 @@ export const meta = {
|
|
|
103
103
|
const candidates = args.candidates || []; // [{title, summary, wave, dependsOn}]
|
|
104
104
|
const initiative = args.initiative || args[0] || "see task description";
|
|
105
105
|
const constraints = args.constraints || "";
|
|
106
|
-
<!--
|
|
106
|
+
<!-- curation:on -->
|
|
107
107
|
const DECISIONS_CONTEXT = args.decisionsContext || ""; // injected before authoring
|
|
108
|
-
<!--
|
|
108
|
+
<!-- curation:end -->
|
|
109
109
|
const slug = args.slug || initiative.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+/, '').slice(0, 50).replace(/-+$/, '') || 'untitled';
|
|
110
110
|
const now = new Date(), two = (n) => String(n).padStart(2, '0');
|
|
111
111
|
const ts = `${now.getFullYear()}-${two(now.getMonth() + 1)}-${two(now.getDate())}_${two(now.getHours())}${two(now.getMinutes())}`;
|
|
@@ -118,9 +118,9 @@ const drafts = await phase("draft", () =>
|
|
|
118
118
|
agent(`Draft ticket for initiative: "${initiative}"
|
|
119
119
|
Ticket: ${JSON.stringify(c)}
|
|
120
120
|
Constraints: ${constraints}
|
|
121
|
-
<!--
|
|
121
|
+
<!-- curation:on -->
|
|
122
122
|
Decisions context (apply devflow:apply-decisions; the ticket is filed to the tracker, so state each decision in words, never by ID): ${DECISIONS_CONTEXT}
|
|
123
|
-
<!--
|
|
123
|
+
<!-- curation:end -->
|
|
124
124
|
Write the ticket body following the ticket_body_template structure (Wave/Depends-on header, Summary, Scope with In/Out + anti-features, Invariants, numbered Acceptance Criteria with at least one negative criterion, Open Questions).
|
|
125
125
|
Return a JSON object with: title (string), summary (string), wave (number), dependsOn (array), bodyMarkdown (string), openQuestions (array).`, { agentType: "Design" })
|
|
126
126
|
))
|
|
@@ -32,34 +32,34 @@ $ARGUMENTS
|
|
|
32
32
|
|
|
33
33
|
## Phases
|
|
34
34
|
|
|
35
|
-
<!--
|
|
35
|
+
<!-- curation:on -->
|
|
36
36
|
### Phase 1: Load Decisions (Orchestrator-Local)
|
|
37
|
-
<!--
|
|
37
|
+
<!-- curation:off -->
|
|
38
38
|
### Phase 1: Resolve Settings
|
|
39
|
-
<!--
|
|
39
|
+
<!-- curation:end -->
|
|
40
40
|
|
|
41
|
-
<!--
|
|
41
|
+
<!-- curation:on -->
|
|
42
42
|
**Produces:** DECISIONS_CONTEXT
|
|
43
43
|
|
|
44
|
-
<!--
|
|
44
|
+
<!-- curation:end -->
|
|
45
45
|
{{settings.settings_resolve()}}
|
|
46
46
|
|
|
47
47
|
{{decisions_load()}}
|
|
48
|
-
<!--
|
|
48
|
+
<!-- curation:on -->
|
|
49
49
|
The orchestrator uses `DECISIONS_CONTEXT` locally when framing exploration — prior decisions and pitfalls suggest specific areas to investigate. Follow `devflow:apply-decisions` to Read full entry bodies on demand. **Do NOT pass `DECISIONS_CONTEXT` to Explore sub-agents** — decisions context stays in the orchestrator, not in the investigation workers.
|
|
50
50
|
|
|
51
|
-
<!--
|
|
51
|
+
<!-- curation:end -->
|
|
52
52
|
**No up-front feature knowledge load** — explore investigation workers read code directly to avoid confirmation bias. Feature knowledge is only created as a write-back at the end, after exploration is complete.
|
|
53
53
|
|
|
54
54
|
### Phase 2: Orient
|
|
55
55
|
|
|
56
56
|
**Produces:** ORIENT_OUTPUT
|
|
57
57
|
|
|
58
|
-
<!--
|
|
59
|
-
Spawn `Agent(subagent_type="Skim")` with `
|
|
60
|
-
<!--
|
|
58
|
+
<!-- curation:on -->
|
|
59
|
+
Spawn `Agent(subagent_type="Skim")` with `CURATION` from the settings line, to get codebase overview relevant to the exploration question:
|
|
60
|
+
<!-- curation:off -->
|
|
61
61
|
Spawn `Agent(subagent_type="Skim")` to get codebase overview relevant to the exploration question:
|
|
62
|
-
<!--
|
|
62
|
+
<!-- curation:end -->
|
|
63
63
|
|
|
64
64
|
- File structure and module boundaries in the target area
|
|
65
65
|
- Entry points and key abstractions
|
|
@@ -105,11 +105,11 @@ Present findings to user. Use AskUserQuestion to offer focused follow-up explora
|
|
|
105
105
|
|
|
106
106
|
### Phase 6: Suggest Feature Knowledge Creation (Conditional)
|
|
107
107
|
|
|
108
|
-
<!--
|
|
108
|
+
<!-- curation:on -->
|
|
109
109
|
**Requires:** MERGED_FINDINGS, DECISIONS_CONTEXT
|
|
110
|
-
<!--
|
|
110
|
+
<!-- curation:off -->
|
|
111
111
|
**Requires:** MERGED_FINDINGS
|
|
112
|
-
<!--
|
|
112
|
+
<!-- curation:end -->
|
|
113
113
|
**Produces:** FEATURE_KNOWLEDGE_STATUS (created | skipped)
|
|
114
114
|
|
|
115
115
|
1. Check if matching feature knowledge already exists by reading `{worktree}/.devflow/features/index.md` (or globbing frontmatter if absent). If covered → skip
|
|
@@ -143,11 +143,11 @@ Structured exploration findings with concrete code references:
|
|
|
143
143
|
```
|
|
144
144
|
/explore (orchestrator)
|
|
145
145
|
│
|
|
146
|
-
<!--
|
|
146
|
+
<!-- curation:on -->
|
|
147
147
|
├─ Phase 1: Load Decisions (Orchestrator-Local)
|
|
148
|
-
<!--
|
|
148
|
+
<!-- curation:off -->
|
|
149
149
|
├─ Phase 1: Resolve Settings
|
|
150
|
-
<!--
|
|
150
|
+
<!-- curation:end -->
|
|
151
151
|
│
|
|
152
152
|
├─ Phase 2: Orient
|
|
153
153
|
│ └─ Skim agent (codebase overview)
|
|
@@ -168,11 +168,11 @@ Structured exploration findings with concrete code references:
|
|
|
168
168
|
|
|
169
169
|
1. **Structure over browsing** - Every claim must cite file:line references
|
|
170
170
|
2. **Parallel execution** - All explorers run simultaneously for speed
|
|
171
|
-
<!--
|
|
171
|
+
<!-- curation:on -->
|
|
172
172
|
3. **Knowledge-informed** - Prior decisions guide where to look; NO pre-loaded feature knowledge in sub-agents (avoids confirmation bias)
|
|
173
|
-
<!--
|
|
173
|
+
<!-- curation:off -->
|
|
174
174
|
3. **Knowledge-informed** - NO pre-loaded feature knowledge in sub-agents (avoids confirmation bias)
|
|
175
|
-
<!--
|
|
175
|
+
<!-- curation:end -->
|
|
176
176
|
4. **User-driven depth** - Present findings, then offer drill-down into specific areas
|
|
177
177
|
|
|
178
178
|
## Error Handling
|