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
  • Authors
  • 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.

ProTermsPrivacyRefunds
Back to skills

Run Pipeline

ASecurity

Handles several sales tasks in one turn for a specific company. Triggered by "chạy cho [công ty]", "tìm hiểu rồi viết email", "làm hết cho [công ty]", "run pipeline", "research and write an email", "do the full pipeline for [company]", or a company name with a request for multiple outputs.

2 stars
0 votes
0 copies
1 views
Added 9/19/2026
toolsgobashtesting

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add Duckz289/Pipeline-to-proposal-Plugin-STANDARD --skill run-pipeline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Run Pipeline?

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

Security grade badge for Run Pipeline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/duckz289-run-pipeline/badge)](https://www.skillsdirectory.com/skills/duckz289-run-pipeline)

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

Download with Pro
Files
SKILL.md
---
name: run-pipeline
description: >
  Handles several sales tasks in one turn for a specific company. Triggered by
  "chạy cho [công ty]", "tìm hiểu rồi viết email", "làm hết cho [công ty]", "run pipeline",
  "research and write an email", "do the full pipeline for [company]", or a company name
  with a request for multiple outputs.
---

# Run Pipeline

The main skill. Use it when the user wants more than one thing, or when the request is vague but
clearly about researching a prospect, writing an email, building a proposal, or choosing a next step.

One clear task only → use the specific skill.
Unclear what they want → `${CLAUDE_PLUGIN_ROOT}/skills/getting-started/SKILL.md`.

## Principle

Get as far as possible with the data available. Stop and ask only when the missing piece would make
the output useless or unsafe.

Always return something **usable**, even if imperfect. An email that needs one line changed beats a
question.

## Extract from the request

```
company:      required — ask immediately if missing
offer:        from the message, or <DATA>/product-context.md
price:        nice to have; mark it if absent
stage:        cold / in conversation / post-demo / proposal sent / stalled
wants:        brief / email / proposal / next step / CRM note
language:     match the user
```

Missing company name is the only thing that blocks everything.

## First-time offer intake

Check "what does the user sell" in order: current message → conversation → `<DATA>/product-context.md`.

If unknown, ask **exactly one** question:

```text
Anh/chị bán gì cho khách này? Có giá thì gửi luôn, không có mình vẫn viết được bản nháp.
```

If `product-context.md` is empty and the user just stated their offer → **save it immediately** as
starter context, no need to ask. Only ask before overwriting context that already has content.

## Clarification — max ONE question per turn

See `${CLAUDE_PLUGIN_ROOT}/policies/clarification.md`. Summary: one question, specific, and say what the answer unlocks.
Anything else missing → continue with an assumption and note it.

## Steps

1. **Resolve `<DATA>` with a real command before anything else** — even on a one-message request that
   also does research and writing. Run:
   `if ($env:PIPELINE_STATE_DIR) { $env:PIPELINE_STATE_DIR } else { Join-Path $env:USERPROFILE ".claude\pipeline-to-proposal" }`
   (or the bash equivalent in `${CLAUDE_PLUGIN_ROOT}/policies/safety-core.md` section 0). Do not write
   product context or a deal file anywhere until this has actually run once this conversation. Writing
   into the working directory instead of this resolved path is the most common way this plugin has
   broken in testing — treat skipping this step as a bug, not a shortcut.
2. Identify the company and what the user wants.
3. Read relevant local memory from the resolved `<DATA>`: product context + deal file if one exists.
4. Judge fit quickly — **internally**, never show a score.
5. Run the needed playbook per `${CLAUDE_PLUGIN_ROOT}/policies/execution-budget.md`.
6. **Proposal, or an email with numbers/results/past customers** → review with
   `${CLAUDE_PLUGIN_ROOT}/agents/sales-reviewer.md`. **Short persona-based email, no numbers** → skip
   the subagent call and use the short self-check in
   `${CLAUDE_PLUGIN_ROOT}/skills/run-pipeline/references/readiness.md` instead — a full subagent pass
   on a message with nothing risky in it is pure added latency and cost with nothing to catch.
7. Return compact output per `${CLAUDE_PLUGIN_ROOT}/policies/safety-core.md` section 3.
8. Save deal / follow-up / feedback **into the resolved `<DATA>`**, format per
   `${CLAUDE_PLUGIN_ROOT}/policies/state-management.md`. Only files under `<DATA>/deals/`,
   `<DATA>/product-context.md`, `<DATA>/follow-ups.md`, `<DATA>/feedback.md` count as saved — a file
   invented elsewhere (like a scratch file next to the working directory) is not memory and must not
   be reported as "saved".

For "do everything": return **a brief plus the single most important artifact**, then suggest one
follow-up command. Never dump email + proposal + note in one turn.

If the user did not ask for an email or proposal after research → stop, show the brief, ask one
question about the next step.

## Fit check — internal only

Compare the prospect against product context. Conclude: good fit / possible / unlikely / unknown.

- Good, possible, or user explicitly asked → continue.
- Unlikely → light research, then ask before writing a long proposal.

In the output say "looks like a fit" / "not sure it's a fit" in the user's language. **Never** show
a score or name a framework.

## Missing data

See `${CLAUDE_PLUGIN_ROOT}/workflows/data-fallback.md`. Principle: every gap must still produce a partial artifact, never
a dead end.

A broken source means "could not look it up", never "does not exist".

## Output

Per `${CLAUDE_PLUGIN_ROOT}/policies/safety-core.md`. Three sections, plain language, one screen.

Add a "saved" section only when files were actually written, with real paths:

```markdown
### Đã lưu
- Deal: ~/.claude/pipeline-to-proposal/deals/abc-logistics.md
- Nhắc follow-up: 03/08
```

After any buyer-facing draft, add one line:

```text
Gửi xong nhắn mình "khách trả lời..." hoặc "chưa thấy hồi âm" để mình cập nhật deal.
```

## Safety

Per `${CLAUDE_PLUGIN_ROOT}/policies/safety-core.md`. Four absolutes:

- Never send email, never write to a CRM.
- Never invent names, prices, case studies, or figures.
- Never say "saved" when nothing was written.
- **No bracket placeholders in a buyer-facing draft, ever** — not `[Tên]`, not `[Tên bạn]`, not
  `[Tên công ty bạn]`, not `[SĐT]`. Missing sender company → leave it out of the signature. Missing
  sender **name** → this is a real fact about the user, not a stylistic gap, so it follows the
  "Sender name" procedure in `${CLAUDE_PLUGIN_ROOT}/policies/safety-core.md` (check saved
  `sender_name` → ask once if this turn has no other question pending → otherwise send with no name
  in the sign-off and note the gap) — **never invent one**. Open cold Vietnamese emails with "Chào
  anh/chị" — never "Kính gửi" in any form, including "Kính gửi anh/chị". This has been the single
  most common defect in testing; check the draft against this list before returning it, every time,
  even under a compound "chạy cho X" request that also does research.

## References

Load per `${CLAUDE_PLUGIN_ROOT}/policies/execution-budget.md`, not up front:

- `references/intake.md` — parsing how salespeople actually type
- `references/readiness.md` — is there enough data to proceed
- `${CLAUDE_PLUGIN_ROOT}/playbooks/research.md`, `${CLAUDE_PLUGIN_ROOT}/playbooks/messaging.md`,
  `${CLAUDE_PLUGIN_ROOT}/playbooks/proposal.md`, `${CLAUDE_PLUGIN_ROOT}/playbooks/deal-coach.md`
- `${CLAUDE_PLUGIN_ROOT}/knowledge/vietnamese-sales-language.md` — when writing Vietnamese for a buyer

Attribution

Duckz289Duckz289
View sourceMore from Duckz289 →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

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

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

ucoz-landing-skill

Playbook for creating and editing uCoz landing pages via MCP tools (`templates_tool`, `ftp_tool`, `modules_tool`). Use for tasks such as: "build a landing page", "update the homepage as a landing page", "create a promo page on the homepage", "add a lead form / menu / SEO to the homepage". Homepage: `page_list`, `page_get`; first publish — `page_update` with full `page_tmpl`; HTML edits after generation — `patch_template` (module_id=2, template_id=1), not `update_template`. Activate the mail f...

107 votes

Paperclip

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

805541 votes

Instantly Rdsthomas Mission Control

Instantly.ai cold email outreach API - manage campaigns, leads, accounts, and analytics. Use for cold email automation, lead management, campaign creation/monitoring, and email account warmup.

761 votes

Daw Music

Digital Audio Workstation usage, music composition, interactive music systems, and game audio implementation for immersive soundscapes.

761 votes

Caveman Compress

Compress natural language memory files (CLAUDE.md, todos, preferences) into caveman format to save input tokens. Preserves all technical substance, code, URLs, and structure. Compressed version overwrites the original file. Human-readable backup saved as FILE.original.md. Trigger: /caveman-compress FILEPATH or "compress memory file"

1066600 votes
View all in tools →