Skip to content

AI Agent Skills

The Jubiloop monorepo includes a set of agentic development skills that automate common workflows: feature development, commits, pull requests, code review, documentation updates, and repository maintenance. Skills follow the Agent Skills open standard and work across multiple AI-powered development tools.

Setup

Skills work out of the box for basic usage (file editing, code generation). For full functionality, three external integrations are needed.

GitHub CLI (gh)

Required by: /create-pr, /update-pr, /release-notes, /review-pr

The PR creation and review skills use the GitHub CLI to interact with pull requests.

bash
# Install
brew install gh          # macOS
sudo apt install gh      # Ubuntu/Debian

# Authenticate
gh auth login

Why: Skills create PRs, fetch PR diffs, and post review comments via gh pr create, gh pr view, and gh api.

Shortcut MCP

Required by: /feature-dev, /commit, /create-pr, /create-ticket, /prototype-to-cards, /expand-card, /prototype-feature, /qa-test

The Shortcut MCP connects skills to our project management tool. Skills use it to fetch ticket details, extract context for commit messages, and link PRs to stories.

Get your API token at app.shortcut.com/settings/account/api-tokens.

Claude Code setup

The easiest way is the CLI:

bash
claude mcp add shortcut --transport=stdio \
  -e SHORTCUT_API_TOKEN=your-token-here \
  -- npx -y @shortcut/mcp@latest

Or add manually to ~/.claude.json under projects.mcpServers:

json
{
  "projects": {
    "mcpServers": {
      "shortcut": {
        "command": "npx",
        "args": ["-y", "@shortcut/mcp@latest"],
        "env": {
          "SHORTCUT_API_TOKEN": "your-token-here"
        }
      }
    }
  }
}
Cursor setup

Option A — hosted (recommended, no token required):

Add to ~/.cursor/mcp.json or <project-root>/.cursor/mcp.json:

json
{
  "mcpServers": {
    "shortcut": {
      "url": "https://mcp.shortcut.com/mcp"
    }
  }
}

Cursor will prompt you to authorise with Shortcut via OAuth on first use.

Option B — local via npx:

json
{
  "mcpServers": {
    "shortcut": {
      "command": "npx",
      "args": ["-y", "@shortcut/mcp@latest"],
      "env": {
        "SHORTCUT_API_TOKEN": "your-token-here"
      }
    }
  }
}
OpenCode setup

Add to your OpenCode MCP config:

json
{
  "mcpServers": {
    "shortcut": {
      "command": "npx",
      "args": ["-y", "@shortcut/mcp@latest"],
      "env": {
        "SHORTCUT_API_TOKEN": "your-token-here"
      }
    }
  }
}

Playwright MCP

Required by: /prototype-to-cards, /expand-card, /prototype-feature, /qa-test

Skills that interact with the UI prototype or run QA tests use Playwright MCP to navigate pages, take screenshots, and capture accessibility snapshots.

Claude Code setup
bash
claude mcp add playwright npx @playwright/mcp@latest

Or add manually to ~/.claude.json under projects.mcpServers:

json
{
  "projects": {
    "mcpServers": {
      "playwright": {
        "command": "npx",
        "args": ["@playwright/mcp@latest"]
      }
    }
  }
}
Cursor setup

Add to ~/.cursor/mcp.json or <project-root>/.cursor/mcp.json:

json
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}
OpenCode setup

Add to your OpenCode MCP config:

json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": ["npx", "@playwright/mcp@latest"],
      "enabled": true
    }
  }
}

Context7 MCP (optional)

Used by: /feature-dev

Context7 fetches up-to-date library documentation and code examples. Useful when working with AdonisJS, Better Auth, TanStack, and other project dependencies.

Claude Code setup
bash
claude mcp add context7 --transport=stdio \
  -- npx -y @context7/mcp@latest

Compatibility

Skills are discovered and invoked differently depending on which tool you use.

FeatureClaude CodeOpenCodeCursor
Discovers .claude/skills/Yes (native)Yes (native)Yes (compat layer)
/skill-name invocationYesVia .opencode/commands/ wrapperYes (native)
disable-model-invocationHonoredIgnored (own permission model)Honored
allowed-tools pre-approvalHonoredIgnoredIgnored
Auto-invocation by descriptionYesYesYes

OpenCode note: OpenCode discovers skills from .claude/skills/ but requires command wrappers in .opencode/commands/ for /skill-name invocation. These wrappers exist for all skills in this repo.

Cursor note: Cursor discovers skills from .claude/skills/ natively (compatibility layer). No additional configuration needed. The allowed-tools frontmatter field is silently ignored; tool permissions follow Cursor's own model.

Skills Registry

Development

SkillWhen to Use
/feature-devStarting a new feature or working on a Shortcut ticket. Orchestrates the full workflow: requirements, codebase exploration, solution design, implementation with review loops.
/commitReady to commit staged or unstaged changes. Analyzes the diff, extracts the ticket ID from the branch name, and drafts a commit message following project conventions. Always confirms before committing.
/create-ticketCreating a single Shortcut ticket from a description. Drafts the ticket using the project template, interviews about epic assignment with live Shortcut data, and creates after confirmation.
/prototype-featureBuilding a new UI feature in the prototype app (apps/ui-prototype). Takes a description or Shortcut ticket, implements the page/component with mock data, and screenshots the result. Use when a card has the wireframe-needed label.
/prototype-to-cardsGenerating Shortcut tickets from an existing prototype feature. Navigates the prototype via Playwright, screenshots key UI states, and drafts well-scoped cards using the project ticket template.
/expand-cardExpanding a high-level placeholder card (HLC) into 3-8 detailed, PR-review-sized Shortcut stories. Takes an HLC reference or Shortcut story ID, reads its Expansion Prompt, checks the codebase, and generates well-scoped implementation cards.

Quality & Review

SkillWhen to Use
/review-prReviewing a pull request for bugs, architectural violations, and convention adherence. Works locally or from GitHub Actions.
/qa-testPre-PR QA testing. Analyzes the branch diff, generates a test plan, executes via Playwright MCP with screenshots, and produces a pass/fail report. Use --for-pr to format results for PR descriptions.

Repository Management

SkillWhen to Use
/create-prOpening a pull request. Analyzes the git diff, fetches the Shortcut ticket, and drafts a PR description using the project template.
/update-prUpdating an existing PR description after new commits are pushed. Fetches the current description, identifies what changed, and proposes updates for confirmation.
/release-notesCutting a release to QA or production. Creates a develop→qa or qa→main PR with structured release notes grouped by app, CalVer versioning, and a deployment checklist. A GitHub Action auto-tags the release on merge.
/clean-branchesCleaning up local git branches that have been deleted on the remote. Also removes associated worktrees.
/update-docsDocumentation seems stale or a feature was just shipped. Scans code changes against existing docs and proposes updates.

Tooling

SkillWhen to Use
/manage-skillCreating a new skill or updating an existing one. Routes to /create-skill or /update-skill based on intent.
/create-skillScaffolding a brand new skill from scratch. Generates SKILL.md, reference files, OpenCode wrapper, validates, and updates this registry.
/update-skillModifying an existing skill. Reads the current state, applies changes, validates, and updates the registry.
/audit-skillsAuditing skills for redundant MCP calls, stale lookups, and optimization opportunities. Identifies static values being fetched dynamically and proposes reference file updates.

All skill definitions live in .claude/skills/<skill-name>/SKILL.md in the repo root. For pre-step and post-step guidance for each skill, see the Available Skills tables in the root AGENTS.md.

Typical Workflow

A feature development cycle using skills:

  1. Start the feature: /feature-dev sc-123 or /feature-dev add budget tracking to events
  2. During development: The feature-dev skill handles implementation, review loops, and commits internally
  3. After feature-dev completes: Review the summary and notes
  4. Check documentation: /update-docs to scan for stale or missing docs
  5. Open the PR: /create-pr to create a pull request with auto-populated description
  6. Review someone else's PR: /review-pr 85 to review PR #85

Not every step requires a skill. For small changes (typo fix, config tweak), just make the change and use /commit directly.

Creating and Updating Skills

Use /manage-skill to create new skills or update existing ones:

/manage-skill                          # asks what you want to do
/manage-skill add deploy staging       # creates a new deploy-staging skill
/manage-skill update feature-dev       # updates the existing feature-dev skill

The manage-skill workflow includes a validation step that checks structural validity, cross-references, tool completeness, and compatibility with other skills.

New skills are created in .claude/skills/<skill-name>/ with an optional OpenCode wrapper in .opencode/commands/. The skills registry in this document is updated as the last step.

Directory Structure

.claude/skills/                        # All skills (committed to repo)
  <skill-name>/
    SKILL.md                           # Main skill file (required)
    references/                        # Detailed docs loaded on demand
      writing-style.md                 # Prose style rules (if skill produces text)
      <topic>.md                       # Other reference material

.opencode/commands/                    # OpenCode command wrappers
  <skill-name>.md                      # Delegates to .claude/skills/<skill-name>/SKILL.md

.claude/references/                    # Shared references (not skill-specific)
  writing-style.md                     # Universal writing style guide

Skills follow the Agent Skills specification. The frontmatter fields (name, description, disable-model-invocation, allowed-tools) control discovery and invocation behavior.

Built with ❤️ by the Jubiloop team