Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
History is littered with hundreds of conflicts over the future of a community, group, location or business that were "resolved" when one of the parties stepped ahead and destroyed what was there. With the original point of contention destroyed, the debates would fall to the wayside. Archive Team believes that by duplicated condemned data, the conversation and debate can continue, as well as the richness and insight gained by keeping the materials. Our projects have ranged in size from a single volunteer downloading the data to a small-but-critical site, to over 100 volunteers stepping forward to acquire terabytes of user-created data to save for future generations.
The main site for Archive Team is at archiveteam.org and contains up to the date information on various projects, manifestos, plans and walkthroughs.
This collection contains the output of many Archive Team projects, both ongoing and completed. Thanks to the generous providing of disk space by the Internet Archive, multi-terabyte datasets can be made available, as well as in use by the Wayback Machine, providing a path back to lost websites and work.
Our collection has grown to the point of having sub-collections for the type of data we acquire. If you are seeking to browse the contents of these collections, the Wayback Machine is the best first stop. Otherwise, you are free to dig into the stacks to see what you may find.
The Archive Team Panic Downloads are full pulldowns of currently extant websites, meant to serve as emergency backups for needed sites that are in danger of closing, or which will be missed dearly if suddenly lost due to hard drive crashes or server failures.
ArchiveBot is an IRC bot designed to automate the archival of smaller websites (e.g. up to a few hundred thousand URLs). You give it a URL to start at, and it grabs all content under that URL, records it in a WARC, and then uploads that WARC to ArchiveTeam servers for eventual injection into the Internet Archive (or other archive sites).
To use ArchiveBot, drop by #archivebot on EFNet. To interact with ArchiveBot, you issue commands by typing it into the channel. Note you will need channel operator permissions in order to issue archiving jobs. The dashboard shows the sites being downloaded currently.
Create, manage, and share skills to extend Claude’s capabilities in Claude Code. Includes custom slash commands.
Skills extend what Claude can do. Create a SKILL.md file with instructions, and Claude adds it to its toolkit. Claude uses skills when relevant, or you can invoke one directly with /skill-name.
For built-in commands like /help and /compact, see interactive mode.Custom slash commands have been merged into skills. A file at .claude/commands/review.md and a skill at .claude/skills/review/SKILL.md both create /review and work the same way. Your existing .claude/commands/ files keep working. Skills add optional features: a directory for supporting files, frontmatter to control whether you or Claude invokes them, and the ability for Claude to load them automatically when relevant.
This example creates a skill that teaches Claude to explain code using visual diagrams and analogies. Since it uses default frontmatter, Claude can load it automatically when you ask how something works, or you can invoke it directly with /explain-code.
1
Create the skill directory
Create a directory for the skill in your personal skills folder. Personal skills are available across all your projects.
Copy
Ask AI
mkdir -p ~/.claude/skills/explain-code
2
Write SKILL.md
Every skill needs a SKILL.md file with two parts: YAML frontmatter (between --- markers) that tells Claude when to use the skill, and markdown content with instructions Claude follows when the skill is invoked. The name field becomes the /slash-command, and the description helps Claude decide when to load it automatically.Create ~/.claude/skills/explain-code/SKILL.md:
Copy
Ask AI
---name: explain-codedescription: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?"---When explaining code, always include:1. **Start with an analogy**: Compare the code to something from everyday life2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships3. **Walk through the code**: Explain step-by-step what happens4. **Highlight a gotcha**: What's a common mistake or misconception?Keep explanations conversational. For complex concepts, use multiple analogies.
3
Test the skill
You can test it two ways:Let Claude invoke it automatically by asking something that matches the description:
Copy
Ask AI
How does this code work?
Or invoke it directly with the skill name:
Copy
Ask AI
/explain-code src/auth/login.ts
Either way, Claude should include an analogy and ASCII diagram in its explanation.
When skills share the same name across levels, higher-priority locations win: enterprise > personal > project. Plugin skills use a plugin-name:skill-name namespace, so they cannot conflict with other levels. If you have files in .claude/commands/, those work the same way, but if a skill and a command share the same name, the skill takes precedence.
When you work with files in subdirectories, Claude Code automatically discovers skills from nested .claude/skills/ directories. For example, if you’re editing a file in packages/frontend/, Claude Code also looks for skills in packages/frontend/.claude/skills/. This supports monorepo setups where packages have their own skills.Each skill is a directory with SKILL.md as the entrypoint:
Copy
Ask AI
my-skill/├── SKILL.md # Main instructions (required)├── template.md # Template for Claude to fill in├── examples/│ └── sample.md # Example output showing expected format└── scripts/ └── validate.sh # Script Claude can execute
The SKILL.md contains the main instructions and is required. Other files are optional and let you build more powerful skills: templates for Claude to fill in, example outputs showing the expected format, scripts Claude can execute, or detailed reference documentation. Reference these files from your SKILL.md so Claude knows what they contain and when to load them. See Add supporting files for more details.
Files in .claude/commands/ still work and support the same frontmatter. Skills are recommended since they support additional features like supporting files.
Skills defined in .claude/skills/ within directories added via --add-dir are loaded automatically and picked up by live change detection, so you can edit them during a session without restarting.
CLAUDE.md files from --add-dir directories are not loaded by default. To load them, set CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1. See Load memory from additional directories.
Skill files can contain any instructions, but thinking about how you want to invoke them helps guide what to include:Reference content adds knowledge Claude applies to your current work. Conventions, patterns, style guides, domain knowledge. This content runs inline so Claude can use it alongside your conversation context.
Copy
Ask AI
---name: api-conventionsdescription: API design patterns for this codebase---When writing API endpoints:- Use RESTful naming conventions- Return consistent error formats- Include request validation
Task content gives Claude step-by-step instructions for a specific action, like deployments, commits, or code generation. These are often actions you want to invoke directly with /skill-name rather than letting Claude decide when to run them. Add disable-model-invocation: true to prevent Claude from triggering it automatically.
Copy
Ask AI
---name: deploydescription: Deploy the application to productioncontext: forkdisable-model-invocation: true---Deploy the application:1. Run the test suite2. Build the application3. Push to the deployment target
Your SKILL.md can contain anything, but thinking through how you want the skill invoked (by you, by Claude, or both) and where you want it to run (inline or in a subagent) helps guide what to include. For complex skills, you can also add supporting files to keep the main skill focused.
Skills can include multiple files in their directory. This keeps SKILL.md focused on the essentials while letting Claude access detailed reference material only when needed. Large reference docs, API specifications, or example collections don’t need to load into context every time the skill runs.
Copy
Ask AI
my-skill/├── SKILL.md (required - overview and navigation)├── reference.md (detailed API docs - loaded when needed)├── examples.md (usage examples - loaded when needed)└── scripts/ └── helper.py (utility script - executed, not loaded)
Reference supporting files from SKILL.md so Claude knows what each file contains and when to load it:
Copy
Ask AI
## Additional resources- For complete API details, see [reference.md](reference.md)- For usage examples, see [examples.md](examples.md)
Keep SKILL.md under 500 lines. Move detailed reference material to separate files.
By default, both you and Claude can invoke any skill. You can type /skill-name to invoke it directly, and Claude can load it automatically when relevant to your conversation. Two frontmatter fields let you restrict this:
disable-model-invocation: true: Only you can invoke the skill. Use this for workflows with side effects or that you want to control timing, like /commit, /deploy, or /send-slack-message. You don’t want Claude deciding to deploy because your code looks ready.
user-invocable: false: Only Claude can invoke the skill. Use this for background knowledge that isn’t actionable as a command. A legacy-system-context skill explains how an old system works. Claude should know this when relevant, but /legacy-system-context isn’t a meaningful action for users to take.
This example creates a deploy skill that only you can trigger. The disable-model-invocation: true field prevents Claude from running it automatically:
Copy
Ask AI
---name: deploydescription: Deploy the application to productiondisable-model-invocation: true---Deploy $ARGUMENTS to production:1. Run the test suite2. Build the application3. Push to the deployment target4. Verify the deployment succeeded
Here’s how the two fields affect invocation and context loading:
Frontmatter
You can invoke
Claude can invoke
When loaded into context
(default)
Yes
Yes
Description always in context, full skill loads when invoked
disable-model-invocation: true
Yes
No
Description not in context, full skill loads when you invoke
user-invocable: false
No
Yes
Description always in context, full skill loads when invoked
In a regular session, skill descriptions are loaded into context so Claude knows what’s available, but full skill content only loads when invoked. Subagents with preloaded skills work differently: the full skill content is injected at startup.
Use the allowed-tools field to limit which tools Claude can use when a skill is active. This skill creates a read-only mode where Claude can explore files but not modify them:
Copy
Ask AI
---name: safe-readerdescription: Read files without making changesallowed-tools: Read, Grep, Glob---
Both you and Claude can pass arguments when invoking a skill. Arguments are available via the $ARGUMENTS placeholder.This skill fixes a GitHub issue by number. The $ARGUMENTS placeholder gets replaced with whatever follows the skill name:
Copy
Ask AI
---name: fix-issuedescription: Fix a GitHub issuedisable-model-invocation: true---Fix GitHub issue $ARGUMENTS following our coding standards.1. Read the issue description2. Understand the requirements3. Implement the fix4. Write tests5. Create a commit
When you run /fix-issue 123, Claude receives “Fix GitHub issue 123 following our coding standards…”If you invoke a skill with arguments but the skill doesn’t include $ARGUMENTS, Claude Code appends ARGUMENTS: <your input> to the end of the skill content so Claude still sees what you typed.To access individual arguments by position, use $ARGUMENTS[N] or the shorter $N:
Copy
Ask AI
---name: migrate-componentdescription: Migrate a component from one framework to another---Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].Preserve all existing behavior and tests.
Running /migrate-component SearchBar React Vue replaces $ARGUMENTS[0] with SearchBar, $ARGUMENTS[1] with React, and $ARGUMENTS[2] with Vue. The same skill using the $N shorthand:
Copy
Ask AI
---name: migrate-componentdescription: Migrate a component from one framework to another---Migrate the $0 component from $1 to $2.Preserve all existing behavior and tests.
The !command“ syntax runs shell commands before the skill content is sent to Claude. The command output replaces the placeholder, so Claude receives actual data, not the command itself.This skill summarizes a pull request by fetching live PR data with the GitHub CLI. The !gh pr diff“ and other commands run first, and their output gets inserted into the prompt:
Copy
Ask AI
---name: pr-summarydescription: Summarize changes in a pull requestcontext: forkagent: Exploreallowed-tools: Bash(gh *)---## Pull request context- PR diff: !`gh pr diff`- PR comments: !`gh pr view --comments`- Changed files: !`gh pr diff --name-only`## Your taskSummarize this pull request...
When this skill runs:
Each !command“ executes immediately (before Claude sees anything)
The output replaces the placeholder in the skill content
Claude receives the fully-rendered prompt with actual PR data
This is preprocessing, not something Claude executes. Claude only sees the final result.
To enable extended thinking in a skill, include the word “ultrathink” anywhere in your skill content.
Add context: fork to your frontmatter when you want a skill to run in isolation. The skill content becomes the prompt that drives the subagent. It won’t have access to your conversation history.
context: fork only makes sense for skills with explicit instructions. If your skill contains guidelines like “use these API conventions” without a task, the subagent receives the guidelines but no actionable prompt, and returns without meaningful output.
Skills and subagents work together in two directions:
Approach
System prompt
Task
Also loads
Skill with context: fork
From agent type (Explore, Plan, etc.)
SKILL.md content
CLAUDE.md
Subagent with skills field
Subagent’s markdown body
Claude’s delegation message
Preloaded skills + CLAUDE.md
With context: fork, you write the task in your skill and pick an agent type to execute it. For the inverse (defining a custom subagent that uses skills as reference material), see Subagents.
This skill runs research in a forked Explore agent. The skill content becomes the task, and the agent provides read-only tools optimized for codebase exploration:
Copy
Ask AI
---name: deep-researchdescription: Research a topic thoroughlycontext: forkagent: Explore---Research $ARGUMENTS thoroughly:1. Find relevant files using Glob and Grep2. Read and analyze the code3. Summarize findings with specific file references
When this skill runs:
A new isolated context is created
The subagent receives the skill content as its prompt (“Research $ARGUMENTS thoroughly…”)
The agent field determines the execution environment (model, tools, and permissions)
Results are summarized and returned to your main conversation
The agent field specifies which subagent configuration to use. Options include built-in agents (Explore, Plan, general-purpose) or any custom subagent from .claude/agents/. If omitted, uses general-purpose.
By default, Claude can invoke any skill that doesn’t have disable-model-invocation: true set. Skills that define allowed-tools grant Claude access to those tools without per-use approval when the skill is active. Your permission settings still govern baseline approval behavior for all other tools. Built-in commands like /compact and /init are not available through the Skill tool.Three ways to control which skills Claude can invoke:Disable all skills by denying the Skill tool in /permissions:
# Allow only specific skillsSkill(commit)Skill(review-pr *)# Deny specific skillsSkill(deploy *)
Permission syntax: Skill(name) for exact match, Skill(name *) for prefix match with any arguments.Hide individual skills by adding disable-model-invocation: true to their frontmatter. This removes the skill from Claude’s context entirely.
The user-invocable field only controls menu visibility, not Skill tool access. Use disable-model-invocation: true to block programmatic invocation.
Skills can bundle and run scripts in any language, giving Claude capabilities beyond what’s possible in a single prompt. One powerful pattern is generating visual output: interactive HTML files that open in your browser for exploring data, debugging, or creating reports.This example creates a codebase explorer: an interactive tree view where you can expand and collapse directories, see file sizes at a glance, and identify file types by color.Create the Skill directory:
Create ~/.claude/skills/codebase-visualizer/SKILL.md. The description tells Claude when to activate this Skill, and the instructions tell Claude to run the bundled script:
Copy
Ask AI
---name: codebase-visualizerdescription: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.allowed-tools: Bash(python *)---# Codebase VisualizerGenerate an interactive HTML tree view that shows your project's file structure with collapsible directories.## UsageRun the visualization script from your project root:```bashpython ~/.claude/skills/codebase-visualizer/scripts/visualize.py .```This creates `codebase-map.html` in the current directory and opens it in your default browser.## What the visualization shows- **Collapsible directories**: Click folders to expand/collapse- **File sizes**: Displayed next to each file- **Colors**: Different colors for different file types- **Directory totals**: Shows aggregate size of each folder
Create ~/.claude/skills/codebase-visualizer/scripts/visualize.py. This script scans a directory tree and generates a self-contained HTML file with:
A summary sidebar showing file count, directory count, total size, and number of file types
A bar chart breaking down the codebase by file type (top 8 by size)
A collapsible tree where you can expand and collapse directories, with color-coded file type indicators
The script requires Python but uses only built-in libraries, so there are no packages to install:
To test, open Claude Code in any project and ask “Visualize this codebase.” Claude runs the script, generates codebase-map.html, and opens it in your browser.This pattern works for any visual output: dependency graphs, test coverage reports, API documentation, or database schema visualizations. The bundled script does the heavy lifting while Claude handles orchestration.
Skill descriptions are loaded into context so Claude knows what’s available. If you have many skills, they may exceed the character budget. The budget scales dynamically at 2% of the context window, with a fallback of 16,000 characters. Run /context to check for a warning about excluded skills.To override the limit, set the SLASH_COMMAND_TOOL_CHAR_BUDGET environment variable.