@bendyline/gilde 0.1.55 → 0.1.56

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 (185) hide show
  1. package/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
  2. package/authoring/gstack/wave.json +2 -2
  3. package/data/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +137 -0
  4. package/data/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
  5. package/data/chat-models/index.json +1 -1
  6. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +16 -8
  7. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/craftbook.json +618 -0
  8. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/test.json +228 -0
  9. package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +6 -3
  10. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +8 -8
  11. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +10 -5
  12. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +16 -8
  13. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +12 -6
  14. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/craftbook.json +602 -0
  15. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/test.json +290 -0
  16. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +18 -9
  17. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +10 -5
  18. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +12 -6
  19. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/craftbook.json +282 -0
  20. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/test.json +143 -0
  21. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +12 -6
  22. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +282 -0
  23. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/test.json +108 -0
  24. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +8 -8
  25. package/data/craftbook-templates/br/branding-website/versions/1.1.3/craftbook.json +335 -0
  26. package/data/craftbook-templates/br/branding-website/versions/1.1.3/test.json +164 -0
  27. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +8 -8
  28. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/craftbook.json +621 -0
  29. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/test.json +376 -0
  30. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/craftbook.json +730 -0
  31. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/test.json +221 -0
  32. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +8 -8
  33. package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +8 -8
  34. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +10 -5
  35. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +25 -11
  36. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/craftbook.json +587 -0
  37. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/test.json +225 -0
  38. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +28 -14
  39. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +8 -8
  40. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +16 -8
  41. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +18 -9
  42. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/craftbook.json +605 -0
  43. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/test.json +252 -0
  44. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +18 -9
  45. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +23 -15
  46. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +28 -14
  47. package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +4 -4
  48. package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +3 -0
  49. package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +341 -0
  50. package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +169 -0
  51. package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +14 -7
  52. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +4 -4
  53. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +3 -0
  54. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +345 -0
  55. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +187 -0
  56. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +26 -13
  57. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +8 -8
  58. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +7 -7
  59. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +7 -7
  60. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +285 -0
  61. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/test.json +104 -0
  62. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/craftbook.json +284 -0
  63. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/test.json +162 -0
  64. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +38 -19
  65. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +12 -6
  66. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +286 -0
  67. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/test.json +104 -0
  68. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +14 -7
  69. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/craftbook.json +621 -0
  70. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/test.json +235 -0
  71. package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +16 -8
  72. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/craftbook.json +616 -0
  73. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/test.json +201 -0
  74. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +285 -0
  75. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/test.json +104 -0
  76. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +119 -55
  77. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +285 -0
  78. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/test.json +92 -0
  79. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +18 -9
  80. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/craftbook.json +324 -0
  81. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/test.json +161 -0
  82. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +11 -4
  83. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/craftbook.json +566 -0
  84. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/test.json +191 -0
  85. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +10 -5
  86. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +7 -10
  87. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/craftbook.json +595 -0
  88. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/test.json +139 -0
  89. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/craftbook.json +277 -0
  90. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/test.json +104 -0
  91. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/craftbook.json +327 -0
  92. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/test.json +162 -0
  93. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/craftbook.json +718 -0
  94. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/test.json +239 -0
  95. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +285 -0
  96. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/test.json +162 -0
  97. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +8 -8
  98. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +11 -4
  99. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/craftbook.json +610 -0
  100. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/test.json +220 -0
  101. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/craftbook.json +343 -0
  102. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/test.json +176 -0
  103. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/craftbook.json +566 -0
  104. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/test.json +141 -0
  105. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/craftbook.json +298 -0
  106. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/test.json +180 -0
  107. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +11 -4
  108. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +48 -23
  109. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +1 -1
  110. package/data/craftbook-templates/index.json +1 -1
  111. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +11 -4
  112. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/craftbook.json +277 -0
  113. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/test.json +104 -0
  114. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +16 -8
  115. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +3 -0
  116. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +21 -9
  117. package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +8 -8
  118. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/craftbook.json +697 -0
  119. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/test.json +235 -0
  120. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +19 -8
  121. package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +8 -8
  122. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +17 -7
  123. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +7 -2
  124. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +11 -4
  125. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/craftbook.json +435 -0
  126. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/test.json +141 -0
  127. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +16 -8
  128. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +11 -4
  129. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/craftbook.json +277 -0
  130. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/test.json +104 -0
  131. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +13 -5
  132. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +3 -0
  133. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +285 -0
  134. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/test.json +104 -0
  135. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/craftbook.json +695 -0
  136. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/test.json +241 -0
  137. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/craftbook.json +361 -0
  138. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/test.json +138 -0
  139. package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +8 -8
  140. package/data/craftbook-templates/re/release-notes/versions/1.0.5/craftbook.json +339 -0
  141. package/data/craftbook-templates/re/release-notes/versions/1.0.5/test.json +111 -0
  142. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +16 -8
  143. package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +16 -8
  144. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/craftbook.json +596 -0
  145. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/test.json +157 -0
  146. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +13 -5
  147. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/craftbook.json +624 -0
  148. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/test.json +225 -0
  149. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/craftbook.json +284 -0
  150. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/test.json +162 -0
  151. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +10 -13
  152. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/craftbook.json +597 -0
  153. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/test.json +157 -0
  154. package/data/craftbook-templates/so/social-digest/versions/1.0.3/craftbook.json +239 -0
  155. package/data/craftbook-templates/so/social-digest/versions/1.0.3/test.json +168 -0
  156. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +25 -11
  157. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/craftbook.json +599 -0
  158. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/test.json +162 -0
  159. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/craftbook.json +577 -0
  160. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/test.json +174 -0
  161. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +16 -8
  162. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/craftbook.json +592 -0
  163. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/test.json +195 -0
  164. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +6 -3
  165. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +11 -4
  166. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +9 -3
  167. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +10 -5
  168. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +6 -3
  169. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/craftbook.json +140 -0
  170. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/test.json +141 -0
  171. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/craftbook.json +594 -0
  172. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/test.json +221 -0
  173. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/craftbook.json +606 -0
  174. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/test.json +206 -0
  175. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +11 -4
  176. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +21 -9
  177. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +16 -8
  178. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +8 -4
  179. package/data/project-types/index.json +1 -1
  180. package/data/project-types/ju/just-chat/manifest.json +1 -1
  181. package/data/project-types/ju/just-chat/versions/1.0.1/about.md +5 -0
  182. package/data/project-types/ju/just-chat/versions/1.0.1/manifest.json +19 -0
  183. package/package.json +1 -1
  184. package/schemas/chat-model-identity.schema.json +27 -0
  185. package/schemas/chat-model-version.schema.json +22 -0
@@ -0,0 +1,566 @@
1
+ {
2
+ "id": "idea-office-hours",
3
+ "name": "Idea Office Hours",
4
+ "description": "Pressure-test a product idea with forcing questions before jumping to solutions, then capture the decision in a short design doc — a structured 'office hours' diagnostic.",
5
+ "basedOn": {
6
+ "name": "gstack",
7
+ "url": "https://github.com/garrytan/gstack"
8
+ },
9
+ "plan": "Use this workflow before committing implementation effort. Ground the conversation in the user's actual problem and available project evidence, ask one decision question at a time with `ask_user_question`, and distinguish facts from assumptions. In unattended runs, make the smallest reversible assumptions and label them. The output is a decision record, not brainstorming theater: it must end with a chosen wedge and a real next action.",
10
+ "entryStepId": "frame",
11
+ "triggers": [
12
+ "brainstorm this",
13
+ "is this worth building",
14
+ "help me think through",
15
+ "office hours"
16
+ ],
17
+ "command": "idea-office-hours",
18
+ "steps": [
19
+ {
20
+ "id": "frame",
21
+ "name": "Frame the opportunity",
22
+ "description": "Turn the rough idea into a specific problem, audience, outcome, and assumption set.",
23
+ "prompt": "Inspect the project brief and relevant workspace material before asking anything already answered there. Establish who has the problem, what they do today, why that is inadequate, the desired outcome, constraints, and evidence already available. Ask one high-leverage question at a time. Separate verified facts from assumptions and record what evidence would falsify the idea.\n\nObservable handoff: write the completed result to `notes/idea-brief.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
24
+ "suggestedRole": "product strategist",
25
+ "advanceWhen": {
26
+ "file": "notes/idea-brief.md",
27
+ "minBytes": 600,
28
+ "sniff": "nonempty",
29
+ "requireChange": true,
30
+ "artifact": true,
31
+ "goto": "pressure-test"
32
+ },
33
+ "gate": {
34
+ "at": "completion",
35
+ "checks": [
36
+ {
37
+ "kind": "minBytes",
38
+ "file": "notes/idea-brief.md",
39
+ "bytes": 600,
40
+ "artifact": true
41
+ },
42
+ {
43
+ "kind": "sniff",
44
+ "file": "notes/idea-brief.md",
45
+ "sniff": "nonempty",
46
+ "artifact": true
47
+ },
48
+ {
49
+ "kind": "contains",
50
+ "file": "notes/idea-brief.md",
51
+ "pattern": "^##\\s+Problem",
52
+ "flags": "im",
53
+ "label": "Problem section",
54
+ "artifact": true
55
+ },
56
+ {
57
+ "kind": "contains",
58
+ "file": "notes/idea-brief.md",
59
+ "pattern": "^##\\s+Audience",
60
+ "flags": "im",
61
+ "label": "Audience section",
62
+ "artifact": true
63
+ },
64
+ {
65
+ "kind": "contains",
66
+ "file": "notes/idea-brief.md",
67
+ "pattern": "^##\\s+Success criteria",
68
+ "flags": "im",
69
+ "label": "measurable Success criteria section",
70
+ "artifact": true
71
+ },
72
+ {
73
+ "kind": "contains",
74
+ "file": "notes/idea-brief.md",
75
+ "pattern": "^##\\s+Assumptions",
76
+ "flags": "im",
77
+ "label": "Assumptions section",
78
+ "artifact": true
79
+ }
80
+ ],
81
+ "onReject": "frame",
82
+ "maxAttempts": 3
83
+ },
84
+ "next": "pressure-test",
85
+ "toolPolicy": {
86
+ "disallowBuiltinToolsets": [
87
+ "ai-apps",
88
+ "archives",
89
+ "audio",
90
+ "browser-automation",
91
+ "code-execution",
92
+ "craftbooks",
93
+ "data-tables",
94
+ "entity-intel",
95
+ "git",
96
+ "image-intel",
97
+ "images",
98
+ "role-delegation",
99
+ "role-delegation-escalation",
100
+ "security-intel",
101
+ "team-management",
102
+ "videos",
103
+ "web",
104
+ "workspace-fs-write"
105
+ ],
106
+ "outputMedium": "artifact",
107
+ "additionalOutputMedia": [
108
+ "task-note"
109
+ ]
110
+ }
111
+ },
112
+ {
113
+ "id": "pressure-test",
114
+ "name": "Pressure-test the options",
115
+ "description": "Challenge the premise and compare meaningful alternatives before choosing a solution.",
116
+ "prompt": "Read `notes/idea-brief.md`. Test the strongest assumptions against workspace evidence and, when available and appropriate, research tools. Develop at least three materially different options, including a no-build or manual option. For each, compare user value, evidence, effort, reversibility, key risk, and the cheapest falsification test. Recommend one narrow wedge and explain what evidence would change that recommendation. Before working, open `notes/idea-brief.md` with `read_artifact`.\n\nObservable handoff: write the completed result to `notes/idea-options.md` in the project's artifacts drawer with `write_artifact`. Do not merely describe what the file would contain. Re-read it with `read_artifact` before finishing this phase and repair any incomplete sections.",
117
+ "suggestedRole": "product researcher",
118
+ "consumes": [
119
+ {
120
+ "file": "notes/idea-brief.md",
121
+ "artifact": true
122
+ }
123
+ ],
124
+ "advanceWhen": {
125
+ "file": "notes/idea-options.md",
126
+ "minBytes": 900,
127
+ "sniff": "nonempty",
128
+ "requireChange": true,
129
+ "artifact": true,
130
+ "goto": "decide"
131
+ },
132
+ "gate": {
133
+ "at": "completion",
134
+ "checks": [
135
+ {
136
+ "kind": "minBytes",
137
+ "file": "notes/idea-options.md",
138
+ "bytes": 900,
139
+ "artifact": true
140
+ },
141
+ {
142
+ "kind": "sniff",
143
+ "file": "notes/idea-options.md",
144
+ "sniff": "nonempty",
145
+ "artifact": true
146
+ },
147
+ {
148
+ "kind": "contains",
149
+ "file": "notes/idea-options.md",
150
+ "pattern": "^##\\s+Evidence",
151
+ "flags": "im",
152
+ "label": "Evidence section",
153
+ "artifact": true
154
+ },
155
+ {
156
+ "kind": "contains",
157
+ "file": "notes/idea-options.md",
158
+ "pattern": "^##\\s+Alternatives",
159
+ "flags": "im",
160
+ "label": "Alternatives section",
161
+ "artifact": true
162
+ },
163
+ {
164
+ "kind": "contains",
165
+ "file": "notes/idea-options.md",
166
+ "pattern": "^##\\s+Risks",
167
+ "flags": "im",
168
+ "label": "Risks section",
169
+ "artifact": true
170
+ },
171
+ {
172
+ "kind": "contains",
173
+ "file": "notes/idea-options.md",
174
+ "pattern": "^##\\s+Recommendation",
175
+ "flags": "im",
176
+ "label": "Recommendation section",
177
+ "artifact": true
178
+ }
179
+ ],
180
+ "onReject": "pressure-test",
181
+ "maxAttempts": 3
182
+ },
183
+ "next": "decide",
184
+ "toolPolicy": {
185
+ "disallowBuiltinToolsets": [
186
+ "ai-apps",
187
+ "archives",
188
+ "audio",
189
+ "browser-automation",
190
+ "code-execution",
191
+ "craftbooks",
192
+ "data-tables",
193
+ "entity-intel",
194
+ "git",
195
+ "image-intel",
196
+ "images",
197
+ "role-delegation",
198
+ "role-delegation-escalation",
199
+ "security-intel",
200
+ "team-management",
201
+ "videos",
202
+ "workspace-fs-write"
203
+ ],
204
+ "outputMedium": "artifact",
205
+ "additionalOutputMedia": [
206
+ "task-note"
207
+ ]
208
+ }
209
+ },
210
+ {
211
+ "id": "decide",
212
+ "name": "Write the decision record",
213
+ "description": "Capture a defensible decision and the smallest useful real-world action.",
214
+ "prompt": "Synthesize the brief and options into a concise decision record. Preserve uncertainty instead of manufacturing confidence. State the chosen wedge, why it beats the alternatives now, boundaries that prevent scope creep, leading and lagging success measures, the next experiment or delivery action, its owner, and a decision date or trigger for revisiting the choice.\n\nObservable handoff: write the completed result to `decisions/idea-office-hours.md` in the workspace with `write_file`. Do not merely describe what the file would contain. Re-read it with `read_file` before finishing this phase and repair any incomplete sections.",
215
+ "suggestedRole": "product writer",
216
+ "advanceWhen": {
217
+ "file": "decisions/idea-office-hours.md",
218
+ "minBytes": 1100,
219
+ "sniff": "nonempty",
220
+ "requireChange": true,
221
+ "goto": "evaluate"
222
+ },
223
+ "gate": {
224
+ "at": "completion",
225
+ "checks": [
226
+ {
227
+ "kind": "minBytes",
228
+ "file": "decisions/idea-office-hours.md",
229
+ "bytes": 1100
230
+ },
231
+ {
232
+ "kind": "sniff",
233
+ "file": "decisions/idea-office-hours.md",
234
+ "sniff": "nonempty"
235
+ },
236
+ {
237
+ "kind": "contains",
238
+ "file": "decisions/idea-office-hours.md",
239
+ "pattern": "^##\\s+Problem",
240
+ "flags": "im",
241
+ "label": "Problem section"
242
+ },
243
+ {
244
+ "kind": "contains",
245
+ "file": "decisions/idea-office-hours.md",
246
+ "pattern": "^##\\s+Evidence heard from the user",
247
+ "flags": "im",
248
+ "label": "user evidence section"
249
+ },
250
+ {
251
+ "kind": "contains",
252
+ "file": "decisions/idea-office-hours.md",
253
+ "pattern": "^##\\s+Chosen wedge",
254
+ "flags": "im",
255
+ "label": "Chosen wedge section"
256
+ },
257
+ {
258
+ "kind": "contains",
259
+ "file": "decisions/idea-office-hours.md",
260
+ "pattern": "^##\\s+Alternatives considered",
261
+ "flags": "im",
262
+ "label": "Alternatives considered section"
263
+ },
264
+ {
265
+ "kind": "contains",
266
+ "file": "decisions/idea-office-hours.md",
267
+ "pattern": "^##\\s+Decision",
268
+ "flags": "im",
269
+ "label": "Decision section"
270
+ },
271
+ {
272
+ "kind": "contains",
273
+ "file": "decisions/idea-office-hours.md",
274
+ "pattern": "^##\\s+Next real-world action",
275
+ "flags": "im",
276
+ "label": "Next real-world action section"
277
+ }
278
+ ],
279
+ "onReject": "decide",
280
+ "maxAttempts": 3
281
+ },
282
+ "next": "evaluate",
283
+ "toolPolicy": {
284
+ "disallowBuiltinToolsets": [
285
+ "ai-apps",
286
+ "archives",
287
+ "artifacts",
288
+ "audio",
289
+ "browser-automation",
290
+ "code-execution",
291
+ "craftbooks",
292
+ "data-tables",
293
+ "entity-intel",
294
+ "git",
295
+ "image-intel",
296
+ "images",
297
+ "role-delegation",
298
+ "role-delegation-escalation",
299
+ "security-intel",
300
+ "team-management",
301
+ "videos",
302
+ "web"
303
+ ],
304
+ "outputMedium": "workspace"
305
+ }
306
+ },
307
+ {
308
+ "id": "evaluate",
309
+ "name": "Evaluate the deliverable",
310
+ "description": "Independently grade the observable deliverable and route it to finish, repair, or user escalation.",
311
+ "prompt": "Review `decisions/idea-office-hours.md`, `notes/idea-brief.md`, `notes/idea-options.md` against every criterion below. Inspect the underlying evidence files named by the workflow; do not grade from the author's summary alone.\n\n1. The problem, audience, and success measures are specific enough to falsify.\n2. Verified evidence and assumptions are clearly distinguished.\n3. At least three meaningfully different alternatives, including no-build or manual work, were compared fairly.\n4. The chosen wedge follows from the evidence and has explicit scope boundaries.\n5. The next action has an owner, a measurable outcome, and a revisit trigger.\n\nOpen `notes/idea-brief.md`, `notes/idea-options.md` with `read_artifact`. Open `decisions/idea-office-hours.md` with `read_file`. Write the evidence-backed review to `reviews/idea-office-hours-review.md` in the artifacts drawer with `write_artifact`. Give each criterion a PASS or FAIL with a concrete path, excerpt, measurement, or observed behavior. End with exactly `Verdict: PASS` or `Verdict: REVISE`. Then use `advance_task_step` for the active task: PASS routes to `finish`; REVISE routes to `repair` for review rounds 1 through 2, and the 3th REVISE routes to `needs-user`. Never route to finish while a criterion is unmet.",
312
+ "suggestedRole": "product reviewer",
313
+ "consumes": [
314
+ {
315
+ "file": "decisions/idea-office-hours.md"
316
+ },
317
+ {
318
+ "file": "notes/idea-brief.md",
319
+ "artifact": true
320
+ },
321
+ {
322
+ "file": "notes/idea-options.md",
323
+ "artifact": true
324
+ }
325
+ ],
326
+ "gate": {
327
+ "at": "completion",
328
+ "checks": [
329
+ {
330
+ "kind": "minBytes",
331
+ "file": "reviews/idea-office-hours-review.md",
332
+ "bytes": 400,
333
+ "artifact": true
334
+ },
335
+ {
336
+ "kind": "contains",
337
+ "file": "reviews/idea-office-hours-review.md",
338
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
339
+ "flags": "i",
340
+ "label": "explicit PASS or REVISE verdict",
341
+ "artifact": true
342
+ }
343
+ ],
344
+ "onReject": "evaluate",
345
+ "maxAttempts": 3
346
+ },
347
+ "next": "repair",
348
+ "toolPolicy": {
349
+ "disallowBuiltinToolsets": [
350
+ "ai-apps",
351
+ "archives",
352
+ "audio",
353
+ "browser-automation",
354
+ "code-execution",
355
+ "craftbooks",
356
+ "data-tables",
357
+ "entity-intel",
358
+ "git",
359
+ "image-intel",
360
+ "images",
361
+ "role-delegation",
362
+ "role-delegation-escalation",
363
+ "security-intel",
364
+ "team-management",
365
+ "videos",
366
+ "web",
367
+ "workspace-fs-write"
368
+ ],
369
+ "outputMedium": "artifact"
370
+ }
371
+ },
372
+ {
373
+ "id": "repair",
374
+ "name": "Repair the deliverable",
375
+ "description": "Fix only the concrete gaps from the latest independent review.",
376
+ "prompt": "Read `reviews/idea-office-hours-review.md` with `read_artifact` and repair every failed criterion in `decisions/idea-office-hours.md`, `notes/idea-brief.md`, `notes/idea-options.md`. Make changes on each file's declared surface (`write_artifact` for artifact inputs, `write_file` for workspace inputs), not in task notes or a reply. Preserve evidence that already passed. Re-run or re-check anything the reviewer found unproven. Ensure `decisions/idea-office-hours.md` is genuinely updated this turn so the repair is observable, then hand it back for independent evaluation.",
377
+ "suggestedRole": "product strategist",
378
+ "consumes": [
379
+ {
380
+ "file": "reviews/idea-office-hours-review.md",
381
+ "artifact": true
382
+ },
383
+ {
384
+ "file": "decisions/idea-office-hours.md"
385
+ },
386
+ {
387
+ "file": "notes/idea-brief.md",
388
+ "artifact": true
389
+ },
390
+ {
391
+ "file": "notes/idea-options.md",
392
+ "artifact": true
393
+ }
394
+ ],
395
+ "advanceWhen": {
396
+ "file": "decisions/idea-office-hours.md",
397
+ "minBytes": 1100,
398
+ "sniff": "nonempty",
399
+ "requireChange": true,
400
+ "goto": "evaluate"
401
+ },
402
+ "gate": {
403
+ "at": "completion",
404
+ "checks": [
405
+ {
406
+ "kind": "minBytes",
407
+ "file": "decisions/idea-office-hours.md",
408
+ "bytes": 1100
409
+ },
410
+ {
411
+ "kind": "sniff",
412
+ "file": "decisions/idea-office-hours.md",
413
+ "sniff": "nonempty"
414
+ },
415
+ {
416
+ "kind": "contains",
417
+ "file": "decisions/idea-office-hours.md",
418
+ "pattern": "^##\\s+Problem",
419
+ "flags": "im",
420
+ "label": "Problem section"
421
+ },
422
+ {
423
+ "kind": "contains",
424
+ "file": "decisions/idea-office-hours.md",
425
+ "pattern": "^##\\s+Evidence heard from the user",
426
+ "flags": "im",
427
+ "label": "user evidence section"
428
+ },
429
+ {
430
+ "kind": "contains",
431
+ "file": "decisions/idea-office-hours.md",
432
+ "pattern": "^##\\s+Chosen wedge",
433
+ "flags": "im",
434
+ "label": "Chosen wedge section"
435
+ },
436
+ {
437
+ "kind": "contains",
438
+ "file": "decisions/idea-office-hours.md",
439
+ "pattern": "^##\\s+Alternatives considered",
440
+ "flags": "im",
441
+ "label": "Alternatives considered section"
442
+ },
443
+ {
444
+ "kind": "contains",
445
+ "file": "decisions/idea-office-hours.md",
446
+ "pattern": "^##\\s+Decision",
447
+ "flags": "im",
448
+ "label": "Decision section"
449
+ },
450
+ {
451
+ "kind": "contains",
452
+ "file": "decisions/idea-office-hours.md",
453
+ "pattern": "^##\\s+Next real-world action",
454
+ "flags": "im",
455
+ "label": "Next real-world action section"
456
+ }
457
+ ],
458
+ "onReject": "repair",
459
+ "maxAttempts": 3
460
+ },
461
+ "next": "evaluate",
462
+ "toolPolicy": {
463
+ "disallowBuiltinToolsets": [
464
+ "ai-apps",
465
+ "archives",
466
+ "audio",
467
+ "browser-automation",
468
+ "code-execution",
469
+ "craftbooks",
470
+ "data-tables",
471
+ "entity-intel",
472
+ "git",
473
+ "image-intel",
474
+ "images",
475
+ "role-delegation",
476
+ "role-delegation-escalation",
477
+ "security-intel",
478
+ "team-management",
479
+ "videos",
480
+ "web"
481
+ ],
482
+ "outputMedium": "workspace",
483
+ "additionalOutputMedia": [
484
+ "artifact",
485
+ "task-note"
486
+ ]
487
+ }
488
+ },
489
+ {
490
+ "id": "finish",
491
+ "name": "Finish",
492
+ "description": "All deterministic and reviewer criteria passed.",
493
+ "prompt": "The independent review passed. Read `reviews/idea-office-hours-review.md` with `read_artifact`, then use `write_task_note` to record a concise DONE summary with the final deliverable paths (`decisions/idea-office-hours.md`, `notes/idea-brief.md`, `notes/idea-options.md`) and the evidence that each acceptance criterion passed. Report DONE without starting new work.",
494
+ "suggestedRole": "project lead",
495
+ "consumes": [
496
+ {
497
+ "file": "reviews/idea-office-hours-review.md",
498
+ "artifact": true
499
+ }
500
+ ],
501
+ "terminal": true,
502
+ "toolPolicy": {
503
+ "disallowBuiltinToolsets": [
504
+ "ai-apps",
505
+ "archives",
506
+ "audio",
507
+ "browser-automation",
508
+ "code-execution",
509
+ "craftbooks",
510
+ "data-tables",
511
+ "entity-intel",
512
+ "git",
513
+ "image-intel",
514
+ "images",
515
+ "role-delegation",
516
+ "role-delegation-escalation",
517
+ "security-intel",
518
+ "team-management",
519
+ "videos",
520
+ "web",
521
+ "workspace-fs-write"
522
+ ],
523
+ "outputMedium": "task-note"
524
+ }
525
+ },
526
+ {
527
+ "id": "needs-user",
528
+ "name": "Escalate unresolved concerns",
529
+ "description": "The bounded repair loop ended without a defensible pass.",
530
+ "prompt": "The deliverable did not pass after 3 review rounds. Do not claim success. Read `reviews/idea-office-hours-review.md` with `read_artifact`, then use `write_task_note` to record DONE_WITH_CONCERNS: the unmet criteria, what was attempted, the affected paths, and the smallest user decision or missing input needed to continue.",
531
+ "suggestedRole": "project lead",
532
+ "consumes": [
533
+ {
534
+ "file": "reviews/idea-office-hours-review.md",
535
+ "artifact": true
536
+ }
537
+ ],
538
+ "terminal": true,
539
+ "toolPolicy": {
540
+ "disallowBuiltinToolsets": [
541
+ "ai-apps",
542
+ "archives",
543
+ "audio",
544
+ "browser-automation",
545
+ "code-execution",
546
+ "craftbooks",
547
+ "data-tables",
548
+ "entity-intel",
549
+ "git",
550
+ "image-intel",
551
+ "images",
552
+ "role-delegation",
553
+ "role-delegation-escalation",
554
+ "security-intel",
555
+ "team-management",
556
+ "videos",
557
+ "web",
558
+ "workspace-fs-write"
559
+ ],
560
+ "outputMedium": "task-note"
561
+ }
562
+ }
563
+ ],
564
+ "version": "2.0.8",
565
+ "releasedAt": "2026-09-05T03:30:00Z"
566
+ }