Agent skill

Worldbuilding

by danjdewhurst in danjdewhurst/story-skills

This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system"…

MITAuto-check: notesWriting & Content

Install Worldbuilding

skills CLI
$ npx skills add danjdewhurst/story-skills --skill worldbuilding -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install danjdewhurst/story-skills worldbuilding --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/worldbuilding .claude/skills/worldbuilding && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
worldbuilding
GitHub stars
279
Used in
1 other repo
Token cost
~3.3k tokens
SKILL.md length
1,615 words
Files
10 (incl. references)
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system"…

  • Works in 10 steps: Read story.md for genre, era, and tone… → Read worldbuilding/_index.md for… → Ask for the location's name and type… → …
  • Asks to create a location
  • SKILL.md covers Overview, Prerequisites, Creating a Location and Maps, Routes, and Travel, plus 10 more sections
  • Calls node

What it does

Worldbuilding is an agent skill from danjdewhurst/story-skills. This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system", "religion", "economy", "map", "travel times", "routes", "calendar", "moons", "seasons", "naming language", "conlang names", "trade routes", "supply lines", "magic cost", "add a glossary term", "glossary", "invented word", or wants to develop any aspect of a story's world and setting. NOT for a glossary for translators…

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `references/artifact-template.md`, `references/calendars.md` and `references/economy-logistics.md`).

It sits in Writing & Content, covering Creative writing and fiction and Translation. The repository describes itself as: Agent Skills for end-to-end story writing in markdown, packaged as Codex and Claude Code plugins. The licence is MIT.

When your agent uses it

  • Asks to create a location
  • Political system
  • Build the world
  • Technology system

Example prompts

  • “create a location”
  • “add a location”
  • “magic system”
  • “/worldbuilding”

Workflow steps

10 steps, taken from the first numbered list in SKILL.md.

  1. Read story.md for genre, era, and tone context
  2. Read worldbuilding/_index.md for existing locations and systems
  3. Ask for the location's name and type (city, fortress, wilderness, etc.)
  4. Build the location through conversation, covering
  5. Before settling an invented name, run story names '{Candidate}' to catch clashes and look-alikes (see references/naming-languages.md)
  6. Create it with story add location '{Location Name}' --type '{type}' when the CLI is available (add --region, --population…
  7. Without the CLI, write the file from references/location-template.md to worldbuilding/locations/{name-kebab}.md
  8. Leave the locations table in worldbuilding/_index.md to story reindex ., even without the CLI; never add a row by hand
  9. If notable characters are listed, verify those character files exist and add this location's kebab-case identifier to each character…
  10. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

What it can do on your machine

Read from SKILL.md and the folder at commit 1df23f9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Worldbuilding loads about 3.3k tokens when it runs, and up to ~9.2k if it reads all its reference files. Until then it costs about 137 tokens; SKILL.md has 1,615 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~137
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:157
    `bunfig.toml` (which can run code) and `.env`, and a package script runs from the checkout's root. If no CLI is availab

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from danjdewhurst/story-skills at commit 1df23f9, republished under its MIT licence (© danjdewhurst). 1,615 words, ~3,282 tokens.

Download SKILL.mdSave it as .claude/skills/worldbuilding/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
worldbuilding
description
This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system", "religion", "economy", "map", "travel times", "routes", "calendar", "moons", "seasons", "naming language", "conlang names", "trade routes", "supply lines", "magic cost", "add a glossary term", "glossary", "invented word", or wants to develop any aspect of a story's world and setting. NOT for a glossary for translators (use adaptation).

Worldbuilding

Overview

Create and manage world elements for a story project. Locations, systems (magic, politics, technology, etc.), factions, and artifacts are stored as markdown files in the worldbuilding/ directory with YAML frontmatter, and glossary terms for the world's invented words in glossary/terms/. All elements cross-reference characters and other story elements.

Prerequisites

A story project must already exist (created via the story-init skill). Verify by checking for story.md in the project root.

Creating a Location

  1. Read story.md for genre, era, and tone context
  2. Read worldbuilding/_index.md for existing locations and systems
  3. Ask for the location's name and type (city, fortress, wilderness, etc.)
  4. Build the location through conversation, covering:
    • Physical description and atmosphere
    • History relevant to the story
    • Culture and customs of inhabitants
    • Notable features characters will interact with
    • Current state at story's timeline
    • Routes to other locations: travel time in hours and mode (see references/maps-and-routes.md)
    • Pronunciation, if the name is invented or easily misread (pronunciation: "KEL-ah-mar")
  5. Before settling an invented name, run story names '{Candidate}' to catch clashes and look-alikes (see references/naming-languages.md)
  6. Create it with story add location '{Location Name}' --type '{type}' when the CLI is available (add --region, --population, --controlled-by, and --character as known); it writes worldbuilding/locations/{name-kebab}.md and lists it in worldbuilding/_index.md. Then fill the body from references/location-template.md
  7. Without the CLI, write the file from references/location-template.md to worldbuilding/locations/{name-kebab}.md
  8. Leave the locations table in worldbuilding/_index.md to story reindex ., even without the CLI; never add a row by hand
  9. If notable characters are listed, verify those character files exist and add this location's kebab-case identifier to each character file's locations frontmatter list
  10. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

Maps, Routes, and Travel

Record travel between locations as routes on the location file, not in prose notes, so the CLI can check it:

yaml
routes:
  - to: harbor-district
    hours: 1.5
    mode: on foot
  - to: saltmarsh-fort
    hours: 9
    mode: coach
  • to is a location id; story links . checks it exists.
  • A route is two-way unless the other location declares its own route back (for example, uphill slower than down).
  • story continuity . errors when a character appears in two dated scenes at locations joined by a route and the story time between them is shorter than the route's hours.
  • story diagram locations prints the route network as a Mermaid map-graph with edges labelled in hours; add --out dist/locations.mmd to save it. Use it to spot unreachable places and implausible shortcuts.

Use the travel speeds table in references/economy-logistics.md to set plausible hours, and references/maps-and-routes.md for the full workflow.

Creating a System

  1. Read story.md for genre and themes context
  2. Read worldbuilding/_index.md for existing systems
  3. Identify the system type and consult references/world-element-types.md for the relevant prompts. For calendars, naming languages, economies, and magic costs, also use references/calendars.md, references/naming-languages.md, and references/economy-logistics.md
  4. Build the system through conversation, addressing the key questions for that type
  5. Create it with story add system '{System Name}' --type '{type}' --prevalence '{prevalence}' when the CLI is available (the type and prevalence values are in references/system-template.md); it writes worldbuilding/systems/{name-kebab}.md and lists it in worldbuilding/_index.md. Then fill the body from references/system-template.md
  6. Without the CLI, write the file from references/system-template.md to worldbuilding/systems/{name-kebab}.md
  7. Leave the systems table in worldbuilding/_index.md to story reindex .; never add a row by hand
  8. Cross-reference with characters who interact with the system (e.g., magic-users for a magic system)
  9. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

Creating A Faction

Use story add faction '{Faction Name}' --type '{family|guild|government|military|religion|company|community|criminal|other}' when the CLI is available. Otherwise create worldbuilding/factions/{name-kebab}.md with frontmatter fields name, type, status, members, locations, and tags.

Cover:

  • Purpose and ideology
  • Power base, resources, and territory
  • Important members
  • Conflicts and pressure points

Then:

  1. Save to worldbuilding/factions/{name-kebab}.md
  2. Leave the Factions table in worldbuilding/_index.md to story reindex .; never add a row by hand
  3. If members are listed, verify those character files exist
  4. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

Creating An Artifact

Use story add artifact '{Artifact Name}' --type '{object|weapon|document|technology|relic|symbol|resource|other}' when the CLI is available. Otherwise create worldbuilding/artifacts/{name-kebab}.md with frontmatter fields name, type, status, owner, location, and tags.

Cover:

  • Description and recognition details
  • Function, constraints, and costs
  • History and prior owners
  • Current owner/location state

Then:

  1. Save to worldbuilding/artifacts/{name-kebab}.md
  2. Leave the Artifacts table in worldbuilding/_index.md to story reindex .; never add a row by hand
  3. If an owner or location is listed, verify those files exist and cross-reference back
  4. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

Adding A Glossary Term

Record an invented word, title, rank, or concept that the prose must spell and use the same way every time as a glossary term in glossary/terms/.

  1. Read glossary/_index.md for the existing terms, then run story names '{Term}' to catch a clash with another name or term
  2. Use story add term '{Term}' --category '{person|place|faction|artifact|concept|term|other}' when the CLI is available, with --alias '{Variant}' once for each accepted variant; it writes glossary/terms/{term-kebab}.md and lists it in glossary/_index.md. Otherwise create the file with frontmatter fields term, category, and aliases, and leave the glossary/_index.md table to story reindex .
  3. Fill ## Definition (what it means in the story) and ## Usage Notes (spelling, capitalisation, who uses it, and what it never means). Add a pronunciation when the term is invented or easily misread
  4. When the term's capitalisation or hyphenation is a house-style decision, record it in style-sheet.md too (see the voice-style skill)
  5. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

A glossary for translators belongs to the adaptation skill, which adds a ## Translations section to these term files.

Show full SKILL.md (678 more words)Show less

Updating World Elements

  1. Read the existing file
  2. Make the requested changes. If a location or faction changes partway through the story (a city falls, a guild disbands), add a progression instead of editing the opening value (see Changes Over the Story)
  3. If cross-references changed, update the linked files
  4. Rename an element with story rename (see references/naming-languages.md). Change its type or status in its own file only: the worldbuilding/_index.md tables pick it up at the next story reindex ., so never edit their rows
  5. When CLI access is available, run story reindex ., story wordcount . --write, and story check .

Changes Over the Story

Location and faction files describe the world as the story opens. Record a later change as a progression, so drafting an early chapter does not see what happens in a late one:

yaml
progressions:
  - from: chapter-10
    field: status
    value: occupied
  - from: chapter-10
    field: controlled-by
    value: lord-maren
  • from is the first chapter where the new value holds. It may be a planned chapter-NN with no file yet
  • field is a kebab-case single-value field, existing (status, controlled-by, region) or new (ruler, population-note). List fields (notable-characters, routes, members, locations, tags) cannot change this way
  • value is one value. A faction's type and status must stay within their allowed values
  • Keep entries in story order, and read the progressions up to the chapter being drafted before describing the place or faction in it
  • Artifacts and systems do not take progressions; track an artifact's changes with object-state and scene state-changes (see the revision-continuity skill)

After adding or editing progressions, run story reindex ., story wordcount . --write, and story check ..

Cross-Referencing

  • Locations reference characters via notable-characters in frontmatter
  • Characters reference locations via locations in frontmatter
  • Factions reference character members and locations
  • Artifacts reference an owner character or faction and a current location
  • Systems reference practitioners via character tags
  • Location routes reference other locations by id
  • Invented names across characters, locations, systems, factions, artifacts, and glossary terms may carry a pronunciation; story build --format narration gathers them into a pronunciation guide for audiobook narrators
  • When a location is used in a chapter, the chapter's frontmatter locations field links back
  • Keep the worldbuilding/_index.md world overview section current as elements are added

CLI Maintenance

Use the Story CLI when it is available. If story is not installed, use the bundled fallback node ../story-maintenance/scripts/story.js with the same arguments. Use node <checkout>/bin/story.js instead only when the user names a Story Skills repository checkout or you are working in one. Write the script as an absolute path (resolve the fallback relative to this skill folder) and run it from the folder you would run story from, so . and other relative paths keep their meaning. Use Node, not Bun or a package script: Bun would load that folder's bunfig.toml (which can run code) and .env, and a package script runs from the checkout's root. If no CLI is available, perform the registry, backlink, and word-count checks manually.

Reference Files

  • references/location-template.md - Template for location files
  • references/system-template.md - Template for system files
  • references/faction-template.md - Template for faction files
  • references/artifact-template.md - Template for artifact/object files
  • references/world-element-types.md - Detailed prompts for each system type (magic, political, technology, religion, economic, military, social)
  • references/maps-and-routes.md - Recording routes, the story diagram locations map-graph, and the continuity travel check
  • references/calendars.md - Adding a custom calendar to story.md, dating scenes in it, and recording seasons and moons as a system file
  • references/naming-languages.md - Phonology sketches, naming rules per culture, pronunciation, and the story names collision check
  • references/economy-logistics.md - Prices and wages, supply lines, magic and technology costs, and a travel speeds table by mode

Shared Conventions

Every story skill follows the shared conventions in ../story-maintenance/references/conventions.md, resolved relative to this skill folder. Read it before creating, renaming, or linking story files. If that file is missing because this skill was installed without story-maintenance, the essentials are: kebab-case ids and filenames, YAML frontmatter on every story-project file, _index.md registry tables that story reindex rebuilds (never edit them by hand), bidirectional links between entities, characters for who is on the page and mentions for who is only referred to, status: deceased plus died-in: chapter-{NN} for deaths, and no project-local generator or build scripts (run only the installed or bundled Story CLI).

© danjdewhurst, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (references) in skills/worldbuilding of danjdewhurst/story-skills.

  • SKILL.md
  • references/artifact-template.md
  • references/calendars.md
  • references/economy-logistics.md
  • references/faction-template.md
  • references/location-template.md
  • references/maps-and-routes.md
  • references/naming-languages.md
  • references/system-template.md
  • references/world-element-types.md

Open the folder on GitHubat commit 1df23f9

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in danjdewhurst/story-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Worldbuilding next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Worldbuilding compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Worldbuilding this skilldanjdewhurst/story-skills2791 repos~3.3kAutomated safety check: NotesMIT
InkOS Creative HarnessNarcooo/inkos10k1 repos~1.1kAutomated safety check: PassAGPL-3.0
Bio Ribo Seq Orf DetectionGPTomics/bioSkills1.2k1 repos~3.1kAutomated safety check: PassMIT
Bio Ribo Seq Orf Detectionmajiayu000/claude-skill-registry6662 repos~1.6kAutomated safety check: PassMIT
Media Adaptationjwynia/agent-skills166—~2.5kAutomated safety check: PassMIT
Zhong Lin WangK-Dense-AI/mimeographs129—~1.6kAutomated safety check: PassMIT

Similar skills

  • Drives long-form fiction, scripts, storyboards, interactive films and long-document translation through InkOS, with every change made by a typed action.

    10k GitHub starsUsed in 1 repo~1.1k tokens
    Writing & ContentAuto-check passed
  • Bio Ribo Seq Orf Detection

    GPTomics/bioSkills

    Detect and quantify translated ORFs from Ribo-seq using 3-nucleotide periodicity, including uORFs, internal ORFs, dORFs, and novel ORFs.

    1.2k GitHub starsUsed in 1 repo~3.1k tokens
    Writing & ContentAuto-check passed
  • Bio Ribo Seq Orf Detection

    majiayu000/claude-skill-registry

    Detect and quantify translated ORFs from Ribo-seq data including uORFs and novel ORFs using RiboCode and ORFquant.

    666 GitHub starsUsed in 2 repos~1.6k tokens
    Writing & ContentAuto-check passed
  • Media Adaptation

    jwynia/agent-skills

    Systematically analyze existing media to extract transferable elements for new settings.

    166 GitHub stars~2.5k tokensUpdated 7 mo ago
    Writing & ContentAuto-check passed
  • Zhong Lin Wang

    K-Dense-AI/mimeographs

    Applies the reasoning of Zhong Lin Wang (nanotechnology pioneer, Georgia Tech) to problems involving energy harvesting, IoT power scaling, sensor networks, and fundamental physics applications.

    129 GitHub stars~1.6k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Translation Diff Export

    Devolutions/UniGetUI

    Compares UniGetUI JSON locale files against English, identifies untranslated or source-changed keys, and generates patch, reference, and handoff files for a target language.

    26k GitHub stars~1.1k tokensUpdated yesterday
    Writing & ContentAuto-check passed

More from danjdewhurst/story-skills

All 24 skills in this repo
  • Adaptation

    danjdewhurst/story-skills

    This skill should be used when the user asks to "make an audiobook", "narration script", "narrator", "ACX", "Findaway", "pronunciation guide", "how long is the audiobook", "adapt to a screenplay"…

    279 GitHub starsUsed in 2 repos~3.5k tokens
    Auto-check: notes
  • Story Maintenance

    danjdewhurst/story-skills

    This skill should be used when the user asks to "validate", "reindex", "repair registries", "check links", "run the continuity, pacing, clue, voice, or name checks", "count words", "summarize a…

    279 GitHub starsUsed in 1 repo~5.4k tokens
    Auto-check: notes
  • Research

    danjdewhurst/story-skills

    This skill should be used when the user asks to "research", "fact-check", "check the history", "is this accurate", "research notes", "sources", "historical accuracy", "technical accuracy", "how…

    279 GitHub starsUsed in 2 repos~2.4k tokens
    Auto-check: notes
  • Chapter Writing

    danjdewhurst/story-skills

    This skill should be used when the user asks to "write a chapter", "next chapter", "chapter outline", "draft chapter", "continue the story", "write a scene", "outline a chapter", or wants to write…

    279 GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check: notes
  • Character Management

    danjdewhurst/story-skills

    This skill should be used when the user asks to "create a character", "update a character", "add a character", "build a family tree", "character relationships", "character timeline", "character…

    279 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check: notes
  • Discovery Drafting

    danjdewhurst/story-skills

    This skill should be used when the user asks about "pantsing", "discovery write", "write without an outline", "discovery draft", "write into the dark", "story kernel", "reconcile a chapter", "dead…

    279 GitHub starsUsed in 1 repo~2k tokens
    Auto-check: notes

Questions about Worldbuilding

What does Worldbuilding do?

This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system"…. Worldbuilding is an agent skill from danjdewhurst/story-skills. This skill should be used when the user asks to "create a location", "add a location", "magic system", "political system", "build the world", "add culture", "world history", "technology system", "religion", "economy", "map", "travel times", "routes", "calendar", "moons", "seasons", "naming language", "conlang names", "trade routes", "supply lines", "magic cost", "add a glossary term", "glossary", "invented word", or wants to develop any aspect of a story's world and setting.

When should I use Worldbuilding?

Worldbuilding fits situations like: asks to create a location; political system; build the world; technology system.

How do I install Worldbuilding in Claude Code?

Run `npx skills add danjdewhurst/story-skills --skill worldbuilding -a claude-code`. Or copy the skill folder (skills/worldbuilding in danjdewhurst/story-skills) into .claude/skills/worldbuilding in your project. Claude Code loads it when a task matches its description.

How do I install Worldbuilding in Codex?

Run `npx skills add danjdewhurst/story-skills --skill worldbuilding -a codex`. Or copy the skill folder (skills/worldbuilding in danjdewhurst/story-skills) into .agents/skills/worldbuilding in your project. Codex loads it when a task matches its description.

Can I use Worldbuilding in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add danjdewhurst/story-skills --skill worldbuilding -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/worldbuilding, .gemini/skills/worldbuilding, .github/skills/worldbuilding and .opencode/skills/worldbuilding in your project.

What does Worldbuilding need to run?

Going by SKILL.md and its folder, Worldbuilding needs the command-line tools its instructions call (node).

Does Worldbuilding access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Worldbuilding safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Worldbuilding use?

Worldbuilding is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Worldbuilding use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.

What are the alternatives to Worldbuilding?

Skills that share tags, products or a category with Worldbuilding: InkOS Creative Harness (Narcooo/inkos, 10k stars), Bio Ribo Seq Orf Detection (GPTomics/bioSkills, 1.2k stars), Bio Ribo Seq Orf Detection (majiayu000/claude-skill-registry, 666 stars) and Media Adaptation (jwynia/agent-skills, 166 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Worldbuilding?

danjdewhurst (a GitHub user) maintains it in danjdewhurst/story-skills, which has 279 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 2026.

Source: danjdewhurst/story-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.