@mytechtoday/augment-extensions 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.
- package/AGENTS.md +152 -0
- package/LICENSE +22 -0
- package/MODULES.md +124 -0
- package/README.md +195 -0
- package/cli/dist/cli.d.ts +3 -0
- package/cli/dist/cli.d.ts.map +1 -0
- package/cli/dist/cli.js +100 -0
- package/cli/dist/cli.js.map +1 -0
- package/cli/dist/commands/init.d.ts +6 -0
- package/cli/dist/commands/init.d.ts.map +1 -0
- package/cli/dist/commands/init.js +137 -0
- package/cli/dist/commands/init.js.map +1 -0
- package/cli/dist/commands/link.d.ts +6 -0
- package/cli/dist/commands/link.d.ts.map +1 -0
- package/cli/dist/commands/link.js +85 -0
- package/cli/dist/commands/link.js.map +1 -0
- package/cli/dist/commands/list.d.ts +7 -0
- package/cli/dist/commands/list.d.ts.map +1 -0
- package/cli/dist/commands/list.js +122 -0
- package/cli/dist/commands/list.js.map +1 -0
- package/cli/dist/commands/search.d.ts +6 -0
- package/cli/dist/commands/search.d.ts.map +1 -0
- package/cli/dist/commands/search.js +16 -0
- package/cli/dist/commands/search.js.map +1 -0
- package/cli/dist/commands/show.d.ts +6 -0
- package/cli/dist/commands/show.d.ts.map +1 -0
- package/cli/dist/commands/show.js +106 -0
- package/cli/dist/commands/show.js.map +1 -0
- package/cli/dist/commands/update.d.ts +6 -0
- package/cli/dist/commands/update.d.ts.map +1 -0
- package/cli/dist/commands/update.js +19 -0
- package/cli/dist/commands/update.js.map +1 -0
- package/modules/coding-standards/typescript/README.md +45 -0
- package/modules/coding-standards/typescript/module.json +27 -0
- package/modules/coding-standards/typescript/rules/naming-conventions.md +225 -0
- package/modules/workflows/beads/README.md +135 -0
- package/modules/workflows/beads/examples/complete-workflow-example.md +278 -0
- package/modules/workflows/beads/module.json +54 -0
- package/modules/workflows/beads/rules/best-practices.md +398 -0
- package/modules/workflows/beads/rules/file-format.md +283 -0
- package/modules/workflows/beads/rules/manual-setup.md +315 -0
- package/modules/workflows/beads/rules/workflow.md +285 -0
- package/modules/workflows/openspec/README.md +96 -0
- package/modules/workflows/openspec/examples/complete-change-example.md +230 -0
- package/modules/workflows/openspec/module.json +53 -0
- package/modules/workflows/openspec/rules/best-practices.md +272 -0
- package/modules/workflows/openspec/rules/manual-setup.md +231 -0
- package/modules/workflows/openspec/rules/spec-format.md +193 -0
- package/modules/workflows/openspec/rules/workflow.md +189 -0
- package/package.json +72 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "typescript-standards",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"displayName": "TypeScript Standards",
|
|
5
|
+
"description": "Comprehensive TypeScript coding standards and best practices",
|
|
6
|
+
"type": "coding-standards",
|
|
7
|
+
"language": "typescript",
|
|
8
|
+
"author": "Augment Extensions",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": ["typescript", "coding-standards", "best-practices", "type-safety"],
|
|
11
|
+
"dependencies": {},
|
|
12
|
+
"files": [
|
|
13
|
+
"rules/naming-conventions.md",
|
|
14
|
+
"rules/type-safety.md",
|
|
15
|
+
"rules/error-handling.md",
|
|
16
|
+
"rules/async-patterns.md",
|
|
17
|
+
"examples/best-practices.ts"
|
|
18
|
+
],
|
|
19
|
+
"augment": {
|
|
20
|
+
"minVersion": "1.0.0",
|
|
21
|
+
"characterCount": 6416,
|
|
22
|
+
"priority": "high",
|
|
23
|
+
"category": "coding-standards",
|
|
24
|
+
"autoLoad": false
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# TypeScript Naming Conventions
|
|
2
|
+
|
|
3
|
+
## Core Principles
|
|
4
|
+
|
|
5
|
+
1. **Clarity over brevity** - Names should be self-documenting
|
|
6
|
+
2. **Consistency** - Follow established patterns throughout codebase
|
|
7
|
+
3. **Avoid abbreviations** - Unless universally understood (e.g., `id`, `url`)
|
|
8
|
+
|
|
9
|
+
## Variables and Constants
|
|
10
|
+
|
|
11
|
+
### Variables (camelCase)
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
// ✅ Good
|
|
15
|
+
const userProfile = getUserProfile();
|
|
16
|
+
const isAuthenticated = checkAuth();
|
|
17
|
+
const totalCount = items.length;
|
|
18
|
+
|
|
19
|
+
// ❌ Bad
|
|
20
|
+
const up = getUserProfile();
|
|
21
|
+
const auth = checkAuth();
|
|
22
|
+
const cnt = items.length;
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Constants (UPPER_SNAKE_CASE for true constants)
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
// ✅ Good - True constants
|
|
29
|
+
const MAX_RETRY_ATTEMPTS = 3;
|
|
30
|
+
const API_BASE_URL = 'https://api.example.com';
|
|
31
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
32
|
+
|
|
33
|
+
// ✅ Good - Configuration objects (camelCase)
|
|
34
|
+
const apiConfig = {
|
|
35
|
+
baseUrl: 'https://api.example.com',
|
|
36
|
+
timeout: 5000,
|
|
37
|
+
retries: 3
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// ❌ Bad - Mixing conventions
|
|
41
|
+
const Max_Retry_Attempts = 3;
|
|
42
|
+
const api_base_url = 'https://api.example.com';
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Functions and Methods
|
|
46
|
+
|
|
47
|
+
### Functions (camelCase, verb-based)
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// ✅ Good - Clear action verbs
|
|
51
|
+
function fetchUserData(userId: string): Promise<User> { }
|
|
52
|
+
function validateEmail(email: string): boolean { }
|
|
53
|
+
function transformResponse(data: ApiResponse): User[] { }
|
|
54
|
+
|
|
55
|
+
// ❌ Bad - Unclear or noun-based
|
|
56
|
+
function user(id: string): Promise<User> { }
|
|
57
|
+
function email(e: string): boolean { }
|
|
58
|
+
function response(d: ApiResponse): User[] { }
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Boolean Functions (is/has/can/should prefix)
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
// ✅ Good
|
|
65
|
+
function isValidEmail(email: string): boolean { }
|
|
66
|
+
function hasPermission(user: User, permission: string): boolean { }
|
|
67
|
+
function canEditPost(user: User, post: Post): boolean { }
|
|
68
|
+
function shouldRetry(attempt: number): boolean { }
|
|
69
|
+
|
|
70
|
+
// ❌ Bad
|
|
71
|
+
function validEmail(email: string): boolean { }
|
|
72
|
+
function permission(user: User, perm: string): boolean { }
|
|
73
|
+
function editPost(user: User, post: Post): boolean { }
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Classes and Interfaces
|
|
77
|
+
|
|
78
|
+
### Classes (PascalCase, noun-based)
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// ✅ Good
|
|
82
|
+
class UserRepository { }
|
|
83
|
+
class EmailValidator { }
|
|
84
|
+
class PaymentProcessor { }
|
|
85
|
+
class HttpClient { }
|
|
86
|
+
|
|
87
|
+
// ❌ Bad
|
|
88
|
+
class userRepository { }
|
|
89
|
+
class validateEmail { }
|
|
90
|
+
class processPayment { }
|
|
91
|
+
class httpClient { }
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Interfaces (PascalCase, descriptive)
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// ✅ Good - No 'I' prefix (modern TypeScript convention)
|
|
98
|
+
interface User {
|
|
99
|
+
id: string;
|
|
100
|
+
email: string;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
interface UserRepository {
|
|
104
|
+
findById(id: string): Promise<User | null>;
|
|
105
|
+
save(user: User): Promise<void>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// ❌ Bad - Hungarian notation
|
|
109
|
+
interface IUser { }
|
|
110
|
+
interface IUserRepository { }
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Type Aliases (PascalCase)
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// ✅ Good
|
|
117
|
+
type UserId = string;
|
|
118
|
+
type UserRole = 'admin' | 'user' | 'guest';
|
|
119
|
+
type ApiResponse<T> = {
|
|
120
|
+
data: T;
|
|
121
|
+
error?: string;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// ❌ Bad
|
|
125
|
+
type userId = string;
|
|
126
|
+
type user_role = 'admin' | 'user' | 'guest';
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Enums
|
|
130
|
+
|
|
131
|
+
### Enums (PascalCase for enum, UPPER_SNAKE_CASE for values)
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
// ✅ Good
|
|
135
|
+
enum UserRole {
|
|
136
|
+
ADMIN = 'ADMIN',
|
|
137
|
+
USER = 'USER',
|
|
138
|
+
GUEST = 'GUEST'
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
enum HttpStatus {
|
|
142
|
+
OK = 200,
|
|
143
|
+
NOT_FOUND = 404,
|
|
144
|
+
INTERNAL_ERROR = 500
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ❌ Bad
|
|
148
|
+
enum userRole {
|
|
149
|
+
admin = 'admin',
|
|
150
|
+
user = 'user'
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Generics
|
|
155
|
+
|
|
156
|
+
### Generic Type Parameters
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
// ✅ Good - Descriptive single letter or full word
|
|
160
|
+
function map<T, U>(items: T[], fn: (item: T) => U): U[] { }
|
|
161
|
+
function createRepository<TEntity>(config: Config): Repository<TEntity> { }
|
|
162
|
+
|
|
163
|
+
// ✅ Good - Multiple related generics
|
|
164
|
+
interface Map<TKey, TValue> {
|
|
165
|
+
get(key: TKey): TValue | undefined;
|
|
166
|
+
set(key: TKey, value: TValue): void;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// ❌ Bad - Unclear or inconsistent
|
|
170
|
+
function map<A, B>(items: A[], fn: (item: A) => B): B[] { }
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Files and Directories
|
|
174
|
+
|
|
175
|
+
### File Names (kebab-case)
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
// ✅ Good
|
|
179
|
+
user-repository.ts
|
|
180
|
+
email-validator.ts
|
|
181
|
+
payment-processor.ts
|
|
182
|
+
api-client.ts
|
|
183
|
+
|
|
184
|
+
// ❌ Bad
|
|
185
|
+
UserRepository.ts
|
|
186
|
+
emailValidator.ts
|
|
187
|
+
payment_processor.ts
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Directory Names (kebab-case)
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
src/
|
|
194
|
+
├── user-management/
|
|
195
|
+
├── payment-processing/
|
|
196
|
+
├── api-clients/
|
|
197
|
+
└── shared-utilities/
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Private Members
|
|
201
|
+
|
|
202
|
+
### Private Fields (prefix with underscore)
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
class UserService {
|
|
206
|
+
// ✅ Good
|
|
207
|
+
private _cache: Map<string, User>;
|
|
208
|
+
private _apiClient: HttpClient;
|
|
209
|
+
|
|
210
|
+
// ❌ Bad (no clear indication of privacy)
|
|
211
|
+
private cache: Map<string, User>;
|
|
212
|
+
private apiClient: HttpClient;
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Summary
|
|
217
|
+
|
|
218
|
+
- **Variables/Functions**: camelCase
|
|
219
|
+
- **Classes/Interfaces/Types**: PascalCase
|
|
220
|
+
- **Constants**: UPPER_SNAKE_CASE (true constants) or camelCase (config objects)
|
|
221
|
+
- **Files/Directories**: kebab-case
|
|
222
|
+
- **Booleans**: is/has/can/should prefix
|
|
223
|
+
- **Generics**: T, U, V or descriptive (TEntity, TKey, TValue)
|
|
224
|
+
- **Private**: Prefix with underscore
|
|
225
|
+
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Beads Workflow Module
|
|
2
|
+
|
|
3
|
+
**Distributed, git-backed graph issue tracker for AI agents.**
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Beads provides persistent, structured memory for coding agents. It replaces messy markdown plans with a dependency-aware graph, allowing agents to handle long-horizon tasks without losing context.
|
|
8
|
+
|
|
9
|
+
## Key Benefits
|
|
10
|
+
|
|
11
|
+
- **Git as Database**: Issues stored as JSONL in `.beads/` directory, versioned with your code
|
|
12
|
+
- **Agent-Optimized**: JSON output, dependency tracking, auto-ready task detection
|
|
13
|
+
- **Zero Conflict**: Hash-based IDs (`bd-a1b2`) prevent merge collisions in multi-agent workflows
|
|
14
|
+
- **Invisible Infrastructure**: SQLite local cache for speed, background daemon for auto-sync
|
|
15
|
+
- **Memory Decay**: Semantic compaction summarizes old closed tasks to save context window
|
|
16
|
+
|
|
17
|
+
## Installation Options
|
|
18
|
+
|
|
19
|
+
### Option 1: With CLI (Recommended)
|
|
20
|
+
|
|
21
|
+
Install the Beads CLI for full features:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# npm
|
|
25
|
+
npm install -g @beads/bd
|
|
26
|
+
|
|
27
|
+
# Homebrew
|
|
28
|
+
brew install steveyegge/beads/bd
|
|
29
|
+
|
|
30
|
+
# Go
|
|
31
|
+
go install github.com/steveyegge/beads/cmd/bd@latest
|
|
32
|
+
|
|
33
|
+
# Initialize in your project
|
|
34
|
+
cd your-project
|
|
35
|
+
bd init
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Benefits**: SQLite cache, auto-sync daemon, validation, JSON output, compaction
|
|
39
|
+
|
|
40
|
+
### Option 2: Without CLI (Manual)
|
|
41
|
+
|
|
42
|
+
Work with `.beads/` files directly without installing the CLI. See `rules/manual-setup.md` for instructions.
|
|
43
|
+
|
|
44
|
+
**Benefits**: No installation required, works immediately
|
|
45
|
+
|
|
46
|
+
**Limitations**: No SQLite cache, manual sync, no validation, no compaction
|
|
47
|
+
|
|
48
|
+
## Directory Structure
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
your-project/
|
|
52
|
+
├── .beads/
|
|
53
|
+
│ ├── issues.jsonl # All issues (append-only log)
|
|
54
|
+
│ ├── config.json # Beads configuration
|
|
55
|
+
│ └── cache.db # SQLite cache (CLI only, gitignored)
|
|
56
|
+
└── AGENTS.md # AI agent instructions
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Core Workflow
|
|
60
|
+
|
|
61
|
+
### Creating Tasks
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# With CLI
|
|
65
|
+
bd create "Implement user authentication" -p 0
|
|
66
|
+
|
|
67
|
+
# Without CLI - append to .beads/issues.jsonl
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Viewing Ready Tasks
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# With CLI
|
|
74
|
+
bd ready
|
|
75
|
+
|
|
76
|
+
# Shows tasks with no open blockers
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Managing Dependencies
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# With CLI
|
|
83
|
+
bd dep add <child-id> <parent-id>
|
|
84
|
+
|
|
85
|
+
# Creates blocks/blocked-by relationships
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Closing Tasks
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# With CLI
|
|
92
|
+
bd close <id>
|
|
93
|
+
|
|
94
|
+
# Marks task as closed
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Hierarchical IDs
|
|
98
|
+
|
|
99
|
+
Beads supports epic/task/subtask hierarchy:
|
|
100
|
+
|
|
101
|
+
- `bd-a3f8` (Epic)
|
|
102
|
+
- `bd-a3f8.1` (Task)
|
|
103
|
+
- `bd-a3f8.1.1` (Sub-task)
|
|
104
|
+
|
|
105
|
+
## Stealth Mode
|
|
106
|
+
|
|
107
|
+
Use Beads locally without committing to the main repo:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
bd init --stealth
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Perfect for personal use on shared projects.
|
|
114
|
+
|
|
115
|
+
## Character Count
|
|
116
|
+
|
|
117
|
+
This module contains comprehensive Beads workflow documentation that exceeds the standard `.augment/` folder character limit.
|
|
118
|
+
|
|
119
|
+
**Total**: ~28,000 characters across all rule files
|
|
120
|
+
|
|
121
|
+
## Contents
|
|
122
|
+
|
|
123
|
+
- `rules/workflow.md` - Complete workflow guide
|
|
124
|
+
- `rules/file-format.md` - JSONL file format specification
|
|
125
|
+
- `rules/manual-setup.md` - Manual setup without CLI
|
|
126
|
+
- `rules/commands.md` - CLI command reference
|
|
127
|
+
- `rules/best-practices.md` - Tips and patterns
|
|
128
|
+
- `examples/` - Example workflows and use cases
|
|
129
|
+
|
|
130
|
+
## Learn More
|
|
131
|
+
|
|
132
|
+
- **GitHub**: https://github.com/steveyegge/beads
|
|
133
|
+
- **Agent Instructions**: https://github.com/steveyegge/beads/blob/main/AGENT_INSTRUCTIONS.md
|
|
134
|
+
- **Documentation**: See `rules/` directory in this module
|
|
135
|
+
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Complete Beads Workflow Example
|
|
2
|
+
|
|
3
|
+
This example shows a complete Beads workflow from start to finish.
|
|
4
|
+
|
|
5
|
+
## Scenario
|
|
6
|
+
|
|
7
|
+
Building a user authentication system with multiple dependent tasks.
|
|
8
|
+
|
|
9
|
+
## Step 1: Initialize Beads
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# With CLI
|
|
13
|
+
bd init
|
|
14
|
+
|
|
15
|
+
# Without CLI
|
|
16
|
+
mkdir .beads
|
|
17
|
+
touch .beads/issues.jsonl
|
|
18
|
+
echo '{"version": "1.0"}' > .beads/config.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Step 2: Create Epic
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# With CLI
|
|
25
|
+
bd create "User Authentication System" -p 0
|
|
26
|
+
# Returns: bd-a3f8
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{"id":"bd-a3f8","title":"User Authentication System","status":"open","priority":0,"created":"2024-01-20T10:00:00Z","updated":"2024-01-20T10:00:00Z"}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Step 3: Create Tasks
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# With CLI
|
|
39
|
+
bd create "Add database schema" -p 0 --parent bd-a3f8
|
|
40
|
+
# Returns: bd-a3f8.1
|
|
41
|
+
|
|
42
|
+
bd create "Add password hashing" -p 1 --parent bd-a3f8
|
|
43
|
+
# Returns: bd-a3f8.2
|
|
44
|
+
|
|
45
|
+
bd create "Add JWT generation" -p 1 --parent bd-a3f8
|
|
46
|
+
# Returns: bd-a3f8.3
|
|
47
|
+
|
|
48
|
+
bd create "Add login endpoint" -p 1 --parent bd-a3f8
|
|
49
|
+
# Returns: bd-a3f8.4
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
53
|
+
|
|
54
|
+
```jsonl
|
|
55
|
+
{"id":"bd-a3f8.1","title":"Add database schema","status":"open","priority":0,"parent":"bd-a3f8","created":"2024-01-20T10:01:00Z","updated":"2024-01-20T10:01:00Z"}
|
|
56
|
+
{"id":"bd-a3f8.2","title":"Add password hashing","status":"open","priority":1,"parent":"bd-a3f8","created":"2024-01-20T10:02:00Z","updated":"2024-01-20T10:02:00Z"}
|
|
57
|
+
{"id":"bd-a3f8.3","title":"Add JWT generation","status":"open","priority":1,"parent":"bd-a3f8","created":"2024-01-20T10:03:00Z","updated":"2024-01-20T10:03:00Z"}
|
|
58
|
+
{"id":"bd-a3f8.4","title":"Add login endpoint","status":"open","priority":1,"parent":"bd-a3f8","created":"2024-01-20T10:04:00Z","updated":"2024-01-20T10:04:00Z"}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Step 4: Add Dependencies
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# With CLI
|
|
65
|
+
bd dep add bd-a3f8.2 bd-a3f8.1 # Password hashing depends on schema
|
|
66
|
+
bd dep add bd-a3f8.3 bd-a3f8.1 # JWT generation depends on schema
|
|
67
|
+
bd dep add bd-a3f8.4 bd-a3f8.2 # Login endpoint depends on password hashing
|
|
68
|
+
bd dep add bd-a3f8.4 bd-a3f8.3 # Login endpoint depends on JWT generation
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
72
|
+
|
|
73
|
+
```jsonl
|
|
74
|
+
{"id":"bd-a3f8.1","blocks":["bd-a3f8.2","bd-a3f8.3"],"updated":"2024-01-20T10:05:00Z"}
|
|
75
|
+
{"id":"bd-a3f8.2","blocked_by":["bd-a3f8.1"],"blocks":["bd-a3f8.4"],"updated":"2024-01-20T10:05:00Z"}
|
|
76
|
+
{"id":"bd-a3f8.3","blocked_by":["bd-a3f8.1"],"blocks":["bd-a3f8.4"],"updated":"2024-01-20T10:05:00Z"}
|
|
77
|
+
{"id":"bd-a3f8.4","blocked_by":["bd-a3f8.2","bd-a3f8.3"],"updated":"2024-01-20T10:05:00Z"}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Step 5: Find Ready Tasks
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# With CLI
|
|
84
|
+
bd ready
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Output**:
|
|
88
|
+
```
|
|
89
|
+
bd-a3f8.1 Add database schema P0
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Only `bd-a3f8.1` is ready because it has no blockers.
|
|
93
|
+
|
|
94
|
+
## Step 6: Work on First Task
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# With CLI
|
|
98
|
+
bd update bd-a3f8.1 --status in-progress
|
|
99
|
+
bd comment bd-a3f8.1 "Creating users table with email, password_hash, created_at columns"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
103
|
+
|
|
104
|
+
```jsonl
|
|
105
|
+
{"id":"bd-a3f8.1","status":"in-progress","updated":"2024-01-20T11:00:00Z"}
|
|
106
|
+
{"id":"bd-a3f8.1","comments":[{"text":"Creating users table with email, password_hash, created_at columns","timestamp":"2024-01-20T11:00:00Z"}],"updated":"2024-01-20T11:00:00Z"}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## Step 7: Complete First Task
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# With CLI
|
|
113
|
+
bd close bd-a3f8.1
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
117
|
+
|
|
118
|
+
```jsonl
|
|
119
|
+
{"id":"bd-a3f8.1","status":"closed","closed":"2024-01-20T12:00:00Z","updated":"2024-01-20T12:00:00Z"}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Step 8: Find Next Ready Tasks
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# With CLI
|
|
126
|
+
bd ready
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Output**:
|
|
130
|
+
```
|
|
131
|
+
bd-a3f8.2 Add password hashing P1
|
|
132
|
+
bd-a3f8.3 Add JWT generation P1
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Now both `bd-a3f8.2` and `bd-a3f8.3` are ready because their blocker (`bd-a3f8.1`) is closed.
|
|
136
|
+
|
|
137
|
+
## Step 9: Work on Multiple Tasks
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# With CLI - work on password hashing
|
|
141
|
+
bd update bd-a3f8.2 --status in-progress
|
|
142
|
+
bd comment bd-a3f8.2 "Using bcrypt with cost factor 12"
|
|
143
|
+
|
|
144
|
+
# Complete it
|
|
145
|
+
bd close bd-a3f8.2
|
|
146
|
+
|
|
147
|
+
# Work on JWT generation
|
|
148
|
+
bd update bd-a3f8.3 --status in-progress
|
|
149
|
+
bd comment bd-a3f8.3 "Using HS256 algorithm, 24-hour expiry"
|
|
150
|
+
|
|
151
|
+
# Complete it
|
|
152
|
+
bd close bd-a3f8.3
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
156
|
+
|
|
157
|
+
```jsonl
|
|
158
|
+
{"id":"bd-a3f8.2","status":"in-progress","updated":"2024-01-20T12:30:00Z"}
|
|
159
|
+
{"id":"bd-a3f8.2","comments":[{"text":"Using bcrypt with cost factor 12","timestamp":"2024-01-20T12:30:00Z"}],"updated":"2024-01-20T12:30:00Z"}
|
|
160
|
+
{"id":"bd-a3f8.2","status":"closed","closed":"2024-01-20T13:00:00Z","updated":"2024-01-20T13:00:00Z"}
|
|
161
|
+
{"id":"bd-a3f8.3","status":"in-progress","updated":"2024-01-20T13:30:00Z"}
|
|
162
|
+
{"id":"bd-a3f8.3","comments":[{"text":"Using HS256 algorithm, 24-hour expiry","timestamp":"2024-01-20T13:30:00Z"}],"updated":"2024-01-20T13:30:00Z"}
|
|
163
|
+
{"id":"bd-a3f8.3","status":"closed","closed":"2024-01-20T14:00:00Z","updated":"2024-01-20T14:00:00Z"}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Step 10: Complete Final Task
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# With CLI
|
|
170
|
+
bd ready
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Output**:
|
|
174
|
+
```
|
|
175
|
+
bd-a3f8.4 Add login endpoint P1
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Now `bd-a3f8.4` is ready because both blockers are closed.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# With CLI
|
|
182
|
+
bd update bd-a3f8.4 --status in-progress
|
|
183
|
+
bd comment bd-a3f8.4 "POST /api/auth/login endpoint created, returns JWT on success"
|
|
184
|
+
bd close bd-a3f8.4
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
188
|
+
|
|
189
|
+
```jsonl
|
|
190
|
+
{"id":"bd-a3f8.4","status":"in-progress","updated":"2024-01-20T14:30:00Z"}
|
|
191
|
+
{"id":"bd-a3f8.4","comments":[{"text":"POST /api/auth/login endpoint created, returns JWT on success","timestamp":"2024-01-20T14:30:00Z"}],"updated":"2024-01-20T14:30:00Z"}
|
|
192
|
+
{"id":"bd-a3f8.4","status":"closed","closed":"2024-01-20T15:00:00Z","updated":"2024-01-20T15:00:00Z"}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Step 11: Close Epic
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# With CLI
|
|
199
|
+
bd close bd-a3f8
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Without CLI** - Append to `.beads/issues.jsonl`:
|
|
203
|
+
|
|
204
|
+
```jsonl
|
|
205
|
+
{"id":"bd-a3f8","status":"closed","closed":"2024-01-20T15:00:00Z","updated":"2024-01-20T15:00:00Z"}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Final State
|
|
209
|
+
|
|
210
|
+
All tasks completed:
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
✓ bd-a3f8 User Authentication System
|
|
214
|
+
✓ bd-a3f8.1 Add database schema
|
|
215
|
+
✓ bd-a3f8.2 Add password hashing
|
|
216
|
+
✓ bd-a3f8.3 Add JWT generation
|
|
217
|
+
✓ bd-a3f8.4 Add login endpoint
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Viewing History
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# With CLI
|
|
224
|
+
bd show bd-a3f8.4
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Output**:
|
|
228
|
+
```
|
|
229
|
+
ID: bd-a3f8.4
|
|
230
|
+
Title: Add login endpoint
|
|
231
|
+
Status: closed
|
|
232
|
+
Priority: P1
|
|
233
|
+
Parent: bd-a3f8
|
|
234
|
+
Blocked by: bd-a3f8.2, bd-a3f8.3
|
|
235
|
+
|
|
236
|
+
Comments:
|
|
237
|
+
[2024-01-20 14:30] POST /api/auth/login endpoint created, returns JWT on success
|
|
238
|
+
|
|
239
|
+
Created: 2024-01-20 10:04
|
|
240
|
+
Closed: 2024-01-20 15:00
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## AI Agent Workflow
|
|
244
|
+
|
|
245
|
+
### Creating Tasks
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
Create a Beads epic for "User Authentication System" with priority 0.
|
|
249
|
+
Then create 4 subtasks:
|
|
250
|
+
1. Add database schema (P0)
|
|
251
|
+
2. Add password hashing (P1)
|
|
252
|
+
3. Add JWT generation (P1)
|
|
253
|
+
4. Add login endpoint (P1)
|
|
254
|
+
|
|
255
|
+
Add dependencies:
|
|
256
|
+
- Tasks 2 and 3 depend on task 1
|
|
257
|
+
- Task 4 depends on tasks 2 and 3
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Finding Work
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
What Beads tasks are ready to work on?
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Documenting Progress
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
Update Beads task bd-a3f8.2 to in-progress.
|
|
270
|
+
Add comment: "Using bcrypt with cost factor 12"
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Completing Tasks
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Close Beads task bd-a3f8.2, password hashing is complete.
|
|
277
|
+
```
|
|
278
|
+
|