AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Coarse Write

skill-felipe-so-coarse-ink-claude-code-coarse-write · by Felipe-SO

Coarse pipeline steps 14-15 — write the final review markdown to reviews/ in refine.ink format from verified cache files, then convert to PDF using PyMuPDF.

No reviews yet
0 installs
8 views
0.0% view→install

Install

$ agentstack add skill-felipe-so-coarse-ink-claude-code-coarse-write

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-felipe-so-coarse-ink-claude-code-coarse-write)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Coarse Write? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/coarse-write — Write Final Review

Usage: /coarse-write

Argument ($ARGUMENTS) is the paper slug (e.g. my-paper). All paths are relative to the workspace root d:/Dropbox/Research/Coarse Reviewer/.

Path setup

  • CLASSIFICATION = .coarse_cache/_classification.json
  • OVERVIEW_JSON = .coarse_cache/_overview.json
  • COMMENTS_VERIFIED = .coarse_cache/_comments_verified.json
  • OUTPUT = reviews/-review.md
  • OUTPUT_PDF = reviews/-review.pdf

Re-read CLASSIFICATION, OVERVIEW_JSON, and COMMENTS_VERIFIED before writing.


Step 14 — Write Output

Write the final review to OUTPUT using the Write tool. Use this exact format:

# {title}

**Date**: {today's date as MM/DD/YYYY}
**Domain**: {domain}
**Taxonomy**: {taxonomy}
**Filter**: Active comments

---

## Overall Feedback

Here are some overall reactions to the document.

{assessment paragraph if non-empty}

**{Issue 1 title}**

{Issue 1 body}

**{Issue 2 title}**

{Issue 2 body}

[... all overview issues ...]

**Recommendation**: {recommendation text}

**Key revision targets**:
1. {target 1}
2. {target 2}
[... only if recommendation is not "accept" ...]

**Status**: [Pending]

---

## Detailed Comments ({N})

### 1. {comment 1 title}

**Status**: [Pending]

**Quote**:
> {verbatim quote — prefix every line with "> " for multi-line quotes}

**Feedback**:
{feedback text}

---

### 2. {comment 2 title}
[...]

After writing, confirm the file exists with the Read tool and print the path.

See reference_review.md in the workspace root for a gold-standard example showing the expected depth, tone, and format.


Step 15 — Convert to PDF (PyMuPDF)

Run this Python one-liner to convert OUTPUT to OUTPUT_PDF:

python -c "
import fitz, markdown, pathlib, sys
sys.stdout.reconfigure(encoding='utf-8')
md = pathlib.Path('OUTPUT').read_text(encoding='utf-8')
body = markdown.markdown(md, extensions=['extra'])
html = '''
body{font-family:Georgia,serif;font-size:11pt;line-height:1.55;color:#1a1a1a}
h1{font-size:15pt;line-height:1.3;margin-bottom:6pt}
h2{font-size:13pt;margin-top:18pt;border-bottom:.5pt solid #bbb;padding-bottom:2pt}
h3{font-size:11pt;margin-top:14pt}
blockquote{border-left:2pt solid #999;margin:8pt 0;padding:2pt 10pt;color:#444;font-style:italic;background:#f8f8f8}
hr{border:none;border-top:.5pt solid #ddd;margin:16pt 0}
p{margin:6pt 0}
strong{font-weight:bold}
''' + body + ''''''
story = fitz.Story(html=html)
writer = fitz.DocumentWriter('OUTPUT_PDF')
mediabox = fitz.paper_rect('a4')
where = mediabox + (40, 50, -40, -50)
more = 1
while more:
    dev = writer.begin_page(mediabox)
    more, _ = story.place(where)
    story.draw(dev)
    writer.end_page()
writer.close()
print('PDF written: OUTPUT_PDF')
"

Replace OUTPUT and OUTPUT_PDF with the actual paths before running.

Requires: markdown and PyMuPDF (both are project dependencies — install once with uv pip install markdown pymupdf).

If PyMuPDF is unavailable, fall back to Chrome headless:

"C:/Program Files/Google/Chrome/Application/chrome.exe" \
  --headless --disable-gpu --print-to-pdf-no-header \
  --print-to-pdf="OUTPUT_PDF" "OUTPUT_HTML"

(requires first converting OUTPUT to HTML with the markdown package)


Done. Report the path to both OUTPUT and OUTPUT_PDF.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.