feat(gemini): optimize context caching and TPM usage#220
feat(gemini): optimize context caching and TPM usage#220psklarkins wants to merge 64 commits intomicrosoft:mainfrom
Conversation
Unify the amplifier-claude branch (30 agents, 19 commands, hooks, MCP servers, design philosophy docs) with v2's improved foundation from main (recipes, behaviors, context, branding). Key changes: - Merge 9 agents with foundation improvements (zen-architect, bug-hunter, modular-builder, test-coverage, security-guardian, integration-specialist, post-task-cleanup, content-researcher, analysis-engine) - Strip boilerplate from agent frontmatter, keep model: inherit - Update .mcp.json: remove deprecated browser-use and unused zen servers - Enable all 4 MCP servers (playwright, context7, deepwiki, repomix) - Update .gitignore for Windows reserved names, session artifacts, .data/ - Update README for integrated branch description - Add amplifier-expert agent to FuseCP project - Rewrite 5 global agents with ruthless simplicity 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Integrate Claude Code customizations with Amplifier v2
On Windows, .py and .sh files can't be executed directly as commands. Prefix all hook commands with 'python' or 'bash' so they work on Windows Server without .cmd wrapper scripts. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
fix: add explicit interpreter to hook commands for Windows
Windows Store python stub intercepts 'python' command and shows install prompt instead of running scripts. Use 'uv run' which correctly uses the project's .venv Python managed by uv. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
The $CLAUDE_PROJECT_DIR env var was not being expanded by uv on Windows, causing all hooks to fail with "path not found". Hooks run from the project directory so relative paths work correctly. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Syncs local Amplifier-integrated superpowers files into Claude Code's plugin cache on each session start, ensuring marketplace updates don't overwrite our modifications. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
All 23 Amplifier agent files had single-line descriptions containing <example> XML tags that broke Claude Code's YAML frontmatter parser, causing "Missing required name field" errors on session start. Converted to block scalar (description: |) format matching the 7 working design agents. Preserved tools and model fields. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Move MEMORY_SYSTEM_ENABLED check and module import before HookLogger initialization. When modules don't exist (MemoryStore, ClaimValidator), exit silently without writing to stderr - which Claude Code surfaces as "PostToolUse:Edit hook error". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Integrate Gemini-developed git-notes memory tools into Claude Code's hook system for cross-machine state sharing between Claude Code and Gemini/OpenCode platforms. - Add SessionStart hook (hook_memory_sync.py) to fetch git notes - Add PreCompact push to sync notes before context compaction - Add Python memory wrapper (memory.py) for recall/memorize/snapshot - Register memory sync hook in settings.json - Include design doc and implementation plan 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Design to reduce main context consumption from 70-103k tokens (35-52%) to 25-40k tokens (13-20%) before implementation starts. Three priority tiers: - P1: Remove always-loaded design @imports, deduplicate AGENTS.md (~17k saved) - P2: Delegate brainstorming context gathering, writing-plans, and spec writing to subagents instead of running in main context (~18-45k saved) - P3: Add context budget guardrails to all 30 agent definitions, with specific limits for 7 high-risk agents 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
12 tasks across 2 repos (amplifier + superpowers), 3 priority tiers: - P1 (Tasks 1-3): Remove design @imports, deduplicate AGENTS.md, archive DISCOVERIES - P2 (Tasks 4-7): Context scout subagent, delegate spec/plan writing, output discipline - P3 (Tasks 8-10): Universal context budget for 30 agents, specific limits for 7 high-risk - Verification (Tasks 11-12): Token savings, skill changes, agent guardrails, cleanup Also aligned spec subagent_type references with 449100e pattern (general-purpose). 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Design files (DESIGN-PHILOSOPHY, DESIGN-PRINCIPLES, DESIGN-FRAMEWORK, DESIGN-VISION) are now loaded on demand by design agents only. Saves ~14,000 tokens per session for non-design tasks. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Implementation Philosophy and Modular Design Philosophy sections were duplicated from ai_context/ files already loaded via CLAUDE.md @imports. Replaced with references. Saves ~2,000 tokens per session. Reduced file from 757 to 424 lines. All other sections preserved: - Git commit message guidelines - Sub-agent strategy - Incremental processing pattern - Partial failure handling - Decision tracking system - Configuration management - Response authenticity guidelines - Zero-BS principle - Build/test/lint commands - Code style and formatting - Dev environment tips - Testing instructions - Documentation guidelines 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Moved DevContainer Setup, pnpm Global Bin, and OneDrive/Cloud Sync entries to DISCOVERIES-archive.md. Kept Tool Generation Patterns and LLM Response Handling (still actively relevant). Saves ~1,000 tokens. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Every agent now has file read limits (max 15), output size targets (max 300 lines), stop conditions (10 reads without progress), and no-replan instructions. Prevents agent context window exhaustion. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
content-researcher: max 20 scan, 5 deep-read analysis-engine: mode-specific caps (30/3/5) bug-hunter: 10 reads before hypothesis, 3 cycles max security-guardian: require explicit scope, no unbounded scans post-task-cleanup: summary review for >15 file changesets amplifier-cli-architect: lazy-load references modular-builder: return paths+summaries for large files 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…loading Design agents now read DESIGN-PHILOSOPHY, DESIGN-PRINCIPLES, DESIGN-FRAMEWORK, and DESIGN-VISION on demand. These files were removed from the always-loaded @import chain in Task 1 to save ~14,000 tokens per non-design session. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Reviewed: AGENTS.md correctly deduplicated (424 lines), all 30 agents have context budget, 7 high-risk agents have specific limits, 7 design agents have Required Context.
Add max_turns budgets, resume protocol, and task decomposition guidelines to prevent subagents from exhausting their context windows. Addresses two observed failure modes: abrupt stops and summary-mode fallback under token pressure. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Clarify Task tool resume parameter syntax and add context that referenced skills are from the superpowers plugin. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…tocol docs: add subagent resilience protocol
Detects Claude Code (C:/claude/) vs Gemini/OpenCode (C:/Przemek/) by checking which root directory exists. Exports IS_CLAUDE_CODE, IS_OPENCODE, AMPLIFIER_ROOT, and SUPERPOWERS_FALLBACK constants for use by all hooks instead of hardcoded paths. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Replace hardcoded C:/claude/superpowers fallback paths in memory.py, hook_memory_sync.py, and hook_precompact.py with SUPERPOWERS_FALLBACK from platform_detect module. Both Claude Code and Gemini machines now resolve paths correctly from the same codebase. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…ctor - Refactor export_transcript() to accept pre-parsed full_entries, avoiding double I/O when entries are already parsed - Extract parse_transcript_entries() as reusable function - Add GoldPrefixCompactor class for Gemini context cache optimization, gated with IS_OPENCODE (inactive on Claude Code) - Improve summarize_stable() to include user message summaries instead of just tool counts - Preserve TimeoutExpired handler in push_memory_notes() 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Add platform-aware context formatting in session start hook: - FROZEN ZONE / CHURN ZONE labels only active on OpenCode (Gemini context caching optimization) - Claude Code gets clean "Relevant Context" / "Session Environment" headers without zone labels - Add dynamic session context (date, platform, cwd) for both platforms — useful environment info without cache-specific noise 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Creates scripts/sync-agents-to-opencode.py that generates agents/*/SKILL.md from canonical .claude/agents/*.md definitions. Adds recommended_model (pro/flash) and tools frontmatter fields required by OpenCode. Keeps .claude/agents/ as single source of truth. Run: python scripts/sync-agents-to-opencode.py [--dry-run] 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Documents the Gold Prefix strategy for Gemini context caching, platform detection architecture, hook changes with gating, and agent sync approach. Covers both Claude Code and OpenCode perspectives. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…ctor - Refactor export_transcript() to accept pre-parsed full_entries, avoiding double I/O when entries are already parsed - Extract parse_transcript_entries() as reusable function - Add GoldPrefixCompactor class for Gemini context cache optimization, gated with IS_OPENCODE (inactive on Claude Code) - Improve summarize_stable() to include user message summaries instead of just tool counts - Preserve TimeoutExpired handler in push_memory_notes() 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Add platform-aware context formatting in session start hook: - FROZEN ZONE / CHURN ZONE labels only active on OpenCode (Gemini context caching optimization) - Claude Code gets clean "Relevant Context" / "Session Environment" headers without zone labels - Add dynamic session context (date, platform, cwd) for both platforms — useful environment info without cache-specific noise 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Creates scripts/sync-agents-to-opencode.py that generates agents/*/SKILL.md from canonical .claude/agents/*.md definitions. Adds recommended_model (pro/flash) and tools frontmatter fields required by OpenCode. Keeps .claude/agents/ as single source of truth. Run: python scripts/sync-agents-to-opencode.py [--dry-run] 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Documents the Gold Prefix strategy for Gemini context caching, platform detection architecture, hook changes with gating, and agent sync approach. Covers both Claude Code and OpenCode perspectives. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
feat: platform-aware hooks for Claude Code + Gemini dual-machine support
Create .claude/AGENTS_CATALOG.md with all 30 specialized agents organized by category (Core Development, API & Data, Design, Knowledge & Analysis, Meta). Includes dispatch keywords, review agent mapping, model tier mapping, and selection rules. This file is referenced by AGENTS.md but was previously missing. It serves as the authoritative catalog for agent selection during task delegation. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docs: add agents catalog reference
Comprehensive design for migrating all 14 Superpowers workflow skills into native Amplifier commands. Eliminates fork maintenance burden, resolves command redundancy/confusion, and enables full integration with Amplifier's 30 specialized agents. Key outcomes: - 14 skills → 13 commands + 1 embedded config - 27 total commands → 24 unified commands - Zero external plugin dependencies - 100% agent integration (vs 4/14 currently) Migration organized in 4 phases: 1. Core Pipeline (brainstorm/plan/execute) 2. Development Discipline (debug/tdd/verify) 3. Git & Review Workflow (worktree/branch/review) 4. Meta & Cleanup (write-skill + dependency removal) Includes detailed transformation rules, agent allocation, test plan, acceptance criteria, and rollback strategy. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Comprehensive plan for migrating all 14 superpowers workflow skills to native Amplifier commands: - 13 new commands (brainstorm, subagent-dev, parallel-agents, debug, tdd, verify, worktree, finish-branch, request-review, receive-review, write-skill) - 2 enriched stubs (create-plan, execute-plan) - 1 embedded in CLAUDE.md (using-superpowers meta content) Plan organized into 4 chunks: - Chunk 1: Core Pipeline (brainstorm → plan → execute) - Chunk 2: Development Discipline (debug, tdd, verify) - Chunk 3: Git & Review Workflow (worktree, finish-branch, reviews) - Chunk 4: Meta & Cleanup (write-skill, infrastructure updates) Each task includes specific agent assignment, transformation rules, verification commands, and commit messages. Cross-reference mapping ensures all superpowers: references are replaced with /command-name format. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…k 1) Migrates 5 Superpowers workflow skills to native .claude/commands/: - brainstorm.md (163 lines) + visual-companion.md (198 lines) - create-plan.md enriched from 15→228 lines - execute-plan.md enriched from 23→84 lines - subagent-dev.md (613 lines, 3 prompt templates inlined) - parallel-agents.md (167 lines) All commands verified: zero superpowers:, CLAUDE_PLUGIN_ROOT, or recall.js references. Full methodology preserved with native agent dispatch. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…unk 2) Migrates 3 methodology skills to native .claude/commands/: - debug.md (369 lines) — systematic debugging with bug-hunter dispatch - tdd.md (454 lines) — TDD methodology with test-coverage dispatch - verify.md (142 lines) — verification-before-completion discipline Supporting techniques (root-cause-tracing, defense-in-depth, condition-based-waiting) inlined into debug.md. All verified clean. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nk 3) Migrates 4 workflow skills to native .claude/commands/: - worktree.md (201 lines) — git worktree isolation practices - finish-branch.md (203 lines) — branch completion with post-task-cleanup - request-review.md (205 lines) — formal review with zen-architect dispatch - receive-review.md (222 lines) — review feedback handling All verified clean: zero banned references, methodology preserved. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Migrate writing-skills → /write-skill (626 lines, command authoring with TDD) - Add Amplifier Commands section to CLAUDE.md (usage guidance, priority order) - Update AGENTS.md cross-references to native /command-name format - Fix stale "finishing-a-development-branch skill" reference in execute-plan.md Migration summary: - 14 command files created (3,875 total lines) - 2 existing commands enriched (create-plan, execute-plan) - 1 meta skill embedded in CLAUDE.md (using-superpowers) - 0 superpowers: references in commands, CLAUDE.md, or AGENTS.md 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Three minor wording fixes caught by final review: - brainstorm.md: "the /create-plan skill comes first" → simplified - create-plan.md: "from this skill" → "from this command" - execute-plan.md: "this skill executes" → "this command executes" 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Migrate Superpowers skills to native Amplifier commands
The superpowers plugin sync hook is no longer needed now that all 14 skills have been migrated to native Amplifier commands. The sync script copied modified skills into the plugin cache, which is unnecessary with native .claude/commands/ files. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
7 of 8 agent-dispatching commands were missing max_turns parameters, risking the context exhaustion failures documented in DISCOVERIES.md. Added turn budgets from AGENTS.md and resume protocol guidance. Commands updated: brainstorm, subagent-dev, parallel-agents, ultrathink-task, write-skill 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Strip GoldPrefixCompactor class, Frozen/Churn zone labels, and platform_detect.py from main branch. This code is preserved on feature/gemini-opencode branch for future Gemini deployments. Changes: - Remove GoldPrefixCompactor class from hook_precompact.py (~125 lines) - Remove IS_OPENCODE zone labels from hook_session_start.py - Remove Gold Prefix analysis block from hook_precompact.py main() - Replace platform_detect imports with inline SUPERPOWERS_FALLBACK constant 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Reverting the Gemini code separation (6080795). Since both platforms are used daily, maintaining a separate branch creates unacceptable drift. All Gemini-specific code is gated by IS_OPENCODE and never executes on the Claude Code machine. Restored: - platform_detect.py — runtime Claude Code vs OpenCode detection - GoldPrefixCompactor — Gemini context caching optimization - FROZEN ZONE/CHURN ZONE labels — gated by IS_OPENCODE - sync-agents-to-opencode.py — agent format converter - Context caching design spec Architecture decision: one codebase, runtime-gated platform features. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Comprehensive documentation for the Claude Code + OpenCode/Gemini runtime-gated architecture. Covers platform detection, Gold Prefix caching, agent sync, maintenance guidelines, and the architectural decision rationale. Updated: design spec → full dual-platform reference Added: DISCOVERIES.md entry for branch vs runtime gating decision 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
…er approach migration
…ion control and ignore it. Remove orphan amplifier-expert agent.
|
@psklarkins please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
Contributor License AgreementContribution License AgreementThis Contribution License Agreement (“Agreement”) is agreed to by the party signing below (“You”),
|
Review: feat(gemini): optimize context caching and TPM usageVerdict: Request Changes — Good concept, needs cleanup before merge. What Works Well
Issues to Address1. Memory rendering logic duplicated (High) Fix: Extract a shared helper function: def format_memories(search_results, unique_recent, heading_level="###"):
parts = []
if search_results:
parts.append(f"{heading_level} Relevant Memories")
for result in search_results[:3]:
parts.append(f"- **{result.memory.category}** (relevance: {result.score:.2f}): {result.memory.content}")
if unique_recent:
parts.append(f"\n{heading_level} Recent Context")
for mem in unique_recent[:2]:
parts.append(f"- {mem.category}: {mem.content}")
return partsBoth branches call this with different heading levels. Single source of truth. 2. Session environment block also duplicated (Low) 3. <!-- OpenCode/Gemini only: Stable prefix for context caching.
Read by hook_session_start.py inside IS_OPENCODE guard.
Not used on Claude Code. -->4. Plan doc references machine-specific paths (Low) SummaryThe Frozen Zone / Churn Zone architecture is well-motivated. The defensive improvements are welcome. Fix the code duplication (extract shared helpers) and add context comments to the Gemini-only files, and this is good to merge. 🤖 Generated with Amplifier |
Changes ImplementedAddressed all review feedback:
Ready for re-review. |
Re-Review: commit 9281231 addresses all feedbackAll 4 findings from the initial review have been addressed:
Verification
Verdict: APPROVE — Ready to merge. 🤖 Generated with Amplifier |
Summary
This PR implements critical context caching and TPM optimizations for Gemini on OpenCode.
hook_session_start.pyto isolate a stable "Frozen Zone" (Identity, Mandates) from dynamic "Churn Zone" (Date, Memory). This ensures the context prefix remains bit-for-bit identical across sessions, maximizing cache hits.sync-agents-to-opencode.pyto bake the Frozen Zone into every generatedSKILL.md. Now subagents share the same prefix as the main session, starting with a "Warm Cache" instead of cold.model: flashfor high-volume implementation agents (modular-builder,test-coverage, etc.) in OpenCode generation to prevent "Pro" model rate limit exhaustion during parallel dispatch.Test Plan
hook_session_start.pyoutputs Frozen Zone first and Churn Zone last.sync-agents-to-opencode.pyinjects Frozen Zone into generated skills.modular-builderskill maps toflashmodel.