Files
EverOS/use-cases/claude-code-plugin/commands/projects.md
Elliot Chen 518b8eca85 chore: initialize EverOS 1.0.0
md-first memory extraction framework for AI agents.

Markdown is the single source of truth; SQLite holds state and LanceDB
provides the rebuildable vector + BM25 + scalar index. The codebase follows
a single-direction DDD layering (entrypoints -> service -> memory -> infra,
with component / core / config cross-cutting) enforced by import-linter.

Engineering surface:
- Coding conventions in .claude/rules/ (path-scoped) and workflows in
  .claude/skills/ (/commit, /new-branch, /pr).
- GitHub Actions CI runs make lint + test + integration; pre-commit mirrors
  the gates locally (ruff, hygiene hooks, gitlint commit-msg).
- Commit messages follow Conventional Commits, enforced by gitlint.
- make lint also enforces datetime two-zone discipline and OpenAPI drift.
2026-06-06 07:33:17 +08:00

72 lines
2.1 KiB
Markdown

---
description: View your Claude Code projects tracked by EverMem
---
# EverMem Projects
View all Claude Code projects that have been tracked by EverMem.
## Instructions
Show the user their projects stored in the local groups.jsonl file.
1. Read the groups file from the plugin's data directory
2. Aggregate entries by groupId (count sessions, find first/last seen)
3. Display the project table with statistics
4. If no groups file exists, explain that projects are tracked automatically
## Actions
Check and read the groups data file:
```bash
GROUPS_FILE="${CLAUDE_PLUGIN_ROOT}/data/groups.jsonl"
if [ -f "$GROUPS_FILE" ] && [ -s "$GROUPS_FILE" ]; then
cat "$GROUPS_FILE"
else
echo "NO_GROUPS_FILE"
fi
```
**Note:** The file uses JSONL format (one JSON object per line). Each line is a session start event.
Entry format: `{"keyId":"...","groupId":"...","name":"...","path":"...","timestamp":"..."}`
- `keyId`: SHA-256 hash (first 12 chars) of the API key - associates projects with accounts
- `groupId`: Short identifier (9 chars: project name prefix + path hash)
Aggregate by `keyId + groupId` when displaying:
- Count occurrences = sessionCount
- Earliest timestamp = firstSeen
- Latest timestamp = lastSeen
## Output Format
If projects exist:
```
📁 Claude Code Projects
| Project | Group ID | Sessions | Last Active |
|---------------------|------------|----------|-------------|
| evermem-claude-code | ever8d8d5 | 42 | just now |
| my-react-app | myrea1b2c3 | 12 | 2h ago |
Total: 2 projects
```
If no projects file:
```
📁 Claude Code Projects
No projects tracked yet. Projects are automatically recorded when you start Claude Code sessions.
Each project directory creates a unique group ID for organizing memories.
```
## Notes
- Projects are identified by working directory path (hashed to 9-char ID)
- Each project has its own memory namespace in EverMem Cloud
- The groups.jsonl file is appended by the SessionStart hook
- Same project used with different API keys will appear as separate entries
- `keyId` is a SHA-256 hash (first 12 chars) of the API key - secure and unique