summary
npx machina-cli add skill brsbl/ottonomous/summary --openclawScope: $ARGUMENTS
| Argument | Files to summarize |
|---|---|
(none) or branch | Branch diff: git diff main...HEAD --name-only |
staged | Staged changes: git diff --cached --name-only |
Workflow
| Phase | Purpose |
|---|---|
| 1. Analyze | Get changed files and diffs |
| 2. Read | Read changed files and their diffs |
| 3. Synthesize | Create semantic narrative from code and diffs |
| 4. Generate | Convert to HTML, open in browser |
1. Analyze Changes
Get changed files using scope command. If no changes found, report: "No changes to summarize."
git diff main...HEAD --name-only
2. Read Changes
For each changed file, read the file content and diff:
git diff main...HEAD -- <file>
Read the full file for context when the diff alone isn't sufficient to understand the change.
3. Synthesize Summary
Get repo info for links:
git remote get-url origin
Parse to get {org}/{repo} for GitHub links.
Generate semantic summary following this format:
# {Branch Name}
## Overview
{2-3 sentences: what this branch accomplishes from a business/feature perspective}
### Technical Implementation
{Integration points, architecture decisions, key patterns used}
### Key Review Areas
{What reviewers should focus on, potential risks, areas needing careful attention}
### What Changed
{High-level summary of functionality changes and why they matter}
## Semantic Changes by Component
### [src/auth/users.ts](https://github.com/{org}/{repo}/blob/{branch}/src/auth/users.ts)
- **Purpose of changes:** What problem does this solve or what feature does it add?
- **Behavioral changes:** How does the behavior differ from before?
- **Data flow impact:** How do these changes affect data flow through the system?
- **Performance considerations:** Changes to scan frequency, read/write patterns, potential bottlenecks
- **Subtle bug risks:** Race conditions, stale data, cache invalidation, timing issues introduced
- **Dependencies affected:** What other parts of the codebase might be impacted?
### [src/api/routes.ts](https://github.com/{org}/{repo}/blob/{branch}/src/api/routes.ts)
- **Purpose of changes:** ...
- **Behavioral changes:** ...
- **Data flow impact:** ...
- **Performance considerations:** ...
- **Subtle bug risks:** ...
- **Dependencies affected:** ...
## Breaking Changes
{If any exist - before/after comparison, migration path. Omit section entirely if none.}
## Files Changed
<details>
<summary>{count} files</summary>
| File | Summary |
|------|---------|
| [src/auth/users.ts](https://github.com/{org}/{repo}/blob/{branch}/src/auth/users.ts) | Added profile CRUD |
| [src/api/routes.ts](https://github.com/{org}/{repo}/blob/{branch}/src/api/routes.ts) | New profile endpoints |
**List every file individually — no wildcards.** Count must match table rows.
</details>
Key principles:
- Focus on "why" and "what it means" not just "what changed"
- Explain semantic meaning and implications
- Link to code in branch for easy navigation
- Per-component sections with consistent 6-field structure
- Highlight performance impacts: scan frequency changes, read/write pattern modifications
- Flag subtle bug sources: race conditions, stale data, cache issues, timing problems
- Breaking changes prominent if they exist
- Omit Breaking Changes section entirely if none exist
4. Generate HTML
Create directories:
mkdir -p .otto/summaries
Save markdown to .otto/summaries/{branch}-{date}.md
Convert to HTML using the md-to-html script:
node skills/summary/scripts/md-to-html.js .otto/summaries/{branch}-{date}.md .otto/summaries/{branch}-{date}.html
Open in browser:
open .otto/summaries/{branch}-{date}.html
Report:
Summary generated: .otto/summaries/{branch}-{date}.html
Overview
Synthesizes code docs into a user-facing HTML summary and explains what changed and why it matters. Use it to generate PR summaries, release notes, or change overviews that communicate business impact and technical context.
How This Skill Works
Follows a four-phase workflow: Analyze, Read, Synthesize, Generate. It analyzes changed files with git diff main...HEAD --name-only (or the staged scope), reads each changed file and its diff for context, synthesizes a semantic narrative explaining the changes, and finally converts the narrative to HTML saved under .otto/summaries and linked to code in GitHub using the repo URL parsed from git remote.
When to Use It
- Creating PR summaries for a feature branch
- Generating release notes or changelogs
- Providing change overviews for stakeholders
- Documenting per-component changes with direct code links
- Reviewing large diffs where context and rationale matter
Quick Start
- Step 1: Analyze Changes — git diff main...HEAD --name-only (or git diff --cached --name-only for staged)
- Step 2: Read Changes — git diff main...HEAD -- <file> to inspect each modification
- Step 3: Generate HTML — parse repo URL, synthesize the semantic narrative, save to .otto/summaries/{branch}-{date}.md and convert to HTML with the md-to-html.js script
Best Practices
- Run against the branch or staged changes scope to target the correct diffs
- Read full file content when the diff alone isn’t sufficient to understand intent
- Focus the narrative on why the change matters and its business impact
- Include per-component sections with GitHub links to the relevant files
- Flag potential breaking changes or performance implications for reviewers
Example Use Cases
- PR summary for branch feature/auth updating authentication endpoints
- Release notes for v2.3.0 highlighting changes to API routes
- Changelog entry describing a performance note in data fetch path
- Stakeholder overview for a UI refactor affecting user flows
- Backend change summary covering src/auth/users.ts and src/api/routes.ts