.cursor/skills/dmtools/SKILL.md
Comprehensive documentation and assistance for DMtools - AI-powered development toolkit with 96+ MCP tools for Jira, Azure DevOps, Figma, Confluence, Teams, and test automation. Use when working with DMtools, configuring integrations, developing JavaScript agents, generating test cases, building reports (ReportGenerator/dmc_report), creating CLI agent workflows, or setting up CI/CD run tracing (ciRunUrl) for Teammate/Expert/TestCasesGenerator jobs.
npx skillsauth add istin/dmtools dmtoolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Comprehensive knowledge base for DMtools - an AI-powered development toolkit that integrates with multiple platforms and provides 96+ MCP tools for automation.
When a user mentions DMtools or asks to use it, IMMEDIATELY perform these checks:
Run the automated setup helper that checks and configures everything:
# Download and run setup helper
curl -fsSL https://raw.githubusercontent.com/IstiN/dmtools/main/dmtools-ai-docs/setup-dmtools.sh | bash
This script will:
OR follow manual steps below:
# Check if dmtools command is available
which dmtools || echo "DMtools not installed"
If NOT installed:
# Offer to install DMtools automatically
curl -fsSL https://raw.githubusercontent.com/IstiN/dmtools/main/install.sh | bash
# Check if dmtools.env exists in current directory or home
ls dmtools.env ~/.dmtools.env 2>/dev/null || echo "No dmtools.env found"
If NOT found, help user create it:
# Check if dmtools files are in .gitignore
grep -q "dmtools.env\|dmtools-local.env" .gitignore 2>/dev/null || echo "Not in .gitignore"
If NOT in .gitignore, add these lines:
# DMtools configuration (contains secrets)
dmtools.env
dmtools-local.env
.dmtools/
When creating dmtools.env, use this template and fill with user's credentials:
# dmtools.env - NEVER commit this file
# Generated by DMtools skill assistant
# ================================
# INTEGRATIONS (choose what you need)
# ================================
# Jira (if user needs Jira)
JIRA_BASE_PATH=https://your-company.atlassian.net
[email protected]
JIRA_API_TOKEN=your-jira-api-token
JIRA_AUTH_TYPE=Basic
# Azure DevOps (if user needs ADO)
# ADO_BASE_PATH=https://dev.azure.com/your-org
# ADO_PAT_TOKEN=your-ado-pat-token
# ================================
# AI PROVIDER (required - choose one)
# ================================
# Gemini (RECOMMENDED - free tier available)
GEMINI_API_KEY=your-gemini-api-key
# Get free key: https://aistudio.google.com/app/apikey
# OR OpenAI
# OPENAI_API_KEY=your-openai-api-key
# OR AWS Bedrock
# BEDROCK_ACCESS_KEY_ID=your-aws-key
# BEDROCK_SECRET_ACCESS_KEY=your-aws-secret
# ================================
# DEFAULTS
# ================================
DEFAULT_LLM=gemini
DEFAULT_TRACKER=jira
Quick Links for API Tokens:
# Verify installation works
dmtools list | head -5
Use this skill when:
ciRunUrl) for ticket traceability⚠️ IMPORTANT: If this is first time using DMtools, see FIRST-TIME SETUP section above.
If automated setup didn't work, follow these manual steps:
curl -fsSL https://raw.githubusercontent.com/IstiN/dmtools/main/install.sh | bash
Create dmtools.env in project root (see template in FIRST-TIME SETUP section)
echo -e "\n# DMtools configuration\ndmtools.env\ndmtools-local.env\n.dmtools/" >> .gitignore
See Installation Guide for detailed setup.
dmtools list # List all 96+ MCP tools
dmtools jira_get_ticket PROJ-123 # Get Jira ticket
dmtools run agents/config.json # Run configuration
dmtools run agents/config.json --ciRunUrl "https://ci.example.com/runs/42" # With CI tracing
dmtools run agents/config.json "${ENCODED_CONFIG}" --inputJql "key=PROJ-1" # With overrides
Complete Reference: references/mcp-tools/README.md - Auto-generated from actual DMtools build
Current breakdown (16 integrations):
Example tools:
jira_get_ticket, jira_search_by_jql, jira_xray_create_testado_get_work_item, ado_move_to_state, ado_add_commentfigma_get_layers, figma_get_icons, figma_download_node_imageteams_send_message, teams_messages_since, teams_download_filegemini_ai_chat, openai_ai_chat, openai_ai_chat_with_files, bedrock_ai_chatAll MCP tools are directly accessible as JavaScript functions in agents:
function action(params) {
try {
// Direct MCP tool access
const ticket = jira_get_ticket(params.ticketKey);
const analysis = gemini_ai_chat(`Analyze: ${ticket.fields.description}`);
// Process and return
return { success: true, result: analysis };
} catch (error) {
return { success: false, error: error.toString() };
}
}
| Category | Document | Description | |----------|----------|-------------| | Installation | Installation Guide | Complete setup for all platforms (macOS, Linux, Windows) | | | Troubleshooting | Common issues and solutions | | Configuration | Configuration Overview | Environment variables and hierarchy | | | JSON Configuration Rules | ⚠️ CRITICAL: Rules for job configurations | | | Jira Setup | API tokens and 52 tools | | | Azure DevOps | PAT setup and 23+ tools | | | Gemini AI | Free tier configuration (15 req/min) | | | Other AI Providers | OpenAI, Claude, DIAL, Ollama | | Jobs | Jobs Reference | Complete guide to all 23 jobs | | | Teammate | Flexible AI assistant with custom instructions | | | Expert | Domain expert Q&A based on project context | | | TestCasesGenerator | Automated test case generation | | | ReportGenerator | Report configuration, data sources, metrics | | Agents | Agent Best Practices | ⚠️ CRITICAL: Patterns and lessons learned | | | JavaScript Agents | GraalJS development with 152+ MCP tools | | | Teammate Configs | JSON-based AI workflows (CLI safety v1.7.133+) | | | CLI Integration | Cursor, Claude, Copilot, Gemini CLI agents | | Testing | Test Generation | Xray test case creation | | MCP Tools | MCP Tools Reference | Auto-generated list of 152+ tools (16 integrations) | | CI/CD | GitHub Actions | Automated ticket processing + CI run tracing |
Before using any job configuration, understand this:
The "name" field in JSON configs is NOT a user-defined name. It is a Java class name (technical identifier).
{
"name": "TestCasesGenerator" // ← Exact Java class name (immutable)
}
TestCasesGenerator, Teammate, ExpertWhy? DMtools maps this name directly to Java code: "TestCasesGenerator" → new TestCasesGenerator()
See JSON Configuration Rules for details.
# 1. Generate API token at https://id.atlassian.com/manage-profile/security/api-tokens
# 2. Encode credentials
echo -n "[email protected]:token" | base64
# 3. Add to dmtools.env
JIRA_BASE_PATH=https://company.atlassian.net
JIRA_LOGIN_PASS_TOKEN=base64_output_here
IMPORTANT: "name" must exactly match Job class name. See JSON Configuration Rules.
{
"name": "TestCasesGenerator",
"params": {
"inputJql": "project = PROJ AND type = Story",
"testCasesPriorities": "High, Medium, Low",
"outputType": "creation",
"testCaseIssueType": "Test",
"existingTestCasesJql": "project = PROJ AND type = Test",
"isFindRelated": true,
"isGenerateNew": true
}
}
// agents/js/processTickets.js
function action(params) {
const tickets = jira_search_by_jql(params.jql);
for (const ticket of tickets) {
// Process with AI
const result = gemini_ai_chat(`Analyze: ${ticket.fields.summary}`);
// Update ticket
jira_post_comment(ticket.key, result);
}
return { processed: tickets.length };
}
When running Expert, Teammate, or TestCasesGenerator from CI/CD, pass --ciRunUrl to link every ticket comment to the pipeline run.
The workflow ai-teammate.yml does this automatically — no extra config needed. For other pipelines:
# GitHub Actions
CI_RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
dmtools run agents/teammate.json --ciRunUrl "${CI_RUN_URL}"
# Azure DevOps
CI_RUN_URL="$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)"
dmtools run agents/teammate.json --ciRunUrl "${CI_RUN_URL}"
What happens on the ticket:
Processing started. CI Run: https://... — posted immediately when the job picks up the ticketCLI overrides — any --key value after the config file patches the params block:
# Override any param at runtime without editing the JSON
dmtools run agents/config.json "${ENCODED_CONFIG}" --inputJql "key=PROJ-42" --ciRunUrl "${CI_RUN_URL}"
See CI Run Tracing and GitHub Actions for full details.
Use Case: Code generation with full workspace context
{
"name": "Teammate",
"params": {
"agentParams": {
"aiRole": "Senior Software Engineer",
"instructions": ["Implement ticket from input/ folder"]
},
"cliCommands": [
"./cicd/scripts/run-cursor-agent.sh \"Read from input/, write to output/\""
],
"skipAIProcessing": true,
"postJSAction": "agents/js/developTicketAndCreatePR.js",
"inputJql": "key = PROJ-123"
}
}
Pattern: Teammate prepares context → CLI agent processes → Post-action creates PR
See CLI Integration Guide for complete examples.
| Issue | Solution |
|-------|----------|
| "Java 23 required" | Run installer again, it auto-installs Java |
| "401 Unauthorized" | Check base64 encoding of Jira credentials |
| "Rate limit exceeded" | Add sleep(1000) between API calls |
| "Field not found" | Use jira_get_fields to find custom field IDs |
ALWAYS run setup checks when user:
I see you want to use DMtools. Let me check if it's set up properly...
[Run setup checks]
Results:
- ✓ DMtools installed
- ✗ dmtools.env not found
- ✗ Not in .gitignore
I'll help you configure it. First, which integrations do you need?
1. Jira
2. Azure DevOps
3. Both
4. Other
[Create appropriate dmtools.env template]
[Add to .gitignore]
[Guide user to get API tokens]
# Step 1: Run automated setup
curl -fsSL https://raw.githubusercontent.com/IstiN/dmtools/main/dmtools-ai-docs/setup-dmtools.sh | bash
# Step 2: If dmtools.env needs credentials, guide user:
# "I've created dmtools.env. You need to add your credentials:
# 1. Jira API token: https://id.atlassian.com/manage-profile/security/api-tokens
# 2. Gemini API key (FREE): https://aistudio.google.com/app/apikey
#
# Would you like me to help you configure Jira or Gemini first?"
# Step 3: Help user edit dmtools.env
# Step 4: Test with: dmtools list
Keep these handy for quick setup:
Jira Only:
JIRA_BASE_PATH=https://company.atlassian.net
[email protected]
JIRA_API_TOKEN=token_here
JIRA_AUTH_TYPE=Basic
GEMINI_API_KEY=key_here
DEFAULT_LLM=gemini
DEFAULT_TRACKER=jira
Azure DevOps Only:
ADO_BASE_PATH=https://dev.azure.com/org
ADO_PAT_TOKEN=token_here
GEMINI_API_KEY=key_here
DEFAULT_LLM=gemini
DEFAULT_TRACKER=ado
Both Jira + ADO:
JIRA_BASE_PATH=https://company.atlassian.net
[email protected]
JIRA_API_TOKEN=jira_token
JIRA_AUTH_TYPE=Basic
ADO_BASE_PATH=https://dev.azure.com/org
ADO_PAT_TOKEN=ado_token
GEMINI_API_KEY=key_here
DEFAULT_LLM=gemini
DEFAULT_TRACKER=jira
If you need clarification on requirements or implementation details, ask the user for more information before proceeding.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.