Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not…

MITAuto-check passedAgent Workflows

Install Dev Report

skills CLI
$ npx skills add ccplugins/awesome-claude-code-plugins --skill dev-report -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ccplugins/awesome-claude-code-plugins dev-report --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ccplugins/awesome-claude-code-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dev-report .claude/skills/dev-report && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dev-report
GitHub stars
967
Token cost
~3.1k tokens
SKILL.md length
1,933 words
Files
10 (incl. references)
Skills in repo
68
Repo updated
First seen
Licence
MIT

At a glance

Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not…

  • Works in 3 steps: Gather → Structure → Craft
  • Directly asks for a stakeholder-facing write-up of the session (write today up for my PM
  • SKILL.md covers Invocation, Who you are writing for, Output language and Step 1 — Gather, plus 5 more sections
  • Calls git

What it does

Dev Report is an agent skill from ccplugins/awesome-claude-code-plugins. Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not read code. Use ONLY when explicitly invoked, either through the /dev-report slash command or one of its localized aliases (/개발보고 and similar), or when the user directly asks for a stakeholder-facing write-up of the session ("write today up for my PM", "explain this session for a non-developer", "개발 보고서 써줘"). Do NOT…

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including reference files (for example `.claude-plugin/plugin.json`, `README.md` and `commands/dev-report.md`).

It sits in Agent Workflows, covering Hooks and plugins. The repository describes itself as: Awesome Claude Code plugins — a curated list of slash commands, subagents, MCP servers, and hooks for Claude Code. The licence is MIT.

When your agent uses it

  • Directly asks for a stakeholder-facing write-up of the session (write today up for my PM
  • Explain this session for a non-developer
  • An ordinary what did you just do? — that wants a short plain answer

Example prompts

  • “write today up for my PM”
  • “explain this session for a non-developer”
  • “what did you just do?”
  • “/dev-report”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Gather
  2. Structure
  3. Craft

What it can do on your machine

Read from SKILL.md and the folder at commit 5bd4f16. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dev Report loads about 3.1k tokens when it runs, and up to ~9.1k if it reads all its reference files. Until then it costs about 155 tokens; SKILL.md has 1,933 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~155
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ccplugins/awesome-claude-code-plugins at commit 5bd4f16, republished under its MIT licence (© ccplugins). 1,933 words, ~3,095 tokens.

Download SKILL.mdSave it as .claude/skills/dev-report/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
dev-report
description
Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not read code. Use ONLY when explicitly invoked, either through the /dev-report slash command or one of its localized aliases (/개발보고 and similar), or when the user directly asks for a stakeholder-facing write-up of the session ("write today up for my PM", "explain this session for a non-developer", "개발 보고서 써줘"). Do NOT trigger on an ordinary "what did you just do?" — that wants a short plain answer, not a report.

Dev Report

Turn a work session into a report a non-technical stakeholder can actually act on.

Invocation

This skill is explicit-only. It runs when the user calls /dev-report, a localized alias of it, or asks in plain words for a stakeholder-facing write-up. A casual "what did you just do?" is not an invocation — answer that normally.

Anything the user types after the command is a scope or focus hint: /dev-report this week, /dev-report just the auth work, /dev-report 짧게. With no hint, report on the current conversation session. Honor a length or emphasis hint over this skill's defaults — they know their reader.

Who you are writing for

A product owner, founder, or PM who decides priorities and budget but does not read code. Increasingly they did prompt this code into existence themselves ("vibe coding"), so they know the product vocabulary and about half the technical vocabulary — with gaps they can't see and won't announce.

The failure mode to avoid is not "too technical." It is technical words with no referent. A non-developer can follow arbitrarily deep reasoning as long as every noun in it has been given a meaning first. So: go deep on the logic, and pay for each new term the moment you introduce it.

Two things they need that a peer-to-peer standup would skip:

  • Consequence. Not "the sanitizer stripped the anchors" but "every internal link in that article was deleted before it went live, which is why the article shipped with none."
  • Confidence level. Which claims you measured, which you inferred, which you haven't checked. They will make decisions on this, so an unlabeled guess is worse than no answer.

Output language

Write the report in the language of the message that invoked the skill. /dev-report 이번 주 작업 정리해줘 → Korean. /dev-report with no text → the language the conversation has been in.

Keep these verbatim in their original form regardless of output language: file paths, function and variable names, commands, log lines, error messages, branch and commit names, product and vendor names. The reader needs to paste them into a search box or say them to someone else — a translated identifier is a broken one.

When a technical term has no natural equivalent in the output language, use the English term and gloss it once in the reader's language, then keep using the English term.

Step 1 — Gather

The conversation is the primary source. It holds what git cannot: why this work was chosen, what was tried and abandoned, what the user corrected you on, what a number actually meant. Reconstruct from it first.

Then corroborate the facts a report will be judged on:

bash
git log --oneline -15
git diff --stat HEAD~1        # or the session's base commit
git status --short

Check specifically how far each change actually got, because these are four different states and stakeholders routinely hear the last one when you said the first:

StateHow to say it
Edited on disk, not committed"changed locally, not saved to the repo yet"
Committed"in the repo, not on the server"
Pushed / merged"in the shared repo"
Deployed and observed working in the real environment"live, and I saw it work"

If tests ran, quote the real result line. If a deploy happened, say what you observed afterward — not what you expect.

Do not invent a section's content. If the session produced no numbers, the numbers section is omitted and the honesty section says measurement is missing.

Step 2 — Structure

Use these sections in this order. Omit any section that has no real content rather than padding it — a feature-build session usually has no "why it happened," a bug-fix session usually has no "what we built."

Render the headings in the output language; the names below are descriptions, not literal text.

Put the section's emoji at the front of its heading, as shown below — one per heading, and nowhere else in the report. They give a long report a spine the reader can scroll by: the eye finds the numbers table and the honesty section without reading. Emoji scattered through body text does the opposite, turning a report into a chat message. If a session needs a section beyond these eight, pick one in the same register (a timeline section takes 📅).

1. 📌 One-line summary. What this session actually turned out to be. If there is a gap between what it was supposed to be and what it became, that gap is the summary — it is the most decision-relevant fact you have.

"This was supposed to be a cleanup day for stale checklist items. It turned into finding and fixing a bug that had been silently shipping broken articles for five days."

2. 🎯 Why we started here. What was blocking, what the state was before, why this was the right first move. Without this, everything after it reads as random activity, and a stakeholder who can't see the reason will assume there wasn't one.

3. 🔍 What we found / what we built. Lead with the concrete artifact — the log line, error text, or number — quoted verbatim — then explain what it means. Evidence before interpretation, because a stakeholder who only ever gets your interpretation has no way to tell analysis from storytelling.

Define each unfamiliar term at first use, in one clause, then use the real term freely for the rest of the report.

"SEO optimization complete — internal links 0 kept, 11 fabricated URLs removed. Internal links are links from one of your articles to another; Google reads them as a map of what your site covers, and they keep readers on the site. Eleven were planned. Zero survived."

4. 🧩 Why it happened / how it works. The causal chain, told as a sequence rather than a list. Each step should make the next one feel inevitable.

Name the component that behaved correctly, not just the broken one. Without that, the reader concludes the whole system is unreliable and starts distrusting parts that are fine.

"The sanitizer did exactly its job — it deletes links to pages that don't exist, and /some-slug genuinely 404s. The mistake was one layer upstream: nobody had told the writer that real URLs on this site start with /blog/."

5. 🔧 How we solved it, and why this way. ← the centerpiece

This is the section the reader values most and the one most reports skip. Give it the most words. Cover:

  • The mechanism, in plain terms — what the code now does, step by step, in the order it does it.
  • The alternative you rejected, and what would have gone wrong. This is what makes it a report from an engineer rather than a status line. It also lets a non-technical reader audit your judgment without reading code, which is the only lever they have.
  • Why multiple changes instead of one, if there were several. Untangle root-cause fixes from defenses; a reader who thinks two fixes means one didn't work will lose confidence in both.
  • What the change deliberately does not do. Scope boundaries prevent a stakeholder from assuming a class of problem is now solved.

"Two changes, doing different jobs. The first is the root cause: the plan handed to the writer now carries real full URLs instead of bare slugs, so there's nothing left to guess at. The second is a safety net: if the writer still marks a link the wrong way, we now convert it instead of deleting it — but only after confirming that page actually exists on the site. I didn't want the net alone, because that would have left the writer permanently guessing and the net silently covering for it; the day the net had a gap, we'd be back here. And I didn't want the root fix alone, because it only holds as long as the model follows instructions, which is not a guarantee you can build on."

Show full SKILL.md (652 more words)Show less

6. 📊 Numbers. A compact table, before/after, with the sample size next to every rate. 100% over three articles is a very different claim from 100% over three hundred, and the reader cannot tell them apart unless you show the denominator.

7. 🧪 What is verified, what is assumed, what is untested. Three explicit buckets, said out loud. This is what makes the rest of the report trustworthy — a reader who has seen you volunteer your own gaps can believe the parts you state flatly.

"Verified: the fix works on the article I ran it on — 9 links survived, checked in the live page source. Assumed: it behaves the same for other accounts, since they share the same code path, but I only ran one. Not tested: the premium writing engine — that run fell back to the standard one, so that path is still unproven."

8. 🚀 What's next, and what I need from you. Separate what you'll do on your own from decisions only they can make (spending money, granting access, approving a tradeoff, choosing priority). Make the asks specific enough to answer in one sentence.

Step 3 — Craft

These are the moves that make the difference between a report that gets read and one that gets skimmed.

Attach analogies, don't substitute them. "A migration is a numbered instruction for changing the shape of the database — like a renovation permit, filed in order" keeps the real word available. "Think of it as a renovation permit" alone leaves the reader unable to search for it or repeat it to anyone else. They will need to do both.

Every quantity needs a denominator and a unit. "Faster" → "45 seconds instead of 5 minutes." "Most articles" → "7 of 9."

Say what you don't know, in the same voice as what you do. No hedging garnish on facts, no false confidence on guesses. "I don't know why that one failed; I haven't reproduced it yet" is a complete and acceptable sentence.

Explain a failure without assigning blame to a person or a model. Describe the missing piece of information, not the actor's shortcoming. It reads as diagnosis instead of excuse and is usually more accurate anyway.

Time-box the reading. If the report runs long, the one-line summary and the numbers table should be enough on their own for a reader who stops after 30 seconds.

What not to do

Anti-patternWhy it fails
Pasting diffs, file trees, or long code blocks as the bodyThe reader can't read them; it signals you didn't do the translation work. Quote a single line only when it is the evidence.
"Refactored X for better maintainability"No observable consequence. If nothing changed for the product, say what it buys and when.
A flat bullet list of changed filesRemoves causality, which is the entire value of the report.
Percentages with no sample sizeReads as a stronger claim than the data supports.
"Fixed and deployed" when it was committedThe single fastest way to lose a stakeholder's trust. See the states table in Step 1.
Opening with "I'll explain what we did today"The report is the explanation. Start with the summary.
Apologizing for the bug, or dwelling on the mistakeThey want the state of the system, not contrition. One clause on cause, then move to the fix.

Length

Proportional to the session. A single-thread session lands around 600–1,200 words; a session with several independent threads runs longer, with each thread getting its own pass through sections 3–5. Never pad to look thorough — an omitted section reads as discipline, a padded one reads as noise.

Reference files

  • references/craft.md — deeper treatment of the explanation techniques, with before/after rewrites. Read when a draft feels technically correct but flat, or when you're unsure how to unpack a specific concept.
  • references/examples.md — two full worked reports (Korean and English). Read when starting your first report, or to calibrate depth on the "how we solved it" section.

© ccplugins, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (references) in plugins/dev-report of ccplugins/awesome-claude-code-plugins.

  • SKILL.md
  • .claude-plugin/plugin.json
  • LICENSE
  • README.md
  • commands/dev-report.md
  • commands/localized/informe-desarrollo.md
  • commands/localized/開発報告.md
  • commands/localized/개발보고.md
  • references/craft.md
  • references/examples.md

Open the folder on GitHubat commit 5bd4f16

Compare with similar skills

Dev Report next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dev Report compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dev Report this skillccplugins/awesome-claude-code-plugins967—~3.1kAutomated safety check: PassMIT
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official37k11 repos~4.1kAutomated safety check: NotesApache-2.0
Claude Code Agent Developmentanthropics/claude-plugins-official37k8 repos~2.8kAutomated safety check: PassApache-2.0
Claude Code Skill Developer Guidediet103/claude-code-infrastructure-showcase10k10 repos~3.5kAutomated safety check: PassMIT
Plugin Settings Patternanthropics/claude-plugins-official37k7 repos~3kAutomated safety check: PassApache-2.0
MCP Integration for Pluginsanthropics/claude-plugins-official37k11 repos~3.1kAutomated safety check: PassApache-2.0

Similar skills

  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    37k GitHub starsUsed in 11 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Claude Code Agent Development

    anthropics/claude-plugins-official

    Official

    Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.

    37k GitHub starsUsed in 8 repos~2.8k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Skill Developer Guide

    diet103/claude-code-infrastructure-showcase

    A guide to creating and managing Claude Code skills with auto-activation: skill-rules.json triggers, hooks, enforcement levels, YAML frontmatter and progressive disclosure.

    10k GitHub starsUsed in 10 repos~3.5k tokens
    Agent WorkflowsAuto-check passed
  • Plugin Settings Pattern

    anthropics/claude-plugins-official

    Official

    Shows how Claude Code plugins keep per-project settings and state in .claude/plugin-name.local.md files with YAML frontmatter and a markdown body.

    37k GitHub starsUsed in 7 repos~3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    37k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Command Development

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code slash commands: Markdown files with YAML frontmatter, arguments, file references, bash context and interactive prompts.

    37k GitHub starsUsed in 10 repos~4.8k tokens
    Agent WorkflowsAuto-check passed

More from ccplugins/awesome-claude-code-plugins

All 68 skills in this repo
  • AI Meeting

    ccplugins/awesome-claude-code-plugins

    Run structured AI meetings for plans, product ideas, technical designs, business decisions, feature proposals, and strategy choices.

    967 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check: notes
  • Fastapi App

    ccplugins/awesome-claude-code-plugins

    Bootstrap a new FastAPI backend with async SQLAlchemy 2.0, asyncpg, Alembic, Pydantic v2, and no deprecated APIs.

    967 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: notes
  • Flutter App

    ccplugins/awesome-claude-code-plugins

    Bootstrap a new Flutter mobile app with clean architecture, Riverpod, FVM-pinned SDK, current packages, and no deprecated APIs.

    967 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: notes
  • Nextjs App

    ccplugins/awesome-claude-code-plugins

    Bootstrap a new Next.js (App Router, TypeScript) web app with current packages and no deprecated APIs.

    967 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: notes
  • Difesa Attacchi

    ccplugins/awesome-claude-code-plugins

    Aggiunge a un sito/app un agente di difesa che rileva e blocca richieste malevole (SQL injection, XSS, path traversal, brute force, bot) con rate limiting, blocklist IP e modalità lockdown che…

    967 GitHub stars~781 tokensUpdated 1 mo ago
    Auto-check passed
  • Audit

    ccplugins/awesome-claude-code-plugins

    A skill your agent uses when the user asks for a code review, "review this change", "review my PR", "review the diff", or wants quality/spec/security/perf feedback on recent changes.

    967 GitHub stars~719 tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Dev Report

What does Dev Report do?

Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not…. Dev Report is an agent skill from ccplugins/awesome-claude-code-plugins. Write up a coding session for a non-technical stakeholder — the context, what was built, and the engineering reasoning behind it — the way a senior engineer briefs a product manager who does not read code.

When should I use Dev Report?

Dev Report fits situations like: directly asks for a stakeholder-facing write-up of the session (write today up for my PM; explain this session for a non-developer; an ordinary what did you just do? — that wants a short plain answer.

How do I install Dev Report in Claude Code?

Run `npx skills add ccplugins/awesome-claude-code-plugins --skill dev-report -a claude-code`. Or copy the skill folder (plugins/dev-report in ccplugins/awesome-claude-code-plugins) into .claude/skills/dev-report in your project. Claude Code loads it when a task matches its description.

How do I install Dev Report in Codex?

Run `npx skills add ccplugins/awesome-claude-code-plugins --skill dev-report -a codex`. Or copy the skill folder (plugins/dev-report in ccplugins/awesome-claude-code-plugins) into .agents/skills/dev-report in your project. Codex loads it when a task matches its description.

Can I use Dev Report in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ccplugins/awesome-claude-code-plugins --skill dev-report -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dev-report, .gemini/skills/dev-report, .github/skills/dev-report and .opencode/skills/dev-report in your project.

What does Dev Report need to run?

Going by SKILL.md and its folder, Dev Report needs the command-line tools its instructions call (git).

Does Dev Report access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Dev Report safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Dev Report use?

Dev Report is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dev Report use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.

What are the alternatives to Dev Report?

Skills that share tags, products or a category with Dev Report: Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 37k stars), Claude Code Agent Development (anthropics/claude-plugins-official, 37k stars), Claude Code Skill Developer Guide (diet103/claude-code-infrastructure-showcase, 10k stars) and Plugin Settings Pattern (anthropics/claude-plugins-official, 37k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dev Report?

ccplugins (a GitHub organization) maintains it in ccplugins/awesome-claude-code-plugins, which has 967 GitHub stars. The repository holds 68 skills in this directory. The repository was last updated on August 12, 2026.

Source: ccplugins/awesome-claude-code-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.