{"owner":"dbcli","repo":"mycli","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# MyCli\n\nA command line client for MySQL with auto-completion and syntax highlighting.\n\n## Project Structure\n\n/                                         # repository root\n├── .github/                              # GitHub Actions and configuration\n├── pyproject.toml                        # project configuration\n├── doc/                                  # 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/boundary_tunnel.py              # connection over Boundary tunnel\n├── mycli/cli_runner.py                   # connects and dispatches main modes based on CLI arguments\n├── mycli/clibuffer.py                    # prompt_toolkit buffer utilities\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/clistyle.py                     # prompt_toolkit style utilities\n├── mycli/clitoolbar.py                   # prompt_toolkit toolbar utilities\n├── mycli/compat.py                       # OS compatibility helpers\n├── mycli/completion_refresher.py         # populates a `SQLCompleter` object in a background thread\n├── mycli/config.py                       # configuration file readers and utilities\n├── mycli/constants.py                    # shared constants\n├── mycli/key_bindings.py                 # prompt_toolkit key binding utilities\n├── mycli/lexer.py                        # extends `MySqlLexer` from Pygments\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/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/batch_utils.py         # utilities for `--batch` mode\n├── mycli/packages/cli_utils.py           # utilities for parsing CLI arguments\n├── mycli/packages/completion_engine.py   # implementation of completion suggestions\n├── mycli/packages/filepaths.py           # utilities for files, including completion suggestions\n├── mycli/packages/hybrid_redirection.py  # implementation of shell-style redirects\n├── mycli/packages/interactive_utils.py   # utilities for confirming on destructive statements\n├── mycli/packages/key_binding_utils.py   # handlers for key bindings and related special commands\n├── mycli/packages/sql_utils.py           # utilities for parsing SQL statements\n├── mycli/packages/ptoolkit/              # extends prompt_toolkit\n├── mycli/packages/special/               # implementation of mycli special commands\n├── mycli/packages/sqlresult.py           # the `SQLResult` dataclass for holding responses\n├── mycli/packages/string_utils.py        # generic string utilities\n├── mycli/packages/tabular_output/        # extends cli_helper with additional output formats\n├── mycli/password_sources.py             # password sources and precedence\n├── mycli/resources/completions/          # shell completions for CLI interface\n├── mycli/ssh_tunnel.py                   # connecting over a tunnel with `--ssh-jump`\n├── mycli/schema_prefetcher.py            # background prefetcher for multi-schema auto-completion\n├── mycli/sqlcompleter.py                 # offers SQL completions\n├── mycli/sqlexecute.py                   # runs SQL queries\n├── mycli/types.py                        # shared types\n├── mycli/vault.py                        # Vault integration\n├── test/features/                        # behave tests\n├── test/myclirc                          # mycli configuration used for tests\n├── test/mylogin.cnf                      # `mylogin.cnf` example used for tests\n├── test/pytests/                         # pytest tests\n├── test/pytests/conftest.py              # pytest configuration\n└── 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\nuv 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 `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 `uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.10 through Python 3.14.\nCompatibility with Python 3.9 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: `uv run -- ruff format`\n * Linter: `uv run -- ruff check`\n * Type checker: `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`.\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\nA command line client for MySQL with auto-completion and syntax highlighting.\n\n## Project Structure\n\n/                                         # repository root\n├── .github/                              # GitHub Actions and configuration\n├── pyproject.toml                        # project configuration\n├── doc/                                  # 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/boundary_tunnel.py              # connection over Boundary tunnel\n├── mycli/cli_runner.py                   # connects and dispatches main modes based on CLI arguments\n├── mycli/clibuffer.py                    # prompt_toolkit buffer utilities\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/clistyle.py                     # prompt_toolkit style utilities\n├── mycli/clitoolbar.py                   # prompt_toolkit toolbar utilities\n├── mycli/compat.py                       # OS compatibility helpers\n├── mycli/completion_refresher.py         # populates a `SQLCompleter` object in a background thread\n├── mycli/config.py                       # configuration file readers and utilities\n├── mycli/constants.py                    # shared constants\n├── mycli/key_bindings.py                 # prompt_toolkit key binding utilities\n├── mycli/lexer.py                        # extends `MySqlLexer` from Pygments\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/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/batch_utils.py         # utilities for `--batch` mode\n├── mycli/packages/cli_utils.py           # utilities for parsing CLI arguments\n├── mycli/packages/completion_engine.py   # implementation of completion suggestions\n├── mycli/packages/filepaths.py           # utilities for files, including completion suggestions\n├── mycli/packages/hybrid_redirection.py  # implementation of shell-style redirects\n├── mycli/packages/interactive_utils.py   # utilities for confirming on destructive statements\n├── mycli/packages/key_binding_utils.py   # handlers for key bindings and related special commands\n├── mycli/packages/sql_utils.py           # utilities for parsing SQL statements\n├── mycli/packages/ptoolkit/              # extends prompt_toolkit\n├── mycli/packages/special/               # implementation of mycli special commands\n├── mycli/packages/sqlresult.py           # the `SQLResult` dataclass for holding responses\n├── mycli/packages/string_utils.py        # generic string utilities\n├── mycli/packages/tabular_output/        # extends cli_helper with additional output formats\n├── mycli/password_sources.py             # password sources and precedence\n├── mycli/resources/completions/          # shell completions for CLI interface\n├── mycli/ssh_tunnel.py                   # connecting over a tunnel with `--ssh-jump`\n├── mycli/schema_prefetcher.py            # background prefetcher for multi-schema auto-completion\n├── mycli/sqlcompleter.py                 # offers SQL completions\n├── mycli/sqlexecute.py                   # runs SQL queries\n├── mycli/types.py                        # shared types\n├── mycli/vault.py                        # Vault integration\n├── test/features/                        # behave tests\n├── test/myclirc                          # mycli configuration used for tests\n├── test/mylogin.cnf                      # `mylogin.cnf` example used for tests\n├── test/pytests/                         # pytest tests\n├── test/pytests/conftest.py              # pytest configuration\n└── 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\nuv 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 `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 `uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.10 through Python 3.14.\nCompatibility with Python 3.9 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: `uv run -- ruff format`\n * Linter: `uv run -- ruff check`\n * Type checker: `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`.\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","title":"AGENTS.md","content":"# MyCli\n\nA command line client for MySQL with auto-completion and syntax highlighting.\n\n## Project Structure\n\n/                                         # repository root\n├── .github/                              # GitHub Actions and configuration\n├── pyproject.toml                        # project configuration\n├── doc/                                  # 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/boundary_tunnel.py              # connection over Boundary tunnel\n├── mycli/cli_runner.py                   # connects and dispatches main modes based on CLI arguments\n├── mycli/clibuffer.py                    # prompt_toolkit buffer utilities\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/clistyle.py                     # prompt_toolkit style utilities\n├── mycli/clitoolbar.py                   # prompt_toolkit toolbar utilities\n├── mycli/compat.py                       # OS compatibility helpers\n├── mycli/completion_refresher.py         # populates a `SQLCompleter` object in a background thread\n├── mycli/config.py                       # configuration file readers and utilities\n├── mycli/constants.py                    # shared constants\n├── mycli/key_bindings.py                 # prompt_toolkit key binding utilities\n├── mycli/lexer.py                        # extends `MySqlLexer` from Pygments\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/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/batch_utils.py         # utilities for `--batch` mode\n├── mycli/packages/cli_utils.py           # utilities for parsing CLI arguments\n├── mycli/packages/completion_engine.py   # implementation of completion suggestions\n├── mycli/packages/filepaths.py           # utilities for files, including completion suggestions\n├── mycli/packages/hybrid_redirection.py  # implementation of shell-style redirects\n├── mycli/packages/interactive_utils.py   # utilities for confirming on destructive statements\n├── mycli/packages/key_binding_utils.py   # handlers for key bindings and related special commands\n├── mycli/packages/sql_utils.py           # utilities for parsing SQL statements\n├── mycli/packages/ptoolkit/              # extends prompt_toolkit\n├── mycli/packages/special/               # implementation of mycli special commands\n├── mycli/packages/sqlresult.py           # the `SQLResult` dataclass for holding responses\n├── mycli/packages/string_utils.py        # generic string utilities\n├── mycli/packages/tabular_output/        # extends cli_helper with additional output formats\n├── mycli/password_sources.py             # password sources and precedence\n├── mycli/resources/completions/          # shell completions for CLI interface\n├── mycli/ssh_tunnel.py                   # connecting over a tunnel with `--ssh-jump`\n├── mycli/schema_prefetcher.py            # background prefetcher for multi-schema auto-completion\n├── mycli/sqlcompleter.py                 # offers SQL completions\n├── mycli/sqlexecute.py                   # runs SQL queries\n├── mycli/types.py                        # shared types\n├── mycli/vault.py                        # Vault integration\n├── test/features/                        # behave tests\n├── test/myclirc                          # mycli configuration used for tests\n├── test/mylogin.cnf                      # `mylogin.cnf` example used for tests\n├── test/pytests/                         # pytest tests\n├── test/pytests/conftest.py              # pytest configuration\n└── 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\nuv 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 `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 `uv run -- tox`.\n\n#### Python Compatibility\n\nUse Python features available from Python 3.10 through Python 3.14.\nCompatibility with Python 3.9 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: `uv run -- ruff format`\n * Linter: `uv run -- ruff check`\n * Type checker: `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`.\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","category":"root","tokens":1635}]}