part 1
Get set up
Everything today runs in Claude Code on the web. Claude works on a computer at Anthropic, not on your laptop, and saves your projects to GitHub.
- Go to claude.ai/code and sign in with your AJI account.
- Connect GitHub when it asks, and approve. When GitHub asks which repositories Claude can use, choose All repositories. If you pick only some, you’ll have to add each new project by hand at github.com/settings/installations (Configure, then Repository access).
-
Say hello first.
Some features, like the
/menu, show up only after your first message in a session.
Three words you’ll hear all day
- Repository: a project’s folder on GitHub, with every version kept.
- Commit: saving a version, with a note on what changed.
- Push: sending your saved versions up to GitHub. For your website, that’s when it goes live.
Stuck? Ask Claude first. Tell it what you see, or paste the error. Ask what it means and what to do next. Then try it.
part 2
Your website
A one-page site with your name, your beat, your About text and your clips, published free on GitHub Pages.
Make your site’s repository
- Open the site template and click Use this template, then Create a new repository. Give it a name and leave it Public: GitHub publishes public repositories as websites for free. The template already holds instructions for Claude: use your words exactly and never add facts.
- In claude.ai/code, pick your new repository and start a session. Claude can see only the repository you pick.
Ask for your site
Fill in the parts in [brackets] before you send it.
Build me a simple one-page personal website. My name is [your name] and I'm a reporting fellow covering [your beat]. Include a headline with my name and beat, an About section, a Clips section for my stories, and a line saying people can reach me at [your email]. Leave the About section as a clearly marked empty spot; I'll give you that text later.
Then give Claude your About text. The words about you are yours.
Here's my About text. Put it in the About section exactly as I wrote it:
[paste your About text]
Turn on GitHub Pages: the one click Claude can’t do
- On GitHub, open your repository’s Settings.
- Click Pages.
- Under Branch, choose main, then Save.
Your address is
yourname.github.io/your-repository. It can take a minute or two to appear. Open it on your phone, not signed in, the way anyone else would see it.
Make it look like you
Screenshot two or three sites you like and attach the pictures to your message. Say what you like the way you’d brief a designer: the type, the colors, how much space.
Here are some sites I like. I like [what you like: the type, the colors, how much space]. Make my site look more like that. Save the style in the project's instructions so future changes keep it, then push.
Don’t like it? Say what’s wrong, not how to fix it. Then refresh your site.
- “The header feels cramped”
- “Make my name bigger and the clips easier to scan”
- “Use colors like my newsroom’s site”
Add your headshot
Attach a photo to your message and say where it goes. No uploading on GitHub.
This is my headshot. Put it next to my About section.
Make your first skill: /add-clip
A skill is a standing checklist: written steps Claude follows the same way every time. Adding clips is the job you’ll repeat, so make it one line.
Make a skill called add-clip and save it in this project. When I use it with a link to one of my stories: open the link and copy the headline exactly as published, plus the outlet and the date. Never rewrite or shorten the headline. Add the story to the top of the Clips section, newest first. Then push the change so it goes live and tell me what you added. If you can't open the link, ask me for the headline, outlet and date instead of guessing.
- Type
/reload-skillsso this session sees the new skill. A new session picks it up on its own. - Type
/add-clipand paste the link to one of your stories.
If Claude can’t open your story
Claude can visit only the websites your environment allows. Add your outlet yourself:
- In the panel on the right, click the gear next to the environment’s name.
- Open Network access and add the site Claude named, one per line.
*.example.comcovers every part of a site. - Click Save changes, then tell Claude: “I added it, try again.” No new session needed. Add each outlet you’ve worked for. If it still won’t work, give Claude the headline, outlet and date yourself.
Later, if you want: use your own domain
If you own a name like yourname.com, you can point it at your site so the address isn’t github.io.
- Add the domain in your repository’s Pages settings first, so no one else can claim it.
- Then change the settings where you bought the domain.
- It can take up to a day to work.
GitHub’s guide: Configuring a custom domain for your GitHub Pages site. Or ask Claude to walk you through it.
part 3
Finding leads in public data
Who just got federal money for the first time? A company winning its first contract from an agency isn’t news on its own. It’s a place to start asking: who are they, how did they get it, and was anyone else allowed to bid?
The source: USAspending.gov. Every federal contract, public and free, no sign-up. Claude asks it questions directly and gets back a spreadsheet’s worth of answers in seconds.
Set up a separate, private project
- Open the data template, click Use this template, then Create a new repository, and choose Private. This stays off your portfolio. Only you can see it.
- Start a session on your data project and choose the Public records data environment. It adds the government data sites to what Claude can visit.
What’s inside the skill
The project comes with a skill called new-money. It’s one page of plain English: read it on GitHub, or find it in your own project at .claude/skills/new-money/SKILL.md. Look for:
- When to use it. Claude reads the description to decide whether your request calls for the skill.
- Same method for everyone. “Don’t write your own code, don’t change the script.” Claude runs a tested script.
- The settings you can change. $100,000 and up, the last 30 days, checked against five years.
- What happens when it breaks. “Don’t guess, don’t make up results.”
- No made-up numbers. The summary uses only what the script counted, and calls them leads to check, not findings.
Run it on your beat’s agency
Use the new-money skill for [your agency]
It takes a minute or two. Your leads open as a page beside the chat. The page is private to you; share it with your editor from its Share button.
Agency names that work
Use a department or agency name from USAspending, or its abbreviation. Offices inside a department go by the department: the Forest Service is under USDA, FEMA under DHS, the Army and Navy under DOD, NIH and CDC under HHS.
| Type | Agency |
|---|---|
| TREAS | Department of the Treasury |
| HHS | Department of Health and Human Services |
| DOD | Department of Defense |
| SSA | Social Security Administration |
| DHS | Department of Homeland Security |
| VA | Department of Veterans Affairs |
| USDA | Department of Agriculture |
| OPM | Office of Personnel Management |
| HUD | Department of Housing and Urban Development |
| DOT | Department of Transportation |
| ED | Department of Education |
| FDIC | Federal Deposit Insurance Corporation |
| DOE | Department of Energy |
| DOI | Department of the Interior |
| DOS | Department of State |
| PBGC | Pension Benefit Guaranty Corporation |
| DOL | Department of Labor |
| DOJ | Department of Justice |
| USACE | Corps of Engineers - Civil Works |
| GSA | General Services Administration |
| EPA | Environmental Protection Agency |
| DOC | Department of Commerce |
| NASA | National Aeronautics and Space Administration |
| SBA | Small Business Administration |
| USAID | Agency for International Development |
| DFC | U.S. International Development Finance Corporation |
| NSF | National Science Foundation |
| FCSIC | Farm Credit System Insurance Corporation |
| SEC | Securities and Exchange Commission |
| MCC | Millennium Challenge Corporation |
The Pentagon and the Army Corps of Engineers make their contracts public 90 days after they’re signed. For them, add “for the last 120 days” and expect a longer wait.
While it runs, in pairs
- Open the top three leads on USAspending.gov.
- Is each company really new to the government, or only to this agency?
- Anything on the page you don’t understand: ask Claude.
Reading your leads
New to the agency
No contract from this agency in the five years before, found by the company’s federal ID number.
Not competed
The agency reported that no other company could bid. Sometimes for good reasons, like emergencies. It’s where reporters look first.
Each lead also links to the Federal Election Commission’s search for donations by people who named that company as their employer. Expect small, old and wrong-company matches. A match is a question to report out, not a connection.
Question your top lead
Why did you flag [company] as new? Show me the records you checked.
“New” means only no contract from this agency in five years. The company may have a long history elsewhere.
What this can get wrong
- One company can have more than one ID.
- A joint venture looks new even when its partners aren’t.
- Grants, loans and subcontracts aren’t counted.
- Small purchases often aren’t reported.
- Agencies report late, and amounts change.
A flag is a lead, not a finding.
Make the skill yours
You change a skill the way you changed your site: by asking. The script stays as tested.
Change the new-money skill so if I don't name an agency, it uses [your agency], with a $250,000 floor.
Then type /new-money on its own. For one run, you can also ask for “contracts over $25,000” or “for the last 60 days.”
How The New York Times did this on the Epstein files
The Times built an AI tool that more than 100 of its journalists used to search the Epstein files. Of about 60 reports it wrote, at least 20 fed published stories. The team says its checking standard worked because most leads didn’t survive it.
- What The New York Times learned putting an AI agent on the Epstein files (Hacks/Hackers)
- Epstein Files Engine: Agentic Search for Investigative Journalism (the team’s paper)
part 4
Add a website Claude can visit
Your next project may need a source that isn’t on today’s list. Make your own environment and add it.
- Open the environment menu under the message box and choose New environment.
- Give it a name and set Network access to Limited.
- Under Allowed domains, add the sites, one per line. For House roll-call votes:
clerk.house.gov - Click Add environment. It’s selected for your next session.
part 5
What’s next
Bring it to your editor
Your newsroom’s policy says to talk to your editor if you have an idea for using AI in your reporting. If a lead turns into a story, substantial use of AI must be disclosed to the reader. Ask your editor how.
You can ask Claude for all of this
Pointing your domain at your site. Fixing an error. Explaining what the script does. Trying a new data source. Start by asking Claude.