mulmoterminal 8.6.0 → 8.8.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.
Files changed (167) hide show
  1. package/blueprints/adopt/hearing.json +1 -0
  2. package/blueprints/adopt/locales/en.json +3 -2
  3. package/blueprints/adopt/presets/help-pages/export.md +1 -1
  4. package/blueprints/adopt/presets/help-pages/login.md +1 -1
  5. package/blueprints/adopt/presets.json +1 -1
  6. package/blueprints/adopt/templates/chaff.yml +1 -1
  7. package/blueprints/ask/hearing.json +2 -0
  8. package/blueprints/ask/locales/en.json +4 -2
  9. package/blueprints/compare/hearing.json +3 -0
  10. package/blueprints/compare/locales/en.json +6 -3
  11. package/blueprints/docs/checks/chaff.sh +1 -1
  12. package/blueprints/docs/skills/workspace/SKILL.md +1 -1
  13. package/blueprints/from-collection/hearing.json +6 -0
  14. package/blueprints/from-collection/locales/en.json +10 -5
  15. package/blueprints/glossary/hearing.json +1 -0
  16. package/blueprints/glossary/locales/en.json +2 -1
  17. package/blueprints/internal/hearing.json +11 -2
  18. package/blueprints/internal/locales/en.json +12 -6
  19. package/blueprints/polish/hearing.json +2 -0
  20. package/blueprints/polish/locales/en.json +7 -5
  21. package/blueprints/polish/presets/oshirase/oshirase.md +1 -1
  22. package/blueprints/polish/presets/tejun/tejun.md +1 -1
  23. package/blueprints/polish/presets.json +3 -3
  24. package/blueprints/product/hearing.json +11 -1
  25. package/blueprints/product/locales/en.json +18 -9
  26. package/blueprints/refactor/hearing.json +2 -0
  27. package/blueprints/refactor/locales/en.json +4 -2
  28. package/blueprints/review/hearing.json +2 -0
  29. package/blueprints/review/locales/en.json +4 -2
  30. package/blueprints/style/hearing.json +2 -0
  31. package/blueprints/style/locales/en.json +4 -2
  32. package/blueprints/style/skills/report/SKILL.md +1 -1
  33. package/blueprints/summarize/hearing.json +3 -0
  34. package/blueprints/summarize/locales/en.json +6 -3
  35. package/blueprints/verify/hearing.json +4 -0
  36. package/blueprints/verify/locales/en.json +6 -3
  37. package/blueprints/write/hearing.json +19 -3
  38. package/blueprints/write/locales/en.json +8 -4
  39. package/common/blueprint/hearing.ts +15 -3
  40. package/common/blueprint/packLocale.ts +7 -1
  41. package/common/terminalReplies.ts +7 -2
  42. package/common/toolGroups.ts +7 -0
  43. package/dist/assets/__vite-browser-external-DpH90L5b.js +1 -0
  44. package/dist/assets/{abnfDiagram-O67JEVCF-DXlZgdtc.js → abnfDiagram-O67JEVCF-ByeTkitP.js} +1 -1
  45. package/dist/assets/architecture-7GRP2DOG-C2yiAYE0.js +1 -0
  46. package/dist/assets/{architectureDiagram-NJMV4G6O-DaxTUb1T.js → architectureDiagram-NJMV4G6O-BS-bIJ9p.js} +1 -1
  47. package/dist/assets/{blockDiagram-BEXU5L5S-CMJVFioO.js → blockDiagram-BEXU5L5S-B2ROJmyY.js} +1 -1
  48. package/dist/assets/{c4Diagram-YGBWAQC7-DICUsVCB.js → c4Diagram-YGBWAQC7-Ca1VT7np.js} +1 -1
  49. package/dist/assets/channel-BipplUhD.js +1 -0
  50. package/dist/assets/{chunk-3FUC2YCW-CXCYZio6.js → chunk-3FUC2YCW-4aA8NTzP.js} +1 -1
  51. package/dist/assets/{chunk-5DYCD2WN-J-KMASno.js → chunk-5DYCD2WN-CsUnssZn.js} +1 -1
  52. package/dist/assets/{chunk-742MDFTN-DyDR-dy2.js → chunk-742MDFTN-7XZaey_z.js} +1 -1
  53. package/dist/assets/{chunk-7INBJB4K-OgeP0o2t.js → chunk-7INBJB4K-dLz1-dKv.js} +1 -1
  54. package/dist/assets/{chunk-7M6MHVWA-CMMNdMOL.js → chunk-7M6MHVWA-D1e-V9YF.js} +1 -1
  55. package/dist/assets/{chunk-7PRAP22T-BbHJYkCX.js → chunk-7PRAP22T-CnkOGYpM.js} +1 -1
  56. package/dist/assets/{chunk-GTNCS2PH-nGmKdp-b.js → chunk-GTNCS2PH-SdNqERG5.js} +1 -1
  57. package/dist/assets/{chunk-GWA4HPMP-Bb_rpXW6.js → chunk-GWA4HPMP-Drwy794D.js} +1 -1
  58. package/dist/assets/{chunk-MBY4JIJT-B2GHBF8g.js → chunk-MBY4JIJT-DSAANxSJ.js} +1 -1
  59. package/dist/assets/{chunk-NETBCI7D-2LLlIwhj.js → chunk-NETBCI7D-BXp9T8Ca.js} +1 -1
  60. package/dist/assets/{chunk-O7XYJQB3-B5s8ZEtK.js → chunk-O7XYJQB3-GC1aNmH_.js} +2 -2
  61. package/dist/assets/{chunk-UA2S7LBM-C_9rO4Bq.js → chunk-UA2S7LBM-Cw3wF3Tn.js} +1 -1
  62. package/dist/assets/{chunk-WEXAMYUT-BfmBAXJU.js → chunk-WEXAMYUT-CS8Kpesb.js} +1 -1
  63. package/dist/assets/{chunk-Z7XXMR3K-C5wqMFJZ.js → chunk-Z7XXMR3K-CykBR0l-.js} +1 -1
  64. package/dist/assets/{chunk-ZIGJFQKS-Cb2HKlt1.js → chunk-ZIGJFQKS-BUT-ZZpU.js} +1 -1
  65. package/dist/assets/{classDiagram-v2-NBCMYWYE-BYjo8rpu.js → classDiagram-v2-NBCMYWYE-C8sptdpH.js} +1 -1
  66. package/dist/assets/{cynefin-OW5HDTMX-DlEtHItL.js → cynefin-OW5HDTMX-COfTpi2w.js} +1 -1
  67. package/dist/assets/{cynefinDiagram-VND7K2PF-D4B2zpSZ.js → cynefinDiagram-VND7K2PF-Dg6UIUpz.js} +1 -1
  68. package/dist/assets/{dagre-6A5THRUB-DrtmzUL5.js → dagre-6A5THRUB-Cc_39P-v.js} +1 -1
  69. package/dist/assets/{diagram-22UHCM2B-KwctRlfY.js → diagram-22UHCM2B-BH-GHrUM.js} +1 -1
  70. package/dist/assets/{diagram-3UASUU5V-nfsnD-a_.js → diagram-3UASUU5V-M61XyUBN.js} +1 -1
  71. package/dist/assets/{diagram-ATOU4E4O-zlzXPxjH.js → diagram-ATOU4E4O-BNoWQWTb.js} +1 -1
  72. package/dist/assets/{diagram-CDSNMT55-CU1kUC3a.js → diagram-CDSNMT55-CABlLH-2.js} +1 -1
  73. package/dist/assets/{diagram-MLGK6HIB-JZQTQ-hZ.js → diagram-MLGK6HIB-B5iLdk3Z.js} +1 -1
  74. package/dist/assets/{diagram-MPIPVDR6-lTEXn3AL.js → diagram-MPIPVDR6-DwltgZb2.js} +1 -1
  75. package/dist/assets/{dist-UwUnjgvi.js → dist-BIiP-j2f.js} +3 -3
  76. package/dist/assets/dist-CvKELT7c.js +9 -0
  77. package/dist/assets/{dist-BSKq0-F1.js → dist-DO_0aHHA.js} +5 -5
  78. package/dist/assets/{dist-DXTMKuwj.js → dist-DiTCjsAB.js} +2 -2
  79. package/dist/assets/{dist-Gvs7vfCp.js → dist-mhpU1YKL.js} +1 -1
  80. package/dist/assets/{ebnfDiagram-ZINNZB2B-CE-wOhYF.js → ebnfDiagram-ZINNZB2B-CXKDVnbA.js} +1 -1
  81. package/dist/assets/{elk-276RUBZZ-uyZC1Z8S.js → elk-276RUBZZ-CIZxclQh.js} +1 -1
  82. package/dist/assets/{erDiagram-OPXOYQCR-CNCRGsHi.js → erDiagram-OPXOYQCR-C0P_9FC1.js} +1 -1
  83. package/dist/assets/eventmodeling-NTZA5JFV-B4q1QvMs.js +1 -0
  84. package/dist/assets/flowDiagram-KWPJA3E3-_kpq6Bfi.js +1 -0
  85. package/dist/assets/{ganttDiagram-FUAMR5RP-PdhJQjbl.js → ganttDiagram-FUAMR5RP-as-EpyjU.js} +1 -1
  86. package/dist/assets/{gitGraph-4MIJSDKK-Tk81Gb8L.js → gitGraph-4MIJSDKK-Czjicpkr.js} +1 -1
  87. package/dist/assets/{gitGraphDiagram-X574FWY7-wR1C12PS.js → gitGraphDiagram-X574FWY7-rc6lYZrW.js} +1 -1
  88. package/dist/assets/index-B-X7-YRY.css +1 -0
  89. package/dist/assets/{index-DenS80L_.js → index-gp21O7C7.js} +1108 -1108
  90. package/dist/assets/{info-A6RAGUB7-BWvwsVf_.js → info-A6RAGUB7-o0iVLyAo.js} +1 -1
  91. package/dist/assets/{infoDiagram-VRGFBTTK-DsdCyD7V.js → infoDiagram-VRGFBTTK-CfyUtjjF.js} +1 -1
  92. package/dist/assets/{ishikawaDiagram-OU5B5YK6-DKiYpDek.js → ishikawaDiagram-OU5B5YK6-DnAtxy_T.js} +1 -1
  93. package/dist/assets/{journeyDiagram-ZHPQQLJL-DWJid8J8.js → journeyDiagram-ZHPQQLJL-D1Phskjm.js} +1 -1
  94. package/dist/assets/{kanban-definition-PNTS6WVX-DabMxz-B.js → kanban-definition-PNTS6WVX-BsGYr-P5.js} +1 -1
  95. package/dist/assets/{line-DvVCM2H2.js → line-CvrAzUfn.js} +1 -1
  96. package/dist/assets/manifold-BE4c7gO-.wasm +0 -0
  97. package/dist/assets/manifold-BiT8ya2j.js +2 -0
  98. package/dist/assets/{marp-Kv19Jld7.js → marp-xhjNh7vr.js} +16 -16
  99. package/dist/assets/material-symbols-outlined-DJ9Z1fAF.woff2 +0 -0
  100. package/dist/assets/{mermaid-parser.core-BvQdcEc9.js → mermaid-parser.core-CEi2Px_a.js} +3 -3
  101. package/dist/assets/{mermaid.core-DLkUQwjT.js → mermaid.core-_gwfjuDB.js} +5 -5
  102. package/dist/assets/{mindmap-definition-NLK3R4M7-vVxCaMqG.js → mindmap-definition-NLK3R4M7-khVpAwQW.js} +1 -1
  103. package/dist/assets/{packet-AYTQ26CC-CSyTAe0w.js → packet-AYTQ26CC-Dfg6OZVH.js} +1 -1
  104. package/dist/assets/{pegDiagram-GJSIUBJH-Da_ZhFlr.js → pegDiagram-GJSIUBJH-DDUqfWnv.js} +1 -1
  105. package/dist/assets/{pie-WAS4IAKB-BeQ346mv.js → pie-WAS4IAKB-DMsEjDvX.js} +1 -1
  106. package/dist/assets/{pieDiagram-5QR66LMP-DMEWUCEd.js → pieDiagram-5QR66LMP-Cwhk_Wbg.js} +1 -1
  107. package/dist/assets/{quadrantDiagram-O4NWA36T-BHVDzC7U.js → quadrantDiagram-O4NWA36T-DpUkdI7g.js} +1 -1
  108. package/dist/assets/{radar-RG4KPBEZ-B9xiIWpv.js → radar-RG4KPBEZ-CrDzBZ--.js} +1 -1
  109. package/dist/assets/{railroad-74A4TZTK-CFpolYIs.js → railroad-74A4TZTK-Bu3KvE6J.js} +1 -1
  110. package/dist/assets/railroad-abnf-HS5TGJTU-CSZDmotE.js +1 -0
  111. package/dist/assets/railroad-ebnf-LZEXJU2U-DvAT5oFw.js +1 -0
  112. package/dist/assets/railroad-peg-WCYAUIDC-asx-q7nj.js +1 -0
  113. package/dist/assets/{railroadDiagram-XR7U4H2S-BD1jI_5o.js → railroadDiagram-XR7U4H2S-CPc8T2h7.js} +1 -1
  114. package/dist/assets/{requirementDiagram-PLB6GJNP-CVzgB8N1.js → requirementDiagram-PLB6GJNP-DQ2oYrP1.js} +1 -1
  115. package/dist/assets/{sankeyDiagram-IPEJSGJF-BDP5AJHD.js → sankeyDiagram-IPEJSGJF-2Uz2Meev.js} +1 -1
  116. package/dist/assets/{sequenceDiagram-PO4LG4MO-CHf6AC-l.js → sequenceDiagram-PO4LG4MO-BBh835RL.js} +1 -1
  117. package/dist/assets/{stateDiagram-v2-GCMORJYK-CSKbVid3.js → stateDiagram-v2-GCMORJYK-Bc_98LX6.js} +1 -1
  118. package/dist/assets/{swimlanes-2SLR337P-XatlZPR3.js → swimlanes-2SLR337P-vUUyNnl4.js} +1 -1
  119. package/dist/assets/swimlanesDiagram-TC7HE7FX-9mksZc5U.js +8 -0
  120. package/dist/assets/{timeline-definition-EJHVYXUP-eQgnBadf.js → timeline-definition-EJHVYXUP-BkOMOqNA.js} +1 -1
  121. package/dist/assets/{treeView-Q6P3EWNA-BQU1XRcr.js → treeView-Q6P3EWNA-D7IKO2ct.js} +1 -1
  122. package/dist/assets/{treemap-WGGIJYW6-CmakEgLd.js → treemap-WGGIJYW6-BOilElad.js} +1 -1
  123. package/dist/assets/{usecaseDiagram-POWQR4AR-C9jTxxCU.js → usecaseDiagram-POWQR4AR-CEqD1QMX.js} +1 -1
  124. package/dist/assets/{vennDiagram-UO4OBE2U-DmxE0k3v.js → vennDiagram-UO4OBE2U-DB0WIEZ_.js} +1 -1
  125. package/dist/assets/{wardley-WFR3VGLG-Uqfy1cXg.js → wardley-WFR3VGLG-C4idmWYw.js} +1 -1
  126. package/dist/assets/{wardleyDiagram-VNRHLVJA-Cza-TOud.js → wardleyDiagram-VNRHLVJA-C_OGELwo.js} +1 -1
  127. package/dist/assets/{xychartDiagram-PMCCYNJV-DxNOuxul.js → xychartDiagram-PMCCYNJV-CgXABm2q.js} +1 -1
  128. package/dist/index.html +2 -2
  129. package/docs/guide/en/v8.7.0.md +73 -0
  130. package/docs/guide/en/v8.8.0.md +73 -0
  131. package/docs/guide/ja/v8.7.0.md +71 -0
  132. package/docs/guide/ja/v8.8.0.md +73 -0
  133. package/package.json +12 -12
  134. package/server/backends/presentPathRoot.ts +2 -0
  135. package/server/backends/sharedApp/bannerWrites.ts +74 -0
  136. package/server/backends/sharedApp/forkWrites.ts +145 -0
  137. package/server/backends/sharedApp/participate/app.ts +9 -1
  138. package/server/backends/sharedApp/participate/submit.ts +8 -1
  139. package/server/backends/sharedApp/preview.ts +7 -2
  140. package/server/backends/sharedApp/previewWrite.ts +2 -2
  141. package/server/backends/sharedApp/publicView.ts +20 -6
  142. package/server/backends/sharedApp/publish.ts +37 -7
  143. package/server/backends/sharedApp/submitSpec.ts +3 -0
  144. package/server/backends/sharedApp/unpublish.ts +8 -0
  145. package/server/index.ts +4 -0
  146. package/server/infra/host-tools.ts +4 -0
  147. package/server/infra/shapescript-csg.ts +20 -0
  148. package/server/infra/shapescript-stl-tool.ts +49 -0
  149. package/server/routes/plugin-routes.ts +20 -0
  150. package/server/skills/mulmoterminal-shared-app/SKILL.md +74 -9
  151. package/server/skills/mulmoterminal-shared-app/templates/magazine.md +16 -10
  152. package/server/skills/mulmoterminal-shared-app/templates/project-board.md +22 -15
  153. package/server/skills/mulmoterminal-shared-app/templates/question-box.md +12 -0
  154. package/server/skills/mulmoterminal-shared-app/templates/survey-results.md +582 -0
  155. package/server/skills/mulmoterminal-shared-app/templates/survey.md +2 -0
  156. package/server/skills/mulmoterminal-shared-app/templates/tally.md +12 -0
  157. package/dist/assets/architecture-7GRP2DOG-XtAJZbRy.js +0 -1
  158. package/dist/assets/channel-8a6suaSc.js +0 -1
  159. package/dist/assets/dist-Dspk0d4E.js +0 -9
  160. package/dist/assets/eventmodeling-NTZA5JFV-BxDsNL_j.js +0 -1
  161. package/dist/assets/flowDiagram-KWPJA3E3-C2MPbtsK.js +0 -1
  162. package/dist/assets/index-qZoK1jNq.css +0 -1
  163. package/dist/assets/material-symbols-outlined-DzyP15l8.woff2 +0 -0
  164. package/dist/assets/railroad-abnf-HS5TGJTU-Bksw2TLw.js +0 -1
  165. package/dist/assets/railroad-ebnf-LZEXJU2U-C4Af36yh.js +0 -1
  166. package/dist/assets/railroad-peg-WCYAUIDC-BKOkIuwi.js +0 -1
  167. package/dist/assets/swimlanesDiagram-TC7HE7FX-DOCNRavw.js +0 -8
@@ -4,6 +4,7 @@
4
4
  "id": "places",
5
5
  "label": "chaff に見させる文書(このフォルダの中のフォルダかファイルを 1 行に 1 つ)",
6
6
  "why": "ここにある文書の今の指摘を棚に上げ、以後はここの新しい指摘だけが出る",
7
+ "placeholder": "例:\ndocs/\nREADME.md",
7
8
  "kind": "text",
8
9
  "lines": true,
9
10
  "pick": "files"
@@ -6,7 +6,8 @@
6
6
  "hearing": {
7
7
  "places": {
8
8
  "label": "The documents for chaff to watch (one folder or file in this folder per line)",
9
- "why": "Today's findings in these documents are shelved, and from then on only new findings here appear"
9
+ "why": "Today's findings in these documents are shelved, and from then on only new findings here appear",
10
+ "placeholder": "e.g.\ndocs/\nREADME.md"
10
11
  },
11
12
  "kind": {
12
13
  "label": "What kind of documents are they?",
@@ -60,7 +61,7 @@
60
61
  "presets": {
61
62
  "help-pages": {
62
63
  "title": "Bring chaff into help pages",
63
- "description": "Measures the sample help pages (login.md and export.md) as \"Procedure, help or manual\", shelves today's findings of sentences that are too long, and from then on only new findings appear. It also makes a workflow that shows findings on GitHub PRs. The originals do not change."
64
+ "description": "Measures the sample help pages (login.md and export.md) as \"Procedure, help or manual\", shelves today's findings (a dropped-ら verb form and a \"here\" link that does not say where it goes), and from then on only new findings appear. It also makes a workflow that shows findings on GitHub PRs. The originals do not change."
64
65
  }
65
66
  }
66
67
  }
@@ -6,4 +6,4 @@
6
6
 
7
7
  ## 書き出せないとき
8
8
 
9
- 一度に書き出せるのは 10,000 行までです。それより多いときは、期間を分けて書き出してください。
9
+ 一度に書き出せるのは 10,000 行までです。それより多いときは、期間を分けて書き出してください。書き出したファイルは、Excel でも見れます。
@@ -6,4 +6,4 @@
6
6
 
7
7
  ## アカウントがロックされたとき
8
8
 
9
- パスワードを5回続けて間違えると、アカウントが30分ロックされます。30分たってから、もう一度ログインしてください。
9
+ パスワードを5回続けて間違えると、アカウントが30分ロックされます。30分たってから、もう一度ログインしてください。急ぎのときは[こちら](https://example.com/support)から問い合わせてください。
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "id": "help-pages",
5
5
  "title": "ヘルプのページに chaff を入れる",
6
- "description": "見本のヘルプ(login.md と export.md)を「手順書・ヘルプ・マニュアル」として測り、今ある長すぎる文の指摘を棚に上げて、以後は新しい指摘だけが出るようにする。GitHub の PR に指摘を出すワークフローも作る。原本は変えない。",
6
+ "description": "見本のヘルプ(login.md と export.md)を「手順書・ヘルプ・マニュアル」として測り、今ある指摘(ら抜き言葉や、行き先の分からない「こちら」のリンク)を棚に上げて、以後は新しい指摘だけが出るようにする。GitHub の PR に指摘を出すワークフローも作る。原本は変えない。",
7
7
  "base": "docs",
8
8
  "answers": {
9
9
  "places": "login.md\nexport.md",
@@ -21,7 +21,7 @@ jobs:
21
21
  - uses: actions/setup-node@v7
22
22
  with:
23
23
  node-version: 24
24
- - run: npx -y chaffjs@0.18 {{PATHS}} --sarif chaff.sarif
24
+ - run: npx -y chaffjs@0.21 {{PATHS}} --sarif chaff.sarif
25
25
  continue-on-error: true
26
26
  - uses: github/codeql-action/upload-sarif@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4.38.1
27
27
  with:
@@ -4,6 +4,7 @@
4
4
  "id": "documents",
5
5
  "label": "質問する相手の文書(このフォルダの中のファイルを 1 行に 1 つ)",
6
6
  "why": "答えはこの文書だけから出し、どこに書いてあるかを示す",
7
+ "placeholder": "例:\ndocs/就業規則.md\ndocs/経費精算の手引き.md",
7
8
  "kind": "text",
8
9
  "lines": true,
9
10
  "pick": "files"
@@ -12,6 +13,7 @@
12
13
  "id": "questions",
13
14
  "label": "質問(1 行に 1 つ)",
14
15
  "why": "質問ごとに一つ答える",
16
+ "placeholder": "例:\n出張の日当はいくらですか\n経費の申請はいつまでに出しますか",
15
17
  "kind": "text",
16
18
  "lines": true
17
19
  },
@@ -6,11 +6,13 @@
6
6
  "hearing": {
7
7
  "documents": {
8
8
  "label": "The documents to ask (one file in this folder per line)",
9
- "why": "Answers come only from these documents, with where each is written"
9
+ "why": "Answers come only from these documents, with where each is written",
10
+ "placeholder": "e.g.\ndocs/employee-handbook.md\ndocs/expenses-guide.md"
10
11
  },
11
12
  "questions": {
12
13
  "label": "Questions (one per line)",
13
- "why": "One answer for each question"
14
+ "why": "One answer for each question",
15
+ "placeholder": "e.g.\nWhat is the daily allowance for a business trip?\nBy when must an expense claim be filed?"
14
16
  },
15
17
  "keep": {
16
18
  "label": "Keep the answers?",
@@ -4,6 +4,7 @@
4
4
  "id": "old",
5
5
  "label": "旧版の文書(このフォルダの中のファイル 1 つ)",
6
6
  "why": "比べる元。条ごとに新版と対応づける",
7
+ "placeholder": "例: contracts/業務委託契約_2025.md",
7
8
  "kind": "text",
8
9
  "pick": "files",
9
10
  "lines": true
@@ -12,6 +13,7 @@
12
13
  "id": "new",
13
14
  "label": "新版の文書(このフォルダの中のファイル 1 つ)",
14
15
  "why": "比べる先",
16
+ "placeholder": "例: contracts/業務委託契約_2026.md",
15
17
  "kind": "text",
16
18
  "pick": "files",
17
19
  "lines": true
@@ -20,6 +22,7 @@
20
22
  "id": "focus",
21
23
  "label": "特に見てほしいこと(任意)",
22
24
  "why": "その点に関わる変更を先に、詳しく書く",
25
+ "placeholder": "例: 支払い条件と解約の条件が変わっていないか",
23
26
  "kind": "text",
24
27
  "required": false
25
28
  }
@@ -6,15 +6,18 @@
6
6
  "hearing": {
7
7
  "old": {
8
8
  "label": "The old version (one file in this folder)",
9
- "why": "What to compare from. Each article is matched to the new version"
9
+ "why": "What to compare from. Each article is matched to the new version",
10
+ "placeholder": "e.g. contracts/service-agreement-2025.md"
10
11
  },
11
12
  "new": {
12
13
  "label": "The new version (one file in this folder)",
13
- "why": "What to compare to"
14
+ "why": "What to compare to",
15
+ "placeholder": "e.g. contracts/service-agreement-2026.md"
14
16
  },
15
17
  "focus": {
16
18
  "label": "Anything to look at especially",
17
- "why": "Changes about that point are written first and in more detail"
19
+ "why": "Changes about that point are written first and in more detail",
20
+ "placeholder": "e.g. whether the payment and termination terms changed"
18
21
  }
19
22
  },
20
23
  "steps": {
@@ -4,4 +4,4 @@
4
4
  if [ -n "${CHAFF_BIN:-}" ]; then
5
5
  exec sh -c "$CHAFF_BIN \"\$@\"" chaff "$@"
6
6
  fi
7
- exec npx -y chaffjs@0.18 "$@"
7
+ exec npx -y chaffjs@0.21 "$@"
@@ -12,7 +12,7 @@ repository, `.git/info/exclude`) until the person has approved the models.
12
12
  1. `.blueprint/` already exists (the build created it). Everything this build records goes there.
13
13
  2. Run chaff once through the base pack's wrapper, so its first download happens now and not in the
14
14
  middle of a later step: `sh <base pack>/checks/chaff.sh rules --json > /dev/null`. The wrapper runs the
15
- pinned chaff (`npx -y chaffjs@0.18`) unless `CHAFF_BIN` names another. If it fails, show the person the
15
+ pinned chaff (`npx -y chaffjs@0.21`) unless `CHAFF_BIN` names another. If it fails, show the person the
16
16
  error and stop — do not work around it.
17
17
  3. If the folder is a git repository, add `.blueprint/` to `.git/info/exclude`. That keeps the build's
18
18
  working files out of commits without touching `.gitignore`, which belongs to the person.
@@ -18,13 +18,16 @@
18
18
  "id": "appName",
19
19
  "label": "アプリの名前(空ならコレクションの名前)",
20
20
  "why": "画面と説明書に出す",
21
+ "placeholder": "例: 蔵書メモ",
21
22
  "kind": "text",
23
+ "short": true,
22
24
  "required": false
23
25
  },
24
26
  {
25
27
  "id": "whyApp",
26
28
  "label": "なぜアプリにしますか(コレクションでは何が足りませんか)",
27
29
  "why": "必須の機能を選ぶ基準になる。コレクションにあるものを写すだけなら、そう書く",
30
+ "placeholder": "例: 家族もスマホから本を登録できるようにしたい。コレクションのままだと、このパソコンからしか触れない",
28
31
  "kind": "text"
29
32
  },
30
33
  {
@@ -38,6 +41,7 @@
38
41
  "id": "mustHaves",
39
42
  "label": "これだけは最初から必要、という機能(空ならコレクションでできることすべて)",
40
43
  "why": "最後に一つずつ動くことを試験で確かめる",
44
+ "placeholder": "例: 本を登録する、題名で探す、貸し出し中かどうかを付ける",
41
45
  "kind": "text",
42
46
  "required": false
43
47
  },
@@ -45,6 +49,7 @@
45
49
  "id": "later",
46
50
  "label": "あとでよい機能",
47
51
  "why": "最初の版から外しておく",
52
+ "placeholder": "例: 読書の記録をグラフで見る、バーコードで登録する",
48
53
  "kind": "text",
49
54
  "required": false
50
55
  },
@@ -59,6 +64,7 @@
59
64
  "id": "roles",
60
65
  "label": "役割は分けますか(例: 管理者と一般)",
61
66
  "why": "だれが何をできるかの規則になる",
67
+ "placeholder": "例: 管理者は全部の本を直せる。家族は自分が登録した本だけ直せる",
62
68
  "kind": "text",
63
69
  "showIf": {
64
70
  "id": "signIn",
@@ -14,11 +14,13 @@
14
14
  },
15
15
  "appName": {
16
16
  "label": "The app's name (empty: the collection's name)",
17
- "why": "Shown on the screens and in the instructions"
17
+ "why": "Shown on the screens and in the instructions",
18
+ "placeholder": "e.g. Book Notes"
18
19
  },
19
20
  "whyApp": {
20
21
  "label": "Why make it an app? (What does the collection not do?)",
21
- "why": "This is how the must-haves are chosen. If you only want to copy what the collection has, say so"
22
+ "why": "This is how the must-haves are chosen. If you only want to copy what the collection has, say so",
23
+ "placeholder": "e.g. My family should be able to add books from their phones. As a collection, it only works on this computer"
22
24
  },
23
25
  "audience": {
24
26
  "label": "Who will use it?",
@@ -32,11 +34,13 @@
32
34
  },
33
35
  "mustHaves": {
34
36
  "label": "Features it must have from the start (empty: everything the collection can do)",
35
- "why": "At the end, each one is proved to work by a test"
37
+ "why": "At the end, each one is proved to work by a test",
38
+ "placeholder": "e.g. add a book, search by title, mark whether it is lent out"
36
39
  },
37
40
  "later": {
38
41
  "label": "Features that can wait",
39
- "why": "They are left out of the first version"
42
+ "why": "They are left out of the first version",
43
+ "placeholder": "e.g. reading charts, adding a book by its barcode"
40
44
  },
41
45
  "signIn": {
42
46
  "label": "How should people sign in?",
@@ -49,7 +53,8 @@
49
53
  },
50
54
  "roles": {
51
55
  "label": "Should there be roles? (for example, admin and regular user)",
52
- "why": "These become the rules for who can do what"
56
+ "why": "These become the rules for who can do what",
57
+ "placeholder": "e.g. An admin can edit every book; family members can edit only the books they added"
53
58
  },
54
59
  "dataSensitivity": {
55
60
  "label": "The most sensitive information it handles",
@@ -4,6 +4,7 @@
4
4
  "id": "documents",
5
5
  "label": "用語を集める文書(このフォルダの中のファイルを 1 行に 1 つ)",
6
6
  "why": "定義された語と書き方をこの文書から集め、原文の引用で裏付ける",
7
+ "placeholder": "例:\ndocs/仕様書.md\ndocs/用語メモ.md",
7
8
  "kind": "text",
8
9
  "lines": true,
9
10
  "pick": "files"
@@ -6,7 +6,8 @@
6
6
  "hearing": {
7
7
  "documents": {
8
8
  "label": "The documents to collect terms from (one file per line, inside this folder)",
9
- "why": "Defined terms and spellings are collected from these documents and backed by quotes from the original"
9
+ "why": "Defined terms and spellings are collected from these documents and backed by quotes from the original",
10
+ "placeholder": "e.g.\ndocs/spec.md\ndocs/terms.md"
10
11
  },
11
12
  "write": {
12
13
  "label": "Put how to align the spellings it found into chaff.yaml?",
@@ -4,19 +4,24 @@
4
4
  "id": "appName",
5
5
  "label": "アプリの名前",
6
6
  "why": "画面とプロジェクト名に使う",
7
- "kind": "text"
7
+ "placeholder": "例: 備品貸し出し",
8
+ "kind": "text",
9
+ "short": true
8
10
  },
9
11
  {
10
12
  "id": "appPurpose",
11
13
  "label": "何をするアプリですか(誰が、何を、どうする)",
12
14
  "why": "データの形と画面の数が決まる",
15
+ "placeholder": "例: 社員が会議室のプロジェクターなどの備品を予約し、総務が貸し出しと返却を記録する",
13
16
  "kind": "text"
14
17
  },
15
18
  {
16
19
  "id": "domain",
17
20
  "label": "会社のメールアドレスのドメイン(例: example.co.jp)",
18
21
  "why": "このドメインの人だけがログインできるようにする",
19
- "kind": "text"
22
+ "placeholder": "例: example.co.jp",
23
+ "kind": "text",
24
+ "short": true
20
25
  },
21
26
  {
22
27
  "id": "workspace",
@@ -34,6 +39,7 @@
34
39
  "id": "externalWho",
35
40
  "label": "どんな社外の人が、何をしますか",
36
41
  "why": "別の設計図を選ぶ材料にする",
42
+ "placeholder": "例: 取引先の担当者が、自社あての発注の進み具合を見る",
37
43
  "kind": "text",
38
44
  "showIf": {
39
45
  "id": "external",
@@ -83,7 +89,9 @@
83
89
  "id": "existingProjectId",
84
90
  "label": "そのプロジェクト ID",
85
91
  "why": "本番用として使う",
92
+ "placeholder": "例: my-company-tools",
86
93
  "kind": "text",
94
+ "short": true,
87
95
  "showIf": {
88
96
  "id": "existingProject",
89
97
  "equals": true
@@ -105,6 +113,7 @@
105
113
  "id": "mainScreens",
106
114
  "label": "主な画面(分かる範囲で)",
107
115
  "why": "最初に作る画面を決める",
116
+ "placeholder": "例: 備品の一覧、予約の入力、総務用の貸し出し記録",
108
117
  "kind": "text",
109
118
  "required": false
110
119
  }
@@ -6,15 +6,18 @@
6
6
  "hearing": {
7
7
  "appName": {
8
8
  "label": "The app's name",
9
- "why": "Used on the screens and as the project name"
9
+ "why": "Used on the screens and as the project name",
10
+ "placeholder": "e.g. Equipment Loans"
10
11
  },
11
12
  "appPurpose": {
12
13
  "label": "What does the app do? (who does what, and how)",
13
- "why": "It decides the data shape and how many screens there are"
14
+ "why": "It decides the data shape and how many screens there are",
15
+ "placeholder": "e.g. Staff book equipment such as meeting-room projectors, and the office team records when it goes out and comes back"
14
16
  },
15
17
  "domain": {
16
18
  "label": "Your company's email domain (e.g. example.co.jp)",
17
- "why": "Only people with this domain will be able to sign in"
19
+ "why": "Only people with this domain will be able to sign in",
20
+ "placeholder": "e.g. example.com"
18
21
  },
19
22
  "workspace": {
20
23
  "label": "Does your company use Google Workspace?",
@@ -26,7 +29,8 @@
26
29
  },
27
30
  "externalWho": {
28
31
  "label": "Which outside people, and what will they do?",
29
- "why": "Used to choose the other blueprint"
32
+ "why": "Used to choose the other blueprint",
33
+ "placeholder": "e.g. A supplier's contact checks how their orders from us are progressing"
30
34
  },
31
35
  "users": {
32
36
  "label": "About how many people will use it?",
@@ -72,7 +76,8 @@
72
76
  },
73
77
  "existingProjectId": {
74
78
  "label": "That project's ID",
75
- "why": "Used for production"
79
+ "why": "Used for production",
80
+ "placeholder": "e.g. my-company-tools"
76
81
  },
77
82
  "billingAccount": {
78
83
  "label": "Do you have a Google Cloud billing account (a company card or similar)?",
@@ -84,7 +89,8 @@
84
89
  },
85
90
  "mainScreens": {
86
91
  "label": "The main screens (as far as you know)",
87
- "why": "Decides which screens are built first"
92
+ "why": "Decides which screens are built first",
93
+ "placeholder": "e.g. the equipment list, a booking form, the office team's loan log"
88
94
  }
89
95
  },
90
96
  "steps": {
@@ -4,6 +4,7 @@
4
4
  "id": "targets",
5
5
  "label": "整えたい文書(ファイル・フォルダを 1 行に 1 つ。このフォルダの中の場所で)",
6
6
  "why": "候補はこの中から選ぶ",
7
+ "placeholder": "例:\ndocs/\nREADME.md",
7
8
  "kind": "text",
8
9
  "lines": true,
9
10
  "pick": "files"
@@ -96,6 +97,7 @@
96
97
  "id": "avoid",
97
98
  "label": "触らないでほしいファイルや場所(任意)",
98
99
  "why": "候補から外す",
100
+ "placeholder": "例: docs/legal/(法務が確認済みのため)",
99
101
  "kind": "text",
100
102
  "required": false
101
103
  }
@@ -6,7 +6,8 @@
6
6
  "hearing": {
7
7
  "targets": {
8
8
  "label": "The documents to polish (one file or folder per line, as a place inside this folder)",
9
- "why": "The candidates are chosen from these"
9
+ "why": "The candidates are chosen from these",
10
+ "placeholder": "e.g.\ndocs/\nREADME.md"
10
11
  },
11
12
  "style": {
12
13
  "label": "Which style should they follow?",
@@ -69,7 +70,8 @@
69
70
  },
70
71
  "avoid": {
71
72
  "label": "Files or places to leave alone",
72
- "why": "Left out of the candidates"
73
+ "why": "Left out of the candidates",
74
+ "placeholder": "e.g. docs/legal/ (already reviewed by legal)"
73
75
  }
74
76
  },
75
77
  "steps": {
@@ -89,7 +91,7 @@
89
91
  "presets": {
90
92
  "oshirase": {
91
93
  "title": "Polish a company notice",
92
- "description": "In the sample notice (oshirase.md), splits the sentences chaff finds too long so they read easily, without changing what they say. The original is kept. Run the \"Make a style\" example in the same folder first and choose its style, and the notice follows that style."
94
+ "description": "In the sample notice (oshirase.md), fixes what chaff finds (such as an intensifier that says nothing) so it reads easily, without changing what it says. The original is kept. Run the \"Make a style\" example in the same folder first and choose its style, and the notice follows that style."
93
95
  },
94
96
  "houkoku": {
95
97
  "title": "Polish a report as a report",
@@ -101,7 +103,7 @@
101
103
  },
102
104
  "tejun": {
103
105
  "title": "Polish a procedure as a procedure",
104
- "description": "Reads the sample procedure (tejun.md) as a manual. Sentences that are too long are split without changing what they say. It looks at what you need before starting, whether one step holds two actions, and how to tell a step worked; where something needs adding, it becomes a question for the author in the report. The original is kept."
106
+ "description": "Reads the sample procedure (tejun.md) as a manual. What chaff finds (such as a \"here\" link that does not say where it goes) is fixed without changing what it says. It looks at what you need before starting, whether one step holds two actions, and how to tell a step worked; where something needs adding, it becomes a question for the author in the report. The original is kept."
105
107
  },
106
108
  "shayo": {
107
109
  "title": "Polish a regulation as a regulation",
@@ -109,7 +111,7 @@
109
111
  },
110
112
  "english-blog": {
111
113
  "title": "Polish an English blog post",
112
- "description": "Reads the sample English technical blog post (post.md) as a technical article. The post stays in English: overlong sentences are split, and an opening that would fit any post or a stock closing line is cut. Where something needs adding, such as a closing that only summarises, it becomes a question for the author in the report. The report comes back in your report language. The original is kept."
114
+ "description": "Reads the sample English technical blog post (post.md) as a technical article. The post stays in English: an opening that would fit any post or a stock closing line is cut. Where something needs adding, such as a closing that only summarises, it becomes a question for the author in the report. The report comes back in your report language. The original is kept."
113
115
  }
114
116
  }
115
117
  }
@@ -1,6 +1,6 @@
1
1
  # 年末年始の休みについてのお知らせ
2
2
 
3
- 年末年始の休みについては、12月29日から1月3日までを会社としての休みとすることになりましたので、その期間中にどうしても対応が必要になるような仕事がある人については、前もって上長の人とよく相談をしておいてもらえるとよいかと思っています。
3
+ 年末年始の休みについては、12月29日から1月3日までを会社としての休みとすることになりましたので、その期間中にどうしても対応が必要になるような仕事がある人については、言うまでもなく前もって上長の人とよく相談をしておいてもらえるとよいかと思っています。
4
4
 
5
5
  休みの期間中の問い合わせについては、急ぎのものについてのみ、当番の人が対応をすることができるような形にしておきたいと考えていますので、当番の人の名前と連絡先については、12月20日までにこのページに書いておくようにします。
6
6
 
@@ -7,7 +7,7 @@
7
7
  1. 経費精算システムを開き、社員番号とパスワードでログインして、左のメニューから「新しい申請」を選びます。
8
8
  2. 申請の種類で「交通費」を選びます。
9
9
  3. 使った日、出発した駅、着いた駅、金額を入れます。往復のときは「往復」に印を付けると、入れた金額が自動で二倍になって表示される仕組みになっているため、往復の合計の金額ではなく片道の金額を入れるように、入れる前にもう一度確かめてから次の手順に進むよう気をつけてください。
10
- 4. 交通系ICカードで払ったときは、利用履歴を印刷したものを写真に撮り、「添付」から付けます。
10
+ 4. 交通系ICカードで払ったときは、利用履歴を印刷したものを写真に撮り、「添付」から付けます。利用履歴の印刷のしかたは[こちら](https://example.com/ic-history)を見てください。
11
11
  5. 「申請する」を押します。
12
12
 
13
13
  ## うまくいかないとき
@@ -3,7 +3,7 @@
3
3
  {
4
4
  "id": "oshirase",
5
5
  "title": "社内のお知らせを整える",
6
- "description": "見本のお知らせ(oshirase.md)のうち、chaff が長すぎると指摘した文を、書いてあることは変えずに分けて読みやすくする。直す前の原本は残す。先に「規約をつくる」の例を同じフォルダで済ませて規約を選ぶと、その規約に合わせて整える。",
6
+ "description": "見本のお知らせ(oshirase.md)のうち、chaff が指摘した所(強めるだけで中身の無い言い方など)を、書いてあることは変えずに直して読みやすくする。直す前の原本は残す。先に「規約をつくる」の例を同じフォルダで済ませて規約を選ぶと、その規約に合わせて整える。",
7
7
  "base": "docs",
8
8
  "answers": {
9
9
  "targets": "oshirase.md",
@@ -42,7 +42,7 @@
42
42
  {
43
43
  "id": "tejun",
44
44
  "title": "手順書を手順書として整える",
45
- "description": "見本の手順書(tejun.md)を「マニュアル・手順書」として読む。長すぎる文は、書いてあることは変えずに分ける。始める前に要るもの、一つの手順に動作が二つ入っていないか、うまくいったことの確かめ方を見て、書き足しが要るところは直さずに、書いた人への質問として報告に並べる。直す前の原本は残す。",
45
+ "description": "見本の手順書(tejun.md)を「マニュアル・手順書」として読む。chaff が指摘した所(行き先の分からない「こちら」のリンクなど)は、書いてあることは変えずに直す。始める前に要るもの、一つの手順に動作が二つ入っていないか、うまくいったことの確かめ方を見て、書き足しが要るところは直さずに、書いた人への質問として報告に並べる。直す前の原本は残す。",
46
46
  "base": "docs",
47
47
  "answers": {
48
48
  "targets": "tejun.md",
@@ -68,7 +68,7 @@
68
68
  {
69
69
  "id": "english-blog",
70
70
  "title": "英語のブログ記事を整える",
71
- "description": "見本の英語の技術ブログ(post.md)を「ブログ(技術記事)」として読む。文書は英語のまま、長すぎる文を分け、どの記事にも当てはまる書き出しや結びの決まり文句は削る。要約だけの結びなど、書き足しが要るところは直さずに、書いた人への質問として報告に並べる。報告は画面の言語で返る。直す前の原本は残す。",
71
+ "description": "見本の英語の技術ブログ(post.md)を「ブログ(技術記事)」として読む。文書は英語のまま、どの記事にも当てはまる書き出しや結びの決まり文句は削る。要約だけの結びなど、書き足しが要るところは直さずに、書いた人への質問として報告に並べる。報告は画面の言語で返る。直す前の原本は残す。",
72
72
  "base": "docs",
73
73
  "answers": {
74
74
  "targets": "post.md",
@@ -4,18 +4,22 @@
4
4
  "id": "appName",
5
5
  "label": "アプリの名前(仮でよい)",
6
6
  "why": "画面と説明書に出す",
7
- "kind": "text"
7
+ "placeholder": "例: レシピ帳",
8
+ "kind": "text",
9
+ "short": true
8
10
  },
9
11
  {
10
12
  "id": "idea",
11
13
  "label": "何を作りたいですか(一言で)",
12
14
  "why": "作るものの芯になる",
15
+ "placeholder": "例: 家族で使うレシピの共有アプリ",
13
16
  "kind": "text"
14
17
  },
15
18
  {
16
19
  "id": "problem",
17
20
  "label": "どんな困りごとを解決しますか",
18
21
  "why": "必須の機能を選ぶ基準になる",
22
+ "placeholder": "例: レシピがメモ帳やブックマークに散らばっていて、作りたいときに見つからない",
19
23
  "kind": "text"
20
24
  },
21
25
  {
@@ -29,24 +33,28 @@
29
33
  "id": "things",
30
34
  "label": "扱うものは何ですか(例: 本、予約、在庫、レシピ)",
31
35
  "why": "データの表になる",
36
+ "placeholder": "例: レシピ、材料、買い物リスト",
32
37
  "kind": "text"
33
38
  },
34
39
  {
35
40
  "id": "actions",
36
41
  "label": "使う人は何をしますか(例: 登録する、探す、予約する、集計を見る)",
37
42
  "why": "API と画面になる",
43
+ "placeholder": "例: レシピを登録する、材料で探す、買い物リストを作る",
38
44
  "kind": "text"
39
45
  },
40
46
  {
41
47
  "id": "mustHaves",
42
48
  "label": "これだけは最初から必要、という機能",
43
49
  "why": "最後に一つずつ動くことを試験で確かめる",
50
+ "placeholder": "例: レシピの登録と編集、題名と材料での検索",
44
51
  "kind": "text"
45
52
  },
46
53
  {
47
54
  "id": "later",
48
55
  "label": "あとでよい機能",
49
56
  "why": "最初の版から外しておく",
57
+ "placeholder": "例: 写真の自動補正、献立の提案",
50
58
  "kind": "text",
51
59
  "required": false
52
60
  },
@@ -61,6 +69,7 @@
61
69
  "id": "roles",
62
70
  "label": "役割は分けますか(例: 管理者と一般)",
63
71
  "why": "だれが何をできるかの規則になる",
72
+ "placeholder": "例: 管理者はすべてのレシピを消せる。家族は自分のレシピだけ直せる",
64
73
  "kind": "text",
65
74
  "showIf": {
66
75
  "id": "signIn",
@@ -78,6 +87,7 @@
78
87
  "id": "references",
79
88
  "label": "似ているサービスやイメージ(あれば)",
80
89
  "why": "画面の作りの参考にする",
90
+ "placeholder": "例: クックパッドのような一覧画面。写真が大きく見えるとよい",
81
91
  "kind": "text",
82
92
  "required": false
83
93
  },
@@ -6,15 +6,18 @@
6
6
  "hearing": {
7
7
  "appName": {
8
8
  "label": "The app's name (a working name is fine)",
9
- "why": "Shown on the screens and in the instructions"
9
+ "why": "Shown on the screens and in the instructions",
10
+ "placeholder": "e.g. Recipe Box"
10
11
  },
11
12
  "idea": {
12
13
  "label": "What do you want to make (in a few words)?",
13
- "why": "It becomes the core of what is built"
14
+ "why": "It becomes the core of what is built",
15
+ "placeholder": "e.g. A recipe-sharing app for the family"
14
16
  },
15
17
  "problem": {
16
18
  "label": "What problem does it solve?",
17
- "why": "It decides which features are must-haves"
19
+ "why": "It decides which features are must-haves",
20
+ "placeholder": "e.g. Our recipes are scattered across notes and bookmarks, and we cannot find one when we want to cook it"
18
21
  },
19
22
  "audience": {
20
23
  "label": "Who will use it?",
@@ -28,19 +31,23 @@
28
31
  },
29
32
  "things": {
30
33
  "label": "What does it handle? (e.g. books, bookings, stock, recipes)",
31
- "why": "These become the tables of data"
34
+ "why": "These become the tables of data",
35
+ "placeholder": "e.g. recipes, ingredients, shopping lists"
32
36
  },
33
37
  "actions": {
34
38
  "label": "What do the people using it do? (e.g. add, search, book, see totals)",
35
- "why": "These become the API and the screens"
39
+ "why": "These become the API and the screens",
40
+ "placeholder": "e.g. add a recipe, search by ingredient, make a shopping list"
36
41
  },
37
42
  "mustHaves": {
38
43
  "label": "The features it needs from the very start",
39
- "why": "At the end, a test checks each one works"
44
+ "why": "At the end, a test checks each one works",
45
+ "placeholder": "e.g. adding and editing recipes, searching by title and ingredient"
40
46
  },
41
47
  "later": {
42
48
  "label": "Features that can wait",
43
- "why": "Left out of the first version"
49
+ "why": "Left out of the first version",
50
+ "placeholder": "e.g. automatic photo touch-up, meal suggestions"
44
51
  },
45
52
  "signIn": {
46
53
  "label": "How should people sign in?",
@@ -53,7 +60,8 @@
53
60
  },
54
61
  "roles": {
55
62
  "label": "Should there be different roles? (e.g. admin and regular user)",
56
- "why": "It becomes the rules for who can do what"
63
+ "why": "It becomes the rules for who can do what",
64
+ "placeholder": "e.g. An admin can delete any recipe; family members can edit only their own"
57
65
  },
58
66
  "dataSensitivity": {
59
67
  "label": "The most sensitive information it handles",
@@ -67,7 +75,8 @@
67
75
  },
68
76
  "references": {
69
77
  "label": "Similar services or the look you have in mind (if any)",
70
- "why": "Used as a reference for the screens"
78
+ "why": "Used as a reference for the screens",
79
+ "placeholder": "e.g. A list like a recipe site's, with large photos"
71
80
  },
72
81
  "uiLanguage": {
73
82
  "label": "The language of the screens",