What I do
- Create
.opencode/notes/ directory in the project if it doesn't exist
- Generate one timestamped markdown report file:
YYYY-MM-DD-HHmm-<description>.md
- Explain the user's problem, the proposed solution, and why the change matters
- Add enough project and code context for humans and other AI agents to review the work without digging deeply into the repository
- List changed files visible in git, grouped by created, modified, renamed, and deleted
- Capture a concise step-by-step work log describing what the agent inspected, decided, and changed
- Include per-file patch sections with fenced
diff blocks
- Use hybrid patch handling: full patches for small files, truncated patches for large files with a
git diff reference
- Record tests or validations that were run, if any
When to use me
Use this skill when:
- User asks for a report of the work completed
- User wants a self-contained handoff artifact for later continuation or review
- Agent finishes meaningful code, docs, or config changes and the result should be documented in one place
Report Workflow
Create directory:
mkdir -p .opencode/notes
Generate filename:
- Extract the main task from conversation context
- Format:
YYYY-MM-DD-HHmm-<brief-description>.md
- Example:
2026-04-01-1430-add-work-report.md
- Description should be kebab-case, concise, and no more than 4-5 words
- Fallback:
work-report
Gather task context:
- Identify the problem the user wanted solved
- Identify the scope of work the agent completed
- Summarize the proposed solution chosen by the agent
- Capture why this change matters to the user or project
Gather project context:
- Identify the subsystem, feature area, or workflow touched
- Summarize how the relevant part of the project worked before the change
- Note important constraints, conventions, or related files reviewers should know
- Include only context that helps understand or review the change; avoid dumping unrelated repo background
Detect file changes:
- If git repo: run
git status --short
- Parse statuses into created, modified, renamed, and deleted
- Prefer git-visible files over conversational guesses when both are available
- If not a git repo: extract changed files from the session/tool history and say so clearly in the report
Collect patches:
- For modified, renamed, and deleted files:
git diff -- <file>
- For staged new files:
git diff --cached -- <file> if needed
- For untracked new files: include key file content sections instead of an unavailable git diff
- Use full patch blocks for small diffs
- Use truncated patch blocks for large diffs and add
Run \git diff -- ` for the full patch.`
Capture concise thought process:
- Do not expose raw private chain-of-thought
- Write a short, observable step log instead
- Each step should describe:
- what was inspected or inferred
- what decision was made
- what change followed
- Keep it concise and factual
Write the report using the structure below
Confirm:
- Tell the user the report path
- Briefly mention the kind of context captured
Report Structure
# Work Report: <Descriptive Title>
**Date:** YYYY-MM-DD HH:mm
**Branch:** <current-branch> (only if git repo)
## Problem To Solve
<1-3 short paragraphs explaining what the user wanted solved>
## Why This Matters
<brief explanation of impact, motivation, or pain point>
## Proposed Solution
<concise explanation of the selected approach>
## Project Context
<self-contained context about the relevant part of the project, prior behavior, touched workflow, and key related files>
## What Changed
- <high-value change 1>
- <high-value change 2>
- <high-value change 3>
## Files Changed
### Created
- `path/to/new-file.ext` - <what role it plays>
### Modified
- `path/to/existing-file.ext` - <what changed and why>
### Renamed
- `old/path.ext` -> `new/path.ext` - <why>
### Deleted
- `path/to/old-file.ext` - <why removed>
(Only include sections that apply)
## Step-by-Step Work Log
1. Inspected `<file or area>` to understand <relevant behavior or constraint>.
2. Decided to <chosen approach> because <brief reason>.
3. Updated `<file>` to <change>.
4. Added or adjusted `<tests/docs/config>` to keep the change coherent.
## Patches Applied
### `path/to/file1.ext`
Role: <why this file matters to the change>
```diff
<full patch for small change, or truncated patch for large change>
Short explanation:
path/to/file2.ext
Role:
<patch>
... (patch truncated, run `git diff -- path/to/file2.ext` for the full patch)
Short explanation:
Validation
<command> -
- Manual check:
(Only include if validations were run)
Next Steps
(Only include if meaningful follow-up exists)
## Patch Handling Rules
- **Hybrid mode**:
- Include the full patch when the file diff is small and readable
- Truncate larger patches to the most relevant first section plus a clear `git diff` reference
- **Large diff threshold**:
- If a patch exceeds about 80 lines, truncate it unless the full patch is still easy to review
- **New untracked files**:
- Show the most relevant first 30-60 lines or key sections
- Make clear that the block is file content context when a git diff is unavailable
- **Binary files**:
- Do not dump binary output; describe the file and its role instead
- **Generated files**:
- Prefer summarizing their purpose unless the generated output itself is the important artifact
## File Change Detection
**With git:**
```bash
git status --short
Parse output:
M file.ext or MM file.ext -> Modified
A file.ext or ?? file.ext -> Created
R old.ext -> new.ext -> Renamed
D file.ext -> Deleted
Without git:
- Extract changed files from session context and tool usage
- State clearly:
Files listed from session activity because git status was unavailable.
Context Guidance
The report should be self-sufficient for review. Include enough context so a reviewer can understand:
- what the user asked for
- what part of the project was touched
- how the relevant code or workflow behaved before the change
- why the chosen approach is plausible
- where to look if something seems off
Do not try to summarize the entire project. Include only the context needed to review this work responsibly.
Edge Cases
- No files changed: Still write the report, focusing on analysis, plan, or investigation completed
- No git repo: Omit branch info and explain that file tracking came from session activity
- No validations run: Omit the
Validation section entirely
- No meaningful next steps: Omit the
Next Steps section entirely
- Multiple calls in one session: Create a new timestamped report each time
- Very large multi-file change: Keep the top-level summary compact and make each file subsection do the explanatory work
- Deleted file: Explain what replaced it or why it was no longer needed
Example Title And Filename
- Title:
Work Report: Add Self-Contained Change Reporting Skill
- Filename:
2026-04-01-1430-add-change-reporting.md
1---2name: work-report3description: Write a self-contained markdown report of the work done, changed files, concise decision steps, and applied patches4license: MIT5---67## What I do89- Create `.opencode/notes/` directory in the project if it doesn't exist10- Generate one timestamped markdown report file: `YYYY-MM-DD-HHmm-<description>.md`11- Explain the user's problem, the proposed solution, and why the change matters12- Add enough project and code context for humans and other AI agents to review the work without digging deeply into the repository13- List changed files visible in git, grouped by created, modified, renamed, and deleted14- Capture a concise step-by-step work log describing what the agent inspected, decided, and changed15- Include per-file patch sections with fenced `diff` blocks16- Use hybrid patch handling: full patches for small files, truncated patches for large files with a `git diff` reference17- Record tests or validations that were run, if any1819## When to use me2021Use this skill when:22- User asks for a report of the work completed23- User wants a self-contained handoff artifact for later continuation or review24- Agent finishes meaningful code, docs, or config changes and the result should be documented in one place2526## Report Workflow27281. **Create directory**:29 ```bash30 mkdir -p .opencode/notes31 ```32332. **Generate filename**:34 - Extract the main task from conversation context35 - Format: `YYYY-MM-DD-HHmm-<brief-description>.md`36 - Example: `2026-04-01-1430-add-work-report.md`37 - Description should be kebab-case, concise, and no more than 4-5 words38 - Fallback: `work-report`39403. **Gather task context**:41 - Identify the problem the user wanted solved42 - Identify the scope of work the agent completed43 - Summarize the proposed solution chosen by the agent44 - Capture why this change matters to the user or project45464. **Gather project context**:47 - Identify the subsystem, feature area, or workflow touched48 - Summarize how the relevant part of the project worked before the change49 - Note important constraints, conventions, or related files reviewers should know50 - Include only context that helps understand or review the change; avoid dumping unrelated repo background51525. **Detect file changes**:53 - If git repo: run `git status --short`54 - Parse statuses into created, modified, renamed, and deleted55 - Prefer git-visible files over conversational guesses when both are available56 - If not a git repo: extract changed files from the session/tool history and say so clearly in the report57586. **Collect patches**:59 - For modified, renamed, and deleted files: `git diff -- <file>`60 - For staged new files: `git diff --cached -- <file>` if needed61 - For untracked new files: include key file content sections instead of an unavailable git diff62 - Use full patch blocks for small diffs63 - Use truncated patch blocks for large diffs and add `Run \`git diff -- <file>\` for the full patch.`64657. **Capture concise thought process**:66 - Do not expose raw private chain-of-thought67 - Write a short, observable step log instead68 - Each step should describe:69 - what was inspected or inferred70 - what decision was made71 - what change followed72 - Keep it concise and factual73748. **Write the report** using the structure below75769. **Confirm**:77 - Tell the user the report path78 - Briefly mention the kind of context captured7980## Report Structure8182```markdown83# Work Report: <Descriptive Title>8485**Date:** YYYY-MM-DD HH:mm86**Branch:** <current-branch> (only if git repo)8788## Problem To Solve89<1-3 short paragraphs explaining what the user wanted solved>9091## Why This Matters92<brief explanation of impact, motivation, or pain point>9394## Proposed Solution95<concise explanation of the selected approach>9697## Project Context98<self-contained context about the relevant part of the project, prior behavior, touched workflow, and key related files>99100## What Changed101- <high-value change 1>102- <high-value change 2>103- <high-value change 3>104105## Files Changed106107### Created108- `path/to/new-file.ext` - <what role it plays>109110### Modified111- `path/to/existing-file.ext` - <what changed and why>112113### Renamed114- `old/path.ext` -> `new/path.ext` - <why>115116### Deleted117- `path/to/old-file.ext` - <why removed>118119(Only include sections that apply)120121## Step-by-Step Work Log1221. Inspected `<file or area>` to understand <relevant behavior or constraint>.1232. Decided to <chosen approach> because <brief reason>.1243. Updated `<file>` to <change>.1254. Added or adjusted `<tests/docs/config>` to keep the change coherent.126127## Patches Applied128129### `path/to/file1.ext`130Role: <why this file matters to the change>131132```diff133<full patch for small change, or truncated patch for large change>134```135136Short explanation: <what this patch accomplishes>137138### `path/to/file2.ext`139Role: <why this file matters to the change>140141```diff142<patch>143... (patch truncated, run `git diff -- path/to/file2.ext` for the full patch)144```145146Short explanation: <what this patch accomplishes>147148## Validation149- `<command>` - <result>150- Manual check: <result>151152(Only include if validations were run)153154## Next Steps1551. <follow-up step>1562. <follow-up step>1573. <follow-up step>158159(Only include if meaningful follow-up exists)160```161162## Patch Handling Rules163164- **Hybrid mode**:165 - Include the full patch when the file diff is small and readable166 - Truncate larger patches to the most relevant first section plus a clear `git diff` reference167- **Large diff threshold**:168 - If a patch exceeds about 80 lines, truncate it unless the full patch is still easy to review169- **New untracked files**:170 - Show the most relevant first 30-60 lines or key sections171 - Make clear that the block is file content context when a git diff is unavailable172- **Binary files**:173 - Do not dump binary output; describe the file and its role instead174- **Generated files**:175 - Prefer summarizing their purpose unless the generated output itself is the important artifact176177## File Change Detection178179**With git:**180```bash181git status --short182```183184Parse output:185- `M file.ext` or `MM file.ext` -> Modified186- `A file.ext` or `?? file.ext` -> Created187- `R old.ext -> new.ext` -> Renamed188- `D file.ext` -> Deleted189190**Without git:**191- Extract changed files from session context and tool usage192- State clearly: `Files listed from session activity because git status was unavailable.`193194## Context Guidance195196The report should be self-sufficient for review. Include enough context so a reviewer can understand:197- what the user asked for198- what part of the project was touched199- how the relevant code or workflow behaved before the change200- why the chosen approach is plausible201- where to look if something seems off202203Do not try to summarize the entire project. Include only the context needed to review this work responsibly.204205## Edge Cases206207- **No files changed**: Still write the report, focusing on analysis, plan, or investigation completed208- **No git repo**: Omit branch info and explain that file tracking came from session activity209- **No validations run**: Omit the `Validation` section entirely210- **No meaningful next steps**: Omit the `Next Steps` section entirely211- **Multiple calls in one session**: Create a new timestamped report each time212- **Very large multi-file change**: Keep the top-level summary compact and make each file subsection do the explanatory work213- **Deleted file**: Explain what replaced it or why it was no longer needed214215## Example Title And Filename216217- Title: `Work Report: Add Self-Contained Change Reporting Skill`218- Filename: `2026-04-01-1430-add-change-reporting.md`