本文へ移動
cccskills
無料GitHub で公開

renewal-prep

Runbook for turning a HubSpot renewal date into a prepped packet and a drafted outreach email for {{projectName}}. Covers the 90/60/30-day windows, what belongs in a renewal packet, at-risk signals, Google Calendar cross-checking, and the human approval gate before anything sends or discounts.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md6.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

<skill name="renewal-prep"> <overview> A renewal date on a HubSpot deal is only useful if someone acts on it early. A daily sweep reads every open deal's `{{renewal_date_property}}`, finds the accounts crossing 90, 60, or 30 days out, builds a renewal packet — usage, value delivered, and expansion ideas — checks Google Calendar for an existing renewal conversation, and drafts the outreach. Anything that looks stalled, shrinking, or gone quiet is flagged as at-risk in the same run. Nothing reaches a customer and no discount is ever applied until the account owner reviews it.

Fresh session per sweep — state lives on the HubSpot deal record itself (a kortix_renewal_stage_alerted property marks the last window surfaced), not in a local ledger file. A sweep can find several accounts at once; handle each as an independent unit — a failure preparing one account's packet is logged and skipped, never blocking any other account in the same sweep. </overview>

<when-to-load> - The daily renewal sweep fires. - A human asks the agent to check a specific account's renewal status or re-run the sweep. - The renewal playbook (packet format, at-risk criteria, outreach tone) changes and needs to be reflected in the next run. </when-to-load> <workflow>

Step 0 — Orient: find what crossed a window

Query HubSpot for open deals with {{renewal_date_property}} set:

GET /crm/v3/objects/deals/search
  filterGroups: [
    { propertyName: "{{renewal_date_property}}", operator: "LTE", value: <today + 90d> },
    { propertyName: "dealstage", operator: "NEQ", value: "closedlost" }
  ]
  properties: ["{{renewal_date_property}}", "amount", "dealstage", "hubspot_owner_id",
               "kortix_renewal_stage_alerted", "notes_last_updated", "hs_lastmodifieddate"]

For each deal, compute days-to-renewal and bucket it into 90 / 60 / 30. Skip a deal if kortix_renewal_stage_alerted already equals that bucket — it was packeted on a prior run. A deal moving into a new, tighter bucket (e.g. 90 → 60) always gets a fresh packet, since more has likely changed.

Step 1 — Read the account's history

Pull the deal's notes, stage history, contract value, and the owner (hubspot_owner_id → name). Read prior call and email activity to reconstruct what's been delivered and discussed since the account signed or last renewed.

Step 2 — Build the renewal packet

Assemble, in order:

  1. Usage and value delivered — what the account has actually gotten out of the product since the last renewal, drawn from notes and activity, in concrete terms (not "engaged well" — the specific thing that shipped or got used).
  2. Expansion ideas — one or two concrete, specific opportunities grounded in what this account does and hasn't used yet. Never a generic "consider upgrading" line.
  3. Contract terms — current value, renewal date, and term length.

Step 3 — Check Google Calendar (read-only)

Look for an existing renewal or QBR meeting near the renewal date. If one exists, reference it in the draft ("ahead of our call on ...") instead of proposing a new one. This is read-only — never create, move, or accept an event.

Step 4 — Flag at-risk signals

Independent of the 90/60/30 bucket, call out a deal as at-risk when it shows:

SignalWhat it means
Stage unchanged for an extended periodDeal has stalled
Contract value trending down vs. last termAccount may be scaling back
No logged activity in a long stretchRelationship's gone quiet
Notes mentioning a competitor, budget freeze, or churn intentExplicit risk

At-risk deals get named specifically in {{alert_channel}}, with the signal that triggered the flag — every day they remain at-risk, not just once.

Step 5 — Draft the outreach

Write the renewal email using the packet: lead with the value delivered, name the expansion idea if one fits naturally, and reference the scheduled conversation if Step 3 found one. Hold it in {{draft_channel}} for the account owner. Never send it, and never write a specific discount, credit, or price change into the draft — if the account's situation calls for a pricing conversation, say so in the packet and let the owner handle it.

Step 6 — Post the radar

Post one summary to {{alert_channel}}: accounts newly crossing a 90/60/30 window (owner, renewal date, bucket), and the at-risk list with its signals. This is the read summary; the packet and draft are the deliverables in {{draft_channel}}.

Step 7 — Write the marker back

Set kortix_renewal_stage_alerted on each packeted deal to the bucket just surfaced (with a timestamp). This is the only HubSpot write — never the deal stage, amount, or pipeline.

</workflow> <guardrails> - **Never send.** The renewal outreach is always a draft in {{draft_channel}} for the account owner to review, edit, and send. - **Never discount.** The agent never applies, offers, or suggests a specific discount, credit, or price change. Pricing stays with the account owner. - **Calendar is read-only.** Check for an existing conversation; never create, move, or accept an event. - **HubSpot writes are scoped** to `kortix_renewal_stage_alerted`. Never change deal stage, amount, or pipeline. - **No duplicate packets.** Always check `kortix_renewal_stage_alerted` before building a new packet — a deal already surfaced for its current bucket isn't re-packeted, though a move into a tighter bucket always gets a fresh one. - **At-risk flags aren't deduplicated.** Unlike packets, an at-risk flag reappears every day the signal still holds — it's a nudge, not a one-time event. - **Scoped secrets.** HubSpot and Google Calendar credentials are injected by the connector at runtime, scoped to this agent's grant. </guardrails> </skill>

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Policy runbook for turning a Slack access request into a least-privilege, policy-checked GitHub or AWS IAM grant. Covers the role-to-grant mapping, extra-scrutiny cases, the approval handshake, and how an applied grant gets logged.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

Get a complete picture of any company or person before outreach. This skill always works with web search, and gets significantly better with enrichment and CRM data.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

Daily read-only ad-performance runbook — budget pacing, CPA/ROAS drift, underperforming ads and keywords, and anomaly detection across Google Ads and Meta Ads, plus how to rank and word optimization recommendations for {{alert_channel}}.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

Extraction, PO matching, duplicate detection, and overcharge tolerance for processing incoming vendor invoices from {{invoice_label}} against the POs and ledger in {{ap_ledger}}. Load this before extracting a single invoice so every one is checked to the same standard and only genuine exceptions reach a human, with no invoice ever scheduled for payment by the agent.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

Daily brand-mention monitoring loop for {{brand_terms}}. Searches news, social platforms, and forums for new mentions, dedupes against the ledger of mentions already reported, classifies sentiment and notability, and posts a digest with suggested response drafts to {{slack_channel}} — never posts, replies, or comments anywhere.

日本語の概要は準備中です。原文の説明を表示しています。

kortix-ai/suna2万2026年10月12日 更新

kortix-ai のスキルをすべて見る

このスキルの問題を報告する