Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions .agents/skills/OpenMemory/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
```markdown
# OpenMemory Development Patterns

> Auto-generated skill from repository analysis

## Overview
This skill teaches the core development patterns and conventions used in the OpenMemory TypeScript codebase. You'll learn how to structure files, write imports/exports, follow commit message standards, and manage testing. These patterns ensure consistency and maintainability in projects without a specific framework.

## Coding Conventions

### File Naming
- Use **kebab-case** for all file names.
- Example: `user-profile.ts`, `memory-store.test.ts`

### Import Style
- Use **relative imports** for referencing other modules.
- Example:
```typescript
import { fetchData } from './utils';
```

### Export Style
- Use **named exports** instead of default exports.
- Example:
```typescript
// In memory-store.ts
export function saveMemory(data: Memory) { ... }
export const MEMORY_LIMIT = 1000;
```

### Commit Messages
- Follow **conventional commit** format.
- Use `chore` as the prefix for routine changes.
- Keep commit messages concise (average 77 characters).
- Example:
```
chore: update dependencies and fix minor lint issues
```

## Workflows

### Code Update
**Trigger:** When making any code changes or improvements
**Command:** `/code-update`

1. Make changes in TypeScript files using kebab-case naming.
2. Use relative imports and named exports.
3. Write a commit message using the conventional format with the `chore` prefix.
4. Push your changes to the repository.

### Testing
**Trigger:** When adding or updating features, or fixing bugs
**Command:** `/run-tests`

1. Create or update test files matching the `*.test.*` pattern.
2. Write tests in TypeScript.
3. Run the tests using your preferred test runner (framework not specified).
4. Ensure all tests pass before committing.

## Testing Patterns

- Test files are named using the `*.test.*` pattern (e.g., `memory-store.test.ts`).
- Tests are written in TypeScript.
- Testing framework is not specified; use your team's preferred runner.
- Place tests alongside or near the code they test for clarity.

Example:
```typescript
// memory-store.test.ts
import { saveMemory } from './memory-store';

describe('saveMemory', () => {
it('should save data correctly', () => {
// test implementation
});
});
```

## Commands
| Command | Purpose |
|----------------|----------------------------------------------|
| /code-update | Apply code changes following conventions |
| /run-tests | Run all tests matching the `*.test.*` pattern|
```
6 changes: 6 additions & 0 deletions .agents/skills/OpenMemory/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
interface:
display_name: "OpenMemory"
short_description: "Repo-specific patterns and workflows for OpenMemory"
default_prompt: "Use the OpenMemory repo skill to follow existing architecture, testing, and workflow conventions."
policy:
allow_implicit_invocation: true
227 changes: 227 additions & 0 deletions .claude/ecc-tools.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
{
"version": "1.3",
"schemaVersion": "1.0",
"generatedBy": "ecc-tools",
"generatedAt": "2026-05-17T21:45:58.013Z",
"repo": "https://github.com/nilhemdot/OpenMemory",
"referenceSetReadiness": {
"score": 0,
"present": 0,
"total": 7,
"items": [
{
"id": "deep-analyzer-corpus",
"label": "Deep analyzer corpus",
"status": "missing",
"evidence": [],
"recommendation": "Add analyzer fixture, golden, benchmark, or reference-set files that can catch analyzer regressions."
},
{
"id": "rag-evaluator",
"label": "RAG/evaluator comparison",
"status": "missing",
"evidence": [],
"recommendation": "Add retrieval or evaluator reference-set comparison fixtures with expected ranking behavior."
},
{
"id": "pr-salvage",
"label": "PR salvage/review corpus",
"status": "missing",
"evidence": [],
"recommendation": "Add stale-PR, review-thread, reopen-flow, or salvage reference cases for queue cleanup automation."
},
{
"id": "discussion-triage",
"label": "Discussion triage corpus",
"status": "missing",
"evidence": [],
"recommendation": "Add public discussion triage fixtures, golden cases, or reference sets for informational, answered, and no-response classifications."
},
{
"id": "harness-compatibility",
"label": "Harness compatibility",
"status": "missing",
"evidence": [],
"recommendation": "Add cross-harness, adapter-compliance, or harness-audit evidence for Claude, Codex, OpenCode, Zed, dmux, and agent surfaces."
},
{
"id": "security-evidence",
"label": "Security evidence",
"status": "missing",
"evidence": [],
"recommendation": "Attach security evidence such as SBOMs, SARIF, audit reports, or AgentShield evidence packs."
},
{
"id": "ci-failure-mode",
"label": "CI failure-mode evidence",
"status": "missing",
"evidence": [],
"recommendation": "Add captured CI failure logs, dry-run fixtures, or troubleshooting docs for common workflow failure modes."
}
]
},
"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/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/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/OpenMemory-instincts.yaml"
],
"packageFiles": {
"runtime-core": [
".claude/skills/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/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/OpenMemory-instincts.yaml"
]
},
"moduleFiles": {
"runtime-core": [
".claude/skills/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/SKILL.md",
".agents/skills/OpenMemory/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/OpenMemory-instincts.yaml"
]
},
"files": [
{
"moduleId": "runtime-core",
"path": ".claude/skills/OpenMemory/SKILL.md",
"description": "Repository-specific Claude Code skill generated from git history."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/OpenMemory/SKILL.md",
"description": "Codex-facing copy of the generated repository skill."
},
{
"moduleId": "runtime-core",
"path": ".agents/skills/OpenMemory/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/OpenMemory-instincts.yaml",
"description": "Continuous-learning instincts derived from repository patterns."
}
],
"workflows": [],
"adapters": {
"claudeCode": {
"skillPath": ".claude/skills/OpenMemory/SKILL.md",
"identityPath": ".claude/identity.json",
"commandPaths": []
},
"codex": {
"configPath": ".codex/config.toml",
"agentsGuidePath": ".codex/AGENTS.md",
"skillPath": ".agents/skills/OpenMemory/SKILL.md"
}
}
}
Loading