Add TWITTER_BROWSER environment variable to allow users to control which browser's cookies are prioritized during extraction. Example: TWITTER_BROWSER=chrome twitter feed Supported values: arc, chrome, edge, firefox, brave. The specified browser is moved to the front of the extraction order. Also adds AGENTS.md developer guide for AI coding assistants. Co-authored-by: Agassi <413855+agassiyzh@users.noreply.github.com>
2.2 KiB
2.2 KiB
AGENTS.md — Agent Developer Guide for twitter-cli
This file provides context for AI agents working in this repository.
Project Overview
- Project: twitter-cli — A CLI for Twitter/X (read timelines, bookmarks, search, post, reply, etc.)
- Language: Python 3.10+
- Package Manager: uv (recommended) / pip
- Repository: https://github.com/jackwener/twitter-cli
Build, Lint, and Test Commands
# Install all dependencies (including dev)
uv sync --extra dev
# Run ruff linter
uv run ruff check .
# Run mypy type checker
uv run mypy twitter_cli
# Run all tests (excludes smoke tests by default)
uv run pytest -q
# Run a single test
uv run pytest tests/test_cli.py::test_feed_command -v
# Run tests matching pattern
uv run pytest -k "test_parse" -v
Code Style
- Line length: 100 characters
- Python version: 3.10+
- Use
from __future__ import annotationsat top of all .py files - Functions/variables:
snake_case, Classes:PascalCase, Constants:UPPER_SNAKE_CASE - Private functions: prefix with
_ - Use
@dataclassfor data models (inmodels.py) - Use Click framework for CLI commands
- Custom exceptions in
exceptions.py, base:TwitterError(RuntimeError)
Project Structure
twitter_cli/
├── cli.py # Click CLI entry point
├── client.py # Twitter API client (HTTP)
├── auth.py # Cookie extraction & auth
├── graphql.py # GraphQL query IDs
├── parser.py # Tweet/User parsing
├── models.py # Dataclass models
├── formatter.py # Rich table formatting
├── serialization.py # YAML/JSON output
├── output.py # Structured output helpers
├── config.py # Config loading
├── filter.py # Tweet ranking/scoring
├── constants.py # Constants
├── exceptions.py # Custom exceptions
├── cache.py # Tweet caching
├── search.py # Search utilities
└── timeutil.py # Time utilities
CI
- GitHub Actions: Python 3.10, 3.11, 3.12
- CI validates: ruff check + mypy + pytest