-
Notifications
You must be signed in to change notification settings - Fork 1
Update project specification documentation #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,31 +1,68 @@ | ||
| # Project Context | ||
|
|
||
| ## Purpose | ||
| [Describe your project's purpose and goals] | ||
| Mimeogram is a command-line tool for **exchanging collections of files with Large Language Models (LLMs)**. It bundles multiple files into a single clipboard-ready document while preserving directory structure and metadata, making it ideal for code reviews, project sharing, and LLM interactions. It supports interactive reviews, clipboard integration, and path protection. | ||
|
|
||
| ## Tech Stack | ||
| - [List your primary technologies] | ||
| - [e.g., TypeScript, React, Node.js] | ||
| - **Language**: Python 3.10+ | ||
| - **Build System**: Hatch | ||
| - **Packaging**: PyInstaller (for standalone executable) | ||
| - **Key Libraries**: | ||
| - `accretive` (accretive data structures) | ||
| - `aiofiles` (async file I/O) | ||
| - `detextive` (text detection) | ||
| - `httpx` (HTTP client) | ||
| - `icecream-truck` (debugging) | ||
| - `patiencediff` (diff generation) | ||
| - `pyperclip` (clipboard integration) | ||
| - `rich` (terminal formatting) | ||
| - `tiktoken` (token counting) | ||
| - `tomli` (TOML parsing) | ||
| - `tyro` (CLI argument parsing) | ||
| - `appcore` (application core utilities) | ||
|
|
||
| ## Project Conventions | ||
|
|
||
| ### Code Style | ||
| [Describe your code style preferences, formatting rules, and naming conventions] | ||
| - **Line Length**: 79 characters | ||
| - **Indentation**: 4 spaces | ||
| - **Type Hinting**: Strict type checking with `pyright` (reportUnknownArgumentType, etc. are true). | ||
| - **Linters**: | ||
| - `ruff` (general linting) | ||
| - `isort` (import sorting) | ||
| - `vibelinter` (custom linter) | ||
|
emcd marked this conversation as resolved.
Outdated
|
||
| - **Configuration**: See `pyproject.toml` for detailed linter configurations. | ||
|
|
||
| ### Architecture Patterns | ||
| [Document your architectural decisions and patterns] | ||
| - **Filesystem Organization**: See [`documentation/architecture/filesystem.rst`](../filesystem.rst) for details on the project structure. | ||
| - **Import Hub Pattern**: Uses a centralized `__` import hub (e.g., `from . import __`) to manage internal and external dependencies. | ||
| - **CLI Separation**: The CLI logic is separated into `cli.py` and `__main__.py` to allow independent testing and execution. | ||
| - **Immutability**: Uses `frigid` and `accretive` for immutable and append-only data structures where appropriate. | ||
|
|
||
| ### Testing Strategy | ||
| [Explain your testing approach and requirements] | ||
| - **Framework**: `pytest` | ||
| - **Property-based Testing**: `hypothesis` | ||
| - **Coverage**: Branch coverage enabled, enforced via CI. | ||
| - **Doctests**: Run via Sphinx. | ||
| - **Test Naming**: `test_[0-9][0-9][0-9]_*` pattern for test functions. | ||
| - **Location**: All tests are located in the `tests/` directory. | ||
|
|
||
| ### Git Workflow | ||
| [Describe your branching strategy and commit conventions] | ||
| - **Branching**: Pull Request (PR) based workflow. | ||
| - **Changelog**: Managed via `towncrier`. Changelog fragments are stored in `.auxiliary/data/towncrier` and compiled into `documentation/changelog.rst`. | ||
| - **CI/CD**: GitHub Actions for testing and linting. | ||
|
|
||
| ## Domain Context | ||
| [Add domain-specific knowledge that AI assistants need to understand] | ||
| - **LLM Context Windows**: The tool is designed to optimize for limited context windows of LLMs. | ||
| - **Mimeogram Format**: A specific textual format for bundling files that LLMs can understand and generate. | ||
| - **Clipboard Operations**: Heavy reliance on system clipboard for data transfer between the tool and LLM interfaces (web/desktop). | ||
| - **Path Protection**: Security mechanism to prevent LLMs from modifying sensitive files or directories. | ||
|
|
||
| ## Important Constraints | ||
| [List any technical, business, or regulatory constraints] | ||
| - **Platform Support**: Must work on Linux, macOS, and Windows. | ||
| - **Python Support**: Supports Python 3.10 to 3.14. | ||
| - **No Automatic Sync**: The tool does not automatically sync files; it relies on manual `create` and `apply` steps. | ||
|
|
||
| ## External Dependencies | ||
| [Document key external services, APIs, or systems] | ||
| - **LLM Providers**: Interacts with LLMs (OpenAI, Anthropic, etc.) indirectly via text/clipboard. | ||
| - **GitHub**: Supports fetching files from remote GitHub URLs. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.