scratch-workspace
$
npx mdskill add TheBushidoCollective/han/scratch-workspaceIsolate temporary drafts and experiments from version control.
- Stores uncommitted work in a gitignored directory.
- Uses Bash and Glob to manage file placement.
- Organizes content into subfolders for clarity.
- Prevents accidental commits of experimental code.
SKILL.md
.github/skills/scratch-workspaceView on GitHub ↗
---
name: scratch-workspace
user-invocable: false
description: Use when creating temporary files, drafts, experiments, or any content that should not be committed to version control. Ensures proper placement in .claude/.scratch with gitignore configuration.
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
---
# Scratch Workspace Management
This skill covers proper use of the `.claude/.scratch/` directory for temporary, exploratory, and draft work.
## Purpose
The scratch workspace provides a gitignored location for:
- Draft implementations
- Experimental code
- Temporary test files
- Planning documents
- Any work-in-progress that shouldn't be committed
## Setup Checklist
Before creating scratch files:
1. **Ensure directory exists**
```bash
mkdir -p .claude/.scratch
```
2. **Verify gitignore**
Check `.gitignore` contains:
```
.claude/.scratch
```
If missing, add it:
```bash
echo '.claude/.scratch' >> .gitignore
```
## Directory Structure
Organize scratch files by purpose:
```
.claude/
├── .scratch/
│ ├── drafts/ # Work-in-progress implementations
│ │ └── feature-x.ts
│ ├── experiments/ # Exploratory code
│ │ └── perf-test.js
│ ├── notes/ # Planning and notes
│ │ └── architecture.md
│ └── temp/ # Truly temporary files
└── settings.json # Claude settings (NOT scratch)
```
## Best Practices
### DO
- Create subdirectories for organization
- Use descriptive file names
- Clean up when work is complete
- Move finalized code to proper project locations
### DON'T
- Put sensitive data in scratch (still on disk)
- Use scratch for files that should be committed
- Leave stale scratch files indefinitely
- Put scratch files outside `.claude/.scratch/`
## Workflow
### Starting Exploratory Work
```bash
# Create scratch area
mkdir -p .claude/.scratch/experiments
# Work on experiment
# ... create files in .claude/.scratch/experiments/
```
### Promoting to Real Code
When scratch work is ready:
1. Review and refine the code
2. Move to appropriate project location
3. Delete scratch version
4. Commit the promoted code
### Cleanup
Periodically clean scratch:
```bash
# Review what's in scratch
ls -la .claude/.scratch/
# Remove old experiments
rm -rf .claude/.scratch/experiments/old-test/
```
## Integration with Other Tools
### With Git
The `.claude/.scratch` directory is gitignored, so:
- `git status` won't show scratch files
- `git add .` won't stage scratch files
- Scratch files won't appear in commits
### With IDE
Most IDEs will show `.claude/.scratch` in the file tree. You can:
- Add to IDE's exclude patterns
- Keep visible for easy access
- Use IDE's "mark as excluded" feature
## Common Patterns
### Draft Implementation
```
.claude/.scratch/drafts/
└── new-feature/
├── index.ts
├── types.ts
└── test.ts
```
### Performance Experiment
```
.claude/.scratch/experiments/
└── perf-comparison/
├── approach-a.ts
├── approach-b.ts
└── benchmark.ts
```
### Architecture Notes
```
.claude/.scratch/notes/
└── refactor-plan.md
```
## Troubleshooting
### Scratch files appearing in git status
```bash
# Verify gitignore entry
grep -r ".claude/.scratch" .gitignore
# If missing, add it
echo '.claude/.scratch' >> .gitignore
```
### Directory doesn't exist
```bash
mkdir -p .claude/.scratch
```
### Accidentally committed scratch files
```bash
# Remove from tracking but keep locally
git rm -r --cached .claude/.scratch
git commit -m "chore: remove scratch files from tracking"
```
More from TheBushidoCollective/han
- absinthe-resolversUse when implementing GraphQL resolvers with Absinthe. Covers resolver patterns, dataloader integration, batching, and error handling.
- absinthe-schemaUse when designing GraphQL schemas with Absinthe. Covers type definitions, interfaces, unions, enums, and schema organization patterns.
- absinthe-subscriptionsUse when implementing real-time GraphQL subscriptions with Absinthe. Covers Phoenix channels, PubSub, and subscription patterns.
- act-docker-setupUse when configuring Docker environments for act, selecting runner images, managing container resources, or troubleshooting Docker-related issues with local GitHub Actions testing.
- act-local-testingUse when testing GitHub Actions workflows locally with act. Covers act CLI usage, Docker configuration, debugging workflows, and troubleshooting common issues when running workflows on your local machine.
- act-workflow-syntaxUse when creating or modifying GitHub Actions workflow files. Provides guidance on workflow syntax, triggers, jobs, steps, and expressions for creating valid GitHub Actions workflows that can be tested locally with act.
- ameba-configurationUse when configuring Ameba rules and settings for Crystal projects including .ameba.yml setup, rule management, severity levels, and code quality enforcement.
- ameba-custom-rulesUse when creating custom Ameba rules for Crystal code analysis including rule development, AST traversal, issue reporting, and rule testing.
- ameba-integrationUse when integrating Ameba into development workflows including CI/CD pipelines, pre-commit hooks, GitHub Actions, and automated code review processes.
- analyze-performanceAnalyze performance metrics and identify slow transactions in Sentry