Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Sales Proposal Writer

ASecurity

Turn a qualified CRM deal plus whatever the client actually sent — a requirement sheet, discovery notes, a meeting transcript, a prior proposal — into a priced client proposal published as a 交付文件 at platform.zynkr.ai/d/<token>, and keep it alive through the revision rounds. It does four things in one pass: ranks the client's asks by an openly-stated criterion and presents them as 第一順位/額外項目 (never colour codes, never our internal IDs); splits them into a recurring lane and a one-off build lane...

20 stars
0 votes
0 copies
2 views
Added 9/19/2026
businessgobashgitapi

Works with

cliapi

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add peter-tu-zynkr/zynkr-skill-builder --skill sales-proposal-writer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sales Proposal Writer?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Sales Proposal Writer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/peter-tu-zynkr-sales-proposal-writer/badge)](https://www.skillsdirectory.com/skills/peter-tu-zynkr-sales-proposal-writer)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: sales-proposal-writer
description: >-
  Turn a qualified CRM deal plus whatever the client actually sent — a requirement
  sheet, discovery notes, a meeting transcript, a prior proposal — into a priced
  client proposal published as a 交付文件 at platform.zynkr.ai/d/<token>, and keep
  it alive through the revision rounds. It does four things in one pass: ranks the
  client's asks by an openly-stated criterion and presents them as 第一順位/額外項目
  (never colour codes, never our internal IDs); splits them into a recurring lane
  and a one-off build lane; prices every line from the B2B pricing sheet anchored at
  NT$10,000/hr with the hours shown; and writes an honest-boundaries section saying
  what we will not do and why. On later rounds it reads the review comments on the
  document, applies them, resolves them, verifies the published body by checksum,
  and syncs the CRM note, the Gmail draft and the kickoff doc in the same pass.
  Trigger on /sales-proposal-writer or when Peter says "寫提案", "幫我做提案",
  "報價給這個客戶", "把需求整理成提案", "提案 v2", "draft the proposal", "quote this
  client", "update the proposal", or hands over a client's requirement list and wants
  a priced document out of it. Distinct from sales-follow-up (writes the post-demo
  EMAIL on an existing deal — this writes the PROPOSAL and hands the email to it),
  consult-solution-planning (an INTERNAL solution plan, unpriced) and
  consult-brd-writer (a requirements document, unpriced).
category: sales-consultant
project: sales-proposal-writer
platform: claude
status: Done
author: Peter Tu
sheetId: "2.47"
input: "A CRM deal id or name, plus the client's own material — a requirement sheet, discovery/meeting notes, a transcript, or a prior proposal version to revise."
process: "Deal timeline first → normalise asks → rank into 第一順位/額外項目 by a stated criterion → split into a recurring lane and a build lane → price each line at the NT$10,000/hr anchor → publish as 交付文件 → CRM note. Revisions: comment → apply → resolve → checksum → sync."
output: "A published 交付文件 at platform.zynkr.ai/d/<token>, a CRM note carrying the pricing rationale and the internal→external module mapping, and a handoff to sales-follow-up."
synergy: ["sales-follow-up", "sales-manager", "consult-solution-planning", "consult-project-specialist"]
house-style: bound
type: agent
---

# sales-proposal-writer

Writes the priced proposal a client actually reads, and survives the revision rounds without
the numbers drifting apart across the document, the email and the CRM.

```bash
npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill sales-proposal-writer
```

## When this fires, and when it does not

| Situation | Skill |
|---|---|
| Client sent their asks; we need a priced document | **this one** |
| A demo just happened; we need the follow-up email | `sales-follow-up` |
| We need an internal solution plan before pricing anything | `consult-solution-planning` |
| We need a requirements doc / buildable spec | `consult-brd-writer` |
| "Which deals need attention" | `sales-manager` |

A proposal revision — "make it v2", "they came back with comments" — is still this skill, not a
new one. The revision loop below is the half that earns its keep.

## Fixed facts

- **Pricing source of truth** — 《[2.1] Zynkr B2B Pricing Sheet (企業報價準則)》. Every number
  traces to the **NT$10,000/hr** anchor. Never invent a tier; if the shape does not fit, quote
  hours × anchor and say so.
- **Delivery surface** — the 交付文件 module on the Zynkr platform. Published with
  `visibility: link` unless the content warrants a password. The renderer is a **sandboxed
  iframe: scripts do not run**, so inline all CSS and never rely on JS for content to appear.
- **Brand** — tokens and fonts come from the website `styles.css` `:root` block via each app's
  `BRAND.md`. **Orange decides — at most one element per page.** Paper 70–80%.
- **House voice** — see the House style section at the end. Read it before writing a word.

## Workflow

### 1 · Read the deal before reading anything else

Open the CRM deal and read its **timeline first** — notes, prior proposals, stage history. The
context that decides the proposal's shape is usually already logged there, and starting from the
client's latest message alone reproduces work and contradicts what we already told them.

Record: who the contact is, what was already promised, which proposal versions exist and
**whether the client already holds a link to one**.

### 2 · Gather the asks, from the client's own artifact

Take the asks from what the client actually sent. If it is a spreadsheet, read the values — and
if the client colour-coded it, remember that **cell fills are invisible to the values API**:
export the sheet and read the fills, do not guess. Never ask the client to re-explain something
they already sent.

Normalise each ask to one line: what they want, and what it would take.

### 3 · Rank, and own the ranking

Sort every ask by **one stated criterion**. The default, and the one to beat: *what creates
value fastest* — the raw material is already in their hands, no external permission or review
is pending, and someone uses it the day it ships.

Present the result as:

- **第一順位** — meets the criterion
- **額外項目** — needs scope confirmed first, or has an external precondition
- **本次未納入** — everything else, listed so nothing looks forgotten

**Say the criterion out loud in the document.** And say the ranking is ours:

> 這是我們的判斷,不用照單全收

Never write 「你們標出來的」 for something we ranked. Laundering our judgement as the client's
request throws away the only thing they are paying for. See House style §5 — this is the rule
that gets violated most often.

### 4 · Split into two lanes

Most ask-lists mix two things that cannot be priced the same way:

- **Recurring lane** — what makes them *able* to do it themselves (method, coaching, extraction,
  handover). Delivered monthly; a one-off delivery is meaningless because it has to happen while
  they have a live problem in front of them.
- **Build lane** — what makes them *have* the thing. Delivered as modules, each independently
  quotable and independently accepted.

The judgement, in one line the client can check: **買了之後你會的,走陪跑;買了之後你有的,走客製化**.

### 5 · Price it

- Every line shows **hours and amount**, both derived from the anchor. The client should always
  be able to see which hours they are paying for.
- **Do not quote what is not scoped.** An unpriced line with a stated reason
  (「範圍要先確認」) beats a number that will move. Say where the answer will come from.
- Offer a paid scoping step when the sequence genuinely depends on seeing their current process.
  If it credits against later fees, say so plainly — and record in the CRM that a
  below-anchor entry price is a deliberate credited door-opener, not a discount.
- **Never state our discount discipline to the client.** How we handle price pressure is
  internal policy; narrating it reads as pre-emptive defensiveness and invites the haggling it
  tries to forbid.

### 6 · Write the boundaries

Every proposal carries a section naming **what we will not do and why**. Platform terms,
review queues we do not control, data we would have to buy. This section closes more than it
costs: it is the part that makes the rest credible.

### 7 · Publish and log

Publish as a 交付文件, then write **one CRM note** carrying the pricing rationale, the ranking
criterion, any internal→external mapping, and the share URL. Hand the covering email to
`sales-follow-up`.

If the client **already holds a link** to an earlier version, do not overwrite it — publish the
new version separately and say which is current. Otherwise update in place so the URL they were
given keeps working.

## Client-facing language

Beyond House style, three rules this surface gets wrong most:

1. **No internal notation.** Colour codes, spec IDs, internal module numbers, sheet ids. Renumber
   modules to a clean sequence for the client (M1 · M2 · M3, no gaps) and **record the mapping in
   the CRM note** so the two do not drift.
2. **No account of what we removed.** "We took out the training, we took out plan A" tells the
   client about our internal churn. Say what the proposal *is*.
3. **One orange element per page.** Use it on the recommended option. Everything else is paper,
   ink and sage.

## The revision loop

Proposals are not written once. When comments come back:

1. **Read every comment** on the document, including ones anchored to text that has since moved.
2. **Apply them against the local source file**, not by retyping the document — with one
   assertion per edit that the target string was found exactly as expected. A silent miss in a
   30-edit pass is invisible otherwise.
3. **Apply a word-level change everywhere it occurs**, not only at the anchor. Fixing one of two
   identical phrases reads as a typo.
4. **Delete means delete.** A comment saying `remove` removes the passage; it is not an
   invitation to rewrite it.
5. **Re-check the residue** — assert none of the replaced phrasings survive anywhere.
6. **Publish, then verify the published body by checksum against the local file.** Same length is
   not the same content.
7. **Resolve each comment** once its change is live.
8. **Sync every downstream copy in the same pass** — the Gmail draft, the CRM note, the kickoff
   doc. A stale total in an unsent draft is the failure mode this step exists to stop.

Report the comment→change mapping back to Peter, and flag any judgement call — a wording change
that shifts meaning, or a consistency edit applied beyond the anchored spot.

## Output contract

- A published 交付文件 with a share URL
- A CRM note: ranking criterion · lane split · per-line pricing with hours · internal→external
  module mapping · anything deliberately unquoted and why
- A handoff line for `sales-follow-up`
- On revisions: the comment→change table, the checksum verification, and what was synced

## House style

Writing style is **not owned by this file**. The house voice lives in two Google Docs under
`[@] 寫作指南` (`12DBdFz3SK22ie9im_ThFMI7IBRXsTZsV`), read at runtime:

- 《[2.0] Zynkr 通用風格指南 House Voice》 `10bOIQwRm9Pxwgct4hlwCwK_B4Pipai1HqBPZKzyRHSE` —
  the universal core, plus §2.4 提案/交付文件 for this surface
- 《[3.2] 禁用詞清單 Forbidden Words》 `1N5sHLP4qzmmhpCGsi6KElxi1z0MFe4QZ0Q_35T10Uyg`

Read both before producing client- or reader-facing text, and scan the draft against 《[3.2]》
before handing it over. If Drive is unreachable, say so in the output rather than proceeding
unchecked. Never re-implement either list inside this file.

Attribution

peter-tu-zynkrpeter-tu-zynkr
View sourceMore from peter-tu-zynkr →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →