What this gives you: Five ready-to-use skills you can copy-paste into your setup today: meeting prep that pulls context from your calendar and CRM, auto follow-ups from meeting transcripts, one-click invoicing, content writing in your voice, and security monitoring.
Paste this guide into Claude Code and it will walk you through every step interactively.
Once you understand how skills work, the question becomes: which ones are worth building first? These five cover the highest-leverage, most-repeated workflows in any service business. Between them they eliminate roughly 3-4 hours of manual work per day. Build them in this order - each one builds intuition you need for the next.
1. /meeting-prep
Pre-call prep is the skill with the fastest visible ROI. Without it, you spend 10-15 minutes before every call digging through your CRM, searching your inbox for the last email, trying to remember what you promised last time. With it, you type one command and get a structured brief in under 60 seconds.
What it does
Pulls from Google Calendar (time, link, attendees), Fireflies (previous transcripts, pain points, commitments), GoHighLevel (pipeline stage, deal value, conversation history), and optionally web search for new prospects. Outputs a structured briefing document you can read in 3 minutes flat.
When to use it
Invoke it 5-10 minutes before any call - discovery calls, follow-up calls, client check-ins, partnership conversations. It's especially valuable for follow-up calls where you need to remember exactly what was said and what you promised.
Full SKILL.md
---name: meeting-prep
description: >
Pre-call briefing from Calendar, Fireflies transcripts, and GHL CRM.
Use when user mentions an upcoming call, meeting, or client session.
triggers:
- "meeting prep"
- "prep for my call"
- "I have a call with"
- "prepping for"---# /meeting-prep
Produce a pre-call brief. Work fast. Every line must be useful.
## Steps
1. Identify contact name/company. Ask if not provided.
2. Google Calendar MCP - find matching event, extract time + link
3. Fireflies MCP - search contact name, pull last 2-3 transcripts
4. GHL MCP - search contact, pull stage, value, last 5 messages
5. Web search if Fireflies returns nothing (new prospect)
6. Compile briefing document
## Output Format```
# Pre-Call Brief: [Name]
Date: [date] at [time] | Link: [url]
Stage: [pipeline stage] | Value: [£ amount]
## Who They Are
[2-3 sentences max]
## Where We Left Off
- [bullet from last transcript]
- [bullet from last transcript]
## Their Pain Points
- [exact phrases they used]
## My Open Commitments ⚠️
- [what I promised - bold these]
## Questions to Ask
1. [targeted question]
2. [targeted question]
3. [targeted question]
## Suggested Close
[single next step to propose]
```## Rules
- Never invent data. If a source has nothing, write "No data."
- Commitments from previous calls must be bolded and flagged ⚠️
- Bullets max 12 words each
- Skip "Where We Left Off" for first meetings
Example output
# Pre-Call Brief: Tom Fielding / Fielding HVACDate: Today at 3:00 PM | Link: meet.google.com/abc-def-ghiStage: Proposal Sent | Value: £2,400/month## Who They Are
HVAC installation company, 6 engineers, South Manchester. Tom is
the owner-operator. Been running for 11 years, mostly word of mouth.
## Where We Left Off
- Concerned about AI calls sounding "robotic" with older customers
- Asked for a demo with a real lead before committing
- We quoted £2,400/month for inbound + lead reactivation combo
## My Open Commitments ⚠️
- Send demo recording by Tuesday ⚠️
- Provide sample call transcript from similar client ⚠️
## Questions to Ask1. Did you get a chance to listen to the demo I sent?
2. What's your current process when a lead calls after hours?
3. How many missed calls do you estimate per week?
2. /lead-follow-up
The follow-up email after a call is one of the highest-leverage touchpoints in a sales process. It confirms what was discussed, restates the value, and drives toward a next step. Most people write it from memory 2 hours after the call when the details are already fading. This skill writes it from the Fireflies transcript while you're still on the call.
What it does
Searches Fireflies for the most recent transcript matching the contact name. Extracts the key discussion points, their stated pain, the solution you proposed, and any agreed next steps. Then drafts a personalised, non-AI-sounding follow-up email in your voice - with a subject line, opening that references something specific they said, and a clear single CTA.
When to use it
Run it immediately after hanging up while the call is still recording/processing in Fireflies. Most calls are indexed within 5-10 minutes. If Fireflies hasn't indexed yet, run it again after 10 minutes.
SKILL.md template
---name: lead-follow-up
description: >
Generate a personalised post-call follow-up email from the Fireflies
transcript. Use after any sales call, discovery call, or client meeting.
triggers:
- "follow up"
- "follow-up email"
- "write a follow up"
- "post-call email"---# /lead-follow-up## Steps
1. Ask for contact name if not provided
2. Search Fireflies MCP for most recent transcript matching the name
3. Extract from transcript:
- Their main pain point (exact words where possible)
- The solution/approach you described
- Any pricing or timeline discussed
- Agreed next steps
4. Draft email using the template below
5. Show draft and ask: "Any changes before I copy this?"
## Email Template```
Subject: [Something specific from the call - not "Great speaking with you"]
Hi [First name],
Really enjoyed our conversation earlier. [One sentence referencing
something specific they said - their situation, not generic praise.]
As discussed, [brief recap of what you proposed and why it fits].
Next step: [the exact action agreed on call, with a date if possible].
I'll [your commitment]. Let me know if you have any questions before then.
[Sign-off]
```## Rules
- Subject line must reference something specific from the call
- No "I hope this email finds you well" or similar filler
- No em dashes. Use hyphens or commas.
- No rhetorical questions
- Keep email under 180 words
- If no transcript found, say so and ask for call notes manually
Tip: Add your writing rules once in the SKILL.md, not in every session. "No em dashes, no rhetorical questions, keep under 180 words" as permanent rules means you never have to remind Claude again.
Want these skills installed and configured for your business?
Custom skill library, MCP integrations, and a dashboard - done for you in a week.
Invoicing is one of those tasks that takes 15 minutes and feels important enough that you do it yourself, but is actually completely mechanical once you've done it twice. This skill pulls the client's details from your CRM, applies your standard pricing, generates a professional invoice, and either sends it or saves it as a PDF.
What it does
Looks up the client in GoHighLevel, extracts their company name, email, and contact details. Applies a pricing engine (setup fee + monthly retainer + any one-off line items you specify). Generates a PDF invoice using a template. Optionally sends via email or saves to a specified directory.
When to use it
End of month for recurring invoices, immediately after a project sign-off for setup fees, or whenever a client asks for an invoice. Can also be invoked mid-conversation: "Create an invoice for Tom for the £1,200 setup fee."
---name: create-invoice
description: >
Generate a professional invoice from CRM data and pricing. Supports
setup fees, monthly retainers, and custom line items. Saves as PDF.
triggers:
- "create invoice"
- "generate invoice"
- "invoice for"
- "send an invoice"---# /create-invoice## Steps
1. Identify client. Ask for name if not provided.
2. GHL MCP - fetch contact details (name, company, email, address)
3. Ask for line items if not specified:
- Setup fee (one-time)
- Monthly retainer
- Any additional line items
4. Calculate total + VAT (20% unless client says exempt)
5. Generate invoice HTML using the template in scripts/invoice.html
6. Convert to PDF: `~/.claude/skills/create-invoice/scripts/to-pdf.sh`
7. Save to ~/Documents/Invoices/[YYYY-MM]/[ClientName]-[InvoiceNum].pdf
8. Confirm save location, ask if they want it emailed
## Invoice Numbering
Format: RJM-YYYY-NNN (e.g. RJM-2026-047)
Read last invoice number from ~/.claude/skills/create-invoice/counter.txt
Increment by 1 and update the file after each invoice
## Rules
- Always show the full invoice summary before saving
- Never send without explicit "yes, send it" confirmation
- VAT number: include only if client is VAT registered (ask if unsure)
- Payment terms: 14 days unless client specifies otherwise
- Currency: GBP by default
4. /content-write
Short-form content for LinkedIn, TikTok, Instagram, and YouTube Shorts. The challenge with AI-written content isn't capability - Claude can write scripts all day. The challenge is voice-matching and pattern-avoidance. Left unconstrained, Claude writes content that reads like Claude. This skill constrains it hard: specific structure rules, a list of forbidden patterns, and a voice profile it must match.
What it does
Takes a topic, angle, or rough idea and produces a short-form script in your voice. Follows a hook-body-CTA structure. Enforces voice rules (no rhetorical questions, no staccato fragments, no em dashes, no filler phrases). Outputs speech-only text - no stage directions, no production notes.
When to use it
Daily content production. Give it a topic or a lesson from a recent client interaction and it turns it into a deployable script in 30 seconds. Can batch-produce 5-10 scripts at once if you give it a content theme.
---name: content-write
description: >
Write short-form video scripts in the user's voice. Enforces style
rules and avoids AI writing patterns. Outputs speech-only text.
triggers:
- "write a script"
- "content script"
- "short-form"
- "write me a video"---# /content-write## Audience
Agency owners, coaches, and consultants. They're busy, sceptical of hype,
and have heard most AI pitches before. Speak to their outcome, not the tech.
## Script StructureHook (0-3s): Bold statement or surprising fact. No question marks.
Body (3-45s): 3-4 concrete points. Each one moves forward.
CTA (45-60s): Single action. Clear. No "smash that like button."
## Forbidden Patterns
- Rhetorical questions of any kind
- "Not X. Y." staccato fragments
- Em dashes (use hyphens or restructure)
- "Imagine if..." or "What if I told you..."
- "Game changer", "revolutionary", "unlock"
- AI buzzword soup: "leverage", "synergy", "paradigm"
- Stage directions: [cut to], [screen recording], [b-roll]
- Filler openings: "So...", "Hey guys...", "In today's video..."
## Voice Profile
Conversational but authoritative. Like explaining to a smart friend
who knows business but not AI. Concrete examples over abstractions.
Short sentences. Active voice. No hedging.
## Output Format
Plain speech text only. One paragraph per beat. 60-90 words total.
No formatting symbols, no stage directions, no timecodes.
## Rules
- Read back the topic and angle before writing
- Write 2 versions with different hooks, show both
- Always end with a single clear action, not a question
Example output
Topic: Why most AI automations fail in the first 30 daysVersion 1:Your AI automation works perfectly in testing and breaks on day one in
production. Here is why. Most people build automations around clean data
and happy paths. Real businesses have inconsistent data, edge cases, and
people who use the system in ways nobody planned for. The fix is not more
testing. It is building fallbacks for every failure point before you go
live. Catch the error, log it, notify a human. Then you learn fast and
patch fast. That is how you get to 90 days without a failure.Version 2:The first 30 days of any AI automation are the most dangerous. The
system is live, your team is watching, and every failure is visible.
Most failures trace back to one mistake: assuming the data will be clean.
It will not be. Phone numbers will be in three different formats. Names
will have typos. Fields will be empty. Build for the messy data first.
Validate inputs, add fallback branches, and log everything. Do that and
your automation survives contact with real users.
5. /security-audit
Security is the skill most people skip until something goes wrong. By then, an API key is in a commit, a .env file is in a public repo, or a package.json has a typo that installed malware instead of the intended package. This skill runs proactively. Run it monthly, or any time you've added a new integration.
What it does
Scans your project directories for hardcoded secrets, checks all .gitignore files for missing entries, audits package.json for suspicious or misspelled package names, checks git history for committed credentials, and reviews your .env file usage patterns. Produces a report with pass/fail for each check and an action list for any failures.
When to use it
Monthly cadence at minimum. Also run it after adding any new API integration, after onboarding a new team member, and before making any repository public.
---name: security-audit
description: >
Audit for leaked API keys, missing .gitignore entries, suspicious
package names, and committed secrets. Run monthly or after new integrations.
triggers:
- "security audit"
- "check for leaked keys"
- "audit secrets"---# /security-audit## Scope
Run from the project directory if one is specified. Otherwise audit:
- All active project dirs in ~/Documents/RJ Media Agency/
- ~/.claude/ (skills, CLAUDE.md, memory files)
- ~/.env and any project-level .env files (existence check only - never read contents)
## Checks### 1. Hardcoded Secrets Scan
Search all .js, .ts, .py, .sh, .md, .json files for patterns:
- sk-[a-zA-Z0-9]{20,} (OpenAI/Anthropic keys)
- AKIA[A-Z0-9]{16} (AWS access keys)
- ghp_[a-zA-Z0-9]{36} (GitHub PATs)
- xoxb-[a-zA-Z0-9-]+ (Slack tokens)
- Any string matching: api_key, api-key, apikey, secret, password,
token followed by = or : and a non-placeholder value
Exclude: node_modules/, .git/, .env files, test fixtures
### 2. .gitignore Audit
For each project with a git repo, check .gitignore contains:
- .env
- .env.local
- .env.*.local
- node_modules/
- *.pem
- *.key
Report any missing entries as FAIL
### 3. package.json Audit
For each package.json found:
- List all dependencies and devDependencies
- Flag any package names that contain typos of popular packages
(e.g. "expresss", "recat", "mongooose", "axois")
- Flag any packages with very low download counts (proxy: unknown packages)
- Flag packages with suspicious naming: anything with "stealer",
"grabber", "exfil" in the name
### 4. Git History Check
In each git repo: `git log --all --full-history -- "*.env" "*.key" "*.pem"`
If any .env or key files appear in git history, flag as CRITICAL
### 5. .env File Pattern Check
Confirm .env files exist where expected:
- ~/.env (global secrets)
- Project-level .env where integrations are used
Do NOT read or display contents. Just confirm presence.
## Output Format```
# Security Audit Report - [date]
## Summary
PASSED: X checks
FAILED: Y checks
CRITICAL: Z issues
## Findings
### PASS - .gitignore coverage
All 4 active projects have .env in .gitignore.
### FAIL - Hardcoded secret found
File: /path/to/file.js, Line 34
Pattern matched: api_key = "sk-..."
Action: Move to .env, reference as process.env.KEY_NAME
### CRITICAL - Secret in git history
Repo: my-project
File committed: .env (commit abc1234, 2026-01-15)
Action: Rotate the key immediately. Use git-filter-repo to purge history.
## Action List
1. [highest priority action]
2. [second action]
```## Rules
- NEVER display contents of .env files
- NEVER display full secret values found in scans - show first 6 chars + ***
- If CRITICAL issues found, say so immediately before running other checks
- Always end with a numbered action list sorted by severity
Tip: The security audit skill is one you want to invoke at the start of new projects too, not just periodically. Run it before you first push to a remote repo and before you make any repo public. It takes 30 seconds and has caught real issues on real projects.