@dedesfr/prompter 0.8.23 → 1.0.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 (247) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +105 -77
  3. package/dist/cli/index.js +25 -1
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/commands/init.d.ts +1 -7
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +60 -299
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/login.d.ts +4 -0
  10. package/dist/commands/login.d.ts.map +1 -0
  11. package/dist/commands/login.js +56 -0
  12. package/dist/commands/login.js.map +1 -0
  13. package/dist/commands/logout.d.ts +4 -0
  14. package/dist/commands/logout.d.ts.map +1 -0
  15. package/dist/commands/logout.js +14 -0
  16. package/dist/commands/logout.js.map +1 -0
  17. package/dist/commands/update.d.ts.map +1 -1
  18. package/dist/commands/update.js +31 -41
  19. package/dist/commands/update.js.map +1 -1
  20. package/dist/commands/whoami.d.ts +4 -0
  21. package/dist/commands/whoami.d.ts.map +1 -0
  22. package/dist/commands/whoami.js +42 -0
  23. package/dist/commands/whoami.js.map +1 -0
  24. package/dist/core/auth-store.d.ts +10 -0
  25. package/dist/core/auth-store.d.ts.map +1 -0
  26. package/dist/core/auth-store.js +39 -0
  27. package/dist/core/auth-store.js.map +1 -0
  28. package/dist/core/configurators/slash/antigravity.d.ts +2 -5
  29. package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
  30. package/dist/core/configurators/slash/antigravity.js +2 -57
  31. package/dist/core/configurators/slash/antigravity.js.map +1 -1
  32. package/dist/core/configurators/slash/base.d.ts +6 -18
  33. package/dist/core/configurators/slash/base.d.ts.map +1 -1
  34. package/dist/core/configurators/slash/base.js +8 -77
  35. package/dist/core/configurators/slash/base.js.map +1 -1
  36. package/dist/core/configurators/slash/claude.d.ts +2 -5
  37. package/dist/core/configurators/slash/claude.d.ts.map +1 -1
  38. package/dist/core/configurators/slash/claude.js +2 -57
  39. package/dist/core/configurators/slash/claude.js.map +1 -1
  40. package/dist/core/configurators/slash/codex.d.ts +2 -5
  41. package/dist/core/configurators/slash/codex.d.ts.map +1 -1
  42. package/dist/core/configurators/slash/codex.js +2 -57
  43. package/dist/core/configurators/slash/codex.js.map +1 -1
  44. package/dist/core/configurators/slash/droid.d.ts +2 -5
  45. package/dist/core/configurators/slash/droid.d.ts.map +1 -1
  46. package/dist/core/configurators/slash/droid.js +2 -32
  47. package/dist/core/configurators/slash/droid.js.map +1 -1
  48. package/dist/core/configurators/slash/forge.d.ts +2 -5
  49. package/dist/core/configurators/slash/forge.d.ts.map +1 -1
  50. package/dist/core/configurators/slash/forge.js +2 -32
  51. package/dist/core/configurators/slash/forge.js.map +1 -1
  52. package/dist/core/configurators/slash/github-copilot.d.ts +2 -7
  53. package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
  54. package/dist/core/configurators/slash/github-copilot.js +2 -96
  55. package/dist/core/configurators/slash/github-copilot.js.map +1 -1
  56. package/dist/core/configurators/slash/index.d.ts +1 -1
  57. package/dist/core/configurators/slash/index.d.ts.map +1 -1
  58. package/dist/core/configurators/slash/index.js +1 -1
  59. package/dist/core/configurators/slash/index.js.map +1 -1
  60. package/dist/core/configurators/slash/kilocode.d.ts +2 -5
  61. package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
  62. package/dist/core/configurators/slash/kilocode.js +2 -57
  63. package/dist/core/configurators/slash/kilocode.js.map +1 -1
  64. package/dist/core/configurators/slash/opencode.d.ts +2 -5
  65. package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
  66. package/dist/core/configurators/slash/opencode.js +2 -57
  67. package/dist/core/configurators/slash/opencode.js.map +1 -1
  68. package/dist/core/configurators/slash/registry.d.ts +4 -4
  69. package/dist/core/configurators/slash/registry.d.ts.map +1 -1
  70. package/dist/core/configurators/slash/registry.js.map +1 -1
  71. package/dist/core/registry.d.ts +18 -0
  72. package/dist/core/registry.d.ts.map +1 -0
  73. package/dist/core/registry.js +94 -0
  74. package/dist/core/registry.js.map +1 -0
  75. package/dist/core/templates/index.d.ts +0 -1
  76. package/dist/core/templates/index.d.ts.map +1 -1
  77. package/dist/core/templates/index.js +0 -1
  78. package/dist/core/templates/index.js.map +1 -1
  79. package/package.json +7 -1
  80. package/AGENTS.md +0 -123
  81. package/CLAUDE.md +0 -17
  82. package/build.js +0 -20
  83. package/convex-setup.md +0 -403
  84. package/dist/core/templates/slash-command-templates.d.ts +0 -7
  85. package/dist/core/templates/slash-command-templates.d.ts.map +0 -1
  86. package/dist/core/templates/slash-command-templates.js +0 -1041
  87. package/dist/core/templates/slash-command-templates.js.map +0 -1
  88. package/prompt/ai-humanizer.md +0 -45
  89. package/prompt/api-contract-generator.md +0 -234
  90. package/prompt/apply.md +0 -17
  91. package/prompt/archive.md +0 -21
  92. package/prompt/design-system.md +0 -210
  93. package/prompt/document-explainer.md +0 -149
  94. package/prompt/epic-generator.md +0 -198
  95. package/prompt/epic-single.md +0 -47
  96. package/prompt/erd-generator.md +0 -130
  97. package/prompt/fsd-generator.md +0 -157
  98. package/prompt/prd-agent-generator.md +0 -147
  99. package/prompt/prd-generator.md +0 -195
  100. package/prompt/product-brief.md +0 -289
  101. package/prompt/proposal.md +0 -22
  102. package/prompt/qa-test-scenario.md +0 -133
  103. package/prompt/skill-creator.md +0 -350
  104. package/prompt/story-generator.md +0 -278
  105. package/prompt/story-single.md +0 -70
  106. package/prompt/tdd-generator.md +0 -294
  107. package/prompt/tdd-lite-generator.md +0 -224
  108. package/prompt/wireframe-generator.md +0 -219
  109. package/skills/ai-context-generator/SKILL.md +0 -54
  110. package/skills/ai-context-generator/references/AGENTS.template.md +0 -83
  111. package/skills/ai-context-generator/references/CLAUDE.template.md +0 -39
  112. package/skills/ai-context-generator/references/behavioral-guidelines.md +0 -71
  113. package/skills/ai-context-generator/references/discovery-checklist.md +0 -40
  114. package/skills/ai-context-generator/references/examples/AGENTS.good.md +0 -103
  115. package/skills/ai-context-generator/references/extraction-checklist.md +0 -23
  116. package/skills/ai-context-generator/references/overlays/laravel.md +0 -44
  117. package/skills/cerebro/SKILL.md +0 -187
  118. package/skills/cerebro/references/agents.md +0 -213
  119. package/skills/code-review/SKILL.md +0 -373
  120. package/skills/code-review/assets/report-template-agent.md +0 -212
  121. package/skills/code-review/assets/report-template-compact.md +0 -81
  122. package/skills/code-review/assets/report-template-full.md +0 -264
  123. package/skills/code-review/assets/report-template-human.md +0 -168
  124. package/skills/code-review/references/universal-patterns.md +0 -495
  125. package/skills/design-md/README.md +0 -34
  126. package/skills/design-md/SKILL.md +0 -172
  127. package/skills/design-md/examples/DESIGN.md +0 -154
  128. package/skills/design-system-generator/SKILL.md +0 -324
  129. package/skills/design-system-generator/assets/design-system-template.md +0 -348
  130. package/skills/design-system-generator/references/extraction-patterns.md +0 -321
  131. package/skills/doc-builder/SKILL.md +0 -115
  132. package/skills/doc-builder/references/ui-patterns.md +0 -394
  133. package/skills/document-translator/SKILL.md +0 -58
  134. package/skills/enhance-prompt/README.md +0 -34
  135. package/skills/enhance-prompt/SKILL.md +0 -204
  136. package/skills/enhance-prompt/references/KEYWORDS.md +0 -114
  137. package/skills/feature-planner/SKILL.md +0 -305
  138. package/skills/feature-planner/assets/implementation-plan-template.md +0 -85
  139. package/skills/frontend-design/LICENSE.txt +0 -177
  140. package/skills/frontend-design/SKILL.md +0 -42
  141. package/skills/gamma-builder/SKILL.md +0 -134
  142. package/skills/laravel-code-review/SKILL.md +0 -383
  143. package/skills/laravel-code-review/assets/report-template-agent.md +0 -195
  144. package/skills/laravel-code-review/assets/report-template-compact.md +0 -79
  145. package/skills/laravel-code-review/assets/report-template-full.md +0 -253
  146. package/skills/laravel-code-review/assets/report-template-human.md +0 -159
  147. package/skills/laravel-code-review/references/laravel-patterns.md +0 -571
  148. package/skills/laravel-code-review/references/php84-features.md +0 -442
  149. package/skills/mcp-builder/LICENSE.txt +0 -202
  150. package/skills/mcp-builder/SKILL.md +0 -236
  151. package/skills/mcp-builder/reference/evaluation.md +0 -602
  152. package/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  153. package/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  154. package/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  155. package/skills/mcp-builder/scripts/connections.py +0 -151
  156. package/skills/mcp-builder/scripts/evaluation.py +0 -373
  157. package/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  158. package/skills/mcp-builder/scripts/requirements.txt +0 -2
  159. package/skills/meeting-notes/SKILL.md +0 -159
  160. package/skills/meeting-notes/evals/evals.json +0 -23
  161. package/skills/project-orchestrator/SKILL.md +0 -487
  162. package/skills/project-orchestrator/assets/caddy-vps-setup.md +0 -180
  163. package/skills/project-orchestrator/assets/plan-summary-template.md +0 -159
  164. package/skills/prompter-specs/SKILL.md +0 -115
  165. package/skills/prompter-workflow/SKILL.md +0 -166
  166. package/skills/prompter-workflow/evals/evals.json +0 -89
  167. package/skills/sph-generator/SKILL.md +0 -488
  168. package/skills/ui-ux-pro/SKILL.md +0 -199
  169. package/skills/ui-ux-pro/assets/design-spec-template.md +0 -173
  170. package/skills/ui-ux-pro/references/component-patterns.md +0 -255
  171. package/skills/ui-ux-pro/references/design-principles.md +0 -167
  172. package/src/cli/index.ts +0 -223
  173. package/src/commands/archive.ts +0 -302
  174. package/src/commands/change.ts +0 -292
  175. package/src/commands/config.ts +0 -233
  176. package/src/commands/guide.ts +0 -50
  177. package/src/commands/init.ts +0 -899
  178. package/src/commands/list.ts +0 -194
  179. package/src/commands/show.ts +0 -138
  180. package/src/commands/spec.ts +0 -251
  181. package/src/commands/update.ts +0 -156
  182. package/src/commands/upgrade.ts +0 -30
  183. package/src/commands/validate.ts +0 -326
  184. package/src/core/artifact-graph/graph.ts +0 -167
  185. package/src/core/artifact-graph/index.ts +0 -44
  186. package/src/core/artifact-graph/instruction-loader.ts +0 -302
  187. package/src/core/artifact-graph/resolver.ts +0 -226
  188. package/src/core/artifact-graph/schema.ts +0 -124
  189. package/src/core/artifact-graph/state.ts +0 -64
  190. package/src/core/artifact-graph/types.ts +0 -65
  191. package/src/core/completions/command-registry.ts +0 -382
  192. package/src/core/completions/completion-provider.ts +0 -128
  193. package/src/core/completions/generators/bash-generator.ts +0 -191
  194. package/src/core/completions/generators/fish-generator.ts +0 -188
  195. package/src/core/completions/generators/powershell-generator.ts +0 -223
  196. package/src/core/completions/generators/zsh-generator.ts +0 -281
  197. package/src/core/completions/templates/bash-templates.ts +0 -24
  198. package/src/core/completions/templates/fish-templates.ts +0 -40
  199. package/src/core/completions/templates/powershell-templates.ts +0 -25
  200. package/src/core/completions/templates/zsh-templates.ts +0 -36
  201. package/src/core/completions/types.ts +0 -90
  202. package/src/core/config-schema.ts +0 -230
  203. package/src/core/config.ts +0 -181
  204. package/src/core/configurators/slash/antigravity.ts +0 -70
  205. package/src/core/configurators/slash/base.ts +0 -203
  206. package/src/core/configurators/slash/claude.ts +0 -70
  207. package/src/core/configurators/slash/codex.ts +0 -70
  208. package/src/core/configurators/slash/droid.ts +0 -44
  209. package/src/core/configurators/slash/forge.ts +0 -44
  210. package/src/core/configurators/slash/github-copilot.ts +0 -114
  211. package/src/core/configurators/slash/index.ts +0 -10
  212. package/src/core/configurators/slash/kilocode.ts +0 -70
  213. package/src/core/configurators/slash/opencode.ts +0 -70
  214. package/src/core/configurators/slash/registry.ts +0 -51
  215. package/src/core/converters/json-converter.ts +0 -62
  216. package/src/core/global-config.ts +0 -136
  217. package/src/core/parsers/change-parser.ts +0 -234
  218. package/src/core/parsers/markdown-parser.ts +0 -237
  219. package/src/core/parsers/requirement-blocks.ts +0 -234
  220. package/src/core/prompt-templates.ts +0 -3504
  221. package/src/core/schemas/base.schema.ts +0 -20
  222. package/src/core/schemas/change.schema.ts +0 -42
  223. package/src/core/schemas/index.ts +0 -20
  224. package/src/core/schemas/spec.schema.ts +0 -17
  225. package/src/core/skill-discovery.ts +0 -68
  226. package/src/core/specs-apply.ts +0 -483
  227. package/src/core/styles/palette.ts +0 -8
  228. package/src/core/templates/agents-template.ts +0 -459
  229. package/src/core/templates/claude-template.ts +0 -2
  230. package/src/core/templates/index.ts +0 -4
  231. package/src/core/templates/project-template.ts +0 -32
  232. package/src/core/templates/slash-command-templates.ts +0 -1068
  233. package/src/core/validation/constants.ts +0 -48
  234. package/src/core/validation/types.ts +0 -19
  235. package/src/core/validation/validator.ts +0 -449
  236. package/src/core/view.ts +0 -219
  237. package/src/index.ts +0 -1
  238. package/src/utils/change-metadata.ts +0 -171
  239. package/src/utils/change-utils.ts +0 -131
  240. package/src/utils/file-system.ts +0 -252
  241. package/src/utils/index.ts +0 -12
  242. package/src/utils/interactive.ts +0 -29
  243. package/src/utils/item-discovery.ts +0 -66
  244. package/src/utils/match.ts +0 -26
  245. package/src/utils/shell-detection.ts +0 -62
  246. package/src/utils/task-progress.ts +0 -43
  247. package/tsconfig.json +0 -28
@@ -1,89 +0,0 @@
1
- {
2
- "skill_name": "prompter-workflow",
3
- "evals": [
4
- {
5
- "id": 1,
6
- "prompt": "I want to add a webhook notification system so that when a user completes an order, we fire a POST to their configured endpoint. Can you create a proposal for this?",
7
- "expected_output": "Creates a change proposal under prompter/changes/add-webhook-notifications/ with proposal.md, tasks.md, and at least one spec delta under specs/ with ADDED Requirements and Scenario blocks. Runs prompter validate with --strict.",
8
- "files": [],
9
- "assertions": [
10
- {
11
- "name": "Creates proposal.md with Why section",
12
- "description": "Output or created files include a proposal.md that contains a ## Why section explaining the motivation"
13
- },
14
- {
15
- "name": "Creates tasks.md",
16
- "description": "Output or created files include a tasks.md with a checklist of implementation tasks using - [ ] format"
17
- },
18
- {
19
- "name": "Creates spec delta with ADDED Requirements",
20
- "description": "A spec delta file under specs/ contains '## ADDED Requirements' header"
21
- },
22
- {
23
- "name": "Spec delta has Scenario block",
24
- "description": "The spec delta contains at least one '#### Scenario:' block (4 hashtags, not bold or bullet)"
25
- },
26
- {
27
- "name": "Does not write implementation code",
28
- "description": "The output does not contain actual code implementation (no function definitions, no API endpoint implementations) — only design documents"
29
- },
30
- {
31
- "name": "Mentions running prompter validate",
32
- "description": "The output mentions running prompter validate with --strict flag to verify the proposal"
33
- }
34
- ]
35
- },
36
- {
37
- "id": 2,
38
- "prompt": "The add-webhook-notifications proposal has been approved. Please implement it now.",
39
- "expected_output": "Reads the proposal.md, design.md (if any), and tasks.md from the change directory. Works through tasks sequentially. Updates tasks.md with checkmarks when done.",
40
- "files": [],
41
- "assertions": [
42
- {
43
- "name": "Reads proposal.md before implementing",
44
- "description": "Output explicitly mentions reading or referencing proposal.md before starting implementation"
45
- },
46
- {
47
- "name": "Reads tasks.md",
48
- "description": "Output explicitly mentions reading or referencing tasks.md"
49
- },
50
- {
51
- "name": "Works through tasks sequentially",
52
- "description": "Output describes completing tasks in order, not all at once or in arbitrary order"
53
- },
54
- {
55
- "name": "Updates task checklist",
56
- "description": "Output mentions updating tasks.md checkboxes (- [x]) after completion"
57
- },
58
- {
59
- "name": "Does not skip approval gate",
60
- "description": "Output does not implement before acknowledging the proposal was approved — respects the approval gate"
61
- }
62
- ]
63
- },
64
- {
65
- "id": 3,
66
- "prompt": "We shipped the webhook feature last week. Can you archive that change?",
67
- "expected_output": "Runs prompter list to identify the change, confirms the ID with the user or uses it directly, runs prompter archive <id> --yes, then validates with prompter validate --strict.",
68
- "files": [],
69
- "assertions": [
70
- {
71
- "name": "Mentions running prompter list to identify change",
72
- "description": "Output mentions running `prompter list` or `prompter show` to verify the change ID before archiving"
73
- },
74
- {
75
- "name": "Uses correct archive command with --yes",
76
- "description": "Output includes `prompter archive add-webhook-notifications --yes` (or similar with the correct change ID and --yes flag)"
77
- },
78
- {
79
- "name": "Runs post-archive validation",
80
- "description": "Output mentions running `prompter validate --strict` after archiving to confirm specs are consistent"
81
- },
82
- {
83
- "name": "Does not archive blindly without ID check",
84
- "description": "Output shows the agent verifying or confirming the change ID rather than immediately running the archive command"
85
- }
86
- ]
87
- }
88
- ]
89
- }
@@ -1,488 +0,0 @@
1
- ---
2
- name: sph-generator
3
- description: Generate a Surat Penawaran Harga (SPH) / Price Quotation Letter as a structured Markdown file that converts cleanly to .docx (via Pandoc) or .pdf. Supports two output languages — Bahasa Indonesia and English — and two modes — goods (barang) and services (jasa, e.g. web development, interior design, consulting). Use this skill whenever the user asks to create, draft, or generate an SPH, surat penawaran, surat penawaran harga, quotation letter, price quote, price offer, business quotation, project proposal with pricing, or any formal price proposal document for goods or services. Trigger this skill even when the user does not explicitly say "SPH" — phrases like "buatkan penawaran untuk klien", "buat penawaran jasa pembuatan website", "draft a quote for the interior design project", "buat surat penawaran", "I need a price offer document", or "tolong buatkan dokumen penawaran harga" all qualify.
4
- ---
5
-
6
- # SPH Generator — Surat Penawaran Harga / Price Quotation Letter
7
-
8
- Generate a clean, business-ready **Surat Penawaran Harga (SPH)** as a single Markdown file. The output is intentionally formatted so it converts well to `.docx` or `.pdf` via Pandoc, Typora, or similar tools — no exotic syntax, no HTML soup, just portable Markdown.
9
-
10
- The skill supports two output languages:
11
- - **Bahasa Indonesia** (default for Indonesian context)
12
- - **English**
13
-
14
- …and two modes:
15
- - **Goods mode (barang)** — concise template for physical/product quotations (e.g. supply alat, hardware, ATK).
16
- - **Services mode (jasa)** — richer template for project-based services (web/app development, desain interior, branding, konsultan, event organizer, dll). Adds Lingkup Pekerjaan, Tahapan & Termin, Asumsi & Pengecualian, dan Revisi — bagian-bagian yang biasanya jadi sumber sengketa kalau tidak dieksplisitkan.
17
-
18
- ## When to use
19
-
20
- Trigger this skill when the user wants to produce a formal price quotation document, including phrasings like:
21
- - "buat SPH ...", "buatkan surat penawaran harga", "draft penawaran untuk ..."
22
- - "create a quotation", "draft a price offer", "I need a quote document"
23
- - Any request that involves sending a vendor's offered price to a prospective client in letter form
24
-
25
- If the user is just asking for a casual price estimate (no letter, no recipient, no terms), this skill is overkill — clarify whether they want a full SPH document or just a price breakdown.
26
-
27
- ## Workflow
28
-
29
- ### 1. Choose the language and mode
30
-
31
- **Language** — ask once **unless** obvious from context (request ditulis dalam Bahasa Indonesia, pihak-pihak lokal → ID).
32
-
33
- > "Mau dibuat dalam Bahasa Indonesia atau English?"
34
-
35
- **Mode (barang vs jasa)** — infer from the items first; only ask if genuinely ambiguous. Heuristic:
36
-
37
- - Kata kunci **jasa**: pembuatan, pengembangan, development, desain, design, konsultasi, consulting, perancangan, instalasi (kalau termasuk pengerjaan), audit, training, maintenance, retainer, project, proyek, event organizer.
38
- - Kata kunci **barang**: supply, pengadaan, unit, pcs, lusin, kg, hardware, alat, peralatan, ATK, mesin, furniture (jadi).
39
-
40
- Kalau campuran (mis. supply + instalasi), pakai **services mode** dan masukkan barangnya sebagai line item di dalam scope — services mode adalah superset.
41
-
42
- ### 2. Gather the required information
43
-
44
- Collect what you need to fill the template. Don't over-interrogate — ask for the missing pieces in one batch. Required fields:
45
-
46
- | Field | Indonesian label | English label |
47
- |---|---|---|
48
- | Letter number | Nomor Surat | Reference No. |
49
- | Date | Tanggal | Date |
50
- | Sender (your company) | Pengirim / Perusahaan | Sender / Company |
51
- | Recipient | Kepada Yth. | To |
52
- | Recipient address | Alamat | Address |
53
- | Subject | Perihal | Subject |
54
- | Item / service lines | Rincian Barang/Jasa | Items / Services |
55
- | Currency | Mata Uang (default IDR) | Currency (default IDR) |
56
- | Tax (PPN) | PPN (umumnya 11%) | VAT (commonly 11% in ID) |
57
- | Validity period | Masa Berlaku Penawaran | Quotation Validity |
58
- | Payment terms | Syarat Pembayaran | Payment Terms |
59
- | Delivery terms | Syarat Pengiriman | Delivery Terms |
60
- | Signatory name & title | Nama & Jabatan Penanda Tangan | Signatory Name & Title |
61
-
62
- **Tambahan untuk services mode:**
63
-
64
- | Field | Indonesian label | English label |
65
- |---|---|---|
66
- | Project background | Latar Belakang Proyek | Project Background |
67
- | Executive summary | Ringkasan Eksekutif | Executive Summary |
68
- | Product type, users, platform, tech stack | Tipe Produk, Pengguna, Platform, Teknologi | Product Type, Users, Platform, Tech |
69
- | Pain points / challenges | Tantangan / Masalah yang Diselesaikan | Pain Points / Challenges |
70
- | Solution overview | Solusi Sistem | Solution Overview |
71
- | Scope of work | Scope of Work | Scope of Work |
72
- | Project deliverables | Project Deliverables | Project Deliverables |
73
- | Payment terms (termin) | Termin Pembayaran | Payment Milestones |
74
- | Warranty | Garansi | Warranty |
75
-
76
- If the user supplies only some of these, fill the rest with sensible placeholders (e.g., `[Nama Klien]`, `[YYYY-MM-DD]`) so the document is still usable as a draft.
77
-
78
- ### 3. Build the cost table
79
-
80
- **Goods mode** — each row: `No. | Deskripsi | Qty | Satuan | Harga Satuan | Subtotal`. Compute subtotals, PPN, and grand total inline.
81
-
82
- **Services mode** — each row: `No. | Deskripsi Pekerjaan | Waktu | Biaya (IDR)`. This reflects how service work is scoped — by effort/duration, not unit price. Rules:
83
- - "Waktu" = duration, e.g. `10 Hari Kerja`, `2 Minggu`
84
- - "Biaya" = lump sum for that work package
85
- - Grand total row: `**TOTAL INVESTASI** | | **X Hari Kerja** | **Rp X**`
86
- - PPN / tax goes in the **Keterangan** below the table (not as a separate table row) — common practice in Indonesian service proposals. State whether price is inclusive or exclusive of tax.
87
- - Termin pembayaran also goes in Keterangan as a numbered list: DP %, mid %, final %
88
-
89
- Format currency cleanly:
90
- - IDR → `Rp 90.000.000` (titik sebagai pemisah ribuan, tanpa desimal)
91
- - USD/EUR → `$90,000.00` / `€90,000.00`
92
-
93
- Verify the total before writing. Also verify that payment termin percentages add up to 100%.
94
-
95
- ### 4. Write the Markdown file
96
-
97
- Save to a sensible filename:
98
- - ID: `SPH-[Nomor]-[NamaKlien].md` (e.g., `SPH-001-PT-Maju-Jaya.md`)
99
- - EN: `Quotation-[RefNo]-[ClientName].md`
100
-
101
- Use the appropriate template below. Keep it portable: standard headings, GFM tables, no raw HTML, no Mermaid, no fancy admonitions. This is what makes the file convert cleanly with `pandoc input.md -o output.docx` or `pandoc input.md -o output.pdf --pdf-engine=xelatex`.
102
-
103
- ### 5. Tell the user how to convert
104
-
105
- After writing the file, mention briefly that they can convert it with Pandoc:
106
-
107
- ```
108
- pandoc SPH-001-Klien.md -o SPH-001-Klien.docx
109
- pandoc SPH-001-Klien.md -o SPH-001-Klien.pdf --pdf-engine=xelatex
110
- ```
111
-
112
- Don't lecture — one short line is enough.
113
-
114
- ---
115
-
116
- ## Template — Bahasa Indonesia
117
-
118
- ```markdown
119
- # SURAT PENAWARAN HARGA
120
-
121
- **Nomor:** {{nomor_surat}}
122
- **Tanggal:** {{tanggal}}
123
- **Perihal:** {{perihal}}
124
-
125
- ---
126
-
127
- **Kepada Yth.**
128
- {{nama_penerima}}
129
- {{jabatan_penerima}}
130
- {{nama_perusahaan_penerima}}
131
- {{alamat_penerima}}
132
-
133
- ---
134
-
135
- Dengan hormat,
136
-
137
- Sehubungan dengan {{konteks_singkat}}, bersama ini kami **{{nama_perusahaan_pengirim}}** dengan senang hati menyampaikan penawaran harga untuk {{ringkasan_lingkup}} sebagai berikut:
138
-
139
- ## Rincian Barang/Jasa
140
-
141
- | No. | Deskripsi | Qty | Satuan | Harga Satuan | Subtotal |
142
- |----:|-----------|----:|:------:|-------------:|---------:|
143
- | 1 | {{deskripsi_1}} | {{qty_1}} | {{satuan_1}} | {{harga_1}} | {{subtotal_1}} |
144
- | 2 | {{deskripsi_2}} | {{qty_2}} | {{satuan_2}} | {{harga_2}} | {{subtotal_2}} |
145
-
146
- | | **Subtotal** | **{{subtotal_total}}** |
147
- |--|--:|--:|
148
- | | PPN (11%) | {{ppn}} |
149
- | | Diskon | {{diskon}} |
150
- | | **Total** | **{{total}}** |
151
-
152
- *Terbilang: {{total_terbilang}} rupiah.*
153
-
154
- ## Syarat dan Ketentuan
155
-
156
- 1. **Masa Berlaku Penawaran:** {{masa_berlaku}} sejak tanggal surat ini.
157
- 2. **Syarat Pembayaran:** {{syarat_pembayaran}}.
158
- 3. **Waktu Pengiriman/Pengerjaan:** {{waktu_pengerjaan}} setelah PO/DP diterima.
159
- 4. **Garansi:** {{garansi}}.
160
- 5. Harga sudah termasuk PPN (kecuali disebutkan lain).
161
- 6. Ketentuan lain dapat dirundingkan lebih lanjut.
162
-
163
- ## Penutup
164
-
165
- Demikian penawaran ini kami sampaikan. Besar harapan kami untuk dapat bekerja sama. Apabila Bapak/Ibu memerlukan informasi tambahan, jangan ragu untuk menghubungi kami.
166
-
167
- Atas perhatian dan kerja samanya, kami ucapkan terima kasih.
168
-
169
- Hormat kami,
170
- **{{nama_perusahaan_pengirim}}**
171
-
172
- <br><br><br>
173
-
174
- **{{nama_penanda_tangan}}**
175
- {{jabatan_penanda_tangan}}
176
- {{kontak_penanda_tangan}}
177
- ```
178
-
179
- ---
180
-
181
- ## Template — English
182
-
183
- ```markdown
184
- # PRICE QUOTATION
185
-
186
- **Reference No.:** {{ref_no}}
187
- **Date:** {{date}}
188
- **Subject:** {{subject}}
189
-
190
- ---
191
-
192
- **To:**
193
- {{recipient_name}}
194
- {{recipient_title}}
195
- {{recipient_company}}
196
- {{recipient_address}}
197
-
198
- ---
199
-
200
- Dear {{recipient_salutation}},
201
-
202
- Following {{brief_context}}, **{{sender_company}}** is pleased to submit the following price quotation for {{scope_summary}}:
203
-
204
- ## Items / Services
205
-
206
- | No. | Description | Qty | Unit | Unit Price | Subtotal |
207
- |----:|-------------|----:|:----:|-----------:|---------:|
208
- | 1 | {{description_1}} | {{qty_1}} | {{unit_1}} | {{price_1}} | {{subtotal_1}} |
209
- | 2 | {{description_2}} | {{qty_2}} | {{unit_2}} | {{price_2}} | {{subtotal_2}} |
210
-
211
- | | **Subtotal** | **{{subtotal_total}}** |
212
- |--|--:|--:|
213
- | | Tax / VAT ({{tax_rate}}%) | {{tax}} |
214
- | | Discount | {{discount}} |
215
- | | **Total** | **{{total}}** |
216
-
217
- ## Terms and Conditions
218
-
219
- 1. **Quotation Validity:** {{validity}} from the date of this letter.
220
- 2. **Payment Terms:** {{payment_terms}}.
221
- 3. **Delivery / Lead Time:** {{lead_time}} after PO / down payment is received.
222
- 4. **Warranty:** {{warranty}}.
223
- 5. Prices are inclusive of applicable taxes unless stated otherwise.
224
- 6. Other terms are negotiable upon request.
225
-
226
- ## Closing
227
-
228
- We hope this quotation meets your requirements and look forward to the opportunity to work with you. Please feel free to reach out if you need further clarification.
229
-
230
- Thank you for your kind attention.
231
-
232
- Sincerely,
233
- **{{sender_company}}**
234
-
235
- <br><br><br>
236
-
237
- **{{signatory_name}}**
238
- {{signatory_title}}
239
- {{signatory_contact}}
240
- ```
241
-
242
- ---
243
-
244
- ## Template — Bahasa Indonesia (Services / Jasa)
245
-
246
- Use this for jasa pembuatan website/aplikasi, desain interior, branding, konsultasi, event organizer, dll. Struktur ini mengikuti format proposal penawaran jasa yang umum digunakan di Indonesia — lengkap dengan latar belakang, executive summary, pain points, solusi, scope, deliverables, dan tabel biaya berbasis waktu pengerjaan.
247
-
248
- Sections yang bersifat opsional (ditandai `[opsional]`) boleh dihilangkan kalau konteks proyek tidak relevan — misalnya, "Technical Architecture" tidak perlu ada untuk proyek desain interior.
249
-
250
- ```markdown
251
- **Proposal Penawaran Harga Jasa {{nama_perusahaan_pengirim}}**
252
-
253
- **{{nama_proyek}}**
254
-
255
- No: {{nomor_surat}} &nbsp;&nbsp;&nbsp; **{{kota_pengirim}}, {{tanggal}}**
256
-
257
- **Kepada Yth.**
258
- {{nama_divisi_penerima}}
259
- **{{nama_perusahaan_penerima}}**
260
-
261
- ---
262
-
263
- **{{nama_proyek}}**
264
-
265
- **Latar Belakang Proyek**
266
-
267
- Dengan hormat,
268
-
269
- {{paragraf_latar_belakang_proyek}}
270
-
271
- **Ringkasan Eksekutif & Sekilas Pandang**
272
-
273
- {{paragraf_ringkasan_eksekutif}}
274
-
275
- - **Tipe Produk:** {{tipe_produk}}
276
- - **Pengguna:** {{segmen_pengguna}}
277
- - **Platform:** {{platform}}
278
- - **Teknologi:** {{teknologi_utama}}
279
-
280
- **Tantangan yang Diselesaikan**
281
-
282
- - {{tantangan_1}}
283
- - {{tantangan_2}}
284
- - {{tantangan_3}}
285
-
286
- **Solusi Sistem Kami**
287
-
288
- {{paragraf_solusi}}
289
-
290
- **Ruang Lingkup Pekerjaan**
291
-
292
- 1. **{{modul_1_nama}}**
293
- - {{modul_1_fitur_1}}
294
- - {{modul_1_fitur_2}}
295
- 2. **{{modul_2_nama}}**
296
- - {{modul_2_fitur_1}}
297
- - {{modul_2_fitur_2}}
298
- 3. **{{modul_3_nama}}**
299
- - {{modul_3_fitur_1}}
300
- - {{modul_3_fitur_2}}
301
-
302
- **Arsitektur Teknis** [opsional — hapus untuk proyek non-teknis]
303
-
304
- {{paragraf_arsitektur_teknis}}
305
-
306
- **Deliverable Proyek**
307
-
308
- - {{deliverable_1}}
309
- - {{deliverable_2}}
310
- - {{deliverable_3}}
311
-
312
- **Struktur Biaya Proyek**
313
-
314
- Berikut adalah estimasi investasi untuk pengembangan dan implementasi **{{nama_proyek}}**:
315
-
316
- | **No** | **Deskripsi Pekerjaan** | **Waktu** | **Biaya (IDR)** |
317
- |-------:|-------------------------|:---------:|----------------:|
318
- | 1 | **{{paket_1_nama}}** *{{paket_1_deskripsi_singkat}}* | {{paket_1_waktu}} | {{paket_1_biaya}} |
319
- | 2 | **{{paket_2_nama}}** *{{paket_2_deskripsi_singkat}}* | {{paket_2_waktu}} | {{paket_2_biaya}} |
320
- | 3 | **{{paket_3_nama}}** *{{paket_3_deskripsi_singkat}}* | {{paket_3_waktu}} | {{paket_3_biaya}} |
321
- | **TOTAL INVESTASI** | | **{{total_waktu}}** | **{{total_biaya}}** |
322
-
323
- Keterangan:
324
-
325
- 1. Biaya yang diajukan {{status_pajak}} *(contoh: "tidak termasuk Pajak (PPN 11%)" atau "sudah termasuk PPN 11%")*
326
- 2. Termin pembayaran:
327
- 1. Termin ke-1: {{termin_1_persen}}% sebagai DP
328
- 2. Termin ke-2: {{termin_2_persen}}% {{termin_2_kondisi}}
329
- 3. Termin ke-3: {{termin_3_persen}}% {{termin_3_kondisi}}
330
-
331
- **Garansi**
332
-
333
- {{paragraf_intro_garansi_singkat}}
334
-
335
- 1. {{ketentuan_garansi_1}}
336
- 2. {{ketentuan_garansi_2}}
337
- 3. {{ketentuan_garansi_3}}
338
- 4. Perubahan dan/atau penambahan di luar lingkup yang tertera akan didiskusikan biaya dan waktunya secara terpisah.
339
-
340
- **Penutup**
341
-
342
- {{paragraf_penutup}}
343
-
344
- Demikian surat penawaran ini kami sampaikan. Kami sangat menantikan kesempatan untuk berdiskusi lebih lanjut.
345
-
346
- Hormat Kami,
347
-
348
- <br><br><br>
349
-
350
- **{{nama_penanda_tangan}}**
351
- [{{jabatan_penanda_tangan}}]
352
- ```
353
-
354
- ---
355
-
356
- ## Template — English (Services)
357
-
358
- Same structure as the Indonesian services template, adapted for English-language proposals.
359
-
360
- ```markdown
361
- **Service Proposal — {{sender_company}}**
362
-
363
- **{{project_name}}**
364
-
365
- Ref: {{ref_no}} &nbsp;&nbsp;&nbsp; **{{sender_city}}, {{date}}**
366
-
367
- **To:**
368
- {{recipient_division}}
369
- **{{recipient_company}}**
370
-
371
- ---
372
-
373
- **{{project_name}}**
374
-
375
- **Project Background**
376
-
377
- Dear Sir/Madam,
378
-
379
- {{project_background_paragraph}}
380
-
381
- **Executive Summary**
382
-
383
- {{executive_summary_paragraph}}
384
-
385
- - **Product Type:** {{product_type}}
386
- - **Users:** {{user_segments}}
387
- - **Platform:** {{platform}}
388
- - **Technology:** {{key_technologies}}
389
-
390
- **Challenges We Address**
391
-
392
- - {{challenge_1}}
393
- - {{challenge_2}}
394
- - {{challenge_3}}
395
-
396
- **Our Solution**
397
-
398
- {{solution_overview_paragraph}}
399
-
400
- **Scope of Work**
401
-
402
- 1. **{{module_1_name}}**
403
- - {{module_1_feature_1}}
404
- - {{module_1_feature_2}}
405
- 2. **{{module_2_name}}**
406
- - {{module_2_feature_1}}
407
- - {{module_2_feature_2}}
408
- 3. **{{module_3_name}}**
409
- - {{module_3_feature_1}}
410
- - {{module_3_feature_2}}
411
-
412
- **Technical Architecture** [optional — remove for non-technical projects]
413
-
414
- {{technical_architecture_paragraph}}
415
-
416
- **Project Deliverables**
417
-
418
- - {{deliverable_1}}
419
- - {{deliverable_2}}
420
- - {{deliverable_3}}
421
-
422
- **Project Cost Structure**
423
-
424
- The following is the estimated investment for the development and implementation of **{{project_name}}**:
425
-
426
- | **No** | **Work Package** | **Duration** | **Cost (IDR)** |
427
- |-------:|------------------|:------------:|---------------:|
428
- | 1 | **{{package_1_name}}** *{{package_1_short_desc}}* | {{package_1_duration}} | {{package_1_cost}} |
429
- | 2 | **{{package_2_name}}** *{{package_2_short_desc}}* | {{package_2_duration}} | {{package_2_cost}} |
430
- | 3 | **{{package_3_name}}** *{{package_3_short_desc}}* | {{package_3_duration}} | {{package_3_cost}} |
431
- | **TOTAL INVESTMENT** | | **{{total_duration}}** | **{{total_cost}}** |
432
-
433
- Notes:
434
-
435
- 1. Quoted prices {{tax_status}} *(e.g. "exclude VAT (11%)" or "include VAT (11%)")*
436
- 2. Payment milestones:
437
- 1. Milestone 1: {{milestone_1_pct}}% as down payment
438
- 2. Milestone 2: {{milestone_2_pct}}% {{milestone_2_condition}}
439
- 3. Milestone 3: {{milestone_3_pct}}% {{milestone_3_condition}}
440
-
441
- **Warranty**
442
-
443
- {{warranty_intro_sentence}}
444
-
445
- 1. {{warranty_term_1}}
446
- 2. {{warranty_term_2}}
447
- 3. {{warranty_term_3}}
448
- 4. Any changes or additions outside the defined scope will be discussed and agreed upon separately in terms of cost and timeline.
449
-
450
- **Closing Remarks**
451
-
452
- {{closing_paragraph}}
453
-
454
- We look forward to the opportunity to discuss this proposal further.
455
-
456
- Sincerely,
457
-
458
- <br><br><br>
459
-
460
- **{{signatory_name}}**
461
- [{{signatory_title}}]
462
- ```
463
-
464
- ---
465
-
466
- ## Notes on Pandoc-friendly Markdown
467
-
468
- A few small choices in the templates above keep conversion smooth:
469
-
470
- - **No raw HTML except `<br>`** — most converters handle line breaks but choke on arbitrary tags. Three `<br>` for signature space is the safest portable trick.
471
- - **GFM tables only** — no merged cells, no colspan tricks. If you need more complex layouts in `.docx`, post-process there.
472
- - **No emoji anywhere** — this is a formal business document. No emoji in headings, bullets, or body text. Use bold labels instead of icons.
473
- - **Use `**bold**` and `*italic*`** — avoid `__` and `_` underscores around words containing numbers/IDs (Pandoc occasionally treats them as subscripts in some modes).
474
- - **Currency formatting is plain text**, not a code block — code blocks survive conversion but render in monospace, which looks wrong in a formal letter.
475
-
476
- If the user later asks for a fancier visual layout, that's a `.docx` template / Typora theme problem — not a Markdown problem.
477
-
478
- ## Common pitfalls
479
-
480
- - **Don't invent line items.** If the user hasn't given specifics, leave bracket placeholders (`[Deskripsi item]`) rather than guessing — a wrong item is worse than a placeholder.
481
- - **Don't forget the tax assumption.** In Indonesia, PPN is 11% as of 2026. If the quote is for an export client or the user explicitly says "tanpa PPN", set tax to 0 and remove the line.
482
- - **Match the language end-to-end.** Don't mix "Subtotal" headings in English with "Hormat kami" in Indonesian. Pick one and commit.
483
- - **Verify arithmetic.** Recompute totals once before writing the file. This is the single biggest failure mode for quotation documents.
484
- - **Scope of Work harus konkret.** Tulis fitur/modul sebagai daftar yang bisa dicentang ("Sistem RBAC dengan 3 role: Admin, Editor, Viewer" — bukan "manajemen pengguna yang canggih"). Scope yang ambigu = revisi tak berujung.
485
- - **Deliverables ≠ Scope.** Scope = apa yang dikerjakan. Deliverables = apa yang diserahkan ke klien (dokumen, source code, akun staging, manual book, dll). Keduanya harus ada di template jasa.
486
- - **Tabel biaya jasa pakai kolom Waktu + Biaya, bukan Qty/Satuan/Harga Satuan.** Jangan campur format tabel goods ke services — tampilannya janggal dan tidak sesuai ekspektasi klien.
487
- - **Persentase termin harus = 100%.** Cek DP% + mid% + final% sebelum menulis file.
488
- - **Warranty jangan salin-tempel generik.** Sesuaikan dengan jenis proyek: "bugfix selama perusahaan berdiri" cocok untuk software; untuk desain interior mungkin lebih relevan "garansi revisi minor 30 hari setelah serah terima".