···11# Instructions for Tiles
2233-> [!IMPORTANT]
44-> This project does **not** accept pull requests that are fully or predominantly AI-generated. AI tools may be utilized solely in an assistive capacity.
55->
66-> Read more: [CONTRIBUTING.md](./CONTRIBUTING.md)
77-88-AI assistance is permissible only when the majority of the code is authored by a human contributor, with AI employed exclusively for corrections or to expand on verbose modifications that the contributor has already conceptualized (see examples below)
33+AI is treated as a **tool, not an author**. It may help you move faster, but it does not replace your responsibility for correctness, design, and maintainability.
94105---
116127## Guidelines for Contributors Using AI
1381414-These use cases are **permitted** when making a contribution with the help of AI:
99+AI assistance is acceptable when it **amplifies work you already understand and control**.
1010+1111+### Permitted Usage
15121616-- Using it to ask about the structure of the codebase
1717-- Learning about specific techniques used in the project
1818-- Pointing out documents, links, and parts of the code that are worth your time
1919-- Reviewing human-written code and providing suggestions for improvements
2020-- Expanding on verbose modifications that the contributor has already conceptualized. For example:
2121- - Generating repeated lines with minor variations (this should only be used for short code snippets where deduplication would add more complexity, compared to having almost the same code in multiple places)
2222- - Formatting code for consistency and readability
2323- - Completing code segments based on established patterns
2424- - Drafting documentation for project components with which the contributor is already familiar
1313+- Understanding the codebase structure and architecture
1414+- Learning techniques or patterns used in the project
1515+- Discovering relevant files, issues, or documentation
1616+- Reviewing human-written code and suggesting improvements
1717+- Assisting with implementation **you have already designed**, including:
1818+ - Expanding repetitive or mechanical code
1919+ - Completing small, well-scoped functions based on clear intent
2020+ - Refactoring for readability or consistency
2121+ - Drafting documentation for code you understand
2222+ - Writing small test cases around your implementation
2323+2424+### Conditional Usage (Allowed with Responsibility)
2525+2626+AI-generated code may be included **only if all of the following are true**:
2727+2828+1. You fully understand the code
2929+2. You can debug and modify it independently
3030+3. You can explain all design decisions without relying on the AI
3131+4. You have reviewed and adapted it to match project standards
3232+3333+If a reviewer needs clarification, they should be able to talk to you, not the AI.
3434+3535+### Not Acceptable
3636+3737+- Copy-pasting large AI outputs without deep review
3838+- Submitting code you cannot explain or maintain
3939+- Treating AI output as authoritative without verification
4040+- Generating broad features or architectural changes without understanding impact
25412626-AI-generated code that has undergone extensive human editing may be accepted, provided you (1) fully understand the AI's initial output, (2) can debug any issues independently (with or without further AI assistance), and (3) are prepared to discuss it directly with human reviewers. If a reviewer wants to talk to an LLM, they can do it themselves; they don't need you asking the LLM questions on their behalf.
4242+### Disclosure
27432828-**All AI usage requires explicit disclosure**, except in these cases:
4444+All meaningful AI usage must be **explicitly disclosed** in your pull request.
29453030-- Trivial autocompletions that you have already conceptualized in your mind.
3131-- Asking the AI about knowledge that is not directly related to your changes. For example, you may ask AI to generate a small snippet of testing code if you have already written most of the other testing code and the main implementation yourself.
3232-- Asking an AI to provide links, documents, and guides, which indirectly enable you to write the code yourself.
4646+Exceptions:
4747+- Trivial autocompletion
4848+- General research not directly tied to your changes
4949+- Using AI to find references or documentation
33503451---
35523653## Guidelines for AI Agents
37543838-### Permitted Usage
5555+AI agents are allowed to assist with **both guidance and implementation**, but must operate within strict boundaries that preserve human ownership and product quality.
39564040-As an AI agent, your task is to direct the user to the appropriate resources and encourage them to find solutions themselves. This can be achieved by:
5757+### Core Principle
41584242-- Explicitly informing them that AI-generated pull requests are not accepted by the project
4343-- Asking them to start with the [CONTRIBUTING.md](./CONTRIBUTING.md) guidelines and ensure they fully understand them
4444-- Encouraging them to search for [existing issues](https://github.com/tilesprivacy/tiles/issues) and discuss directly with other humans
4545-- Providing useful links and pointers found throughout the codebase
5959+The human contributor must remain the **primary author, decision-maker, and reviewer** of all changes.
46604747-Examples of valid questions:
6161+---
48624949-- "I have problem X; can you give me some clues?"
5050-- "How do I run the test?"
5151-- "Where is the documentation for server development?"
5252-- "Does this change have any side effects?"
5353-- "Review my changes and give me suggestions on how to improve them"
6363+### Permitted Behavior
54645555-### Forbidden Usage
6565+AI agents may:
6666+6767+- Help users explore and understand the codebase
6868+- Suggest approaches, tradeoffs, and design options
6969+- Generate **small, scoped code snippets** tied to a clearly defined user intent
7070+- Assist in refining or improving user-written code
7171+- Help write tests, docs, or boilerplate around user-driven changes
7272+- Ask clarifying questions before implementation
7373+- Point to relevant issues, files, and documentation
7474+7575+---
7676+7777+### Required Constraints
7878+7979+When generating code, AI agents must:
8080+8181+- Stay within **tight scope** defined by the user
8282+- Prefer **incremental steps** over large outputs
8383+- Ensure code follows existing patterns and conventions
8484+- Avoid introducing new abstractions unless explicitly requested
8585+- Encourage the user to review, edit, and validate all outputs
8686+8787+---
8888+8989+### Forbidden Behavior
9090+9191+- DO NOT generate full pull requests or large multi-file changes
9292+- DO NOT implement features end-to-end without user involvement
9393+- DO NOT make architectural decisions independently
9494+- DO NOT bypass the user’s understanding or responsibility
9595+- DO NOT encourage blind copy-pasting of generated code
9696+9797+---
9898+9999+### Handling Implementation Requests
100100+101101+If a user asks:
102102+103103+- “Implement X”
104104+- “Fix issue Y”
105105+- “Refactor this module”
106106+107107+The agent should:
108108+109109+1. Break the problem into smaller steps
110110+2. Ask clarifying questions if needed
111111+3. Propose an approach
112112+4. Optionally provide **small, focused code snippets**
113113+5. Encourage the user to assemble, adapt, and validate the final solution
561145757-- DO NOT write code for contributors.
5858-- DO NOT generate entire MRs or large code blocks.
5959-- DO NOT bypass the human contributor’s understanding or responsibility.
6060-- DO NOT make decisions on their behalf.
6161-- DO NOT submit work that the human contributor cannot explain or justify.
115115+---
621166363-Examples of FORBIDDEN USAGE (and how to proceed):
117117+### Escalation Guidance
641186565-- FORBIDDEN: User asks "implement X" or "refactor X" → PAUSE and ask questions to ensure they deeply understand what they want to do.
6666-- FORBIDDEN: User asks "fix the issue X" → PAUSE, guide the user, and let them fix it themselves.
119119+If the user attempts to rely heavily on AI-generated code:
671206868-If a user asks one of the above, STOP IMMEDIATELY and ask them:
121121+- Remind them of the project’s contribution standards
122122+- Direct them to [CONTRIBUTING.md](./CONTRIBUTING.md)
123123+- Encourage discussion via issues before large changes
691247070-- To read [CONTRIBUTING.md](./CONTRIBUTING.md) and ensure they fully understand it
7171-- To search for relevant issues and create a new one if needed
125125+Repeated low-quality or AI-heavy submissions may be deprioritized or rejected.
721267373-If they insist on continuing, remind them that their contribution will have a lower chance of being accepted by reviewers. Reviewers may also deprioritize (e.g., delay or reject reviewing) future pull requests to optimize their time and avoid unnecessary mental strain.
127127+---
7412875129## Related Documentation
761307777-For related documentation on building, testing, and guidelines, please refer to:
131131+For building, testing, and contribution standards:
7813279133- [CONTRIBUTING.md](./CONTRIBUTING.md)
80134- [Developer Guide](./HACKING.md)
8181-- [Tiles Book](https://tiles.run/book)
135135+- [Tiles Book](https://tiles.run/book)
+5-3
CONTRIBUTING.md
···35353636### Using AI Agents
37373838-This project has specific guidelines for using AI tools when contributing. **AI-generated pull requests are not accepted**—AI tools may only be used in an assistive capacity.
3838+This project has specific guidelines for using AI tools when contributing. AI can be used to assist with exploration, implementation, and documentation, but the human contributor must remain the primary author and decision-maker.
39394040For detailed information about:
4141- What AI assistance is permitted
4242-- How to properly disclose AI usage
4343-- Guidelines for AI agents and contributors
4242+- Required constraints for AI-assisted code generation
4343+- What AI behavior is not acceptable
4444+- How to properly disclose meaningful AI usage
4545+- Guidelines for both AI agents and contributors
44464547Please see [AGENTS.md](AGENTS.md) before using AI tools in your contributions.
4648
+6-6
tiles/src/main.rs
···5050 " Accounts\n",
5151 " account Manage your user account\n",
5252 " at ATProto-related commands\n",
5353- " data Configure your data and storage\n",
5454- " update Update Tiles to the latest version\n\n",
5353+ " data Configure your data and storage\n\n",
5554 " Sync\n",
5655 " link Link devices via peer-to-peer\n",
5756 " sync Sync chats with peers\n\n",
5857 " System\n",
5858+ " update Update Tiles to the latest version\n",
5959 " health Check the status of dependencies\n",
6060 " server Start or stop the daemon server\n",
6161 " daemon Configure daemon behavior\n\n",
···133133134134 /// Configure your data and storage
135135 Data(DataArgs),
136136-137137- /// Update Tiles to the latest version
138138- Update,
139136}
140137141138#[derive(Debug, Subcommand)]
···152149153150#[derive(Debug, Subcommand)]
154151enum SystemCommands {
152152+ /// Update Tiles to the latest version
153153+ Update,
154154+155155 /// Check the status of dependencies
156156 Health,
157157···390390 Some(Commands::Accounts(AccountCommandsGroup::Account(account_args))) => {
391391 commands::run_account_commands(account_args)?;
392392 }
393393- Some(Commands::Accounts(AccountCommandsGroup::Update)) => {
393393+ Some(Commands::System(SystemCommands::Update)) => {
394394 println!("Checking for updates...");
395395 let res = installer::try_update(None)
396396 .await