jj-core
Manage version control with Jujutsu (jj) — no staging area, immediate changes, smart rebasing. Use when navigating history, squashing, or pushing to Git remotes.
What this skill does
# Jujutsu Git-compatible VCS with a different data model — no staging area, changes are immediate. Every file is tracked in the working copy as "changes" (like commits without parents). > ⚠️ **Never use `git` for mutations in a jj repo** — it corrupts history. Allowed: `git log`, `git diff`, `git show`, `git blame`, `git grep`. ## Basic Workflow Create a change, describe it, view history: ```bash jj new # Start a new change (like working on a commit) jj desc -m "feat: add login" # Write the message jj log # View history — this is your main view command jj diff # See what changed in working copy ``` Edit an existing change: ```bash jj edit <change-id> # Switch to a specific change # Make changes to files... jj squash # Move new edits into the parent change ``` ## Time Travel & Navigation Jump to any point in history: ```bash jj edit @- # Go to parent jj next --edit # Go to child jj edit <change-id> # Jump to specific change jj new --before @ # Insert a new change before current ``` ## Squash & Split Changes Combine changes into one: ```bash # Merge two changes together jj squash -m "combined message" # Split working copy into separate commits jj split # Interactive — pick hunks to commit separately ``` Auto-move changes to relevant commits in a stack: ```bash jj absorb # Smart squashing across mutable revisions ``` ## Rebasing & Merging Rebase changes onto another: ```bash jj rebase -s @- -d main # Rebase current change onto main jj rebase -d main -s ::@ # Rebase all descendants of @ onto main ``` Merge two changes: ```bash jj new x yz -m "merge" # Create merge of x and yz ``` ## Conflicts Resolve interactively: ```bash # Edit conflicted files, then continue jj resolve ``` ## Pushing to Git Bookmarks are like branches. Track and push them: ```bash jj bookmark create main -r @ # Create a bookmark at current change jj git push --bookmark main # Push that bookmark jj git fetch # Fetch from remote jj bookmark track main@origin # Track a remote bookmark ``` ## Useful Patterns **Undo an operation:** `jj undo` — reverses the last jj command. **Get git commit hash from jj change:** ```bash jj log -T 'commit_id\n' -r @ # Full hash jj log -T 'commit_id.short()\n' -r @ # Short hash git rev-parse @ # Also works in colocated repos ``` **Operation history:** `jj op log` — see all jj operations. ## Template Syntax (`-T` / `--template`) Templates use jj's own language — NOT JavaScript, NOT shell interpolation. **String concatenation requires `concat()`:** ```bash # ❌ WRONG — no implicit joining jj log -r @ -T 'commit_id.short() description' # ❌ WRONG — method chaining without concat jj log -r @ -T 'change_id.short() " | " commit_id.short()' # ✅ RIGHT — explicit concat jj log -r @ -T 'concat(change_id.short(), " | ", description)' ``` **Common fields:** `change_id`, `commit_id`, `description`, `author`, `committer`, `signature` **Field name is `description`, NOT `desc`:** ```bash # ❌ WRONG — undefined field jj log -r @ -T 'desc' # ✅ RIGHT jj log -r @ -T 'description' ``` **Double quotes for pipe alternation in bash:** ```bash # ✅ RIGHT — double quotes around revision set with pipe jj log -r "id1 | id2" -T 'concat(change_id.short(), "\n", description)' # ❌ WRONG — single quotes don't expand variables and can nest incorrectly jj log -r 'id1 | id2' -T 'description' ``` **After `jj desc`, the working copy (`@`) moves:** ```bash # Always verify with the original change ID, not @ jj desc -r <change-id> -m "new description" jj log --no-graph -r <change-id> -T 'concat(change_id.short(), " | ", description)' ``` ## Common Pitfalls - ❌ Use `@~1` → ✅ Use `@-` (parent) - ❌ Use `a,b,c` for union → ✅ Use `a | b | c` (pipe, not comma) - ❌ Use `jj changes` → ✅ Use `jj log` or `jj diff` - ❌ Template: implicit string joining → ✅ Always use `concat(a, b)` - ❌ Template: `desc` → ✅ Always use `description` - ❌ Verify with `@` after `jj desc` → ✅ Always use original change ID
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.