diff --git a/profiles/opencode/command/code-review.md b/profiles/opencode/command/code-review.md index f4126d1..bf4459d 100644 --- a/profiles/opencode/command/code-review.md +++ b/profiles/opencode/command/code-review.md @@ -1,8 +1,10 @@ --- description: Review changes with parallel @code-review subagents --- -Review the code changes using THREE (3) @code-review subagents and correlate results into a summary ranked by severity. Use the provided user guidance to steer the review and focus on specific code paths, changes, and/or areas of concern. +Review the code changes using THREE (3) @code-review subagents and correlate results into a summary ranked by severity. Use the provided user guidance to steer the review and focus on specific code paths, changes, and/or areas of concern. Once all three @code-review subagents return their findings and you have correlated and summarized the results, consult the @oracle subagent to perform a deep review on the findings focusing on accuracy and correctness by evaluating the surrounding code, system, subsystems, abstractions, and overall architecture of each item. Apply any recommendations from the oracle. NEVER SKIP ORACLE REVIEW. Guidance: $ARGUMENTS +First, call `skill({ name: 'vcs-detect' })` to determine whether the repo uses git or jj, then use the appropriate VCS commands throughout. + Review uncommitted changes by default. If no uncommitted changes, review the last commit. If the user provides a pull request/merge request number or link, use CLI tools (gh/glab) to fetch it and then perform your review. diff --git a/profiles/opencode/skill/vcs-detect/SKILL.md b/profiles/opencode/skill/vcs-detect/SKILL.md new file mode 100644 index 0000000..8d770ef --- /dev/null +++ b/profiles/opencode/skill/vcs-detect/SKILL.md @@ -0,0 +1,70 @@ +--- +name: vcs-detect +description: Detect whether the current project uses jj (Jujutsu) or git for version control. Run this BEFORE any VCS command to use the correct tool. +--- + +# VCS Detection Skill + +Detect the version control system in use before running any VCS commands. + +## Why This Matters + +- jj (Jujutsu) and git have different CLIs and workflows +- Running `git` commands in a jj repo (or vice versa) causes errors +- Some repos use jj with git colocated (both `.jj/` and `.git/` exist) + +## Detection Logic + +Both `jj root` and `git rev-parse --show-toplevel` walk up the filesystem to find repo root. + +**Priority order:** + +1. `jj root` succeeds → jj (handles colocated too) +2. `git rev-parse` succeeds → git +3. Both fail → no VCS + +## Detection Command + +```bash +if jj root &>/dev/null; then echo "jj" +elif git rev-parse --show-toplevel &>/dev/null; then echo "git" +else echo "none" +fi +``` + +## Command Mappings + +| Operation | git | jj | +|-----------|-----|-----| +| Status | `git status` | `jj status` | +| Log | `git log` | `jj log` | +| Diff | `git diff` | `jj diff` | +| Commit | `git commit` | `jj commit` / `jj describe` | +| Branch list | `git branch` | `jj branch list` | +| New branch | `git checkout -b ` | `jj branch create ` | +| Push | `git push` | `jj git push` | +| Pull/Fetch | `git pull` / `git fetch` | `jj git fetch` | +| Rebase | `git rebase` | `jj rebase` | + +## Usage + +Before any VCS operation: + +1. Run detection command +2. Use appropriate CLI based on result +3. If `none`, warn user directory is not version controlled + +## Example Integration + +``` +User: Show me the git log +Agent: [Runs detection] -> Result: jj +Agent: [Runs `jj log` instead of `git log`] +``` + +## Colocated Repos + +When both `.jj/` and `.git/` exist, the repo is "colocated": +- jj manages the working copy +- git is available for compatibility (GitHub, etc.) +- **Always prefer jj commands** in colocated repos