Set up jj repositories including colocation decisions, integrate with development tools like Vite/Vitest, and choose between jj library and CLI for tooling. Use when setting up new repositories, experiencing tool integration issues, or building jj integrations.
/plugin marketplace add edmundmiller/dotfiles/plugin install jj@dotfiles-pluginsThis skill is limited to using the following tools:
faq-reference.mdKey decisions:
Understanding these choices helps you set up repositories correctly and avoid common integration issues.
What is colocation?
Using jj and git in the same working directory:
my-repo/
├── .git/ # Git repository
├── .jj/ # Jujutsu repository
└── src/ # Shared working directory
Creating colocated repository:
# Initialize jj in existing git repo
cd my-git-repo
jj git init --colocate
# Or create new colocated repo
jj git init --colocate my-repo
cd my-repo
Creating jj-only repository:
# Pure jj repository (no colocation)
jj git init my-repo
cd my-repo
Advantages:
Drawbacks:
Recommendation:
| Scenario | Recommendation |
|---|---|
| Learning jj | Colocate (easier transition) |
| Team migration | Colocate (gradual adoption) |
| New personal project | jj-only (cleaner) |
| Legacy git project | Colocate (tool compatibility) |
| CI/CD requirements | Colocate (git tooling) |
Problem: jj commands slow or hang in Vite/Vitest projects.
Cause: Vite's file watcher monitors .jj directory, causing conflicts and slowdowns.
Solution: Configure Vite to ignore .jj:
// vite.config.js or vite.config.ts
export default {
server: {
watch: {
ignored: ['**/.jj/**']
}
}
}
For Vitest:
// vitest.config.js or vitest.config.ts
export default {
test: {
// ... other config
watch: {
ignored: ['**/.jj/**']
}
}
}
Complete example:
import { defineConfig } from 'vite'
export default defineConfig({
server: {
watch: {
ignored: [
'**/.jj/**', // Ignore jj directory
'**/.git/**', // Good practice to ignore git too
'**/node_modules/**'
]
}
}
})
Common issues and fixes:
File watchers:
.jj/ from watching**/.jj/** or .jjIDEs (VS Code, IntelliJ, etc.):
// .vscode/settings.json
{
"files.watcherExclude": {
"**/.jj/**": true
},
"search.exclude": {
"**/.jj/**": true
}
}
Build tools:
.jj/ to ignore patterns.git/ configurationLinters/formatters:
# .prettierignore or .eslintignore
.jj/
Question: Should I use the jj library or parse CLI output?
Answer: Both have trade-offs. Library avoids parsing but isn't stable. CLI is also unstable but more flexible.
Pros:
Cons:
When to use:
Pros:
Cons:
When to use:
# Use --no-pager for scripting
jj log --no-pager
# Use templates for structured output
jj log --template 'commit_id ++ "\t" ++ description.first_line() ++ "\n"'
# Use revsets for precise queries
jj log -r 'mine() & after("1 week ago")'
# Check exit codes
if jj status &>/dev/null; then
echo "In jj repository"
fi
Example Python integration:
import subprocess
import json
def jj_log(revset="@"):
result = subprocess.run(
["jj", "log", "-r", revset, "--no-pager",
"--template", "json"],
capture_output=True,
text=True
)
return json.loads(result.stdout)
Use this skill when:
Don't use this skill for:
For detailed setup guides, configuration examples, and integration patterns:
📚 See detailed docs: faq-reference.md
This includes:
# Repository initialization
jj git init --colocate # Colocated repo (jj + git)
jj git init # jj-only repo
jj git init --colocate existing-git-repo # Add jj to git repo
# Configuration
~/.jjconfig.toml # Global config
.jj/repo/config.toml # Repository config
# Tool integration
# Vite: Add to vite.config.js
server.watch.ignored = ['**/.jj/**']
# VS Code: Add to .vscode/settings.json
"files.watcherExclude": {"**/.jj/**": true}
Colocation is a choice, not a requirement. Use it when you need git compatibility, prefer pure jj otherwise. Always configure development tools to ignore .jj/ directory to avoid conflicts and performance issues.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.