Activity Report Composer logo

Activity Report Composer

Organization
respira-press
activity-report-composer

Use when the user asks for a client report, a monthly or activity report, a case study draft, or says 'what did i ship this month'. Turns the site audit log into a written report in one of six framings: agency client report, case study, internal recap, testimonial draft, build-in-public, personal recap.

Overview

Publisherrespira-press
Repositoryagent-skills-wordpress
Skill nameactivity-report-composer
Stars
50
Forks
8
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by respira-press on GitHub. Read the source before you install it.

Installation

Install the Activity Report Composer AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/respira-press/agent-skills-wordpress/tree/main/skills/activity-report-composer
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/respira-press/agent-skills-wordpress.git /tmp/agent-skills-wordpress
mkdir -p .claude/skills
cp -r /tmp/agent-skills-wordpress/skills/activity-report-composer .claude/skills/activity-report-composer
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Activity Report Composer in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Activity Report Composer on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Activity Report Composer is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Activity Report Composer

Version: 1.1.0 Updated: 2026-09-13 Category: reporting Status: stable Requires: Respira for WordPress plugin 9.0+ for the tool, 7.1+ through respira_invoke_ability + MCP server


Description

Turn the audit log of work done on a WordPress site into a polished, written report. This skill wraps respira_generate_activity_report (plugin 9.0 and later list it as a tool; on older plugins call respira_invoke_ability with ability: "respira/generate-activity-report" and the same arguments under args), which returns structured data (totals, top tools used, hours saved, cost saved at agency rate, highlights). The skill then walks the agent through writing that data into one of six framings.

The six framings:

  1. Agency client report — formal, results-focused, addressed to the client
  2. Case study — third-person narrative for marketing, anonymize-toggle available
  3. Internal recap — for team standups, terse, what shipped + what's next
  4. Testimonial draft — first-person, optimized as a customer quote
  5. Build in public — public-facing, social-media-shaped, what got done this week
  6. Personal recap — for the operator's own records, no marketing varnish

When to Use

  • End of month — generate a client report for billing
  • Quarterly review — build-in-public summary for socials
  • Pitching a case study to a prospect
  • Capturing testimonial language while the work is fresh
  • Internal weekly review for an agency team

Trigger Phrases

  • "generate a client report"
  • "make a monthly report"
  • "activity report"
  • "compose an activity report"
  • "build an agency client report"
  • "draft a case study from this site"
  • "build-in-public summary"
  • "internal recap"
  • "what did i ship this month"
  • "client billing report"

Execution Workflow

Step 1 — Confirm site + window

Call respira_get_active_site. Ask the user which window to summarize: default is the last 30 days. Common windows: 7 days (weekly), 30 days (monthly), 90 days (quarterly).

Step 2 — Confirm framing

Ask the user which of the six framings to use. If they don't say, recommend based on the trigger phrase ("client report" → agency client report; "build in public" → build in public framing). Default if unspecified: agency client report.

Step 3 — Pull the structured data

Call respira_generate_activity_report with window_days (or start_date and end_date) and framing (agency_client_report, agency_case_study, personal_recap, team_report, testimonial_draft or build_in_public). Add client_name for a client report and anonymize: true for anything that will be published. If the tool is not in the list, the plugin is older than 9.0: call respira_invoke_ability with ability: "respira/generate-activity-report" and the same arguments under args. The tool returns:

json
{
  "client": "string",
  "window": "30 days",
  "framing": "agency_client_report",
  "hoursSaved": "5.1",
  "costSaved": {"amount": "408", "currency": "EUR"},
  "totals": {"edits": 42, "pages": 14, "snapshots": 27, "rollbacks": 2},
  "topTools": [
    {"name": "respira_update_module", "scope": "write", "n": 14},
    {"name": "respira_extract_builder_content", "scope": "read", "n": 23}
  ],
  "notes": ["Migrated 14 blog posts to /journal/...", "..."]
}

Step 4 — Compose the report in the chosen framing

Write the report using the framing's voice:

Agency client report — addressed to the client by name, leads with the headline number (hours saved, cost saved), then the work summary, then next steps. Professional, no informalities.

Case study — third-person narrative. "Acme Inc. reduced their content production time by 40% in 30 days using Respira-augmented AI workflows." Anonymize toggle: if enabled, replace the client name with "a B2B SaaS company" or similar. Anonymize all identifying details in the highlights.

Internal recap — bullets, no narrative. "42 edits, 14 pages touched, 0 rollbacks. Top time-saver: bulk Divi module updates. Next: ship the pricing page redesign."

Testimonial draft — first-person, in the operator's voice, framed as a quote. "In the last 30 days I saved 5 hours of agency time on [client] thanks to Respira's snapshot-first edits. We shipped 14 pages with zero rollbacks."

Build in public — punchy, social-shaped. "This week on Respira: 42 edits across 14 client pages, 5 hours saved, 0 rollbacks. The agent took a swing, snapshotted before every change, and not once did I have to undo it. Here's what landed →"

Personal recap — terse log entry for the operator's own notes. Date, totals, what got done, what was hard, what's next. No marketing voice.

Step 5 — Offer three output formats

After the report is composed, ask the user which output they want:

  • Markdown — for pasting into a doc, Notion, Linear, email
  • Email-ready HTML — for sending directly through the agency's mail client
  • Social-shaped — short version for LinkedIn or X (build-in-public + testimonial framings only)

Step 6 — Save (optional)

Offer to save the report as a custom post type entry on the site (so it shows up in the Activity reports archive). Use respira_create_custom_post with post_type=respira_activity_report if that CPT exists.


Output template — Agency client report (example)

markdown
# Activity Report: {client_name} — {window}

**{hoursSaved}h of work saved · €{costSaved} at our standard rate**

## Summary

In the last {window}, {totals.edits} edits landed across {totals.pages} pages on {client_name}'s site. {totals.snapshots} snapshots were captured before any change, and {totals.rollbacks} were rolled back during review.

## What we did

{notes formatted as bullet list}

## Top operations

{topTools formatted as a small table — name, read/write, count}

## Next steps

{agent fills in — could be empty if no obvious next steps, or could reference open work}

---

Prepared by Respira for {client_name} · {date}

Anonymization rules (case-study framing only)

If the user selects case-study framing with anonymize ON:

  • Replace client name everywhere with industry descriptor ("a B2B SaaS company", "a Lisbon-based design agency", "a multi-location restaurant group")
  • Replace specific URLs with [client website]
  • Replace named pages with generic descriptors ("the pricing page", "the careers section", "a long-form sales landing page")
  • Replace named team members with role descriptors ("their head of marketing", "the founder")
  • Keep all numbers exact — they are the proof
  • Note "Customer data anonymized at customer's request" at the bottom

Hard rules

  • Never invent numbers. Every figure in the report comes from the respira_generate_activity_report response or from the totals counted in the audit log. If the data is empty, say so — do not pad.
  • Never name customers in the build-in-public or social outputs unless the user explicitly OKs it for this specific report. Default to "a client" or "an agency I work with."
  • The hours-saved + cost-saved numbers in the structured data already factor in the operator's stated rate. Do not multiply or convert them.
  • Reports are an output, not a record. They live in the user's Markdown / email / dashboard, not in the audit log itself.

Telemetry

Records: site URL hash, framing chosen, window length, totals from the response, output format selected, success/failure. No report text, no client name, no notes are sent.

Endpoint: POST https://www.respira.press/api/skills/track-usage

Frequently asked questions

What does the Activity Report Composer AI skill do?

Use when the user asks for a client report, a monthly or activity report, a case study draft, or says 'what did i ship this month'. Turns the site audit log into a written report in one of six framings: agency client report, case study, internal recap, testimonial draft, build-in-public, personal recap.

Why use Activity Report Composer on TypingMind?

Because you install it once and use it with any model. Activity Report Composer is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Activity Report Composer in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/respira-press/agent-skills-wordpress/tree/main/skills/activity-report-composer. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Activity Report Composer?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Activity Report Composer?

As many as you like. As long as a model supports skills, you can use Activity Report Composer with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Activity Report Composer AI skill free?

Yes. It is published on GitHub by respira-press under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇