Get the FREE Ultimate OpenClaw Setup Guide β†’

create-type

npx machina-cli add skill brennacodes/brenna-plugs/create-type --openclaw
Files (1)
SKILL.md
5.3 KB
<purpose> Create custom deliverable types that extend heres-the-thing beyond the builtin types. Each type defines a template, output format, required tools/MCP servers/external binaries, and instructions for the deliverable agent.

Custom types are registered in ~/.things/heres-the-thing/deliverable-types/index.json and can be included in any campaign goal's deliverables list. </purpose>

<steps> <step id="load-config" number="1"> <description>Load Configuration</description>
<load-config>
Resolve the user's home directory (run `echo $HOME` via Bash). Use this absolute path for all file operations below -- never pass `~` to the Read tool.

1. Read `<home>/.things/config.json`
   <if condition="config-missing">Tell the user: "Run `/things:setup-things` first." Then stop.</if>

2. Read `<home>/.things/heres-the-thing/deliverable-types/index.json`
   <if condition="types-missing">Tell the user: "Run `/heres-the-thing:setup-htt` first." Then stop.</if>
</load-config>
</step> <step id="gather-type-info" number="2"> <description>Gather Type Information</description>
Use AskUserQuestion to gather:

1. **Name**: What should this deliverable type be called? (e.g., "Executive One-Pager", "Stakeholder Update Email", "Decision Matrix")

2. **Description**: What does this deliverable produce? What's it for?

3. **Output format**: What format should the output be in?
   <options>
   - md (Markdown)
   - pdf (PDF -- requires external tool)
   - html (HTML)
   </options>

4. **Template**: Do you have a template for this type?
   <options>
   - Yes -- I'll provide template content
   - No -- the instructions are enough
   </options>

   <if condition="has-template">
   Ask the user to provide the template content. This can be a markdown structure, HTML template, etc.
   </if>

5. **Instructions**: How should the deliverable agent use the strategy brief and campaign context to produce this deliverable? Be specific about structure, tone, length, and any special considerations.

6. **Required tools**: Which Claude Code tools does this type need?
   - Write (always included)
   - Bash (specify commands, e.g., `Bash(wkhtmltopdf)`)
   - Any others

7. **Required MCP servers**: Does this type need any MCP servers? (e.g., for Google Docs integration)

8. **Required external binaries**: Does this type need any external programs installed? (e.g., `wkhtmltopdf`, `pandoc`)
</step> <step id="validate-requirements" number="3"> <description>Validate Requirements</description>
<if condition="has-external-requirements">
For each declared external binary:

```bash
which <binary> 2>/dev/null && echo "found" || echo "missing"
```

<if condition="binary-missing">
Warn the user: "<binary> is not installed. This deliverable type will fail if used without it. Install it first, or continue anyway?"
</if>
</if>

<if condition="has-mcp-requirements">
Note: MCP server availability cannot be validated at registration time. The deliverable agent will check at runtime.
</if>
</step> <step id="generate-id" number="4"> <description>Generate Type ID</description>
Generate a type ID from the name: lowercase, underscores, no special characters. (e.g., "Executive One-Pager" β†’ `exec_one_pager`)

<check name="no-duplicate">Check that this ID doesn't already exist in the type registry.</check>
<if condition="duplicate">Ask the user to choose a different name or confirm overwrite.</if>
</step> <step id="write-template" number="5"> <description>Write Template File</description>
<if condition="has-template">
<output-path>`<home>/.things/heres-the-thing/deliverable-types/<type-id>.md`</output-path>

Write the template content provided by the user.
</if>
</step> <step id="register-type" number="6"> <description>Register Type</description>
Read `<home>/.things/heres-the-thing/deliverable-types/index.json`.

Add the new type:

```json
{
  "<type-id>": {
    "id": "<type-id>",
    "name": "<name>",
    "description": "<description>",
    "builtin": false,
    "template": "<type-id>.md or null",
    "output_format": "<format>",
    "requires": {
      "tools": ["Write", "<additional tools>"],
      "mcp_servers": ["<servers or empty>"],
      "external": ["<binaries or empty>"]
    },
    "instructions": "<instructions>"
  }
}
```

Write the updated index.json.
</step> <step id="confirm" number="7"> <description>Confirm</description>
<completion-message>
Custom deliverable type registered:

- ID: `<type-id>`
- Name: <name>
- Output: <format>
- Template: <yes/no>
- Requirements: <tools>, <mcp_servers>, <externals>

Use it in campaigns by adding `"<type-id>"` to a goal's `deliverables` list.
</completion-message>
</step> </steps>

Source

git clone https://github.com/brennacodes/brenna-plugs/blob/main/plugins/heres-the-thing/skills/create-type/SKILL.mdView on GitHub

Overview

Create new deliverable types that extend the built-in options in Hers-the-Thing. Each type defines a template, output format, required tools, MCP servers, external binaries, and concrete agent instructions. Custom types are registered in ~/.things/heres-the-thing/deliverable-types/index.json and can be included in any campaign's deliverables.

How This Skill Works

A guided flow collects type metadata (name, description, output format, template, instructions, required tools, MCP servers, and binaries). It validates uniqueness, generates a standardized type ID, and registers the type so campaigns can reference it in their deliverables.

When to Use It

  • You need a recurring deliverable type (e.g., Executive One-Pager or Stakeholder Update Email) beyond builtin options.
  • You want to add a custom Decision Matrix deliverable with a specific format and structure.
  • You’re extending Hers-the-Thing with a new, template-driven type for a campaign.
  • You must specify required tools and external binaries for the deliverable type (e.g., wkhtmltopdf, pandoc).
  • You want the new type to be reusable across multiple campaigns by referencing its ID.

Quick Start

  1. Step 1: Run the create-type flow and provide a name, description, and desired output format.
  2. Step 2: If available, paste a template; otherwise provide detailed instructions for structure and tone.
  3. Step 3: List required tools, MCP servers, and any external binaries, then confirm and register the type.

Best Practices

  • Choose a descriptive, unique name and a focused description for easy reuse.
  • Decide the output format up front (md, pdf, html) to align tooling.
  • List all required tools and external binaries explicitly to avoid runtime failures.
  • Provide a concrete template or clear instructions on structure, tone, and length.
  • Verify the type ID is unique and register it in ~/.things/heres-the-thing/deliverable-types/index.json.

Example Use Cases

  • Executive One-Pager
  • Stakeholder Update Email
  • Decision Matrix
  • Project Brief
  • Weekly Status Report

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers β†—