doc-review
Review a .docx file and insert Word comments for typos, errors, formatting issues, and other feedback.
Skill by jasonbhorne
Chalk Labs
Need help deploying doc-review?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jasonbhorne-doc-review
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/doc-review
What's inside
- Skill name
doc-review- Description
- Review a .docx file and insert Word comments for typos, errors, formatting issues, and other feedback. Works for dissertations, proposals, reports, or any Word document.
- License
- MIT
- Instructions
- 174 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
Review a Word document and insert comments directly into the .docx file using python-docx and lxml XML manipulation.
Target file: $ARGUMENTS
## Modes
### 1. User-provided corrections
If the user provides a list of specific errors/corrections, insert a Word comment at each location in the document.
### 2. Full review (user says "full review" or similar)
Read the document and identify:
- Spelling errors and typos
- Grammar issues
- Inconsistent author name spellings
- Incomplete or malformed citations/references
- Template placeholder text that hasn't been filled in
- Tense inconsistencies
- Missing content (empty sections, placeholder tables)
- Formatting issues (inconsistent hyphenation, capitalization)
Then insert Word comments at each finding.
## How to insert Word comments
Use this Python approach with `python-docx` and `lxml`:
```python
from docx import Document
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from lxml import etree
from docx.opc.part import Part
from docx.opc.packuri import PackURI
# 1. Build the comments XML container
comments_xml = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:comments xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
</w:comments>'''
comments_element = etree.fromstring(comments_xml.encode('utf-8'))
# 2. For each comment, add to the XML and mark the paragraph
def add_comment_to_xml(comments_element, comment_id, author, date_str, text):
comment = etree.SubElement(comments_element, qn('w:comment'))
comment.set(qn('w:id'), str(comment_id))
comment.set(qn('w:author'), author)
comment.set(qn('w:date'), date_str)
p = etree.SubElement(comment, qn('w:p'))
r = etree.SubElement(p, qn('w:r'))
t = etree.SubElement(r, qn('w:t'))
t.text = text
t.set(qn('xml:space'), 'preserve')
def add_comment_markers(paragraph, search_text, comment_id):
"""Add commentRangeStart, commentRangeEnd, and commentReference to a paragraph."""
# Try to find search_text in individual runs first
found = False
for run in paragraph.runs:
if search_text.lower() in (run.text or "").lower():
comment_start = OxmlElement('w:commentRangeStart')
comment_start.set(qn('w:id'), str(comment_id))
run.element.addprevious(comment_start)
comment_end = OxmlElement('w:commentRangeEnd')
comment_end.set(qn('w:id'), str(comment_id))
run.element.addnext(comment_end)
ref_run = OxmlElement('w:r')
ref_rpr = OxmlElement('w:rPr')
ref_style = OxmlElement('w:rStyle')
ref_style.set(qn('w:val'), 'CommentReference')
ref_rpr.append(ref_style)
ref_run.append(ref_rpr)
comment_ref = OxmlElement('w:commentReference')
comment_ref.set(qn('w:id'), str(comment_id))
ref_run.append(comment_ref)
comment_end.addnext(ref_run)
found = True
break
if not found:
# Fallback: mark the whole paragraph
p_element = paragraph._element
comment_start = OxmlElement('w:commentRangeStart')
comment_start.set(qn('w:id'), str(comment_id))
p_element.insert(0, comment_start)
comment_end = OxmlElement('w:commentRangeEnd')
comment_end.set(qn('w:id'), str(comment_id))
p_element.append(comment_end)
ref_run = OxmlElement('w:r')
ref_rpr = OxmlElement('w:rPr')
ref_style = OxmlElement('w:rStyle')
ref_style.set(qn('w:val'), 'CommentReference')
ref_rpr.append(ref_style)
ref_run.append(ref_rpr)
comment_ref = OxmlElement('w:commentReference')
comment_ref.set(qn('w:id'), str(comment_id))
ref_run.append(comment_ref)
p_element.append(ref_run)
# 3. After all comments are built, attach the comments part to the document
def attach_comments_part(doc, comments_element):
comments_bytes = etree.tostring(comments_element, xml_declaration=True, encoding='UTF-8', standalone=True)
doc_part = doc.part
# Check for existing comments part
existing = None
for rel in doc_part.rels.values():
if 'comments' in rel.reltype:From jasonbhorne/claude-code-skills, MIT.
More from jasonbhorne/claude-code-skills
- 0.474score
image-prep
jasonbhorne
Batch-prep photos for communications (newsletters, decks, websites).
SkillCFreshness: CClaude Code +9 - 0.474score
job-finder
jasonbhorne
Find and rank current job openings for a friend or candidate.
SkillCFreshness: CClaude Code +9 - 0.471score
fantasy-football
jasonbhorne
AI-powered fantasy football assistant with draft prep, live draft, weekly matchup, and trade analysis modes.
SkillCFreshness: CClaude Code +9 - 0.471score
financial-advisor
jasonbhorne
Monthly personal financial analysis with XLSX dashboard and DOCX narrative report.
SkillCFreshness: CClaude Code +9 - 0.469score
blog
jasonbhorne
Write a short, punchy blog post for $AUTHOR_WEBSITE in the user's voice.
SkillCFreshness: CClaude Code +9 - 0.406score
notebooklm-pipeline
jasonbhorne
Automated NotebookLM pipeline: create notebook, add sources, then generate video podcast + report + infographic + slides in parallel.
SkillDFreshness: DClaude Code +9 - 0.406score
ai-paper-review
jasonbhorne
Review a student's "AI Leading and Learning" paper and insert Word comments with rubric-based feedback.
SkillDFreshness: DClaude Code +9 - 0.406score
dissertator
jasonbhorne
Review an university EDLD dissertation and insert Word comments with rigorous, constructive feedback.
SkillDFreshness: DClaude Code +9 - 0.406score
fact-check
jasonbhorne
Fact-check a .docx file for internal consistency, unsourced claims, citation integrity, logical coherence, plausibility issues, and stale references.
SkillDFreshness: DClaude Code +9 - 0.404score
newsletter-link
jasonbhorne
Add a link to the must-include list for the next AI newsletter.
SkillDFreshness: DClaude Code +9 - 0.404score
create-skill
jasonbhorne
Autonomously build, test, and validate a new Claude Code skill from a natural language description.
SkillDFreshness: DClaude Code +9 - 0.404score
check-in
jasonbhorne
Clean up Friday leadership check-in notes into polished DOCX/PDF files and maintain an action item tracker.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 2
- Open issues
- 0
- Last commit (this folder)
- Mar 7, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from jasonbhorne
- 0.474score
image-prep
jasonbhorne
Batch-prep photos for communications (newsletters, decks, websites).
SkillCFreshness: CClaude Code +9 - 0.474score
job-finder
jasonbhorne
Find and rank current job openings for a friend or candidate.
SkillCFreshness: CClaude Code +9 - 0.471score
financial-advisor
jasonbhorne
Monthly personal financial analysis with XLSX dashboard and DOCX narrative report.
SkillCFreshness: CClaude Code +9 - 0.471score
fantasy-football
jasonbhorne
AI-powered fantasy football assistant with draft prep, live draft, weekly matchup, and trade analysis modes.
SkillCFreshness: CClaude Code +9 - 0.469score
blog
jasonbhorne
Write a short, punchy blog post for $AUTHOR_WEBSITE in the user's voice.
SkillCFreshness: CClaude Code +9 - 0.406score
fact-check
jasonbhorne
Fact-check a .docx file for internal consistency, unsourced claims, citation integrity, logical coherence, plausibility issues, and stale references.
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get doc-review running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
doc-review skill. Agent Mart. https://agentmart.dev/skills/jasonbhorne-doc-review (last updated 2026-10-24)