You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
6.**No co-authors** - Do not add co-author information on commits or pull requests
13
-
7.**No "generated by" statements** - Do not add generated-by statements on pull requests
14
+
6.**Working an issue** - When working an issue, always create a new branch from an updated main branch
15
+
7.**Check branch status before pushing** - ALWAYS verify the remote tracking branch still exists before pushing. If a PR was merged/deleted, create a new branch from main instead of trying to push to the old one.
16
+
8.**Run validation before commits** - Run `cargo fmt`, `cargo clippy`, and `cargo test` before committing and pushing
17
+
9.**Cross-platform** - All features must work on Windows, macOS, and Linux
18
+
10.**No co-authors** - Do not add any co-author information on commits or pull requests
19
+
11.**No "generated by" statements** - Do not add generated-by statements on pull requests
14
20
15
-
## Project Overview
21
+
---
16
22
17
-
**rnr** (pronounced "runner") is a cross-platform task runner designed for zero-setup execution. Clone a repo and tasks just work - no dependency installs, no global tools, no configuration.
23
+
## Conventional Commit Types
18
24
19
-
## Tech Stack
25
+
| Type | Description |
26
+
|------|-------------|
27
+
|`feat`| New feature |
28
+
|`fix`| Bug fix |
29
+
|`docs`| Documentation only |
30
+
|`refactor`| Code change (no bug fix or feature) |
### GitHub Issue Dependencies (Blocked By / Blocking)
73
+
74
+
```bash
75
+
# List what blocks an issue
76
+
gh api repos/CodingWithCalvin/rnr.cli/issues/<number>/dependencies/blocked_by --jq '.[] | "#\(.number) \(.title)"'
77
+
78
+
# List what an issue blocks
79
+
gh api repos/CodingWithCalvin/rnr.cli/issues/<number>/dependencies/blocking --jq '.[] | "#\(.number) \(.title)"'
80
+
81
+
# Add a blocking relationship (issue <number> is blocked by <blocker_id>)
82
+
# First get the blocker's numeric ID (not issue number):
83
+
gh api repos/CodingWithCalvin/rnr.cli/issues/<blocker_number> --jq '.id'
84
+
# Then add the dependency:
85
+
gh api repos/CodingWithCalvin/rnr.cli/issues/<number>/dependencies/blocked_by -X POST -F issue_id=<blocker_id>
86
+
87
+
# Remove a blocking relationship
88
+
gh api repos/CodingWithCalvin/rnr.cli/issues/<number>/dependencies/blocked_by/<blocker_id> -X DELETE
89
+
```
90
+
91
+
**Note:** The API uses numeric issue IDs (not issue numbers) for POST/DELETE operations. Get the ID with `gh api repos/CodingWithCalvin/rnr.cli/issues/<number> --jq '.id'`
92
+
93
+
---
94
+
95
+
## Project Overview
96
+
97
+
**rnr** (pronounced "runner") is a cross-platform task runner designed for zero-setup execution. Clone a repo and tasks just work - no dependency installs, no global tools, no configuration.
98
+
99
+
| Attribute | Value |
100
+
|-----------|-------|
101
+
| Language | Rust |
102
+
| Target Platforms | Windows, macOS, Linux |
103
+
| Task File Format | YAML (`rnr.yaml`) |
104
+
105
+
---
106
+
47
107
## Project Structure
48
108
49
109
```
@@ -65,6 +125,8 @@ rnr.cli/
65
125
└── README.md
66
126
```
67
127
128
+
---
129
+
68
130
## Architecture
69
131
70
132
See `DESIGN.md` for complete design documentation including:
@@ -73,9 +135,9 @@ See `DESIGN.md` for complete design documentation including:
73
135
- MVP features
74
136
- Future features
75
137
76
-
## Conventions
138
+
---
77
139
78
-
###Task File Schema
140
+
## Task File Schema
79
141
80
142
Tasks are defined in `rnr.yaml`:
81
143
@@ -90,17 +152,65 @@ test:
90
152
env:
91
153
RUST_LOG: debug
92
154
cmd: cargo test
155
+
156
+
# Sequential steps
157
+
ci:
158
+
steps:
159
+
- task: lint
160
+
- task: test
161
+
- task: build
162
+
163
+
# Parallel execution
164
+
build-all:
165
+
steps:
166
+
- parallel:
167
+
- task: build-api
168
+
- task: build-web
93
169
```
94
170
95
-
### Error Handling
171
+
---
96
172
97
-
- Use `anyhow` for application errors
98
-
- Use `thiserror` for library errors
99
-
- Provide clear, actionable error messages
173
+
## Code Style
100
174
101
-
### Code Style
175
+
### Rust Conventions
102
176
103
177
- Follow Rust idioms
104
178
- Use `clippy` for linting
105
179
- Use `rustfmt` for formatting
106
180
- Prefer explicit error handling over `.unwrap()`
181
+
182
+
### Error Handling
183
+
184
+
- Use `anyhow` for application errors
185
+
- Use `thiserror` for library errors
186
+
- Provide clear, actionable error messages
187
+
188
+
### Cross-Platform
189
+
190
+
- Use `std::path::PathBuf` for paths, not string concatenation
191
+
- Test on Windows, macOS, and Linux
192
+
- Handle platform-specific shell execution (`sh -c` vs `cmd /c`)
193
+
194
+
---
195
+
196
+
## CI/CD
197
+
198
+
### Expected Workflows
199
+
200
+
| Workflow | Trigger | Purpose |
201
+
|----------|---------|---------|
202
+
| `build.yml` | PR, push to main | Lint, build, test on Windows/macOS/Linux |
203
+
| `release.yml` | Manual/tag | Build release binaries for all platforms |
0 commit comments