oh-my-customcode 1.1.36 → 1.1.38

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.
Files changed (64) hide show
  1. package/dist/cli/index.js +1 -1
  2. package/dist/index.js +1 -1
  3. package/package.json +1 -1
  4. package/templates/.claude/agents/arch-documenter.md +2 -2
  5. package/templates/.claude/agents/arch-speckit-agent.md +1 -1
  6. package/templates/.claude/agents/be-django-expert.md +1 -1
  7. package/templates/.claude/agents/be-express-expert.md +1 -1
  8. package/templates/.claude/agents/be-fastapi-expert.md +1 -1
  9. package/templates/.claude/agents/be-go-backend-expert.md +1 -1
  10. package/templates/.claude/agents/be-nestjs-expert.md +1 -1
  11. package/templates/.claude/agents/be-springboot-expert.md +1 -1
  12. package/templates/.claude/agents/db-alembic-expert.md +1 -5
  13. package/templates/.claude/agents/db-postgres-expert.md +1 -1
  14. package/templates/.claude/agents/db-redis-expert.md +2 -2
  15. package/templates/.claude/agents/db-supabase-expert.md +1 -1
  16. package/templates/.claude/agents/de-airflow-expert.md +1 -1
  17. package/templates/.claude/agents/de-dbt-expert.md +2 -2
  18. package/templates/.claude/agents/de-kafka-expert.md +1 -1
  19. package/templates/.claude/agents/de-pipeline-expert.md +1 -1
  20. package/templates/.claude/agents/de-snowflake-expert.md +2 -2
  21. package/templates/.claude/agents/de-spark-expert.md +1 -1
  22. package/templates/.claude/agents/fe-design-expert.md +1 -1
  23. package/templates/.claude/agents/fe-flutter-agent.md +1 -1
  24. package/templates/.claude/agents/fe-svelte-agent.md +1 -1
  25. package/templates/.claude/agents/fe-vercel-agent.md +1 -1
  26. package/templates/.claude/agents/fe-vuejs-agent.md +1 -1
  27. package/templates/.claude/agents/infra-aws-expert.md +1 -1
  28. package/templates/.claude/agents/infra-docker-expert.md +1 -1
  29. package/templates/.claude/agents/lang-golang-expert.md +1 -1
  30. package/templates/.claude/agents/lang-java-expert.md +2 -2
  31. package/templates/.claude/agents/lang-kotlin-expert.md +1 -1
  32. package/templates/.claude/agents/lang-python-expert.md +1 -1
  33. package/templates/.claude/agents/lang-rust-expert.md +1 -1
  34. package/templates/.claude/agents/lang-typescript-expert.md +1 -1
  35. package/templates/.claude/agents/mgr-claude-code-bible.md +1 -1
  36. package/templates/.claude/agents/mgr-creator.md +2 -2
  37. package/templates/.claude/agents/mgr-gitnerd.md +1 -1
  38. package/templates/.claude/agents/mgr-sauron.md +2 -2
  39. package/templates/.claude/agents/mgr-updater.md +1 -1
  40. package/templates/.claude/agents/qa-engineer.md +1 -1
  41. package/templates/.claude/agents/qa-planner.md +1 -1
  42. package/templates/.claude/agents/qa-writer.md +1 -1
  43. package/templates/.claude/agents/sec-codeql-expert.md +1 -1
  44. package/templates/.claude/agents/slack-cli-expert.md +1 -1
  45. package/templates/.claude/agents/sys-memory-keeper.md +1 -1
  46. package/templates/.claude/agents/sys-naggy.md +1 -1
  47. package/templates/.claude/agents/tool-bun-expert.md +1 -1
  48. package/templates/.claude/agents/tool-npm-expert.md +1 -1
  49. package/templates/.claude/agents/tool-optimizer.md +1 -1
  50. package/templates/.claude/agents/tracker-checkpoint.md +1 -1
  51. package/templates/.claude/agents/wiki-curator.md +2 -1
  52. package/templates/.claude/hooks/scripts/model-escalation-advisor.sh +7 -2
  53. package/templates/.claude/rules/MAY-optimization.md +1 -1
  54. package/templates/.claude/rules/MUST-agent-design.md +45 -19
  55. package/templates/guides/agent-eval/README.md +6 -1
  56. package/templates/guides/claude-code/14-token-efficiency.md +1 -1
  57. package/templates/guides/claude-code/15-version-compatibility.md +2 -2
  58. package/templates/guides/deep-plan/phases.md +1 -1
  59. package/templates/guides/external-tools/ecc-absorption-decisions.md +9 -2
  60. package/templates/guides/harness-engineering/README.md +1 -1
  61. package/templates/guides/multi-model-routing/README.md +58 -33
  62. package/templates/guides/multi-provider-exec/README.md +1 -1
  63. package/templates/manifest.json +1 -1
  64. package/templates/workflows/auto-dev.yaml +22 -8
package/dist/cli/index.js CHANGED
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  workspaces: [
242
242
  "packages/*"
243
243
  ],
244
- version: "1.1.36",
244
+ version: "1.1.38",
245
245
  description: "Batteries-included agent harness for Claude Code",
246
246
  type: "module",
247
247
  bin: {
package/dist/index.js CHANGED
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "1.1.36",
2034
+ version: "1.1.38",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.36",
6
+ "version": "1.1.38",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -1,10 +1,10 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
- effort: high
7
+ effort: medium
8
8
  limitations:
9
9
  - "cannot execute commands"
10
10
  - "cannot deploy"
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: be-springboot-expert
3
3
  description: Expert Spring Boot 4.0 developer for enterprise-grade Java 25 LTS 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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: db-alembic-expert
3
3
  description: Alembic migration specialist for generating, reviewing, fixing, and advising on SQLAlchemy database migrations
4
- model: sonnet
4
+ model: claude-opus-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -15,10 +15,6 @@ tools:
15
15
  skills:
16
16
  - alembic-best-practices
17
17
  - postgres-best-practices
18
- escalation:
19
- enabled: true
20
- path: sonnet → opus
21
- threshold: 2
22
18
  limitations:
23
19
  - "cannot apply migrations directly to production databases"
24
20
  - "cannot resolve application-level data backfill logic without domain context"
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: user
7
7
  effort: high
@@ -1,10 +1,10 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: user
7
- effort: high
7
+ effort: medium
8
8
  skills:
9
9
  - redis-best-practices
10
10
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: user
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: data-engineering
6
6
  memory: local
7
7
  effort: high
@@ -1,10 +1,10 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: data-engineering
6
6
  memory: local
7
- effort: high
7
+ effort: medium
8
8
  skills:
9
9
  - dbt-best-practices
10
10
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: data-engineering
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-opus-5
5
5
  domain: data-engineering
6
6
  memory: local
7
7
  effort: high
@@ -1,10 +1,10 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: data-engineering
6
6
  memory: local
7
- effort: high
7
+ effort: medium
8
8
  skills:
9
9
  - snowflake-best-practices
10
10
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: data-engineering
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fe-design-expert
3
3
  description: Use for design system review, typography audit, color palette evaluation, motion design, and AI-generated design quality assessment
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: frontend
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fe-flutter-agent
3
3
  description: Use for Flutter/Dart cross-platform app development, widget composition, state management (Riverpod/BLoC), and performance optimization
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: frontend
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fe-svelte-agent
3
3
  description: Use for Svelte compiler-based reactivity, reactive statements ($:), Svelte stores, and SvelteKit full-stack development with SSR
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: frontend
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fe-vercel-agent
3
3
  description: Use for React/Next.js optimization, web design review (accessibility, UX), Vercel deployment automation, and bundle size optimization
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: frontend
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: fe-vuejs-agent
3
3
  description: Use for Vue 3 Composition API development, single-file components, Pinia state management, and Vue Router navigation
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: frontend
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-opus-5
5
5
  domain: devops
6
6
  memory: user
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: infra-docker-expert
3
3
  description: Use for creating optimized Dockerfiles, multi-stage builds, container security hardening, Docker Compose configurations, and image size optimization
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: devops
6
6
  memory: user
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: lang-java-expert
3
3
  description: Expert Java 25 LTS 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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
- effort: high
7
+ effort: medium
8
8
  skills:
9
9
  - java-best-practices
10
10
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: backend
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: high
@@ -50,7 +50,7 @@ When invoked as routing fallback (not explicit `/create-agent`):
50
50
  3. Auto-connect: scan `guides/` for relevant reference docs
51
51
  4. Create minimal viable agent with:
52
52
  - Detected skills and relevant guides
53
- - `sonnet` model (default)
53
+ - `claude-sonnet-5` model (default; Tier 2 full model ID — CC does not resolve invented version-suffixed aliases, use the full ID per R006)
54
54
  - `project` memory scope
55
55
  5. Agent is persisted (not ephemeral) for future reuse
56
56
 
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,10 +1,10 @@
1
1
  ---
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, with rounds 3-4 conditionally skipped when rounds 1-2 return 0 issues) before commits
4
- model: sonnet
4
+ model: claude-opus-5
5
5
  domain: universal
6
6
  memory: local
7
- effort: high
7
+ effort: medium
8
8
  skills:
9
9
  - sauron-watch
10
10
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: mgr-updater
3
3
  description: Use when you need to update external agents, skills, and guides from their upstream sources, checking versions and applying updates
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: qa-engineer
3
3
  description: Use when you need to execute tests based on detailed plans and documentation, perform manual and automated testing, report defects, and validate fixes
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: high
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-opus-5
5
5
  effort: high
6
6
  domain: devops
7
7
  memory: local
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: slack-cli-expert
3
3
  description: Expert Slack CLI developer for Slack app management, deployment, triggers, and workspace automation
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  effort: medium
7
7
  tools:
@@ -1,7 +1,7 @@
1
1
  ---
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
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: sys-naggy
3
3
  description: Use when you need TODO list management and task tracking with proactive reminders, helping maintain project momentum by monitoring stale tasks and deadlines
4
- model: sonnet
4
+ model: haiku
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: low
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: tool-bun-expert
3
3
  description: Use for Bun runtime development, bunfig.toml configuration, Bun test runner, fast bundling, and Node.js to Bun migrations
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: tool-npm-expert
3
3
  description: Use for npm package publishing workflows, semantic versioning (major/minor/patch), package.json optimization, and dependency audits
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: tool-optimizer
3
3
  description: Use for bundle size analysis, tree-shaking verification, performance profiling, dead code detection, and build optimization recommendations
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  domain: universal
6
6
  memory: local
7
7
  effort: medium
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: tracker-checkpoint
3
3
  description: Pipeline execution state tracker with checkpoint persistence. Reads/writes /tmp/.claude-pipeline-*-{PPID}.json state files and validates state transitions. Used by dag-orchestration for resume-after-failure and pipeline-guards for quality gate state.
4
- model: sonnet
4
+ model: haiku
5
5
  effort: medium
6
6
  tools: [Read, Write, Edit, Bash, Glob, Grep]
7
7
  memory: local
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: wiki-curator
3
3
  description: Dedicated wiki page CRUD agent — creates, updates, and maintains wiki/ markdown pages for the codebase knowledge base
4
- model: sonnet
4
+ model: claude-sonnet-5
5
5
  tools:
6
6
  - Read
7
7
  - Write
@@ -11,6 +11,7 @@ tools:
11
11
  - Bash
12
12
  domain: universal
13
13
  memory: local
14
+ effort: medium
14
15
  permissionMode: bypassPermissions
15
16
  ---
16
17
 
@@ -39,16 +39,20 @@ fi
39
39
  consecutive_failures=$(tail -${CONSECUTIVE_THRESHOLD} "$OUTCOME_FILE" 2>/dev/null | grep -c '"outcome":"failure"' 2>/dev/null || echo "0")
40
40
 
41
41
  # Escalation path
42
+ # NOTE: Agent tool `model` param is an enum of exactly 4 values: sonnet | opus | haiku | fable.
43
+ # Full model IDs and virtual/versioned aliases NEVER match here — they never reach this
44
+ # script via tool_input.model, so using them as case labels silently no-ops the entire
45
+ # advisory (no error, just dead code). Keep case labels as bare enum aliases only.
42
46
  next_model=""
43
47
  cost_multiplier=""
44
48
  case "$current_model" in
45
49
  haiku)
46
50
  next_model="sonnet"
47
- cost_multiplier="~3-5x"
51
+ cost_multiplier="~3x"
48
52
  ;;
49
53
  sonnet)
50
54
  next_model="opus"
51
- cost_multiplier="~5-10x"
55
+ cost_multiplier="~1.5-2x"
52
56
  ;;
53
57
  *)
54
58
  next_model=""
@@ -86,6 +90,7 @@ if [ "$current_model" != "haiku" ] && [ "$current_model" != "inherit" ] && [ "$c
86
90
 
87
91
  if [ "$recent_successes" -ge "$COOLDOWN" ]; then
88
92
  lower_model=""
93
+ # Same enum constraint as the escalation case above: bare aliases only.
89
94
  case "$current_model" in
90
95
  opus) lower_model="sonnet" ;;
91
96
  sonnet) lower_model="haiku" ;;
@@ -24,7 +24,7 @@
24
24
 
25
25
  > **`ls | tail` 시계열 오판 (#1417)**: `ls`는 파일명을 알파벳/사전순으로 정렬하므로 `ls <dir> | tail`로 "가장 최근 파일"을 판단하면 오판한다(파일명 순서 ≠ mtime 순서). 시계열 최신 판단은 `ls -t`, `find <dir> -newermt <ts>`, 또는 stat/timestamp 기반 정렬을 명시한다. `tail`만으로 "최신" 단정 금지. Origin: #1417 (외부 통화녹음 진단 세션 — `ls TPhoneCallRecords | tail -6`이 알파벳순이라 최신을 6/18로 오판 → `find -newermt`로 6/19~20 파일 발견해 정정).
26
26
 
27
- > **파이프 뒤 `$?`는 마지막 명령의 exit code (#1492)**: `script.sh | tail -N; echo $?`처럼 검증 스크립트를 파이프에 연결한 뒤 `$?`로 읽으면 파이프라인 **마지막 명령**(`tail`)의 종료코드를 얻는다 — 스크립트 자체가 실패(exit 1)해도 `tail`이 성공(exit 0)하면 `$?=0`으로 "통과"를 오판한다. 검증 스크립트는 파이프 없이 단독 실행하거나 `${PIPESTATUS[0]}`으로 원본 exit code를 읽는다. **주의**: `${PIPESTATUS[0]}` 자체는 R023 Workflow JS 템플릿 리터럴 이스케이프 이슈(#1438, `${...}`를 JS가 평가해 ReferenceError)와 별개 문제 — 본 항목은 셸에서 파이프 뒤 exit code를 읽는 각도다. Origin: #1492 (Session 132 회고 찐빠 #3). Cross-ref: R020 ("command executed" ≠ "succeeded").
27
+ > **파이프 뒤 `$?`는 마지막 명령의 exit code (#1492, zsh 변형 #1540)**: `script.sh | tail -N; echo $?`처럼 검증 스크립트를 파이프에 연결한 뒤 `$?`로 읽으면 파이프라인 **마지막 명령**(`tail`)의 종료코드를 얻는다 — 스크립트 자체가 실패(exit 1)해도 `tail`이 성공(exit 0)하면 `$?=0`으로 "통과"를 오판한다. **1차 지침**: 검증 스크립트는 파이프 없이 단독 실행한다. 부득이 파이프를 써야 한다면, 원본 exit code를 읽는 문법은 **셸마다 다르다** — bash는 `${PIPESTATUS[0]}`(대문자, 0-indexed), zsh는 `$pipestatus[1]`(소문자, 1-indexed)이며 서로 호환되지 않는다. **이 저장소의 기본 셸이자 Claude Code Bash 도구 실행 셸은 zsh**이므로, bash 문법 `${PIPESTATUS[0]}`을 그대로 쓰면 zsh에서는 미정의 변수로 취급되어 **오류 없이 빈 값**을 반환한다 — 조건문에서 빈 값은 거짓으로 평가돼 "검증 통과"처럼 보이는 조용한 오판을 재생산한다. 셸을 사전 확인(`echo $SHELL` / `$BASH_VERSION` 존재 여부)한 뒤 해당 셸의 문법을 쓴다. **주의**: `${PIPESTATUS[0]}` 자체는 R023 Workflow JS 템플릿 리터럴 이스케이프 이슈(#1438, `${...}`를 JS가 평가해 ReferenceError)와 별개 문제 — 본 항목은 셸에서 파이프 뒤 exit code를 읽는 각도다. Origin: #1492 (Session 132 회고 찐빠 #3); zsh 변형은 #1540 (Session 138 회고 찐빠 #6) — `gh run watch ... | tail` 뒤 `${PIPESTATUS[0]}`가 zsh에서 빈 값을 반환해 CI 결론을 재실측해야 했음. Cross-ref: R020 ("command executed" ≠ "succeeded").
28
28
 
29
29
  > **계수/매칭 방법 확인 (#1521)**: 카운트를 대조하기 전에 **비교 대상이 무엇을 어떻게 세는지** 먼저 확인한다 — 같은 지표라도 계수 방법이 다르면 값이 달라진다. 대표 함정 3종: (a) glob(`ls *.md`, 최상위만) vs 재귀 `find`(하위 디렉토리 포함), (b) 부분 문자열 grep(`grep "sdd"`가 `sdd-dev`까지 매칭), (c) 확장자 필터(`--include='*.md'`가 `CLAUDE.md.en`을 미매칭). 검증 스크립트와 대조할 때는 **스크립트의 실제 계수 로직을 읽고** 같은 방법으로 센다. 위 `ls | tail` 시계열 오판(#1417)과 동류로, 도구의 기본 동작을 확인하지 않은 채 결과를 해석해 오탐에 이르는 패턴이다. Origin: #1521 (2026-07-20 세션에서 3회 반복; 두 서브에이전트가 독립적으로 동일 오탐에 도달).
30
30
 
@@ -11,42 +11,68 @@ Location: `.claude/agents/{name}.md` (single file, kebab-case)
11
11
  ```yaml
12
12
  name: agent-name # Unique identifier (kebab-case)
13
13
  description: Brief desc # One-line summary
14
- model: sonnet # sonnet | opus | haiku | opusplan (or full ID: claude-sonnet-4-6, claude-opus-4-6[1m])
14
+ model: sonnet # CC-native alias (Tier 1) or full model ID (Tier 2) — see "Model Specification — 3 Tiers" below
15
15
  tools: [Read, Write, ...] # Allowed tools
16
16
  ```
17
17
 
18
18
  > **v2.1.208+**: The Agent tool no longer launches with no tools when a subagent's `tools:` list resolves to nothing — it now returns a clear error naming the unrecognized entries, catching frontmatter `tools:` typos that previously failed silently.
19
19
 
20
- ### Model Aliases
20
+ ### Model Specification — 3 Tiers
21
21
 
22
- | Alias | Full ID | Use Case |
23
- |-------|---------|----------|
24
- | `haiku` | claude-haiku-4-5 | Fast, cheap tasks (search, simple edits) |
25
- | `sonnet` | claude-sonnet-4-6 | General tasks, code generation (default) |
26
- | `sonnet5` | claude-sonnet-5 | CC default (v2.1.197+); native 1M context |
27
- | `opus` | claude-opus-4-6 | Complex reasoning, architecture |
28
- | `opusplan` | claude-opus-4-6 + plan mode | Architecture planning with approval gates |
29
- | `opus48` | claude-opus-4-8 | Previous-generation Opus; supports xhigh effort |
30
- | `opus5` | claude-opus-5 | Latest Opus (GA); now CC's default Opus model; native 1M context, fast mode at $10/$50 per Mtok |
31
- | `fable` | claude-fable-5 | Mythos-class; tier above Opus, highest GA capability (access added in CC v2.1.170) |
22
+ Model values resolve differently depending on WHERE they are written. Mixing tiers causes a value that is valid in one place to silently fail spawn in another (measured this session: `sonnet5`/`opus5`/`opus48` are invented names this project had documented as if they were CC-recognized — CC v2.1.220 does not resolve them, and spawn fails immediately).
23
+
24
+ #### Tier 1 — CC-native aliases (valid in BOTH frontmatter `model:` AND the Agent tool `model` parameter)
25
+
26
+ | Alias | Use Case |
27
+ |-------|----------|
28
+ | `haiku` | Fast, cheap tasks (search, simple edits) |
29
+ | `sonnet` | General tasks, code generation (default) |
30
+ | `opus` | Complex reasoning, architecture |
31
+ | `opusplan` | Opus + plan mode; architecture planning with approval gates |
32
+ | `inherit` | Inherit the parent session's model |
33
+
34
+ **CC resolves these, not this project.** This project cannot "pin" an alias to a specific version — measured: a frontmatter `model: sonnet` agent executed as `claude-sonnet-5` (CC v2.1.197+ default), not a project-fixed `claude-sonnet-4-6`. Treat any "currently resolves to X" statement as a snapshot that changes when CC's own default changes.
35
+
36
+ #### Tier 2 — Full model IDs (frontmatter `model:` ONLY — recommended for stability)
37
+
38
+ | Full ID | Use Case |
39
+ |---------|----------|
40
+ | `claude-haiku-4-5` | Fast, cheap tasks |
41
+ | `claude-sonnet-5` | Native 1M context; current CC default Sonnet (v2.1.197+) |
42
+ | `claude-opus-4-6` | Opus, previous generation |
43
+ | `claude-opus-4-8` | Opus, previous generation; supports xhigh effort |
44
+ | `claude-opus-5` | Latest Opus (GA); native 1M context, fast mode at $10/$50 per Mtok |
45
+ | `claude-fable-5` | Mythos-class; tier above Opus (access via CC v2.1.170+) |
46
+
47
+ Full IDs are valid ONLY in agent frontmatter — the Agent tool's `model:` spawn parameter does NOT accept them (see Tier 3). Writing the full ID directly (not a project-invented shorthand) pins the agent regardless of future CC default changes. This is the recommended way to opt into Sonnet 5 / Opus 5 / Fable 5 explicitly rather than riding CC's Tier-1 default resolution.
32
48
 
33
49
  Extended context suffix: `[1m]` (e.g., `claude-opus-4-6[1m]`) — enables 1M token context window.
34
50
 
35
- > **v2.1.219+**: Claude Opus 5 (`claude-opus-5`) added and is now CC's default Opus model — native 1M context, fast mode at $10/$50 per Mtok. Use via `model: opus5`. Base `opus` alias remains pinned to `claude-opus-4-6` for stability (existing `model: opus` agents unaffected), matching the prior opus47→opus48 pinning pattern. Relative standing vs Fable 5 is not yet confirmed officially — do not assert an ordering.
51
+ #### Tier 3 — Agent tool `model` parameter (spawn-time override, enum of exactly 4 values)
52
+
53
+ ```
54
+ Agent(subagent_type: "...", model: "opus", mode: "bypassPermissions", prompt: "...")
55
+ ```
56
+
57
+ The Agent tool's `model` parameter accepts ONLY `sonnet` | `opus` | `haiku` | `fable`. It does NOT accept full model IDs (Tier 2) and does NOT accept `sonnet5`/`opus5`/`opus48` (never valid anywhere — retire these names). Note `fable` is valid HERE (Tier 3) but is NOT a Tier-1 frontmatter alias — Fable 5 in frontmatter requires the Tier-2 full ID `claude-fable-5`.
58
+
59
+ Skill/rule text instructing "spawn with `model: opus`" refers to this tier — always the bare 4-value alias, never a full ID.
60
+
61
+ > **v2.1.219+**: Claude Opus 5 (`claude-opus-5`) added. Opt in via the Tier-2 full ID in frontmatter; Tier-1 `opus`/`sonnet` alias resolution is CC-controlled (see Tier 1 above — this project does not pin it). Relative standing vs Fable 5 is not yet confirmed officially — do not assert an ordering.
36
62
 
37
- > **Claude Fable 5 (access via CC v2.1.170+)**: Mythos-class model, GA on the Claude API and positioned as a tier above Opus — its capabilities exceed any previously GA model. CC v2.1.170 is the client version that adds access (the model's GA is an API/platform property, not a CC-release milestone). Available via `model: fable` / `claude-fable-5`. Reserve for the most complex reasoning where its capability premium is warranted; `sonnet` remains the default for general tasks and `opus` for architecture (cost/latency awareness, R005). CC v2.1.170 also fixes session transcripts not saving (and not appearing in `--resume`) when launched from a VS Code integrated terminal or any shell inheriting Claude Code env vars — relevant to transcript-dependent skills (`homework`, `episodic-memory`). Closes #1352.
63
+ > **Claude Fable 5 (access via CC v2.1.170+)**: Mythos-class model, GA on the Claude API and positioned as a tier above Opus — its capabilities exceed any previously GA model. CC v2.1.170 is the client version that adds access (the model's GA is an API/platform property, not a CC-release milestone). Available via frontmatter full ID `claude-fable-5` (Tier 2) or Agent tool `model: fable` (Tier 3) — NOT via a Tier-1 frontmatter alias. Reserve for the most complex reasoning where its capability premium is warranted; `sonnet` remains the default for general tasks and `opus` for architecture (cost/latency awareness, R005). CC v2.1.170 also fixes session transcripts not saving (and not appearing in `--resume`) when launched from a VS Code integrated terminal or any shell inheriting Claude Code env vars — relevant to transcript-dependent skills (`homework`, `episodic-memory`). Closes #1352.
38
64
 
39
65
  <!-- ARCHIVED CC version notes (historical):
40
66
  > **v2.1.173+**: Fable 5 model IDs carrying a `[1m]` suffix are now auto-normalized (the suffix is stripped) because Fable 5 includes 1M context by default. Use `claude-fable-5` / `model: fable` WITHOUT a `[1m]` suffix — appending it is redundant and normalized away. (The `[1m]` suffix remains meaningful for Opus/Sonnet IDs.)
41
67
 
42
- > **v2.1.197+**: Claude Sonnet 5가 Claude Code의 **기본 모델**로 도입되었습니다 — 네이티브 1M-token 컨텍스트, 프로모션 가격 $2/$10 per Mtok(2026-08-31까지). `model: sonnet5` / `claude-sonnet-5`로 사용. oh-my-customcode의 base `sonnet` alias는 안정성을 위해 `claude-sonnet-4-6`에 고정 유지(기존 `sonnet` 지정 에이전트 불변); Sonnet 5는 `sonnet5`로 명시 opt-in. Sonnet 5가 CC 신규 기본값이므로 명시 모델 없는 세션은 이제 Sonnet 5에서 동작합니다.
68
+ > **v2.1.197+**: Claude Sonnet 5가 Claude Code의 **기본 모델**로 도입되었습니다 — 네이티브 1M-token 컨텍스트, 프로모션 가격 $2/$10 per Mtok(2026-08-31까지). frontmatter에서 명시 opt-in하려면 Tier-2 full ID `claude-sonnet-5`를 사용합니다(`sonnet5`는 어느 계층에서도 유효한 값이 아님 — 위 3-Tier 구분 참조). **정정(실측)**: 이 조항이 이전에 "oh-my-customcode의 base `sonnet` alias는 안정성을 위해 `claude-sonnet-4-6`에 고정 유지"라고 서술했으나 사실이 아니다 — `sonnet` alias 해석 주체는 CC이며 프로젝트가 pin할 수 없다(Tier 1 참조); frontmatter `model: sonnet` 에이전트가 실측상 `claude-sonnet-5`로 실행되었다. Sonnet 5가 CC 신규 기본값이므로 명시 모델 없는 세션은 이제 Sonnet 5에서 동작합니다.
43
69
 
44
70
  > **v2.1.201+**: Claude Sonnet 5 세션이 harness reminder를 mid-conversation system role로 주입하지 않도록 변경되었습니다 — Sonnet 5 실행 시 하니스 리마인더(규칙 재주입 등) 전달 방식이 조정되었으며, PostCompact 규칙 재주입(R021)·세션 연속성 동작 자체에는 영향이 없습니다. Sonnet 5가 CC 기본 모델(v2.1.197+)이므로 명시 모델 없는 세션에 적용됩니다.
45
71
  -->
46
72
 
47
73
  > **Fable 5 Effort 전략**: Fable 5는 **high effort가 기본값**이며, `xhigh`는 capability-sensitive 작업(최고난도 아키텍처/추론)에 한정해야 합니다. Fable 5의 `low`/`medium` effort조차 이전 세대 모델의 `xhigh`를 상회하는 품질을 보이므로, Fable 5를 사용하는 실행 에이전트는 `effort` 필드를 신중히 명시하고 불필요한 `xhigh` 남용을 지양합니다(R005 비용/지연 인식과 정합).
48
74
 
49
- > **Mythos 5 (`claude-mythos-5`)**: Project Glasswing 한정 공급 모델로, **GA가 아닙니다** — Fable 5(GA, 위 Model Aliases 표의 `fable`)와 구분해야 합니다. 특성: adaptive-thinking 전용 아키텍처 + 안전 분류기가 개입 시 `stop_reason: "refusal"`로 fallback하는 체계를 가집니다. oh-my-customcode 에이전트 frontmatter에는 아직 alias를 등록하지 않습니다(비-GA, 공급 제한).
75
+ > **Mythos 5 (`claude-mythos-5`)**: Project Glasswing 한정 공급 모델로, **GA가 아닙니다** — Fable 5(GA, 위 "Model Specification — 3 Tiers"의 `claude-fable-5`/`fable`)와 구분해야 합니다. 특성: adaptive-thinking 전용 아키텍처 + 안전 분류기가 개입 시 `stop_reason: "refusal"`로 fallback하는 체계를 가집니다. oh-my-customcode 에이전트 frontmatter에는 아직 alias를 등록하지 않습니다(비-GA, 공급 제한).
50
76
 
51
77
  > **프롬프팅 패턴 상호참조**: Fable 5/Mythos 5 대상 프롬프팅 패턴(effort 조합, adaptive-thinking 활용, refusal fallback 대응)의 상세 가이드는 `guides/claude-code/16-fable5-prompting.md`를 참조하세요.
52
78
 
@@ -67,7 +93,7 @@ This is a settings-level resilience mechanism, distinct from the per-agent `mode
67
93
  -->
68
94
 
69
95
  <!-- ARCHIVED CC version notes (historical):
70
- > **v2.1.183+**: CC now warns (stderr, in `-p` print mode) when the requested model is deprecated or auto-updated to a newer model — and this warning now ALSO covers models set in agent frontmatter (`model:`). Relevant to the Model Aliases table above: a stale/deprecated `model:` value in agent frontmatter now surfaces a deprecation warning instead of silently resolving. Separately, v2.1.183 fixes `thinking.disabled.display: Extra inputs are not permitted` 400 errors on subagent spawns and session-title generation — extends the v2.1.166 toggle above; subagent spawns with thinking disabled no longer 400.
96
+ > **v2.1.183+**: CC now warns (stderr, in `-p` print mode) when the requested model is deprecated or auto-updated to a newer model — and this warning now ALSO covers models set in agent frontmatter (`model:`). Relevant to "Model Specification — 3 Tiers" above: a stale/deprecated `model:` value in agent frontmatter now surfaces a deprecation warning instead of silently resolving. Separately, v2.1.183 fixes `thinking.disabled.display: Extra inputs are not permitted` 400 errors on subagent spawns and session-title generation — extends the v2.1.166 toggle above; subagent spawns with thinking disabled no longer 400.
71
97
 
72
98
  > **v2.1.187+**: Org-configured model restrictions now apply to the model picker, `--model`, `/model`, and `ANTHROPIC_MODEL` (a restricted model shows "restricted by your organization's settings"). Extends the v2.1.175 `enforceAvailableModels` scope to per-agent `model:` override entry points — a managed model allowlist now also constrains the picker/env paths. Also fixed `--json-schema` / workflow `agent({schema})` structured output: the model can no longer re-call `StructuredOutput` indefinitely after a successful call, and follow-up turns reliably return structured output — relevant to schema-constrained subagent spawns.
73
99
 
@@ -110,7 +136,7 @@ source: # For external agents
110
136
  version: 1.0.0
111
137
  escalation: # Model escalation policy (optional)
112
138
  enabled: true # Enable auto-escalation advisory
113
- path: haiku → sonnet → opus # Escalation sequence
139
+ path: haiku → sonnet → opus # Escalation sequence (Tier-3 Agent-tool aliases only)
114
140
  threshold: 2 # Failures before advisory
115
141
  soul: true # Enable SOUL.md identity injection
116
142
  isolation: worktree | sandbox # worktree = git worktree, sandbox = restricted bash
@@ -297,7 +323,7 @@ When `escalation.enabled: true`, the model-escalation hooks will track outcomes
297
323
  | Field | Default | Description |
298
324
  |-------|---------|-------------|
299
325
  | `enabled` | false | Enable escalation tracking for this agent |
300
- | `path` | haiku → sonnet → opus | Model upgrade sequence |
326
+ | `path` | haiku → sonnet → opus | Model upgrade sequence (Tier-3 Agent-tool aliases only) |
301
327
  | `threshold` | 2 | Failure count before escalation advisory |
302
328
  -->
303
329
 
@@ -824,5 +824,10 @@ harness-eval이 task를 실행하면 agent-eval-framework가 4-metric을 측정
824
824
  | 가이드 | 경로 | 관련성 |
825
825
  |--------|------|--------|
826
826
  | harness-engineering | `guides/harness-engineering/` | 평가 하네스 인프라 설계 |
827
- | monitoring-setup | `guides/monitoring-setup/` | OTEL 통합 (향후 tracing 보강) |
828
827
  | multi-agent-debate-patterns | `guides/multi-agent-debate-patterns/` | 다중 에이전트 평가 패턴 |
828
+
829
+ ### 관련 스킬
830
+
831
+ | 스킬 | 경로 | 관련성 |
832
+ |------|------|--------|
833
+ | monitoring-setup | `.claude/skills/monitoring-setup/` | OTEL 통합 (향후 tracing 보강) |
@@ -224,7 +224,7 @@ External plugin (JuliusBrussee/caveman, 41.6k stars, MIT) that rewrites Claude r
224
224
  - `.claude/rules/SHOULD-ecomode.md` — Layer 2 R013 specification
225
225
  - `.claude/skills/token-efficiency-audit/SKILL.md` — Layer 3 HOW: audit and apply
226
226
  - `.claude/skills/monitoring-setup/SKILL.md` — Measure effectiveness via OTel metrics
227
- - `.claude/skills/update-config/` — Generic settings.json manipulation (broader scope)
227
+ - CC bundled `update-config` skill — Generic settings.json manipulation (broader scope; not a project-local skill)
228
228
  - `.claude/skills/playwright-compress/SKILL.md` — Layer 4 MCP output compression hook
229
229
  - `.claude/hooks/scripts/playwright-compress.sh` — Layer 4 hook script
230
230
  - `https://github.com/JuliusBrussee/caveman` — Layer 5 caveman plugin (external)
@@ -3,11 +3,11 @@
3
3
  > Updated: 2026-07-02
4
4
  > Source: Claude Code release notes (#967, #968, #969, #1126 auto-detected by claude-native skill, #1137, #1158, #1242, #1243, #1244, #1245, #1276, #1280)
5
5
  >
6
- > **Note (compat 노트 이관)**: 이 파일은 v2.1.159까지의 호환성 노트를 보존합니다. v2.1.160+ 이후 CC 호환성 노트는 `.claude/rules/` 각 규칙(R001/R002/R006/R010/R012 등)에 인라인으로 축적(이관)되었으므로, 최신 compat 노트는 해당 규칙 파일을 참조하세요.
6
+ > **Note (compat 노트 이관)**: 이 파일은 v2.1.160까지의 호환성 노트를 보존합니다. v2.1.161+ 이후 CC 호환성 노트는 `.claude/rules/` 각 규칙(R001/R002/R006/R010/R012 등)에 인라인으로 축적(이관)되었으므로, 최신 compat 노트는 해당 규칙 파일을 참조하세요.
7
7
 
8
8
  ## Compatibility Baseline
9
9
 
10
- oh-my-customcode v1.1.1 targets Claude Code v2.1.197+ (Sonnet 5 = CC 기본 모델). 이 파일에 정리된 v2.1.117-159 항목은 하위호환이며 config 변경이 불필요합니다.
10
+ oh-my-customcode v1.1.9 targets Claude Code v2.1.201+ (Sonnet 5 = CC 기본 모델). 이 파일에 정리된 v2.1.117-160 항목은 하위호환이며 config 변경이 불필요합니다.
11
11
 
12
12
  ## v2.1.117 (2026-04-22)
13
13
 
@@ -109,7 +109,7 @@ Phase 3: Plan Verification Research
109
109
 
110
110
  **Invocation**: Phase 3 teams are spawned directly as parallel agents (NOT via `Skill(research)`). The orchestrator creates 3 focused agents, each with a specific verification mandate derived from the Phase 2 plan.
111
111
 
112
- **Model selection**: sonnet for teams, opus for synthesis.
112
+ **Model selection**: sonnet for teams, opus for synthesis (Agent-tool Tier 3 enum — see `guides/multi-model-routing/README.md`).
113
113
 
114
114
  ### Verdict
115
115
 
@@ -78,6 +78,10 @@ R016 Continuous Improvement 루프를 강화하며, 내부 구조(agent-memory +
78
78
  삭제 경로가 불명확)를 profile 전환으로 해소합니다.
79
79
  cross-harness export 거부(#1176)로 발생하는 진입로 공백을 부분 보완합니다.
80
80
 
81
+ > **후속 (v1.1.29, #1484)**: manifest profiles는 CLI 미배선(vestigial)으로 확정되어
82
+ > 제거되었습니다. 이 흡수 결정 자체는 당시 문서화되었으나, 실제 CLI 배선(`--profile`
83
+ > 플래그 실행 경로)은 이뤄지지 않았습니다.
84
+
81
85
  ---
82
86
 
83
87
  ## 3. 거부된 패턴 — Cross-harness Export (#1176)
@@ -136,7 +140,9 @@ multi-target 전환의 결과:
136
140
  | 기존 harness 자산 재활용 | 멀티 harness 사용자 |
137
141
  | ECC와 기능 중복 | zero-sum 경쟁 |
138
142
 
139
- 신규 사용자 진입로 문제는 `manifest-install --profile`(#1177)으로 부분 해소됩니다.
143
+ 신규 사용자 진입로 문제는 `manifest-install --profile`(#1177)으로 부분 해소되는
144
+ 것으로 판단되었으나, 해당 profile 기능은 이후 CLI 미배선(vestigial)이 확인되어
145
+ v1.1.29(#1484)에서 제거되었습니다.
140
146
  멀티 harness 사용자는 ECC를 직접 사용하는 것이 더 효과적입니다.
141
147
 
142
148
  ---
@@ -161,7 +167,8 @@ multi-target 전환의 결과:
161
167
 
162
168
  4. **진입로 문제 대체 해소**
163
169
  #1177 `manifest-install --profile`이 신규 사용자 진입 비용을 낮추는 대안으로
164
- 이미 흡수되었습니다.
170
+ 당시 흡수되었습니다(단, v1.1.29/#1484에서 CLI 미배선 확인 후 제거됨 — 위
171
+ §2-3 후속 노트 참조).
165
172
 
166
173
  ---
167
174
 
@@ -226,7 +226,7 @@ oh-my-customcode에서의 현황:
226
226
  # Break-out 시퀀스
227
227
  1. 현재 상태를 tracker-checkpoint에 기록
228
228
  2. [Warning] Doom loop detected — {action} × {n}회 반복
229
- 3. 에스컬레이션: haiku → sonnet → opus 순서로 모델 전환
229
+ 3. 에스컬레이션: haiku → sonnet → opus 순서로 모델 전환 (Agent 도구 model 파라미터 — Tier 3 enum만 허용, sonnet5/opus5 등 전체 ID는 스폰 실패)
230
230
  4. 메모리 저장: feedback_doom_loop_{날짜}.md → 세션 간 패턴 누적
231
231
  ```
232
232
 
@@ -4,37 +4,62 @@
4
4
 
5
5
  Role-based model selection strategy for AI agent workflows. Consolidates model routing conventions from R006 (agent design), R008 (tool identification), and agent frontmatter into a single reference.
6
6
 
7
- ## Model Aliases
7
+ This project uses a **3-tier model specification system** — the same-looking string means a different thing depending on where it is placed. Read "Model Specification — 3 Tiers" below before choosing a value for frontmatter vs. an Agent tool spawn.
8
8
 
9
- | Alias | Full ID | Cost | Speed | Use Case |
10
- |-------|---------|------|-------|----------|
11
- | `haiku` | claude-haiku-4-5 | $ | Fast | Search, simple edits, file discovery |
12
- | `sonnet` | claude-sonnet-4-6 | $$ | Moderate | Code generation, general tasks (project base alias — pinned to 4-6 for stability) |
13
- | `sonnet5` | claude-sonnet-5 | $$ | Moderate | CC platform default (v2.1.197+); native 1M context |
14
- | `opus` | claude-opus-4-6 | $$$ | Slower | Complex reasoning, architecture, planning (project base alias — pinned to 4-6 for stability) |
15
- | `opus5` | claude-opus-5 | $$$ | Fast mode available | CC platform default Opus (v2.1.219+); native 1M context, fast mode at $10/$50 per Mtok |
16
- | `opus48` | claude-opus-4-8 | $$$ | Slower | Previous-generation Opus (GA); supports xhigh effort |
17
- | `fable` | claude-fable-5 | $$$$ | Slower | Mythos-class; tier above Opus, highest GA capability |
18
- | `opusplan` | claude-opus-4-6 + plan mode | $$$ | Slower | Architecture with approval gates |
9
+ ## Model Specification — 3 Tiers
19
10
 
20
- Extended context: `[1m]` suffix enables 1M token context (e.g., `claude-opus-4-6[1m]`). Fable 5, Sonnet 5, and Opus 5 include 1M context by default — no `[1m]` suffix needed.
11
+ ### Tier 1 — CC Native Alias
21
12
 
22
- > **Base alias pin (design intent)**: The base `sonnet` alias stays pinned to `claude-sonnet-4-6` for stability — existing agents specifying `model: sonnet` remain unchanged. Claude Sonnet 5 (`claude-sonnet-5`) is the CC platform default as of v2.1.197 and is opt-in via the explicit `sonnet5` alias. The same pattern applies to Opus: the base `opus` alias stays pinned to `claude-opus-4-6`; Claude Opus 5 (`claude-opus-5`) is CC's default Opus model as of v2.1.219 and is opt-in via the explicit `opus5` alias. Relative standing vs Fable 5 is not yet confirmed officially — do not assert an ordering.
13
+ Values: `sonnet` | `opus` | `haiku` | `opusplan` | `inherit`
14
+
15
+ Valid in BOTH agent frontmatter `model:` AND the Agent tool `model` parameter. **CC resolves these, not this project** — documentation claiming a pin (e.g. "the `sonnet` alias is pinned to 4-6") does not change what CC actually runs underneath. In practice, an agent with `model: sonnet` in frontmatter has been observed running as `claude-sonnet-5`.
16
+
17
+ ### Tier 2 — Full Model ID (frontmatter only)
18
+
19
+ Values: `claude-sonnet-5` | `claude-opus-5` | `claude-haiku-4-5` | `claude-opus-4-6` | `claude-opus-4-8` | `claude-fable-5`, etc.
20
+
21
+ Valid ONLY in frontmatter `model:` — the Agent tool `model` parameter does NOT accept full model IDs. Use a Tier 2 ID when you want the agent pinned to a specific model regardless of any future drift in what CC's Tier 1 aliases resolve to.
22
+
23
+ ### Tier 3 — Agent Tool `model` Parameter (enum)
24
+
25
+ Values: `sonnet` | `opus` | `haiku` | `fable` — **only these four**. Does NOT accept full model IDs, and does NOT accept `sonnet5`/`opus5`-style names. Any spawn-time model escalation or routing table that dispatches via the Agent tool MUST use one of these four values.
26
+
27
+ ### Deprecated / Invalid Names
28
+
29
+ `sonnet5`, `opus5`, and `opus48` are **not recognized by CC in any context** (neither frontmatter nor the Agent tool parameter) — they were project-invented names previously documented in this repo as aliases, but the platform does not interpret them; using them causes an immediate spawn/resolution failure. Bare `fable` (without the `claude-` prefix) is valid ONLY as a Tier 3 Agent tool parameter value — it is NOT a valid frontmatter alias; use the full ID `claude-fable-5` in frontmatter instead.
30
+
31
+ ## Model Catalog (Tier 2 full IDs)
32
+
33
+ | Full Model ID | Cost | Speed | Use Case |
34
+ |---------------|------|-------|----------|
35
+ | `claude-haiku-4-5` | $ | Fast | Search, simple edits, file discovery |
36
+ | `claude-sonnet-4-6` | $$ | Moderate | Code generation, general tasks — historically what the Tier 1 `sonnet` alias resolved to; CC's actual resolution target can drift (see Tier 1 above) |
37
+ | `claude-sonnet-5` | $$ | Moderate | Native 1M context; use as an explicit frontmatter pin |
38
+ | `claude-opus-4-6` | $$$ | Slower | Complex reasoning, architecture, planning |
39
+ | `claude-opus-5` | $$$ | Fast mode available | Native 1M context, fast mode at $10/$50 per Mtok |
40
+ | `claude-opus-4-8` | $$$ | Slower | Previous-generation Opus; supports xhigh effort |
41
+ | `claude-fable-5` | $$$$ | Slower | Mythos-class; use the full ID in frontmatter (bare `fable` is Tier 3 Agent-tool-only) |
42
+
43
+ Extended context: `[1m]` suffix enables 1M token context (e.g., `claude-opus-4-6[1m]`). Sonnet 5, Opus 5, and Fable 5 include 1M context by default — no `[1m]` suffix needed.
44
+
45
+ > Relative standing of Fable 5 vs Opus 5 is not officially confirmed — do not assert an ordering.
23
46
 
24
47
  ## Role-Based Routing Table
25
48
 
26
- | Role | Recommended Model | Rationale |
27
- |------|------------------|-----------|
28
- | Code search / file discovery | haiku | Fast, cheap, sufficient for retrieval |
29
- | Code review | sonnet | Needs understanding, not deep reasoning |
30
- | Code generation | sonnet | Good balance of quality and speed |
31
- | Bug fix (simple) | sonnet | Pattern recognition sufficient |
32
- | Bug fix (complex) | opus | Needs deep reasoning across modules |
33
- | Architecture design | opus / opusplan | Requires holistic thinking |
34
- | Test generation | sonnet | Template-driven, moderate complexity |
35
- | Documentation | sonnet | Straightforward generation |
36
- | Release verification | opus | Cross-cutting validation |
37
- | Orchestration | opus | Routing decisions need broad context |
49
+ This table recommends **frontmatter (Tier 2) full model IDs** for pinning an agent's default model. When dispatching the same role via the Agent tool `model` parameter (Tier 3) instead — e.g. a routing skill spawning a one-off agent — use the alias equivalent in the last column.
50
+
51
+ | Role | Recommended Frontmatter ID (Tier 2) | Agent-Tool Equivalent (Tier 3) | Rationale |
52
+ |------|--------------------------------------|----------------------------------|-----------|
53
+ | Code search / file discovery | `claude-haiku-4-5` | `haiku` | Fast, cheap, sufficient for retrieval |
54
+ | Code review | `claude-sonnet-5` | `sonnet` | Needs understanding, not deep reasoning |
55
+ | Code generation | `claude-sonnet-5` | `sonnet` | Good balance of quality and speed |
56
+ | Bug fix (simple) | `claude-sonnet-5` | `sonnet` | Pattern recognition sufficient |
57
+ | Bug fix (complex) | `claude-opus-5` | `opus` | Needs deep reasoning across modules |
58
+ | Architecture design | `claude-opus-5` / `opusplan` | `opus` | Requires holistic thinking |
59
+ | Test generation | `claude-sonnet-5` | `sonnet` | Template-driven, moderate complexity |
60
+ | Documentation | `claude-sonnet-5` | `sonnet` | Straightforward generation |
61
+ | Release verification | `claude-opus-5` | `opus` | Cross-cutting validation |
62
+ | Orchestration | `claude-opus-5` | `opus` | Routing decisions need broad context |
38
63
 
39
64
  ## Cost-Quality Tradeoff Matrix
40
65
 
@@ -56,16 +81,16 @@ Quality ▲
56
81
 
57
82
  ## MODEL_ROUTING.md Convention
58
83
 
59
- Projects can declare a `MODEL_ROUTING.md` file to override default routing:
84
+ Projects can declare a `MODEL_ROUTING.md` file to override default routing. This convention sets a persistent per-agent frontmatter override, so use Tier 2 full model IDs:
60
85
 
61
86
  ```markdown
62
87
  # Model Routing
63
88
 
64
89
  | Agent Pattern | Model | Override Reason |
65
90
  |---------------|-------|-----------------|
66
- | lang-*-expert | sonnet | Default sufficient for code generation |
67
- | mgr-sauron | opus | Verification requires deep analysis |
68
- | Explore | haiku | Search-only, no generation needed |
91
+ | lang-*-expert | claude-sonnet-5 | Default sufficient for code generation |
92
+ | mgr-sauron | claude-opus-5 | Verification requires deep analysis |
93
+ | Explore | claude-haiku-4-5 | Search-only, no generation needed |
69
94
  ```
70
95
 
71
96
  Place in project root or `.claude/` directory.
@@ -75,14 +100,14 @@ Place in project root or `.claude/` directory.
75
100
  ```yaml
76
101
  # .claude/agents/example.md
77
102
  name: example-agent
78
- model: sonnet # Use alias from table above
103
+ model: claude-sonnet-5 # Tier 2 full model ID (recommended) — see Model Specification — 3 Tiers above
79
104
  ```
80
105
 
81
- The `model` field in agent frontmatter sets the default. The Agent tool's `model` parameter overrides at spawn time.
106
+ The `model` field in agent frontmatter accepts EITHER a Tier 1 alias (`sonnet`/`opus`/`haiku`/`opusplan`/`inherit`) OR a Tier 2 full model ID, and sets the agent's default. The Agent tool's `model` parameter at spawn time accepts ONLY the Tier 3 enum (`sonnet`/`opus`/`haiku`/`fable`) and overrides the frontmatter default when supplied.
82
107
 
83
108
  ## Escalation Pattern
84
109
 
85
- When a task fails at a lower model tier, escalate:
110
+ When a task fails at a lower model tier, escalate. Escalation is executed by re-spawning via the Agent tool, so the path MUST use Tier 3 aliases — the Agent tool parameter does not accept full model IDs or `sonnet5`/`opus5`-style names:
86
111
 
87
112
  ```
88
113
  haiku → sonnet → opus
@@ -102,6 +127,6 @@ Fast Mode (`/fast` toggle) uses the same model with faster output (~2.5x). It do
102
127
 
103
128
  ## Related
104
129
 
105
- - R006 — Agent design rules (model aliases, frontmatter format)
130
+ - R006 — Agent design rules (model tiers, frontmatter format)
106
131
  - R008 — Tool identification (model in agent:model format)
107
132
  - `guides/skill-bundle-design/` — Skill architecture patterns
@@ -42,7 +42,7 @@ Providers are opt-in — missing CLIs are silently skipped.
42
42
  | Skill | Uses Provider | How |
43
43
  |-------|--------------|-----|
44
44
  | `reasoning-sandwich` | Any exec skill | Pre/post reasoning with different models |
45
- | `model-escalation` | Claude models only | Internal escalation (haiku→sonnet→opus), not cross-provider |
45
+ | `model-escalation` | Claude models only | Internal escalation (haiku→sonnet→opus, Agent-tool Tier 3 enum), not cross-provider |
46
46
 
47
47
  ## Relationship to Multi-Model Routing
48
48
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.36",
2
+ "version": "1.1.38",
3
3
  "lastUpdated": "2026-07-14T00:00:00.000Z",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
@@ -230,15 +230,19 @@ steps:
230
230
 
231
231
  ## Local CI-mimic verification (MUST run before marking implement done)
232
232
 
233
- After all implementation tasks complete, run these scripts in sequence and halt on failure:
233
+ After all implementation tasks complete, run these scripts in sequence and halt on failure.
234
+ Run each standalone (NO pipe) and read its exit code directly — `$?` after a pipe is the last command's code (R005, #1492):
234
235
 
235
236
  1. bash .github/scripts/verify-template-sync.sh
236
237
  2. bash .github/scripts/verify-wiki-sync.sh
238
+ 3. bun .github/scripts/validate-docs.ts --programmatic-only
237
239
 
238
- If either fails:
240
+ If any fails:
239
241
  - For wiki-sync failures: delegate to wiki-curator to generate missing pages (`/omcustom:wiki ingest <path>`)
242
+ (Regenerating the wiki source-hash manifest targets `wiki/.source-hashes.json` ALWAYS — NEVER `templates/manifest.json`. Command: `bash .github/scripts/lib/source-hash.sh generate wiki/.source-hashes.json`. Ref #1423.)
240
243
  - For template-sync failures: delegate to mgr-updater to sync `.claude/` -> `templates/.claude/`
241
- - After fixes, re-run the scripts until both pass
244
+ - For validate-docs failures (count mismatch): delegate to mgr-updater to fix counts via EXHAUSTIVE grep across all docs — file-enumeration misses `.en`/`.ko` variants and secondary docs (#1521 — v1.1.32에서 validate-docs 누락으로 push 왕복 1회 발생)
245
+ - After fixes, re-run the scripts until all pass
242
246
 
243
247
  This mirrors CI and prevents the known 1-2 wasted push cycles per release (ref: issue #927, v0.98.0 PR #925).
244
248
  description: "Per-issue implementation with lifecycle, specialist routing, and CI-mimic verification"
@@ -299,10 +303,17 @@ steps:
299
303
  Determine NEW version per semver rules below.
300
304
  npm project (package.json exists):
301
305
  a. package.json: jq '.version = "<NEW>"' package.json > package.json.tmp && mv package.json.tmp package.json
306
+ # ⚠ jq '.version=...' PRESERVES the manifest structure {version, lastUpdated, omcustomMinClaudeCode, components[]}.
307
+ # Edit ONLY the .version field — do NOT overwrite templates/manifest.json wholesale (e.g. a source-hash path→hash map).
308
+ # Recover a corrupted manifest: git show HEAD:templates/manifest.json | jq '.version="<NEW>"' > templates/manifest.json (#1423/#1154).
302
309
  b. templates/manifest.json: jq '.version = "<NEW>"' templates/manifest.json > templates/manifest.json.tmp && mv templates/manifest.json.tmp templates/manifest.json
303
- c. mgr-gitnerd commit: "chore(release): bump to v<NEW>"
304
- d. mgr-gitnerd push develop
305
- e. mandatory verification (with existence guard for partial-update safety):
310
+ c. bun run build — run standalone (NO pipe), read exit code directly ($? after a pipe is the last command's, R005/#1492).
311
+ This regenerates .omcustom.lock.json (generatorVersion/templateVersion) to <NEW> via scripts/sync-source-lockfile.ts.
312
+ d. git status --short — enumerate ALL tracked drift (`^ M`) the build produced; stage EVERY one (esp. .omcustom.lock.json) before commit.
313
+ (#1531 — .omcustom.lock.json missed staging across 4 consecutive releases after v1.1.29; root cause was no build step between version bump and commit.)
314
+ e. mgr-gitnerd commit: "chore(release): bump to v<NEW>" — MUST include the drift from step d
315
+ f. mgr-gitnerd push develop
316
+ g. mandatory verification (with existence guard for partial-update safety):
306
317
  [ -f scripts/verify-version-sync.sh ] && bash scripts/verify-version-sync.sh || echo "::warning::verify-version-sync.sh not found, version sync verification skipped"
307
318
  (verify-version-sync.sh 가 exit 1 시 release 단계 halt)
308
319
 
@@ -318,12 +329,15 @@ steps:
318
329
  3. Adapt release mechanism to project (determines how steps 3-5 execute):
319
330
  - npm project with auto-tag.yml (this repo — release/v* PR pattern):
320
331
  a. mgr-gitnerd creates release/v{NEW} branch from develop with the version-bump commit
321
- b. mgr-gitnerd creates PR: gh pr create --base develop --head release/v{NEW} --title "chore(release): bump to v{NEW}"
332
+ b. mgr-gitnerd creates PR: gh pr create --base develop --head release/v{NEW} --title "chore(release): bump to v{NEW}" --body "<MUST include 'Closes #N' for EVERY issue this release resolves>"
333
+ ⚠ auto-tag.yml closes issues by grep'ing Closes/Fixes/Resolves keywords in the PR BODY — NOT by milestone membership. If the keywords are missing, no issues close and the workflow still reports success (#1531).
334
+ Before creating the PR (whether via inline --body or --body-file), confirm the body text actually contains a Closes line per issue.
322
335
  c. mgr-gitnerd merges PR (admin merge required due to branch protection)
323
336
  d. DO NOT manually git tag or gh release create.
324
- auto-tag.yml fires on release/v* PR merge → creates tag → closes linked issues → closes milestone → deletes release branch.
337
+ auto-tag.yml fires on release/v* PR merge → creates tag → closes issues linked via PR-body Closes/Fixes/Resolves keywords → closes milestone → deletes release branch.
325
338
  release.yml fires on the tag → npm publish + GitHub Release creation.
326
339
  Milestone close and issue close are handled downstream by auto-tag.yml — do NOT close them manually.
340
+ After merge, verify each targeted issue is actually CLOSED (gh issue view); close manually if still open. Workflow conclusion=success is not evidence of close (#1531 — v1.1.34 Closes-keyword omission left 5 issues open, manual close required).
327
341
  - Non-npm / no auto-tag.yml:
328
342
  mgr-gitnerd: git tag v{NEW} && git push origin v{NEW}
329
343
  mgr-gitnerd: gh release create v{NEW} (with release notes)