backlog.md 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/.backlog/archive/drafts/readme.md +3 -0
  2. package/.backlog/archive/drafts/task-41 - temporary-test-task.md +13 -0
  3. package/.backlog/archive/readme.md +6 -0
  4. package/.backlog/archive/tasks/readme.md +3 -0
  5. package/.backlog/archive/tasks/task-41 - cli-migrate-terminal-ui-to-bblessed.md +14 -0
  6. package/.backlog/config.yml +7 -0
  7. package/.backlog/decisions/readme.md +7 -0
  8. package/.backlog/docs/readme.md +20 -0
  9. package/.backlog/drafts/readme.md +3 -0
  10. package/.backlog/drafts/task-26 - docs-add-board-export-step-to-agent-dod.md +21 -0
  11. package/.backlog/drafts/task-28 - add-code-of-conduct.md +20 -0
  12. package/.backlog/drafts/task-30 - create-changelog.md +19 -0
  13. package/.backlog/milestones/m-0 - project-setup.md +8 -0
  14. package/.backlog/milestones/m-1 - cli.md +8 -0
  15. package/.backlog/milestones/m-2 - cli-kanban.md +8 -0
  16. package/.backlog/milestones/m-3 - gui.md +8 -0
  17. package/.backlog/milestones/m-4 - gui-kanban.md +8 -0
  18. package/.backlog/milestones/m-5 - gui-advanced.md +12 -0
  19. package/.backlog/milestones/readme.md +3 -0
  20. package/.backlog/readme.md +5 -0
  21. package/.backlog/tasks/readme.md +37 -0
  22. package/.backlog/tasks/task-1 - cli-setup-core-project.md +23 -0
  23. package/.backlog/tasks/task-10 - gui-init-packaging.md +23 -0
  24. package/.backlog/tasks/task-11 - gui-kanban-board.md +26 -0
  25. package/.backlog/tasks/task-12 - gui-advanced.md +25 -0
  26. package/.backlog/tasks/task-13 - cli-add-agent-instruction-prompt.md +53 -0
  27. package/.backlog/tasks/task-13.1 - cli-agent-instruction-file-selection.md +40 -0
  28. package/.backlog/tasks/task-14 - gui-introduction-screens.md +21 -0
  29. package/.backlog/tasks/task-15 - improve-tasks-readme-with-generic-example-and-cli-reference.md +20 -0
  30. package/.backlog/tasks/task-16 - improve-docs-readme-with-generic-example-and-cli-reference.md +20 -0
  31. package/.backlog/tasks/task-17 - improve-drafts-readme-with-generic-example-and-cli-reference.md +20 -0
  32. package/.backlog/tasks/task-18 - improve-decisions-readme-with-generic-example-and-cli-reference.md +20 -0
  33. package/.backlog/tasks/task-19 - cli-fix-default-task-status-and-remove-draft-from-statuses.md +55 -0
  34. package/.backlog/tasks/task-2 - cli-core-logic-library.md +28 -0
  35. package/.backlog/tasks/task-20 - add-agent-guideline-to-mark-tasks-in-progress-on-start.md +32 -0
  36. package/.backlog/tasks/task-21 - kanban-board-vertical-layout.md +31 -0
  37. package/.backlog/tasks/task-22 - cli-prevent-double-dash-in-task-filenames.md +24 -0
  38. package/.backlog/tasks/task-23 - cli-kanban-board-order-tasks-by-id-asc.md +30 -0
  39. package/.backlog/tasks/task-24 - handle-subtasks-in-the-kanban-view.md +38 -0
  40. package/.backlog/tasks/task-24.1 - cli-kanban-board-milestone-view.md +19 -0
  41. package/.backlog/tasks/task-25 - cli-export-kanban-board-to-readme.md +28 -0
  42. package/.backlog/tasks/task-27 - add-contributing-guidelines.md +27 -0
  43. package/.backlog/tasks/task-29 - add-github-templates.md +28 -0
  44. package/.backlog/tasks/task-3 - cli-implement-backlog-init.md +63 -0
  45. package/.backlog/tasks/task-31 - update-readme-for-open-source.md +26 -0
  46. package/.backlog/tasks/task-32 - cli-hide-empty-'no-status'-column.md +31 -0
  47. package/.backlog/tasks/task-33 - cli-export-milestones-board-as-roadmap.md +20 -0
  48. package/.backlog/tasks/task-34 - split-readme.md-for-users-and-contributors.md +26 -0
  49. package/.backlog/tasks/task-35 - finalize-package.json-metadata-for-publishing.md +24 -0
  50. package/.backlog/tasks/task-36 - cli-prompt-for-project-name-in-init.md +24 -0
  51. package/.backlog/tasks/task-37 - cli-board-view-open-tasks-in-ide.md +19 -0
  52. package/.backlog/tasks/task-38 - cli-improved-agent-selection-for-init.md +25 -0
  53. package/.backlog/tasks/task-39 - cli-fix-empty-agent-instruction-files-on-init.md +31 -0
  54. package/.backlog/tasks/task-4 - cli-task-management-commands.md +28 -0
  55. package/.backlog/tasks/task-4.1 - cli-task-create.md +27 -0
  56. package/.backlog/tasks/task-4.10 - use-cli-to-mark-tasks-done.md +51 -0
  57. package/.backlog/tasks/task-4.11 - docs-add-definition-of-done-to-agent-guidelines.md +23 -0
  58. package/.backlog/tasks/task-4.12 - cli-handle-task-id-conflicts-across-branches.md +53 -0
  59. package/.backlog/tasks/task-4.13 - cli-fix-config-command-local-global-logic.md +58 -0
  60. package/.backlog/tasks/task-4.2 - cli-task-list-view.md +25 -0
  61. package/.backlog/tasks/task-4.3 - cli-task-edit.md +24 -0
  62. package/.backlog/tasks/task-4.4 - cli-task-archive-transition.md +27 -0
  63. package/.backlog/tasks/task-4.5 - cli-init-prompts-for-reporter-name-and-global-local-config.md +28 -0
  64. package/.backlog/tasks/task-4.6 - cli-add-empty-assignee-array-field-for-new-tasks.md +35 -0
  65. package/.backlog/tasks/task-4.7 - cli-parse-unquoted-created_date.md +40 -0
  66. package/.backlog/tasks/task-4.8 - cli-enforce-description-header.md +48 -0
  67. package/.backlog/tasks/task-4.9 - cli-normalize-task-id-inputs.md +66 -0
  68. package/.backlog/tasks/task-40 - cli-board-command-defaults-to-view.md +38 -0
  69. package/.backlog/tasks/task-41 - cli-migrate-terminal-ui-to-bblessed.md +93 -0
  70. package/.backlog/tasks/task-41.1 - cli-bblessed-init-wizard.md +42 -0
  71. package/.backlog/tasks/task-41.2 - cli-bblessed-task-view.md +44 -0
  72. package/.backlog/tasks/task-41.3 - cli-bblessed-doc-view.md +45 -0
  73. package/.backlog/tasks/task-41.4 - cli-bblessed-board-view.md +49 -0
  74. package/.backlog/tasks/task-41.5 - cli-audit-remaining-ui-for-bblessed.md +55 -0
  75. package/.backlog/tasks/task-42 - visual-hierarchy.md +54 -0
  76. package/.backlog/tasks/task-43 - remove-duplicate-acceptance-criteria-and-style-metadata.md +56 -0
  77. package/.backlog/tasks/task-44 - checklist-alignment.md +24 -0
  78. package/.backlog/tasks/task-45 - safe-line-wrapping.md +23 -0
  79. package/.backlog/tasks/task-46 - split-pane-layout.md +24 -0
  80. package/.backlog/tasks/task-47 - sticky-header-in-detail-view.md +43 -0
  81. package/.backlog/tasks/task-48 - footer-hint-line.md +21 -0
  82. package/.backlog/tasks/task-49 - status-styling.md +53 -0
  83. package/.backlog/tasks/task-5 - cli-docs-decisions.md +57 -0
  84. package/.backlog/tasks/task-50 - borders-&-padding.md +22 -0
  85. package/.backlog/tasks/task-51 - code-path-styling.md +23 -0
  86. package/.backlog/tasks/task-52 - cli-filter-tasks-list-by-status-or-assignee.md +29 -0
  87. package/.backlog/tasks/task-6 - cli-packaging.md +65 -0
  88. package/.backlog/tasks/task-6.1 - cli-local-installation-support-for-bunx-npx.md +49 -0
  89. package/.backlog/tasks/task-6.2 - cli-github-actions-for-build-&-publish.md +64 -0
  90. package/.backlog/tasks/task-7 - cli-kanban-view.md +60 -0
  91. package/.backlog/tasks/task-7.1 - cli-kanban-board-detect-remote-task-status.md +62 -0
  92. package/.backlog/tasks/task-8 - gui-project-setup.md +21 -0
  93. package/.backlog/tasks/task-9 - gui-task-crud.md +24 -0
  94. package/.cursorrules +223 -0
  95. package/.gitattributes +2 -0
  96. package/.github/ISSUE_TEMPLATE/bug_report.md +25 -0
  97. package/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
  98. package/.github/PULL_REQUEST_TEMPLATE.md +8 -0
  99. package/.github/workflows/ci.yml +36 -0
  100. package/.husky/pre-commit +1 -0
  101. package/AGENTS.md +65 -0
  102. package/CLAUDE.md +87 -0
  103. package/CONTRIBUTING.md +19 -0
  104. package/DEVELOPMENT.md +37 -0
  105. package/LICENSE +21 -0
  106. package/biome.json +31 -0
  107. package/bun.lock +152 -0
  108. package/cli/.cursorrules-xh86jabm.md +82 -0
  109. package/cli/AGENTS-xh86jabm.md +82 -0
  110. package/cli/CLAUDE-xh86jabm.md +82 -0
  111. package/cli/backlog +0 -0
  112. package/cli/cli.js +19622 -0
  113. package/cli/index.js +2 -0
  114. package/docs/npm-publishing.md +69 -0
  115. package/package.json +47 -0
  116. package/readme.md +97 -0
  117. package/scripts/build.js +73 -0
  118. package/src/agent-instructions.ts +54 -0
  119. package/src/board.ts +263 -0
  120. package/src/cli.ts +806 -0
  121. package/src/constants/index.ts +48 -0
  122. package/src/core/backlog.ts +183 -0
  123. package/src/core/remote-tasks.ts +168 -0
  124. package/src/file-system/operations.ts +515 -0
  125. package/src/git/operations.ts +189 -0
  126. package/src/guidelines/.cursorrules.md +82 -0
  127. package/src/guidelines/AGENTS.md +82 -0
  128. package/src/guidelines/CLAUDE.md +82 -0
  129. package/src/guidelines/index.ts +7 -0
  130. package/src/index.ts +30 -0
  131. package/src/markdown/parser.ts +145 -0
  132. package/src/markdown/serializer.ts +71 -0
  133. package/src/test/agent-instructions.test.ts +62 -0
  134. package/src/test/board.test.ts +291 -0
  135. package/src/test/build.test.ts +28 -0
  136. package/src/test/checklist.test.ts +273 -0
  137. package/src/test/cli.test.ts +1300 -0
  138. package/src/test/code-path.test.ts +204 -0
  139. package/src/test/core.test.ts +330 -0
  140. package/src/test/filesystem.test.ts +435 -0
  141. package/src/test/git.test.ts +26 -0
  142. package/src/test/heading.test.ts +102 -0
  143. package/src/test/line-wrapping.test.ts +252 -0
  144. package/src/test/local-install.test.ts +34 -0
  145. package/src/test/markdown.test.ts +526 -0
  146. package/src/test/parallel-loading.test.ts +160 -0
  147. package/src/test/parent-id-normalization.test.ts +48 -0
  148. package/src/test/remote-id-conflict.test.ts +60 -0
  149. package/src/test/status-icon.test.ts +93 -0
  150. package/src/types/blessed.d.ts +14 -0
  151. package/src/types/index.ts +55 -0
  152. package/src/types/raw.d.ts +4 -0
  153. package/src/ui/board.ts +322 -0
  154. package/src/ui/checklist.ts +103 -0
  155. package/src/ui/code-path.ts +113 -0
  156. package/src/ui/heading.ts +121 -0
  157. package/src/ui/loading.ts +216 -0
  158. package/src/ui/status-icon.ts +53 -0
  159. package/src/ui/task-list.ts +168 -0
  160. package/src/ui/task-viewer.ts +640 -0
  161. package/src/ui/tui.ts +301 -0
  162. package/tsconfig.json +26 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,87 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Commands
6
+
7
+ ### Development
8
+ - `bun install` - Install dependencies
9
+ - `bun test` - Run tests
10
+ - `bun run format` - Format code with Biome
11
+ - `bun run lint` - Lint and auto-fix with Biome
12
+ - `bun run check` - Run all Biome checks (format + lint)
13
+
14
+ ### Testing
15
+ - `bun test` - Run all tests
16
+ - `bun test <filename>` - Run specific test file
17
+
18
+ ## Project Architecture
19
+
20
+ This is the **Backlog.md** project - a lightweight git + markdown project management tool for human-AI collaboration.
21
+
22
+ ### Core Structure
23
+ - **CLI Tool**: Built with Bun and TypeScript as a global npm package (`@backlog.md`)
24
+ - **Source Code**: Located in `/src` directory with modular TypeScript structure
25
+ - **Task Management**: Uses markdown files in `.backlog/` directory structure
26
+ - **Workflow**: Git-integrated with task IDs referenced in commits and PRs
27
+
28
+ ### Key Components
29
+ - **Task System**: Tasks stored as `task-<id> - <title>.md` files with decimal subtasks (e.g., `task-4.1`)
30
+ - **Configuration**: Uses `config.yml` for project settings
31
+ - **Status Workflow**: Draft → Active → Archive progression
32
+
33
+ ### AI Agent Integration
34
+ - Reference task IDs in commit messages and PR titles when implementing features
35
+ - Use `.backlog/tasks/` markdown files to understand implementation requirements
36
+ - Include a `## Description` section and a `## Acceptance Criteria` checklist in every task file
37
+ - Write relevant tests when implementing new functionality or fixing bugs
38
+ - Follow decimal numbering for subtasks
39
+ - Maintain clean git status before commits
40
+ - Use task-descriptive branch names: `<task-id> feature description`
41
+ - When you start working on a task, update its status to `In Progress`, assign yourself as the assignee, and push the change.
42
+ - After testing a task, mark it **Done** with:
43
+
44
+ ```bash
45
+ backlog task edit <task-id> --status Done
46
+ ```
47
+
48
+ ### Code Standards
49
+ - **Runtime**: Bun with TypeScript 5
50
+ - **Formatting**: Biome with tab indentation and double quotes
51
+ - **Linting**: Biome recommended rules
52
+ - **Testing**: Bun's built-in test runner
53
+ - **Pre-commit**: Husky + lint-staged automatically runs Biome checks before commits
54
+
55
+ The pre-commit hook automatically runs `biome check --write` on staged files to ensure code quality. If linting errors are found, the commit will be blocked until fixed.
56
+
57
+ ## Definition of Done
58
+
59
+ A task is **Done** only when **all** of the following hold:
60
+
61
+ 1. **Acceptance criteria** checklist in the task file is fully checked.
62
+ 2. **Automated tests** (unit + integration) cover new logic and CI passes.
63
+ 3. **Static analysis**: linter & formatter succeed (when available).
64
+ 4. **Documentation**:
65
+ - Docs updated.
66
+ - Task file appended with a `## Implementation Notes` section summarising approach, trade‑offs and follow‑ups.
67
+ 5. **Review**: code reviewed.
68
+ 6. **Task hygiene**: status set to **Done** via CLI.
69
+ 7. **No regressions**: performance, security and licence checks green.
70
+
71
+ ## Backlog.md Tool - CLI usage
72
+ | Purpose | Command |
73
+ |---------|---------|
74
+ | Create task | `backlog task create "Add OAuth"` |
75
+ | Create sub task | `backlog task create --parent 14 "Add Google auth"` |
76
+ | List tasks | `backlog task list` |
77
+ | View detail | `backlog task 7` |
78
+ | Edit | `backlog task edit 7 -a @sara -l auth,backend` |
79
+ | Archive | `backlog task archive 7` |
80
+ | Draft flow | `backlog draft create "Spike GraphQL"` → `backlog draft promote 3.1` |
81
+ | Demote to draft| `backlog task demote <id>` |
82
+
83
+ ## Backlog.md Tool - Tips for AI Agents
84
+ - Keep tasks **small, atomic, and testable**; create subtasks liberally.
85
+ - Prefer **idempotent** changes so reruns remain safe.
86
+ - Leave **breadcrumbs** in `## Implementation Notes`; humans may continue your thread.
87
+ - If uncertain, **draft a new task** describing the ambiguity rather than guessing.
@@ -0,0 +1,19 @@
1
+ # Contributing to Backlog.md
2
+
3
+ Thank you for your interest in contributing to Backlog.md. This project is managed using the Backlog.md workflow and we welcome community involvement.
4
+
5
+ ## Opening Issues
6
+
7
+ - Search existing issues before creating a new one.
8
+ - Provide a clear description of the problem or proposal.
9
+ - Reference the related task ID when applicable.
10
+
11
+ ## Pull Requests
12
+
13
+ 1. Fork the repository and create a branch named after the task ID and a short description (e.g. `task-27-contributing-guidelines`).
14
+ 2. Make your changes and commit them with the task ID in the message.
15
+ 3. Run tests with `bun test` and ensure they pass.
16
+ 4. Format and lint the code using `npx biome check .`.
17
+ 5. Open a pull request referencing the issue or task it addresses.
18
+
19
+ Please read [AGENTS.md](AGENTS.md) for detailed rules that apply to contributors and AI agents.
package/DEVELOPMENT.md ADDED
@@ -0,0 +1,37 @@
1
+ ## Local Development
2
+
3
+ Run these commands to bootstrap the project:
4
+
5
+ ```bash
6
+ bun install
7
+ ```
8
+
9
+ Run tests:
10
+
11
+ ```bash
12
+ bun test
13
+ ```
14
+
15
+ Format and lint:
16
+
17
+ ```bash
18
+ npx biome check .
19
+ ```
20
+
21
+ For contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
22
+
23
+ ## Release
24
+
25
+ To publish a new version to npm:
26
+
27
+ 1. Update the `version` field in `package.json`.
28
+ 2. Commit the change and create a git tag matching the version, e.g. `v0.1.0`.
29
+ ```bash
30
+ git tag v<version>
31
+ git push origin v<version>
32
+ ```
33
+ 3. Push the tag to trigger the GitHub Actions workflow. It will build, test and
34
+ publish the package to npm using the repository `NPM_TOKEN` secret.
35
+
36
+ [← Back to README](README.md)
37
+
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Backlog.md
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/biome.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3
+ "vcs": {
4
+ "enabled": false,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": false
7
+ },
8
+ "files": {
9
+ "ignoreUnknown": false,
10
+ "ignore": ["cli/"]
11
+ },
12
+ "formatter": {
13
+ "enabled": true,
14
+ "indentStyle": "tab",
15
+ "lineWidth": 120
16
+ },
17
+ "organizeImports": {
18
+ "enabled": true
19
+ },
20
+ "linter": {
21
+ "enabled": true,
22
+ "rules": {
23
+ "recommended": true
24
+ }
25
+ },
26
+ "javascript": {
27
+ "formatter": {
28
+ "quoteStyle": "double"
29
+ }
30
+ }
31
+ }
package/bun.lock ADDED
@@ -0,0 +1,152 @@
1
+ {
2
+ "lockfileVersion": 1,
3
+ "workspaces": {
4
+ "": {
5
+ "dependencies": {
6
+ "blessed": "0.1.81",
7
+ "commander": "14.0.0",
8
+ "gray-matter": "4.0.3",
9
+ },
10
+ "devDependencies": {
11
+ "@biomejs/biome": "1.9.4",
12
+ "@types/bun": "1.2.15",
13
+ "husky": "9.1.7",
14
+ "lint-staged": "16.1.0",
15
+ },
16
+ },
17
+ },
18
+ "trustedDependencies": [
19
+ "@biomejs/biome",
20
+ ],
21
+ "packages": {
22
+ "@biomejs/biome": ["@biomejs/biome@1.9.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "1.9.4", "@biomejs/cli-darwin-x64": "1.9.4", "@biomejs/cli-linux-arm64": "1.9.4", "@biomejs/cli-linux-arm64-musl": "1.9.4", "@biomejs/cli-linux-x64": "1.9.4", "@biomejs/cli-linux-x64-musl": "1.9.4", "@biomejs/cli-win32-arm64": "1.9.4", "@biomejs/cli-win32-x64": "1.9.4" }, "bin": { "biome": "bin/biome" } }, "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog=="],
23
+
24
+ "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@1.9.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw=="],
25
+
26
+ "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@1.9.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg=="],
27
+
28
+ "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g=="],
29
+
30
+ "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@1.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA=="],
31
+
32
+ "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg=="],
33
+
34
+ "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@1.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg=="],
35
+
36
+ "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@1.9.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg=="],
37
+
38
+ "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@1.9.4", "", { "os": "win32", "cpu": "x64" }, "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA=="],
39
+
40
+ "@types/bun": ["@types/bun@1.2.15", "", { "dependencies": { "bun-types": "1.2.15" } }, "sha512-U1ljPdBEphF0nw1MIk0hI7kPg7dFdPyM7EenHsp6W5loNHl7zqy6JQf/RKCgnUn2KDzUpkBwHPnEJEjII594bA=="],
41
+
42
+ "@types/node": ["@types/node@22.15.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA=="],
43
+
44
+ "ansi-escapes": ["ansi-escapes@7.0.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw=="],
45
+
46
+ "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
47
+
48
+ "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
49
+
50
+ "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
51
+
52
+ "blessed": ["blessed@0.1.81", "", { "bin": { "blessed": "./bin/tput.js" } }, "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ=="],
53
+
54
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
55
+
56
+ "bun-types": ["bun-types@1.2.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-NarRIaS+iOaQU1JPfyKhZm4AsUOrwUOqRNHY0XxI8GI8jYxiLXLcdjYMG9UKS+fwWasc1uw1htV9AX24dD+p4w=="],
57
+
58
+ "chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="],
59
+
60
+ "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
61
+
62
+ "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="],
63
+
64
+ "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="],
65
+
66
+ "commander": ["commander@14.0.0", "", {}, "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA=="],
67
+
68
+ "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
69
+
70
+ "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="],
71
+
72
+ "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
73
+
74
+ "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="],
75
+
76
+ "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
77
+
78
+ "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="],
79
+
80
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
81
+
82
+ "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="],
83
+
84
+ "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="],
85
+
86
+ "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="],
87
+
88
+ "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="],
89
+
90
+ "is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="],
91
+
92
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
93
+
94
+ "js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
95
+
96
+ "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
97
+
98
+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
99
+
100
+ "lint-staged": ["lint-staged@16.1.0", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^14.0.0", "debug": "^4.4.1", "lilconfig": "^3.1.3", "listr2": "^8.3.3", "micromatch": "^4.0.8", "nano-spawn": "^1.0.2", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-HkpQh69XHxgCjObjejBT3s2ILwNjFx8M3nw+tJ/ssBauDlIpkx2RpqWSi1fBgkXLSSXnbR3iEq1NkVtpvV+FLQ=="],
101
+
102
+ "listr2": ["listr2@8.3.3", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="],
103
+
104
+ "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="],
105
+
106
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
107
+
108
+ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="],
109
+
110
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
111
+
112
+ "nano-spawn": ["nano-spawn@1.0.2", "", {}, "sha512-21t+ozMQDAL/UGgQVBbZ/xXvNO10++ZPuTmKRO8k9V3AClVRht49ahtDjfY8l1q6nSHOrE5ASfthzH3ol6R/hg=="],
113
+
114
+ "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
115
+
116
+ "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
117
+
118
+ "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="],
119
+
120
+ "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="],
121
+
122
+ "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
123
+
124
+ "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="],
125
+
126
+ "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
127
+
128
+ "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
129
+
130
+ "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="],
131
+
132
+ "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="],
133
+
134
+ "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
135
+
136
+ "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
137
+
138
+ "strip-bom-string": ["strip-bom-string@1.0.0", "", {}, "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g=="],
139
+
140
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
141
+
142
+ "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
143
+
144
+ "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="],
145
+
146
+ "yaml": ["yaml@2.8.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ=="],
147
+
148
+ "log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="],
149
+
150
+ "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.0.0", "", { "dependencies": { "get-east-asian-width": "^1.0.0" } }, "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA=="],
151
+ }
152
+ }
@@ -0,0 +1,82 @@
1
+ # AI Agent Guidelines
2
+
3
+ *How to collaborate on Backlog.md–driven projects*
4
+
5
+ ---
6
+
7
+ ## 1. Source of Truth
8
+ - Tasks live under **`.backlog/tasks/`** (drafts under **`.backlog/drafts/`**).
9
+ - Every implementation decision starts with reading the corresponding Markdown task file.
10
+
11
+ ## 2. Typical Workflow
12
+
13
+ ```bash
14
+ # 1 Identify work
15
+ backlog task list --status "To Do"
16
+
17
+ # 2 Read details
18
+ backlog task view 42
19
+
20
+ # 3 Start work: assign yourself & move column
21
+ backlog task edit 42 -a @ai-bot -s "In Progress"
22
+
23
+ # 4 Break work down if needed
24
+ backlog task create "Refactor DB layer" --parent 42 -a @ai-bot
25
+
26
+ # 5 Complete and mark Done
27
+ backlog task edit 42 -s Done
28
+ ```
29
+
30
+ ## 3. Definition of Done (DOD)
31
+
32
+ A task is **Done** only when **all** of the following hold:
33
+
34
+ 1. **Acceptance criteria** checklist in the task file is fully checked.
35
+ 2. **Automated tests** (unit + integration) cover new logic and CI passes.
36
+ 3. **Static analysis**: linter & formatter succeed (when available).
37
+ 4. **Documentation**:
38
+ - Docs updated.
39
+ - Task file appended with a `## Implementation Notes` section summarising approach, trade‑offs and follow‑ups.
40
+ 5. **Review**: code reviewed.
41
+ 6. **Task hygiene**: status set to **Done** via CLI.
42
+ 7. **No regressions**: performance, security and licence checks green.
43
+
44
+ ## 4. Recommended Task Anatomy
45
+
46
+ ```markdown
47
+ # task‑42 - Add GraphQL resolver
48
+
49
+ ## Description
50
+ Short, imperative explanation of the work.
51
+
52
+ ## Acceptance Criteria
53
+ - [ ] Resolver returns correct data for happy path
54
+ - [ ] Error response matches REST
55
+ - [ ] P95 latency ≤ 50 ms under 100 RPS
56
+
57
+ ## Implementation Notes (only added after working on the task)
58
+ *Created by @ai-bot on 2025‑06‑13*
59
+
60
+ - Added `src/graphql/resolvers/user.ts`
61
+ - Considered DataLoader but deferred
62
+ - Follow‑up: integrate cache layer
63
+ ```
64
+
65
+ ## 5. Handy CLI Commands
66
+
67
+ | Purpose | Command |
68
+ |---------|---------|
69
+ | Create task | `backlog task create "Add OAuth"` |
70
+ | Create sub task | `backlog task create --parent 14 "Add Google auth"` |
71
+ | List tasks | `backlog task list` |
72
+ | View detail | `backlog task 7` |
73
+ | Edit | `backlog task edit 7 -a @sara -l auth,backend` |
74
+ | Archive | `backlog task archive 7` |
75
+ | Draft flow | `backlog draft create "Spike GraphQL"` → `backlog draft promote 3.1` |
76
+ | Demote to draft| `backlog task demote <id>` |
77
+
78
+ ## 6. Tips for AI Agents
79
+ - Keep tasks **small, atomic, and testable**; create subtasks liberally.
80
+ - Prefer **idempotent** changes so reruns remain safe.
81
+ - Leave **breadcrumbs** in `## Implementation Notes`; humans may continue your thread.
82
+ - If uncertain, **draft a new task** describing the ambiguity rather than guessing.
@@ -0,0 +1,82 @@
1
+ # AI Agent Guidelines
2
+
3
+ *How to collaborate on Backlog.md–driven projects*
4
+
5
+ ---
6
+
7
+ ## 1. Source of Truth
8
+ - Tasks live under **`.backlog/tasks/`** (drafts under **`.backlog/drafts/`**).
9
+ - Every implementation decision starts with reading the corresponding Markdown task file.
10
+
11
+ ## 2. Typical Workflow
12
+
13
+ ```bash
14
+ # 1 Identify work
15
+ backlog task list --status "To Do"
16
+
17
+ # 2 Read details
18
+ backlog task view 42
19
+
20
+ # 3 Start work: assign yourself & move column
21
+ backlog task edit 42 -a @ai-bot -s "In Progress"
22
+
23
+ # 4 Break work down if needed
24
+ backlog task create "Refactor DB layer" --parent 42 -a @ai-bot
25
+
26
+ # 5 Complete and mark Done
27
+ backlog task edit 42 -s Done
28
+ ```
29
+
30
+ ## 3. Definition of Done (DOD)
31
+
32
+ A task is **Done** only when **all** of the following hold:
33
+
34
+ 1. **Acceptance criteria** checklist in the task file is fully checked.
35
+ 2. **Automated tests** (unit + integration) cover new logic and CI passes.
36
+ 3. **Static analysis**: linter & formatter succeed (when available).
37
+ 4. **Documentation**:
38
+ - Docs updated.
39
+ - Task file appended with a `## Implementation Notes` section summarising approach, trade‑offs and follow‑ups.
40
+ 5. **Review**: code reviewed.
41
+ 6. **Task hygiene**: status set to **Done** via CLI.
42
+ 7. **No regressions**: performance, security and licence checks green.
43
+
44
+ ## 4. Recommended Task Anatomy
45
+
46
+ ```markdown
47
+ # task‑42 - Add GraphQL resolver
48
+
49
+ ## Description
50
+ Short, imperative explanation of the work.
51
+
52
+ ## Acceptance Criteria
53
+ - [ ] Resolver returns correct data for happy path
54
+ - [ ] Error response matches REST
55
+ - [ ] P95 latency ≤ 50 ms under 100 RPS
56
+
57
+ ## Implementation Notes (only added after working on the task)
58
+ *Created by @ai-bot on 2025‑06‑13*
59
+
60
+ - Added `src/graphql/resolvers/user.ts`
61
+ - Considered DataLoader but deferred
62
+ - Follow‑up: integrate cache layer
63
+ ```
64
+
65
+ ## 5. Handy CLI Commands
66
+
67
+ | Purpose | Command |
68
+ |---------|---------|
69
+ | Create task | `backlog task create "Add OAuth"` |
70
+ | Create sub task | `backlog task create --parent 14 "Add Google auth"` |
71
+ | List tasks | `backlog task list` |
72
+ | View detail | `backlog task 7` |
73
+ | Edit | `backlog task edit 7 -a @sara -l auth,backend` |
74
+ | Archive | `backlog task archive 7` |
75
+ | Draft flow | `backlog draft create "Spike GraphQL"` → `backlog draft promote 3.1` |
76
+ | Demote to draft| `backlog task demote <id>` |
77
+
78
+ ## 6. Tips for AI Agents
79
+ - Keep tasks **small, atomic, and testable**; create subtasks liberally.
80
+ - Prefer **idempotent** changes so reruns remain safe.
81
+ - Leave **breadcrumbs** in `## Implementation Notes`; humans may continue your thread.
82
+ - If uncertain, **draft a new task** describing the ambiguity rather than guessing.
@@ -0,0 +1,82 @@
1
+ # AI Agent Guidelines
2
+
3
+ *How to collaborate on Backlog.md–driven projects*
4
+
5
+ ---
6
+
7
+ ## 1. Source of Truth
8
+ - Tasks live under **`.backlog/tasks/`** (drafts under **`.backlog/drafts/`**).
9
+ - Every implementation decision starts with reading the corresponding Markdown task file.
10
+
11
+ ## 2. Typical Workflow
12
+
13
+ ```bash
14
+ # 1 Identify work
15
+ backlog task list --status "To Do"
16
+
17
+ # 2 Read details
18
+ backlog task view 42
19
+
20
+ # 3 Start work: assign yourself & move column
21
+ backlog task edit 42 -a @ai-bot -s "In Progress"
22
+
23
+ # 4 Break work down if needed
24
+ backlog task create "Refactor DB layer" --parent 42 -a @ai-bot
25
+
26
+ # 5 Complete and mark Done
27
+ backlog task edit 42 -s Done
28
+ ```
29
+
30
+ ## 3. Definition of Done (DOD)
31
+
32
+ A task is **Done** only when **all** of the following hold:
33
+
34
+ 1. **Acceptance criteria** checklist in the task file is fully checked.
35
+ 2. **Automated tests** (unit + integration) cover new logic and CI passes.
36
+ 3. **Static analysis**: linter & formatter succeed (when available).
37
+ 4. **Documentation**:
38
+ - Docs updated.
39
+ - Task file appended with a `## Implementation Notes` section summarising approach, trade‑offs and follow‑ups.
40
+ 5. **Review**: code reviewed.
41
+ 6. **Task hygiene**: status set to **Done** via CLI.
42
+ 7. **No regressions**: performance, security and licence checks green.
43
+
44
+ ## 4. Recommended Task Anatomy
45
+
46
+ ```markdown
47
+ # task‑42 - Add GraphQL resolver
48
+
49
+ ## Description
50
+ Short, imperative explanation of the work.
51
+
52
+ ## Acceptance Criteria
53
+ - [ ] Resolver returns correct data for happy path
54
+ - [ ] Error response matches REST
55
+ - [ ] P95 latency ≤ 50 ms under 100 RPS
56
+
57
+ ## Implementation Notes (only added after working on the task)
58
+ *Created by @ai-bot on 2025‑06‑13*
59
+
60
+ - Added `src/graphql/resolvers/user.ts`
61
+ - Considered DataLoader but deferred
62
+ - Follow‑up: integrate cache layer
63
+ ```
64
+
65
+ ## 5. Handy CLI Commands
66
+
67
+ | Purpose | Command |
68
+ |---------|---------|
69
+ | Create task | `backlog task create "Add OAuth"` |
70
+ | Create sub task | `backlog task create --parent 14 "Add Google auth"` |
71
+ | List tasks | `backlog task list` |
72
+ | View detail | `backlog task 7` |
73
+ | Edit | `backlog task edit 7 -a @sara -l auth,backend` |
74
+ | Archive | `backlog task archive 7` |
75
+ | Draft flow | `backlog draft create "Spike GraphQL"` → `backlog draft promote 3.1` |
76
+ | Demote to draft| `backlog task demote <id>` |
77
+
78
+ ## 6. Tips for AI Agents
79
+ - Keep tasks **small, atomic, and testable**; create subtasks liberally.
80
+ - Prefer **idempotent** changes so reruns remain safe.
81
+ - Leave **breadcrumbs** in `## Implementation Notes`; humans may continue your thread.
82
+ - If uncertain, **draft a new task** describing the ambiguity rather than guessing.
package/cli/backlog ADDED
Binary file