workflow
npx skills add https://github.com/octavehq/lfgtm --skill workflow
Agent 安装分布
Skill 文档
/octave:workflow – GTM Workflow Engine
Define, run, and manage multi-step GTM workflows. Chain research, qualification, generation, and agent tools into reusable recipes. Ship with built-in templates or create your own.
Usage
/octave:workflow [subcommand] [options]
Subcommands
/octave:workflow # List available workflows
/octave:workflow list # List available workflows
/octave:workflow show "Full Outbound Pipeline" # Show workflow details
/octave:workflow run "Full Outbound Pipeline" --company acme.com
/octave:workflow run "Full Outbound Pipeline" --company acme.com --auto
/octave:workflow create # Build a new workflow interactively
Examples
# List all workflows (templates + your custom ones)
/octave:workflow list
# See what a workflow does before running it
/octave:workflow show "Account-Based Research"
# Run a workflow with required inputs
/octave:workflow run "Full Outbound Pipeline" --company stripe.com
# Run with all options
/octave:workflow run "Competitive Deal Prep" --company acme.com --contact john@acme.com --competitor "Salesforce"
# Run without pausing between steps
/octave:workflow run "Full Outbound Pipeline" --company acme.com --auto
# Create a custom workflow
/octave:workflow create
Instructions
When the user runs /octave:workflow:
Subcommand: list (default)
Show all available workflows from both template and user directories.
Discovery:
- Read
.workflow.mdfiles from the plugin’sworkflows/directory (templates) - Read
.workflow.mdfiles from~/.octave/workflows/(user-created) - Parse YAML front matter from each file
Output Format:
AVAILABLE WORKFLOWS
===================
TEMPLATES (4)
-------------
1. Full Outbound Pipeline
Company research â qualify â find contacts â qualify â email outreach
Inputs: company_domain (required), persona, num_contacts
Run: /octave:workflow run "Full Outbound Pipeline" --company <domain>
2. Account-Based Research
Deep research dossier on a target account with contact mapping
Inputs: company_domain (required), num_contacts
Run: /octave:workflow run "Account-Based Research" --company <domain>
3. Competitive Deal Prep
Research + competitive positioning + tailored displacement outreach
Inputs: company_domain (required), contact_email (required), competitor_name (required)
Run: /octave:workflow run "Competitive Deal Prep" --company <domain> --contact <email> --competitor <name>
4. Persona-Targeted Outreach
Find people matching a persona across companies and generate outreach
Inputs: persona_name (required), industry, min_company_size
Run: /octave:workflow run "Persona-Targeted Outreach" --persona "CTO"
---
MY WORKFLOWS (2)
-----------------
1. Security Team Outreach
Find and reach security decision-makers at target companies
Inputs: company_domain (required), num_contacts
Run: /octave:workflow run "Security Team Outreach" --company <domain>
2. Partner Channel Mapping
Research potential partners and their GTM teams
Inputs: company_domain (required)
Run: /octave:workflow run "Partner Channel Mapping" --company <domain>
---
Use /octave:workflow show <name> for details.
Use /octave:workflow create to build a new workflow.
If ~/.octave/workflows/ doesn’t exist or is empty, show only templates and note:
MY WORKFLOWS (0)
-----------------
No custom workflows yet.
Use /octave:workflow create to build your first one.
Subcommand: show
Show detailed information about a specific workflow.
Actions:
- Locate the workflow file (fuzzy match on name across both directories)
- Parse front matter and step definitions
- Present full details
Output Format:
Workflow: Full Outbound Pipeline
=================================
Source: Template
Author: octave
Tags: outbound, prospecting, email
Description:
Research a target company, qualify it against ICP, find decision-makers,
qualify them, and generate personalized outreach.
Inputs:
-------
- company_domain (string, REQUIRED) - Target company domain (e.g., acme.com)
- persona (string, optional) - Target persona name from library [default: auto-detect]
- num_contacts (number, optional) - Number of contacts to find [default: 5]
Steps (8):
----------
1. Research Company â enrich_company
2. Qualify Company â qualify_company
3. Review Company Fit â decision (if score < 50, warn user)
4. Find Decision Makers â find_person
5. Qualify Top Contact â qualify_person
6. Select Contact â decision (user picks contact)
7. Generate Email Sequence â generate_email
8. Present Results â output summary
---
Run this workflow:
/octave:workflow run "Full Outbound Pipeline" --company acme.com
/octave:workflow run "Full Outbound Pipeline" --company acme.com --persona "CTO" --num-contacts 10
/octave:workflow run "Full Outbound Pipeline" --company acme.com --auto
Subcommand: run
Execute a workflow step by step.
Step 1: Locate and Parse
- Find the workflow file (fuzzy match on name)
- Parse YAML front matter for inputs and metadata
- Parse step definitions from markdown body
If not found:
Workflow "XYZ" not found.
Available workflows:
- Full Outbound Pipeline
- Account-Based Research
- Competitive Deal Prep
- Persona-Targeted Outreach
Use /octave:workflow list to see all workflows.
Step 2: Collect Inputs
Prompt the user for each required input. Apply defaults for optional inputs.
Running: Full Outbound Pipeline
================================
Required inputs:
company_domain: [user provides or from --company flag]
Optional inputs (press Enter for defaults):
persona [auto-detect]:
num_contacts [5]:
If using command-line flags, map them: --company â company_domain, --persona â persona, --contact â contact_email, --competitor â competitor_name.
Step 3: Execute Steps
Process each step sequentially, maintaining a context map that stores all input values and save_as results from prior steps.
For tool steps:
STEP 1/8: Research Company
ââââââââââââââââââââââââââ
Get detailed intelligence on the target company.
Tool: enrich_company
Params: { companyDomain: "acme.com" }
Executing...
Result: Acme Corp
Industry: B2B SaaS
Employees: 450
Stage: Series C
Location: San Francisco, CA
Recent: Raised $50M Series C in Q3 2025
[Enter to continue, or type feedback]
After execution:
- Save the result to the context map under the step’s
save_asname - Show a brief summary of the result
- Wait for user acknowledgment (unless
--automode)
For decision steps:
STEP 3/8: Review Company Fit
âââââââââââââââââââââââââââââ
Company qualification score: 42/100
This is below the recommended threshold of 50.
Options:
1. Continue anyway - proceed with outreach despite low score
2. Stop here - end the workflow
3. Find similar companies - pivot to better-fit alternatives
Your choice:
Wait for user selection and branch accordingly.
In --auto mode:
- If the condition is NOT met (e.g., score >= 50), auto-continue
- If the condition IS met (e.g., score < 50), auto-select the first option (continue) but flag it:
[AUTO] Score 42/100 is below threshold. Continuing anyway (auto mode).
For output steps: Render the output template with all values from the context map:
STEP 8/8: Results
ââââââââââââââââââ
OUTBOUND PIPELINE COMPLETE
===========================
Company: Acme Corp (acme.com)
ICP Score: 78/100 - GOOD FIT
Contact: Sarah Chen (CTO)
Persona Fit: 85/100
---
EMAIL 1: Initial Outreach
Subject: Reducing engineering overhead at Acme
[Full email content...]
EMAIL 2: Value Follow-Up (Day 3)
Subject: How TechCorp cut deployment time by 60%
[Full email content...]
[Continue for all emails...]
---
Personalization used:
- Company: Acme Corp (450 employees, Series C)
- Matched persona: CTO - Enterprise Tech
- Playbook: Enterprise DevOps Sale
---
Next steps:
1. Deliver to your tools (I'll check for MCP connectors first)
2. Research additional contacts (/octave:research)
3. Run this workflow for another company
4. Adjust and re-run for a different contact
Step 4: Completion
After all steps complete:
Workflow complete! (8/8 steps)
Summary:
- Company: Acme Corp - Score: 78/100
- Contact: Sarah Chen, CTO - Fit: 85/100
- Generated: 4-email sequence
Would you like to:
1. Deliver to your tools (sequencer, CRM, Drive, Gamma, etc.)
2. Run again for another company
3. Run for a different contact at Acme
4. Done
Step 5: Deliver Results
When the user selects “Deliver to your tools”, follow this MCP-first approach:
Phase 1: Detect likely destination from workflow output
Map the workflow output type to a recommended destination:
- Email sequences â Email sequencer (Outreach, Apollo, Salesloft, Instantly)
- Account research / call prep â CRM (Salesforce, HubSpot, Pipedrive)
- Content / collateral â Documents (Google Docs, Notion, Confluence)
- Presentations â Slides (Gamma, Google Slides, PowerPoint)
- Reports / data â File export (CSV, markdown, HTML)
Phase 2: Check for MCP connectors
# Check what MCP servers the user has connected
ListMcpResourcesTool()
# Look for tool-specific MCP servers:
# - Google Drive MCP â can write docs directly
# - Salesforce/HubSpot MCP â can create CRM records
# - Slack MCP â can post to channels
# - Notion MCP â can create pages
# - Any other connected MCP server
Phase 3: Branch based on what’s available
If matching MCP server found:
I can push these results directly to [Tool] via your connected MCP server.
Detected: [MCP Server Name] connected
Destination: [specific location â e.g., Drive folder, CRM object, Slack channel]
Ready to push? (yes / choose a different destination)
Use the MCP server’s tools to write/push the output directly.
If no matching MCP server found, ask for destination:
Where should these results go?
OUTREACH & SEQUENCERS
1. Outreach / Apollo / Salesloft / Instantly
CRM
2. Salesforce / HubSpot / Pipedrive
DOCUMENTS
3. Google Docs / Notion / Confluence
PRESENTATIONS
4. Gamma / Google Slides / PowerPoint
COMMUNICATION
5. Slack / Email
MARKETING AUTOMATION
6. Marketo / Pardot / Mailchimp
FILE EXPORT
7. Local file (markdown, HTML, CSV, plain text)
8. Keep in conversation (already displayed)
Your choice (or name your tool):
After the user picks a destination, check for MCP:
Do you have an MCP server for [Tool] connected?
If yes â Connect it and I'll push directly.
If no â I'll format the output for easy import.
Phase 4: Format for import (when no MCP connector)
Recommend the best format based on destination, then generate:
| Destination | Recommended Format | Why |
|---|---|---|
| Outreach / Apollo / Salesloft / Instantly | CSV (Step, Subject, Body, Wait Days) | Direct sequence import |
| Salesforce / HubSpot / Pipedrive | Structured text (Account Summary, Stakeholders, Next Steps) | Paste into notes/activity fields |
| Google Docs | Clean markdown with headers | Import or paste preserves structure |
| Notion | Markdown with toggles/callouts | Native Notion markdown support |
| Confluence | Markdown or HTML | Paste into Confluence editor |
| Gamma | Numbered slide outline (Title + bullets per slide) | Paste into Gamma “Generate” |
| Google Slides / PowerPoint | Slide outline with speaker notes | Copy into slide builder |
| Slack | Formatted message blocks | Post as Slack message |
| Email (direct) | HTML email or plain text | Send or paste into email client |
| Marketo / Pardot | HTML email templates | Import as email template |
| Mailchimp | HTML email with merge tags | Import as campaign |
| Local file | User choice: .md, .html, .csv, .txt |
Write to ./octave-output/<workflow>-<date>.<ext> |
Present as:
For [Tool], I recommend: [Format]
[Brief reason why this format works best]
Other options:
- [Alternative format 1]
- [Alternative format 2]
Which format? (or press Enter for recommended):
Write the formatted output using Claude’s Write tool (for files) or display inline (for paste targets).
Variable Resolution:
When executing steps, resolve {{variable}} references from the context map:
{{company_domain}}â input value{{company_profile}}â full result from the step that saved ascompany_profile{{company_profile.name}}â specific field from a saved result{{contacts[0]}}â first item from an array result{{persona_titles}}â derived from persona lookup (Claude resolves intelligently)
Claude should resolve these references naturally from context. The {{}} syntax is a guide, not a rigid template engine â Claude understands what data to pass between steps.
Subcommand: create
Build a new workflow interactively and save it to ~/.octave/workflows/.
Step 1: Understand the Goal
Let's create a new workflow!
What should this workflow accomplish?
(Describe the end-to-end process in your own words)
Example user input:
“I want to research a company, find their security team, check if they match our ICP, and then generate a security-focused email sequence.”
Step 2: Define Delivery Destination
Ask where the workflow results should go:
Where do you want the results delivered?
1. Email sequencer (Outreach, Apollo, Salesloft, Instantly)
2. CRM (Salesforce, HubSpot, Pipedrive)
3. Documents (Google Docs, Notion, Confluence)
4. Presentations (Gamma, Google Slides, PowerPoint)
5. Communication (Slack, Email)
6. Marketing automation (Marketo, Pardot, Mailchimp)
7. Local file (markdown, HTML, CSV, plain text)
8. Conversation only â no delivery step needed
This gets saved in the workflow file so it knows where to deliver on repeat runs.
Step 3: Suggest a Structure
Based on the user’s description, Claude proposes a workflow:
Great! Here's a suggested workflow:
Workflow: Security Team Outreach
Description: Research a company, find security decision-makers, qualify, and generate targeted outreach
Inputs:
- company_domain (string, required) - Target company domain
- num_contacts (number, optional, default 3) - Number of security contacts to find
Steps:
1. Research Company â enrich_company
Get company intelligence, tech stack, and security posture signals
2. Qualify Company â qualify_company
Score against ICP with security focus
3. Review Fit â decision
If score < 50, warn and offer to stop
4. Find Security Team â find_person
Search for CISO, VP Security, Head of Security, Security Director
5. Enrich Top Contact â enrich_person
Deep research on the best-fit security contact
6. Qualify Contact â qualify_person
Score against security-focused persona criteria
7. Generate Outreach â generate_email
Security-focused email sequence with relevant proof points
8. Present Results â output
Full summary with emails and next steps
Does this look right? (yes / adjust / add steps / remove steps)
Step 4: Refine
If user says “adjust”:
What would you like to change?
1. Add a step
2. Remove a step
3. Reorder steps
4. Change an input
5. Modify a step's details
Your choice:
Iterate until user confirms.
Step 5: Generate and Save
- Generate the
.workflow.mdfile content - Create
~/.octave/workflows/directory if it doesn’t exist - Write to
~/.octave/workflows/<kebab-case-name>.workflow.md - Confirm:
Saved workflow: Security Team Outreach
Location: ~/.octave/workflows/security-team-outreach.workflow.md
Run it now:
/octave:workflow run "Security Team Outreach" --company acme.com
Or list all workflows:
/octave:workflow list
Workflow File Format Reference
Workflows are .workflow.md files with YAML front matter and markdown step definitions.
Front Matter (YAML):
---
name: Workflow Display Name
description: One-line description of what the workflow does
author: username # optional
tags: [tag1, tag2] # optional
inputs:
- name: variable_name
type: string # string, number, or boolean
required: true # or false
description: Human-readable description
default: value # optional, for non-required inputs
delivery: # optional â where to deliver results
destination: outreach | apollo | salesloft | instantly | salesforce | hubspot | pipedrive | google_docs | notion | confluence | gamma | google_slides | slack | email | marketo | mailchimp | local_file | conversation
format: csv | markdown | html | plain_text | slide_outline | crm_notes
---
Steps (Markdown):
Each step is an ### Step N: Name heading followed by key-value fields:
Tool step:
### Step N: Step Name
tool: mcp_tool_name
params:
paramName: "{{variable_or_literal}}"
otherParam: "literal value"
save_as: result_name
description: What this step does and why.
Decision step:
### Step N: Step Name
type: decision
condition: "result_name.field < threshold"
prompt: |
Explanation of the decision.
Options:
1. First option
2. Second option
3. Third option
Output step:
### Step N: Step Name
type: output
template: |
WORKFLOW RESULTS
================
Key result: {{saved_result.field}}
Other data: {{another_result.field}}
Available MCP Tools for Steps:
Any MCP tool from the Octave server can be used in a workflow step:
| Phase | Tools |
|---|---|
| Research | find_company, find_person, find_similar_companies, find_similar_people, enrich_company, enrich_person |
| Qualify | qualify_company, qualify_person |
| Library | list_all_entities, get_entity, get_playbook, search_knowledge_base, list_value_props |
| Generate | generate_email, generate_content, generate_call_prep |
| Agents | run_email_agent, run_content_agent, run_call_prep_agent, run_enrich_person_agent, run_enrich_company_agent, run_qualify_person_agent, run_qualify_company_agent |
| Write | create_entity, create_playbook, update_entity, update_playbook |
| Deliver | ListMcpResourcesTool (discover connected MCP servers), any connected MCP server tools (Google Drive, Salesforce, Slack, etc.), Write tool (local files) |
MCP Tools Used
This skill dynamically invokes MCP tools based on workflow step definitions. Any tool available through the Octave MCP server can be used within a workflow step.
Core tools used by the skill itself:
- File system tools (Read, Glob) to discover and parse workflow files
- Write tool to save user-created workflows
Tools commonly used in workflow steps:
enrich_company/enrich_person– Research stepsqualify_company/qualify_person– Qualification stepsfind_person/find_company– Discovery stepsgenerate_email/generate_content– Generation stepsget_entity/get_playbook– Library lookup stepssearch_knowledge_base– Context gathering stepsrun_email_agent/run_content_agent– Agent execution steps
Error Handling
Workflow Not Found:
Workflow “XYZ” not found.
Available workflows:
- Full Outbound Pipeline
- Account-Based Research
- Competitive Deal Prep
- Persona-Targeted Outreach
Use /octave:workflow list to see all workflows.
Missing Required Input:
Workflow “Full Outbound Pipeline” requires the following input:
- company_domain: Target company domain (e.g., acme.com)
Usage: /octave:workflow run “Full Outbound Pipeline” –company
Tool Call Failure During Execution:
Step 4 failed: find_person returned an error. Error:
Options:
- Retry this step
- Skip and continue to next step
- Stop the workflow
Your choice:
User Workflows Directory Missing:
If ~/.octave/workflows/ doesn’t exist when listing or creating:
- For
list: Show only templates, note “No custom workflows yet” - For
create: Create the directory automatically before saving
Invalid Workflow File:
Could not parse workflow file: Error:
The workflow file may be malformed. Use /octave:workflow show to check, or edit the file manually at:
Related Skills
/octave:research– Deep dive research (individual steps of a workflow)/octave:generate– Content generation (commonly used as workflow steps)/octave:prospector– Prospecting with ICP criteria (similar to outbound workflow)/octave:explore-agents– Run saved agents (can be used within workflow steps)/octave:library– Library management (workflows reference library entities)/octave:brainstorm– Ideation (brainstorm â create workflow â run workflow)