{"owner":"dbcli","repo":"mycli","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":1741,"categories":["root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# Mycli\n\nRich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.\n\n## Project Structure\n\n    /                                                     # repository root\n    ├── .github/                                          # GitHub Actions and configuration\n    ├── pyproject.toml                                    # project configuration\n    ├── doc/                                              # documentation\n    ├── doc/cookbook.md                                   # recipes for how to configure and use mycli\n    ├── doc/key_bindings.md                               # documentation of key binding behaviors\n    ├── doc/known_bugs.md                                 # documentation of known bugs and limitations\n    ├── doc/llm.md                                        # documentation on how to use LLM features\n    ├── doc/transforms.md                                 # documentation on how to use dataframe transform/plot features\n    ├── doc/screenshots/                                  # screenshots for documentation\n    ├── mycli/                                            # application source\n    ├── mycli/__init__.py                                 # provides version number\n    ├── mycli/app_state.py                                # `AppStateMixin` application state mixin and related functions\n    ├── mycli/cli_runner.py                               # connects and dispatches main modes based on CLI arguments\n    ├── mycli/client_commands.py                          # special commands which must be registered separately\n    ├── mycli/client_connection.py                        # `ClientConnectionMixin` mixin for establishing the database connection\n    ├── mycli/client_query.py                             # `ClientQueryMixin` mixin for running queries and refreshing completions\n    ├── mycli/client.py                                   # the `MyCli` \"god class\"\n    ├── mycli/compat.py                                   # OS compatibility helpers\n    ├── mycli/config.py                                   # configuration file readers and utilities\n    ├── mycli/constants.py                                # shared constants\n    ├── mycli/main.py                                     # processes CLI arguments\n    ├── mycli/main_modes/                                 # main execution paths\n    ├── mycli/main_modes/batch.py                         # `--batch` mode\n    ├── mycli/main_modes/checkup.py                       # `--checkup` mode\n    ├── mycli/main_modes/completions.py                   # `--completions` mode\n    ├── mycli/main_modes/execute.py                       # `--execute` mode\n    ├── mycli/main_modes/list_dsn.py                      # `--list-dsn` mode\n    ├── mycli/main_modes/repl.py                          # interactive REPL mode\n    ├── mycli/myclirc                                     # project-level configuration file\n    ├── mycli/output.py                                   # `OutputMixin` mixin for feedback and output of query results\n    ├── mycli/packages/                                   # application packages\n    ├── mycli/packages/completion/completion_engine.py    # implementation of completion suggestions\n    ├── mycli/packages/completion/completion_refresher.py # populates a `SQLCompleter` object in a background thread\n    ├── mycli/packages/completion/schema_prefetcher.py    # background prefetcher for multi-schema auto-completion\n    ├── mycli/packages/completion/sql_completer.py        # finds SQL completion candidates\n    ├── mycli/packages/credentials/password_sources.py    # password sources and precedence\n    ├── mycli/packages/dataframes/completion.py           # completions for `.|` transforms\n    ├── mycli/packages/dataframes/transform.py            # implements `.|` transforms\n    ├── mycli/packages/execution/background_runner.py     # run queries in the background, with query state and timing updates\n    ├── mycli/packages/execution/sql_execute.py           # `SQLExecute` class and friends\n    ├── mycli/packages/integrations/                      # integrations with fzf, Boundary, Kubernetes, macOS, OpenSSH, and Vault\n    ├── mycli/packages/prompt_toolkit/fzf_history.py      # uses fzf integration to serach the prompt_toolkit history\n    ├── mycli/packages/prompt_toolkit/history.py          # extends the prompt_toolkit history class\n    ├── mycli/packages/prompt_toolkit/key_bindings.py     # prompt_toolkit key bindings\n    ├── mycli/packages/prompt_toolkit/multiline.py        # prompt_toolkit multiline input\n    ├── mycli/packages/prompt_toolkit/style.py            # prompt_toolkit (and Pygments) styles\n    ├── mycli/packages/prompt_toolkit/toolbar.py          # prompt_toolkit bottom toolbar\n    ├── mycli/packages/prompt_toolkit/utils.py            # general utility functions for prompt_toolkit\n    ├── mycli/packages/pygments/mycli_lexer.py            # extends `MySqlLexer` from Pygments\n    ├── mycli/packages/redirection/                       # implementation of shell-style redirects\n    ├── mycli/packages/special_commands/                  # implementation of mycli special commands\n    ├── mycli/packages/sql_result/sql_result.py           # the `SQLResult` dataclass for holding responses\n    ├── mycli/packages/tabular_output/                    # extends cli_helper with additional output formats\n    ├── mycli/packages/utils/batch_utils.py               # utilities for `--batch` mode\n    ├── mycli/packages/utils/cli_utils.py                 # utilities for parsing CLI arguments\n    ├── mycli/packages/utils/interactive_utils.py         # utilities for confirming on destructive statements\n    ├── mycli/packages/utils/key_binding_utils.py         # handlers for key bindings and related special commands\n    ├── mycli/packages/utils/keyring_utils.py             # saved credential utilities\n    ├── mycli/packages/utils/path_utils.py                # utilities for files, including completion suggestions\n    ├── mycli/packages/utils/sql_utils.py                 # utilities for parsing SQL statements\n    ├── mycli/packages/utils/string_utils.py              # generic string utilities\n    ├── mycli/resources/completions/                      # shell completions for CLI interface\n    ├── mycli/types.py                                    # shared types\n    ├── mycli_test/features/                              # behave tests\n    ├── mycli_test/myclirc                                # mycli configuration used for tests\n    ├── mycli_test/mylogin.cnf                            # `mylogin.cnf` example used for tests\n    ├── mycli_test/pytests/                               # pytest tests\n    ├── mycli_test/pytests/conftest.py                    # pytest configuration\n    └── mycli_test/utils.py                               # shared utilities for tests\n\n## Development\n\n### Python\n\n#### Python Dependency Management\n\nThis repo uses `uv` for dependency management. **Always** prefix Python\ncommands with `uv run`.  Example:\n\n```bash\nenv -u PYTHONPATH uv run -- python script.py\n```\n\n#### Python Typing\n\nThis repo uses type annotations which are checked by `mypy`.  **Always** add\ntype annotations, and always check new code with `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive script.py`.\n\nUse lower-case type annotations such as `tuple`, not upper-case type\nannotations such as `Tuple`.\n\nUse `Type | None` instead of `Optional[Type]`.\n\n#### Python Testing\n\nTests are coordinated by `tox`, and include both `pytest` and `behave` tests.\nTo run the full test suite, execute `env -u PYTHONPATH uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.11 through Python 3.15.\nCompatibility with Python 3.9 is not needed.  Compatibility with Python\n3.10 is not needed.\n\n#### Python Style\n\nImport style: prefer `from package import name` over `import package.name as name`.\n\nQuoting style: prefer single quotes for new code, but do not remove double quotes\nfrom existing code.\n\n#### Python Environment\n\n * Package manager: `uv` (not pip)\n * Formatter: `env -u PYTHONPATH uv run -- ruff format`\n * Linter: `env -u PYTHONPATH uv run -- ruff check`\n * Type checker: `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive`\n\n### Git Workflows\n\n#### Git Commit Messages\n\n * Use the present tense.\n * Keep the first line under 50 characters in length.\n * Keep the second line blank.\n * Keep all other lines under 72 characters in length.\n * Reference issue numbers when available.\n\n#### Generating PRs\n\nWhen generating a PR, follow the instructions in `.github/PULL_REQUEST_TEMPLATE.md`:\n\n * Add new author names to `mycli/AUTHORS.txt`.\n * Add a new entry to `changelog.md`.\n\n### Code Comments\n\nKeep comments concise and direct.  Use full sentences, ending with a period.\n\n### See Also\n\nSee also the file `CONTRIBUTING.md`.\n"},"files":{"AGENTS.md":"# Mycli\n\nRich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.\n\n## Project Structure\n\n    /                                                     # repository root\n    ├── .github/                                          # GitHub Actions and configuration\n    ├── pyproject.toml                                    # project configuration\n    ├── doc/                                              # documentation\n    ├── doc/cookbook.md                                   # recipes for how to configure and use mycli\n    ├── doc/key_bindings.md                               # documentation of key binding behaviors\n    ├── doc/known_bugs.md                                 # documentation of known bugs and limitations\n    ├── doc/llm.md                                        # documentation on how to use LLM features\n    ├── doc/transforms.md                                 # documentation on how to use dataframe transform/plot features\n    ├── doc/screenshots/                                  # screenshots for documentation\n    ├── mycli/                                            # application source\n    ├── mycli/__init__.py                                 # provides version number\n    ├── mycli/app_state.py                                # `AppStateMixin` application state mixin and related functions\n    ├── mycli/cli_runner.py                               # connects and dispatches main modes based on CLI arguments\n    ├── mycli/client_commands.py                          # special commands which must be registered separately\n    ├── mycli/client_connection.py                        # `ClientConnectionMixin` mixin for establishing the database connection\n    ├── mycli/client_query.py                             # `ClientQueryMixin` mixin for running queries and refreshing completions\n    ├── mycli/client.py                                   # the `MyCli` \"god class\"\n    ├── mycli/compat.py                                   # OS compatibility helpers\n    ├── mycli/config.py                                   # configuration file readers and utilities\n    ├── mycli/constants.py                                # shared constants\n    ├── mycli/main.py                                     # processes CLI arguments\n    ├── mycli/main_modes/                                 # main execution paths\n    ├── mycli/main_modes/batch.py                         # `--batch` mode\n    ├── mycli/main_modes/checkup.py                       # `--checkup` mode\n    ├── mycli/main_modes/completions.py                   # `--completions` mode\n    ├── mycli/main_modes/execute.py                       # `--execute` mode\n    ├── mycli/main_modes/list_dsn.py                      # `--list-dsn` mode\n    ├── mycli/main_modes/repl.py                          # interactive REPL mode\n    ├── mycli/myclirc                                     # project-level configuration file\n    ├── mycli/output.py                                   # `OutputMixin` mixin for feedback and output of query results\n    ├── mycli/packages/                                   # application packages\n    ├── mycli/packages/completion/completion_engine.py    # implementation of completion suggestions\n    ├── mycli/packages/completion/completion_refresher.py # populates a `SQLCompleter` object in a background thread\n    ├── mycli/packages/completion/schema_prefetcher.py    # background prefetcher for multi-schema auto-completion\n    ├── mycli/packages/completion/sql_completer.py        # finds SQL completion candidates\n    ├── mycli/packages/credentials/password_sources.py    # password sources and precedence\n    ├── mycli/packages/dataframes/completion.py           # completions for `.|` transforms\n    ├── mycli/packages/dataframes/transform.py            # implements `.|` transforms\n    ├── mycli/packages/execution/background_runner.py     # run queries in the background, with query state and timing updates\n    ├── mycli/packages/execution/sql_execute.py           # `SQLExecute` class and friends\n    ├── mycli/packages/integrations/                      # integrations with fzf, Boundary, Kubernetes, macOS, OpenSSH, and Vault\n    ├── mycli/packages/prompt_toolkit/fzf_history.py      # uses fzf integration to serach the prompt_toolkit history\n    ├── mycli/packages/prompt_toolkit/history.py          # extends the prompt_toolkit history class\n    ├── mycli/packages/prompt_toolkit/key_bindings.py     # prompt_toolkit key bindings\n    ├── mycli/packages/prompt_toolkit/multiline.py        # prompt_toolkit multiline input\n    ├── mycli/packages/prompt_toolkit/style.py            # prompt_toolkit (and Pygments) styles\n    ├── mycli/packages/prompt_toolkit/toolbar.py          # prompt_toolkit bottom toolbar\n    ├── mycli/packages/prompt_toolkit/utils.py            # general utility functions for prompt_toolkit\n    ├── mycli/packages/pygments/mycli_lexer.py            # extends `MySqlLexer` from Pygments\n    ├── mycli/packages/redirection/                       # implementation of shell-style redirects\n    ├── mycli/packages/special_commands/                  # implementation of mycli special commands\n    ├── mycli/packages/sql_result/sql_result.py           # the `SQLResult` dataclass for holding responses\n    ├── mycli/packages/tabular_output/                    # extends cli_helper with additional output formats\n    ├── mycli/packages/utils/batch_utils.py               # utilities for `--batch` mode\n    ├── mycli/packages/utils/cli_utils.py                 # utilities for parsing CLI arguments\n    ├── mycli/packages/utils/interactive_utils.py         # utilities for confirming on destructive statements\n    ├── mycli/packages/utils/key_binding_utils.py         # handlers for key bindings and related special commands\n    ├── mycli/packages/utils/keyring_utils.py             # saved credential utilities\n    ├── mycli/packages/utils/path_utils.py                # utilities for files, including completion suggestions\n    ├── mycli/packages/utils/sql_utils.py                 # utilities for parsing SQL statements\n    ├── mycli/packages/utils/string_utils.py              # generic string utilities\n    ├── mycli/resources/completions/                      # shell completions for CLI interface\n    ├── mycli/types.py                                    # shared types\n    ├── mycli_test/features/                              # behave tests\n    ├── mycli_test/myclirc                                # mycli configuration used for tests\n    ├── mycli_test/mylogin.cnf                            # `mylogin.cnf` example used for tests\n    ├── mycli_test/pytests/                               # pytest tests\n    ├── mycli_test/pytests/conftest.py                    # pytest configuration\n    └── mycli_test/utils.py                               # shared utilities for tests\n\n## Development\n\n### Python\n\n#### Python Dependency Management\n\nThis repo uses `uv` for dependency management. **Always** prefix Python\ncommands with `uv run`.  Example:\n\n```bash\nenv -u PYTHONPATH uv run -- python script.py\n```\n\n#### Python Typing\n\nThis repo uses type annotations which are checked by `mypy`.  **Always** add\ntype annotations, and always check new code with `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive script.py`.\n\nUse lower-case type annotations such as `tuple`, not upper-case type\nannotations such as `Tuple`.\n\nUse `Type | None` instead of `Optional[Type]`.\n\n#### Python Testing\n\nTests are coordinated by `tox`, and include both `pytest` and `behave` tests.\nTo run the full test suite, execute `env -u PYTHONPATH uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.11 through Python 3.15.\nCompatibility with Python 3.9 is not needed.  Compatibility with Python\n3.10 is not needed.\n\n#### Python Style\n\nImport style: prefer `from package import name` over `import package.name as name`.\n\nQuoting style: prefer single quotes for new code, but do not remove double quotes\nfrom existing code.\n\n#### Python Environment\n\n * Package manager: `uv` (not pip)\n * Formatter: `env -u PYTHONPATH uv run -- ruff format`\n * Linter: `env -u PYTHONPATH uv run -- ruff check`\n * Type checker: `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive`\n\n### Git Workflows\n\n#### Git Commit Messages\n\n * Use the present tense.\n * Keep the first line under 50 characters in length.\n * Keep the second line blank.\n * Keep all other lines under 72 characters in length.\n * Reference issue numbers when available.\n\n#### Generating PRs\n\nWhen generating a PR, follow the instructions in `.github/PULL_REQUEST_TEMPLATE.md`:\n\n * Add new author names to `mycli/AUTHORS.txt`.\n * Add a new entry to `changelog.md`.\n\n### Code Comments\n\nKeep comments concise and direct.  Use full sentences, ending with a period.\n\n### See Also\n\nSee also the file `CONTRIBUTING.md`.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/dbcli/mycli/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Mycli\n\nRich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.\n\n## Project Structure\n\n    /                                                     # repository root\n    ├── .github/                                          # GitHub Actions and configuration\n    ├── pyproject.toml                                    # project configuration\n    ├── doc/                                              # documentation\n    ├── doc/cookbook.md                                   # recipes for how to configure and use mycli\n    ├── doc/key_bindings.md                               # documentation of key binding behaviors\n    ├── doc/known_bugs.md                                 # documentation of known bugs and limitations\n    ├── doc/llm.md                                        # documentation on how to use LLM features\n    ├── doc/transforms.md                                 # documentation on how to use dataframe transform/plot features\n    ├── doc/screenshots/                                  # screenshots for documentation\n    ├── mycli/                                            # application source\n    ├── mycli/__init__.py                                 # provides version number\n    ├── mycli/app_state.py                                # `AppStateMixin` application state mixin and related functions\n    ├── mycli/cli_runner.py                               # connects and dispatches main modes based on CLI arguments\n    ├── mycli/client_commands.py                          # special commands which must be registered separately\n    ├── mycli/client_connection.py                        # `ClientConnectionMixin` mixin for establishing the database connection\n    ├── mycli/client_query.py                             # `ClientQueryMixin` mixin for running queries and refreshing completions\n    ├── mycli/client.py                                   # the `MyCli` \"god class\"\n    ├── mycli/compat.py                                   # OS compatibility helpers\n    ├── mycli/config.py                                   # configuration file readers and utilities\n    ├── mycli/constants.py                                # shared constants\n    ├── mycli/main.py                                     # processes CLI arguments\n    ├── mycli/main_modes/                                 # main execution paths\n    ├── mycli/main_modes/batch.py                         # `--batch` mode\n    ├── mycli/main_modes/checkup.py                       # `--checkup` mode\n    ├── mycli/main_modes/completions.py                   # `--completions` mode\n    ├── mycli/main_modes/execute.py                       # `--execute` mode\n    ├── mycli/main_modes/list_dsn.py                      # `--list-dsn` mode\n    ├── mycli/main_modes/repl.py                          # interactive REPL mode\n    ├── mycli/myclirc                                     # project-level configuration file\n    ├── mycli/output.py                                   # `OutputMixin` mixin for feedback and output of query results\n    ├── mycli/packages/                                   # application packages\n    ├── mycli/packages/completion/completion_engine.py    # implementation of completion suggestions\n    ├── mycli/packages/completion/completion_refresher.py # populates a `SQLCompleter` object in a background thread\n    ├── mycli/packages/completion/schema_prefetcher.py    # background prefetcher for multi-schema auto-completion\n    ├── mycli/packages/completion/sql_completer.py        # finds SQL completion candidates\n    ├── mycli/packages/credentials/password_sources.py    # password sources and precedence\n    ├── mycli/packages/dataframes/completion.py           # completions for `.|` transforms\n    ├── mycli/packages/dataframes/transform.py            # implements `.|` transforms\n    ├── mycli/packages/execution/background_runner.py     # run queries in the background, with query state and timing updates\n    ├── mycli/packages/execution/sql_execute.py           # `SQLExecute` class and friends\n    ├── mycli/packages/integrations/                      # integrations with fzf, Boundary, Kubernetes, macOS, OpenSSH, and Vault\n    ├── mycli/packages/prompt_toolkit/fzf_history.py      # uses fzf integration to serach the prompt_toolkit history\n    ├── mycli/packages/prompt_toolkit/history.py          # extends the prompt_toolkit history class\n    ├── mycli/packages/prompt_toolkit/key_bindings.py     # prompt_toolkit key bindings\n    ├── mycli/packages/prompt_toolkit/multiline.py        # prompt_toolkit multiline input\n    ├── mycli/packages/prompt_toolkit/style.py            # prompt_toolkit (and Pygments) styles\n    ├── mycli/packages/prompt_toolkit/toolbar.py          # prompt_toolkit bottom toolbar\n    ├── mycli/packages/prompt_toolkit/utils.py            # general utility functions for prompt_toolkit\n    ├── mycli/packages/pygments/mycli_lexer.py            # extends `MySqlLexer` from Pygments\n    ├── mycli/packages/redirection/                       # implementation of shell-style redirects\n    ├── mycli/packages/special_commands/                  # implementation of mycli special commands\n    ├── mycli/packages/sql_result/sql_result.py           # the `SQLResult` dataclass for holding responses\n    ├── mycli/packages/tabular_output/                    # extends cli_helper with additional output formats\n    ├── mycli/packages/utils/batch_utils.py               # utilities for `--batch` mode\n    ├── mycli/packages/utils/cli_utils.py                 # utilities for parsing CLI arguments\n    ├── mycli/packages/utils/interactive_utils.py         # utilities for confirming on destructive statements\n    ├── mycli/packages/utils/key_binding_utils.py         # handlers for key bindings and related special commands\n    ├── mycli/packages/utils/keyring_utils.py             # saved credential utilities\n    ├── mycli/packages/utils/path_utils.py                # utilities for files, including completion suggestions\n    ├── mycli/packages/utils/sql_utils.py                 # utilities for parsing SQL statements\n    ├── mycli/packages/utils/string_utils.py              # generic string utilities\n    ├── mycli/resources/completions/                      # shell completions for CLI interface\n    ├── mycli/types.py                                    # shared types\n    ├── mycli_test/features/                              # behave tests\n    ├── mycli_test/myclirc                                # mycli configuration used for tests\n    ├── mycli_test/mylogin.cnf                            # `mylogin.cnf` example used for tests\n    ├── mycli_test/pytests/                               # pytest tests\n    ├── mycli_test/pytests/conftest.py                    # pytest configuration\n    └── mycli_test/utils.py                               # shared utilities for tests\n\n## Development\n\n### Python\n\n#### Python Dependency Management\n\nThis repo uses `uv` for dependency management. **Always** prefix Python\ncommands with `uv run`.  Example:\n\n```bash\nenv -u PYTHONPATH uv run -- python script.py\n```\n\n#### Python Typing\n\nThis repo uses type annotations which are checked by `mypy`.  **Always** add\ntype annotations, and always check new code with `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive script.py`.\n\nUse lower-case type annotations such as `tuple`, not upper-case type\nannotations such as `Tuple`.\n\nUse `Type | None` instead of `Optional[Type]`.\n\n#### Python Testing\n\nTests are coordinated by `tox`, and include both `pytest` and `behave` tests.\nTo run the full test suite, execute `env -u PYTHONPATH uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.11 through Python 3.15.\nCompatibility with Python 3.9 is not needed.  Compatibility with Python\n3.10 is not needed.\n\n#### Python Style\n\nImport style: prefer `from package import name` over `import package.name as name`.\n\nQuoting style: prefer single quotes for new code, but do not remove double quotes\nfrom existing code.\n\n#### Python Environment\n\n * Package manager: `uv` (not pip)\n * Formatter: `env -u PYTHONPATH uv run -- ruff format`\n * Linter: `env -u PYTHONPATH uv run -- ruff check`\n * Type checker: `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive`\n\n### Git Workflows\n\n#### Git Commit Messages\n\n * Use the present tense.\n * Keep the first line under 50 characters in length.\n * Keep the second line blank.\n * Keep all other lines under 72 characters in length.\n * Reference issue numbers when available.\n\n#### Generating PRs\n\nWhen generating a PR, follow the instructions in `.github/PULL_REQUEST_TEMPLATE.md`:\n\n * Add new author names to `mycli/AUTHORS.txt`.\n * Add a new entry to `changelog.md`.\n\n### Code Comments\n\nKeep comments concise and direct.  Use full sentences, ending with a period.\n\n### See Also\n\nSee also the file `CONTRIBUTING.md`.\n","isInternal":false,"tokens":1741,"sizeBytes":9271}],"systemPromptSnippet":"<yakaai_skills repo=\"dbcli/mycli\">\n<!-- File: AGENTS.md (Tokens: ~1741 | Category: root-instruction) -->\n# Mycli\n\nRich MySQL terminal client with auto-completion, syntax highlighting, and dataframes.\n\n## Project Structure\n\n    /                                                     # repository root\n    ├── .github/                                          # GitHub Actions and configuration\n    ├── pyproject.toml                                    # project configuration\n    ├── doc/                                              # documentation\n    ├── doc/cookbook.md                                   # recipes for how to configure and use mycli\n    ├── doc/key_bindings.md                               # documentation of key binding behaviors\n    ├── doc/known_bugs.md                                 # documentation of known bugs and limitations\n    ├── doc/llm.md                                        # documentation on how to use LLM features\n    ├── doc/transforms.md                                 # documentation on how to use dataframe transform/plot features\n    ├── doc/screenshots/                                  # screenshots for documentation\n    ├── mycli/                                            # application source\n    ├── mycli/__init__.py                                 # provides version number\n    ├── mycli/app_state.py                                # `AppStateMixin` application state mixin and related functions\n    ├── mycli/cli_runner.py                               # connects and dispatches main modes based on CLI arguments\n    ├── mycli/client_commands.py                          # special commands which must be registered separately\n    ├── mycli/client_connection.py                        # `ClientConnectionMixin` mixin for establishing the database connection\n    ├── mycli/client_query.py                             # `ClientQueryMixin` mixin for running queries and refreshing completions\n    ├── mycli/client.py                                   # the `MyCli` \"god class\"\n    ├── mycli/compat.py                                   # OS compatibility helpers\n    ├── mycli/config.py                                   # configuration file readers and utilities\n    ├── mycli/constants.py                                # shared constants\n    ├── mycli/main.py                                     # processes CLI arguments\n    ├── mycli/main_modes/                                 # main execution paths\n    ├── mycli/main_modes/batch.py                         # `--batch` mode\n    ├── mycli/main_modes/checkup.py                       # `--checkup` mode\n    ├── mycli/main_modes/completions.py                   # `--completions` mode\n    ├── mycli/main_modes/execute.py                       # `--execute` mode\n    ├── mycli/main_modes/list_dsn.py                      # `--list-dsn` mode\n    ├── mycli/main_modes/repl.py                          # interactive REPL mode\n    ├── mycli/myclirc                                     # project-level configuration file\n    ├── mycli/output.py                                   # `OutputMixin` mixin for feedback and output of query results\n    ├── mycli/packages/                                   # application packages\n    ├── mycli/packages/completion/completion_engine.py    # implementation of completion suggestions\n    ├── mycli/packages/completion/completion_refresher.py # populates a `SQLCompleter` object in a background thread\n    ├── mycli/packages/completion/schema_prefetcher.py    # background prefetcher for multi-schema auto-completion\n    ├── mycli/packages/completion/sql_completer.py        # finds SQL completion candidates\n    ├── mycli/packages/credentials/password_sources.py    # password sources and precedence\n    ├── mycli/packages/dataframes/completion.py           # completions for `.|` transforms\n    ├── mycli/packages/dataframes/transform.py            # implements `.|` transforms\n    ├── mycli/packages/execution/background_runner.py     # run queries in the background, with query state and timing updates\n    ├── mycli/packages/execution/sql_execute.py           # `SQLExecute` class and friends\n    ├── mycli/packages/integrations/                      # integrations with fzf, Boundary, Kubernetes, macOS, OpenSSH, and Vault\n    ├── mycli/packages/prompt_toolkit/fzf_history.py      # uses fzf integration to serach the prompt_toolkit history\n    ├── mycli/packages/prompt_toolkit/history.py          # extends the prompt_toolkit history class\n    ├── mycli/packages/prompt_toolkit/key_bindings.py     # prompt_toolkit key bindings\n    ├── mycli/packages/prompt_toolkit/multiline.py        # prompt_toolkit multiline input\n    ├── mycli/packages/prompt_toolkit/style.py            # prompt_toolkit (and Pygments) styles\n    ├── mycli/packages/prompt_toolkit/toolbar.py          # prompt_toolkit bottom toolbar\n    ├── mycli/packages/prompt_toolkit/utils.py            # general utility functions for prompt_toolkit\n    ├── mycli/packages/pygments/mycli_lexer.py            # extends `MySqlLexer` from Pygments\n    ├── mycli/packages/redirection/                       # implementation of shell-style redirects\n    ├── mycli/packages/special_commands/                  # implementation of mycli special commands\n    ├── mycli/packages/sql_result/sql_result.py           # the `SQLResult` dataclass for holding responses\n    ├── mycli/packages/tabular_output/                    # extends cli_helper with additional output formats\n    ├── mycli/packages/utils/batch_utils.py               # utilities for `--batch` mode\n    ├── mycli/packages/utils/cli_utils.py                 # utilities for parsing CLI arguments\n    ├── mycli/packages/utils/interactive_utils.py         # utilities for confirming on destructive statements\n    ├── mycli/packages/utils/key_binding_utils.py         # handlers for key bindings and related special commands\n    ├── mycli/packages/utils/keyring_utils.py             # saved credential utilities\n    ├── mycli/packages/utils/path_utils.py                # utilities for files, including completion suggestions\n    ├── mycli/packages/utils/sql_utils.py                 # utilities for parsing SQL statements\n    ├── mycli/packages/utils/string_utils.py              # generic string utilities\n    ├── mycli/resources/completions/                      # shell completions for CLI interface\n    ├── mycli/types.py                                    # shared types\n    ├── mycli_test/features/                              # behave tests\n    ├── mycli_test/myclirc                                # mycli configuration used for tests\n    ├── mycli_test/mylogin.cnf                            # `mylogin.cnf` example used for tests\n    ├── mycli_test/pytests/                               # pytest tests\n    ├── mycli_test/pytests/conftest.py                    # pytest configuration\n    └── mycli_test/utils.py                               # shared utilities for tests\n\n## Development\n\n### Python\n\n#### Python Dependency Management\n\nThis repo uses `uv` for dependency management. **Always** prefix Python\ncommands with `uv run`.  Example:\n\n```bash\nenv -u PYTHONPATH uv run -- python script.py\n```\n\n#### Python Typing\n\nThis repo uses type annotations which are checked by `mypy`.  **Always** add\ntype annotations, and always check new code with `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive script.py`.\n\nUse lower-case type annotations such as `tuple`, not upper-case type\nannotations such as `Tuple`.\n\nUse `Type | None` instead of `Optional[Type]`.\n\n#### Python Testing\n\nTests are coordinated by `tox`, and include both `pytest` and `behave` tests.\nTo run the full test suite, execute `env -u PYTHONPATH uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.11 through Python 3.15.\nCompatibility with Python 3.9 is not needed.  Compatibility with Python\n3.10 is not needed.\n\n#### Python Style\n\nImport style: prefer `from package import name` over `import package.name as name`.\n\nQuoting style: prefer single quotes for new code, but do not remove double quotes\nfrom existing code.\n\n#### Python Environment\n\n * Package manager: `uv` (not pip)\n * Formatter: `env -u PYTHONPATH uv run -- ruff format`\n * Linter: `env -u PYTHONPATH uv run -- ruff check`\n * Type checker: `env -u PYTHONPATH uv run -- mypy --install-types --non-interactive`\n\n### Git Workflows\n\n#### Git Commit Messages\n\n * Use the present tense.\n * Keep the first line under 50 characters in length.\n * Keep the second line blank.\n * Keep all other lines under 72 characters in length.\n * Reference issue numbers when available.\n\n#### Generating PRs\n\nWhen generating a PR, follow the instructions in `.github/PULL_REQUEST_TEMPLATE.md`:\n\n * Add new author names to `mycli/AUTHORS.txt`.\n * Add a new entry to `changelog.md`.\n\n### Code Comments\n\nKeep comments concise and direct.  Use full sentences, ending with a period.\n\n### See Also\n\nSee also the file `CONTRIBUTING.md`.\n</yakaai_skills>"}