anthropic-watch
CLAUDE.md1 starsChanged 7 months agoMITView on GitHub
anthropic-watch — Monitors public Anthropic and community sources daily for changes and publishes structured RSS/JSON/OPML feeds to GitHub Pages. See .claude/skills/ — load only what's relevant: Start: Read PROGRESS.md → Read .claude/skills/agent-routing/SKILL.md → Read active implementation prompt if any. During: One task at a time. Commit after each. Use subagents per routing guide. Feature branch: /start → work → /verify → /commit-push-pr After merging PRs: git checkout develop → git pull → /conflict-resolver (if needed) → /sync Mid-task stop: /end…
- Reads credentials
In this repository18 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-routingSkill
- backend-conventionsSkill
- claude-md-maintenanceSkill
- coding-principlesSkill
- context-managementSkill
- coordinator-modeSkill
- frontend-design-systemSkill
- git-conventionsSkill
- memory-architectureSkill
- planning-with-filesSkill
- project-patternsSkill
- prompt-engineeringSkill
- review-and-handoffSkill
- security-checklistSkill
- subagent-usageSkill
- testingSkill
- verificationSkill
The file
Show its rules and text
We split this CLAUDE.md into the rules it gives an agent
13 rules. About 0 are common, 7 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
No ORM, no database — state is state/last-seen.json committed to main
- Distinctive: line 21
No server — GitHub Actions cron + GitHub Pages static hosting
- Very specific: line 56
Start: Read PROGRESS.md → Read .claude/skills/agent-routing/SKILL.md → Read active implementation prompt if any.
- Distinctive: line 65
Test before moving on.
- Distinctive: line 66
Ask if ambiguous. Do not guess.
- Distinctive: line 67
Read source files before writing.
- Distinctive: line 69
Use subagents to keep main context clean.
- Distinctive: line 72
Never add Co-Authored-By trailers, AI attribution footers, or "Generated with" signatures to commits or PRs.
- Very specific: line 80
No browser automation: No Playwright, Puppeteer, or headless Chrome.
- Very specific: line 87
State file is append-friendly only: Never delete keys from state/last-seen.json.
- Very specific: line 89
Docs update in the same PR as the code: If a PR adds a source, README.md, docs/SOURCES.md, and any source-count references are updated in …
- Very specific: line 91
Version bumps committed at release time: Every PR to develop declares Version bump: {major|minor|patch|none} in the description.
- Distinctive: line 102
Do NOT write session learnings or auto-captured patterns here.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
anthropic-watch — Monitors public Anthropic and community sources daily for changes and publishes structured RSS/JSON/OPML feeds to GitHub Pages.
Key Files
docs/spec/PROGRESS.md— Read first every sessiondocs/spec/SPEC.md— Source of truthdocs/ARCHITECTURE.md— Pipeline design, concurrency, state, error handlingdocs/SOURCES.md— All monitored sources with detection methodsdocs/FEED-SCHEMA.md— JSON and RSS schema referencedocs/WORCLAUDE-INTEGRATION.md— Primary consumer integration guideCHANGELOG.md— Version history
Tech Stack
- Node.js 20+, ESM, plain JavaScript (no TypeScript, no build step, no bundler)
- Runtime deps:
cheerio(HTML parsing),fast-xml-parser(RSS/OPML generation) - Dev deps:
vitest(tests),yaml(test helpers) - No ORM, no database — state is
state/last-seen.jsoncommitted tomain - No server — GitHub Actions cron + GitHub Pages static hosting
Commands
npm start # Run the full pipeline locally
npm test # Run vitest (unit + scraper + e2e)
npm run test:watch # Vitest watch mode
npm run test:live # Re-capture fixtures from live sources
GITHUB_TOKEN=ghp_xxx npm start # Higher GitHub API rate limitsSkills (read on demand, not upfront)
See .claude/skills/ — load only what's relevant:
- context-management/SKILL.md — Session lifecycle
- claude-md-maintenance/SKILL.md — CLAUDE.md self-healing
- coding-principles/SKILL.md — Behavioral principles
- git-conventions/SKILL.md — Commits, branches, versioning
- planning-with-files/SKILL.md — Implementation planning
- prompt-engineering/SKILL.md — Prompting patterns
- review-and-handoff/SKILL.md — Session endings
- verification/SKILL.md — How to verify work
- testing/SKILL.md — Test philosophy and patterns
- subagent-usage/SKILL.md — When and how to use subagents
- security-checklist/SKILL.md — Security review checklist
- coordinator-mode/SKILL.md — Multi-agent orchestration
- agent-routing/SKILL.md — When and how to use each installed agent (READ EVERY SESSION)
- backend-conventions/SKILL.md — Scraper contract, retry, state, feeds
- frontend-design-system/SKILL.md — Dashboard (static HTML, vanilla DOM)
- project-patterns/SKILL.md — Pipeline layout, error philosophy, naming
Session Protocol
Start: Read PROGRESS.md → Read .claude/skills/agent-routing/SKILL.md → Read active implementation prompt if any.
During: One task at a time. Commit after each. Use subagents per routing guide.
Feature branch: /start → work → /verify → /commit-push-pr
After merging PRs: git checkout develop → git pull → /conflict-resolver (if needed) → /sync
Mid-task stop: /end (writes handoff file)
Critical Rules
- SPEC.md is source of truth. Do not invent features.
- Test before moving on.
- Ask if ambiguous. Do not guess.
- Read source files before writing. Never assume.
- Self-healing: same mistake twice → update CLAUDE.md.
- Use subagents to keep main context clean.
- Mediocre fix → scrap it, implement elegantly.
- Feature branches NEVER modify shared-state files. Those are updated only on develop via /sync after merging PRs. See git-conventions.md Shared-State Files for the canonical list.
- Never add Co-Authored-By trailers, AI attribution footers, or "Generated with" signatures to commits or PRs.
- Surgical changes only — every changed line must trace to the request. Don't "improve" adjacent code, comments, or formatting.
- Push back when simpler approaches exist. Present alternatives, don't pick silently.
- Transform tasks to success criteria. "Fix the bug" → "Write a failing test, then make it pass."
- Slash-command invocation contract. /commit-push-pr and /sync run only when the human explicitly types the command (or a Trigger Phrase). Their AskUserQuestion prompts (
Version bump:, ship/wait, push consent) are non-skippable — refuse to proceed without an explicit human selection.
Project-Specific Rules
- No browser automation. No Playwright, Puppeteer, or headless Chrome. All HTML is fetched via
fetch+ parsed withcheerio. Pages requiring JS-rendered data are solved with a newparseMode(RSC payload extraction, API endpoint discovery, etc.) — never by adding a browser. - No authenticated endpoints beyond
GITHUB_TOKENforcore/extendedsources. No Anthropic API keys, no OAuth flows. Paid third-party APIs permitted only forcommunity-category sources with graceful-skip-on-missing-credential, documented cost, and fork-compatibility (twitterapi.ioat ≈$0.36/month is the sole current instance). Core/extended sources must remain fetchable from a stock GitHub Actions runner with onlyGITHUB_TOKEN. - No private or paid Anthropic surfaces. Public web pages, public GitHub repos, public npm, public docs, public status page only. Never the Anthropic Console, billing, or logged-in surfaces.
- Scrapers never catch their own errors. They throw;
Promise.allSettledinsrc/index.jshandles aggregation. Wrapping scraper logic intry/catch { return [] }is forbidden — that was the v1.0.1 silent-failure root cause. - No shared error class hierarchy. Plain
Errorwith descriptive messages. Don't introduceScraperError,FetchError, etc. - No new dependencies without justification. Current deps are
cheerio+fast-xml-parseronly. New deps require a CHANGELOG entry explaining why existing tools couldn't do the job. - No npm publish. Ships as GitHub Releases only — it's infrastructure, not a package.
- State file is append-friendly only. Never delete keys from
state/last-seen.json; only add or update. Removing a source fromsources.jsshould leave its state entry untouched. - CHANGELOG.md must be updated in the same PR as any user-visible change (new source, scraper change, schema change, security fix). Internal refactors don't require it.
- Docs update in the same PR as the code. If a PR adds a source,
README.md,docs/SOURCES.md, and any source-count references are updated in that PR — never a follow-up. - Source count consistency. Any change in source count must propagate to the README badge, the "Monitors X sources" line,
docs/SOURCES.mdheaders, and any test assertions. - Version bumps committed at release time. Every PR to
developdeclaresVersion bump: {major|minor|patch|none}in the description; /sync aggregates these and picks max precedence (major > minor > patch > none) for the release commit. Tagged GitHub Releases remain the source of truth.
Memory Architecture
- This file: static project rules. Keep under 200 lines.
- Native memory (
/memory): auto-captured project knowledge. - Persistent corrections:
.claude/learnings/via [LEARN] blocks or/learn. - Path-scoped rules:
.claude/rules/with YAML frontmatter. - Session state:
.claude/sessions/(gitignored). - Team decisions:
docs/memory/decisions.md(version-controlled). - Team preferences:
docs/memory/preferences.md(version-controlled). - Do NOT write session learnings or auto-captured patterns here.
Learnings
Corrections captured via [LEARN] blocks live in .claude/learnings/. SessionStart loads recent ones automatically.
Gotchas
nextjs-rscparse mode depends on undocumented Next.js internals (self.__next_f.pushchunk format). Re-validate both the primary and HTML-fallback paths after any Anthropic blog redesign. Seedocs/ARCHITECTURE.md — nextjs-rsc Known Brittleness.SCRAPER_PATis required in CI, notGITHUB_TOKENalone. The defaultGITHUB_TOKENdoes not trigger downstream workflows on push — the PAT is used for both checkout and gh-pages deploy so fan-out works. Scope:repo+workflow.- First-run new source emits a backfill burst.
github-releasessources emit the 30 most recent items; changelog sources emit one; blog sources emit whatever's currently listed. This is expected and settles after the first run. [Unreleased]changelog sections use "new-wins" merge semantics — the latest scrape overwrites the persisted item's title/snippet/date. Seedocs/FEED-SCHEMA.md — Merge Semantics.- Never use
--no-verifyon git commits. Fix the underlying hook failure instead.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

