@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.
- package/CHANGELOG.md +21 -0
- package/README.md +105 -77
- package/dist/cli/index.js +25 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -9
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +56 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +4 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +14 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +18 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/whoami.d.ts +4 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +42 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/auth-store.d.ts +10 -0
- package/dist/core/auth-store.d.ts.map +1 -0
- package/dist/core/auth-store.js +39 -0
- package/dist/core/auth-store.js.map +1 -0
- package/dist/core/registry.d.ts +18 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +94 -0
- package/dist/core/registry.js.map +1 -0
- package/package.json +7 -1
- package/AGENTS.md +0 -123
- package/CLAUDE.md +0 -17
- package/build.js +0 -20
- package/convex-setup.md +0 -403
- package/prompt/ai-humanizer.md +0 -45
- package/prompt/api-contract-generator.md +0 -234
- package/prompt/apply.md +0 -17
- package/prompt/archive.md +0 -21
- package/prompt/design-system.md +0 -210
- package/prompt/document-explainer.md +0 -149
- package/prompt/epic-generator.md +0 -198
- package/prompt/epic-single.md +0 -47
- package/prompt/erd-generator.md +0 -130
- package/prompt/fsd-generator.md +0 -157
- package/prompt/prd-agent-generator.md +0 -147
- package/prompt/prd-generator.md +0 -195
- package/prompt/product-brief.md +0 -289
- package/prompt/proposal.md +0 -22
- package/prompt/qa-test-scenario.md +0 -133
- package/prompt/skill-creator.md +0 -350
- package/prompt/story-generator.md +0 -278
- package/prompt/story-single.md +0 -70
- package/prompt/tdd-generator.md +0 -294
- package/prompt/tdd-lite-generator.md +0 -224
- package/prompt/wireframe-generator.md +0 -219
- package/skills/ai-context-generator/SKILL.md +0 -54
- package/skills/ai-context-generator/references/AGENTS.template.md +0 -83
- package/skills/ai-context-generator/references/CLAUDE.template.md +0 -39
- package/skills/ai-context-generator/references/behavioral-guidelines.md +0 -71
- package/skills/ai-context-generator/references/discovery-checklist.md +0 -40
- package/skills/ai-context-generator/references/examples/AGENTS.good.md +0 -103
- package/skills/ai-context-generator/references/extraction-checklist.md +0 -23
- package/skills/ai-context-generator/references/overlays/laravel.md +0 -44
- package/skills/ai-humanizer/SKILL.md +0 -50
- package/skills/api-contract-generator/SKILL.md +0 -243
- package/skills/apply/SKILL.md +0 -23
- package/skills/archive/SKILL.md +0 -27
- package/skills/cerebro/SKILL.md +0 -187
- package/skills/cerebro/references/agents.md +0 -213
- package/skills/code-review/SKILL.md +0 -373
- package/skills/code-review/assets/report-template-agent.md +0 -212
- package/skills/code-review/assets/report-template-compact.md +0 -81
- package/skills/code-review/assets/report-template-full.md +0 -264
- package/skills/code-review/assets/report-template-human.md +0 -168
- package/skills/code-review/references/universal-patterns.md +0 -495
- package/skills/design-md/README.md +0 -34
- package/skills/design-md/SKILL.md +0 -172
- package/skills/design-md/examples/DESIGN.md +0 -154
- package/skills/design-system/SKILL.md +0 -216
- package/skills/design-system-generator/SKILL.md +0 -324
- package/skills/design-system-generator/assets/design-system-template.md +0 -348
- package/skills/design-system-generator/references/extraction-patterns.md +0 -321
- package/skills/doc-builder/SKILL.md +0 -115
- package/skills/doc-builder/references/ui-patterns.md +0 -394
- package/skills/document-explainer/SKILL.md +0 -155
- package/skills/document-translator/SKILL.md +0 -58
- package/skills/enhance/SKILL.md +0 -47
- package/skills/enhance-prompt/README.md +0 -34
- package/skills/enhance-prompt/SKILL.md +0 -204
- package/skills/enhance-prompt/references/KEYWORDS.md +0 -114
- package/skills/epic-generator/SKILL.md +0 -204
- package/skills/epic-single/SKILL.md +0 -63
- package/skills/erd-generator/SKILL.md +0 -138
- package/skills/feature-planner/SKILL.md +0 -305
- package/skills/feature-planner/assets/implementation-plan-template.md +0 -85
- package/skills/frontend-design/LICENSE.txt +0 -177
- package/skills/frontend-design/SKILL.md +0 -42
- package/skills/fsd-generator/SKILL.md +0 -163
- package/skills/gamma-builder/SKILL.md +0 -134
- package/skills/laravel-code-review/SKILL.md +0 -383
- package/skills/laravel-code-review/assets/report-template-agent.md +0 -195
- package/skills/laravel-code-review/assets/report-template-compact.md +0 -79
- package/skills/laravel-code-review/assets/report-template-full.md +0 -253
- package/skills/laravel-code-review/assets/report-template-human.md +0 -159
- package/skills/laravel-code-review/references/laravel-patterns.md +0 -571
- package/skills/laravel-code-review/references/php84-features.md +0 -442
- package/skills/mcp-builder/LICENSE.txt +0 -202
- package/skills/mcp-builder/SKILL.md +0 -236
- package/skills/mcp-builder/reference/evaluation.md +0 -602
- package/skills/mcp-builder/reference/mcp_best_practices.md +0 -249
- package/skills/mcp-builder/reference/node_mcp_server.md +0 -970
- package/skills/mcp-builder/reference/python_mcp_server.md +0 -719
- package/skills/mcp-builder/scripts/connections.py +0 -151
- package/skills/mcp-builder/scripts/evaluation.py +0 -373
- package/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
- package/skills/mcp-builder/scripts/requirements.txt +0 -2
- package/skills/meeting-notes/SKILL.md +0 -159
- package/skills/meeting-notes/evals/evals.json +0 -23
- package/skills/prd-agent-generator/SKILL.md +0 -132
- package/skills/prd-generator/SKILL.md +0 -211
- package/skills/product-brief/SKILL.md +0 -141
- package/skills/project-orchestrator/SKILL.md +0 -487
- package/skills/project-orchestrator/assets/caddy-vps-setup.md +0 -180
- package/skills/project-orchestrator/assets/plan-summary-template.md +0 -159
- package/skills/prompter-specs/SKILL.md +0 -115
- package/skills/prompter-workflow/SKILL.md +0 -166
- package/skills/prompter-workflow/evals/evals.json +0 -89
- package/skills/proposal/SKILL.md +0 -28
- package/skills/qa-test-scenario/SKILL.md +0 -149
- package/skills/skill-creator/SKILL.md +0 -173
- package/skills/sph-generator/SKILL.md +0 -488
- package/skills/story-generator/SKILL.md +0 -285
- package/skills/story-single/SKILL.md +0 -86
- package/skills/tdd-generator/SKILL.md +0 -300
- package/skills/tdd-lite-generator/SKILL.md +0 -230
- package/skills/ui-ux-pro/SKILL.md +0 -199
- package/skills/ui-ux-pro/assets/design-spec-template.md +0 -173
- package/skills/ui-ux-pro/references/component-patterns.md +0 -255
- package/skills/ui-ux-pro/references/design-principles.md +0 -167
- package/skills/wireframe-generator/SKILL.md +0 -227
- package/src/cli/index.ts +0 -223
- package/src/commands/archive.ts +0 -302
- package/src/commands/change.ts +0 -292
- package/src/commands/config.ts +0 -233
- package/src/commands/guide.ts +0 -50
- package/src/commands/init.ts +0 -597
- package/src/commands/list.ts +0 -194
- package/src/commands/show.ts +0 -138
- package/src/commands/spec.ts +0 -251
- package/src/commands/update.ts +0 -129
- package/src/commands/upgrade.ts +0 -30
- package/src/commands/validate.ts +0 -326
- package/src/core/artifact-graph/graph.ts +0 -167
- package/src/core/artifact-graph/index.ts +0 -44
- package/src/core/artifact-graph/instruction-loader.ts +0 -302
- package/src/core/artifact-graph/resolver.ts +0 -226
- package/src/core/artifact-graph/schema.ts +0 -124
- package/src/core/artifact-graph/state.ts +0 -64
- package/src/core/artifact-graph/types.ts +0 -65
- package/src/core/completions/command-registry.ts +0 -382
- package/src/core/completions/completion-provider.ts +0 -128
- package/src/core/completions/generators/bash-generator.ts +0 -191
- package/src/core/completions/generators/fish-generator.ts +0 -188
- package/src/core/completions/generators/powershell-generator.ts +0 -223
- package/src/core/completions/generators/zsh-generator.ts +0 -281
- package/src/core/completions/templates/bash-templates.ts +0 -24
- package/src/core/completions/templates/fish-templates.ts +0 -40
- package/src/core/completions/templates/powershell-templates.ts +0 -25
- package/src/core/completions/templates/zsh-templates.ts +0 -36
- package/src/core/completions/types.ts +0 -90
- package/src/core/config-schema.ts +0 -230
- package/src/core/config.ts +0 -181
- package/src/core/configurators/slash/antigravity.ts +0 -10
- package/src/core/configurators/slash/base.ts +0 -109
- package/src/core/configurators/slash/claude.ts +0 -10
- package/src/core/configurators/slash/codex.ts +0 -10
- package/src/core/configurators/slash/droid.ts +0 -10
- package/src/core/configurators/slash/forge.ts +0 -10
- package/src/core/configurators/slash/github-copilot.ts +0 -10
- package/src/core/configurators/slash/index.ts +0 -10
- package/src/core/configurators/slash/kilocode.ts +0 -10
- package/src/core/configurators/slash/opencode.ts +0 -10
- package/src/core/configurators/slash/registry.ts +0 -51
- package/src/core/converters/json-converter.ts +0 -62
- package/src/core/global-config.ts +0 -136
- package/src/core/parsers/change-parser.ts +0 -234
- package/src/core/parsers/markdown-parser.ts +0 -237
- package/src/core/parsers/requirement-blocks.ts +0 -234
- package/src/core/prompt-templates.ts +0 -3504
- package/src/core/schemas/base.schema.ts +0 -20
- package/src/core/schemas/change.schema.ts +0 -42
- package/src/core/schemas/index.ts +0 -20
- package/src/core/schemas/spec.schema.ts +0 -17
- package/src/core/skill-discovery.ts +0 -68
- package/src/core/specs-apply.ts +0 -483
- package/src/core/styles/palette.ts +0 -8
- package/src/core/templates/agents-template.ts +0 -459
- package/src/core/templates/claude-template.ts +0 -2
- package/src/core/templates/index.ts +0 -3
- package/src/core/templates/project-template.ts +0 -32
- package/src/core/validation/constants.ts +0 -48
- package/src/core/validation/types.ts +0 -19
- package/src/core/validation/validator.ts +0 -449
- package/src/core/view.ts +0 -219
- package/src/index.ts +0 -1
- package/src/utils/change-metadata.ts +0 -171
- package/src/utils/change-utils.ts +0 -131
- package/src/utils/file-system.ts +0 -252
- package/src/utils/index.ts +0 -12
- package/src/utils/interactive.ts +0 -29
- package/src/utils/item-discovery.ts +0 -66
- package/src/utils/match.ts +0 -26
- package/src/utils/shell-detection.ts +0 -62
- package/src/utils/task-progress.ts +0 -43
- 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}} **{{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}} **{{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".
|