diff --git a/.gitignore b/.gitignore index e29844e..6efe7d4 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,11 @@ app.*.map.json # Logs *.log +# Local-only agent draft lists (raw wishlists; translated into docs by an +# agent, never committed) — see AGENTS.md +docs/Wishlist.md +docs/drafts/ + # IDE .idea/ *.iml diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..6d2d9d8 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,34 @@ +# AGENTS.md — sync_relay_project + +Project conventions for agents. Global interaction rules live in the +user-level AGENTS.md; this file holds repo-specific facts only. +Source of truth order: codebase > `HANDOFF.md` + `docs/ROADMAP.md` > +chat history. + +## Wishlist drafts + +The user drops raw idea/bug lists as drafts (gitignored, never +committed: `docs/Wishlist.md`, `docs/drafts/`). Agent duty on sight: +translate each entry into its proper place — `docs/ROADMAP.md` +backlog (ordered, one sitting-sized item each) or Epics, real bugs +with repro detail preserved — then confirm placement with the user +and delete the draft. Drafts must never be committed, even partially. + +## Commits + +Few commits, one per topic/session — never per fix. Rewriting +unpushed history (amend, squash) is expected, not exceptional. +Commit code + its docs together. No `flutter analyze` unless asked +or diagnosing; scoped `dart analyze` on touched files is the +pre-commit check. Tests run only when the code under test changed. + +## Releases (user pushes tags, CI does the rest) + +Release flow: release commit bumps `apps/desktop/pubspec.yaml` → +`git tag vX.Y.Z` → push tag → `.gitea/workflows/release.yml` +builds, publishes the Forgejo release, commits +`updates/manifest.json` back. `tool/release_publish.sh` is the same +flow by hand. Workflows live in `.gitea/workflows` (this forge reads +`.gitea` first, `.github` is ignored when it exists). +Never commit secrets: tokens arrive via env (`DISCORD_WEBHOOK_URL`, +`RELEASE_TOKEN`) or Actions-provided (`GITHUB_TOKEN/GITEA_TOKEN`).