.claude/skills/dark-factory/SKILL.md
This skill should be used when the user asks to "delegate a Jira ticket to dark factory", "start working on EPMCDME ticket as a factory", "implement EPMCDME ticket", "begin implementation", "implement task autonomously", or wants structured technical leadership for implementing a Jira ticket. A valid EPMCDME-XXXXX ticket ID is REQUIRED to start. If no ticket is provided, the skill will block and ask the user to create one first.
npx skillsauth add codemie-ai/codemie-code dark-factoryInstall 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.
This skill is a fully autonomous AI implementation factory. Given a Jira ticket ID (EPMCDME-XXXXX), it drives the complete cycle from requirements through to a merged MR — without asking for approvals at each step. It makes technical decisions, follows project patterns, self-reviews, validates in the browser, and creates the MR.
A Jira ticket is mandatory. Dark Factory does not accept free-form task descriptions as a starting point. If no ticket is provided, stop immediately and ask the user to provide one.
Core principle: Work autonomously. Resolve ambiguity through analysis, not questions. Only ask the user when requirements are genuinely unclear and cannot be inferred.
Phase 1 → Requirements & Jira
Phase 2 → Complexity Assessment
Phase 3 → Specification (Medium/Complex only)
Phase 4 → Branch + Implementation
Phase 5 → Code Review (auto-fix critical/major)
Phase 6 → UI Validation (browser testing, no Jira publish)
Phase 7 → Quality Gates + MR
Check for a valid ticket ID (EPMCDME-XXXXX) in the user's request.
✅ Ticket provided → continue to Step 1b
❌ No ticket provided → STOP. Respond with:
Dark Factory requires a Jira ticket to start. Please provide an
EPMCDME-XXXXXticket ID.If you don't have a ticket yet, you can:
- Create one using the brianna skill: ask brianna to create a ticket for your task
- Create it directly in the CodeMie platform at the EPMCDME project board
Once you have a ticket, come back with the ID and I'll start implementation.
Do not proceed without a ticket. Do not accept a task description as a substitute.
Fetch the ticket via brianna skill (NOT a sub-agent — call the skill directly):
Skill(skill="brianna", args="get ticket EPMCDME-XXXXX fields: description, summary")
Ask brianna to search for similar open tickets:
Skill(skill="brianna", args="search for tickets similar to [summary] in EPMCDME project, status: open")
Ask only if acceptance criteria are vague or ambiguous in a way that blocks implementation. Skip if requirements are clear.
Always use the exact ticket ID as the branch name — no prefix, no suffix.
| Format | Example |
|--------|---------|
| EPMCDME-XXXXX | EPMCDME-10500 |
Assess using the Complexity Assessment Guide.
Score each dimension (1=Simple, 2=Medium, 3=Complex):
| Total Score | Complexity | Path | |-------------|------------|------| | 5-7 | Simple / Bug fix | → Direct to Phase 4 (Implementation) | | 8-11 | Medium | → Phase 3 (Specification), then Phase 4 | | 12-15 | Complex | → Phase 3 (Specification), then Phase 4 |
Special rule: Bug fixes and small isolated changes always go directly to Phase 4, regardless of score, unless they involve architectural risk.
Output a brief complexity summary before proceeding:
## Complexity: [Simple | Medium | Complex] (Score: X/15)
- Scope: [summary]
- Risk: [summary]
- Files affected: [estimate]
→ Path: [Direct implementation | Specification first]
Delegate to the solution-architect sub-agent with full context:
Task(subagent_type="solution-architect", prompt="
Generate implementation plan for [ticket/task].
Requirements: [requirements text]
Complexity: [Medium/Complex]
Affected areas: [list from complexity assessment]
Constraints: [any technical decisions already made]
Coding standards: Follow CLAUDE.md and .codemie/guides/
")
Review the generated .md spec against the requirements:
Auto-proceed if:
Delegate back to architect if:
Task(subagent_type="solution-architect", prompt="
Revise the spec. Issues found:
1. [Issue 1 - what's missing or wrong]
2. [Issue 2]
The spec must address all acceptance criteria before implementation.
")
Repeat until the spec is implementation-ready.
CRITICAL: Always create the branch before touching any code.
# Ensure clean state on main
git checkout main
git pull origin main
# Create and push feature branch
git checkout -b EPMCDME-XXXXX # or feature/branch-name
git push -u origin EPMCDME-XXXXX
If branch already exists locally: switch to it and pull latest (git checkout EPMCDME-XXXXX && git pull).
Before coding, load the relevant guides from .codemie/guides/ (see CLAUDE.md Task Classifier).
Implementation order (respect layer dependencies):
src/types/)src/constants/)src/store/)src/hooks/)src/components/)src/pages/)src/router.tsx)Coding standards (non-negotiable):
.json()cn() from @/utils/utils?? not || for defaultsCommit incrementally with descriptive messages following conventional commits format:
<type>(<scope>): <imperative description>
Refs: EPMCDME-XXXXX
Where <type> is one of: feat, fix, docs, refactor, test, chore
And <scope> is one of: cli, agents, providers, assistants, config, proxy, workflows, analytics, utils, deps, tests, skills (omit if none applies)
Invoke the code-reviewer sub-agent on all changed files:
Task(subagent_type="code-reviewer", prompt="
Review all changes made for [ticket/task] on branch [branch-name].
Focus on: correctness, React/TypeScript patterns, Valtio usage, Tailwind styling,
accessibility, and security. Flag critical and major issues.
")
Auto-fix all critical and major issues found in the review output before continuing.
After fixing, re-run lint to confirm:
npm run lint:fix
Invoke the ui-tester sub-agent to verify the implemented functionality in the browser:
Task(subagent_type="ui-tester", prompt="
Verify the following functionality works correctly in the browser:
[List of acceptance criteria / user flows]
Base URL: http://localhost:5173
Do NOT post to Jira. Only verify and report pass/fail.
")
On failures: Fix the issue and re-run ui-tester until all scenarios pass.
Do NOT publish screenshots or test results to Jira automatically.
# Unit tests
npm test
# Lint
npm run lint
# Build check (optional for large changes)
npm run build
All checks must pass before creating the MR. Fix any failures.
Stage and commit all remaining changes:
git add <specific files>
git commit -m "$(cat <<'EOF'
<type>(<scope>): final cleanup and fixes
Refs: EPMCDME-XXXXX
EOF
)"
git push
Use the codemie-mr skill or create directly:
Skill(skill="codemie-mr", args="create MR for branch EPMCDME-XXXXX")
Or via gh CLI:
gh pr create --title "<type>(<scope>): [summary]" --body "$(cat <<'EOF'
## Summary
- [Change 1]
- [Change 2]
## Test Plan
- [ ] Unit tests pass
- [ ] Lint passes
- [ ] UI validation passed (ui-tester)
## Related
- Jira: EPMCDME-XXXXX
🤖 Generated with Claude Code
EOF
)"
Unable to fetch EPMCDME-XXXXX. Verify the ticket ID and Jira access.
Stopping — cannot proceed without requirements.
Automatically switch to it and continue:
git checkout EPMCDME-XXXXX
git pull origin EPMCDME-XXXXX
Do not create MR. Fix failing tests first, then re-run quality gates.
Fix the reported issues and re-run ui-tester before proceeding to Step 7.
✅ Require a Jira ticket — block and redirect if none is provided ✅ Work autonomously — don't ask for approvals at each phase ✅ Fetch only required Jira fields (description, summary) ✅ Always check for duplicate/related tickets via brianna ✅ Create feature branch before any code changes ✅ Use complexity score to route: simple → direct, medium/complex → spec first ✅ Auto-fix critical and major code review issues ✅ Run UI validation before MR — fix failures before continuing ✅ Run tests and lint before MR
❌ Don't accept free-form task descriptions — always require EPMCDME-XXXXX first ❌ Don't ask "shall I proceed?" between phases — proceed autonomously ❌ Don't skip the Jira duplicate check ❌ Don't start coding before branch creation ❌ Don't publish UI test results to Jira automatically ❌ Don't create MR with failing tests or lint errors ❌ Don't use solution architect for simple/bug-fix tasks ❌ Don't guess at complexity — use the scoring matrix
references/complexity-assessment-guide.md — Scoring criteria and examplesreferences/branch-workflow.md — Git branching best practicesexamples/simple-feature-example.md — Full walkthrough: simple taskexamples/complex-feature-example.md — Full walkthrough: complex taskexamples/non-jira-task-example.md — Full walkthrough: no Jira ticket| Skill / Agent | When | How |
|---------------|------|-----|
| brianna | Phase 1 — ticket fetch + duplicate search | Skill(skill="brianna", ...) |
| solution-architect | Phase 3 — Medium/Complex spec | Task(subagent_type="solution-architect", ...) |
| code-reviewer | Phase 5 — code quality | Task(subagent_type="code-reviewer", ...) |
| ui-tester | Phase 6 — browser validation | Task(subagent_type="ui-tester", ...) |
| codemie-mr | Phase 7 — MR creation | Skill(skill="codemie-mr", ...) |
tools
CodeMie Analytics expert — use this skill whenever the user asks about CodeMie usage data, AI adoption metrics, user leaderboards, CLI insights, spending, LiteLLM costs, token usage, or wants to build a dashboard/report from CodeMie or LiteLLM APIs. Also triggers for: "who uses CodeMie most", "show me AI analytics", "get spending data", "generate a report", "leaderboard", "cost analysis", "LiteLLM customer info", "enrich CSV with costs", "top performers", "AI champions", "tier distribution", or any custom analytics query against the platform. Always use this skill when CodeMie analytics, reporting, or cost data is involved.
tools
Work with Microsoft 365 services via the Graph API — emails, calendar events, SharePoint sites (read and write), Teams chats and channel messages, OneDrive files, OneNote notebooks, contacts, and org chart. Use this skill whenever the user asks about their emails, inbox, unread messages, meetings, calendar, Teams messages or chats, channel messages, SharePoint documents, OneDrive files, OneNote notes or notebooks, colleagues, manager, direct reports, or any personal/organizational Microsoft data. Invoke proactively any time the user mentions Outlook, Teams, SharePoint, OneDrive, OneNote, or wants to interact with their Microsoft 365 account. The skill uses a local Node.js CLI (msgraph.js) that handles authentication, token caching, and all API calls.
tools
Manage CodeMie platform assets (assistants, workflows, datasources, integrations, skills, users, assistant-categories) directly from CLI using CodeMie SDK. Use when user says "create assistant", "list workflows", "update datasource", "delete assistant", "show my assistants", "get workflow details", "manage integrations", "create integration", "list integrations", "list llm models", "list embedding models", "list skills", "get skill", "create skill", "update skill", "delete skill", "publish skill", "import skill", "export skill", "attach skill", "list assistant categories", "get assistant category", "create assistant category", "delete assistant category", "who am i", "current user", "my profile", "user info", or any request to manage CodeMie platform resources. NOTE: For analytics requests (usage analytics, summaries, spending, users activity, leaderboards, etc.) use the codemie-analytics skill instead.
development
Build static HTML pages, reports, dashboards, and mockups that match the CodeMie UI design system. Use this skill whenever the user asks to create an HTML report, dashboard, analytics page, status page, data visualization page, or any static HTML document that should look like the CodeMie/EPAM AI/Run product. Also use it when the user says "make it look like CodeMie", "use the style guide", "dark-themed report", "CodeMie styles", or references the style-guide directory. Trigger for any HTML output task in a project that includes the style-guide folder. IMPORTANT: This skill MUST be used for ALL HTML generation requests — whenever a user asks for an HTML report, HTML analysis output, HTML dashboard, HTML visualization, or any HTML document. Claude must always use this skill to generate HTML in CodeMie styles to ensure consistent, professional, branded output across all HTML artifacts.