oh-my-customcode 0.36.1 → 0.37.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/dist/cli/index.js +47 -2
- package/dist/index.js +44 -0
- package/package.json +1 -1
- package/templates/.claude/agents/arch-documenter.md +4 -1
- package/templates/.claude/agents/arch-speckit-agent.md +15 -0
- package/templates/.claude/agents/be-django-expert.md +1 -0
- package/templates/.claude/agents/be-express-expert.md +1 -0
- package/templates/.claude/agents/be-fastapi-expert.md +1 -0
- package/templates/.claude/agents/be-go-backend-expert.md +1 -0
- package/templates/.claude/agents/be-nestjs-expert.md +1 -0
- package/templates/.claude/agents/be-springboot-expert.md +1 -0
- package/templates/.claude/agents/db-postgres-expert.md +1 -0
- package/templates/.claude/agents/db-redis-expert.md +1 -0
- package/templates/.claude/agents/db-supabase-expert.md +1 -0
- package/templates/.claude/agents/de-airflow-expert.md +1 -0
- package/templates/.claude/agents/de-dbt-expert.md +1 -0
- package/templates/.claude/agents/de-kafka-expert.md +1 -0
- package/templates/.claude/agents/de-pipeline-expert.md +1 -0
- package/templates/.claude/agents/de-snowflake-expert.md +1 -0
- package/templates/.claude/agents/de-spark-expert.md +1 -0
- package/templates/.claude/agents/fe-flutter-agent.md +1 -0
- package/templates/.claude/agents/fe-svelte-agent.md +1 -0
- package/templates/.claude/agents/fe-vercel-agent.md +1 -0
- package/templates/.claude/agents/fe-vuejs-agent.md +1 -0
- package/templates/.claude/agents/infra-aws-expert.md +1 -0
- package/templates/.claude/agents/infra-docker-expert.md +1 -0
- package/templates/.claude/agents/lang-golang-expert.md +1 -0
- package/templates/.claude/agents/lang-java21-expert.md +3 -0
- package/templates/.claude/agents/lang-kotlin-expert.md +1 -0
- package/templates/.claude/agents/lang-python-expert.md +1 -0
- package/templates/.claude/agents/lang-rust-expert.md +1 -0
- package/templates/.claude/agents/lang-typescript-expert.md +1 -0
- package/templates/.claude/agents/mgr-claude-code-bible.md +1 -2
- package/templates/.claude/agents/mgr-creator.md +1 -0
- package/templates/.claude/agents/mgr-gitnerd.md +1 -0
- package/templates/.claude/agents/mgr-sauron.md +5 -2
- package/templates/.claude/agents/mgr-supplier.md +1 -3
- package/templates/.claude/agents/mgr-updater.md +1 -0
- package/templates/.claude/agents/qa-engineer.md +1 -0
- package/templates/.claude/agents/qa-planner.md +4 -1
- package/templates/.claude/agents/qa-writer.md +1 -1
- package/templates/.claude/agents/sec-codeql-expert.md +4 -2
- package/templates/.claude/agents/sys-memory-keeper.md +30 -0
- package/templates/.claude/agents/sys-naggy.md +36 -2
- package/templates/.claude/agents/tool-bun-expert.md +1 -1
- package/templates/.claude/agents/tool-npm-expert.md +1 -1
- package/templates/.claude/agents/tool-optimizer.md +1 -2
- package/templates/.claude/hooks/hooks.json +37 -7
- package/templates/.claude/hooks/scripts/agent-teams-advisor.sh +10 -0
- package/templates/.claude/hooks/scripts/audit-log.sh +55 -0
- package/templates/.claude/hooks/scripts/content-hash-validator.sh +2 -3
- package/templates/.claude/hooks/scripts/schema-validator.sh +103 -0
- package/templates/.claude/hooks/scripts/secret-filter.sh +97 -0
- package/templates/.claude/hooks/scripts/session-compliance-report.sh +65 -0
- package/templates/.claude/rules/MUST-agent-teams.md +0 -23
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +1 -13
- package/templates/.claude/skills/django-best-practices/SKILL.md +27 -134
- package/templates/.claude/skills/flutter-best-practices/SKILL.md +39 -146
- package/templates/.claude/skills/go-backend-best-practices/SKILL.md +29 -233
- package/templates/.claude/skills/java21-best-practices/SKILL.md +48 -163
- package/templates/CLAUDE.md.en +7 -65
- package/templates/CLAUDE.md.ko +7 -65
- package/templates/manifest.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -14474,6 +14474,21 @@ function getSkillScope(content) {
|
|
|
14474
14474
|
function shouldInstallSkill(scope) {
|
|
14475
14475
|
return scope !== "package";
|
|
14476
14476
|
}
|
|
14477
|
+
function getAgentDomain(content) {
|
|
14478
|
+
const cleaned = content.replace(/^\uFEFF/, "");
|
|
14479
|
+
const frontmatter = cleaned.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
14480
|
+
if (!frontmatter)
|
|
14481
|
+
return "universal";
|
|
14482
|
+
const match = frontmatter[1].match(/^domain:\s*(backend|frontend|data-engineering|devops|universal)\s*$/m);
|
|
14483
|
+
return match?.[1] ?? "universal";
|
|
14484
|
+
}
|
|
14485
|
+
function shouldInstallAgent(agentDomain, filterDomain) {
|
|
14486
|
+
if (!filterDomain)
|
|
14487
|
+
return true;
|
|
14488
|
+
if (agentDomain === "universal")
|
|
14489
|
+
return true;
|
|
14490
|
+
return agentDomain === filterDomain;
|
|
14491
|
+
}
|
|
14477
14492
|
|
|
14478
14493
|
// src/core/installer.ts
|
|
14479
14494
|
var DEFAULT_LANGUAGE2 = "en";
|
|
@@ -14692,6 +14707,33 @@ async function installSkillsWithScopeFilter(srcPath, destPath, options) {
|
|
|
14692
14707
|
});
|
|
14693
14708
|
}
|
|
14694
14709
|
}
|
|
14710
|
+
async function installAgentsWithDomainFilter(srcPath, destPath, options) {
|
|
14711
|
+
await ensureDirectory(destPath);
|
|
14712
|
+
const entries = await readdir2(srcPath);
|
|
14713
|
+
for (const entry of entries) {
|
|
14714
|
+
const entrySrcPath = join7(srcPath, entry);
|
|
14715
|
+
const entryStat = await stat2(entrySrcPath);
|
|
14716
|
+
if (entryStat.isDirectory()) {
|
|
14717
|
+
await copyDirectory(entrySrcPath, join7(destPath, entry), {
|
|
14718
|
+
overwrite: !!(options.force || options.backup),
|
|
14719
|
+
preserveSymlinks: true,
|
|
14720
|
+
preserveTimestamps: true
|
|
14721
|
+
});
|
|
14722
|
+
continue;
|
|
14723
|
+
}
|
|
14724
|
+
if (!entry.endsWith(".md"))
|
|
14725
|
+
continue;
|
|
14726
|
+
if (options.domain) {
|
|
14727
|
+
const content = await fsReadFile(entrySrcPath, "utf-8");
|
|
14728
|
+
const agentDomain = getAgentDomain(content);
|
|
14729
|
+
if (!shouldInstallAgent(agentDomain, options.domain)) {
|
|
14730
|
+
debug("install.agent_domain_excluded", { agent: entry, domain: agentDomain });
|
|
14731
|
+
continue;
|
|
14732
|
+
}
|
|
14733
|
+
}
|
|
14734
|
+
await copyFile(entrySrcPath, join7(destPath, entry));
|
|
14735
|
+
}
|
|
14736
|
+
}
|
|
14695
14737
|
async function installComponent(targetDir, component, options) {
|
|
14696
14738
|
if (component === "entry-md") {
|
|
14697
14739
|
return false;
|
|
@@ -14710,6 +14752,8 @@ async function installComponent(targetDir, component, options) {
|
|
|
14710
14752
|
}
|
|
14711
14753
|
if (component === "skills") {
|
|
14712
14754
|
await installSkillsWithScopeFilter(srcPath, destPath, options);
|
|
14755
|
+
} else if (component === "agents") {
|
|
14756
|
+
await installAgentsWithDomainFilter(srcPath, destPath, options);
|
|
14713
14757
|
} else {
|
|
14714
14758
|
await copyDirectory(srcPath, destPath, {
|
|
14715
14759
|
overwrite: !!(options.force || options.backup),
|
|
@@ -14923,7 +14967,8 @@ async function initCommand(options) {
|
|
|
14923
14967
|
targetDir,
|
|
14924
14968
|
language: options.lang,
|
|
14925
14969
|
force: options.force ?? false,
|
|
14926
|
-
backup: exists2
|
|
14970
|
+
backup: exists2,
|
|
14971
|
+
domain: options.domain
|
|
14927
14972
|
});
|
|
14928
14973
|
if (!installResult.success) {
|
|
14929
14974
|
return createFailureResult(installResult.error || "Unknown error");
|
|
@@ -16347,7 +16392,7 @@ var packageJson = require2("../../package.json");
|
|
|
16347
16392
|
function createProgram() {
|
|
16348
16393
|
const program2 = new Command;
|
|
16349
16394
|
program2.name("omcustom").description(i18n.t("cli.description")).version(packageJson.version, "-v, --version", i18n.t("cli.versionOption")).option("--skip-version-check", "Skip CLI version pre-flight check");
|
|
16350
|
-
program2.command("init").description(i18n.t("cli.init.description")).option("-l, --lang <language>", i18n.t("cli.init.langOption"), "en").action(async (options) => {
|
|
16395
|
+
program2.command("init").description(i18n.t("cli.init.description")).option("-l, --lang <language>", i18n.t("cli.init.langOption"), "en").option("--domain <domain>", "Install only agents/skills for specific domain (backend, frontend, data-engineering, devops)").action(async (options) => {
|
|
16351
16396
|
await initCommand(options);
|
|
16352
16397
|
});
|
|
16353
16398
|
program2.command("update").description(i18n.t("cli.update.description")).option("--dry-run", i18n.t("cli.update.dryRunOption")).option("--force", i18n.t("cli.update.forceOption")).option("--force-overwrite-all", i18n.t("cli.update.forceOverwriteAllOption")).option("--backup", i18n.t("cli.update.backupOption")).option("--agents", i18n.t("cli.update.agentsOption")).option("--skills", i18n.t("cli.update.skillsOption")).option("--rules", i18n.t("cli.update.rulesOption")).option("--guides", i18n.t("cli.update.guidesOption")).option("--hooks", i18n.t("cli.update.hooksOption")).option("--contexts", i18n.t("cli.update.contextsOption")).action(async (options) => {
|
package/dist/index.js
CHANGED
|
@@ -1230,6 +1230,21 @@ function getSkillScope(content) {
|
|
|
1230
1230
|
function shouldInstallSkill(scope) {
|
|
1231
1231
|
return scope !== "package";
|
|
1232
1232
|
}
|
|
1233
|
+
function getAgentDomain(content) {
|
|
1234
|
+
const cleaned = content.replace(/^\uFEFF/, "");
|
|
1235
|
+
const frontmatter = cleaned.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
1236
|
+
if (!frontmatter)
|
|
1237
|
+
return "universal";
|
|
1238
|
+
const match = frontmatter[1].match(/^domain:\s*(backend|frontend|data-engineering|devops|universal)\s*$/m);
|
|
1239
|
+
return match?.[1] ?? "universal";
|
|
1240
|
+
}
|
|
1241
|
+
function shouldInstallAgent(agentDomain, filterDomain) {
|
|
1242
|
+
if (!filterDomain)
|
|
1243
|
+
return true;
|
|
1244
|
+
if (agentDomain === "universal")
|
|
1245
|
+
return true;
|
|
1246
|
+
return agentDomain === filterDomain;
|
|
1247
|
+
}
|
|
1233
1248
|
|
|
1234
1249
|
// src/core/installer.ts
|
|
1235
1250
|
var DEFAULT_LANGUAGE = "en";
|
|
@@ -1483,6 +1498,33 @@ async function installSkillsWithScopeFilter(srcPath, destPath, options) {
|
|
|
1483
1498
|
});
|
|
1484
1499
|
}
|
|
1485
1500
|
}
|
|
1501
|
+
async function installAgentsWithDomainFilter(srcPath, destPath, options) {
|
|
1502
|
+
await ensureDirectory(destPath);
|
|
1503
|
+
const entries = await readdir2(srcPath);
|
|
1504
|
+
for (const entry of entries) {
|
|
1505
|
+
const entrySrcPath = join5(srcPath, entry);
|
|
1506
|
+
const entryStat = await stat2(entrySrcPath);
|
|
1507
|
+
if (entryStat.isDirectory()) {
|
|
1508
|
+
await copyDirectory(entrySrcPath, join5(destPath, entry), {
|
|
1509
|
+
overwrite: !!(options.force || options.backup),
|
|
1510
|
+
preserveSymlinks: true,
|
|
1511
|
+
preserveTimestamps: true
|
|
1512
|
+
});
|
|
1513
|
+
continue;
|
|
1514
|
+
}
|
|
1515
|
+
if (!entry.endsWith(".md"))
|
|
1516
|
+
continue;
|
|
1517
|
+
if (options.domain) {
|
|
1518
|
+
const content = await fsReadFile(entrySrcPath, "utf-8");
|
|
1519
|
+
const agentDomain = getAgentDomain(content);
|
|
1520
|
+
if (!shouldInstallAgent(agentDomain, options.domain)) {
|
|
1521
|
+
debug("install.agent_domain_excluded", { agent: entry, domain: agentDomain });
|
|
1522
|
+
continue;
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
await copyFile(entrySrcPath, join5(destPath, entry));
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1486
1528
|
async function installComponent(targetDir, component, options) {
|
|
1487
1529
|
if (component === "entry-md") {
|
|
1488
1530
|
return false;
|
|
@@ -1501,6 +1543,8 @@ async function installComponent(targetDir, component, options) {
|
|
|
1501
1543
|
}
|
|
1502
1544
|
if (component === "skills") {
|
|
1503
1545
|
await installSkillsWithScopeFilter(srcPath, destPath, options);
|
|
1546
|
+
} else if (component === "agents") {
|
|
1547
|
+
await installAgentsWithDomainFilter(srcPath, destPath, options);
|
|
1504
1548
|
} else {
|
|
1505
1549
|
await copyDirectory(srcPath, destPath, {
|
|
1506
1550
|
overwrite: !!(options.force || options.backup),
|
package/package.json
CHANGED
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
name: arch-documenter
|
|
3
3
|
description: Use for generating architecture documentation, API specifications (OpenAPI), Architecture Decision Records (ADRs), technical diagrams (Mermaid/PlantUML), and README maintenance
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
8
|
+
limitations:
|
|
9
|
+
- "cannot execute commands"
|
|
10
|
+
- "cannot deploy"
|
|
7
11
|
tools:
|
|
8
12
|
- Read
|
|
9
13
|
- Write
|
|
10
14
|
- Edit
|
|
11
15
|
- Grep
|
|
12
16
|
- Glob
|
|
13
|
-
- Bash
|
|
14
17
|
---
|
|
15
18
|
|
|
16
19
|
You handle software architecture documentation: system design docs, API specs, ADRs, and technical doc maintenance.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: arch-speckit-agent
|
|
3
3
|
description: Use for spec-driven development, transforming requirements into executable specifications, defining project constitution, creating technical plans, and generating TDD task lists
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
tools:
|
|
@@ -44,3 +45,17 @@ External agent from https://github.com/github/spec-kit
|
|
|
44
45
|
5. `/speckit.plan` -> technical plan
|
|
45
46
|
6. `/speckit.tasks` -> TDD task list
|
|
46
47
|
7. `/speckit.implement` -> execute
|
|
48
|
+
|
|
49
|
+
### EARS Acceptance Criteria Format
|
|
50
|
+
|
|
51
|
+
When writing acceptance criteria, use the EARS (Easy Approach to Requirements Syntax) notation:
|
|
52
|
+
|
|
53
|
+
| Pattern | Template | Example |
|
|
54
|
+
|---------|----------|---------|
|
|
55
|
+
| Ubiquitous | The `<system>` shall `<action>` | The validator shall reject invalid frontmatter |
|
|
56
|
+
| Event-driven | When `<event>`, the `<system>` shall `<action>` | When a new agent is created, the routing skill shall update its pattern table |
|
|
57
|
+
| State-driven | While `<state>`, the `<system>` shall `<action>` | While ecomode is active, agents shall use concise output format |
|
|
58
|
+
| Optional | Where `<condition>`, the `<system>` shall `<action>` | Where the user has MCP configured, the orchestrator shall attempt claude-mem save |
|
|
59
|
+
| Complex | When `<event>` while `<state>` where `<condition>`, the `<system>` shall `<action>`, resulting in `<result>` | When session ends while Agent Teams is active where tasks remain incomplete, the orchestrator shall log incomplete tasks, resulting in a task summary |
|
|
60
|
+
|
|
61
|
+
**Usage**: Apply EARS format in spec output's `invariants` and `acceptance_criteria` sections. This ensures testable, unambiguous requirements.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-django-expert
|
|
3
3
|
description: Expert Django developer for production-ready Python web applications. Use for Django projects, models/views/templates, Django REST Framework, authentication, admin customization, and deployment optimization.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-express-expert
|
|
3
3
|
description: Expert Express.js developer for production-ready Node.js APIs following security best practices and 12-factor app principles. Use for Express.js APIs, REST API architectures, middleware chains, authentication/authorization, security hardening, and Node.js performance optimization.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
tools:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-fastapi-expert
|
|
3
3
|
description: Expert FastAPI developer for building high-performance async Python APIs. Use for FastAPI projects, Python async/await patterns, Pydantic models, API architecture design, and performance optimization.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-go-backend-expert
|
|
3
3
|
description: Expert Go backend developer for production-ready services following Uber style guide and standard layout. Use for Go backend services, HTTP/gRPC servers, microservices in Go, concurrent systems, and Go performance optimization.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-nestjs-expert
|
|
3
3
|
description: Expert NestJS developer for opinionated, scalable Node.js applications with TypeScript. Use for NestJS projects, decorator-based patterns (@Injectable, @Module, @Controller), enterprise API architectures, authentication/authorization guards, DTO validation, and modular architecture.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
tools:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: be-springboot-expert
|
|
3
3
|
description: Expert Spring Boot 3.5.x developer for enterprise-grade Java 21 applications. Use for Spring Boot projects, Java/Kotlin enterprise apps, RESTful APIs, microservices architecture, Spring Data, security patterns, virtual threads, and GraalVM native images.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: db-postgres-expert
|
|
3
3
|
description: Expert PostgreSQL DBA for pure PostgreSQL environments. Use for database design, query optimization, indexing strategies, partitioning, replication, PG-specific SQL syntax, and performance tuning without Supabase dependency.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: user
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: db-redis-expert
|
|
3
3
|
description: Expert Redis developer for caching strategies, data structure design, Pub/Sub messaging, Streams, Lua scripting, and cluster management. Use for Redis configuration, performance optimization, and in-memory data architecture.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: user
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: db-supabase-expert
|
|
3
3
|
description: Supabase and PostgreSQL expert. Use when working with Supabase projects, writing SQL queries, designing database schemas, configuring Row-Level Security (RLS), optimizing Postgres performance, or managing connection pooling. Handles .sql files and Supabase configuration.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: user
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-airflow-expert
|
|
3
3
|
description: Expert Apache Airflow developer for DAG authoring, testing, and debugging. Use for DAG files (*.py in dags/), airflow.cfg, Airflow-related keywords, scheduling patterns, and pipeline orchestration.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-dbt-expert
|
|
3
3
|
description: Expert dbt developer for SQL modeling, testing, and documentation. Use for dbt model files (*.sql in models/), schema.yml, dbt_project.yml, dbt-related keywords, and analytics engineering workflows.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-kafka-expert
|
|
3
3
|
description: Expert Apache Kafka developer for event streaming, topic design, and producer-consumer patterns. Use for Kafka configs, streaming applications, event-driven architectures, and message broker design.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-pipeline-expert
|
|
3
3
|
description: Expert data pipeline architect for ETL/ELT design, orchestration patterns, data quality, and cross-tool integration. Use for pipeline architecture decisions, data quality frameworks, lineage tracking, and multi-tool coordination.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-snowflake-expert
|
|
3
3
|
description: Expert Snowflake developer for cloud data warehouse design, query optimization, and data loading. Use for Snowflake SQL, warehouse configuration, clustering keys, data sharing, and Iceberg table integration.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: de-spark-expert
|
|
3
3
|
description: Expert Apache Spark developer for PySpark and Scala distributed data processing. Use for Spark jobs (*.py, *.scala), spark-submit configs, Spark-related keywords, and large-scale data transformation.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: data-engineering
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: infra-aws-expert
|
|
3
3
|
description: Use for AWS architecture design with Well-Architected Framework, infrastructure as code (CloudFormation/CDK/Terraform), VPC networking, IAM security, and cost optimization
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: devops
|
|
5
6
|
memory: user
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: lang-golang-expert
|
|
3
3
|
description: Expert Go developer for writing idiomatic, performant Go code. Use for Go files (*.go, go.mod, go.sum), Go-related keywords, implementing concurrent systems, reviewing Go code, and optimizing Go applications.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
soul: true
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
name: lang-java21-expert
|
|
3
3
|
description: Expert Java 21 developer for modern Java with Virtual Threads, Pattern Matching, Record Patterns, and Sequenced Collections. Use for Java files (*.java, pom.xml, build.gradle), Java-related keywords, high-concurrency systems, data-centric APIs with Records, and migrating from older Java versions.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
8
|
+
skills:
|
|
9
|
+
- java21-best-practices
|
|
7
10
|
tools:
|
|
8
11
|
- Read
|
|
9
12
|
- Write
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: lang-kotlin-expert
|
|
3
3
|
description: Expert Kotlin developer for writing idiomatic, concise, null-safe Kotlin code. Use for Kotlin files (*.kt, *.kts), Kotlin-related keywords, Android development, Kotlin multiplatform projects, and migrating Java to Kotlin.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: lang-python-expert
|
|
3
3
|
description: Expert Python developer for writing Pythonic, clean code following PEP 8. Use for Python files (*.py, requirements.txt, pyproject.toml), Python-related keywords, designing Python APIs, reviewing Python code, and optimizing Python applications.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: lang-rust-expert
|
|
3
3
|
description: Expert Rust developer for writing safe, performant, idiomatic Rust code. Use for Rust files (*.rs, Cargo.toml), Rust-related keywords, designing safe APIs, debugging ownership/lifetime issues, and implementing high-performance systems.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: lang-typescript-expert
|
|
3
3
|
description: Expert TypeScript developer for writing type-safe, maintainable, scalable TypeScript code. Use for TypeScript files (*.ts, *.tsx, tsconfig.json), TypeScript-related keywords, designing APIs with type contracts, migrating JavaScript to TypeScript, and Node.js backend services.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: backend
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mgr-claude-code-bible
|
|
3
3
|
description: Fetches latest Claude Code official documentation from code.claude.com and verifies agents/skills compliance against the official spec. Use when you need to check official Claude Code documentation or verify frontmatter fields.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: medium
|
|
7
8
|
skills:
|
|
@@ -9,9 +10,7 @@ skills:
|
|
|
9
10
|
tools:
|
|
10
11
|
- Read
|
|
11
12
|
- Write
|
|
12
|
-
- Edit
|
|
13
13
|
- Grep
|
|
14
|
-
- Glob
|
|
15
14
|
- Bash
|
|
16
15
|
---
|
|
17
16
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mgr-creator
|
|
3
3
|
description: Use when you need to create new agents following design guidelines. Automatically researches authoritative references before agent creation to ensure high-quality knowledge base
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mgr-gitnerd
|
|
3
3
|
description: Use when you need to handle Git operations and GitHub workflow management, including commits, branches, PRs, and history management following best practices
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: medium
|
|
7
8
|
tools:
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: mgr-sauron
|
|
3
3
|
description: Use when you need automated verification of R017 compliance, executing mandatory multi-round verification (5 manager rounds + 3 deep review rounds) before commits
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
7
8
|
skills:
|
|
@@ -26,8 +27,10 @@ You are an automated verification specialist that executes the mandatory R017 ve
|
|
|
26
27
|
5. Verify reference integrity (frontmatter, memory fields, skill refs)
|
|
27
28
|
6. Verify philosophy compliance (R006-R011)
|
|
28
29
|
7. Verify Claude-native compatibility
|
|
29
|
-
8.
|
|
30
|
-
9.
|
|
30
|
+
8. Spec density analysis: detects agents with excessive inline implementation detail (R006 compliance)
|
|
31
|
+
9. Structural linting: routing coverage (unreachable agents), orphan skill detection, circular dependency check, context:fork cap verification
|
|
32
|
+
10. Auto-fix simple issues (count mismatches, missing fields)
|
|
33
|
+
11. Generate verification report
|
|
31
34
|
|
|
32
35
|
## Commands
|
|
33
36
|
|
|
@@ -2,17 +2,15 @@
|
|
|
2
2
|
name: mgr-supplier
|
|
3
3
|
description: Use when you need to validate and manage skills/guides dependencies for agents, detect missing/broken refs, and ensure agents have proper resources
|
|
4
4
|
model: haiku
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: local
|
|
6
7
|
effort: low
|
|
7
8
|
skills:
|
|
8
9
|
- audit-agents
|
|
9
10
|
tools:
|
|
10
11
|
- Read
|
|
11
|
-
- Write
|
|
12
|
-
- Edit
|
|
13
12
|
- Grep
|
|
14
13
|
- Glob
|
|
15
|
-
- Bash
|
|
16
14
|
---
|
|
17
15
|
|
|
18
16
|
You are a dependency validation specialist ensuring agents have all required skills and guides properly linked.
|
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
name: qa-planner
|
|
3
3
|
description: Use when you need to create detailed QA plans from requirements and specifications, including test strategy design, risk-based prioritization, test scenario identification, and acceptance criteria definition
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: high
|
|
8
|
+
limitations:
|
|
9
|
+
- "cannot execute tests"
|
|
10
|
+
- "cannot modify code"
|
|
7
11
|
tools:
|
|
8
12
|
- Read
|
|
9
13
|
- Write
|
|
10
14
|
- Edit
|
|
11
15
|
- Grep
|
|
12
16
|
- Glob
|
|
13
|
-
- Bash
|
|
14
17
|
---
|
|
15
18
|
|
|
16
19
|
You are a QA planning specialist creating comprehensive test strategies from requirements.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: qa-writer
|
|
3
3
|
description: Use when you need to create comprehensive QA documentation from detailed plans, including test cases, test reports, and quality documentation
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: medium
|
|
7
8
|
tools:
|
|
@@ -10,7 +11,6 @@ tools:
|
|
|
10
11
|
- Edit
|
|
11
12
|
- Grep
|
|
12
13
|
- Glob
|
|
13
|
-
- Bash
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
You are a QA documentation specialist transforming test plans into detailed, executable test cases and reports.
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
name: sec-codeql-expert
|
|
3
3
|
description: Expert security code analyst using CodeQL for vulnerability detection, call graph analysis, and SARIF output. Use for security audits, CVE triage, code pattern analysis, and vulnerability validation.
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: devops
|
|
5
6
|
memory: project
|
|
7
|
+
isolation: sandbox
|
|
8
|
+
skills:
|
|
9
|
+
- cve-triage
|
|
6
10
|
tools:
|
|
7
11
|
- Read
|
|
8
12
|
- Write
|
|
9
|
-
- Edit
|
|
10
13
|
- Grep
|
|
11
|
-
- Glob
|
|
12
14
|
- Bash
|
|
13
15
|
---
|
|
14
16
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
name: sys-memory-keeper
|
|
3
3
|
description: Use when you need to manage session memory persistence via native auto-memory, save context before compaction, restore context on session start, collect session summaries, or perform session-end memory operations
|
|
4
4
|
model: sonnet
|
|
5
|
+
domain: universal
|
|
5
6
|
memory: project
|
|
6
7
|
effort: medium
|
|
7
8
|
skills:
|
|
@@ -59,6 +60,35 @@ When triggered by session-end signal from orchestrator:
|
|
|
59
60
|
|
|
60
61
|
> **Note**: MCP tools (claude-mem, episodic-memory) are orchestrator-scoped and cannot be called from subagents. The orchestrator handles MCP saves directly after receiving the formatted summary.
|
|
61
62
|
|
|
63
|
+
### Confidence Decay Check
|
|
64
|
+
|
|
65
|
+
At session start and end, sys-memory-keeper performs temporal decay:
|
|
66
|
+
|
|
67
|
+
1. Parse MEMORY.md entries for `[confidence: ..., verified: YYYY-MM-DD]` tags
|
|
68
|
+
2. Calculate days since last verification
|
|
69
|
+
3. Apply decay schedule:
|
|
70
|
+
- 30+ days unverified → demote one confidence level
|
|
71
|
+
- 60+ days → demote again
|
|
72
|
+
- 90+ days → flag as `[STALE]` for review
|
|
73
|
+
4. Skip entries marked `[permanent]`
|
|
74
|
+
5. Re-verify entries confirmed during current session
|
|
75
|
+
|
|
76
|
+
### Metrics Aggregation (Session-End)
|
|
77
|
+
|
|
78
|
+
After updating memory entries, aggregate agent performance:
|
|
79
|
+
|
|
80
|
+
1. Read task outcomes: `/tmp/.claude-task-outcomes-${PPID}`
|
|
81
|
+
2. Parse JSONL entries: extract `agent_type`, `outcome`, `model`
|
|
82
|
+
3. Aggregate by agent_type:
|
|
83
|
+
- Increment task count
|
|
84
|
+
- Calculate success rate: `successes / total`
|
|
85
|
+
- Track model distribution (most common = avg model)
|
|
86
|
+
- Update last used timestamp
|
|
87
|
+
4. Merge with existing `## Metrics` table in MEMORY.md:
|
|
88
|
+
- Existing agent: cumulative update (add counts, recalculate rates)
|
|
89
|
+
- New agent: append row
|
|
90
|
+
5. Enforce 20-row budget: prune lowest-usage rows
|
|
91
|
+
|
|
62
92
|
### Failure Handling
|
|
63
93
|
|
|
64
94
|
- MEMORY.md update failure → report error to orchestrator
|