|
| 1 | +# Scrapeman — Claude instructions |
| 2 | + |
| 3 | +## Project |
| 4 | +Scrapeman is a Postman/Bruno-class API client built for scraping engineers. |
| 5 | +Electron + React + TypeScript, pnpm monorepo. Sibling repo is |
| 6 | +`/Users/mert/Developer/scrapeman-landing` (the marketing site). |
| 7 | + |
| 8 | +## User-facing writing rules |
| 9 | + |
| 10 | +Apply every time you write prose a human will read: README updates, DOCS |
| 11 | +sections, commit messages, PR descriptions, release notes, CHANGELOG |
| 12 | +entries, in-app toasts and error copy. This list comes from two open |
| 13 | +skills the user follows — `blader/humanizer` and `hardikpandya/stop-slop` — |
| 14 | +plus the anti-slop notes in memory. State facts and numbers; skip the vibes. |
| 15 | + |
| 16 | +**Write in English.** Code comments, commit messages, PR descriptions, |
| 17 | +release notes, and CHANGELOG entries are always in English, even when the |
| 18 | +chat is in Turkish. |
| 19 | + |
| 20 | +### Cut on sight |
| 21 | +- Significance inflation: "pivotal", "transformative", "testament to", |
| 22 | + "marking a new era", "at its core" |
| 23 | +- Promotional adjectives: "seamless", "vibrant", "empowering", |
| 24 | + "game-changing", "cutting-edge", "revolutionary" |
| 25 | +- AI tells: "leverage", "unlock", "showcase", "landscape", "actually", |
| 26 | + "additionally", "while details are limited" |
| 27 | +- Vague attributions: "experts say", "industry observers", "some argue" |
| 28 | +- Formulaic challenges: "Despite the challenges, X continues to thrive" |
| 29 | +- Chatbot artifacts: "Great question!", "I hope this helps", sycophancy |
| 30 | +- Generic conclusions: "The future looks bright", "The possibilities are |
| 31 | + endless" |
| 32 | +- Signposting: "Let's dive in", "Here's what you need to know" |
| 33 | +- Negative parallelisms: "Not just X, but Y", "Everything you need, |
| 34 | + nothing you don't" |
| 35 | +- Rule-of-three arranged for rhetoric ("innovation, inspiration, insights") |
| 36 | + |
| 37 | +### Prefer |
| 38 | +- "is" and "has" over "serves as", "features", "boasts" |
| 39 | +- "To" over "In order to"; "Because" over "Due to the fact that" |
| 40 | +- Short sentences. Mix lengths only when rhythm demands. |
| 41 | +- Concrete numbers (tests, file counts, bug IDs, commit hashes, version |
| 42 | + tags) instead of adjectives |
| 43 | +- Commas or periods over em-dashes for breathing |
| 44 | +- Sentence-case headings (not Title Case) |
| 45 | +- No emojis, no curly quotes, no inline-header bold lists like |
| 46 | + "**Performance:** ..." |
| 47 | + |
| 48 | +### Before shipping prose |
| 49 | +Score it 1–10 on directness, rhythm, trust, authenticity, density. Rewrite |
| 50 | +if the total is under 35 / 50. Rewriting the first line usually fixes the |
| 51 | +rest. |
| 52 | + |
| 53 | +## Brand capitalisation |
| 54 | +- User-facing prose: `Scrape.do` (capital S), `Scrapeman` (capital S). |
| 55 | +- Lowercase `scrape.do` is fine only inside URLs, code blocks, env vars, |
| 56 | + and literal terminal output. |
| 57 | + |
| 58 | +## Agent workflow |
| 59 | +- Worktree isolation: every code-writing agent gets `isolation: "worktree"`. |
| 60 | +- Reviews: ninja-fullstack / ninja-scraping hand their work to |
| 61 | + developer-core for review (APPROVED / CHANGES REQUESTED / BLOCKED). |
| 62 | +- Commits ship without `Co-Authored-By` unless the user asks for it. |
| 63 | +- Pushes always need explicit approval. `git add` + `git commit` are fine |
| 64 | + any time; `git push` waits. |
| 65 | +- Every feature ships with README.md + DOCS.md updates in the same commit. |
| 66 | + |
| 67 | +## Key project context |
| 68 | +- HTTP: `undici` (not axios, not fetch). |
| 69 | +- UI: React 18, Zustand, Tailwind, Radix, Lucide, Inter + Geist Mono. |
| 70 | +- IPC seam: renderer talks to main only through `contextBridge`. Renderer |
| 71 | + must never import `@scrapeman/http-core` top-level — it drags `undici` |
| 72 | + into the browser bundle. |
| 73 | +- File format: `.sman` (primary) and `.req.yaml` (legacy, read-only, |
| 74 | + migrated on first save). |
| 75 | +- `exactOptionalPropertyTypes` is on — use conditional spread, not |
| 76 | + `field: undefined`. |
0 commit comments