Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
pack-engineering logo

pack-engineering

HashWarlock/clawdi-plugins

Otheropenclawby HashWarlock

Summary

OpenClaw plugin exposing 1 skill.

Install to Claude Code

openclaw plugin add HashWarlock/clawdi-plugins

Run in Claude Code. Add the marketplace first with /plugin marketplace add HashWarlock/clawdi-plugins if you haven't already.

README.md

Clawdi Knowledge Work Plugins

Modular knowledge-work plugins for OpenClaw with dynamic service discovery.

The system consists of a router plugin that discovers available services in your environment, and pack plugins that provide role-specific skills (sales, recruiting, marketing, etc.).

Quick Start

1. Clone and install:

git clone <repo-url>
cd clawdi-plugins
pnpm install

2. Deploy to your OpenClaw extensions directory:

./scripts/deploy.sh /data/openclaw/extensions

This builds all packages, copies them with correct plugin ID directory names, and installs runtime dependencies.

3. Enable in your openclaw.json:

{
  "plugins": {
    "knowledge-work-router": { "enabled": true },
    "pack-sales": { "enabled": true },
    "pack-productivity": { "enabled": true }
  }
}

4. Restart the agent and run /connect_apps to discover and connect services.

Available Packs

| Pack | Skills | What It Does | |------|--------|-------------| | sales | 8 | Meeting prep, CRM updates, follow-ups, research | | productivity | 4 | Calendar management, task tracking, email triage | | recruiting | 4 | Pipeline management, interview prep, offers | | marketing | 8 | Campaign planning, SEO, content, analytics | | operations | 9 | Process management, reporting, documentation | | customer-support | 5 | Ticket triage, knowledge base, escalation | | engineering | 6 | Sprint planning, code review prep, incident response | | enterprise-search | 4 | Cross-system search, knowledge retrieval | | human-resources | 7 | Reviews, comp analysis, onboarding, policy | | product-management | 8 | Roadmap, specs, user research, metrics |

Total: 63 skills across 10 packs

Connecting Services

Run /connect_apps to see what services are available in your environment:

/connect_apps

The router dynamically discovers services from:

  • Composio — SaaS integrations (Google Workspace, HubSpot, Slack, etc.)
  • Built-in OpenClaw tools — Native tools (web_search, read_file, etc.)
  • Lobster workflows — Multi-step orchestrated flows
  • CLI tools — Local binaries (pandoc, jq, etc.)
  • MCP servers — Any configured MCP server tools

No hardcoded service list — the router adapts to whatever you have connected.

Configuration

Plugin Enable/Disable

In openclaw.json (plugin IDs are unscoped — no @clawdi-ai/ prefix):

{
  "plugins": {
    "knowledge-work-router": { "enabled": true },
    "pack-sales": { "enabled": true },
    "pack-recruiting": { "enabled": false }
  }
}

Router Config

{
  "plugins": {
    "knowledge-work-router": {
      "enabled": true,
      "config": {
        "adapterOrder": ["composio", "openclaw_tool", "lobster", "cli", "mcporter"],
        "disabledAdapters": [],
        "sideEffectPolicy": "confirm_destructive",
        "cacheTtl": 600000,
        "capabilityPins": {
          "seo.*": "mcporter"
        },
        "cliMappings": {
          "docs.convert_*": "pandoc",
          "data.query_*": "jq"
        }
      }
    }
  }
}

| Field | Description | Default | |-------|-------------|---------| | adapterOrder | Fallback order for adapter probing | All 5 in order | | disabledAdapters | Adapters to skip entirely | [] | | sideEffectPolicy | always_confirm, confirm_destructive, never_confirm | confirm_destructive | | cacheTtl | Discovery cache TTL in ms | 600000 (10 min) | | capabilityPins | Pin capabilities to specific adapters | {} | | cliMappings | Map capability patterns to CLI binaries | {} |

Checking Status

/check_setup

Shows the status of all capabilities across all installed packs, which adapter resolves each one, and which adapters are enabled.

---

Architecture

Pack Skill → capability_execute tool
                    ↓
               Router.resolve()
                    ↓
          DiscoveryEngine.resolve()
                    ↓
      Probe adapters in fallback order:
        Composio → OpenClaw Tool → Lobster → CLI → MCPorter
                    ↓
           Cache result, execute via adapter

The DiscoveryEngine probes each adapter asking "can you handle this capability?" Adapters search their runtime (Composio's search API, MCP server tool lists, built-in tool names, Lobster workflow registry, PATH binaries) and return a probe result or null.

The router also supports filesystem-based pack discovery — if the plugin API registry is unavailable, it scans /data/openclaw/extensions/pack-* for pack directories.

Creating a Pack

1. Create directory: packages/pack-yourpack/ 2. Add pack-manifest.yaml:

packId: yourpack
displayName: "Your Pack"
capabilities:
  required:
    - calendar.read_events
  optional:
    - docs.create_brief
preferredApps:
  calendar.*:
    - google_workspace
onboarding:
  welcomeMessage: "Your pack is ready."
  suggestedFirstTask: "Try: 'do something cool'"

3. Add skills in skills/your-skill/SKILL.md 4. Add openclaw.plugin.json (use unscoped ID):

{
  "id": "pack-yourpack",
  "name": "Your Pack",
  "description": "Description of your pack",
  "version": "0.1.0",
  "skills": ["./skills"]
}

5. Add src/index.ts to register slash commands. Command handlers return { text: "..." }:

export function register(api: any) {
  api.registerCommand({
    name: "your_command",
    description: "Does something useful",
    handler: async () => {
      return { text: "Command output here" };
    },
  });
}

6. Add tsconfig.json:

{
  "extends": "../../tsconfig.base.json",
  "compilerOptions": { "outDir": "dist", "rootDir": "src" },
  "include": ["src"],
  "exclude": ["src/__tests__"]
}

7. Run ./scripts/deploy.sh to deploy all plugins, or manually copy the built pack to /data/openclaw/extensions/pack-yourpack and run npm install --omit=dev --ignore-scripts --legacy-peer-deps if it has runtime dependencies. Enable in openclaw.json.

Pack Manifest Reference

All fields for pack-manifest.yaml:

| Field | Type | Required | Description | |-------|------|----------|-------------| | packId | string | yes | Unique pack identifier | | displayName | string | yes | Human-readable name | | capabilities.required | string[] | yes | Capabilities the pack needs to function (keep minimal — only free/universally available) | | capabilities.optional | string[] | yes | Capabilities that enhance the pack (paid integrations go here) | | preferredApps | Record\<pattern, string[]\> | no | Preferred app/toolkit per capability pattern | | fallbackOverrides | Record\<pattern, {adapters}\> | no | Override adapter order for specific capabilities | | preferences | Record\<string, PackPreference\> | no | User-configurable preferences captured at first use or onboarding | | sideEffects | string[] | no | Capabilities that should always be treated as side-effects | | onboarding.welcomeMessage | string | yes | Shown when pack is first activated | | onboarding.suggestedFirstTask | string | yes | Suggested prompt to try |

How Discovery Works

Each adapter implements probe() and execute():

  • Composio: Calls COMPOSIO_SEARCH_TOOLS with the capability's intent string. Returns the best matching toolkit and action.
  • OpenClaw Tool: Matches the capability's verb_noun against built-in tool names. Exact match only.
  • Lobster: Matches capabilities with _workflow suffix against registered Lobster workflows.
  • CLI: Checks cliMappings config for pattern match, then verifies binary exists via which.
  • MCPorter: Scans all configured MCP server tool lists for keyword matches.

Results are cached for 10 minutes (configurable). Cache is invalidated on execution failure.

Adding an Adapter

To add a new adapter:

1. Create src/adapters/your-adapter.ts implementing CapabilityAdapter:

  • probe(capabilityId, intent, hints?) — return a ProbeResult if you can handle this capability, or null
  • execute(capabilityId, providerDetails, args, packId) — run the capability using the details from your probe result

2. Register it in src/index.ts — add to the adapters array 3. Add its ID to the adapterOrder enum in openclaw.plugin.json 4. Write tests in src/__tests__/your-adapter.test.ts

The probe() method should be fast (no side-effects, <5s). Return connectionReady: false with a setupHint if the service needs configuration.

Deployment

Deploy Script

The scripts/deploy.sh script automates deployment following OpenClaw conventions:

# On the remote machine
git clone <repo-url> /root/.openclaw/clawdi-plugins
cd /root/.openclaw/clawdi-plugins
pnpm install
./scripts/deploy.sh /data/openclaw/extensions

The script:

  • Builds all packages
  • Reads each plugin's id from openclaw.plugin.json
  • Copies only deployment files (dist/, package.json, openclaw.plugin.json, skills/, pack-manifest.yaml)
  • Installs runtime dependencies per-plugin (npm install --omit=dev --ignore-scripts --legacy-peer-deps)
  • Safe to re-run — replaces each plugin directory on every run

To deploy a subset of packs, copy only the desired pack directories manually after building, or modify plugins.allow in openclaw.json to control which plugins load.

Plugin ID Convention

OpenClaw uses unscoped plugin IDs. The directory name under /data/openclaw/extensions/ should match the id field in openclaw.plugin.json:

/data/openclaw/extensions/
  knowledge-work-router/    → id: "knowledge-work-router"
  pack-sales/               → id: "pack-sales"
  pack-marketing/           → id: "pack-marketing"

Development

pnpm install          # Install dependencies
pnpm build            # Build all packages
pnpm test             # Run all tests

Monorepo layout:

packages/ router/ # Knowledge work router plugin (id: knowledge-work-router) pack-sales/ # Sales pack (id: pack-sales) pack-productivity/ # Productivity pack (id: pack-productivity) ... # 8 more packs docs/ superpowers/ # Specs and plans

Related plugins

Browse all →