| name | dmtools |
| description | Comprehensive documentation and assistance for DMTools - an enterprise dark-factory orchestrator 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/ReportVisualizer), creating CLI agent workflows, or setting up CI/CD run tracing (ciRunUrl) for Teammate/Expert/TestCasesGenerator jobs. |
| license | Apache-2.0 |
| compatibility | ["Java 17+","macOS, Linux, Windows (WSL)"] |
| metadata | {"version":"skill-v1.0.23","author":"DMtools Team","repository":"https://github.com/epam/dm.ai","documentation":"https://github.com/epam/dm.ai/tree/main/dmtools-ai-docs"} |
DMtools Development Assistant
DMTools is an enterprise dark-factory orchestrator that integrates with multiple platforms and provides 96+ MCP tools for reusable delivery automation.
🔧 FIRST-TIME SETUP (DO THIS PROACTIVELY)
When a user mentions DMtools or asks to use it, IMMEDIATELY perform these checks:
🚀 Quick Installation Bootstrap (Recommended)
Install or refresh DMtools from the latest release first, then continue with the configuration checks below:
curl -fsSL https://github.com/epam/dm.ai/releases/latest/download/install.sh | bash
Then make sure to:
- ✓ Check whether
dmtools is available
- ✓ Create
dmtools.env if missing
- ✓ Add DMtools files to
.gitignore
- ✓ Verify Java installation
- ✓ Test DMtools functionality with
dmtools list
OR follow manual steps below:
Focused skill packages: install only the integrations you need with DMTOOLS_SKILLS=jira,github and the skill installer described in references/installation/README.md#install-only-the-skills-you-need.
Child agent configs: define a shared base config and extend it with the existing parent inheritance pattern.
Step 1: Check if DMtools is installed
which dmtools || echo "DMtools not installed"
If NOT installed:
curl -fsSL https://github.com/epam/dm.ai/releases/latest/download/install.sh | bash
Step 2: Check for dmtools.env configuration
ls dmtools.env ~/.dmtools.env 2>/dev/null || echo "No dmtools.env found"
If NOT found, help user create it:
- Ask user which integrations they need (Jira, ADO, Figma, etc.)
- Ask user which AI provider they want (Gemini free tier recommended)
- Create dmtools.env with appropriate template (see Configuration Template below)
- Add dmtools.env to .gitignore (contains secrets!)
Step 3: Verify .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/
Configuration Template
When creating dmtools.env, use this template and fill with user's credentials:
JIRA_BASE_PATH=https://your-company.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-jira-api-token
JIRA_AUTH_TYPE=Basic
GEMINI_API_KEY=your-gemini-api-key
DEFAULT_LLM=gemini
DEFAULT_TRACKER=jira
Quick Links for API Tokens:
Step 4: Test Installation
dmtools list | head -5
When to Use
Use this skill when:
- Installing or configuring DMtools (do setup steps above first!)
- Setting up integrations (Jira, Azure DevOps, Figma, Confluence, Teams)
- Configuring AI providers (Gemini, OpenAI, Claude, DIAL, Ollama)
- Developing JavaScript agents with MCP tools
- Generating test cases (Jira, Xray, Cucumber)
- Generating analytics reports (ReportGenerator, ReportVisualizer)
- Troubleshooting DMtools issues
- Working with dmtools.env configuration
- Creating AI teammate configurations
- Setting up CI/CD run tracing (
ciRunUrl) for ticket traceability
Quick Reference
⚠️ IMPORTANT: If this is first time using DMtools, see FIRST-TIME SETUP section above.
Manual Installation Steps
If automated setup didn't work, follow these manual steps:
1. Install DMtools CLI
curl -fsSL https://github.com/epam/dm.ai/releases/latest/download/install.sh | bash
2. Create dmtools.env
Create dmtools.env in project root (see template in FIRST-TIME SETUP section)
3. Add to .gitignore
echo -e "\n# DMtools configuration\ndmtools.env\ndmtools-local.env\n.dmtools/" >> .gitignore
4. Get API Tokens
See Installation Guide for detailed setup.
Common Commands
dmtools list
dmtools jira_get_ticket PROJ-123
dmtools run agents/config.json
dmtools run agents/config.json --ciRunUrl "https://ci.example.com/runs/42"
dmtools run agents/config.json "${ENCODED_CONFIG}" --inputJql "key=PROJ-1"
Core Capabilities
152+ MCP Tools Available
Complete Reference: references/mcp-tools/README.md - Auto-generated from actual DMtools build
Current breakdown (16 integrations):
- Jira (52 tools): Ticket management, search, comments, Xray test management
- Teams (30 tools): Messages, chats, files, transcripts, meetings
- Confluence (17 tools): Page management, search, content access, attachments
- ADO (31 tools): Azure DevOps work items, queries, comments, attachments, pull requests, code review threads
- Figma (12 tools): Design extraction, icons, layers, styles, components
- AI Providers (12 tools):
- Gemini (2): Chat, multimodal
- OpenAI (2): Chat, vision models with files
- Anthropic (2): Claude chat
- Bedrock (2): AWS Claude
- DIAL (2): Enterprise AI
- Ollama (2): Local models
- Knowledge Base (5 tools): Document search, indexing, RAG
- File (4 tools): File operations, read/write
- Mermaid (3 tools): Diagram generation
- SharePoint (2 tools): Document management
- CLI (1 tool): Command execution
Example tools:
jira_get_ticket, jira_search_by_jql, jira_xray_create_test
ado_get_work_item, ado_move_to_state, ado_add_comment
ado_list_prs, ado_get_pr, ado_add_pr_comment, ado_resolve_pr_thread, ado_merge_pr
figma_get_layers, figma_get_icons, figma_download_node_image
teams_send_message, teams_messages_since, teams_download_file
gemini_ai_chat, openai_ai_chat, openai_ai_chat_with_files, bedrock_ai_chat
JavaScript Agent Pattern
All MCP tools are directly accessible as JavaScript functions in agents:
function action(params) {
try {
const ticket = jira_get_ticket(params.ticketKey);
const analysis = gemini_ai_chat(`Analyze: ${ticket.fields.description}`);
return { success: true, result: analysis };
} catch (error) {
return { success: false, error: error.toString() };
}
}
📚 Detailed Documentation
| 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 |
| CLI Output Formats | json / toon / mini — token savings up to 70% |
| 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 |
| InstructionsGenerator | Build reusable implementation instructions from tracker tickets |
| JSRunner | Execute a standalone JavaScript agent with DMtools context |
| DevProductivityReport | Developer productivity metrics from tracker and SCM data |
| BAProductivityReport | BA productivity metrics across created work and status changes |
| QAProductivityReport | QA productivity metrics across bugs, tests, and comments |
| ReportGenerator | Generate JSON and HTML analytics reports from configurable sources |
| ReportVisualizer | Render an existing report JSON as interactive HTML |
| KBProcessingJob | Process source material into knowledge-base artifacts |
| 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 |
⚠️ CRITICAL: JSON Configuration "name" Field
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"
}
- ✅ DO: Use exact name from docs:
TestCasesGenerator, Teammate, Expert
- ❌ DON'T: Change it to "My Test Generator" or "test-generator"
Why? DMtools maps this name directly to Java code: "TestCasesGenerator" → new TestCasesGenerator()
See JSON Configuration Rules for details.
Common Tasks
Configure Jira Integration
echo -n "email@company.com:token" | base64
JIRA_BASE_PATH=https://company.atlassian.net
JIRA_LOGIN_PASS_TOKEN=base64_output_here
Generate Test Cases
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
}
}
Create JavaScript Agent
function action(params) {
const tickets = jira_search_by_jql(params.jql);
for (const ticket of tickets) {
const result = gemini_ai_chat(`Analyze: ${ticket.fields.summary}`);
jira_post_comment(ticket.key, result);
}
return { processed: tickets.length };
}
CI Run Tracing (GitHub Actions / Azure DevOps)
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:
CI_RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
dmtools run agents/teammate.json --ciRunUrl "${CI_RUN_URL}"
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 ticket
- Normal result comment posted when job finishes
CLI overrides — any --key value after the config file patches the params block:
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.
Integrate CLI Agents (Cursor, Claude, Copilot)
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.
Best Practices
- Security: Never commit credentials - use environment variables
- AI Provider: Start with Gemini (free tier, 15 req/min)
- Testing: Mock external APIs with Mockito
- Batch Processing: Add delays to avoid rate limits
- Error Handling: Always use try-catch in agents
Troubleshooting Quick Reference
| Issue | Solution |
|---|
| "Java 17+ 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 |
Architecture Notes
- Job System: 20+ specialized jobs for workflows
- Agent System: Java and JavaScript agents for AI tasks
- Configuration: Hierarchy - env vars > dmtools.env > dmtools-local.env
- Thread Safety: JobContext with thread-local storage
- DI Framework: Dagger 2 for dependency injection
Resources
🤖 AI Assistant Instructions
When to Trigger Setup Automatically
ALWAYS run setup checks when user:
- Mentions "dmtools" for the first time in conversation
- Asks to use any DMtools feature (Jira, test generation, etc.)
- Gets an error like "dmtools: command not found"
- Asks "how do I install dmtools"
Proactive Setup Pattern
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]
Example: Automated Setup Flow
curl -fsSL https://github.com/epam/dm.ai/releases/latest/download/install.sh | bash
Configuration Templates
Keep these handy for quick setup:
Jira Only:
JIRA_BASE_PATH=https://company.atlassian.net
JIRA_EMAIL=user@company.com
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
JIRA_EMAIL=user@company.com
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
Ask Questions
If you need clarification on requirements or implementation details, ask the user for more information before proceeding.