Convert commands to skills format
Claude Code unified commands and skills. Skills now use YAML frontmatter
for trigger phrases and $ARGUMENTS for dynamic argument substitution.

Assisted-by: Claude Opus 4.5 via Claude Code
change msyoxqopwnwpmqtltuxqzrrwvyouzulr
commit 33147a93c71ea97bf495999a50bb3f404f280756
author Alpha Chen <alpha@kejadlen.dev>
date
parent mmnyylro
diff --git a/ai/claude/commands/commit.md b/ai/claude/commands/commit.md
deleted file mode 100644
index d0e1f5ac..00000000
--- a/ai/claude/commands/commit.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Commit Changes
-
-Use the `describing-changes` skill to draft clear, reasoning-focused commit messages.
-The `elements-of-style` writing skill is required as a sub-skill for clarity.
-
-Usage:
-- `/commit` - Commit all current changes
-- `/commit <fileset>` - Commit only files matching the fileset expression
-
-Before committing:
-1. Check if a fileset was provided as arguments
-2. If a fileset is provided:
-   - Run `jj diff <fileset>` to view the specific changes being committed
-   - Use the `describing-changes` skill to draft the commit message based on these specific changes
-3. If no fileset is provided:
-   - Run `jj diff` to view all current changes
-   - Use the `describing-changes` skill to draft the commit message explaining reasoning
-4. The skill requires `elements-of-style:writing-clearly-and-concisely` for clarity
-5. Audit the message: is every sentence invisible in the diff?
-   - For each sentence, ask: "Does this explain something not visible in the code change?"
-   - If the answer is "no" (sentence just restates what the diff shows), delete it
-   - If all sentences pass the audit, proceed. If any fail, rewrite until they do.
-6. If a fileset is provided, use `jj commit <fileset>` to commit only matching files
-7. If no fileset is provided, use `jj commit` to commit all changes
-8. Include the "Assisted-by" footer with the current model and tool being used
-9. Use a HEREDOC for the commit message to ensure proper formatting
-10. Verify the commit with `jj show` to confirm only intended changes were committed
diff --git a/ai/claude/commands/describe.md b/ai/claude/commands/describe.md
deleted file mode 100644
index a0ee6365..00000000
--- a/ai/claude/commands/describe.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Describe a Change
-
-Use the `describing-changes` skill to draft a reasoning-focused description for a jj revision.
-The `elements-of-style` writing skill is required as a sub-skill for clarity.
-
-Usage:
-- `/describe <revision>` - Describe a specific revision (e.g., `-1`, `@-`, `r`, or commit ID)
-
-Revision argument is required.
-
-**Important:** Completely discard the existing revision description. This command rewrites it entirely.
-
-Process:
-1. View the target revision with `jj show -r <revision>` to understand the changes
-2. Use the `describing-changes` skill to draft a new description explaining reasoning
-   - Do NOT reference or build on the existing message
-   - Start from scratch explaining why this change exists
-   - The skill requires `elements-of-style:writing-clearly-and-concisely` for clarity
-3. Use `jj describe -r <revision>` with the drafted message, including the "Assisted-by" footer
-4. Use a HEREDOC for the description to ensure proper formatting
-5. Verify with `jj show -r <revision>` to confirm the message was updated
diff --git a/ai/claude/skills/commit/SKILL.md b/ai/claude/skills/commit/SKILL.md
new file mode 100644
index 00000000..7f2325e9
--- /dev/null
+++ b/ai/claude/skills/commit/SKILL.md
@@ -0,0 +1,34 @@
+---
+name: commit
+description: This skill should be used when the user asks to "commit changes", "commit my work", "/commit", "create a commit", or "jj commit". Drafts clear, reasoning-focused commit messages using jj.
+argument-hint: [fileset]
+---
+
+# Commit Changes
+
+Draft clear, reasoning-focused commit messages using the `describing-changes` skill.
+The `elements-of-style:writing-clearly-and-concisely` skill is required as a sub-skill for clarity.
+
+## Fileset (optional)
+
+`$ARGUMENTS`
+
+## Process
+
+1. Check if a fileset was provided: `$ARGUMENTS`
+2. If a fileset is provided:
+   - Run `jj diff $ARGUMENTS` to view the specific changes being committed
+   - Invoke the `describing-changes` skill to draft the commit message based on these specific changes
+3. If no fileset is provided (empty `$ARGUMENTS`):
+   - Run `jj diff` to view all current changes
+   - Invoke the `describing-changes` skill to draft the commit message explaining reasoning
+4. The skill requires `elements-of-style:writing-clearly-and-concisely` for clarity
+5. Audit the message: is every sentence invisible in the diff?
+   - For each sentence, ask: "Does this explain something not visible in the code change?"
+   - If the answer is "no" (sentence just restates what the diff shows), delete it
+   - If all sentences pass the audit, proceed. If any fail, rewrite until they do.
+6. If a fileset is provided, use `jj commit $ARGUMENTS` to commit only matching files (include the changelog in the fileset if it was updated)
+7. If no fileset is provided (empty `$ARGUMENTS`), use `jj commit` to commit all changes
+8. Include the "Assisted-by" footer with the current model and tool being used
+9. Use a HEREDOC for the commit message to ensure proper formatting
+10. Verify the commit with `jj show` to confirm only intended changes were committed
diff --git a/ai/claude/skills/describe/SKILL.md b/ai/claude/skills/describe/SKILL.md
new file mode 100644
index 00000000..d21f710d
--- /dev/null
+++ b/ai/claude/skills/describe/SKILL.md
@@ -0,0 +1,27 @@
+---
+name: describe
+description: This skill should be used when the user asks to "describe a change", "describe a revision", "/describe", "rewrite commit message", or "update revision description". Drafts reasoning-focused descriptions for jj revisions.
+argument-hint: <revision>
+---
+
+# Describe a Change
+
+Draft a reasoning-focused description for a jj revision using the `describing-changes` skill.
+The `elements-of-style:writing-clearly-and-concisely` skill is required as a sub-skill for clarity.
+
+## Target Revision
+
+`$ARGUMENTS`
+
+**Important:** Completely discard the existing revision description. This command rewrites it entirely.
+
+## Process
+
+1. View the target revision with `jj show -r $ARGUMENTS` to understand the changes
+2. Invoke the `describing-changes` skill to draft a new description explaining reasoning
+   - Do NOT reference or build on the existing message
+   - Start from scratch explaining why this change exists
+   - The skill requires `elements-of-style:writing-clearly-and-concisely` for clarity
+3. Use `jj describe -r $ARGUMENTS` with the drafted message, including the "Assisted-by" footer
+4. Use a HEREDOC for the description to ensure proper formatting
+5. Verify with `jj show -r $ARGUMENTS` to confirm the message was updated
diff --git a/ai/claude/commands/pr.md b/ai/claude/skills/pr/SKILL.md
similarity index 88%
rename from ai/claude/commands/pr.md
rename to ai/claude/skills/pr/SKILL.md
index 37fe6945..80c03075 100644
--- a/ai/claude/commands/pr.md
+++ b/ai/claude/skills/pr/SKILL.md
@@ -1,14 +1,23 @@
+---
+name: pr
+description: This skill should be used when the user asks to "create a pull request", "create a PR", "/pr", "open a PR", "submit for review", or "push and create PR". Creates pull requests using gh for jj revisions.
+argument-hint: <revision> [ready]
+---
+
 # Create Pull Request
 
 Create a pull request using gh for a specified revision.
 
-Usage:
-- `/pr <revision>` - Create a draft PR for the specified revision
-- `/pr <revision> ready` - Create a ready-for-review PR
+## Arguments
+
+`$ARGUMENTS`
+
+Parse arguments: first word is the revision, second word (if "ready") creates a ready-for-review PR instead of draft.
 
 Revision must be provided (bookmark, change ID, revset, or commit hash). The revision will be resolved to a bookmark for the PR.
 
-When creating a pull request:
+## Process
+
 1. Push revision and get bookmark name:
    - If revision has a remote-tracked bookmark: `jj git push --bookmark <name>`
    - If revision has a local-only bookmark: track then push: