codingbuddy-rules 4.4.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai-rules/adapters/antigravity.md +6 -6
- package/.ai-rules/adapters/claude-code.md +107 -4
- package/.ai-rules/adapters/codex.md +5 -5
- package/.ai-rules/adapters/cursor.md +2 -2
- package/.ai-rules/adapters/kiro.md +8 -8
- package/.ai-rules/adapters/opencode.md +7 -7
- package/.ai-rules/adapters/q.md +2 -2
- package/.ai-rules/agents/README.md +66 -16
- package/.ai-rules/agents/accessibility-specialist.json +2 -1
- package/.ai-rules/agents/act-mode.json +2 -1
- package/.ai-rules/agents/agent-architect.json +8 -7
- package/.ai-rules/agents/ai-ml-engineer.json +1 -0
- package/.ai-rules/agents/architecture-specialist.json +1 -0
- package/.ai-rules/agents/auto-mode.json +4 -2
- package/.ai-rules/agents/backend-developer.json +1 -0
- package/.ai-rules/agents/code-quality-specialist.json +1 -0
- package/.ai-rules/agents/code-reviewer.json +65 -64
- package/.ai-rules/agents/data-engineer.json +8 -7
- package/.ai-rules/agents/data-scientist.json +10 -9
- package/.ai-rules/agents/devops-engineer.json +1 -0
- package/.ai-rules/agents/documentation-specialist.json +1 -0
- package/.ai-rules/agents/eval-mode.json +20 -19
- package/.ai-rules/agents/event-architecture-specialist.json +1 -0
- package/.ai-rules/agents/frontend-developer.json +1 -0
- package/.ai-rules/agents/i18n-specialist.json +2 -1
- package/.ai-rules/agents/integration-specialist.json +1 -0
- package/.ai-rules/agents/migration-specialist.json +1 -0
- package/.ai-rules/agents/mobile-developer.json +8 -7
- package/.ai-rules/agents/observability-specialist.json +1 -0
- package/.ai-rules/agents/parallel-orchestrator.json +346 -0
- package/.ai-rules/agents/performance-specialist.json +1 -0
- package/.ai-rules/agents/plan-mode.json +3 -1
- package/.ai-rules/agents/plan-reviewer.json +208 -0
- package/.ai-rules/agents/platform-engineer.json +1 -0
- package/.ai-rules/agents/security-engineer.json +9 -8
- package/.ai-rules/agents/security-specialist.json +2 -1
- package/.ai-rules/agents/seo-specialist.json +1 -0
- package/.ai-rules/agents/software-engineer.json +1 -0
- package/.ai-rules/agents/solution-architect.json +11 -10
- package/.ai-rules/agents/systems-developer.json +9 -8
- package/.ai-rules/agents/technical-planner.json +11 -10
- package/.ai-rules/agents/test-engineer.json +7 -6
- package/.ai-rules/agents/test-strategy-specialist.json +1 -0
- package/.ai-rules/agents/tooling-engineer.json +4 -3
- package/.ai-rules/agents/ui-ux-designer.json +1 -0
- package/.ai-rules/keyword-modes.json +4 -4
- package/.ai-rules/rules/clarification-guide.md +14 -14
- package/.ai-rules/rules/core.md +90 -1
- package/.ai-rules/rules/parallel-execution.md +217 -0
- package/.ai-rules/skills/README.md +23 -1
- package/.ai-rules/skills/agent-design/SKILL.md +5 -0
- package/.ai-rules/skills/agent-design/examples/agent-template.json +58 -0
- package/.ai-rules/skills/agent-design/references/expertise-guidelines.md +112 -0
- package/.ai-rules/skills/agent-discussion/SKILL.md +199 -0
- package/.ai-rules/skills/agent-discussion-panel/SKILL.md +448 -0
- package/.ai-rules/skills/api-design/SKILL.md +5 -0
- package/.ai-rules/skills/api-design/examples/error-response.json +159 -0
- package/.ai-rules/skills/api-design/examples/openapi-template.yaml +393 -0
- package/.ai-rules/skills/build-fix/SKILL.md +234 -0
- package/.ai-rules/skills/code-explanation/SKILL.md +4 -0
- package/.ai-rules/skills/context-management/SKILL.md +1 -0
- package/.ai-rules/skills/cost-budget/SKILL.md +348 -0
- package/.ai-rules/skills/cross-repo-issues/SKILL.md +257 -0
- package/.ai-rules/skills/database-migration/SKILL.md +1 -0
- package/.ai-rules/skills/deepsearch/SKILL.md +214 -0
- package/.ai-rules/skills/deployment-checklist/SKILL.md +1 -0
- package/.ai-rules/skills/error-analysis/SKILL.md +1 -0
- package/.ai-rules/skills/finishing-a-development-branch/SKILL.md +281 -0
- package/.ai-rules/skills/frontend-design/SKILL.md +5 -0
- package/.ai-rules/skills/frontend-design/examples/component-template.tsx +203 -0
- package/.ai-rules/skills/frontend-design/references/css-patterns.md +243 -0
- package/.ai-rules/skills/git-master/SKILL.md +358 -0
- package/.ai-rules/skills/incident-response/SKILL.md +1 -0
- package/.ai-rules/skills/legacy-modernization/SKILL.md +1 -0
- package/.ai-rules/skills/mcp-builder/SKILL.md +7 -0
- package/.ai-rules/skills/mcp-builder/examples/resource-example.ts +233 -0
- package/.ai-rules/skills/mcp-builder/examples/tool-example.ts +203 -0
- package/.ai-rules/skills/mcp-builder/references/protocol-spec.md +215 -0
- package/.ai-rules/skills/performance-optimization/SKILL.md +3 -0
- package/.ai-rules/skills/plan-and-review/SKILL.md +115 -0
- package/.ai-rules/skills/pr-all-in-one/SKILL.md +15 -13
- package/.ai-rules/skills/pr-all-in-one/configuration-guide.md +7 -7
- package/.ai-rules/skills/pr-all-in-one/pr-templates.md +10 -10
- package/.ai-rules/skills/pr-review/SKILL.md +4 -0
- package/.ai-rules/skills/receiving-code-review/SKILL.md +347 -0
- package/.ai-rules/skills/refactoring/SKILL.md +1 -0
- package/.ai-rules/skills/requesting-code-review/SKILL.md +348 -0
- package/.ai-rules/skills/rule-authoring/SKILL.md +5 -0
- package/.ai-rules/skills/rule-authoring/examples/rule-template.md +142 -0
- package/.ai-rules/skills/rule-authoring/examples/trigger-patterns.md +126 -0
- package/.ai-rules/skills/security-audit/SKILL.md +4 -0
- package/.ai-rules/skills/skill-creator/SKILL.md +461 -0
- package/.ai-rules/skills/skill-creator/agents/analyzer.md +206 -0
- package/.ai-rules/skills/skill-creator/agents/comparator.md +167 -0
- package/.ai-rules/skills/skill-creator/agents/grader.md +152 -0
- package/.ai-rules/skills/skill-creator/assets/eval_review.html +289 -0
- package/.ai-rules/skills/skill-creator/assets/skill-template.md +43 -0
- package/.ai-rules/skills/skill-creator/eval-viewer/generate_review.py +496 -0
- package/.ai-rules/skills/skill-creator/references/frontmatter-guide.md +632 -0
- package/.ai-rules/skills/skill-creator/references/multi-tool-compat.md +480 -0
- package/.ai-rules/skills/skill-creator/references/schemas.md +784 -0
- package/.ai-rules/skills/skill-creator/scripts/aggregate_benchmark.py +302 -0
- package/.ai-rules/skills/skill-creator/scripts/init_skill.sh +196 -0
- package/.ai-rules/skills/skill-creator/scripts/run_loop.py +327 -0
- package/.ai-rules/skills/systematic-debugging/SKILL.md +1 -0
- package/.ai-rules/skills/tech-debt/SKILL.md +1 -0
- package/.ai-rules/skills/test-coverage-gate/SKILL.md +303 -0
- package/.ai-rules/skills/tmux-master/SKILL.md +491 -0
- package/.ai-rules/skills/using-git-worktrees/SKILL.md +368 -0
- package/.ai-rules/skills/verification-before-completion/SKILL.md +234 -0
- package/.ai-rules/skills/widget-slot-architecture/SKILL.md +6 -0
- package/.ai-rules/skills/widget-slot-architecture/examples/parallel-route-setup.tsx +206 -0
- package/.ai-rules/skills/widget-slot-architecture/examples/widget-component.tsx +250 -0
- package/.ai-rules/skills/writing-plans/SKILL.md +78 -0
- package/bin/cli.js +178 -0
- package/lib/init/detect-stack.js +148 -0
- package/lib/init/generate-config.js +31 -0
- package/lib/init/index.js +86 -0
- package/lib/init/prompt.js +60 -0
- package/lib/init/scaffold.js +67 -0
- package/lib/init/suggest-agent.js +46 -0
- package/package.json +10 -2
|
@@ -30,9 +30,9 @@ End users access rules **only through MCP tools**. No local rule files needed.
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
> **Important:** Antigravity
|
|
34
|
-
> `CODINGBUDDY_PROJECT_ROOT
|
|
35
|
-
> `language`
|
|
33
|
+
> **Important:** Whether Antigravity supports the `roots/list` MCP capability has not been confirmed.
|
|
34
|
+
> Without `CODINGBUDDY_PROJECT_ROOT`, the server cannot locate your project's `codingbuddy.config.json`,
|
|
35
|
+
> causing settings such as `language` to use default values. Always set this environment variable to your project's absolute path.
|
|
36
36
|
|
|
37
37
|
Optional: Create `.antigravity/rules/instructions.md` for basic integration:
|
|
38
38
|
|
|
@@ -567,7 +567,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
567
567
|
| Language | Keyword |
|
|
568
568
|
|----------|---------|
|
|
569
569
|
| English | `AUTO` |
|
|
570
|
-
| Korean |
|
|
570
|
+
| Korean | `AUTO` |
|
|
571
571
|
| Japanese | `自動` |
|
|
572
572
|
| Chinese | `自动` |
|
|
573
573
|
| Spanish | `AUTOMÁTICO` |
|
|
@@ -579,7 +579,7 @@ AUTO implement user authentication feature
|
|
|
579
579
|
```
|
|
580
580
|
|
|
581
581
|
```
|
|
582
|
-
|
|
582
|
+
AUTO implement user authentication feature
|
|
583
583
|
```
|
|
584
584
|
|
|
585
585
|
When AUTO keyword is detected, Antigravity calls `parse_mode` MCP tool which returns AUTO mode instructions.
|
|
@@ -626,7 +626,7 @@ task_boundary(
|
|
|
626
626
|
)
|
|
627
627
|
```
|
|
628
628
|
|
|
629
|
-
> **Antigravity limitation:** AUTO mode
|
|
629
|
+
> **Antigravity limitation:** AUTO mode has no enforcement loop mechanism. See [Known Limitations](#known-limitations) for details.
|
|
630
630
|
|
|
631
631
|
## Context Document Management
|
|
632
632
|
|
|
@@ -191,8 +191,8 @@ Use `recommend_skills` MCP tool to get skill recommendations based on user promp
|
|
|
191
191
|
recommend_skills({ prompt: "There is a bug in the login" })
|
|
192
192
|
// => recommends: systematic-debugging
|
|
193
193
|
|
|
194
|
-
recommend_skills({ prompt: "
|
|
195
|
-
// => recommends: systematic-debugging (
|
|
194
|
+
recommend_skills({ prompt: "There is a bug in the login" })
|
|
195
|
+
// => recommends: systematic-debugging (multi-language support)
|
|
196
196
|
|
|
197
197
|
recommend_skills({ prompt: "Build a dashboard component" })
|
|
198
198
|
// => recommends: frontend-design
|
|
@@ -523,6 +523,109 @@ Each workflow mode activates different specialist agents:
|
|
|
523
523
|
|
|
524
524
|
**Important:** Specialists from one mode do NOT carry over to the next mode. Each mode has its own recommended specialist set.
|
|
525
525
|
|
|
526
|
+
### Auto-Dispatch Enforcement
|
|
527
|
+
|
|
528
|
+
When `parse_mode` returns `dispatch="auto"` or `dispatchReady` with specialist agents, dispatching is **mandatory** — not optional.
|
|
529
|
+
|
|
530
|
+
**Rule:** Every listed specialist MUST be dispatched. Skipping any specialist is a protocol violation.
|
|
531
|
+
|
|
532
|
+
#### Teams-Based Specialist Dispatch (Preferred)
|
|
533
|
+
|
|
534
|
+
Teams are preferred over the Agent tool for specialist dispatch because they enable structured coordination and message-based reporting:
|
|
535
|
+
|
|
536
|
+
```
|
|
537
|
+
1. TeamCreate({ team_name: "<task>-specialists" })
|
|
538
|
+
2. Spawn specialists as teammates:
|
|
539
|
+
Agent({ team_name, name: "security-specialist", subagent_type: "general-purpose", prompt: ... })
|
|
540
|
+
Agent({ team_name, name: "code-quality-specialist", subagent_type: "general-purpose", prompt: ... })
|
|
541
|
+
3. Create and assign tasks:
|
|
542
|
+
TaskCreate({ subject: "Security review of auth module" })
|
|
543
|
+
TaskUpdate({ taskId, owner: "security-specialist" })
|
|
544
|
+
4. Specialists work autonomously, report via SendMessage:
|
|
545
|
+
SendMessage({ to: "team-lead", message: "## Security Findings\n- ...", summary: "Security review done" })
|
|
546
|
+
5. Team lead collects all findings
|
|
547
|
+
6. Shutdown: SendMessage({ to: "security-specialist", message: { type: "shutdown_request" } })
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
#### SendMessage-Based Reporting
|
|
551
|
+
|
|
552
|
+
Specialists report findings through `SendMessage` to the team lead. This enables:
|
|
553
|
+
- Structured collection of all specialist outputs
|
|
554
|
+
- Consolidated summary for the user
|
|
555
|
+
- Clear audit trail of what each specialist found
|
|
556
|
+
|
|
557
|
+
**Report format:**
|
|
558
|
+
```markdown
|
|
559
|
+
## [Specialist Name] Findings
|
|
560
|
+
|
|
561
|
+
### Critical
|
|
562
|
+
- [finding]
|
|
563
|
+
|
|
564
|
+
### High
|
|
565
|
+
- [finding]
|
|
566
|
+
|
|
567
|
+
### Medium
|
|
568
|
+
- [finding]
|
|
569
|
+
|
|
570
|
+
### Recommendations
|
|
571
|
+
- [recommendation]
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
#### Fallback: Agent Tool
|
|
575
|
+
|
|
576
|
+
If Teams-based dispatch fails, fall back to the Agent tool:
|
|
577
|
+
- Use `run_in_background: true` for each specialist
|
|
578
|
+
- Collect results via `TaskOutput`
|
|
579
|
+
- Document the fallback reason in your response
|
|
580
|
+
|
|
581
|
+
#### Red Flags
|
|
582
|
+
|
|
583
|
+
| Thought | Reality |
|
|
584
|
+
|---------|---------|
|
|
585
|
+
| "I can handle this analysis myself" | Specialists have domain expertise. Dispatch them. |
|
|
586
|
+
| "It's just a small change" | dispatch="auto" means the system determined specialists are needed. |
|
|
587
|
+
| "I'll save time by skipping" | Skipping causes missed issues that cost more later. |
|
|
588
|
+
| "I'll dispatch later" | Dispatch IMMEDIATELY when dispatch="auto" is returned. |
|
|
589
|
+
|
|
590
|
+
### Execution Strategy Selection (MANDATORY)
|
|
591
|
+
|
|
592
|
+
When `parse_mode` returns `availableStrategies`:
|
|
593
|
+
|
|
594
|
+
1. **Check `availableStrategies`** in the response
|
|
595
|
+
2. **If both strategies available** (`["subagent", "taskmaestro"]`), ask user with AskUserQuestion:
|
|
596
|
+
- Option A: "SubAgent (background agents, fast)" (Recommended)
|
|
597
|
+
- Option B: "TaskMaestro (tmux parallel panes, visual monitoring)"
|
|
598
|
+
3. **If only `["subagent"]`** and `taskmaestroInstallHint` present:
|
|
599
|
+
- Ask: "TaskMaestro is not installed. Would you like to install it for tmux-based parallel execution?"
|
|
600
|
+
- Yes → invoke `/taskmaestro` skill to guide installation, then re-check
|
|
601
|
+
- No → proceed with subagent
|
|
602
|
+
4. **Call `dispatch_agents`** with chosen `executionStrategy` parameter:
|
|
603
|
+
- `dispatch_agents({ mode, specialists, executionStrategy: "subagent" })` — existing Agent tool flow
|
|
604
|
+
- `dispatch_agents({ mode, specialists, executionStrategy: "taskmaestro" })` — returns tmux assignments
|
|
605
|
+
5. **Execute** based on strategy:
|
|
606
|
+
- **subagent**: Use `dispatchParams` with Agent tool (`run_in_background: true`)
|
|
607
|
+
- **taskmaestro**: Follow `executionHint` — start panes, assign prompts, monitor, collect results
|
|
608
|
+
|
|
609
|
+
### TaskMaestro Execution Flow
|
|
610
|
+
|
|
611
|
+
When `executionStrategy: "taskmaestro"` is chosen, `dispatch_agents` returns:
|
|
612
|
+
|
|
613
|
+
```json
|
|
614
|
+
{
|
|
615
|
+
"taskmaestro": {
|
|
616
|
+
"sessionName": "eval-specialists",
|
|
617
|
+
"paneCount": 5,
|
|
618
|
+
"assignments": [
|
|
619
|
+
{ "name": "security-specialist", "displayName": "Security Specialist", "prompt": "..." },
|
|
620
|
+
{ "name": "performance-specialist", "displayName": "Performance Specialist", "prompt": "..." }
|
|
621
|
+
]
|
|
622
|
+
},
|
|
623
|
+
"executionHint": "1. /taskmaestro start --panes 5\n2. ..."
|
|
624
|
+
}
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
Execute by following the `executionHint` commands sequentially.
|
|
628
|
+
|
|
526
629
|
## PR All-in-One Skill
|
|
527
630
|
|
|
528
631
|
Unified commit and PR workflow that:
|
|
@@ -582,7 +685,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
582
685
|
| Language | Keyword |
|
|
583
686
|
|----------|---------|
|
|
584
687
|
| English | `AUTO` |
|
|
585
|
-
| Korean |
|
|
688
|
+
| Korean | `AUTO` |
|
|
586
689
|
| Japanese | `自動` |
|
|
587
690
|
| Chinese | `自动` |
|
|
588
691
|
| Spanish | `AUTOMATICO` |
|
|
@@ -594,7 +697,7 @@ AUTO implement user authentication with JWT tokens
|
|
|
594
697
|
```
|
|
595
698
|
|
|
596
699
|
```
|
|
597
|
-
|
|
700
|
+
AUTO implement user authentication with JWT
|
|
598
701
|
```
|
|
599
702
|
|
|
600
703
|
### Expected Behavior
|
|
@@ -30,10 +30,10 @@ End users access rules **only through MCP tools**. No local rule files needed.
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
> **Important:** Codex(GitHub Copilot)
|
|
34
|
-
> `CODINGBUDDY_PROJECT_ROOT
|
|
35
|
-
> `language`
|
|
36
|
-
> Codex
|
|
33
|
+
> **Important:** Whether Codex (GitHub Copilot) supports the `roots/list` MCP capability has not been confirmed.
|
|
34
|
+
> Without `CODINGBUDDY_PROJECT_ROOT`, the server cannot locate your project's `codingbuddy.config.json`,
|
|
35
|
+
> causing settings such as `language` to use default values. Always set this environment variable to your project's absolute path.
|
|
36
|
+
> If Codex supports `${workspaceFolder}` variable expansion, you can use it instead of an absolute path.
|
|
37
37
|
|
|
38
38
|
### Monorepo Contributors
|
|
39
39
|
|
|
@@ -599,7 +599,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
599
599
|
| Language | Keyword |
|
|
600
600
|
|----------|---------|
|
|
601
601
|
| English | `AUTO` |
|
|
602
|
-
| Korean |
|
|
602
|
+
| Korean | `AUTO` |
|
|
603
603
|
| Japanese | `自動` |
|
|
604
604
|
| Chinese | `自动` |
|
|
605
605
|
| Spanish | `AUTOMATICO` |
|
|
@@ -403,7 +403,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
403
403
|
| Language | Keyword |
|
|
404
404
|
|----------|---------|
|
|
405
405
|
| English | `AUTO` |
|
|
406
|
-
| Korean |
|
|
406
|
+
| Korean | `AUTO` |
|
|
407
407
|
| Japanese | `自動` |
|
|
408
408
|
| Chinese | `自动` |
|
|
409
409
|
| Spanish | `AUTOMATICO` |
|
|
@@ -415,7 +415,7 @@ AUTO implement user authentication feature
|
|
|
415
415
|
```
|
|
416
416
|
|
|
417
417
|
```
|
|
418
|
-
|
|
418
|
+
AUTO implement user authentication feature
|
|
419
419
|
```
|
|
420
420
|
|
|
421
421
|
When AUTO keyword is detected, Cursor calls `parse_mode` MCP tool which returns AUTO mode instructions.
|
|
@@ -30,9 +30,9 @@ End users access rules **only through MCP tools**. No local rule files needed.
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
> **Important:** Kiro
|
|
34
|
-
> `CODINGBUDDY_PROJECT_ROOT
|
|
35
|
-
> `language`
|
|
33
|
+
> **Important:** Whether Kiro supports the `roots/list` MCP capability has not been confirmed.
|
|
34
|
+
> Without `CODINGBUDDY_PROJECT_ROOT`, the server cannot locate your project's `codingbuddy.config.json`,
|
|
35
|
+
> causing settings such as `language` to use default values. Always set this environment variable to your project's absolute path.
|
|
36
36
|
|
|
37
37
|
Optional: Create `.kiro/rules/guidelines.md` for basic integration:
|
|
38
38
|
|
|
@@ -85,8 +85,8 @@ MCP server configuration for codingbuddy tools:
|
|
|
85
85
|
}
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
> **Note:** Kiro
|
|
89
|
-
> `${workspaceFolder}`
|
|
88
|
+
> **Note:** Kiro supports environment variable expansion using the `${VARIABLE}` syntax.
|
|
89
|
+
> If `${workspaceFolder}` is supported, you can use it instead of an absolute path.
|
|
90
90
|
|
|
91
91
|
**MCP configuration paths:**
|
|
92
92
|
- **Project-level**: `.kiro/settings/mcp.json`
|
|
@@ -526,7 +526,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
526
526
|
| Language | Keyword |
|
|
527
527
|
|----------|---------|
|
|
528
528
|
| English | `AUTO` |
|
|
529
|
-
| Korean |
|
|
529
|
+
| Korean | `AUTO` |
|
|
530
530
|
| Japanese | `自動` |
|
|
531
531
|
| Chinese | `自动` |
|
|
532
532
|
| Spanish | `AUTOMÁTICO` |
|
|
@@ -538,7 +538,7 @@ AUTO implement user authentication feature
|
|
|
538
538
|
```
|
|
539
539
|
|
|
540
540
|
```
|
|
541
|
-
|
|
541
|
+
AUTO implement user authentication feature
|
|
542
542
|
```
|
|
543
543
|
|
|
544
544
|
When AUTO keyword is detected, Kiro calls `parse_mode` MCP tool which returns AUTO mode instructions.
|
|
@@ -571,7 +571,7 @@ module.exports = {
|
|
|
571
571
|
- Bug fixes needing comprehensive testing
|
|
572
572
|
- Code quality improvements with measurable criteria
|
|
573
573
|
|
|
574
|
-
> **Kiro limitation:** AUTO mode
|
|
574
|
+
> **Kiro limitation:** AUTO mode has no enforcement loop mechanism. See [Known Limitations](#known-limitations) for details.
|
|
575
575
|
|
|
576
576
|
## Context Document Management
|
|
577
577
|
|
|
@@ -184,9 +184,9 @@ Add to your MCP configuration:
|
|
|
184
184
|
}
|
|
185
185
|
```
|
|
186
186
|
|
|
187
|
-
> **Important:** OpenCode/Crush
|
|
188
|
-
> `CODINGBUDDY_PROJECT_ROOT
|
|
189
|
-
> `language`
|
|
187
|
+
> **Important:** Whether OpenCode/Crush supports the `roots/list` MCP capability has not been confirmed.
|
|
188
|
+
> Without `CODINGBUDDY_PROJECT_ROOT`, the server cannot locate your project's `codingbuddy.config.json`,
|
|
189
|
+
> causing settings such as `language` to use default values. Always set this environment variable to your project's absolute path.
|
|
190
190
|
|
|
191
191
|
#### Available MCP Tools
|
|
192
192
|
|
|
@@ -526,9 +526,9 @@ npx codingbuddy@latest mcp
|
|
|
526
526
|
|
|
527
527
|
**4. Project Config Not Detected**
|
|
528
528
|
```bash
|
|
529
|
-
# CODINGBUDDY_PROJECT_ROOT
|
|
530
|
-
#
|
|
531
|
-
# .opencode.json
|
|
529
|
+
# Verify that CODINGBUDDY_PROJECT_ROOT is set in MCP env
|
|
530
|
+
# Without this environment variable, codingbuddy.config.json cannot be found
|
|
531
|
+
# Add to the mcp section of .opencode.json or crush.json:
|
|
532
532
|
"env": {
|
|
533
533
|
"CODINGBUDDY_PROJECT_ROOT": "/absolute/path/to/your/project"
|
|
534
534
|
}
|
|
@@ -752,7 +752,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
752
752
|
| Language | Keyword |
|
|
753
753
|
|----------|---------|
|
|
754
754
|
| English | `AUTO` |
|
|
755
|
-
| Korean |
|
|
755
|
+
| Korean | `AUTO` |
|
|
756
756
|
| Japanese | `自動` |
|
|
757
757
|
| Chinese | `自动` |
|
|
758
758
|
| Spanish | `AUTOMÁTICO` |
|
package/.ai-rules/adapters/q.md
CHANGED
|
@@ -178,7 +178,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
178
178
|
| Language | Keyword |
|
|
179
179
|
|----------|---------|
|
|
180
180
|
| English | `AUTO` |
|
|
181
|
-
| Korean |
|
|
181
|
+
| Korean | `AUTO` |
|
|
182
182
|
| Japanese | `自動` |
|
|
183
183
|
| Chinese | `自动` |
|
|
184
184
|
| Spanish | `AUTOMATICO` |
|
|
@@ -186,7 +186,7 @@ Use the `AUTO` keyword (or localized versions) at the start of your message:
|
|
|
186
186
|
### Example Usage
|
|
187
187
|
|
|
188
188
|
```
|
|
189
|
-
AUTO
|
|
189
|
+
AUTO create a new Lambda function
|
|
190
190
|
```
|
|
191
191
|
|
|
192
192
|
### Workflow
|
|
@@ -165,9 +165,9 @@ Primary Agent is dynamically determined based on the following priority:
|
|
|
165
165
|
|
|
166
166
|
**Korean:**
|
|
167
167
|
```
|
|
168
|
-
backend-developer
|
|
169
|
-
agent-architect
|
|
170
|
-
devops-engineer
|
|
168
|
+
backend-developer work with # "Work with backend-developer"
|
|
169
|
+
agent-architect do with # "Do it with agent-architect"
|
|
170
|
+
devops-engineer develop with # "Develop with devops-engineer"
|
|
171
171
|
```
|
|
172
172
|
|
|
173
173
|
**English:**
|
|
@@ -202,6 +202,7 @@ as agent-architect, design new agent
|
|
|
202
202
|
| Data Scientist | `primary` | EDA, ML modeling, Jupyter notebooks, data analysis and visualization |
|
|
203
203
|
| Systems Developer | `primary` | Rust/C/C++, FFI bindings, embedded systems, low-level performance optimization |
|
|
204
204
|
| Software Engineer | `primary` | Universal fallback — any language, any domain, when no specific agent matches |
|
|
205
|
+
| Parallel Orchestrator | `primary` | Parallel issue execution, taskMaestro orchestration, Wave planning |
|
|
205
206
|
|
|
206
207
|
### EVAL Mode
|
|
207
208
|
|
|
@@ -637,7 +638,7 @@ Unified specialist agents organized by domain:
|
|
|
637
638
|
**Activation Patterns:**
|
|
638
639
|
|
|
639
640
|
- Files: `*.tf`, `*.tfvars`, `Chart.yaml`, `kustomization.yaml`, `Pulumi.yaml`, `argocd/`, `flux-system/`
|
|
640
|
-
- Korean: "
|
|
641
|
+
- Korean: "infrastructure code", "Kubernetes", "Terraform", "cost optimization", "disaster recovery"
|
|
641
642
|
- English: "terraform", "kubernetes", "k8s", "helm", "pulumi", "gitops", "argocd", "infrastructure as code"
|
|
642
643
|
|
|
643
644
|
**Auto-Activation:** Supported via MCP server. Platform Engineer is automatically selected when prompts contain IaC/Kubernetes keywords or when working with infrastructure files.
|
|
@@ -684,7 +685,7 @@ Unified specialist agents organized by domain:
|
|
|
684
685
|
**Activation Patterns:**
|
|
685
686
|
|
|
686
687
|
- Config files: `codingbuddy.config`, `tsconfig`, `eslint`, `prettier`, `vite.config`, `next.config`
|
|
687
|
-
- Korean: "
|
|
688
|
+
- Korean: "config file", "build config", "package management", "linter config"
|
|
688
689
|
- English: "config file", "build config", "package management"
|
|
689
690
|
|
|
690
691
|
---
|
|
@@ -767,7 +768,7 @@ Unified specialist agents organized by domain:
|
|
|
767
768
|
|
|
768
769
|
**Activation Patterns:**
|
|
769
770
|
|
|
770
|
-
- Korean: "LLM
|
|
771
|
+
- Korean: "LLM integration", "RAG implementation", "prompt engineering", "AI safety"
|
|
771
772
|
- English: "LLM integration", "RAG implementation", "prompt engineering", "AI safety"
|
|
772
773
|
|
|
773
774
|
---
|
|
@@ -812,7 +813,7 @@ Unified specialist agents organized by domain:
|
|
|
812
813
|
**Activation Patterns:**
|
|
813
814
|
|
|
814
815
|
- Files: `*.ipynb`, `*eda*.py`, `*analysis*.py`, `*model*.py`, `notebooks/`
|
|
815
|
-
- Korean: "
|
|
816
|
+
- Korean: "data analysis", "exploratory analysis", "EDA", "visualization", "regression", "classification", "Jupyter"
|
|
816
817
|
- English: "EDA", "exploratory", "data analysis", "visualization", "regression", "classification", "pandas", "scikit-learn", "jupyter"
|
|
817
818
|
|
|
818
819
|
---
|
|
@@ -860,7 +861,7 @@ Unified specialist agents organized by domain:
|
|
|
860
861
|
|
|
861
862
|
**Activation Patterns:**
|
|
862
863
|
|
|
863
|
-
- Korean: "Rust
|
|
864
|
+
- Korean: "Rust implementation", "C++ optimization", "FFI binding", "memory management", "embedded development", "WASM implementation"
|
|
864
865
|
- English: "rust implementation", "FFI binding", "memory management", "embedded", "WASM", "low-level", "systems programming"
|
|
865
866
|
|
|
866
867
|
---
|
|
@@ -957,7 +958,7 @@ Software Engineer is the **fallback of last resort** — it has no intent patter
|
|
|
957
958
|
**Activation Patterns:**
|
|
958
959
|
|
|
959
960
|
- Files: API clients, webhook handlers, OAuth implementations, external service integrations
|
|
960
|
-
- Korean: "
|
|
961
|
+
- Korean: "external service integration", "webhook", "API integration", "circuit breaker"
|
|
961
962
|
- English: "external API", "webhook", "integration", "circuit breaker", "third-party service"
|
|
962
963
|
|
|
963
964
|
**Auto-Activation:** Supported via MCP server. Integration Specialist is automatically selected when prompts contain external service integration keywords or when working with API client/webhook files.
|
|
@@ -1013,7 +1014,7 @@ Software Engineer is the **fallback of last resort** — it has no intent patter
|
|
|
1013
1014
|
**Activation Patterns:**
|
|
1014
1015
|
|
|
1015
1016
|
- Files: `**/events/**`, `**/kafka/**`, `**/rabbitmq/**`, `**/sqs/**`, `**/eventgrid/**`, `**/pubsub/**`, `**/eventbridge/**`, `**/*producer*.ts`, `**/*consumer*.ts`, `**/*saga*.ts`, `**/*event-store*.ts`, `**/websocket/**`
|
|
1016
|
-
- Korean: "
|
|
1017
|
+
- Korean: "event architecture", "message queue", "Kafka", "saga pattern", "event sourcing"
|
|
1017
1018
|
- English: "event-driven", "message queue", "kafka", "rabbitmq", "saga pattern", "event sourcing", "CQRS", "websocket"
|
|
1018
1019
|
|
|
1019
1020
|
**Auto-Activation:** Supported via MCP server. Event Architecture Specialist is automatically selected when prompts contain event-driven architecture keywords or when working with message queue/event sourcing files.
|
|
@@ -1079,7 +1080,7 @@ Software Engineer is the **fallback of last resort** — it has no intent patter
|
|
|
1079
1080
|
**Activation Patterns:**
|
|
1080
1081
|
|
|
1081
1082
|
- Keywords: "observability", "distributed tracing", "OpenTelemetry", "SLI", "SLO", "error budget", "structured logging", "Prometheus", "Grafana", "Jaeger"
|
|
1082
|
-
- Korean: "
|
|
1083
|
+
- Korean: "observability", "distributed tracing", "SLI/SLO", "error budget"
|
|
1083
1084
|
- English: "observability", "distributed tracing", "SLI/SLO", "error budget", "OpenTelemetry"
|
|
1084
1085
|
|
|
1085
1086
|
**Auto-Activation:** Supported via MCP server. Observability Specialist is automatically selected when prompts contain observability-related keywords or when working with tracing/monitoring files.
|
|
@@ -1156,7 +1157,7 @@ Software Engineer is the **fallback of last resort** — it has no intent patter
|
|
|
1156
1157
|
**Activation Patterns:**
|
|
1157
1158
|
|
|
1158
1159
|
- Keywords: "migration", "migrate", "legacy", "upgrade", "strangler fig", "rollback", "cutover", "deprecation", "backward compatibility"
|
|
1159
|
-
- Korean: "
|
|
1160
|
+
- Korean: "migration", "transfer", "legacy", "upgrade", "rollback", "compatibility", "transition"
|
|
1160
1161
|
- English: "migration", "legacy modernization", "framework upgrade", "zero-downtime", "api versioning"
|
|
1161
1162
|
|
|
1162
1163
|
**Auto-Activation:** Supported via MCP server. Migration Specialist is automatically selected when prompts contain migration-related keywords or when working with migration/upgrade files.
|
|
@@ -1631,6 +1632,8 @@ Some specialist agents define **delegation rules** to clarify when work should b
|
|
|
1631
1632
|
Each agent JSON contains:
|
|
1632
1633
|
|
|
1633
1634
|
- **name**: Agent identifier
|
|
1635
|
+
- **description**: Brief description of the agent
|
|
1636
|
+
- **color**: Unique hex color code for visual identification (e.g., `#61DAFB`)
|
|
1634
1637
|
- **role**: Title and expertise areas
|
|
1635
1638
|
- **context_files**: Rules to reference
|
|
1636
1639
|
- **modes**: Planning, implementation, and evaluation frameworks (for unified specialists)
|
|
@@ -1642,6 +1645,52 @@ Each agent JSON contains:
|
|
|
1642
1645
|
- **design_system**: UI component guidelines
|
|
1643
1646
|
- **communication**: Response language and style
|
|
1644
1647
|
|
|
1648
|
+
### Color Reference
|
|
1649
|
+
|
|
1650
|
+
Each agent has a unique `color` field (hex code) for visual identification in UIs and dashboards.
|
|
1651
|
+
|
|
1652
|
+
| Agent | Color | Hex |
|
|
1653
|
+
|-------|-------|-----|
|
|
1654
|
+
| **Mode Agents** | | |
|
|
1655
|
+
| Plan Mode |  Steel Blue | `#6C8EBF` |
|
|
1656
|
+
| Act Mode |  Sage Green | `#82B366` |
|
|
1657
|
+
| Eval Mode |  Golden | `#D4A843` |
|
|
1658
|
+
| Auto Mode |  Rust Red | `#B85450` |
|
|
1659
|
+
| **Primary Agents** | | |
|
|
1660
|
+
| Solution Architect |  Royal Blue | `#4A90D9` |
|
|
1661
|
+
| Technical Planner |  Slate Blue | `#7B68EE` |
|
|
1662
|
+
| Frontend Developer |  React Cyan | `#61DAFB` |
|
|
1663
|
+
| Backend Developer |  Node Green | `#68A063` |
|
|
1664
|
+
| Mobile Developer |  Android Green | `#A4C639` |
|
|
1665
|
+
| Data Engineer |  Burnt Sienna | `#E97451` |
|
|
1666
|
+
| Agent Architect |  Amethyst | `#9B59B6` |
|
|
1667
|
+
| Platform Engineer |  Dodger Blue | `#3498DB` |
|
|
1668
|
+
| Tooling Engineer |  Concrete | `#95A5A6` |
|
|
1669
|
+
| AI/ML Engineer |  Coral | `#FF6F61` |
|
|
1670
|
+
| DevOps Engineer |  Emerald | `#2ECC71` |
|
|
1671
|
+
| Test Engineer |  Orange | `#F39C12` |
|
|
1672
|
+
| Security Engineer |  Alizarin | `#E74C3C` |
|
|
1673
|
+
| Software Engineer |  Turquoise | `#1ABC9C` |
|
|
1674
|
+
| Data Scientist |  Wisteria | `#8E44AD` |
|
|
1675
|
+
| Systems Developer |  Pumpkin | `#D35400` |
|
|
1676
|
+
| **Domain Specialists** | | |
|
|
1677
|
+
| Architecture |  Navy | `#2C3E80` |
|
|
1678
|
+
| Test Strategy |  Sunflower | `#F1C40F` |
|
|
1679
|
+
| Performance |  Carrot | `#E67E22` |
|
|
1680
|
+
| Security |  Pomegranate | `#C0392B` |
|
|
1681
|
+
| Accessibility |  Nephritis | `#27AE60` |
|
|
1682
|
+
| SEO |  Green Sea | `#16A085` |
|
|
1683
|
+
| UI/UX Designer |  Pink | `#E91E63` |
|
|
1684
|
+
| Documentation |  Blue Gray | `#607D8B` |
|
|
1685
|
+
| Integration |  Cyan | `#00BCD4` |
|
|
1686
|
+
| Event Architecture |  Deep Orange | `#FF5722` |
|
|
1687
|
+
| Observability |  Brown | `#795548` |
|
|
1688
|
+
| Migration |  Amber | `#FF9800` |
|
|
1689
|
+
| i18n |  Teal | `#009688` |
|
|
1690
|
+
| **Utility Agents** | | |
|
|
1691
|
+
| Code Quality |  Light Green | `#8BC34A` |
|
|
1692
|
+
| Code Reviewer |  Deep Purple | `#673AB7` |
|
|
1693
|
+
|
|
1645
1694
|
---
|
|
1646
1695
|
|
|
1647
1696
|
## Adding New Agents
|
|
@@ -1667,6 +1716,7 @@ Create a new JSON file following this structure:
|
|
|
1667
1716
|
{
|
|
1668
1717
|
"name": "Agent Name",
|
|
1669
1718
|
"description": "Brief description",
|
|
1719
|
+
"color": "#HEXCOD",
|
|
1670
1720
|
"role": {
|
|
1671
1721
|
"title": "Role Title",
|
|
1672
1722
|
"expertise": [],
|
|
@@ -1723,7 +1773,7 @@ Add a regex pattern to detect specialist-relevant keywords in user prompts:
|
|
|
1723
1773
|
// apps/mcp-server/src/keyword/keyword.service.ts
|
|
1724
1774
|
{
|
|
1725
1775
|
pattern:
|
|
1726
|
-
/keyword1|keyword2
|
|
1776
|
+
/keyword1|keyword2|korean_keyword|english\s*pattern/i,
|
|
1727
1777
|
specialist: '{domain}-specialist',
|
|
1728
1778
|
},
|
|
1729
1779
|
```
|
|
@@ -1810,8 +1860,8 @@ describe('{domain}-specialist pattern', () => {
|
|
|
1810
1860
|
});
|
|
1811
1861
|
|
|
1812
1862
|
it.each([
|
|
1813
|
-
'
|
|
1814
|
-
'
|
|
1863
|
+
'Korean keyword 1',
|
|
1864
|
+
'Korean keyword 2',
|
|
1815
1865
|
// ... more Korean patterns
|
|
1816
1866
|
])('detects {domain}-specialist for Korean: %s', async prompt => {
|
|
1817
1867
|
const result = await service.parseMode(`PLAN ${prompt}`);
|
|
@@ -1869,7 +1919,7 @@ When modifying an existing specialist's integration:
|
|
|
1869
1919
|
pattern: /existing|keywords/i,
|
|
1870
1920
|
|
|
1871
1921
|
// After
|
|
1872
|
-
pattern: /existing|keywords|new_keyword
|
|
1922
|
+
pattern: /existing|keywords|new_keyword|new_korean_keyword/i,
|
|
1873
1923
|
```
|
|
1874
1924
|
|
|
1875
1925
|
#### Adding New File Patterns
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Accessibility Specialist",
|
|
3
3
|
"description": "Accessibility expert for Planning, Implementation, and Evaluation modes - unified specialist for WCAG 2.1 AA compliance, ARIA attributes, and keyboard navigation",
|
|
4
|
+
"color": "#27AE60",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "Accessibility Engineer",
|
|
6
7
|
"expertise": [
|
|
@@ -305,7 +306,7 @@
|
|
|
305
306
|
"auto_activate_conditions": [
|
|
306
307
|
"UI component development or modifications",
|
|
307
308
|
"Form component creation",
|
|
308
|
-
"User explicitly requests accessibility review (A11Y,
|
|
309
|
+
"User explicitly requests accessibility review (A11Y, accessibility review)",
|
|
309
310
|
"Code Reviewer identifies accessibility concerns"
|
|
310
311
|
],
|
|
311
312
|
"mandatory_checklist": {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Act Mode Agent",
|
|
3
3
|
"description": "ACT mode agent - specialized for actual implementation execution",
|
|
4
|
+
"color": "#82B366",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "Act Mode Agent",
|
|
6
7
|
"mode": "ACT",
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
".ai-rules/rules/augmented-coding.md"
|
|
32
33
|
],
|
|
33
34
|
"activation": {
|
|
34
|
-
"trigger": "🔴 **STRICT**: When user types 'ACT' or equivalent (Korean:
|
|
35
|
+
"trigger": "🔴 **STRICT**: When user types 'ACT' or equivalent (Korean: execute, Japanese: 実行, Chinese: 执行, Spanish: ACTUAR)",
|
|
35
36
|
"rule": "🔴 **STRICT**: ACT MODE request must activate this Agent automatically",
|
|
36
37
|
"mandatory_checklist": {
|
|
37
38
|
"🔴 language": {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Agent Architect",
|
|
3
3
|
"description": "Primary Agent for creating, validating, and managing AI agent configurations",
|
|
4
|
+
"color": "#9B59B6",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "AI Agent Framework Architect",
|
|
6
7
|
"type": "primary",
|
|
@@ -29,19 +30,19 @@
|
|
|
29
30
|
"activation": {
|
|
30
31
|
"trigger": "When user requests agent-related tasks: create agent, validate agent, audit checklist, manage agents",
|
|
31
32
|
"explicit_patterns": [
|
|
32
|
-
"에이전트 만들어",
|
|
33
|
-
"agent 생성",
|
|
34
33
|
"create agent",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
34
|
+
"agent creation",
|
|
35
|
+
"create agent",
|
|
36
|
+
"new agent",
|
|
37
|
+
"validate agent",
|
|
37
38
|
"validate agent",
|
|
38
39
|
"agent validation",
|
|
39
|
-
"
|
|
40
|
+
"audit checklist",
|
|
40
41
|
"audit checklist",
|
|
41
42
|
"checklist audit",
|
|
42
|
-
"에이전트 관리",
|
|
43
43
|
"manage agent",
|
|
44
|
-
"agent
|
|
44
|
+
"manage agent",
|
|
45
|
+
"as agent-architect"
|
|
45
46
|
],
|
|
46
47
|
"mandatory_checklist": {
|
|
47
48
|
"🔴 schema_compliance": {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "AI/ML Engineer",
|
|
3
3
|
"description": "AI/ML expert for Planning, Implementation, and Evaluation modes - unified specialist for LLM integration, prompt engineering, RAG architecture, AI safety, and testing non-deterministic systems",
|
|
4
|
+
"color": "#FF6F61",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "Senior AI/ML Engineer",
|
|
6
7
|
"type": "primary",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Architecture Specialist",
|
|
3
3
|
"description": "Architecture expert for Planning, Implementation, and Evaluation modes - unified specialist for layer placement, dependency direction, and type safety",
|
|
4
|
+
"color": "#2C3E80",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "Architecture Engineer",
|
|
6
7
|
"expertise": [
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Auto Mode Agent",
|
|
3
3
|
"description": "AUTO mode agent - autonomous PLAN → ACT → EVAL cycle until quality targets met",
|
|
4
|
+
"color": "#B85450",
|
|
4
5
|
"role": {
|
|
5
6
|
"title": "Auto Mode Agent",
|
|
6
7
|
"mode": "AUTO",
|
|
@@ -20,7 +21,8 @@
|
|
|
20
21
|
"EVAL phase: Multi-dimensional quality evaluation with anti-sycophancy",
|
|
21
22
|
"Iterate until Critical=0 AND High=0 issues remaining",
|
|
22
23
|
"Maintain context continuity across cycle iterations",
|
|
23
|
-
"Track iteration count and quality metrics progression"
|
|
24
|
+
"Track iteration count and quality metrics progression",
|
|
25
|
+
"Execute all tasks continuously without stopping between steps — only pause for RESULT.json at completion"
|
|
24
26
|
]
|
|
25
27
|
},
|
|
26
28
|
"context_files": [
|
|
@@ -29,7 +31,7 @@
|
|
|
29
31
|
".ai-rules/rules/augmented-coding.md"
|
|
30
32
|
],
|
|
31
33
|
"activation": {
|
|
32
|
-
"trigger": "🔴 **STRICT**: When user types 'AUTO' or equivalent (Korean:
|
|
34
|
+
"trigger": "🔴 **STRICT**: When user types 'AUTO' or equivalent (Korean: automatic, Japanese: 自動, Chinese: 自动, Spanish: AUTOMÁTICO)",
|
|
33
35
|
"rule": "🔴 **STRICT**: AUTO MODE request must activate this Agent automatically",
|
|
34
36
|
"mandatory_checklist": {
|
|
35
37
|
"🔴 language": {
|