Skip to content
Content
Skill

/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,

From plugin
respira-wordpress-skills
5155 skills

Claude Code

$ npx -y skills add respira-press/agent-skills-wordpress --skill activity-report-composer --agent claude-code

SKILL.md

activity-report-composer.SKILL.md
name: activity-report-composer
description: "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."
license: MIT
metadata:
  author: Respira for WordPress
  author_url: https://respira.press
  version: 1.1.0
  mcp-server: respira-wordpress
  category: reporting

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:

{
  "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)

# Activity Report: {client_name} — {window}

**{hoursSaved}h of work saved
Read more
@respira-press
Ships withrespira-wordpress-skills

The community hub for WordPress AI workflows. Skills that run inside Claude Code, Codex, Antigravity, Cursor, and any AI agent that supports Skills + MCP to analyze, audit, optimize, and fix WordPress sites. Built by the community. Curated by Respira.

Stars on GitHub

Momentum

stars in total
51
Star history of respira-press/agent-skills-wordpress on GitHub, a chart by star-history.com

Other skills on respira-wordpress-skills.

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

officecli12d33k
@iofficeai@iofficeaiInstall Skill

Questions about activity-report-composer.

Which coding agents can use activity-report-composer?
activity-report-composer installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.