@dedesfr/prompter 0.9.0 → 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 (216) hide show
  1. package/CHANGELOG.md +21 -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.map +1 -1
  6. package/dist/commands/init.js +32 -9
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/login.d.ts +4 -0
  9. package/dist/commands/login.d.ts.map +1 -0
  10. package/dist/commands/login.js +56 -0
  11. package/dist/commands/login.js.map +1 -0
  12. package/dist/commands/logout.d.ts +4 -0
  13. package/dist/commands/logout.d.ts.map +1 -0
  14. package/dist/commands/logout.js +14 -0
  15. package/dist/commands/logout.js.map +1 -0
  16. package/dist/commands/update.d.ts.map +1 -1
  17. package/dist/commands/update.js +18 -5
  18. package/dist/commands/update.js.map +1 -1
  19. package/dist/commands/whoami.d.ts +4 -0
  20. package/dist/commands/whoami.d.ts.map +1 -0
  21. package/dist/commands/whoami.js +42 -0
  22. package/dist/commands/whoami.js.map +1 -0
  23. package/dist/core/auth-store.d.ts +10 -0
  24. package/dist/core/auth-store.d.ts.map +1 -0
  25. package/dist/core/auth-store.js +39 -0
  26. package/dist/core/auth-store.js.map +1 -0
  27. package/dist/core/registry.d.ts +18 -0
  28. package/dist/core/registry.d.ts.map +1 -0
  29. package/dist/core/registry.js +94 -0
  30. package/dist/core/registry.js.map +1 -0
  31. package/package.json +7 -1
  32. package/AGENTS.md +0 -123
  33. package/CLAUDE.md +0 -17
  34. package/build.js +0 -20
  35. package/convex-setup.md +0 -403
  36. package/prompt/ai-humanizer.md +0 -45
  37. package/prompt/api-contract-generator.md +0 -234
  38. package/prompt/apply.md +0 -17
  39. package/prompt/archive.md +0 -21
  40. package/prompt/design-system.md +0 -210
  41. package/prompt/document-explainer.md +0 -149
  42. package/prompt/epic-generator.md +0 -198
  43. package/prompt/epic-single.md +0 -47
  44. package/prompt/erd-generator.md +0 -130
  45. package/prompt/fsd-generator.md +0 -157
  46. package/prompt/prd-agent-generator.md +0 -147
  47. package/prompt/prd-generator.md +0 -195
  48. package/prompt/product-brief.md +0 -289
  49. package/prompt/proposal.md +0 -22
  50. package/prompt/qa-test-scenario.md +0 -133
  51. package/prompt/skill-creator.md +0 -350
  52. package/prompt/story-generator.md +0 -278
  53. package/prompt/story-single.md +0 -70
  54. package/prompt/tdd-generator.md +0 -294
  55. package/prompt/tdd-lite-generator.md +0 -224
  56. package/prompt/wireframe-generator.md +0 -219
  57. package/skills/ai-context-generator/SKILL.md +0 -54
  58. package/skills/ai-context-generator/references/AGENTS.template.md +0 -83
  59. package/skills/ai-context-generator/references/CLAUDE.template.md +0 -39
  60. package/skills/ai-context-generator/references/behavioral-guidelines.md +0 -71
  61. package/skills/ai-context-generator/references/discovery-checklist.md +0 -40
  62. package/skills/ai-context-generator/references/examples/AGENTS.good.md +0 -103
  63. package/skills/ai-context-generator/references/extraction-checklist.md +0 -23
  64. package/skills/ai-context-generator/references/overlays/laravel.md +0 -44
  65. package/skills/ai-humanizer/SKILL.md +0 -50
  66. package/skills/api-contract-generator/SKILL.md +0 -243
  67. package/skills/apply/SKILL.md +0 -23
  68. package/skills/archive/SKILL.md +0 -27
  69. package/skills/cerebro/SKILL.md +0 -187
  70. package/skills/cerebro/references/agents.md +0 -213
  71. package/skills/code-review/SKILL.md +0 -373
  72. package/skills/code-review/assets/report-template-agent.md +0 -212
  73. package/skills/code-review/assets/report-template-compact.md +0 -81
  74. package/skills/code-review/assets/report-template-full.md +0 -264
  75. package/skills/code-review/assets/report-template-human.md +0 -168
  76. package/skills/code-review/references/universal-patterns.md +0 -495
  77. package/skills/design-md/README.md +0 -34
  78. package/skills/design-md/SKILL.md +0 -172
  79. package/skills/design-md/examples/DESIGN.md +0 -154
  80. package/skills/design-system/SKILL.md +0 -216
  81. package/skills/design-system-generator/SKILL.md +0 -324
  82. package/skills/design-system-generator/assets/design-system-template.md +0 -348
  83. package/skills/design-system-generator/references/extraction-patterns.md +0 -321
  84. package/skills/doc-builder/SKILL.md +0 -115
  85. package/skills/doc-builder/references/ui-patterns.md +0 -394
  86. package/skills/document-explainer/SKILL.md +0 -155
  87. package/skills/document-translator/SKILL.md +0 -58
  88. package/skills/enhance/SKILL.md +0 -47
  89. package/skills/enhance-prompt/README.md +0 -34
  90. package/skills/enhance-prompt/SKILL.md +0 -204
  91. package/skills/enhance-prompt/references/KEYWORDS.md +0 -114
  92. package/skills/epic-generator/SKILL.md +0 -204
  93. package/skills/epic-single/SKILL.md +0 -63
  94. package/skills/erd-generator/SKILL.md +0 -138
  95. package/skills/feature-planner/SKILL.md +0 -305
  96. package/skills/feature-planner/assets/implementation-plan-template.md +0 -85
  97. package/skills/frontend-design/LICENSE.txt +0 -177
  98. package/skills/frontend-design/SKILL.md +0 -42
  99. package/skills/fsd-generator/SKILL.md +0 -163
  100. package/skills/gamma-builder/SKILL.md +0 -134
  101. package/skills/laravel-code-review/SKILL.md +0 -383
  102. package/skills/laravel-code-review/assets/report-template-agent.md +0 -195
  103. package/skills/laravel-code-review/assets/report-template-compact.md +0 -79
  104. package/skills/laravel-code-review/assets/report-template-full.md +0 -253
  105. package/skills/laravel-code-review/assets/report-template-human.md +0 -159
  106. package/skills/laravel-code-review/references/laravel-patterns.md +0 -571
  107. package/skills/laravel-code-review/references/php84-features.md +0 -442
  108. package/skills/mcp-builder/LICENSE.txt +0 -202
  109. package/skills/mcp-builder/SKILL.md +0 -236
  110. package/skills/mcp-builder/reference/evaluation.md +0 -602
  111. package/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
  112. package/skills/mcp-builder/reference/node_mcp_server.md +0 -970
  113. package/skills/mcp-builder/reference/python_mcp_server.md +0 -719
  114. package/skills/mcp-builder/scripts/connections.py +0 -151
  115. package/skills/mcp-builder/scripts/evaluation.py +0 -373
  116. package/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  117. package/skills/mcp-builder/scripts/requirements.txt +0 -2
  118. package/skills/meeting-notes/SKILL.md +0 -159
  119. package/skills/meeting-notes/evals/evals.json +0 -23
  120. package/skills/prd-agent-generator/SKILL.md +0 -132
  121. package/skills/prd-generator/SKILL.md +0 -211
  122. package/skills/product-brief/SKILL.md +0 -141
  123. package/skills/project-orchestrator/SKILL.md +0 -487
  124. package/skills/project-orchestrator/assets/caddy-vps-setup.md +0 -180
  125. package/skills/project-orchestrator/assets/plan-summary-template.md +0 -159
  126. package/skills/prompter-specs/SKILL.md +0 -115
  127. package/skills/prompter-workflow/SKILL.md +0 -166
  128. package/skills/prompter-workflow/evals/evals.json +0 -89
  129. package/skills/proposal/SKILL.md +0 -28
  130. package/skills/qa-test-scenario/SKILL.md +0 -149
  131. package/skills/skill-creator/SKILL.md +0 -173
  132. package/skills/sph-generator/SKILL.md +0 -488
  133. package/skills/story-generator/SKILL.md +0 -285
  134. package/skills/story-single/SKILL.md +0 -86
  135. package/skills/tdd-generator/SKILL.md +0 -300
  136. package/skills/tdd-lite-generator/SKILL.md +0 -230
  137. package/skills/ui-ux-pro/SKILL.md +0 -199
  138. package/skills/ui-ux-pro/assets/design-spec-template.md +0 -173
  139. package/skills/ui-ux-pro/references/component-patterns.md +0 -255
  140. package/skills/ui-ux-pro/references/design-principles.md +0 -167
  141. package/skills/wireframe-generator/SKILL.md +0 -227
  142. package/src/cli/index.ts +0 -223
  143. package/src/commands/archive.ts +0 -302
  144. package/src/commands/change.ts +0 -292
  145. package/src/commands/config.ts +0 -233
  146. package/src/commands/guide.ts +0 -50
  147. package/src/commands/init.ts +0 -597
  148. package/src/commands/list.ts +0 -194
  149. package/src/commands/show.ts +0 -138
  150. package/src/commands/spec.ts +0 -251
  151. package/src/commands/update.ts +0 -129
  152. package/src/commands/upgrade.ts +0 -30
  153. package/src/commands/validate.ts +0 -326
  154. package/src/core/artifact-graph/graph.ts +0 -167
  155. package/src/core/artifact-graph/index.ts +0 -44
  156. package/src/core/artifact-graph/instruction-loader.ts +0 -302
  157. package/src/core/artifact-graph/resolver.ts +0 -226
  158. package/src/core/artifact-graph/schema.ts +0 -124
  159. package/src/core/artifact-graph/state.ts +0 -64
  160. package/src/core/artifact-graph/types.ts +0 -65
  161. package/src/core/completions/command-registry.ts +0 -382
  162. package/src/core/completions/completion-provider.ts +0 -128
  163. package/src/core/completions/generators/bash-generator.ts +0 -191
  164. package/src/core/completions/generators/fish-generator.ts +0 -188
  165. package/src/core/completions/generators/powershell-generator.ts +0 -223
  166. package/src/core/completions/generators/zsh-generator.ts +0 -281
  167. package/src/core/completions/templates/bash-templates.ts +0 -24
  168. package/src/core/completions/templates/fish-templates.ts +0 -40
  169. package/src/core/completions/templates/powershell-templates.ts +0 -25
  170. package/src/core/completions/templates/zsh-templates.ts +0 -36
  171. package/src/core/completions/types.ts +0 -90
  172. package/src/core/config-schema.ts +0 -230
  173. package/src/core/config.ts +0 -181
  174. package/src/core/configurators/slash/antigravity.ts +0 -10
  175. package/src/core/configurators/slash/base.ts +0 -109
  176. package/src/core/configurators/slash/claude.ts +0 -10
  177. package/src/core/configurators/slash/codex.ts +0 -10
  178. package/src/core/configurators/slash/droid.ts +0 -10
  179. package/src/core/configurators/slash/forge.ts +0 -10
  180. package/src/core/configurators/slash/github-copilot.ts +0 -10
  181. package/src/core/configurators/slash/index.ts +0 -10
  182. package/src/core/configurators/slash/kilocode.ts +0 -10
  183. package/src/core/configurators/slash/opencode.ts +0 -10
  184. package/src/core/configurators/slash/registry.ts +0 -51
  185. package/src/core/converters/json-converter.ts +0 -62
  186. package/src/core/global-config.ts +0 -136
  187. package/src/core/parsers/change-parser.ts +0 -234
  188. package/src/core/parsers/markdown-parser.ts +0 -237
  189. package/src/core/parsers/requirement-blocks.ts +0 -234
  190. package/src/core/prompt-templates.ts +0 -3504
  191. package/src/core/schemas/base.schema.ts +0 -20
  192. package/src/core/schemas/change.schema.ts +0 -42
  193. package/src/core/schemas/index.ts +0 -20
  194. package/src/core/schemas/spec.schema.ts +0 -17
  195. package/src/core/skill-discovery.ts +0 -68
  196. package/src/core/specs-apply.ts +0 -483
  197. package/src/core/styles/palette.ts +0 -8
  198. package/src/core/templates/agents-template.ts +0 -459
  199. package/src/core/templates/claude-template.ts +0 -2
  200. package/src/core/templates/index.ts +0 -3
  201. package/src/core/templates/project-template.ts +0 -32
  202. package/src/core/validation/constants.ts +0 -48
  203. package/src/core/validation/types.ts +0 -19
  204. package/src/core/validation/validator.ts +0 -449
  205. package/src/core/view.ts +0 -219
  206. package/src/index.ts +0 -1
  207. package/src/utils/change-metadata.ts +0 -171
  208. package/src/utils/change-utils.ts +0 -131
  209. package/src/utils/file-system.ts +0 -252
  210. package/src/utils/index.ts +0 -12
  211. package/src/utils/interactive.ts +0 -29
  212. package/src/utils/item-discovery.ts +0 -66
  213. package/src/utils/match.ts +0 -26
  214. package/src/utils/shell-detection.ts +0 -62
  215. package/src/utils/task-progress.ts +0 -43
  216. package/tsconfig.json +0 -28
@@ -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".