Merge pull request #2 from Abdullakala/ecc-tools/cobalt-1776432591710

feat: add cobalt ECC bundle
This commit is contained in:
Abkdarrk 2026-04-17 17:59:55 +03:00 committed by GitHub
commit 05bd308cca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 759 additions and 0 deletions

View file

@ -0,0 +1,74 @@
```markdown
# cobalt Development Patterns
> Auto-generated skill from repository analysis
## Overview
This skill teaches the core development patterns and conventions used in the `cobalt` TypeScript codebase. You'll learn about file naming, import/export styles, commit message conventions, and how to write and organize tests. This guide is designed to help you contribute code that matches the project's established standards.
## Coding Conventions
### File Naming
- Use **PascalCase** for all file names.
- **Example:**
`MyComponent.ts`
### Import Style
- Use **absolute imports** for all modules.
- **Example:**
```typescript
import MyService from 'services/MyService';
```
### Export Style
- Use **default exports** for modules.
- **Example:**
```typescript
const MyUtility = () => { /* ... */ };
export default MyUtility;
```
### Commit Messages
- Follow **conventional commit** format.
- Use the `feat` prefix for new features.
- **Example:**
```
feat: add user authentication middleware
```
## Workflows
### Adding a New Feature
**Trigger:** When implementing a new feature or module
**Command:** `/add-feature`
1. Create a new file using PascalCase (e.g., `NewFeature.ts`).
2. Write your module using TypeScript.
3. Use absolute imports for dependencies.
4. Export your module as default.
5. Write corresponding tests in a file named `NewFeature.test.ts`.
6. Commit your changes using the `feat` prefix in the commit message.
### Writing Tests
**Trigger:** When adding or updating functionality
**Command:** `/write-test`
1. Create a test file named `YourModule.test.ts` in the same directory as the module.
2. Write tests using the project's preferred testing framework (unknown; check existing tests for guidance).
3. Ensure all new or changed code is covered by tests.
4. Run the test suite to verify correctness.
## Testing Patterns
- Test files follow the `*.test.*` pattern (e.g., `MyComponent.test.ts`).
- Place test files alongside the modules they test.
- The testing framework is not specified; review existing test files for syntax and structure.
- Example test file name:
`UserService.test.ts`
## Commands
| Command | Purpose |
|----------------|----------------------------------------------|
| /add-feature | Guide for adding a new feature or module |
| /write-test | Steps for writing and organizing tests |
```

View file

@ -0,0 +1,6 @@
interface:
display_name: "Cobalt"
short_description: "Repo-specific patterns and workflows for cobalt"
default_prompt: "Use the cobalt repo skill to follow existing architecture, testing, and workflow conventions."
policy:
allow_implicit_invocation: true

171
.claude/ecc-tools.json Normal file
View file

@ -0,0 +1,171 @@
{
"version": "1.3",
"schemaVersion": "1.0",
"generatedBy": "ecc-tools",
"generatedAt": "2026-04-17T13:29:36.704Z",
"repo": "https://github.com/Abdullakala/cobalt",
"profiles": {
"requested": "core",
"recommended": "core",
"effective": "core",
"requestedAlias": "core",
"recommendedAlias": "core",
"effectiveAlias": "core"
},
"requestedProfile": "core",
"profile": "core",
"recommendedProfile": "core",
"effectiveProfile": "core",
"tier": "free",
"requestedComponents": [
"repo-baseline"
],
"selectedComponents": [
"repo-baseline"
],
"requestedAddComponents": [],
"requestedRemoveComponents": [],
"blockedRemovalComponents": [],
"tierFilteredComponents": [],
"requestedRootPackages": [
"runtime-core"
],
"selectedRootPackages": [
"runtime-core"
],
"requestedPackages": [
"runtime-core"
],
"requestedAddPackages": [],
"requestedRemovePackages": [],
"selectedPackages": [
"runtime-core"
],
"packages": [
"runtime-core"
],
"blockedRemovalPackages": [],
"tierFilteredRootPackages": [],
"tierFilteredPackages": [],
"conflictingPackages": [],
"dependencyGraph": {
"runtime-core": []
},
"resolutionOrder": [
"runtime-core"
],
"requestedModules": [
"runtime-core"
],
"selectedModules": [
"runtime-core"
],
"modules": [
"runtime-core"
],
"managedFiles": [
".claude/skills/cobalt/SKILL.md",
".agents/skills/cobalt/SKILL.md",
".agents/skills/cobalt/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/cobalt-instincts.yaml"
],
"packageFiles": {
"runtime-core": [
".claude/skills/cobalt/SKILL.md",
".agents/skills/cobalt/SKILL.md",
".agents/skills/cobalt/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/cobalt-instincts.yaml"
]
},
"moduleFiles": {
"runtime-core": [
".claude/skills/cobalt/SKILL.md",
".agents/skills/cobalt/SKILL.md",
".agents/skills/cobalt/agents/openai.yaml",
".claude/identity.json",
".codex/config.toml",
".codex/AGENTS.md",
".codex/agents/explorer.toml",
".codex/agents/reviewer.toml",
".codex/agents/docs-researcher.toml",
".claude/homunculus/instincts/inherited/cobalt-instincts.yaml"
]
},
"files": [
{
"moduleId": "runtime-core",
"path": ".claude/skills/cobalt/SKILL.md",
"description": "Repository-specific Claude Code skill generated from git history."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/cobalt/SKILL.md",
"description": "Codex-facing copy of the generated repository skill."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/cobalt/agents/openai.yaml",
"description": "Codex skill metadata so the repo skill appears cleanly in the skill interface."
},
{
"moduleId": "runtime-core",
"path": ".claude/identity.json",
"description": "Suggested identity.json baseline derived from repository conventions."
},
{
"moduleId": "runtime-core",
"path": ".codex/config.toml",
"description": "Repo-local Codex MCP and multi-agent baseline aligned with ECC defaults."
},
{
"moduleId": "runtime-core",
"path": ".codex/AGENTS.md",
"description": "Codex usage guide that points at the generated repo skill and workflow bundle."
},
{
"moduleId": "runtime-core",
"path": ".codex/agents/explorer.toml",
"description": "Read-only explorer role config for Codex multi-agent work."
},
{
"moduleId": "runtime-core",
"path": ".codex/agents/reviewer.toml",
"description": "Read-only reviewer role config focused on correctness and security."
},
{
"moduleId": "runtime-core",
"path": ".codex/agents/docs-researcher.toml",
"description": "Read-only docs researcher role config for API verification."
},
{
"moduleId": "runtime-core",
"path": ".claude/homunculus/instincts/inherited/cobalt-instincts.yaml",
"description": "Continuous-learning instincts derived from repository patterns."
}
],
"workflows": [],
"adapters": {
"claudeCode": {
"skillPath": ".claude/skills/cobalt/SKILL.md",
"identityPath": ".claude/identity.json",
"commandPaths": []
},
"codex": {
"configPath": ".codex/config.toml",
"agentsGuidePath": ".codex/AGENTS.md",
"skillPath": ".agents/skills/cobalt/SKILL.md"
}
}
}

View file

@ -0,0 +1,319 @@
# Instincts generated from https://github.com/Abdullakala/cobalt
# Generated: 2026-04-17T13:29:50.681Z
# Version: 2.0
# NOTE: This file supplements (does not replace) any existing curated instincts.
# High-confidence manually curated instincts should be preserved alongside these.
---
id: cobalt-commit-conventional
trigger: "when writing a commit message"
confidence: 0.85
domain: git
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Commit Conventional
## Action
Use conventional commit format with prefixes: feat
## Evidence
- 2 commits analyzed
- Detected conventional commit pattern
- Examples: feat: update branding and redesign UI with cyan/turquoise theme, feat: add systematic diagnostics and summary reports
---
id: cobalt-commit-length
trigger: "when writing a commit message"
confidence: 0.6
domain: git
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Commit Length
## Action
Write moderate-length commit messages (~58 characters)
## Evidence
- Average commit message length: 58 chars
- Based on 2 commits
---
id: cobalt-naming-files
trigger: "when creating a new file"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Naming Files
## Action
Use PascalCase naming convention
## Evidence
- Analyzed file naming patterns in repository
- Dominant pattern: PascalCase
---
id: cobalt-export-style
trigger: "when exporting from a module"
confidence: 0.7
domain: code-style
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Export Style
## Action
Prefer default exports
## Evidence
- Export pattern analysis
- Dominant style: default
---
id: cobalt-arch-type-based
trigger: "when adding new code"
confidence: 0.8
domain: architecture
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Arch Type Based
## Action
Place code in the appropriate type folder (components/, services/, utils/, etc.)
## Evidence
- Type-based module organization detected
- Folders:
---
id: cobalt-test-separate
trigger: "when writing tests"
confidence: 0.8
domain: testing
source: repo-analysis
source_repo: https://github.com/Abdullakala/cobalt
---
# Cobalt Test Separate
## Action
Place tests in the tests/ or __tests__/ directory, mirroring src structure
## Evidence
- Separate test directory pattern detected
- Tests live in dedicated test folders
---
id: cobalt-instinct-file-naming
trigger: "When creating a new file"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct File Naming
## Action
Name the file using PascalCase
## Evidence
- Pattern in namingConventions.files
---
id: cobalt-instinct-function-naming
trigger: "When defining a function"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Function Naming
## Action
Name the function using camelCase
## Evidence
- Pattern in namingConventions.functions
---
id: cobalt-instinct-class-naming
trigger: "When defining a class"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Class Naming
## Action
Name the class using PascalCase
## Evidence
- Pattern in namingConventions.classes
---
id: cobalt-instinct-constant-naming
trigger: "When declaring a constant"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Constant Naming
## Action
Name the constant using SCREAMING_SNAKE_CASE
## Evidence
- Pattern in namingConventions.constants
---
id: cobalt-instinct-import-style
trigger: "When importing modules"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Import Style
## Action
Use absolute import paths
## Evidence
- Pattern in importStyle
---
id: cobalt-instinct-export-style
trigger: "When exporting modules"
confidence: 0.8
domain: code-style
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Export Style
## Action
Use default exports
## Evidence
- Pattern in exportStyle
---
id: cobalt-instinct-commit-format
trigger: "When writing a commit message for a new feature"
confidence: 0.9
domain: git
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Commit Format
## Action
Start the commit message with 'feat:' followed by a concise description
## Evidence
- Seen in commit: feat: update branding and redesign UI with cyan/turquoise theme
- Seen in commit: feat: add systematic diagnostics and summary reports
- Pattern in commits.prefixes
---
id: cobalt-instinct-commit-length
trigger: "When writing a commit message"
confidence: 0.7
domain: git
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Commit Length
## Action
Keep the commit message around 58 characters on average
## Evidence
- Pattern in commits.averageLength
---
id: cobalt-instinct-test-location
trigger: "When adding new tests"
confidence: 0.8
domain: testing
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Test Location
## Action
Place test files in a separate directory from source files
## Evidence
- Pattern in architecture.folderStructure.testLocation
---
id: cobalt-instinct-module-organization
trigger: "When organizing code modules"
confidence: 0.7
domain: architecture
source: repo-analysis
source_repo: Abdullakala/cobalt
---
# Cobalt Instinct Module Organization
## Action
Group modules by type
## Evidence
- Pattern in architecture.moduleOrganization

14
.claude/identity.json Normal file
View file

@ -0,0 +1,14 @@
{
"version": "2.0",
"technicalLevel": "technical",
"preferredStyle": {
"verbosity": "detailed",
"codeComments": true,
"explanations": true
},
"domains": [
"typescript"
],
"suggestedBy": "ecc-tools-repo-analysis",
"createdAt": "2026-04-17T13:29:50.681Z"
}

View file

@ -0,0 +1,74 @@
```markdown
# cobalt Development Patterns
> Auto-generated skill from repository analysis
## Overview
This skill teaches the core development patterns and conventions used in the `cobalt` TypeScript codebase. You'll learn about file naming, import/export styles, commit message conventions, and how to write and organize tests. This guide is designed to help you contribute code that matches the project's established standards.
## Coding Conventions
### File Naming
- Use **PascalCase** for all file names.
- **Example:**
`MyComponent.ts`
### Import Style
- Use **absolute imports** for all modules.
- **Example:**
```typescript
import MyService from 'services/MyService';
```
### Export Style
- Use **default exports** for modules.
- **Example:**
```typescript
const MyUtility = () => { /* ... */ };
export default MyUtility;
```
### Commit Messages
- Follow **conventional commit** format.
- Use the `feat` prefix for new features.
- **Example:**
```
feat: add user authentication middleware
```
## Workflows
### Adding a New Feature
**Trigger:** When implementing a new feature or module
**Command:** `/add-feature`
1. Create a new file using PascalCase (e.g., `NewFeature.ts`).
2. Write your module using TypeScript.
3. Use absolute imports for dependencies.
4. Export your module as default.
5. Write corresponding tests in a file named `NewFeature.test.ts`.
6. Commit your changes using the `feat` prefix in the commit message.
### Writing Tests
**Trigger:** When adding or updating functionality
**Command:** `/write-test`
1. Create a test file named `YourModule.test.ts` in the same directory as the module.
2. Write tests using the project's preferred testing framework (unknown; check existing tests for guidance).
3. Ensure all new or changed code is covered by tests.
4. Run the test suite to verify correctness.
## Testing Patterns
- Test files follow the `*.test.*` pattern (e.g., `MyComponent.test.ts`).
- Place test files alongside the modules they test.
- The testing framework is not specified; review existing test files for syntax and structure.
- Example test file name:
`UserService.test.ts`
## Commands
| Command | Purpose |
|----------------|----------------------------------------------|
| /add-feature | Guide for adding a new feature or module |
| /write-test | Steps for writing and organizing tests |
```

26
.codex/AGENTS.md Normal file
View file

@ -0,0 +1,26 @@
# ECC for Codex CLI
This supplements the root `AGENTS.md` with a repo-local ECC baseline.
## Repo Skill
- Repo-generated Codex skill: `.agents/skills/cobalt/SKILL.md`
- Claude-facing companion skill: `.claude/skills/cobalt/SKILL.md`
- Keep user-specific credentials and private MCPs in `~/.codex/config.toml`, not in this repo.
## MCP Baseline
Treat `.codex/config.toml` as the default ECC-safe baseline for work in this repository.
The generated baseline enables GitHub, Context7, Exa, Memory, Playwright, and Sequential Thinking.
## Multi-Agent Support
- Explorer: read-only evidence gathering
- Reviewer: correctness, security, and regression review
- Docs researcher: API and release-note verification
## Workflow Files
- No dedicated workflow command files were generated for this repo.
Use these workflow files as reusable task scaffolds when the detected repository workflows recur.

View file

@ -0,0 +1,9 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
sandbox_mode = "read-only"
developer_instructions = """
Verify APIs, framework behavior, and release-note claims against primary documentation before changes land.
Cite the exact docs or file paths that support each claim.
Do not invent undocumented behavior.
"""

View file

@ -0,0 +1,9 @@
model = "gpt-5.4"
model_reasoning_effort = "medium"
sandbox_mode = "read-only"
developer_instructions = """
Stay in exploration mode.
Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them.
Prefer targeted search and file reads over broad scans.
"""

View file

@ -0,0 +1,9 @@
model = "gpt-5.4"
model_reasoning_effort = "high"
sandbox_mode = "read-only"
developer_instructions = """
Review like an owner.
Prioritize correctness, security, behavioral regressions, and missing tests.
Lead with concrete findings and avoid style-only feedback unless it hides a real bug.
"""

48
.codex/config.toml Normal file
View file

@ -0,0 +1,48 @@
#:schema https://developers.openai.com/codex/config-schema.json
# ECC Tools generated Codex baseline
approval_policy = "on-request"
sandbox_mode = "workspace-write"
web_search = "live"
[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp@latest"]
[mcp_servers.exa]
url = "https://mcp.exa.ai/mcp"
[mcp_servers.memory]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-memory"]
[mcp_servers.playwright]
command = "npx"
args = ["-y", "@playwright/mcp@latest", "--extension"]
[mcp_servers.sequential-thinking]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-sequential-thinking"]
[features]
multi_agent = true
[agents]
max_threads = 6
max_depth = 1
[agents.explorer]
description = "Read-only codebase explorer for gathering evidence before changes are proposed."
config_file = "agents/explorer.toml"
[agents.reviewer]
description = "PR reviewer focused on correctness, security, and missing tests."
config_file = "agents/reviewer.toml"
[agents.docs_researcher]
description = "Documentation specialist that verifies APIs, framework behavior, and release notes."
config_file = "agents/docs-researcher.toml"