# VecLayer — Agent Conventions
## Identity & Attribution
Every agent interaction that produces a GitHub artifact (issue, comment, PR) **must** include attribution:
```
— <tool> - <model>
```
| `Claude Web - Opus 4.6` | Conversations in claude.ai web interface |
| `Claude Code - Opus 4.6` | Claude Code CLI sessions |
| `Claude Code - Sonnet 4.6` | Claude Code CLI with Sonnet model |
| `Claude Code - Haiku 4.5` | Claude Code CLI subagents using Haiku |
| `Opencode - Z.AI GLM-4.7` | Opencode CLI sessions |
| `OpenAI Codex - GPT-5` | OpenAI Codex sessions |
| `Florian Burka` | Human author |
This allows us to trace which model and tool produced each decision, design, or code change.
The list above is non-exhaustive: any agent/model should use `— <tool> - <model>` with their exact tool and model names.
## Code Quality
See [CODE_QUALITY.md](CODE_QUALITY.md) for full standards.
**The essentials:** 0 errors, 0 warnings, 0 test failures. Run `cargo fmt`, `cargo clippy`, `cargo nextest run` before every PR. Tests must assert real outcomes and fail on wrong results — "doesn't panic" is not a test. Cover green path, edge cases, and error path.
## Roadmap
The roadmap is tracked as GitHub Issues:
```bash
# View the full roadmap
gh issue list --label phase
# What's next?
gh issue list --label next
# What's done?
gh issue list --label done
# Open design questions
gh issue list --label open-question
# Discuss a roadmap item
gh issue comment <number> --body "..."
```
### Labels
| `phase` | green | Roadmap phase (1-7) |
| `done` | grey-green | Phase completed |
| `next` | red-orange | Next for implementation |
| `future` | light blue | Planned for later |
| `enhancement` | teal | Enhancement to existing phase |
| `open-question` | purple | Design question needing resolution |
### Rules
- One issue per phase, with a checklist of deliverables
- Enhancements and open questions get their own issues, linked to the parent phase
- Close phase issues only when all checklist items are done and verified
- Use comments for design discussion — keep the issue body as the source of truth
- Update issue body when decisions are made (don't let decisions get buried in comments)
## Memory Capture
- Use VecLayer perspectives to track decisions, learnings, and ongoing work
- `decisions`: Architectural choices, configuration decisions
- `learnings`: What worked/didn't, insights gained
- `intentions`: Goals, upcoming work, ongoing threads
- Priming: Use `veclayer reflect` on session start (alias: `veclayer id`)
- Store significant moments automatically during work
## MCP Servers
- **veclayer**: Local hierarchical vector database for long-term memory
- **sonote.ai**: Remote MCP server for analysis and document storage (OAuth authenticated)
## Coordination
When multiple agents work on the same codebase:
- Check `gh issue list --label next` before starting work
- Comment on the issue you're working on to signal intent
- Reference issue numbers in commit messages (`fixes #N`, `ref #N`)
- Do not close issues without explicit human approval
## Agent Attribution
Commit messages should include attribution via `Co-Authored-By`:
```
<message body>
Co-Authored-By: <tool> - <model>
```
| Claude Web - Opus 4.6 | `Co-Authored-By: Claude Web - Opus 4.6 <noreply@anthropic.com>` |
| Claude Code - Opus 4.6 | `Co-Authored-By: Claude Code - Opus 4.6 <noreply@anthropic.com>` |
| Claude Code - Sonnet 4.6 | `Co-Authored-By: Claude Code - Sonnet 4.6 <noreply@anthropic.com>` |
| Claude Code - Haiku 4.5 | `Co-Authored-By: Claude Code - Haiku 4.5 <noreply@anthropic.com>` |
| Opencode - Z.AI GLM-4.7 | `Co-Authored-By: Opencode - Z.AI GLM-4.7 <noreply@z.ai>` |
| OpenAI Codex - GPT-5 | `Co-Authored-By: OpenAI Codex - GPT-5 <noreply@openai.com>` |
| Florian Burka | Human author (no attribution line) |
For tools/models not listed above, use the same `Co-Authored-By: <tool> - <model> <noreply@provider>` pattern with the exact tool/model name.
## Pull Request Workflow
```bash
# 1. Create feature branch
git checkout -b feature-name
# 2. Work and commit
git add <files>
git commit -m "<type>: <description>"
# (include Co-Authored-By for attribution)
# 3. Push to remote
git push -u origin feature-name
# 4. Create PR with detailed description
gh pr create --title "feat: ..." --body "<detailed description>"
```
**PR Body Template:**
```markdown
## Summary
Brief description of what this PR does.
## Changes
- Change 1: description
- Change 2: description
## Test Coverage
- What was tested
- Test results
## Example Usage
\`\`\`bash
# CLI example
veclayer <command> ...
# MCP example
{...}
\`\`\`
Fixes #<issue-number>
— <tool> - <model>
```
**Commit Message Format:** `<type>: <description>`
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation only
- `refactor`: Code refactoring
- `test`: Tests only
- `chore`: Build/config changes