mirror of
https://github.com/gnekt/My-Brain-Is-Full-Crew.git
synced 2026-08-26 02:04:43 +00:00
* Fix istall/update scripts * test: capture pre-refactor install snapshot for regression Adds take-snapshot.sh script and the resulting snapshot/ directory, capturing the exact vault state produced by launchme.sh before the framework-agnosticity refactor begins. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Summary: Refactor agents/skills/hooks/mcp in agentic-platform-agnostic templates. refactor: rename source CLAUDE.md → DISPATCHER.md (framework-neutral) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> refactor: convert agent frontmatter from tools: to neutral capabilities: Replace Claude Code-specific `tools:` frontmatter with framework-agnostic `mode: subagent` and `capabilities: [...]` in all 8 agent files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> refactor: add neutral hook trigger manifests (.hook.yaml) refactor: hooks read neutral JSON schema (args.* instead of tool_input.*) refactor: convert .mcp.json to neutral mcp/servers.yaml Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Implement agentic-platform adapters skeleton. build: add adapters/lib.sh skeleton with vocabulary constants test: bash test runner for adapter helpers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): parse_frontmatter helper with tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): parse_capabilities helper with tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): should_include helper with tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): parse_hook_yaml helper with tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): agent_body helper with tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(adapters): enumerate_agents and enumerate_hooks helpers Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Implement agentic-platform adapter for Claude Code. build(adapters): claude-code adapter skeleton with capability/event tables build(claude-code): adapter_translate_dispatcher with test build(claude-code): adapter_translate_references with test build(claude-code): adapter_translate_skills with tests build(claude-code): adapter_translate_agents with capability→tools mapping build(claude-code): hook wrapper template (CC native → neutral schema) build(claude-code): adapter_translate_hooks with wrapper generation build(claude-code): adapter_translate_mcp with hand-rolled YAML parser build(claude-code): adapter_finalize and complete adapter_build wiring build: scripts/build.sh dispatches to per-framework adapter Also fix adapter_translate_hooks and adapter_translate_agents to use while-read loops (avoiding word-splitting on paths with spaces) and guard grep calls with || true to survive set -eo pipefail when hooks have no match-tool field. Remove scripts/build.sh from .gitignore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Refactor install/update scripts to support agentic-platform agnosticity. refactor(lib.sh): generalize install_claude_md → install_dispatcher New signature takes the full destination path instead of just the vault dir, allowing callers to install CLAUDE.md, AGENTS.md, or any dispatcher file to an explicit location. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(launchme): support --framework flag, build dist/ before install Add --framework and --target arg parsing. Run build.sh before installing to populate dist/<framework>/. All install_* calls now read from dist/<framework>/ instead of the raw source dirs. MCP is now handled automatically by the adapter (no interactive prompt). Replaced install_claude_md with install_dispatcher. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(updateme): support --framework flag, build dist/ before update Add --framework and --target arg parsing. Run build.sh before installing to populate dist/<framework>/. All install_* calls now read from dist/<framework>/ instead of raw source dirs. Replaced install_claude_md with install_dispatcher. Also fix set -e compatibility in lib.sh: add || true to all conditional [[ ... ]] && info "..." logging lines so they don't abort the script when VERBOSE_COPY=0. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * test: regression runner diffs dist/claude-code against pre-refactor snapshot - Add tests/regression/run.sh that builds dist/claude-code and compares against snapshot, excluding runtime-only artifacts (.mbifc-manifest, .mcp.json, .claude-plugin/plugin.json) - Fix adapters/lib.sh agent_body: preserve '---' section dividers in body (awk now only skips '---' while still inside frontmatter, fm < 2) - Fix adapters/claude-code/adapter.sh: change 'read' capability to expand to only 'Read', appending 'Glob, Grep' at end of tools list to match snapshot ordering - Update snapshot to reflect intentional refactor changes: hook JSON schema (.args.* instead of .tool_input.*), wrapper scripts, settings.json with wrapper paths, and consistent tool ordering for postman/sorter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Implement opencode adapter. Co-Authored-By: win0na <winnie@winneon.moe> feat(lib.sh): add install_plugins helper for opencode JS plugins build(adapters): opencode adapter skeleton with capability/event tables build(opencode): adapter_translate_dispatcher (DISPATCHER.md → AGENTS.md) build(opencode): adapter_translate_references and adapter_translate_skills Implements Task 4 and Task 5: - adapter_translate_references: Copies reference markdown files to .opencode/references/ - adapter_translate_skills: Copies skill SKILL.md files to .opencode/skills/<name>/ with exclude filtering Both functions respect framework filtering via should_include(). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(opencode): adapter_translate_agents with capability→permission mapping Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(opencode): bash-executor template for spawning hook scripts build(opencode): plugin-stub template for mbifc-hooks.js build(opencode): adapter_translate_hooks with JS plugin generation Implements _oc_hook_registry_json and adapter_translate_hooks in the opencode adapter. Copies hook scripts to .opencode/hooks/, generates a single .opencode/plugins/mbifc-hooks.js by inlining bash-executor.js and synthesising a hook registry from *.hook.yaml files. Uses python3 for template substitution to safely handle multi-line JS content. Adds 3 unit tests (copies scripts, registry entries, noop when no hooks dir). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(opencode): adapter_translate_mcp with local/remote handling build(opencode): adapter_finalize and complete adapter_build wiring Add adapter_finalize placeholder and wire adapter_translate_mcp into adapter_build; add end-to-end integration test (14/14 pass). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(launchme): branch on --framework for opencode install layout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(updateme): branch on --framework for opencode install layout Mirror the same case "$FRAMEWORK" block from launchme.sh: framework-specific DIST_COMPONENTS_DIR, VAULT_COMPONENTS_DIR, DISPATCHER_SRC/DST, MCP_SRC/DST, HAS_PLUGINS; conditional install_plugins; conditional install_settings; framework-aware vault-setup check; framework-neutral summary messages. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix adapters to follow the same template. fix: restore adapter_build() contract, revert function renames Both adapters now export adapter_build() and adapter_translate_*() as the uniform public contract. scripts/build.sh sources one adapter and calls adapter_build uniformly. Private helpers (_oc_*) and vocabulary tables (cc_capability_to_tools, oc_capability_to_permission, etc.) retain their prefixes. CC regression and OC unit tests all pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> fix(tests): restore test_oc_ prefix on adapter_build end-to-end test * Fix agent format in opencode adapter * refactor: rename --framework to --platform across all scripts and tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Modify generic name for model tiers Co-Authored-By: win0na <winnie@winneon.moe> refactor: neutral model vocabulary (low/mid/high) in source agents feat(claude-code): cc_model_to_native() maps low/mid/high to haiku/sonnet/opus Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(opencode): update oc_model_to_provider() for low/mid/high vocabulary Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add gemini-cli adapter Co-Authored-By: win0na <winnie@winneon.moe> build(gemini-cli): adapter skeleton with capability/event/model tables build(gemini-cli): adapter_translate_dispatcher (DISPATCHER.md → GEMINI.md) build(gemini-cli): adapter_translate_references and adapter_translate_skills Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(gemini-cli): adapter_translate_agents with capability→tools mapping Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(gemini-cli): adapter_translate_hooks with wrapper scripts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> feat(install): add gemini-cli platform to launchme.sh and updateme.sh Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Implement preserving config merge for opencode. Co-Authored-By: win0na <winnie@winneon.moe> feat(opencode): config-merge.sh with formatting-preserving JSON merge Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> build(opencode): source config-merge.sh from adapter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> feat(install): use oc_config_merge for opencode.json instead of overwrite Source config-merge.sh from install scripts for opencode platform so user keys in opencode.json are preserved on reinstall and update. Fix in-place merge by writing to a temp file before moving to output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Add mcp files to gitignore. * Fix claude-specific references in agents, skills and references * Fix: remove claude-specific reference from hooks. build: add platform_dir and dispatcher_name to all hook wrapper/plugin templates feat(hooks): platform-aware path checks using platform_dir and dispatcher_name from JSON input test: update regression snapshot for platform-aware hook wrappers and scripts * Added interactive platform choice in launchme, and platform auto-detection in updateme. * Fix: remove claude-specific references from documentation * Update documentation to reflect the new platform-agnostic architecture * fix: address Copilot review feedback on PR #32 - tests/run.sh: check source return code, report failures - tests/regression/run.sh: use mktemp + trap cleanup instead of fixed /tmp paths - tests/regression/run.sh: include .mcp.json in regression comparison - tests/regression/take-snapshot.sh: use --platform flag instead of stale scripted input - adapters/opencode/templates/plugin-stub.js.tmpl: include stdout in hook block error message * fix: address Copilot review round 2 - config-merge.sh: reword comment to only promise indentation preservation (not full formatting) - take-snapshot.sh: copy required artifacts explicitly, optional ones with existence check - adapters/lib.sh: document parse_hook_yaml single-trigger limitation * fix: address Copilot review round 3 - adapters/opencode/adapter.sh: replace python3 template substitution with pure bash (while-read loop with case matching), removing python3 dependency - adapters/lib.sh: should_include now falls back to plain YAML key read for files without frontmatter delimiters (fixes hook .yaml exclude: support) * fix: address Copilot review round 4 - scripts/launchme.sh: fix double-dot in FW_DIR_NAME display (basename already includes the dot, e.g. ".claude") - scripts/launchme.sh: replace undefined MCP_ANSWER with check on MCP_DST existence for summary banner --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
112 lines
11 KiB
Markdown
Executable File
112 lines
11 KiB
Markdown
Executable File
# Disclaimers & Legal Notices
|
|
|
|
---
|
|
|
|
## I'm not an expert
|
|
|
|
Let me be upfront: **I am not an expert in agentic platforms.** I'm a PhD researcher who needed help and built something that works for me. This project is an accumulation of personal needs, not a polished product from someone who knows all the best practices.
|
|
|
|
The code might not be optimal. The prompts might not be perfect. The architecture might make a seasoned developer cringe. **And that's okay.** I'm sharing this because I believe it can help other people in my same situation, not because I think it's the definitive way to do things.
|
|
|
|
If you know prompt engineering, agent platforms, or Obsidian better than I do (and chances are you do), **please contribute.** Every PR is welcome. Every suggestion, every critique, every improvement. I want this to get better, and I know it will get better faster with help from people who actually know what they're doing.
|
|
|
|
---
|
|
|
|
## On the health and wellness agents
|
|
|
|
> **This needs to be crystal clear, so I'm going to say it plainly.**
|
|
|
|
The **Food Coach** and **Wellness Guide** agents are **AI-generated output. Nothing more.** They are not medical professionals. They are not licensed therapists. They are not dietitians. They are language models following instructions I wrote based on my own personal needs.
|
|
|
|
**I take absolutely no responsibility for the output of these agents.** Specifically:
|
|
|
|
- The Food Coach agent **does not provide medical advice.** Its meal plans, calorie calculations, and dietary suggestions are AI-generated and may be inaccurate, incomplete, or inappropriate for your specific health situation. **Always consult a real doctor or registered dietitian** before making changes to your diet, especially if you have medical conditions.
|
|
|
|
- The Wellness Guide agent **does not provide therapy.** It offers general emotional support, grounding techniques, and mindfulness exercises, but it is **not a substitute for professional mental health care.** It cannot diagnose anything. It should never be your only source of support. **If you are in crisis, contact a real mental health professional or emergency service immediately.**
|
|
|
|
- The health agents are designed as **personal wellness companions.** Think of them as a structured journal with suggestions, not as healthcare providers. They were built because I personally needed help tracking my nutrition and processing my thoughts between therapy sessions. They helped me. They might help you. But they come with **zero guarantees.**
|
|
|
|
- **No warranty, no liability.** This is an open-source project provided "as is". I am not responsible for any decisions you make based on the output of any agent in this system. Use your own judgment. Consult real professionals for real health decisions.
|
|
|
|
Both health agents are **opt-in** during onboarding. You can use the Crew purely for knowledge management if you prefer.
|
|
|
|
---
|
|
|
|
## On AI models and hallucinations
|
|
|
|
> **This software provides prompts. It does not provide an AI model.**
|
|
|
|
I wrote the instructions that the agents follow. The actual output is generated by the large language model (LLM) running underneath, and I have zero control over what it produces at runtime.
|
|
|
|
**What this means in practice:**
|
|
|
|
- **LLMs are stochastic.** They generate text probabilistically. The same question can get a different answer each time. Sometimes the answer is great. Sometimes it is confidently wrong. This is not a bug in my code. This is how the technology works.
|
|
|
|
- **LLMs hallucinate.** They can and do invent facts, fabricate citations, produce incorrect calculations, and generate plausible-sounding nonsense. If an agent tells you something that matters (a date, a number, a medical claim, a legal statement), **verify it independently.** Do not blindly trust AI-generated text.
|
|
|
|
- **This project is designed and primarily tested with Anthropic's Claude.** Claude has alignment training (RLHF, Constitutional AI) and safety filters that make it behave reasonably within the prompts I wrote. If you swap in a different model (through a fork, a configuration change, or any other means), all bets are off. Models without adequate safety training can produce harmful, offensive, dangerous, or completely unhinged output, and **that is entirely your problem, not mine.**
|
|
|
|
- **Prompt-based safety is best-effort, not a guarantee.** I wrote the agent prompts to include safety boundaries (the Wellness Guide reminds you to seek professional help, the Food Coach tells you to consult a dietitian). But these are instructions to the model, not hard constraints. A model can ignore them. A different model might not follow them at all.
|
|
|
|
- **Even though I tested this myself, I cannot guarantee any quality standard.** I tested these prompts with Claude extensively and they work well for me. But "works well for me" is not a guarantee. The same prompt can produce different output across sessions, model versions, and context windows. Testing shows that the prompts are reasonable under observed conditions. It does not and cannot guarantee consistent results for everyone, every time.
|
|
|
|
- **I take no responsibility for any output generated by any agent, under any circumstances.** Not for hallucinated facts. Not for bad advice. Not for offensive content. Not for anything. You are using a stochastic system and you should treat its output accordingly.
|
|
|
|
---
|
|
|
|
## General disclaimer
|
|
|
|
This project is provided **as is, with no warranty of any kind.** I don't guarantee that it works correctly, that it won't lose your notes, or that the agents will behave as described in every situation. It's a personal project that I'm sharing openly. Use it at your own risk, back up your vault, and **please open an issue** if something goes wrong so we can fix it together.
|
|
|
|
---
|
|
|
|
## On forks and misuse
|
|
|
|
This project was built to help people. That's it. It's meant to support overwhelmed individuals in organizing their lives, their health, and their mental wellbeing.
|
|
|
|
**I take no responsibility for forks, modifications, or derivative works** that use this code for purposes other than its original intent. If someone takes this project and repurposes it to manipulate, deceive, harm, or exploit people in any way, that's on them, not on me. I explicitly condemn any use of this work for malicious purposes, including but not limited to: unauthorized data collection, psychological manipulation, impersonation of medical or mental health professionals, or any form of exploitation.
|
|
|
|
This is a tool for self-care and personal organization. If you fork it, please keep it that way.
|
|
|
|
---
|
|
|
|
## On privacy and data protection (GDPR and applicable laws)
|
|
|
|
> **Read this carefully before using the Postman agent or any feature that accesses external data sources (Gmail, Hey.com, Google Calendar).**
|
|
|
|
**This software is designed exclusively for personal, private use on your own data.**
|
|
|
|
This project can access your email inbox (Gmail via the Google Workspace CLI or MCP connectors, Hey.com via the Hey CLI) and Google Calendar, and saves content from those sources as notes inside your local Obsidian vault. **You are solely responsible for ensuring that your use of this software complies with all applicable privacy and data protection laws**, including but not limited to:
|
|
|
|
- The **EU General Data Protection Regulation (GDPR)**, Regulation (EU) 2016/679
|
|
- The **California Consumer Privacy Act (CCPA)**
|
|
- Any other national or regional data protection legislation applicable to you
|
|
|
|
**Specifically:**
|
|
|
|
- **Do not use this software to process personal data of third parties** (clients, patients, colleagues, employees, or any other individuals) without their explicit, informed consent and a lawful basis under applicable law.
|
|
- **Emails and calendar events may contain personal data of other people.** When the Postman agent reads your inbox and saves content to your vault, that data is stored in plaintext on your local filesystem. You are the data controller for any third-party personal data you cause to be processed this way.
|
|
- **This software does not implement any data minimization, pseudonymization, encryption, retention policies, or data subject rights mechanisms.** If you use it to process personal data of others, you must implement these safeguards yourself.
|
|
- **The author of this software is not a data controller or data processor** with respect to any data you process using this tool. The author has no access to your vault, your emails, your calendar, or any other data you process.
|
|
|
|
**The author provides this software "as is" and accepts no liability whatsoever** for any violation of data protection laws arising from your use of this software, including any fines, penalties, claims, or damages resulting from improper processing of personal data.
|
|
|
|
**If you are unsure whether your intended use complies with applicable law, do not use the email or calendar features, and consult a qualified legal professional.**
|
|
|
|
---
|
|
|
|
## On email and calendar write operations
|
|
|
|
> **Read this carefully if you enable the Google Workspace CLI (`gws`) or Hey CLI (`hey`), which grant the Postman agent read/write access to your email (and calendar, for GWS).**
|
|
|
|
With `gws` and/or `hey` enabled, the Postman agent can **send emails, reply to threads, archive emails, delete emails, modify labels, and mark as seen/unseen** on your behalf. With `gws` specifically, it can also **create/modify/delete Google Calendar events** (Hey CLI does not operate on Google Calendar). This means:
|
|
|
|
- **Emails can be sent from your account.** An email sent by the AI is indistinguishable from one you sent yourself. If the AI misunderstands your intent, drafts an inappropriate response, or hallucinates content, that email goes out with your name on it. Always review drafts before confirming.
|
|
- **Emails can be archived or deleted.** You might miss important emails if the AI archives or trashes them prematurely. Check your Trash and Archive regularly.
|
|
- **Calendar events can be created, modified, or deleted.** Incorrect dates, times, or participants could lead to missed meetings or scheduling conflicts.
|
|
- **Adversarial emails are a real risk.** A malicious email could contain text designed to trick the AI into performing actions you didn't intend — sending a reply, forwarding content, deleting messages, or creating events. The software includes defenses against this (prompt-level security rules, mandatory user confirmation), but **no prompt-based defense is 100% reliable.** The AI model is a stochastic system that may not follow safety instructions in all cases.
|
|
|
|
**The MCP fallback (`.mcp.json`) is read-only by design.** If you want email/calendar access without write risks, use MCP instead of `gws` or `hey`. MCP can read emails, create drafts, and read calendar events, but it cannot send, archive, delete, or modify anything.
|
|
|
|
**I built the confirmation gates and security rules to be as strict as I could.** But I'm not a security expert, and prompt-based security has fundamental limits. **Use write access at your own risk, review everything before confirming, and back up anything you can't afford to lose.**
|