Skip to content

Commit 160e8e8

Browse files
committed
chore: install oh-my-agent skills and configuration
1 parent 08e6810 commit 160e8e8

401 files changed

Lines changed: 52893 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/config/defaults.yaml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Profile B defaults (benchmark-leader assignments)
2+
# Generated: 2026-04-23 | Session: session-20260423-141500
3+
# Claude roles omit effort (cli-session managed).
4+
#
5+
# ⚠ This file is a single source of truth (SSOT) shipped with oh-my-agent.
6+
# Do NOT edit it directly. To customize behavior, use one of:
7+
# - .agents/oma-config.yaml (agent_cli_mapping, session.quota_cap)
8+
# - .agents/config/models.yaml (add or override model slugs)
9+
# To receive newer Profile B defaults in future releases, run:
10+
# oma install --update-defaults
11+
12+
version: "2.1.0"
13+
14+
agent_defaults:
15+
orchestrator: { model: "anthropic/claude-sonnet-4-6" }
16+
architecture: { model: "anthropic/claude-opus-4-7" }
17+
qa: { model: "anthropic/claude-sonnet-4-6" }
18+
pm: { model: "anthropic/claude-sonnet-4-6" }
19+
backend: { model: "openai/gpt-5.5", effort: "high" }
20+
frontend: { model: "openai/gpt-5.5", effort: "high" }
21+
mobile: { model: "openai/gpt-5.5", effort: "high" }
22+
db: { model: "openai/gpt-5.5", effort: "high" }
23+
debug: { model: "openai/gpt-5.5", effort: "high" }
24+
tf-infra: { model: "openai/gpt-5.5", effort: "high" }
25+
retrieval: { model: "google/gemini-3.1-flash-lite" }
26+
27+
runtime_profiles:
28+
claude-only:
29+
description: "Claude-only — Max subscription holders"
30+
agent_defaults:
31+
orchestrator: { model: "anthropic/claude-sonnet-4-6" }
32+
architecture: { model: "anthropic/claude-opus-4-7" }
33+
qa: { model: "anthropic/claude-sonnet-4-6" }
34+
pm: { model: "anthropic/claude-sonnet-4-6" }
35+
backend: { model: "anthropic/claude-sonnet-4-6" }
36+
frontend: { model: "anthropic/claude-sonnet-4-6" }
37+
mobile: { model: "anthropic/claude-sonnet-4-6" }
38+
db: { model: "anthropic/claude-sonnet-4-6" }
39+
debug: { model: "anthropic/claude-sonnet-4-6" }
40+
tf-infra: { model: "anthropic/claude-sonnet-4-6" }
41+
retrieval: { model: "anthropic/claude-haiku-4-5" }
42+
43+
codex-only:
44+
description: "Codex-only — ChatGPT Plus/Pro"
45+
agent_defaults:
46+
orchestrator: { model: "openai/gpt-5.5", effort: "medium" }
47+
architecture: { model: "openai/gpt-5.5", effort: "high" }
48+
qa: { model: "openai/gpt-5.5", effort: "high" }
49+
pm: { model: "openai/gpt-5.5", effort: "medium" }
50+
backend: { model: "openai/gpt-5.5", effort: "high" }
51+
frontend: { model: "openai/gpt-5.5", effort: "high" }
52+
mobile: { model: "openai/gpt-5.5", effort: "high" }
53+
db: { model: "openai/gpt-5.5", effort: "high" }
54+
debug: { model: "openai/gpt-5.5", effort: "high" }
55+
tf-infra: { model: "openai/gpt-5.5", effort: "high" }
56+
retrieval: { model: "openai/gpt-5.4-mini", effort: "low" }
57+
58+
gemini-only:
59+
description: "Gemini-only — Google AI Pro"
60+
agent_defaults:
61+
orchestrator: { model: "google/gemini-3-flash" }
62+
architecture: { model: "google/gemini-3.1-pro-preview", thinking: true }
63+
qa: { model: "google/gemini-3-flash", thinking: true }
64+
pm: { model: "google/gemini-3-flash" }
65+
backend: { model: "google/gemini-3-flash", thinking: true }
66+
frontend: { model: "google/gemini-3-flash", thinking: true }
67+
mobile: { model: "google/gemini-3-flash", thinking: true }
68+
db: { model: "google/gemini-3-flash", thinking: true }
69+
debug: { model: "google/gemini-3-flash", thinking: true }
70+
tf-infra: { model: "google/gemini-3-flash", thinking: true }
71+
retrieval: { model: "google/gemini-3.1-flash-lite" }
72+
73+
antigravity:
74+
description: "Antigravity IDE — all impl roles fall back to external subprocess (handled at dispatch layer)"
75+
agent_defaults:
76+
orchestrator: { model: "anthropic/claude-sonnet-4-6" }
77+
architecture: { model: "anthropic/claude-opus-4-7" }
78+
qa: { model: "anthropic/claude-sonnet-4-6" }
79+
pm: { model: "anthropic/claude-sonnet-4-6" }
80+
backend: { model: "openai/gpt-5.5", effort: "high" }
81+
frontend: { model: "openai/gpt-5.5", effort: "high" }
82+
mobile: { model: "openai/gpt-5.5", effort: "high" }
83+
db: { model: "openai/gpt-5.5", effort: "high" }
84+
debug: { model: "openai/gpt-5.5", effort: "high" }
85+
tf-infra: { model: "openai/gpt-5.5", effort: "high" }
86+
retrieval: { model: "google/gemini-3.1-flash-lite" }
87+
88+
cursor-only:
89+
description: "Cursor-only — Cursor Pro / Pro Student"
90+
agent_defaults:
91+
orchestrator: { model: "cursor/composer-2-fast" }
92+
architecture: { model: "cursor/composer-2" }
93+
qa: { model: "cursor/composer-2-fast" }
94+
pm: { model: "cursor/composer-2-fast" }
95+
backend: { model: "cursor/composer-2" }
96+
frontend: { model: "cursor/composer-2" }
97+
mobile: { model: "cursor/composer-2" }
98+
db: { model: "cursor/composer-2" }
99+
debug: { model: "cursor/composer-2" }
100+
tf-infra: { model: "cursor/composer-2" }
101+
retrieval: { model: "cursor/composer-2-fast" }
102+
103+
qwen-only:
104+
description: "Qwen Code — all agents routed external (no native parallel); Qwen has no --effort, only binary --thinking"
105+
agent_defaults:
106+
orchestrator: { model: "qwen/qwen3-coder-next", thinking: false }
107+
architecture: { model: "qwen/qwen3.6-plus", thinking: true }
108+
qa: { model: "qwen/qwen3.6-plus", thinking: true }
109+
pm: { model: "qwen/qwen3-coder-next", thinking: false }
110+
backend: { model: "qwen/qwen3.6-plus", thinking: true }
111+
frontend: { model: "qwen/qwen3.6-plus", thinking: true }
112+
mobile: { model: "qwen/qwen3.6-plus", thinking: true }
113+
db: { model: "qwen/qwen3.6-plus", thinking: true }
114+
debug: { model: "qwen/qwen3.6-plus", thinking: true }
115+
tf-infra: { model: "qwen/qwen3.6-plus", thinking: true }
116+
retrieval: { model: "qwen/qwen3-coder-next", thinking: false }

.agents/mcp.json

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
{
2+
"mcpServers": {
3+
"chrome-devtools": {
4+
"command": "npx",
5+
"args": [
6+
"-y",
7+
"chrome-devtools-mcp@latest",
8+
"--no-usage-statistics",
9+
"--isolated"
10+
]
11+
},
12+
"context7": {
13+
"command": "npx",
14+
"args": ["-y", "@upstash/context7-mcp@latest"]
15+
},
16+
"serena": {
17+
"command": "uvx",
18+
"args": [
19+
"--from",
20+
"git+https://github.com/oraios/serena",
21+
"serena",
22+
"start-mcp-server",
23+
"--context",
24+
"antigravity",
25+
"--project",
26+
"."
27+
],
28+
"env": {
29+
"SERENA_LOG_LEVEL": "info"
30+
},
31+
"available_tools": null
32+
}
33+
},
34+
"memoryConfig": {
35+
"provider": "serena",
36+
"basePath": ".serena/memories",
37+
"tools": {
38+
"read": "read_memory",
39+
"write": "write_memory",
40+
"edit": "edit_memory",
41+
"list": "list_memories",
42+
"delete": "delete_memory"
43+
}
44+
},
45+
"toolGroups": {
46+
"memory": [
47+
"read_memory",
48+
"write_memory",
49+
"edit_memory",
50+
"list_memories",
51+
"delete_memory"
52+
],
53+
"code-analysis": [
54+
"get_symbols_overview",
55+
"find_symbol",
56+
"find_referencing_symbols",
57+
"search_for_pattern"
58+
],
59+
"code-edit": [
60+
"replace_symbol_body",
61+
"insert_after_symbol",
62+
"insert_before_symbol",
63+
"rename_symbol"
64+
],
65+
"browser": [
66+
"navigate_page",
67+
"take_screenshot",
68+
"click",
69+
"fill",
70+
"fill_form",
71+
"evaluate_script",
72+
"list_network_requests",
73+
"list_console_messages",
74+
"lighthouse_audit",
75+
"performance_start_trace",
76+
"performance_stop_trace",
77+
"performance_analyze_insight"
78+
],
79+
"docs-search": ["resolve-library-id", "query-docs"],
80+
"file-ops": ["list_dir", "find_file"],
81+
"project": [
82+
"activate_project",
83+
"get_current_config",
84+
"check_onboarding_performed",
85+
"onboarding"
86+
],
87+
"thinking": [
88+
"think_about_collected_information",
89+
"think_about_task_adherence",
90+
"think_about_whether_you_are_done"
91+
],
92+
"all": null
93+
}
94+
}

.agents/oma-config.yaml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# oh-my-agent — project config
2+
# Full schema: web/docs/guide/per-agent-models.md
3+
4+
# ─────────────────────────────────────────────────────────────────────────────
5+
# Global preferences
6+
# ─────────────────────────────────────────────────────────────────────────────
7+
8+
# Response language (ko, en, ja, zh, ...)
9+
language: en
10+
11+
# Translation voice preference for oma-translator skill.
12+
# formal — technical writer / reporter style, complete sentences, no fragments,
13+
# strict 합니다체 / です・ます (best for legal, official docs)
14+
# balanced — content-type-based persona routing (default)
15+
# interpreter — interpreter mindset across all content types: punchy, audience-first,
16+
# spoken cadence, fragments allowed when natural, drops formal padding
17+
# Affects persona resolution in `.agents/skills/oma-translator/SKILL.md` Stage 2.5.
18+
translation_voice: balanced
19+
20+
# Date / time
21+
date_format: ISO
22+
timezone: Asia/Seoul
23+
24+
# Auto-update the oh-my-agent CLI in the background when outdated.
25+
# Disable per-shell with OMA_SKIP_VERSION_CHECK=1.
26+
auto_update_cli: true
27+
28+
# ─────────────────────────────────────────────────────────────────────────────
29+
# oma-docs documentation drift detection
30+
# ─────────────────────────────────────────────────────────────────────────────
31+
32+
docs:
33+
# When true, runs `oma docs verify --json` at the end of /scm, /work, /ultrawork.
34+
# Warn-only — never blocks workflow completion. Default: false (opt-in).
35+
# See `.agents/skills/oma-docs/SKILL.md` for full behavior.
36+
auto_verify: false
37+
38+
# When true (default), URL link checking is delegated to `lychee` running
39+
# in the background; results land in docs/generated/url-drift.json.
40+
# If `lychee` is missing, `oma docs verify` prints an install hint and
41+
# skips URL checking. Set to false to silence that hint and disable URL
42+
# checks entirely (e.g., when you run lychee separately from CI).
43+
# Install: `brew install lychee` (macOS) or see
44+
# https://github.com/lycheeverse/lychee#installation for other platforms.
45+
check_urls: true
46+
47+
# ─────────────────────────────────────────────────────────────────────────────
48+
# Model selection
49+
# ─────────────────────────────────────────────────────────────────────────────
50+
51+
# Built-in: claude-only | codex-only | gemini-only | qwen-only | cursor-only | antigravity
52+
# (custom_presets entries are also valid)
53+
model_preset: claude-only
54+
55+
# Per-agent override (optional) — shallow-merged on top of the preset entry.
56+
# Agent ids: orchestrator, architecture, qa, pm, backend, frontend, mobile,
57+
# db, debug, docs, tf-infra, retrieval
58+
# Each AgentSpec accepts:
59+
# model: "<owner>/<slug>" required. Slugs follow OpenRouter convention
60+
# (https://openrouter.ai/models). Only models whose owning vendor
61+
# ships a forkable CLI (claude, codex, gemini, qwen) are usable —
62+
# API-only entries (api_only: true) are skipped. Custom slugs go
63+
# in `models:` below.
64+
# effort: none | low | medium | high | xhigh (ignored for cli-session models like Claude)
65+
# thinking: true | false (vendor-dependent)
66+
# memory: user | project | local (per-agent memory tier)
67+
# Example:
68+
# agents:
69+
# backend:
70+
# model: openai/gpt-5.5
71+
# effort: high
72+
# qa:
73+
# model: anthropic/claude-sonnet-4-6
74+
75+
# Inline custom model slugs (optional; replaces the legacy models.yaml file).
76+
# Example:
77+
# models:
78+
# my-fast:
79+
# cli: gemini
80+
# cli_model: gemini-3-flash
81+
# supports:
82+
# native_dispatch_from: [gemini]
83+
84+
# User-defined presets (optional). Use `extends:` to partially inherit a built-in.
85+
# Example:
86+
# custom_presets:
87+
# my-team:
88+
# extends: claude-only
89+
# description: "Team A — sonnet base, codex backend"
90+
# agent_defaults:
91+
# backend: { model: openai/gpt-5.5, effort: high }
92+
93+
# ─────────────────────────────────────────────────────────────────────────────
94+
# Resolution order (when an agent runs):
95+
# 1. agents.<id> — explicit per-agent override
96+
# 2. model_preset entry — built-in or custom_presets[model_preset]
97+
# 3. preset.orchestrator — fallback when an agent is missing from the preset
98+
# ─────────────────────────────────────────────────────────────────────────────
99+
vendors:
100+
- claude
101+
- codex
102+
- copilot
103+
- cursor
104+
- gemini
105+
- qwen

.agents/rules/backend.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
description: Backend API coding standards with clean architecture (Router/Service/Repository pattern)
3+
globs:
4+
alwaysApply: false
5+
---
6+
7+
# Backend Coding Standards
8+
9+
## Core Rules
10+
11+
1. **Clean architecture**: router -> service -> repository -> models
12+
2. **No business logic in route handlers**
13+
3. **All inputs validated** with your stack's validation library
14+
4. **Parameterized queries only** (never string interpolation)
15+
5. **JWT + bcrypt for auth**; rate limit auth endpoints
16+
6. **Async where supported**; type annotations on all signatures
17+
7. **Custom exceptions** via centralized error module (not raw HTTP exceptions)
18+
8. **Explicit ORM loading strategy**: do not rely on default relation loading when query shape matters
19+
9. **Explicit transaction boundaries**: group one business operation into one request/service-scoped unit of work
20+
10. **Safe ORM lifecycle**: do not share mutable ORM session/entity manager across concurrent work unless ORM explicitly supports it
21+
11. **Config from environment, with graceful fallback**: DB URLs, API keys, secrets from env vars or secret managers, never hardcode. When integrating a third-party API (OpenAI, Anthropic, Stripe, etc.), write BOTH paths: (a) real call when `process.env.<KEY>` is present, (b) deterministic local fallback when absent. Mark the deferred branch with `// TODO(oma-deferred): integrate <vendor> when key is provisioned`. Shipping only the fallback (no env-conditional branch) leaves the spec unmet; shipping only the real call without fallback breaks demos when the key is missing.
22+
12. **Stateless services**: no in-memory session or user state between requests — use external stores
23+
13. **Backing services as resources**: DB, queue, cache are swappable resources connected via config
24+
25+
## Architecture
26+
27+
```
28+
Router (HTTP) → Service (Business Logic) → Repository (Data Access) → Models
29+
```
30+
31+
## Principles
32+
33+
- **DRY**: Business logic in Service, data access in Repository
34+
- **Single Responsibility**: Classes and functions should have one responsibility
35+
- **Dependency Inversion**: Use your framework's DI mechanism
36+
- **KISS**: Keep it simple and clear

.agents/rules/commit.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
description: Conventional Commits specification and git commit workflow rules
3+
globs:
4+
alwaysApply: false
5+
---
6+
7+
# Commit Standards
8+
9+
## Format
10+
11+
```
12+
<type>(<scope>): <description>
13+
14+
[optional body]
15+
```
16+
17+
**Types**: feat, fix, refactor, docs, test, chore, style, perf
18+
19+
## Rules
20+
21+
1. **Analyze changes** before committing
22+
2. **Split by feature** if changes span multiple domains
23+
3. **Description** under 72 characters, imperative mood, lowercase, no trailing period
24+
4. **Never** use `git add -A` or `git add .` without explicit permission
25+
5. **Never** commit files that may contain secrets (.env, credentials)
26+
6. **Always** use specific file names when staging
27+
7. Split commits when: different scopes, different types, logically independent changes
28+
8. Do NOT split when: all changes belong to a single feature, few files (5 or fewer)

0 commit comments

Comments
 (0)