Magic Slash
Magic Slash automates your entire development cycle with 7 powerful skills for Jira and GitHub.
Skills
| Skill | Description |
|---|---|
/magic:start | Start a task from a Jira ticket or GitHub issue |
/magic:continue | Resume work on an existing ticket |
/magic:commit | Create an atomic commit with conventional message |
/magic:pr | Push, create PR and update Jira |
/magic:review | Review a Pull Request (self or external) |
/magic:resolve | Address review comments and force-push fixes |
/magic:done | Finalize after PR merge (transition Jira to Done) |
Type
/magic:to quickly find all commands.
You can also invoke skills using natural language:
- "démarre PROJ-123" or "work on PROJ-123" →
/magic:start - "je reprends PROJ-123" or "continue PROJ-123" →
/magic:continue - "je suis prêt à committer" or "ready to commit" →
/magic:commit - "on peut créer la PR" or "create the PR" →
/magic:pr - "regarde la PR" or "review my PR" →
/magic:review - "corriger les commentaires" or "fix review comments" →
/magic:resolve - "la PR est mergée" or "the PR is merged" →
/magic:done
Installation
curl -fsSL https://magic-slash.io/install.sh | bash
Prerequisites
- Claude Code
- Node.js 20+ (see
.nvmrc) - Git
- jq
What the script does
- Configures Atlassian MCP (prompts for OAuth authentication)
- Configures GitHub MCP (prompts for your token)
- Configures your repositories (1 to N repos with optional keywords for smart detection)
- Installs the 7 skills
Usage
/magic:start - Start a task
/magic:start PROJ-1234 # Jira ticket
/magic:start 42 # GitHub issue
/magic:start #42 # GitHub issue (with #)
- Detects the ticket type (Jira or GitHub) based on format
- Fetches ticket/issue details (title, description, labels)
- Analyzes the scope using keyword-based scoring to select relevant repositories
- Creates Git worktrees automatically for selected repos
- Generates an agent context to start coding
Jira example (single repo detected):
> /magic:start PROJ-42
Source: Jira
Ticket: PROJ-42 - Add API endpoint for users
Type: Feature
Scope: api (score: 15) - matched keywords: "backend", "api"
Worktree created:
✓ /projects/my-api-PROJ-42
Context:
You need to implement the new API endpoint for users...
Jira example (multiple repos detected):
> /magic:start PROJ-42
Source: Jira
Ticket: PROJ-42 - Add pagination on /users
Type: Feature
This ticket seems to concern multiple repositories:
1. api (score: 15) - matched keywords: "backend", "api"
2. web (score: 10) - matched keywords: "frontend"
Which one do you want to use? (1, 2, or 'all')
> all
Worktrees created:
✓ /projects/my-api-PROJ-42
✓ /projects/my-web-PROJ-42
/magic:commit - Create a commit
/magic:commit
- Stage all changes
- Analyze the diff
- Evaluate if changes should be split into multiple commits
- Generate a conventional message (respects per-repo settings)
- Auto-fix pre-commit hook errors (lint, format, etc.)
- Create the commit
Format examples:
| Format | Example |
|---|---|
| conventional | feat: add JWT token refresh mechanism |
| angular | feat(auth): add JWT token refresh mechanism |
| gitmoji | :sparkles: add JWT token refresh mechanism |
With ticket ID (if enabled):
[PROJ-123] feat(auth): add JWT token refresh mechanism
Multi-repo support: If you're in a worktree associated with a ticket that spans multiple repos,
/magic:commit will detect all related worktrees and commit changes in each one.
/magic:pr - Push and create a Pull Request
/magic:pr
- Push the branch to origin
- Create a Pull Request (via GitHub MCP)
- Uses your project's PR template if one exists
- Auto-links Jira/GitHub tickets in description (by default)
- Extract ticket ID from branch name
- Update Jira ticket → "To be reviewed"
- Add comment with PR link on Jira (by default)
Multi-repo support: If you're in a worktree associated with a ticket that spans multiple repos,
/magic:pr will push and create PRs for each one.
Example:
📌 Branch : feature/PROJ-42
🔗 PR : https://github.com/org/repo/pull/42
🎫 Ticket : PROJ-42 → To be reviewed
Next steps:
1. Request a review from your colleagues
2. Wait for approval and CI checks
3. Merge the PR once approved
/magic:review - Review a Pull Request
/magic:review # Review the PR for the current branch
/magic:review PROJ-42 # Review a specific ticket's PR
- Detect the PR associated with the current branch (or a given ticket)
- Determine if this is a self-review or an external review
- Fetch the PR diff and changed files
- Analyze each file for issues, suggestions, and good practices
- Submit the review on GitHub with categorized inline comments (Blocking / Suggestion / Praise)
Note: This skill is read-only — it does not modify any files.
/magic:resolve - Address review feedback
/magic:resolve # Fix comments on the current branch's PR
/magic:resolve PROJ-42 # Fix comments for a specific ticket's PR
- Retrieve unresolved review comments from the PR
- Analyze each comment and determine required changes
- Apply fixes to the codebase
- Amend or create fixup commits as appropriate
- Force-push with
--force-with-lease
/magic:done - Finalize after merge
/magic:done
- Verify the PR has been merged
- Transition the Jira ticket to "Done"
- Add a final comment on Jira with a summary
- Update task status in the Desktop app
Example:
✅ Task finalized!
🎫 Ticket : PROJ-42 → Done
🔗 PR : https://github.com/org/repo/pull/42 (merged)
Desktop App
Magic Slash ships a native desktop application built with Electron, featuring integrated Claude Code terminals, project management sidebar, and agent tracking. The app checks for updates automatically on launch.
# Install desktop dependencies
npm run desktop:install
# Run in development mode
npm run desktop
# Build for production
npm run desktop:build
# Package for macOS
npm run desktop:package
Configuration
Files
| File | Description |
|---|---|
~/.claude/settings.json | Atlassian & GitHub MCP configuration |
~/.config/magic-slash/config.json | Repository paths, keywords, settings |
~/.local/bin/magic-slash | CLI command to launch the desktop app |
~/.claude/skills/magic-slash/ | Installed skills (all 7 skills) |
Configuration schema
{
"version": "0.42.4",
"repositories": {
"api": {
"path": "/Users/dev/projects/my-api",
"keywords": ["backend", "api", "server"],
"color": "#3B82F6",
"languages": {
"commit": "en",
"pullRequest": "fr",
"jiraComment": "en",
"discussion": "en"
},
"commit": {
"style": "single-line",
"format": "angular",
"coAuthor": true,
"includeTicketId": true
},
"resolve": {
"commitMode": "new",
"useCommitConfig": true,
"replyToComments": true,
"replyLanguage": "en"
},
"pullRequest": {
"autoLinkTickets": true
},
"issues": {
"commentOnPR": true,
"jiraUrl": "",
"githubIssuesUrl": ""
},
"branches": {
"development": "develop"
},
"worktreeFiles": [".env", ".env.local"]
},
"web": {
"path": "/Users/dev/projects/my-web",
"keywords": ["frontend", "ui", "react"]
}
}
}
The
versionfield is managed automatically by the installer.
Repository settings
Each repository can be independently configured:
Languages
| Setting | Description | Default |
|---|---|---|
commit | Language for commit messages | en |
pullRequest | Language for PR title and description | en |
jiraComment | Language for Jira comments | en |
discussion | Language for Claude Code interactions | en |
Supported languages:
en(English) andfr(French).
Commit settings
| Setting | Description | Default |
|---|---|---|
style | single-line or multi-line (with body) | single-line |
format | conventional, angular, gitmoji, or none | angular |
coAuthor | Add Claude as co-author in commits | true |
includeTicketId | Add ticket ID from branch name in commit message | true |
Resolve settings
| Setting | Description | Default |
|---|---|---|
commitMode | new (new commit + push) or amend (amend + force-push) | new |
useCommitConfig | Inherit format/style from commit settings | true |
replyToComments | Reply in-thread on GitHub for each resolved comment | true |
replyLanguage | Language for comment replies (en, fr) | en |
Pull Request settings
| Setting | Description | Default |
|---|---|---|
autoLinkTickets | Add Jira/GitHub ticket links in PR description | true |
Issues settings
| Setting | Description | Default |
|---|---|---|
commentOnPR | Add comment with PR link when creating the PR | true |
jiraUrl | Base URL for Jira instance | "" |
githubIssuesUrl | URL for GitHub Issues | "" |
Branches settings
| Setting | Description | Default |
|---|---|---|
development | Base branch for worktrees and PRs (e.g. develop, main) | "" |
If
developmentis empty, the skill prompts the user to specify the base branch.
Worktree files
| Setting | Description | Default |
|---|---|---|
worktreeFiles | Files to auto-copy from main repo to worktrees (e.g., .env) | [] |
When creating a worktree, Magic Slash copies these files from the main repository. If not configured, it auto-detects common untracked files and offers to save them for future use.
Keywords
Keywords are used for smart repository selection when starting a task:
- When a Jira ticket has labels/components matching keywords → +10 points
- When keywords are found in the ticket title → +5 points
- When keywords are found in the description → +2 points
- If no keywords are specified, the repository name is used as default
Project structure
magic-slash/
├── .github/
│ ├── ISSUE_TEMPLATE/ # Bug report, feature request templates & config
│ ├── workflows/ # CI and release workflows
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── dependabot.yml
├── desktop/ # Electron desktop app
│ ├── src/
│ │ ├── main/ # Main process (config, PTY, IPC)
│ │ ├── preload/ # Secure bridge
│ │ └── renderer/ # React UI (pages, components, hooks)
│ ├── resources/ # App icons & logo
│ └── package.json
├── skills/ # Claude Code skills (7 skills)
│ ├── magic-start/ # Start a task
│ │ ├── SKILL.md
│ │ └── references/ # Messages, glossary, API docs, templates
│ ├── magic-continue/ # Resume work on a ticket
│ │ ├── SKILL.md
│ │ └── references/
│ ├── magic-commit/ # Create atomic commits
│ │ ├── SKILL.md
│ │ └── references/
│ ├── magic-pr/ # Push and create PR
│ │ ├── SKILL.md
│ │ └── references/
│ ├── magic-review/SKILL.md # Review a Pull Request
│ ├── magic-resolve/ # Address review feedback
│ │ ├── SKILL.md
│ │ └── references/
│ ├── magic-done/SKILL.md # Finalize after merge
│ └── evals/ # Eval set and results
├── docs/ # Landing page (GitHub Pages)
│ ├── index.html # Main page
│ ├── documentation.html # Documentation page
│ ├── logo.svg # Logo (vector)
│ ├── fonts/ # Custom fonts (Avenir, CeraPro)
│ └── CNAME # Custom domain config
├── install/
│ ├── install.sh # Installation script
│ ├── uninstall.sh # Uninstallation script
│ └── magic-slash # CLI script (launches Desktop app)
├── CHANGELOG.md # Version history
├── CODE_OF_CONDUCT.md # Community guidelines
├── CONTRIBUTING.md # Contribution guide
├── LICENSE # MIT License
├── README.md # This file
├── SECURITY.md # Security policy
├── commitlint.config.js # Commit message linting
├── eslint.config.mjs # ESLint configuration
├── vitest.config.ts # Test configuration
└── package.json # Dev dependencies (linters, tests)
Contributing
Contributions are welcome! Please read our contributing guidelines before getting started.
- Contributing Guide - How to contribute to the project
- Code of Conduct - Our community standards
- Security Policy - How to report security vulnerabilities
Quick Start for Contributors
# Clone the repository
git clone https://github.com/xrequillart/magic-slash.git
cd magic-slash
# Install dev dependencies
npm install
# Install yamllint (required for YAML linting)
pip install yamllint # or: brew install yamllint
# Run linters
npm run lint
# Run tests
npm test
# Install desktop dependencies and run in dev mode
npm run desktop:install
npm run desktop
Acknowledgments
Magic Slash is built with and for:
- Claude Code - AI-powered coding assistant
- Atlassian MCP - Jira and Confluence integration
- GitHub MCP - GitHub integration
- Conventional Commits - Commit message standard
- Electron - Desktop application framework
- React - UI library for desktop app
- Tailwind CSS - Utility-first CSS framework
License
MIT - See LICENSE for details.
<p align="center"> Made with love by <a href="https://github.com/xrequillart">Xrequillart</a> </p>