Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"permissions": {
"allow": [
"Bash(gh pr:*)",
"Bash(git:*)",
"Bash(npm:*)",
"Bash(jq:*)",
"Bash(date:*)",
"Bash(./scripts/create-docs-pr.sh:*)",
"mcp__barkme__notify"
]
}
}
45 changes: 36 additions & 9 deletions .github/workflows/fetch-claude-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Fetch Claude Code Docs

on:
schedule:
# Every 6 hours: 00:00, 06:00, 12:00, 18:00 UTC
# Four times daily: 01:00, 06:00, 11:00, 16:00 UTC (aligned with hn-digest)
- cron: "0 1,6,11,16 * * *"
workflow_dispatch: # Allow manual trigger

Expand Down Expand Up @@ -55,7 +55,11 @@ jobs:
git config --global user.email "claude-yolo@lroole.com"

- name: Claude handles everything
uses: anthropics/claude-code-action@main
# Pinned: @main changed claude_args parsing in June 2026 and silently
# broke 'Bash(gh pr:*)' (split on the space into two invalid rules)
# -> 3 weeks of pushed branches with no PRs. Tool permissions now live
# in .claude/settings.json, which survives arg-parsing changes.
uses: anthropics/claude-code-action@v1.0.168
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
with:
Expand All @@ -64,7 +68,6 @@ jobs:
allowed_bots: "claude-yolo[bot]"
claude_args: |
--model claude-sonnet-4-6
--allowedTools Bash(gh pr:*),Bash(git:*),Bash(npm:*),Bash(jq:*),Bash(date:*),mcp__barkme__notify
--mcp-config '{
"mcpServers": {
"barkme": {
Expand Down Expand Up @@ -100,11 +103,9 @@ jobs:
- `content/en/api/` - API reference (1500+ docs)
- `content/en/build-with-claude/` - Platform features
- `content/mcp/` - MCP protocol spec
- `content/blog/engineering/` - Anthropic engineering posts
- `content/blog/research/` - Research papers
- `content/blog/news/` - Model releases, announcements
- `content/blog/` - FROZEN archive (anthropic.com is HTML-only; no longer fetched)
- `content/github/` - GitHub repos (cookbooks, skills, plugins, courses)
- `content/support/` - Support articles
- `content/support/` - Support articles (sitemap + .md)

## YOUR WORKFLOW

Expand Down Expand Up @@ -178,13 +179,39 @@ jobs:
- Highlight the interesting bits

## BARKME PROTOCOL (nightshift notifications)
Always barkme when creating PR (one simple notification):
Bark AFTER the PR exists, never before:
- Only notify once gh pr create / create-docs-pr.sh returned a real PR URL
- Title: "📦 Claude Code v{version}"
- Body: "{key feature}"
- URL: Link to PR
- URL: the actual PR link (verify it is non-empty before barking)

If push or PR creation fails: bark a failure alert instead
("🚨 docs pipeline: {step} failed - needs human") and exit non-zero.
A notification without a PR behind it is worse than no notification.

Keep it SHORT - day shift will do detailed analysis later.

Remember: You're not a changelog generator. You're a smart filter that understands WHY changes matter to humans using Claude Code.

[>be me >11:45pm Pacific docs checker >Anthropic devs are asleep >catching their fresh updates >day shift will handle the rest]

# Tripwire: a pushed branch without a PR, or changes left uncommitted,
# means the agent step silently failed. Fail loudly instead of lying green.
# (June 2026 incident: 31 orphan branches, zero PRs, all runs green.)
- name: Verify outcome
env:
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
BRANCH=$(git branch --show-current)
if [ -n "$(git status --porcelain)" ]; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Don't fail intentionally ignored low-signal diffs

This dirty-workspace tripwire conflicts with the prompt above that still tells the agent to “do nothing, exit 0” when the fetch produces only low-signal changes such as blog/research, GitHub mirror content, or .metadata.json. In those scheduled runs the fetcher has already modified the worktree, so an agent that correctly decides no commit/PR is warranted leaves changes behind and this verification step turns the run red even though nothing silently failed. Either have the agent reset ignored changes before exiting or exempt the explicitly ignored paths here.

Useful? React with 👍 / 👎.

echo "::error::Workspace has uncommitted changes after agent step"
git status --short | head -20
exit 1
fi
if [ "$BRANCH" != "main" ] && [ -n "$BRANCH" ]; then
PRS=$(gh pr list --head "$BRANCH" --json number --jq 'length')
if [ "$PRS" = "0" ]; then
echo "::error::Branch $BRANCH pushed but no PR exists - PR creation silently failed"
exit 1
fi
fi
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@ dist/
# Claude Code
.claude-trace/

# Local development
.claude/
# Local development (root only; keep settings.json tracked: CI reads tool
# permissions from it via settingSources=project. Note: content/github/**
# mirrors still ship .claude/ dirs we currently do not archive.)
/.claude/*
!/.claude/settings.json
worktree/
WIP/
references/
13 changes: 7 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Repository Purpose

Comprehensive archive of everything Anthropic publishes for building with
Claude. 2,900+ docs from 11 sources, auto-updated every 6 hours.
Claude. 2,900+ docs from 11 sources; active sources auto-updated four
times daily (blog archive frozen, see Fetcher).

## Fetcher

`scripts/fetcher.py` -- single-file multi-source fetcher.

Sources: code.claude.com, platform.claude.com, modelcontextprotocol.io,
anthropic.com (engineering/research/news), support.claude.com,
github.com/anthropics/* (10 repos).
support.claude.com (sitemap + .md), github.com/anthropics/* (10 repos).
anthropic.com blog (engineering/research/news) is a FROZEN archive as of
2026-07: the site is HTML-only and the jina.ai proxy path was removed.

```bash
uv run scripts/fetcher.py # Fetch everything
Expand All @@ -22,8 +24,7 @@ uv run scripts/fetcher.py --tree # Show sources
uv run scripts/fetcher.py --discover # Probe for new sources
```

Sections: `claude-code`, `api`, `platform`, `mcp`, `blog`, `engineering`,
`research`, `news`, `github`, `support`, `all`
Sections: `claude-code`, `api`, `platform`, `mcp`, `github`, `support`, `all`

Source registry: `sources.json`
Architecture: `REFACTOR.md`
Expand Down Expand Up @@ -105,7 +106,7 @@ Use these paths to reference documentation when helping users:
- `content/mcp/seps/` - Specification Enhancement Proposals
- `content/mcp/community/` - Governance, working groups

#### Engineering & Research (from anthropic.com)
#### Engineering & Research (from anthropic.com) — FROZEN archive, not auto-updated
- `content/blog/engineering/` - "Building Effective Agents", tool use, harness design
- `content/blog/research/` - Research papers
- `content/blog/news/` - Model releases, announcements
Expand Down
Loading