
Claude Skills by tools-only
github.com/tools-onlyuv run python -c " from pathlib import Path from tunacode.core.agents.agent_components.agent_config import load_system_prompt prompt = load_system_prompt(Path('src/tunacode')) assert '{{USER_INSTRUCTIONS}}' in prompt assert '{{CWD}}' not in prompt # Should be resolved print('OK') " ``` - `tests/unit/core/test_prompting_engine.py` - KEEP, tests `resolve_prompt()` which is unchanged - No new tests needed for simple file read operation ---
Delete the disabled `research_codebase` sub-agent feature completely from the codebase. This is a cleanup task—the feature is already disabled in production (commented out in agent_config.py).
self.mount(widget, before=self._current_stream) elif self._insertion_anchor is not None: self.mount(widget, before=self._insertion_anchor) else: self.mount(widget) if self._auto_scroll: self.scroll_end(animate=False) ``` **Acceptance Test:** Tool panel arriving after `end_stream()` appears before the finalized agent response, not at bottom. **Dependencies:** Task 1 **Milestone:** M2 --- **Summary:** Reset anchor when starting a new stream to prevent stale positioning. **Files:** `src/tunacode...
**SINGULAR FOCUS:** Eliminate all 24 direct imports from `tunacode.utils` in `tunacode.core` by either: 1. Moving modules to foundation layers (`configuration/`, `types/`) 2. Inlining tiny utilities 3. Re-routing through Layer 2 (`tools/`)
Eliminate all lateral coupling violations between Layer 2 peer modules (`tools`, `indexing`, `lsp`, `infrastructure`). These modules should only depend downward to foundation layers (`utils`, `types`, `configuration`), never sideways to each other.
grep -r "from tunacode.indexing" src/tunacode/ grep -r "CodeIndex" src/tunacode/ grep -r "IndexingService" src/tunacode/ uv run pytest grep -r "indexing" docs/ | grep -v ".git" ```
- **ONE outcome:** Replace dual-display streaming architecture (RichLog + streaming_output Static) with a unified ChatContainer using individual MessageWidget components that stream in-place.
Remove the direct dependency on `pydantic-ai` from `src/tunacode/tools/`. Tools should raise domain-specific exceptions, not framework-specific exceptions.
Refactor 4 D-grade complexity hotspots to improve maintainability and reduce cognitive load. Target: reduce McCabe complexity scores below threshold (25) for all functions.
Make ESC handling clearer and more maintainable by extracting ESC logic into a dedicated, independent module under `src/tunacode/ui/esc/`. The ESC node (handler) should be independent of app internals and depend only on explicit inputs passed in.
Reduce message canonicalization overhead in `run_cleanup_loop()` by caching canonical messages per iteration: 1N conversions when no mutations occur, and 2N conversions in iterations that mutate messages (recompute after mutation).
Reduce pruning overhead in `src/tunacode/core/agents/resume/prune.py` by eliminating redundant token estimation, while preserving current pruning behavior.
**Date:** 2026-01-26 **Owner:** agent **Phase:** Research
**Date:** 2026-01-26 **Owner:** tunacode **Phase:** Research **git_commit:** b6eb3990
**Date:** 2026-01-26 17:34:12 **Owner:** Claude (research agent) **Phase:** Research **Git commit:** 48071e33c62516b5a9018bfb2b20c42a48215640 **Git branch:** master **Repo:** alchemiststudiosDOTai/tunacode ---
**Date:** 2026-01-26 **Owner:** Claude (research agent) **Phase:** Research **Git commit:** 84ce4ff3 **Git branch:** master **Repo:** alchemiststudiosDOTai/tunacode ---
**Date:** 2026-01-26 **Owner:** Agent **Phase:** Research
**Date:** 2026-01-27 **Owner:** claude-agent **Phase:** Research **Issue:** https://github.com/alchemiststudiosDOTai/tunacode/issues/311
**Date:** 2026-01-27 **Owner:** Claude (research agent) **Phase:** Research **Issue:** [#313 Layer violation: core → utils (18 imports, skips Layer 2)](https://github.com/alchemiststudiosDOTai/tunacode/issues/313)
**Date:** 2026-01-27 **Owner:** claude-agent **Phase:** Research **Git Commit:** 1de46c7bba8a7a322fc00b878eb918cf224bd9ae
**Date:** 2026-01-27 17:28:01 **Owner:** agent **Phase:** Research
**Date:** 2026-01-27 17:45:00 **Owner:** Claude **Phase:** Research **Git Commit:** 601a7c1c **Last Updated:** 2026-01-27 17:45:00
**Date:** 2026-01-27 22:46:56 **Owner:** claude **Phase:** Research **git_commit:** 8247e85e85f4cead37426260bc819b932472a90a
**Date:** 2026-01-28 **Owner:** claude-opus **Phase:** Research
**Date:** 2026-01-28 **Owner:** claude **Phase:** Research
**Date:** 2026-01-28 **Owner:** agent **Phase:** Research
**Date:** 2026-02-01 **Owner:** agent **Phase:** Research **Git Commit:** 35aa99e2
**Date:** 2026-02-01 **Phase:** Research
**Date:** 2026-02-02 **Owner:** agent **Phase:** Research
**Date:** 2026-02-02 20:47:34 **Owner:** Claude Code (Research) **Phase:** Research **Git Commit:** 4fa9eb15d09e1263d0bd443f4ac7469b52d9904b **Last Updated:** 2026-02-02 20:47:34 **Last Updated By:** Claude Code (Research) **Tags:** [performance, bottlenecks, agent, tools, streaming]
**Date:** 2026-02-02 **Phase:** Research **Branch:** bottlenecks
**Date:** 2026-01-31 **Phase:** Research
**Date:** 2026-02-01 **Phase:** Research
``` ┌─────────────────────┐ │ User Request │ └──────────┬──────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ │ RequestOrchestrator │ │ (core/agents/main.py)
Global constants, UI text, and magic strings
Context window management and tool output pruning
> **Status**: Canonicalized. Cleanup rules are derived from canonical messages and applied consistently.
Core facade for system path helpers used by the UI
Language Server Protocol client for diagnostics
Complete guide for configuring Language Server Protocol in this Neovim setup.
Textual-based TUI interface for TunaCode REPL
Centralized tool output limits with cascading defaults
Core application package with constants, exceptions, and entry points
Agent orchestration, state management, and prompting system
Agent tool implementations with retry logic
<role> You are "TunaCode", a Staff-level software developer agent inside the user's terminal. You are not a chatbot. You are an operational agent: you search, read, write, and execute code. </role> <context> Think step by step. Be direct, neutral, and concise. Follow best practices. Fail fast and loud. Avoid hacks and shims. Ask clarifying questions until the objective is unambiguous. </context> <tools> Your tools are defined by JSON schemas attached to this conversation. - **discover** -- Na...
<role> You are "TunaCode", a senior Staff software developer AI assistant operating inside the user's terminal. You are not a chatbot. You are an operational, experienced developer agent with tools. </role> <context> Always think step byt step. Stay direct, neutral, and concise. Answer in natural, human-like prose. Use best practices. Avoid hacks and shims. Fail fast and loud. Ask clarifying questions until the objective is explicit. </context> <tools> Available tools: glob, grep, list_dir, ...
<role> You are "TunaCode", a Staff-level software developer agent inside the user's terminal. You are not a chatbot. You are an operational agent: you search, read, write, and execute code. </role> <context> Think step by step. Be direct, neutral, and concise. Follow best practices. Fail fast and loud. Avoid hacks and shims. Ask clarifying questions until the objective is unambiguous. </context> <tools> Your tools are defined by JSON schemas attached to this conversation. - **discover** -- Na...
All type definitions used in pydantic-deep.
Use built-in named and compound types. In Swift, there are two kinds of types: named types and compound types. A *named type* is a type that can be given a particular name when it's defined. Named types include classes, structures, enumerations, and protocols. For example, instances of a user-defined class named `MyClass` have the type `MyClass`. In addition to user-defined named types, the Swift standard library defines many commonly used named types, including those that represent arrays, d...