diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md new file mode 100644 index 0000000..0ce2b8c --- /dev/null +++ b/.claude/CLAUDE.md @@ -0,0 +1,39 @@ +# patholo + +Patent knowledge sharing platform for Hogan Lovells colleagues. + +**Domain:** patholo.de (Patent + Hogan Lovells) +**Memory group_id:** `patholo` + +## Purpose + +- Share guides, templates, and documents with HL patent team +- Centralized knowledge base for patent workflows +- Document best practices, style guides (HL Patents Style) +- Long-term: collaboration features, document management + +## Audience + +- HL patent lawyers and PAs (Munich, Dusseldorf, Amsterdam, London) +- Primary language: German + English +- Must be accessible, clean, professional + +## Tech Stack + +- **Frontend:** TBD (consider: Next.js, Fresh/Deno, or simple static) +- **Backend:** TBD (consider: Go API, or Supabase-only) +- **Hosting:** Dokploy on mlake (72.62.52.189) +- **Domain:** patholo.de → mlake +- **Auth:** TBD (simple password, HL SSO, or invite-based) + +## Infrastructure + +- **Gitea:** m/patholo on mgit.msbls.de +- **DNS:** patholo.de → 72.62.52.189 (mlake) +- **Deploy:** Dokploy with Gitea webhook (push-to-deploy) + +## Worker Preferences + +- Use **Opus** for design/architecture decisions +- Use **Sonnet** for implementation +- Prefer **gitster** role for issues diff --git a/.claude/agents/coder.md b/.claude/agents/coder.md new file mode 100644 index 0000000..400d943 --- /dev/null +++ b/.claude/agents/coder.md @@ -0,0 +1,14 @@ +# Coder Agent + +Implementation-focused agent for writing and refactoring code. + +## Instructions + +- Follow existing patterns in the codebase +- Write minimal, focused code +- Run tests after changes +- Commit incrementally with descriptive messages + +## Tools + +All tools available. diff --git a/.claude/agents/researcher.md b/.claude/agents/researcher.md new file mode 100644 index 0000000..d25b77e --- /dev/null +++ b/.claude/agents/researcher.md @@ -0,0 +1,14 @@ +# Researcher Agent + +Exploration and information gathering agent. + +## Instructions + +- Search broadly, then narrow down +- Document findings in structured format +- Cite sources and file paths +- Summarize key insights, don't dump raw data + +## Tools + +Read-only tools preferred. Use Bash only for non-destructive commands. diff --git a/.claude/agents/reviewer.md b/.claude/agents/reviewer.md new file mode 100644 index 0000000..a2af646 --- /dev/null +++ b/.claude/agents/reviewer.md @@ -0,0 +1,14 @@ +# Reviewer Agent + +Code review agent for checking quality and correctness. + +## Instructions + +- Check for bugs, security issues, and style violations +- Verify test coverage for changes +- Suggest improvements concisely +- Focus on correctness over style preferences + +## Tools + +Read-only tools. No file modifications. diff --git a/.claude/skills/mai-clone b/.claude/skills/mai-clone new file mode 120000 index 0000000..d622052 --- /dev/null +++ b/.claude/skills/mai-clone @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-clone \ No newline at end of file diff --git a/.claude/skills/mai-coder b/.claude/skills/mai-coder new file mode 120000 index 0000000..261b952 --- /dev/null +++ b/.claude/skills/mai-coder @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-coder \ No newline at end of file diff --git a/.claude/skills/mai-commit b/.claude/skills/mai-commit new file mode 120000 index 0000000..8446727 --- /dev/null +++ b/.claude/skills/mai-commit @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-commit \ No newline at end of file diff --git a/.claude/skills/mai-consultant b/.claude/skills/mai-consultant new file mode 120000 index 0000000..c336f9d --- /dev/null +++ b/.claude/skills/mai-consultant @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-consultant \ No newline at end of file diff --git a/.claude/skills/mai-debrief b/.claude/skills/mai-debrief new file mode 120000 index 0000000..9f8d783 --- /dev/null +++ b/.claude/skills/mai-debrief @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-debrief \ No newline at end of file diff --git a/.claude/skills/mai-enemy b/.claude/skills/mai-enemy new file mode 120000 index 0000000..b7847f4 --- /dev/null +++ b/.claude/skills/mai-enemy @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-enemy \ No newline at end of file diff --git a/.claude/skills/mai-excalidraw b/.claude/skills/mai-excalidraw new file mode 120000 index 0000000..8ce79cd --- /dev/null +++ b/.claude/skills/mai-excalidraw @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-excalidraw \ No newline at end of file diff --git a/.claude/skills/mai-fixer b/.claude/skills/mai-fixer new file mode 120000 index 0000000..a071909 --- /dev/null +++ b/.claude/skills/mai-fixer @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-fixer \ No newline at end of file diff --git a/.claude/skills/mai-gitster b/.claude/skills/mai-gitster new file mode 120000 index 0000000..f7edfe0 --- /dev/null +++ b/.claude/skills/mai-gitster @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-gitster \ No newline at end of file diff --git a/.claude/skills/mai-head b/.claude/skills/mai-head new file mode 120000 index 0000000..ac0e255 --- /dev/null +++ b/.claude/skills/mai-head @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-head \ No newline at end of file diff --git a/.claude/skills/mai-init b/.claude/skills/mai-init new file mode 120000 index 0000000..62fadcd --- /dev/null +++ b/.claude/skills/mai-init @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-init \ No newline at end of file diff --git a/.claude/skills/mai-inventor b/.claude/skills/mai-inventor new file mode 120000 index 0000000..488b600 --- /dev/null +++ b/.claude/skills/mai-inventor @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-inventor \ No newline at end of file diff --git a/.claude/skills/mai-lead b/.claude/skills/mai-lead new file mode 120000 index 0000000..c9fc1a4 --- /dev/null +++ b/.claude/skills/mai-lead @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-lead \ No newline at end of file diff --git a/.claude/skills/mai-maister b/.claude/skills/mai-maister new file mode 120000 index 0000000..4c3817f --- /dev/null +++ b/.claude/skills/mai-maister @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-maister \ No newline at end of file diff --git a/.claude/skills/mai-member b/.claude/skills/mai-member new file mode 120000 index 0000000..c875233 --- /dev/null +++ b/.claude/skills/mai-member @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-member \ No newline at end of file diff --git a/.claude/skills/mai-researcher b/.claude/skills/mai-researcher new file mode 120000 index 0000000..1cefb30 --- /dev/null +++ b/.claude/skills/mai-researcher @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-researcher \ No newline at end of file diff --git a/.claude/skills/mai-think b/.claude/skills/mai-think new file mode 120000 index 0000000..a8eff99 --- /dev/null +++ b/.claude/skills/mai-think @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-think \ No newline at end of file diff --git a/.claude/skills/mai-web b/.claude/skills/mai-web new file mode 120000 index 0000000..79fc5fa --- /dev/null +++ b/.claude/skills/mai-web @@ -0,0 +1 @@ +/home/m/.mai/skills/mai-web \ No newline at end of file diff --git a/.m/.gitignore b/.m/.gitignore new file mode 100644 index 0000000..1864979 --- /dev/null +++ b/.m/.gitignore @@ -0,0 +1,4 @@ +workers.json +spawn.lock +session.yaml +config.reference.yaml diff --git a/.m/config.yaml b/.m/config.yaml new file mode 100644 index 0000000..4e616b6 --- /dev/null +++ b/.m/config.yaml @@ -0,0 +1,179 @@ +# Project-specific mai configuration +# Auto-generated by 'mai init' — run 'mai setup' to customize + +provider: claude +providers: + claude: + api_key: "" + model: claude-sonnet-4-20250514 + base_url: https://api.anthropic.com/v1 + ollama: + host: http://localhost:11434 + model: llama3.2 +memory: + enabled: true + backend: "" + path: "" + url: postgres://mai_memory.your-tenant-id:maiMem6034supa@100.99.98.201:6543/postgres?sslmode=disable + group_id: "" + cache_ttl: 5m0s + auto_load: true + embedding_url: "" + embedding_model: "" +gitea: + url: https://mgit.msbls.de + repo: mAi/patholo + token: "" + sync: + enabled: false + interval: 0s + repos: [] + auto_queue: false +api: + api_key: "" + basic_auth: + username: "" + password: "" + public_endpoints: + - /api/health +ui: + theme: default + show_sidebar: true + animation: true + persona: true + avatar_pack: "" +worker: + names: [] + name_scheme: role + default_level: standard + auto_discard: false + max_workers: 5 + persistent: true +head: + name: "" + max_loops: 50 + infinity_mode: false + max_idle_duration: 2h0m0s + backoff_intervals: + - 5 + - 10 + - 15 + - 30 +capacity: + global: + max_workers: 5 + max_heads: 3 + per_worker: + max_tasks_lifetime: 0 + max_concurrent: 1 + max_context_tokens: 0 + per_head: + max_workers: 10 + resources: + max_memory_mb: 0 + max_cpu_percent: 0 + queue: + max_pending: 100 + stale_task_days: 30 +workforce: + timeouts: + task_default: 0s + task_max: 0s + idle_before_warn: 10m0s + idle_before_kill: 30m0s + quality_check: 2m0s + context: + max_tokens_per_worker: 0 + max_tokens_global: 0 + warn_threshold: 0.8 + truncate_strategy: oldest + delegation: + strategy: skill_match + preferred_role: coder + auto_delegate: false + max_depth: 3 + allowed_roles: + - coder + - researcher + - fixer + peppy: + enabled: false + style: calm + interval: 5m0s + emoji: false + nudges: true + nudge_main: false + custom_prompt: "" + stall_threshold: 0s + restart_enabled: false + max_shifts: 0 + crash_detection: false + max_crash_retries: 0 +quality_gates: + enabled: true + checks: [] +preflight: + enabled: false + type: "" + root: "" + checks: [] +guardrails: + enabled: false + use_defaults: true + output: + coder_checks: [] + researcher_checks: [] + fixer_checks: [] + custom_checks: {} + global_checks: [] + tools: + role_rules: {} + deny_patterns: [] + allow_patterns: [] + schemas: + report_schemas: {} + deliverable_schemas: {} +modes: + yolo: false + self_improvement: false + autonomous: false + verbose: false + improve_interval: 0s + predict_interval: 0s +layouts: + head: "" + worker: "" + roles: {} +dog: + name: buddy +supabase: + url: "" + role_key: "" + anon_key: "" + schema: mai +storage: + backend: "" + postgres: + url: "" + max_conns: 0 + min_conns: 0 + max_conn_lifetime: 0s +idle: + behavior: wait + auto_hire: false + prompt: "" +git: + worktrees: + enabled: true + delete_branch: false + dir: .worktrees +phase: + enabled: false + current: "" + allowed_roles: {} +goal: Patent knowledge sharing platform for HL colleagues — guides, documents, templates +skills: {} +editor: nvim +log_level: info +project_detection: true +tone: professional diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..d4d0044 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "supabase": { + "type": "http", + "url": "http://100.99.98.201:8000/mcp", + "headers": { + "Authorization": "Basic ${SUPABASE_AUTH}" + } + } + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 120000 index 0000000..ac55cbd --- /dev/null +++ b/AGENTS.md @@ -0,0 +1 @@ +.claude/CLAUDE.md \ No newline at end of file